@@ -45,7 +45,7 @@ public class ExtendedBlock implements BlockAccess {
4545
4646 private @ Nullable BlockProperties properties ;
4747
48- private Mask renderMask ;
48+ private @ Nullable Mask renderMask ;
4949 private final MaskArea maskArea = new MaskArea ();
5050
5151 private boolean insideRenderBoundsCalculated , insideRenderBounds ;
@@ -71,11 +71,7 @@ public void set(int x, int y, int z) {
7171 this .properties = null ;
7272 this .insideRenderBoundsCalculated = false ;
7373 this .isCaveCalculated = false ;
74-
75- if (renderMask == null || !maskArea .isInside (x , z )) {
76- maskArea .setAround (x , z );
77- renderMask = maskArea .apply (renderSettings .getRenderMask ());
78- }
74+ if (!maskArea .isInside (x , z )) this .renderMask = null ;
7975 }
8076
8177 @ Override
@@ -138,10 +134,18 @@ public BlockProperties getProperties() {
138134 return properties ;
139135 }
140136
137+ private Mask getRenderMask () {
138+ if (renderMask == null ) {
139+ maskArea .setAround (x , z );
140+ renderMask = maskArea .apply (renderSettings .getRenderMask ());
141+ }
142+ return renderMask ;
143+ }
144+
141145 @ SuppressWarnings ("BooleanMethodIsAlwaysInverted" )
142146 public boolean isInsideRenderBounds () {
143147 if (!insideRenderBoundsCalculated ) {
144- insideRenderBounds = renderMask .test (getX (), getY (), getZ ());
148+ insideRenderBounds = getRenderMask () .test (getX (), getY (), getZ ());
145149 insideRenderBoundsCalculated = true ;
146150 }
147151
@@ -165,6 +169,10 @@ public boolean isRemoveIfCave() {
165169 private static class MaskArea {
166170 private int minX , minZ , maxX , maxZ ;
167171
172+ public MaskArea () {
173+ setAround (0 , 0 );
174+ }
175+
168176 public boolean isInside (int x , int z ) {
169177 return
170178 x >= minX && x <= maxX &&
0 commit comments