99import  com .mojang .blaze3d .vertex .VertexFormat ;
1010import  de .srendi .advancedperipherals .AdvancedPeripherals ;
1111import  de .srendi .advancedperipherals .client .RenderUtil ;
12+ import  de .srendi .advancedperipherals .client .smartglasses .objects .threedim .IThreeDObjectRenderer ;
13+ import  de .srendi .advancedperipherals .client .smartglasses .objects .twodim .ITwoDObjectRenderer ;
14+ import  de .srendi .advancedperipherals .common .smartglasses .modules .overlay .objects .two_dim .RenderableObject ;
1215import  de .srendi .advancedperipherals .common .util .EnumColor ;
1316import  net .minecraft .client .Minecraft ;
1417import  net .minecraft .client .renderer .GameRenderer ;
1720import  net .minecraft .core .Direction ;
1821import  net .minecraft .world .level .block .Block ;
1922import  net .minecraft .world .level .block .Blocks ;
20- import  net .minecraft .world .level .block .CandleBlock ;
21- import  net .minecraft .world .level .block .LecternBlock ;
2223import  net .minecraft .world .phys .Vec3 ;
23- import  net .minecraft .world .phys .shapes .Shapes ;
2424import  net .minecraft .world .phys .shapes .VoxelShape ;
2525import  net .minecraftforge .api .distmarker .Dist ;
2626import  net .minecraftforge .client .event .RenderLevelStageEvent ;
2727import  net .minecraftforge .eventbus .api .SubscribeEvent ;
2828import  net .minecraftforge .fml .common .Mod ;
2929
30+ import  java .util .ArrayList ;
31+ import  java .util .HashMap ;
32+ import  java .util .List ;
33+ import  java .util .Map ;
34+ 
3035@ Mod .EventBusSubscriber (value  = Dist .CLIENT , bus  = Mod .EventBusSubscriber .Bus .FORGE , modid  = AdvancedPeripherals .MOD_ID )
3136public  class  OverlayModuleLevelRenderer  {
3237
@@ -37,6 +42,29 @@ public static void renderLevelState(RenderLevelStageEvent event) {
3742
3843        BufferBuilder  bufferbuilder  = Tesselator .getInstance ().getBuilder ();
3944        if  (event .getStage () == RenderLevelStageEvent .Stage .AFTER_TRANSLUCENT_BLOCKS ) {
45+             Map <Class <? extends  RenderableObject >, List <RenderableObject >> batches  = new  HashMap <>();
46+ 
47+             for  (RenderableObject  object  : OverlayObjectHolder .getObjects ()) {
48+                 if  (!object .isEnabled () || object .getRenderObject () instanceof  ITwoDObjectRenderer )
49+                     continue ;
50+ 
51+                 Class <? extends  RenderableObject > objectClass  = object .getClass ();
52+ 
53+                 if  (batches .containsKey (objectClass )) {
54+                     batches .get (objectClass ).add (object );
55+                     continue ;
56+                 }
57+ 
58+                 List <RenderableObject > newBatchArray  = new  ArrayList <>();
59+                 newBatchArray .add (object );
60+                 batches .put (objectClass , newBatchArray );
61+             }
62+ 
63+             for  (List <RenderableObject > batch  : batches .values ()) {
64+                 ((IThreeDObjectRenderer ) batch .get (0 ).getRenderObject ()).renderBatch (batch , event , posestack , view , bufferbuilder );
65+             }
66+ 
67+ 
4068            bufferbuilder .begin (RenderType .solid ().mode (), DefaultVertexFormat .BLOCK );
4169            BlockPos  blockPos  = new  BlockPos (0 , 190 , 0 );
4270
@@ -63,16 +91,6 @@ public static void renderLevelState(RenderLevelStageEvent event) {
6391
6492            RenderUtil .drawPlane (posestack , bufferbuilder , colors [0 ], colors [1 ], colors [2 ], 0.8f , Direction .UP , 0f , 0.5f , 0f , 0.5f , 0f , 1f );
6593
66-             BufferUploader .drawWithShader (bufferbuilder .end ());
67-             posestack .popPose ();
68-             posestack .pushPose ();
69-             RenderSystem .setShader (GameRenderer ::getPositionColorShader );
70-             bufferbuilder .begin (RenderType .translucent ().mode (), DefaultVertexFormat .POSITION_COLOR_NORMAL );
71- 
72-             blockPos  = new  BlockPos (5 , 190 , 0 );
73-             posestack .translate (-view .x  + blockPos .getX (), -view .y  + blockPos .getY (), -view .z  + blockPos .getZ ());
74- 
75-             RenderUtil .drawBox (posestack , bufferbuilder , colors [0 ], colors [1 ], colors [2 ], 0.8f , 16f , 16f , 12f );
7694            BufferUploader .drawWithShader (bufferbuilder .end ());
7795            posestack .popPose ();
7896
0 commit comments