12
12
import net .fabricmc .fabric .api .client .rendering .v1 .TooltipComponentCallback ;
13
13
import net .minecraft .client .MinecraftClient ;
14
14
import net .minecraft .client .gui .tooltip .TooltipComponent ;
15
+ import net .minecraft .client .item .ItemModelManager ;
15
16
import net .minecraft .client .render .DiffuseLighting ;
16
17
import net .minecraft .client .render .LightmapTextureManager ;
17
18
import net .minecraft .client .render .OverlayTexture ;
18
- import net .minecraft .client .render .VertexConsumerProvider ;
19
- import net .minecraft .client .render .item .ItemRenderer ;
20
- import net .minecraft .item .ModelTransformationMode ;
19
+ import net .minecraft .client .render .item .ItemRenderState ;
21
20
import net .minecraft .command .argument .ItemStringReader ;
22
21
import net .minecraft .entity .player .PlayerEntity ;
23
22
import net .minecraft .item .Item ;
24
23
import net .minecraft .item .ItemStack ;
24
+ import net .minecraft .item .ModelTransformationMode ;
25
25
import net .minecraft .item .tooltip .TooltipType ;
26
26
import net .minecraft .registry .Registries ;
27
27
import net .minecraft .registry .RegistryWrapper ;
28
28
import net .minecraft .text .Text ;
29
29
import org .jetbrains .annotations .Nullable ;
30
- import org .joml .Matrix4f ;
31
30
import org .w3c .dom .Element ;
32
31
33
32
import java .util .ArrayList ;
38
37
39
38
public class ItemComponent extends BaseComponent {
40
39
41
- protected static final Matrix4f ITEM_SCALING = new Matrix4f (). scaling ( 16 , - 16 , 16 );
40
+ protected static final ItemRenderState ITEM_RENDER_STATE = new ItemRenderState ( );
42
41
43
- protected final VertexConsumerProvider .Immediate entityBuffers ;
44
- protected final ItemRenderer itemRenderer ;
42
+ protected final ItemModelManager itemModelManager ;
45
43
protected ItemStack stack ;
46
44
protected boolean showOverlay = false ;
47
45
protected boolean setTooltipFromStack = false ;
48
46
49
47
protected ItemComponent (ItemStack stack ) {
50
- this .entityBuffers = MinecraftClient .getInstance ().getBufferBuilders ().getEntityVertexConsumers ();
51
- this .itemRenderer = MinecraftClient .getInstance ().getItemRenderer ();
48
+ this .itemModelManager = MinecraftClient .getInstance ().getItemModelManager ();
52
49
this .stack = stack ;
53
50
}
54
51
@@ -64,8 +61,11 @@ protected int determineVerticalContentSize(Sizing sizing) {
64
61
65
62
@ Override
66
63
public void draw (OwoUIDrawContext context , int mouseX , int mouseY , float partialTicks , float delta ) {
67
- final boolean notSideLit = !this .itemRenderer .getModel (this .stack , null , null , 0 ).isSideLit ();
64
+ this .itemModelManager .update (ITEM_RENDER_STATE , this .stack , ModelTransformationMode .GUI , false , null , null , 0 );
65
+
66
+ final boolean notSideLit = !ITEM_RENDER_STATE .isSideLit ();
68
67
if (notSideLit ) {
68
+ context .draw ();
69
69
DiffuseLighting .disableGuiDepthLighting ();
70
70
}
71
71
@@ -80,16 +80,12 @@ public void draw(OwoUIDrawContext context, int mouseX, int mouseY, float partial
80
80
matrices .translate (8.0 , 8.0 , 0.0 );
81
81
82
82
// Vanilla scaling and y inversion
83
- if (notSideLit ) {
84
- matrices .scale (16 , -16 , 16 );
85
- } else {
86
- matrices .multiplyPositionMatrix (ITEM_SCALING );
87
- }
83
+ matrices .scale (16 , -16 , 16 );
88
84
89
85
var client = MinecraftClient .getInstance ();
90
86
91
- this . itemRenderer . renderItem ( this . stack , ModelTransformationMode . GUI , LightmapTextureManager .MAX_LIGHT_COORDINATE , OverlayTexture .DEFAULT_UV , matrices , entityBuffers , client . world , 0 );
92
- this . entityBuffers .draw ();
87
+ ITEM_RENDER_STATE . render ( matrices , context . vertexConsumers () , LightmapTextureManager .MAX_LIGHT_COORDINATE , OverlayTexture .DEFAULT_UV );
88
+ context .draw ();
93
89
94
90
// Clean up
95
91
matrices .pop ();
0 commit comments