33import com .mojang .blaze3d .vertex .PoseStack ;
44import com .mojang .blaze3d .vertex .VertexConsumer ;
55import cy .jdkdigital .camol .Camol ;
6+ import cy .jdkdigital .camol .utils .CamoHelper ;
67import net .minecraft .client .Minecraft ;
78import net .minecraft .client .renderer .RenderType ;
89import net .minecraft .client .renderer .block .BlockRenderDispatcher ;
1314import net .minecraft .world .InteractionHand ;
1415import net .minecraft .world .level .BlockAndTintGetter ;
1516import net .minecraft .world .level .block .state .BlockState ;
16- import net .minecraft .world .level . chunk . LevelChunk ;
17+ import net .minecraft .world .phys . shapes . Shapes ;
1718import net .neoforged .api .distmarker .Dist ;
1819import net .neoforged .bus .api .SubscribeEvent ;
1920import net .neoforged .fml .common .EventBusSubscriber ;
2324import net .neoforged .neoforge .client .model .pipeline .VertexConsumerWrapper ;
2425import org .jetbrains .annotations .NotNull ;
2526
26- import java .util .*;
27+ import java .util .HashSet ;
28+ import java .util .Map ;
29+ import java .util .Set ;
2730import java .util .stream .Collectors ;
2831
2932@ EventBusSubscriber (modid = Camol .MODID , value = Dist .CLIENT )
3033public class ClientEventHandler
3134{
3235 public static boolean shouldBeTransparent = false ;
3336 public static boolean isTransparent = false ;
37+
3438 @ SubscribeEvent
3539 public static void onRenderLevelStage (RenderLevelStageEvent event ) {
3640 if (event .getStage () != RenderLevelStageEvent .Stage .AFTER_TRANSLUCENT_BLOCKS ) {
3741 return ;
3842 }
3943
44+ // Change transparency of camo blocks when switching items in hand
4045 if (Minecraft .getInstance ().level != null && shouldBeTransparent != isTransparent ) {
4146 isTransparent = shouldBeTransparent ;
4247 Set <SectionPos > sections = new HashSet <>();
4348
44- var chunkStorage = Minecraft .getInstance ().level .getChunkSource ().storage ;
45-
46- int i = chunkStorage .chunkRadius ;
47- for (int j = chunkStorage .viewCenterZ - i ; j <= chunkStorage .viewCenterZ + i ; j ++) {
48- for (int k = chunkStorage .viewCenterX - i ; k <= chunkStorage .viewCenterX + i ; k ++) {
49- LevelChunk levelchunk = chunkStorage .chunks .get (chunkStorage .getIndex (k , j ));
50- if (levelchunk != null ) {
51- levelchunk .getData (Camol .CAMO_BLOCK_MAP ).keySet ().forEach (posKey -> {
52- sections .add (SectionPos .of (BlockPos .of ((Long .parseLong (posKey )))));
53- });
54- }
55- }
56- }
49+ CamoHelper .CLIENT_CAMO_MAP .entrySet ().stream ().filter (entry -> !entry .getValue ().isAir ()).forEach (entry -> {
50+ sections .add (SectionPos .of (BlockPos .of ((Long .parseLong (entry .getKey ())))));
51+ });
5752
5853 for (SectionPos section : sections ) {
5954 Minecraft .getInstance ().levelRenderer .setSectionDirty (section .x (), section .y (), section .z ());
@@ -65,7 +60,8 @@ public static void onRenderLevelStage(RenderLevelStageEvent event) {
6560 public static void geometryEvent (AddSectionGeometryEvent event ) {
6661 SectionPos section = SectionPos .of (event .getSectionOrigin ());
6762
68- Map <BlockPos , BlockState > camoBlocks = event .getLevel ().getChunkAt (event .getSectionOrigin ()).getData (Camol .CAMO_BLOCK_MAP ).entrySet ().stream ()
63+ Map <BlockPos , BlockState > camoBlocks = CamoHelper .CLIENT_CAMO_MAP .entrySet ().stream ()
64+ .filter (entry -> !entry .getValue ().isAir ())
6965 .filter (p -> SectionPos .of (BlockPos .of (Long .parseLong (p .getKey ()))).equals (section ))
7066 .collect (Collectors .toMap (e -> BlockPos .of (Long .parseLong (e .getKey ())), Map .Entry ::getValue ));
7167
@@ -86,9 +82,11 @@ public static void geometryEvent(AddSectionGeometryEvent event) {
8682 poseStack .pushPose ();
8783 poseStack .translate (SectionPos .sectionRelative (pos .getX ()), SectionPos .sectionRelative (pos .getY ()), SectionPos .sectionRelative (pos .getZ ()));
8884
89- poseStack .translate (0.5 , 0.5 , 0.5 );
90- poseStack .scale (1.005F , 1.005F , 1.005F );
91- poseStack .translate (-0.5 , -0.5 , -0.5 );
85+ // if (level.getBlockState(pos).getShape(level, pos).equals(Shapes.block())) {
86+ poseStack .translate (0.5 , 0.5 , 0.5 );
87+ poseStack .scale (1.005F , 1.005F , 1.005F );
88+ poseStack .translate (-0.5 , -0.5 , -0.5 );
89+ // }
9290
9391 boolean shouldRenderTransparentCamo = Minecraft .getInstance ().player .getItemInHand (InteractionHand .MAIN_HAND ).is (Camol .CAMO_ITEM );
9492 for (RenderType renderType : model .getRenderTypes (camoState , random , ModelData .EMPTY )) {
0 commit comments