11package com .robotgryphon .compactcrafting .client .render ;
22
33import com .mojang .blaze3d .matrix .MatrixStack ;
4- import com .mojang .blaze3d .platform .GlStateManager ;
54import com .mojang .blaze3d .vertex .IVertexBuilder ;
6- import com .robotgryphon .compactcrafting .CompactCrafting ;
75import com .robotgryphon .compactcrafting .blocks .FieldProjectorBlock ;
86import com .robotgryphon .compactcrafting .blocks .tiles .FieldProjectorTile ;
97import com .robotgryphon .compactcrafting .core .Constants ;
10- import com .robotgryphon .compactcrafting .core .Registration ;
118import net .minecraft .block .BlockState ;
12- import net .minecraft .block .Blocks ;
139import net .minecraft .client .Minecraft ;
14- import net .minecraft .client .renderer .*;
10+ import net .minecraft .client .renderer .Atlases ;
11+ import net .minecraft .client .renderer .BlockRendererDispatcher ;
12+ import net .minecraft .client .renderer .IRenderTypeBuffer ;
1513import net .minecraft .client .renderer .model .IBakedModel ;
1614import net .minecraft .client .renderer .model .ModelManager ;
17- import net .minecraft .client .renderer .texture .AtlasTexture ;
18- import net .minecraft .client .renderer .texture .TextureAtlasSprite ;
1915import net .minecraft .client .renderer .tileentity .TileEntityRenderer ;
2016import net .minecraft .client .renderer .tileentity .TileEntityRendererDispatcher ;
21- import net .minecraft .client .renderer .vertex .DefaultVertexFormats ;
2217import net .minecraft .util .Direction ;
23- import net .minecraft .util .ResourceLocation ;
24- import net .minecraft .util .math .BlockPos ;
25- import net .minecraft .util .math .vector .Quaternion ;
2618import net .minecraft .util .math .vector .Vector3f ;
27- import net .minecraft .world .World ;
2819import net .minecraftforge .client .model .ModelDataManager ;
29- import net .minecraftforge .client .model .ModelLoaderRegistry ;
30- import net .minecraftforge .client .model .data .EmptyModelData ;
3120import net .minecraftforge .client .model .data .IModelData ;
32- import org .lwjgl .opengl .GL11 ;
33- import org .lwjgl .opengl .GLXEXTStereoTree ;
3421
3522public class FieldProjectorRenderer extends TileEntityRenderer <FieldProjectorTile > {
3623
@@ -40,6 +27,7 @@ enum RotationSpeed {
4027 FAST (1000 );
4128
4229 private int speed ;
30+
4331 RotationSpeed (int speed ) {
4432 this .speed = speed ;
4533 }
@@ -49,26 +37,43 @@ public int getSpeed() {
4937 }
5038 }
5139
52- // private static IModel model;
53- private static IBakedModel bakedModel ;
54- private static final ResourceLocation TEXTURE = new ResourceLocation (CompactCrafting .MOD_ID , "block/field_projector_dish" );
40+ private IBakedModel bakedModelCached ;
5541
5642 public FieldProjectorRenderer (TileEntityRendererDispatcher rendererDispatcherIn ) {
5743 super (rendererDispatcherIn );
44+
45+
5846 }
5947
6048 @ Override
6149 public void render (FieldProjectorTile tileEntityIn , float partialTicks , MatrixStack matrixStackIn , IRenderTypeBuffer bufferIn , int combinedLightIn , int combinedOverlayIn ) {
6250 renderDish (tileEntityIn , matrixStackIn , bufferIn , combinedLightIn , combinedOverlayIn );
6351 }
6452
53+ private IBakedModel getModel () {
54+ if (bakedModelCached == null ) {
55+ ModelManager models = Minecraft .getInstance ()
56+ .getItemRenderer ()
57+ .getItemModelMesher ()
58+ .getModelManager ();
59+
60+
61+ bakedModelCached = models .getModel (Constants .FIELD_DISH_RL );
62+ }
63+
64+ return bakedModelCached ;
65+ }
66+
6567 private void renderDish (FieldProjectorTile te , MatrixStack mx , IRenderTypeBuffer buffer , int combinedLight , int combinedOverlay ) {
66- // GlStateManager.pushAttrib();
67- // TextureAtlasSprite sprite = Minecraft.getInstance()
68- // .getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
69- // .apply(TEXTURE);
7068
69+ BlockState state = te .getBlockState ();
70+
71+ BlockRendererDispatcher blockRenderer = Minecraft .getInstance ().getBlockRendererDispatcher ();
72+
73+ IVertexBuilder cutoutBlocks = buffer .getBuffer (Atlases .getCutoutBlockType ());
74+ IModelData model = ModelDataManager .getModelData (te .getWorld (), te .getPos ());
7175
76+ IBakedModel baked = this .getModel ();
7277
7378 mx .push ();
7479
@@ -78,32 +83,22 @@ private void renderDish(FieldProjectorTile te, MatrixStack mx, IRenderTypeBuffer
7883 double yaw = Math .sin (Math .toDegrees (RenderTickCounter .renderTicks ) / speed .getSpeed ()) * 10 ;
7984 // double yaw = Math.random();
8085
86+ Direction facing = state .get (FieldProjectorBlock .FACING );
87+ float angle = facing .getHorizontalAngle () - 90 ;
88+ mx .rotate (Vector3f .YN .rotationDegrees (angle ));
89+
8190 float yDiskOffset = -0.66f ;
8291 mx .translate (0.0 , -yDiskOffset , 0.0 );
8392 mx .rotate (Vector3f .ZP .rotationDegrees ((float ) yaw ));
8493 mx .translate (0.0 , yDiskOffset , 0.0 );
8594
8695 mx .translate (-.5 , 0 , -.5 );
8796
88- BlockRendererDispatcher blockRenderer = Minecraft .getInstance ().getBlockRendererDispatcher ();
89- ModelManager models = Minecraft .getInstance ()
90- .getItemRenderer ()
91- .getItemModelMesher ()
92- .getModelManager ();
93-
94- IBakedModel bakedModel = models .getModel (Constants .FIELD_DISH_RL );
95- BlockState state = te .getBlockState ();
96- IVertexBuilder cutoutBlocks = buffer .getBuffer (Atlases .getCutoutBlockType ());
97- IModelData model = ModelDataManager .getModelData (te .getWorld (), te .getPos ());
98-
9997 blockRenderer .getBlockModelRenderer ()
100- .renderModel (mx .getLast (), cutoutBlocks , state , bakedModel , 1 , 1 , 1 , combinedLight , combinedOverlay ,
101- model );
102-
103- // blockRenderer.renderBlock(state, mx, buffer, combinedLight, combinedOverlay, EmptyModelData.INSTANCE);
98+ .renderModel (mx .getLast (), cutoutBlocks , state ,
99+ baked , 1 , 1 , 1 ,
100+ combinedLight , combinedOverlay , model );
104101
105102 mx .pop ();
106-
107- // GlStateManager.popAttrib();
108103 }
109104}
0 commit comments