AmbienceFXConditions class

Пакет: com.hypixel.hytale.protocol

Файл: com/hypixel/hytale/protocol/AmbienceFXConditions.java

Поля (186)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
AmbienceFXConditions var1
int var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
int var10
int var11
int var12
int var13
long var2
int var2
int var2
int var2
int var2
int var2
int var2
int var2
int var2
int var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
int var20
int[] var21
var21
int var21
int var22
int[] var24
var24
int var25
AmbienceFXBlockSoundSet[] var27
var27
long var28
int var29
long var3
long var3
long var3
long var3
long var3
long var3
long var3
long var3
long var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
SpaceSize[] var31
var31
int var32
long var33
int var34
ShelterType[] var36
var36
int var37
long var38
int var39
int var4
int var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
int var4
SurfaceType[] var41
var41
int var42
long var43
int var44
AmbienceFXPhysicalMaterial[] var46
var46
int var47
long var48
int var49
int var5
int var5
int var5
int var5
int var5
int var5
int var5
int var5
int var5
int var5
int[] var5
var5
int var5
AmbienceFXPhysicalMaterial[] var51
var51
int var52
int var53
long var54
int var55
AmbienceFXConditions var57
int var58
int var59
int var6
int var6
int var6
int var6
int var6
int var6
int var6
int var6
int var6
int var6
long var60
int var61
int var62
int var63
int var64
int var65
int[] var7
int[] var7
int[] var7
AmbienceFXBlockSoundSet[] var7
SpaceSize[] var7
ShelterType[] var7
SurfaceType[] var7
AmbienceFXPhysicalMaterial[] var7
AmbienceFXPhysicalMaterial[] var7
long var7
long var8
int var9

Методы (215)

МодификаторыВозвратСигнатура
public AmbienceFXConditions cloneAmbienceFXConditions clone()
public int computeSizeint computeSize()
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var14 = 0; var14 < var42; var14++)
for for(int var15 = 0; var15 < var47; var15++)
for for(int var16 = 0; var16 < var53; var16++)
for for(int var17 = 0; var17 < var59; var17++)
for for(int var18 = 0; var18 < var62; var18++)
for for(int var19 = 0; var19 < var64; var19++)
for for(int var6 = 0; var6 < this.surroundingBlockSoundSets.length; var6++)
for for(int var17 = 0; var17 < this.space.length; var17++)
for for(int var18 = 0; var18 < this.shelter.length; var18++)
for for(int var19 = 0; var19 < this.surfaces.length; var19++)
for for(int var22 = 0; var22 < this.surfacePhysicalMaterials.length; var22++)
for for(int var23 = 0; var23 < this.exteriorRoofPhysicalMaterials.length; var23++)
abstract return getAbsorptionCoeffRangereturn getAbsorptionCoeffRange(var0, 0)
static Range getAltitudeRange getAltitude(MemorySegment var0)
static Range getAltitudeRange getAltitude(MemorySegment var0, int var1)
abstract return getAltitudereturn getAltitude(var0, 0)
static Rangef getDayTimeRangef getDayTime(MemorySegment var0)
static Rangef getDayTimeRangef getDayTime(MemorySegment var0, int var1)
abstract return getDayTimereturn getDayTime(var0, 0)
abstract return getEnvironmentIndicesreturn getEnvironmentIndices(var0, 0)
static int getEnvironmentTagPatternIndexint getEnvironmentTagPatternIndex(MemorySegment var0)
static int getEnvironmentTagPatternIndexint getEnvironmentTagPatternIndex(MemorySegment var0, int var1)
abstract return getEnvironmentTagPatternIndexreturn getEnvironmentTagPatternIndex(var0, 0)
abstract return getEscapedRayPercentRangereturn getEscapedRayPercentRange(var0, 0)
abstract return getExteriorRoofPhysicalMaterialsreturn getExteriorRoofPhysicalMaterials(var0, 0)
static boolean getExteriorRoofPhysicalMaterialsMatchAnyboolean getExteriorRoofPhysicalMaterialsMatchAny(MemorySegment var0)
static boolean getExteriorRoofPhysicalMaterialsMatchAnyboolean getExteriorRoofPhysicalMaterialsMatchAny(MemorySegment var0, int var1)
abstract return getExteriorRoofPhysicalMaterialsMatchAnyreturn getExteriorRoofPhysicalMaterialsMatchAny(var0, 0)
static boolean getFloorboolean getFloor(MemorySegment var0)
static boolean getFloorboolean getFloor(MemorySegment var0, int var1)
abstract return getFloorreturn getFloor(var0, 0)
abstract return getFluidFXIndicesreturn getFluidFXIndices(var0, 0)
static Rangeb getGlobalLightLevelRangeb getGlobalLightLevel(MemorySegment var0)
static Rangeb getGlobalLightLevelRangeb getGlobalLightLevel(MemorySegment var0, int var1)
abstract return getGlobalLightLevelreturn getGlobalLightLevel(var0, 0)
static boolean getNeverboolean getNever(MemorySegment var0)
static boolean getNeverboolean getNever(MemorySegment var0, int var1)
abstract return getNeverreturn getNever(var0, 0)
abstract return getReflectionCoeffRangereturn getReflectionCoeffRange(var0, 0)
static boolean getRoofboolean getRoof(MemorySegment var0)
static boolean getRoofboolean getRoof(MemorySegment var0, int var1)
abstract return getRoofreturn getRoof(var0, 0)
abstract return getRoofDistanceRangereturn getRoofDistanceRange(var0, 0)
static int getRoofMaterialTagPatternIndexint getRoofMaterialTagPatternIndex(MemorySegment var0)
static int getRoofMaterialTagPatternIndexint getRoofMaterialTagPatternIndex(MemorySegment var0, int var1)
abstract return getRoofMaterialTagPatternIndexreturn getRoofMaterialTagPatternIndex(var0, 0)
static RoofState getRoofStateRoofState getRoofState(MemorySegment var0)
static RoofState getRoofStateRoofState getRoofState(MemorySegment var0, int var1)
abstract return getRoofStatereturn getRoofState(var0, 0)
abstract return getShelterreturn getShelter(var0, 0)
abstract return getSpacereturn getSpace(var0, 0)
abstract return getSpaceScaleMaxRangereturn getSpaceScaleMaxRange(var0, 0)
abstract return getSpaceScaleMinRangereturn getSpaceScaleMinRange(var0, 0)
abstract return getSpaceScaleRangereturn getSpaceScaleRange(var0, 0)
static Rangeb getSunLightLevelRangeb getSunLightLevel(MemorySegment var0)
static Rangeb getSunLightLevelRangeb getSunLightLevel(MemorySegment var0, int var1)
abstract return getSunLightLevelreturn getSunLightLevel(var0, 0)
abstract return getSurfacePhysicalMaterialsreturn getSurfacePhysicalMaterials(var0, 0)
static boolean getSurfacePhysicalMaterialsMatchAnyboolean getSurfacePhysicalMaterialsMatchAny(MemorySegment var0)
static boolean getSurfacePhysicalMaterialsMatchAnyboolean getSurfacePhysicalMaterialsMatchAny(MemorySegment var0, int var1)
abstract return getSurfacePhysicalMaterialsMatchAnyreturn getSurfacePhysicalMaterialsMatchAny(var0, 0)
abstract return getSurfacesreturn getSurfaces(var0, 0)
abstract return getSurroundingBlockSoundSetsreturn getSurroundingBlockSoundSets(var0, 0)
static Rangeb getTorchLightLevelRangeb getTorchLightLevel(MemorySegment var0)
static Rangeb getTorchLightLevelRangeb getTorchLightLevel(MemorySegment var0, int var1)
abstract return getTorchLightLevelreturn getTorchLightLevel(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static Rangeb getWallsRangeb getWalls(MemorySegment var0)
static Rangeb getWallsRangeb getWalls(MemorySegment var0, int var1)
abstract return getWallsreturn getWalls(var0, 0)
abstract return getWeatherIndicesreturn getWeatherIndices(var0, 0)
static int getWeatherTagPatternIndexint getWeatherTagPatternIndex(MemorySegment var0)
static int getWeatherTagPatternIndexint getWeatherTagPatternIndex(MemorySegment var0, int var1)
abstract return getWeatherTagPatternIndexreturn getWeatherTagPatternIndex(var0, 0)
static boolean hasAbsorptionCoeffRangeboolean hasAbsorptionCoeffRange(MemorySegment var0, int var1)
static boolean hasEnvironmentIndicesboolean hasEnvironmentIndices(MemorySegment var0, int var1)
static boolean hasEscapedRayPercentRangeboolean hasEscapedRayPercentRange(MemorySegment var0, int var1)
static boolean hasExteriorRoofPhysicalMaterialsboolean hasExteriorRoofPhysicalMaterials(MemorySegment var0, int var1)
static boolean hasFluidFXIndicesboolean hasFluidFXIndices(MemorySegment var0, int var1)
static boolean hasReflectionCoeffRangeboolean hasReflectionCoeffRange(MemorySegment var0, int var1)
static boolean hasRoofDistanceRangeboolean hasRoofDistanceRange(MemorySegment var0, int var1)
static boolean hasShelterboolean hasShelter(MemorySegment var0, int var1)
static boolean hasSpaceboolean hasSpace(MemorySegment var0, int var1)
static boolean hasSpaceScaleMaxRangeboolean hasSpaceScaleMaxRange(MemorySegment var0, int var1)
static boolean hasSpaceScaleMinRangeboolean hasSpaceScaleMinRange(MemorySegment var0, int var1)
static boolean hasSpaceScaleRangeboolean hasSpaceScaleRange(MemorySegment var0, int var1)
static boolean hasSurfacePhysicalMaterialsboolean hasSurfacePhysicalMaterials(MemorySegment var0, int var1)
static boolean hasSurfacesboolean hasSurfaces(MemorySegment var0, int var1)
static boolean hasSurroundingBlockSoundSetsboolean hasSurroundingBlockSoundSets(MemorySegment var0, int var1)
static boolean hasWeatherIndicesboolean hasWeatherIndices(MemorySegment var0, int var1)
if if(var1 < 0)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 != var2)
if if(var7 == -1L)
if if(var9 > 4096000)
if if(var8 == -1L)
if if(var32 > 4096000)
if if(var28 == -1L)
if if(var37 > 4096000)
if if(var33 == -1L)
if if(var42 > 4096000)
if if(var38 == -1L)
if if(var47 > 4096000)
if if(var43 == -1L)
if if(var53 > 4096000)
if if(var48 == -1L)
if if(var59 > 4096000)
if if(var54 == -1L)
if if(var62 > 4096000)
if if(var60 == -1L)
if if(var64 > 4096000)
if if(var2 != null)
if if(this.spaceScaleRange != null)
if if(this.spaceScaleMinRange != null)
if if(this.spaceScaleMaxRange != null)
if if(this.escapedRayPercentRange != null)
if if(this.reflectionCoeffRange != null)
if if(this.absorptionCoeffRange != null)
if if(this.roofDistanceRange != null)
if if(this.environmentIndices != null)
if if(this.weatherIndices != null)
if if(this.fluidFXIndices != null)
if if(this.surroundingBlockSoundSets != null)
if if(this.space != null)
if if(this.shelter != null)
if if(this.surfaces != null)
if if(this.surfacePhysicalMaterials != null)
if if(this.exteriorRoofPhysicalMaterials != null)
if if(this.spaceScaleRange != null)
if if(this.spaceScaleMinRange != null)
if if(this.spaceScaleMaxRange != null)
if if(this.escapedRayPercentRange != null)
if if(this.reflectionCoeffRange != null)
if if(this.absorptionCoeffRange != null)
if if(this.roofDistanceRange != null)
if if(this.environmentIndices != null)
if if(this.environmentIndices.length > 4096000)
if if(this.weatherIndices != null)
if if(this.weatherIndices.length > 4096000)
if if(this.fluidFXIndices != null)
if if(this.fluidFXIndices.length > 4096000)
if if(this.surroundingBlockSoundSets != null)
if if(this.surroundingBlockSoundSets.length > 4096000)
if if(this.space != null)
if if(this.space.length > 4096000)
if if(this.shelter != null)
if if(this.shelter.length > 4096000)
if if(this.surfaces != null)
if if(this.surfaces.length > 4096000)
if if(this.surfacePhysicalMaterials != null)
if if(this.surfacePhysicalMaterials.length > 4096000)
if if(this.exteriorRoofPhysicalMaterials != null)
if if(this.exteriorRoofPhysicalMaterials.length > 4096000)
if if(this.environmentIndices != null)
if if(this.weatherIndices != null)
if if(this.fluidFXIndices != null)
if if(this.surroundingBlockSoundSets != null)
if if(this.space != null)
if if(this.shelter != null)
if if(this.surfaces != null)
if if(this.surfacePhysicalMaterials != null)
if if(this.exteriorRoofPhysicalMaterials != null)
if if(this == var1)
static void requireBoundsvoid requireBounds(MemorySegment var0, int var1)
abstract requireBounds requireBounds(var0, var1)
static void requireSlotvoid requireSlot(MemorySegment var0, int var1, int var2, String var3)
abstract requireSlot requireSlot(var0, var1 + 100, var4, "EnvironmentIndices")
abstract requireSlot requireSlot(var0, var1 + 100, -1, "EnvironmentIndices")
abstract requireSlot requireSlot(var0, var1 + 104, var4, "WeatherIndices")
abstract requireSlot requireSlot(var0, var1 + 104, -1, "WeatherIndices")
abstract requireSlot requireSlot(var0, var1 + 108, var4, "FluidFXIndices")
abstract requireSlot requireSlot(var0, var1 + 108, -1, "FluidFXIndices")
abstract requireSlot requireSlot(var0, var1 + 112, var4, "SurroundingBlockSoundSets")
abstract requireSlot requireSlot(var0, var1 + 112, -1, "SurroundingBlockSoundSets")
abstract requireSlot requireSlot(var0, var1 + 116, var4, "Space")
abstract requireSlot requireSlot(var0, var1 + 116, -1, "Space")
abstract requireSlot requireSlot(var0, var1 + 120, var4, "Shelter")
abstract requireSlot requireSlot(var0, var1 + 120, -1, "Shelter")
abstract requireSlot requireSlot(var0, var1 + 124, var4, "Surfaces")
abstract requireSlot requireSlot(var0, var1 + 124, -1, "Surfaces")
abstract requireSlot requireSlot(var0, var1 + 128, var4, "SurfacePhysicalMaterials")
abstract requireSlot requireSlot(var0, var1 + 128, -1, "SurfacePhysicalMaterials")
abstract requireSlot requireSlot(var0, var1 + 132, var4, "ExteriorRoofPhysicalMaterials")
abstract requireSlot requireSlot(var0, var1 + 132, -1, "ExteriorRoofPhysicalMaterials")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static AmbienceFXConditions toObjectAmbienceFXConditions toObject(MemorySegment var0)
static AmbienceFXConditions toObjectAmbienceFXConditions toObject(MemorySegment var0, int var1)
static AmbienceFXConditions toObjectAmbienceFXConditions toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2)
abstract return toObjectreturn toObject(var0, 0, null)
abstract return toObjectreturn toObject(var0, var1, null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.protocol;

class="kw">import com.hypixel.hytale.protocol.io.PacketIO;
class="kw">import com.hypixel.hytale.protocol.io.ProtocolException;
class="kw">import com.hypixel.hytale.protocol.io.ReadCursor;
class="kw">import com.hypixel.hytale.protocol.io.VarInt;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.util.Arrays;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class AmbienceFXConditions {
   class="kw">public class="kw">static class="kw">final int NULLABLE_BIT_FIELD_SIZE = 2;
   class="kw">public class="kw">static class="kw">final int FIXED_BLOCK_SIZE = 100;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 9;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 136;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 221184181;
   class="kw">public boolean never;
   @Nullable
   class="kw">public int[] environmentIndices;
   @Nullable
   class="kw">public int[] weatherIndices;
   @Nullable
   class="kw">public int[] fluidFXIndices;
   class="kw">public int environmentTagPatternIndex;
   class="kw">public int weatherTagPatternIndex;
   @Nullable
   class="kw">public AmbienceFXBlockSoundSet[] surroundingBlockSoundSets;
   @Nonnull
   class="kw">public Range altitude = new Range();
   @Nonnull
   class="kw">public Rangeb walls = new Rangeb();
   class="kw">public boolean roof;
   class="kw">public int roofMaterialTagPatternIndex;
   class="kw">public boolean floor;
   @Nonnull
   class="kw">public Rangeb sunLightLevel = new Rangeb();
   @Nonnull
   class="kw">public Rangeb torchLightLevel = new Rangeb();
   @Nonnull
   class="kw">public Rangeb globalLightLevel = new Rangeb();
   @Nonnull
   class="kw">public Rangef dayTime = new Rangef();
   @Nullable
   class="kw">public SpaceSize[] space;
   @Nullable
   class="kw">public ShelterType[] shelter;
   @Nullable
   class="kw">public SurfaceType[] surfaces;
   @Nonnull
   class="kw">public RoofState roofState = RoofState.Any;
   @Nullable
   class="kw">public Rangef spaceScaleRange;
   @Nullable
   class="kw">public Rangef spaceScaleMinRange;
   @Nullable
   class="kw">public Rangef spaceScaleMaxRange;
   @Nullable
   class="kw">public Rangef escapedRayPercentRange;
   @Nullable
   class="kw">public Rangef reflectionCoeffRange;
   @Nullable
   class="kw">public Rangef absorptionCoeffRange;
   @Nullable
   class="kw">public Rangef roofDistanceRange;
   @Nullable
   class="kw">public AmbienceFXPhysicalMaterial[] surfacePhysicalMaterials;
   class="kw">public boolean surfacePhysicalMaterialsMatchAny;
   @Nullable
   class="kw">public AmbienceFXPhysicalMaterial[] exteriorRoofPhysicalMaterials;
   class="kw">public boolean exteriorRoofPhysicalMaterialsMatchAny;

   class="kw">public AmbienceFXConditions() {
   }

   class="kw">public AmbienceFXConditions(
      boolean var1,
      @Nullable int[] var2,
      @Nullable int[] var3,
      @Nullable int[] var4,
      int var5,
      int var6,
      @Nullable AmbienceFXBlockSoundSet[] var7,
      @Nonnull Range var8,
      @Nonnull Rangeb var9,
      boolean var10,
      int var11,
      boolean var12,
      @Nonnull Rangeb var13,
      @Nonnull Rangeb var14,
      @Nonnull Rangeb var15,
      @Nonnull Rangef var16,
      @Nullable SpaceSize[] var17,
      @Nullable ShelterType[] var18,
      @Nullable SurfaceType[] var19,
      @Nonnull RoofState var20,
      @Nullable Rangef var21,
      @Nullable Rangef var22,
      @Nullable Rangef var23,
      @Nullable Rangef var24,
      @Nullable Rangef var25,
      @Nullable Rangef var26,
      @Nullable Rangef var27,
      @Nullable AmbienceFXPhysicalMaterial[] var28,
      boolean var29,
      @Nullable AmbienceFXPhysicalMaterial[] var30,
      boolean var31
   ) {
      this.never = var1;
      this.environmentIndices = var2;
      this.weatherIndices = var3;
      this.fluidFXIndices = var4;
      this.environmentTagPatternIndex = var5;
      this.weatherTagPatternIndex = var6;
      this.surroundingBlockSoundSets = var7;
      this.altitude = var8;
      this.walls = var9;
      this.roof = var10;
      this.roofMaterialTagPatternIndex = var11;
      this.floor = var12;
      this.sunLightLevel = var13;
      this.torchLightLevel = var14;
      this.globalLightLevel = var15;
      this.dayTime = var16;
      this.space = var17;
      this.shelter = var18;
      this.surfaces = var19;
      this.roofState = var20;
      this.spaceScaleRange = var21;
      this.spaceScaleMinRange = var22;
      this.spaceScaleMaxRange = var23;
      this.escapedRayPercentRange = var24;
      this.reflectionCoeffRange = var25;
      this.absorptionCoeffRange = var26;
      this.roofDistanceRange = var27;
      this.surfacePhysicalMaterials = var28;
      this.surfacePhysicalMaterialsMatchAny = var29;
      this.exteriorRoofPhysicalMaterials = var30;
      this.exteriorRoofPhysicalMaterialsMatchAny = var31;
   }

   class="kw">public AmbienceFXConditions(@Nonnull AmbienceFXConditions var1) {
      this.never = var1.never;
      this.environmentIndices = var1.environmentIndices;
      this.weatherIndices = var1.weatherIndices;
      this.fluidFXIndices = var1.fluidFXIndices;
      this.environmentTagPatternIndex = var1.environmentTagPatternIndex;
      this.weatherTagPatternIndex = var1.weatherTagPatternIndex;
      this.surroundingBlockSoundSets = var1.surroundingBlockSoundSets;
      this.altitude = var1.altitude;
      this.walls = var1.walls;
      this.roof = var1.roof;
      this.roofMaterialTagPatternIndex = var1.roofMaterialTagPatternIndex;
      this.floor = var1.floor;
      this.sunLightLevel = var1.sunLightLevel;
      this.torchLightLevel = var1.torchLightLevel;
      this.globalLightLevel = var1.globalLightLevel;
      this.dayTime = var1.dayTime;
      this.space = var1.space;
      this.shelter = var1.shelter;
      this.surfaces = var1.surfaces;
      this.roofState = var1.roofState;
      this.spaceScaleRange = var1.spaceScaleRange;
      this.spaceScaleMinRange = var1.spaceScaleMinRange;
      this.spaceScaleMaxRange = var1.spaceScaleMaxRange;
      this.escapedRayPercentRange = var1.escapedRayPercentRange;
      this.reflectionCoeffRange = var1.reflectionCoeffRange;
      this.absorptionCoeffRange = var1.absorptionCoeffRange;
      this.roofDistanceRange = var1.roofDistanceRange;
      this.surfacePhysicalMaterials = var1.surfacePhysicalMaterials;
      this.surfacePhysicalMaterialsMatchAny = var1.surfacePhysicalMaterialsMatchAny;
      this.exteriorRoofPhysicalMaterials = var1.exteriorRoofPhysicalMaterials;
      this.exteriorRoofPhysicalMaterialsMatchAny = var1.exteriorRoofPhysicalMaterialsMatchAny;
   }

   class="kw">public class="kw">static void requireBounds(MemorySegment var0, int var1) {
      if (var1 < 0) {
         throw ProtocolException.invalidOffset("AmbienceFXConditions", var1, (int)var0.byteSize());
      }

      long var2 = var1 + 136L;
      if (var2 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("AmbienceFXConditions", (int)Math.min(var2, 2147483647L), (int)var0.byteSize());
      }
   }

   class="kw">public class="kw">static boolean getNever(MemorySegment var0) {
      class="kw">return getNever(var0, 0);
   }

   class="kw">public class="kw">static boolean getNever(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_BOOL, var1 + 2);
   }

   @Nullable
   class="kw">public class="kw">static int[] getEnvironmentIndices(MemorySegment var0) {
      class="kw">return getEnvironmentIndices(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static int[] getEnvironmentIndices(MemorySegment var0, int var1) {
      if (!hasEnvironmentIndices(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 100, 136, "EnvironmentIndices");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("EnvironmentIndices");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("EnvironmentIndices", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 * 4L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("EnvironmentIndices", (int)Math.min(var2 + var6 + var5 * 4L, 2147483647L), (int)var0.byteSize());
      }

      var2 += var6;
      int[] var7 = new int[var5];
      MemorySegment.copy(var0, PacketIO.PROTO_INT, var2, var7, 0, var5);
      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static int[] getWeatherIndices(MemorySegment var0) {
      class="kw">return getWeatherIndices(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static int[] getWeatherIndices(MemorySegment var0, int var1) {
      if (!hasWeatherIndices(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 104, 136, "WeatherIndices");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("WeatherIndices");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("WeatherIndices", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 * 4L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("WeatherIndices", (int)Math.min(var2 + var6 + var5 * 4L, 2147483647L), (int)var0.byteSize());
      }

      var2 += var6;
      int[] var7 = new int[var5];
      MemorySegment.copy(var0, PacketIO.PROTO_INT, var2, var7, 0, var5);
      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static int[] getFluidFXIndices(MemorySegment var0) {
      class="kw">return getFluidFXIndices(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static int[] getFluidFXIndices(MemorySegment var0, int var1) {
      if (!hasFluidFXIndices(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 108, 136, "FluidFXIndices");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("FluidFXIndices");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("FluidFXIndices", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 * 4L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("FluidFXIndices", (int)Math.min(var2 + var6 + var5 * 4L, 2147483647L), (int)var0.byteSize());
      }

      var2 += var6;
      int[] var7 = new int[var5];
      MemorySegment.copy(var0, PacketIO.PROTO_INT, var2, var7, 0, var5);
      class="kw">return var7;
   }

   class="kw">public class="kw">static int getEnvironmentTagPatternIndex(MemorySegment var0) {
      class="kw">return getEnvironmentTagPatternIndex(var0, 0);
   }

   class="kw">public class="kw">static int getEnvironmentTagPatternIndex(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_INT, var1 + 3);
   }

   class="kw">public class="kw">static int getWeatherTagPatternIndex(MemorySegment var0) {
      class="kw">return getWeatherTagPatternIndex(var0, 0);
   }

   class="kw">public class="kw">static int getWeatherTagPatternIndex(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_INT, var1 + 7);
   }

   @Nullable
   class="kw">public class="kw">static AmbienceFXBlockSoundSet[] getSurroundingBlockSoundSets(MemorySegment var0) {
      class="kw">return getSurroundingBlockSoundSets(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static AmbienceFXBlockSoundSet[] getSurroundingBlockSoundSets(MemorySegment var0, int var1) {
      if (!hasSurroundingBlockSoundSets(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 112, 136, "SurroundingBlockSoundSets");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("SurroundingBlockSoundSets");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("SurroundingBlockSoundSets", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 * 13L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("SurroundingBlockSoundSets", (int)Math.min(var2 + var6 + var5 * 13L, 2147483647L), (int)var0.byteSize());
      }

      var2 += var6;
      AmbienceFXBlockSoundSet[] var7 = new AmbienceFXBlockSoundSet[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = AmbienceFXBlockSoundSet.toObject(var0, var2 + var8 * 13);
      }

      class="kw">return var7;
   }

   class="kw">public class="kw">static Range getAltitude(MemorySegment var0) {
      class="kw">return getAltitude(var0, 0);
   }

   class="kw">public class="kw">static Range getAltitude(MemorySegment var0, int var1) {
      class="kw">return Range.toObject(var0, var1 + 11);
   }

   class="kw">public class="kw">static Rangeb getWalls(MemorySegment var0) {
      class="kw">return getWalls(var0, 0);
   }

   class="kw">public class="kw">static Rangeb getWalls(MemorySegment var0, int var1) {
      class="kw">return Rangeb.toObject(var0, var1 + 19);
   }

   class="kw">public class="kw">static boolean getRoof(MemorySegment var0) {
      class="kw">return getRoof(var0, 0);
   }

   class="kw">public class="kw">static boolean getRoof(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_BOOL, var1 + 21);
   }

   class="kw">public class="kw">static int getRoofMaterialTagPatternIndex(MemorySegment var0) {
      class="kw">return getRoofMaterialTagPatternIndex(var0, 0);
   }

   class="kw">public class="kw">static int getRoofMaterialTagPatternIndex(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_INT, var1 + 22);
   }

   class="kw">public class="kw">static boolean getFloor(MemorySegment var0) {
      class="kw">return getFloor(var0, 0);
   }

   class="kw">public class="kw">static boolean getFloor(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_BOOL, var1 + 26);
   }

   class="kw">public class="kw">static Rangeb getSunLightLevel(MemorySegment var0) {
      class="kw">return getSunLightLevel(var0, 0);
   }

   class="kw">public class="kw">static Rangeb getSunLightLevel(MemorySegment var0, int var1) {
      class="kw">return Rangeb.toObject(var0, var1 + 27);
   }

   class="kw">public class="kw">static Rangeb getTorchLightLevel(MemorySegment var0) {
      class="kw">return getTorchLightLevel(var0, 0);
   }

   class="kw">public class="kw">static Rangeb getTorchLightLevel(MemorySegment var0, int var1) {
      class="kw">return Rangeb.toObject(var0, var1 + 29);
   }

   class="kw">public class="kw">static Rangeb getGlobalLightLevel(MemorySegment var0) {
      class="kw">return getGlobalLightLevel(var0, 0);
   }

   class="kw">public class="kw">static Rangeb getGlobalLightLevel(MemorySegment var0, int var1) {
      class="kw">return Rangeb.toObject(var0, var1 + 31);
   }

   class="kw">public class="kw">static Rangef getDayTime(MemorySegment var0) {
      class="kw">return getDayTime(var0, 0);
   }

   class="kw">public class="kw">static Rangef getDayTime(MemorySegment var0, int var1) {
      class="kw">return Rangef.toObject(var0, var1 + 33);
   }

   @Nullable
   class="kw">public class="kw">static SpaceSize[] getSpace(MemorySegment var0) {
      class="kw">return getSpace(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static SpaceSize[] getSpace(MemorySegment var0, int var1) {
      if (!hasSpace(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 116, 136, "Space");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("Space");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("Space", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Space", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      SpaceSize[] var7 = new SpaceSize[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = SpaceSize.fromValue(var0.get(PacketIO.PROTO_BYTE, var2 + var8 * 1));
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static ShelterType[] getShelter(MemorySegment var0) {
      class="kw">return getShelter(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static ShelterType[] getShelter(MemorySegment var0, int var1) {
      if (!hasShelter(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 120, 136, "Shelter");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("Shelter");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("Shelter", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Shelter", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      ShelterType[] var7 = new ShelterType[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = ShelterType.fromValue(var0.get(PacketIO.PROTO_BYTE, var2 + var8 * 1));
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static SurfaceType[] getSurfaces(MemorySegment var0) {
      class="kw">return getSurfaces(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static SurfaceType[] getSurfaces(MemorySegment var0, int var1) {
      if (!hasSurfaces(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 124, 136, "Surfaces");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("Surfaces");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("Surfaces", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Surfaces", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      SurfaceType[] var7 = new SurfaceType[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = SurfaceType.fromValue(var0.get(PacketIO.PROTO_BYTE, var2 + var8 * 1));
      }

      class="kw">return var7;
   }

   class="kw">public class="kw">static RoofState getRoofState(MemorySegment var0) {
      class="kw">return getRoofState(var0, 0);
   }

   class="kw">public class="kw">static RoofState getRoofState(MemorySegment var0, int var1) {
      class="kw">return RoofState.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 41));
   }

   @Nullable
   class="kw">public class="kw">static Rangef getSpaceScaleRange(MemorySegment var0) {
      class="kw">return getSpaceScaleRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getSpaceScaleRange(MemorySegment var0, int var1) {
      class="kw">return hasSpaceScaleRange(var0, var1) ? Rangef.toObject(var0, var1 + 42) : null;
   }

   @Nullable
   class="kw">public class="kw">static Rangef getSpaceScaleMinRange(MemorySegment var0) {
      class="kw">return getSpaceScaleMinRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getSpaceScaleMinRange(MemorySegment var0, int var1) {
      class="kw">return hasSpaceScaleMinRange(var0, var1) ? Rangef.toObject(var0, var1 + 50) : null;
   }

   @Nullable
   class="kw">public class="kw">static Rangef getSpaceScaleMaxRange(MemorySegment var0) {
      class="kw">return getSpaceScaleMaxRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getSpaceScaleMaxRange(MemorySegment var0, int var1) {
      class="kw">return hasSpaceScaleMaxRange(var0, var1) ? Rangef.toObject(var0, var1 + 58) : null;
   }

   @Nullable
   class="kw">public class="kw">static Rangef getEscapedRayPercentRange(MemorySegment var0) {
      class="kw">return getEscapedRayPercentRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getEscapedRayPercentRange(MemorySegment var0, int var1) {
      class="kw">return hasEscapedRayPercentRange(var0, var1) ? Rangef.toObject(var0, var1 + 66) : null;
   }

   @Nullable
   class="kw">public class="kw">static Rangef getReflectionCoeffRange(MemorySegment var0) {
      class="kw">return getReflectionCoeffRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getReflectionCoeffRange(MemorySegment var0, int var1) {
      class="kw">return hasReflectionCoeffRange(var0, var1) ? Rangef.toObject(var0, var1 + 74) : null;
   }

   @Nullable
   class="kw">public class="kw">static Rangef getAbsorptionCoeffRange(MemorySegment var0) {
      class="kw">return getAbsorptionCoeffRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getAbsorptionCoeffRange(MemorySegment var0, int var1) {
      class="kw">return hasAbsorptionCoeffRange(var0, var1) ? Rangef.toObject(var0, var1 + 82) : null;
   }

   @Nullable
   class="kw">public class="kw">static Rangef getRoofDistanceRange(MemorySegment var0) {
      class="kw">return getRoofDistanceRange(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Rangef getRoofDistanceRange(MemorySegment var0, int var1) {
      class="kw">return hasRoofDistanceRange(var0, var1) ? Rangef.toObject(var0, var1 + 90) : null;
   }

   @Nullable
   class="kw">public class="kw">static AmbienceFXPhysicalMaterial[] getSurfacePhysicalMaterials(MemorySegment var0) {
      class="kw">return getSurfacePhysicalMaterials(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static AmbienceFXPhysicalMaterial[] getSurfacePhysicalMaterials(MemorySegment var0, int var1) {
      if (!hasSurfacePhysicalMaterials(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 128, 136, "SurfacePhysicalMaterials");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("SurfacePhysicalMaterials");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("SurfacePhysicalMaterials", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 * 13L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("SurfacePhysicalMaterials", (int)Math.min(var2 + var6 + var5 * 13L, 2147483647L), (int)var0.byteSize());
      }

      var2 += var6;
      AmbienceFXPhysicalMaterial[] var7 = new AmbienceFXPhysicalMaterial[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = AmbienceFXPhysicalMaterial.toObject(var0, var2 + var8 * 13);
      }

      class="kw">return var7;
   }

   class="kw">public class="kw">static boolean getSurfacePhysicalMaterialsMatchAny(MemorySegment var0) {
      class="kw">return getSurfacePhysicalMaterialsMatchAny(var0, 0);
   }

   class="kw">public class="kw">static boolean getSurfacePhysicalMaterialsMatchAny(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_BOOL, var1 + 98);
   }

   @Nullable
   class="kw">public class="kw">static AmbienceFXPhysicalMaterial[] getExteriorRoofPhysicalMaterials(MemorySegment var0) {
      class="kw">return getExteriorRoofPhysicalMaterials(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static AmbienceFXPhysicalMaterial[] getExteriorRoofPhysicalMaterials(MemorySegment var0, int var1) {
      if (!hasExteriorRoofPhysicalMaterials(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 132, 136, "ExteriorRoofPhysicalMaterials");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("ExteriorRoofPhysicalMaterials");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("ExteriorRoofPhysicalMaterials", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 * 13L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("ExteriorRoofPhysicalMaterials", (int)Math.min(var2 + var6 + var5 * 13L, 2147483647L), (int)var0.byteSize());
      }

      var2 += var6;
      AmbienceFXPhysicalMaterial[] var7 = new AmbienceFXPhysicalMaterial[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = AmbienceFXPhysicalMaterial.toObject(var0, var2 + var8 * 13);
      }

      class="kw">return var7;
   }

   class="kw">public class="kw">static boolean getExteriorRoofPhysicalMaterialsMatchAny(MemorySegment var0) {
      class="kw">return getExteriorRoofPhysicalMaterialsMatchAny(var0, 0);
   }

   class="kw">public class="kw">static boolean getExteriorRoofPhysicalMaterialsMatchAny(MemorySegment var0, int var1) {
      class="kw">return var0.get(PacketIO.PROTO_BOOL, var1 + 99);
   }

   class="kw">public class="kw">static boolean hasSpaceScaleRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 1) != 0;
   }

   class="kw">public class="kw">static boolean hasSpaceScaleMinRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 2) != 0;
   }

   class="kw">public class="kw">static boolean hasSpaceScaleMaxRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 4) != 0;
   }

   class="kw">public class="kw">static boolean hasEscapedRayPercentRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 8) != 0;
   }

   class="kw">public class="kw">static boolean hasReflectionCoeffRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 16) != 0;
   }

   class="kw">public class="kw">static boolean hasAbsorptionCoeffRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 32) != 0;
   }

   class="kw">public class="kw">static boolean hasRoofDistanceRange(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 64) != 0;
   }

   class="kw">public class="kw">static boolean hasEnvironmentIndices(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 128) != 0;
   }

   class="kw">public class="kw">static boolean hasWeatherIndices(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 1) != 0;
   }

   class="kw">public class="kw">static boolean hasFluidFXIndices(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 2) != 0;
   }

   class="kw">public class="kw">static boolean hasSurroundingBlockSoundSets(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 4) != 0;
   }

   class="kw">public class="kw">static boolean hasSpace(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 8) != 0;
   }

   class="kw">public class="kw">static boolean hasShelter(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 16) != 0;
   }

   class="kw">public class="kw">static boolean hasSurfaces(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 32) != 0;
   }

   class="kw">public class="kw">static boolean hasSurfacePhysicalMaterials(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 64) != 0;
   }

   class="kw">public class="kw">static boolean hasExteriorRoofPhysicalMaterials(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 128) != 0;
   }

   class="kw">private class="kw">static int getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4) {
      int var5 = var0.get(PacketIO.PROTO_INT, var1 + var2);
      if (var5 >= 0 && var5 <= var0.byteSize() - var1 - var3) {
         class="kw">return var3 + var5;
      } else {
         throw ProtocolException.invalidOffset(var4, var5, (int)var0.byteSize());
      }
   }

   class="kw">private class="kw">static void requireSlot(MemorySegment var0, int var1, int var2, String var3) {
      int var4 = var0.get(PacketIO.PROTO_INT, var1);
      if (var4 != var2) {
         throw ProtocolException.nonCanonicalLayout(var3, var4, var2);
      }
   }

   class="kw">public class="kw">static AmbienceFXConditions toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

   class="kw">public class="kw">static AmbienceFXConditions toObject(MemorySegment var0, int var1) {
      class="kw">return toObject(var0, var1, null);
   }

   class="kw">public class="kw">static AmbienceFXConditions toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2) {
      requireBounds(var0, var1);
      int var3 = var1 + 136;
      int var4 = 0;
      int[] var5 = null;
      if (hasEnvironmentIndices(var0, var1)) {
         requireSlot(var0, var1 + 100, var4, "EnvironmentIndices");
         int var6 = var3 + var4;
         long var7 = VarInt.getWithLength(var0, var6);
         if (var7 == -1L) {
            throw ProtocolException.invalidVarInt("EnvironmentIndices");
         }

         int var9 = (int)var7;
         if (var9 > 4096000) {
            throw ProtocolException.arrayTooLong("EnvironmentIndices", var9, 4096000);
         }

         int var10 = (int)(var7 >>> 32);
         if (var6 + var10 + var9 * 4L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("EnvironmentIndices", (int)Math.min(var6 + var10 + var9 * 4L, 2147483647L), (int)var0.byteSize());
         }

         var6 += var10;
         var5 = new int[var9];
         MemorySegment.copy(var0, PacketIO.PROTO_INT, var6, var5, 0, var9);
         var4 = var6 + var9 * 4 - var3;
      } else {
         requireSlot(var0, var1 + 100, -1, "EnvironmentIndices");
      }

      int[] var21 = null;
      if (hasWeatherIndices(var0, var1)) {
         requireSlot(var0, var1 + 104, var4, "WeatherIndices");
         int var22 = var3 + var4;
         long var8 = VarInt.getWithLength(var0, var22);
         if (var8 == -1L) {
            throw ProtocolException.invalidVarInt("WeatherIndices");
         }

         int var32 = (int)var8;
         if (var32 > 4096000) {
            throw ProtocolException.arrayTooLong("WeatherIndices", var32, 4096000);
         }

         int var11 = (int)(var8 >>> 32);
         if (var22 + var11 + var32 * 4L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("WeatherIndices", (int)Math.min(var22 + var11 + var32 * 4L, 2147483647L), (int)var0.byteSize());
         }

         var22 += var11;
         var21 = new int[var32];
         MemorySegment.copy(var0, PacketIO.PROTO_INT, var22, var21, 0, var32);
         var4 = var22 + var32 * 4 - var3;
      } else {
         requireSlot(var0, var1 + 104, -1, "WeatherIndices");
      }

      int[] var24 = null;
      if (hasFluidFXIndices(var0, var1)) {
         requireSlot(var0, var1 + 108, var4, "FluidFXIndices");
         int var25 = var3 + var4;
         long var28 = VarInt.getWithLength(var0, var25);
         if (var28 == -1L) {
            throw ProtocolException.invalidVarInt("FluidFXIndices");
         }

         int var37 = (int)var28;
         if (var37 > 4096000) {
            throw ProtocolException.arrayTooLong("FluidFXIndices", var37, 4096000);
         }

         int var12 = (int)(var28 >>> 32);
         if (var25 + var12 + var37 * 4L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("FluidFXIndices", (int)Math.min(var25 + var12 + var37 * 4L, 2147483647L), (int)var0.byteSize());
         }

         var25 += var12;
         var24 = new int[var37];
         MemorySegment.copy(var0, PacketIO.PROTO_INT, var25, var24, 0, var37);
         var4 = var25 + var37 * 4 - var3;
      } else {
         requireSlot(var0, var1 + 108, -1, "FluidFXIndices");
      }

      AmbienceFXBlockSoundSet[] var27 = null;
      if (hasSurroundingBlockSoundSets(var0, var1)) {
         requireSlot(var0, var1 + 112, var4, "SurroundingBlockSoundSets");
         int var29 = var3 + var4;
         long var33 = VarInt.getWithLength(var0, var29);
         if (var33 == -1L) {
            throw ProtocolException.invalidVarInt("SurroundingBlockSoundSets");
         }

         int var42 = (int)var33;
         if (var42 > 4096000) {
            throw ProtocolException.arrayTooLong("SurroundingBlockSoundSets", var42, 4096000);
         }

         int var13 = (int)(var33 >>> 32);
         if (var29 + var13 + var42 * 13L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("SurroundingBlockSoundSets", (int)Math.min(var29 + var13 + var42 * 13L, 2147483647L), (int)var0.byteSize());
         }

         var29 += var13;
         var27 = new AmbienceFXBlockSoundSet[var42];

         for (int var14 = 0; var14 < var42; var14++) {
            var27[var14] = AmbienceFXBlockSoundSet.toObject(var0, var29 + var14 * 13);
         }

         var4 = var29 + var42 * 13 - var3;
      } else {
         requireSlot(var0, var1 + 112, -1, "SurroundingBlockSoundSets");
      }

      SpaceSize[] var31 = null;
      if (hasSpace(var0, var1)) {
         requireSlot(var0, var1 + 116, var4, "Space");
         int var34 = var3 + var4;
         long var38 = VarInt.getWithLength(var0, var34);
         if (var38 == -1L) {
            throw ProtocolException.invalidVarInt("Space");
         }

         int var47 = (int)var38;
         if (var47 > 4096000) {
            throw ProtocolException.arrayTooLong("Space", var47, 4096000);
         }

         int var52 = (int)(var38 >>> 32);
         if (var34 + var52 + var47 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Space", Math.min(var34 + var52 + var47, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var34 += var52;
         var31 = new SpaceSize[var47];

         for (int var15 = 0; var15 < var47; var15++) {
            var31[var15] = SpaceSize.fromValue(var0.get(PacketIO.PROTO_BYTE, var34 + var15 * 1));
         }

         var4 = var34 + var47 - var3;
      } else {
         requireSlot(var0, var1 + 116, -1, "Space");
      }

      ShelterType[] var36 = null;
      if (hasShelter(var0, var1)) {
         requireSlot(var0, var1 + 120, var4, "Shelter");
         int var39 = var3 + var4;
         long var43 = VarInt.getWithLength(var0, var39);
         if (var43 == -1L) {
            throw ProtocolException.invalidVarInt("Shelter");
         }

         int var53 = (int)var43;
         if (var53 > 4096000) {
            throw ProtocolException.arrayTooLong("Shelter", var53, 4096000);
         }

         int var58 = (int)(var43 >>> 32);
         if (var39 + var58 + var53 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Shelter", Math.min(var39 + var58 + var53, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var39 += var58;
         var36 = new ShelterType[var53];

         for (int var16 = 0; var16 < var53; var16++) {
            var36[var16] = ShelterType.fromValue(var0.get(PacketIO.PROTO_BYTE, var39 + var16 * 1));
         }

         var4 = var39 + var53 - var3;
      } else {
         requireSlot(var0, var1 + 120, -1, "Shelter");
      }

      SurfaceType[] var41 = null;
      if (hasSurfaces(var0, var1)) {
         requireSlot(var0, var1 + 124, var4, "Surfaces");
         int var44 = var3 + var4;
         long var48 = VarInt.getWithLength(var0, var44);
         if (var48 == -1L) {
            throw ProtocolException.invalidVarInt("Surfaces");
         }

         int var59 = (int)var48;
         if (var59 > 4096000) {
            throw ProtocolException.arrayTooLong("Surfaces", var59, 4096000);
         }

         int var61 = (int)(var48 >>> 32);
         if (var44 + var61 + var59 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Surfaces", Math.min(var44 + var61 + var59, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var44 += var61;
         var41 = new SurfaceType[var59];

         for (int var17 = 0; var17 < var59; var17++) {
            var41[var17] = SurfaceType.fromValue(var0.get(PacketIO.PROTO_BYTE, var44 + var17 * 1));
         }

         var4 = var44 + var59 - var3;
      } else {
         requireSlot(var0, var1 + 124, -1, "Surfaces");
      }

      AmbienceFXPhysicalMaterial[] var46 = null;
      if (hasSurfacePhysicalMaterials(var0, var1)) {
         requireSlot(var0, var1 + 128, var4, "SurfacePhysicalMaterials");
         int var49 = var3 + var4;
         long var54 = VarInt.getWithLength(var0, var49);
         if (var54 == -1L) {
            throw ProtocolException.invalidVarInt("SurfacePhysicalMaterials");
         }

         int var62 = (int)var54;
         if (var62 > 4096000) {
            throw ProtocolException.arrayTooLong("SurfacePhysicalMaterials", var62, 4096000);
         }

         int var63 = (int)(var54 >>> 32);
         if (var49 + var63 + var62 * 13L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("SurfacePhysicalMaterials", (int)Math.min(var49 + var63 + var62 * 13L, 2147483647L), (int)var0.byteSize());
         }

         var49 += var63;
         var46 = new AmbienceFXPhysicalMaterial[var62];

         for (int var18 = 0; var18 < var62; var18++) {
            var46[var18] = AmbienceFXPhysicalMaterial.toObject(var0, var49 + var18 * 13);
         }

         var4 = var49 + var62 * 13 - var3;
      } else {
         requireSlot(var0, var1 + 128, -1, "SurfacePhysicalMaterials");
      }

      AmbienceFXPhysicalMaterial[] var51 = null;
      if (hasExteriorRoofPhysicalMaterials(var0, var1)) {
         requireSlot(var0, var1 + 132, var4, "ExteriorRoofPhysicalMaterials");
         int var55 = var3 + var4;
         long var60 = VarInt.getWithLength(var0, var55);
         if (var60 == -1L) {
            throw ProtocolException.invalidVarInt("ExteriorRoofPhysicalMaterials");
         }

         int var64 = (int)var60;
         if (var64 > 4096000) {
            throw ProtocolException.arrayTooLong("ExteriorRoofPhysicalMaterials", var64, 4096000);
         }

         int var65 = (int)(var60 >>> 32);
         if (var55 + var65 + var64 * 13L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall(
               "ExteriorRoofPhysicalMaterials", (int)Math.min(var55 + var65 + var64 * 13L, 2147483647L), (int)var0.byteSize()
            );
         }

         var55 += var65;
         var51 = new AmbienceFXPhysicalMaterial[var64];

         for (int var19 = 0; var19 < var64; var19++) {
            var51[var19] = AmbienceFXPhysicalMaterial.toObject(var0, var55 + var19 * 13);
         }

         var4 = var55 + var64 * 13 - var3;
      } else {
         requireSlot(var0, var1 + 132, -1, "ExteriorRoofPhysicalMaterials");
      }

      AmbienceFXConditions var57 = new AmbienceFXConditions(
         var0.get(PacketIO.PROTO_BOOL, var1 + 2),
         var5,
         var21,
         var24,
         var0.get(PacketIO.PROTO_INT, var1 + 3),
         var0.get(PacketIO.PROTO_INT, var1 + 7),
         var27,
         Range.toObject(var0, var1 + 11),
         Rangeb.toObject(var0, var1 + 19),
         var0.get(PacketIO.PROTO_BOOL, var1 + 21),
         var0.get(PacketIO.PROTO_INT, var1 + 22),
         var0.get(PacketIO.PROTO_BOOL, var1 + 26),
         Rangeb.toObject(var0, var1 + 27),
         Rangeb.toObject(var0, var1 + 29),
         Rangeb.toObject(var0, var1 + 31),
         Rangef.toObject(var0, var1 + 33),
         var31,
         var36,
         var41,
         RoofState.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 41)),
         hasSpaceScaleRange(var0, var1) ? Rangef.toObject(var0, var1 + 42) : null,
         hasSpaceScaleMinRange(var0, var1) ? Rangef.toObject(var0, var1 + 50) : null,
         hasSpaceScaleMaxRange(var0, var1) ? Rangef.toObject(var0, var1 + 58) : null,
         hasEscapedRayPercentRange(var0, var1) ? Rangef.toObject(var0, var1 + 66) : null,
         hasReflectionCoeffRange(var0, var1) ? Rangef.toObject(var0, var1 + 74) : null,
         hasAbsorptionCoeffRange(var0, var1) ? Rangef.toObject(var0, var1 + 82) : null,
         hasRoofDistanceRange(var0, var1) ? Rangef.toObject(var0, var1 + 90) : null,
         var46,
         var0.get(PacketIO.PROTO_BOOL, var1 + 98),
         var51,
         var0.get(PacketIO.PROTO_BOOL, var1 + 99)
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var57;
   }

   class="kw">public int serialize(@Nonnull MemorySegment var1, int var2) {
      byte var3 = 0;
      if (this.spaceScaleRange != null) {
         var3 = (byte)(var3 | 1);
      }

      if (this.spaceScaleMinRange != null) {
         var3 = (byte)(var3 | 2);
      }

      if (this.spaceScaleMaxRange != null) {
         var3 = (byte)(var3 | 4);
      }

      if (this.escapedRayPercentRange != null) {
         var3 = (byte)(var3 | 8);
      }

      if (this.reflectionCoeffRange != null) {
         var3 = (byte)(var3 | 16);
      }

      if (this.absorptionCoeffRange != null) {
         var3 = (byte)(var3 | 32);
      }

      if (this.roofDistanceRange != null) {
         var3 = (byte)(var3 | 64);
      }

      if (this.environmentIndices != null) {
         var3 = (byte)(var3 | 128);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 0, var3);
      var3 = 0;
      if (this.weatherIndices != null) {
         var3 = (byte)(var3 | 1);
      }

      if (this.fluidFXIndices != null) {
         var3 = (byte)(var3 | 2);
      }

      if (this.surroundingBlockSoundSets != null) {
         var3 = (byte)(var3 | 4);
      }

      if (this.space != null) {
         var3 = (byte)(var3 | 8);
      }

      if (this.shelter != null) {
         var3 = (byte)(var3 | 16);
      }

      if (this.surfaces != null) {
         var3 = (byte)(var3 | 32);
      }

      if (this.surfacePhysicalMaterials != null) {
         var3 = (byte)(var3 | 64);
      }

      if (this.exteriorRoofPhysicalMaterials != null) {
         var3 = (byte)(var3 | 128);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 1, var3);
      var1.set(PacketIO.PROTO_BOOL, var2 + 2, this.never);
      var1.set(PacketIO.PROTO_INT, var2 + 3, this.environmentTagPatternIndex);
      var1.set(PacketIO.PROTO_INT, var2 + 7, this.weatherTagPatternIndex);
      this.altitude.serialize(var1, var2 + 11);
      this.walls.serialize(var1, var2 + 19);
      var1.set(PacketIO.PROTO_BOOL, var2 + 21, this.roof);
      var1.set(PacketIO.PROTO_INT, var2 + 22, this.roofMaterialTagPatternIndex);
      var1.set(PacketIO.PROTO_BOOL, var2 + 26, this.floor);
      this.sunLightLevel.serialize(var1, var2 + 27);
      this.torchLightLevel.serialize(var1, var2 + 29);
      this.globalLightLevel.serialize(var1, var2 + 31);
      this.dayTime.serialize(var1, var2 + 33);
      var1.set(PacketIO.PROTO_BYTE, var2 + 41, (byte)this.roofState.getValue());
      if (this.spaceScaleRange != null) {
         this.spaceScaleRange.serialize(var1, var2 + 42);
      } else {
         var1.asSlice(var2 + 42, 8L).fill((byte)0);
      }

      if (this.spaceScaleMinRange != null) {
         this.spaceScaleMinRange.serialize(var1, var2 + 50);
      } else {
         var1.asSlice(var2 + 50, 8L).fill((byte)0);
      }

      if (this.spaceScaleMaxRange != null) {
         this.spaceScaleMaxRange.serialize(var1, var2 + 58);
      } else {
         var1.asSlice(var2 + 58, 8L).fill((byte)0);
      }

      if (this.escapedRayPercentRange != null) {
         this.escapedRayPercentRange.serialize(var1, var2 + 66);
      } else {
         var1.asSlice(var2 + 66, 8L).fill((byte)0);
      }

      if (this.reflectionCoeffRange != null) {
         this.reflectionCoeffRange.serialize(var1, var2 + 74);
      } else {
         var1.asSlice(var2 + 74, 8L).fill((byte)0);
      }

      if (this.absorptionCoeffRange != null) {
         this.absorptionCoeffRange.serialize(var1, var2 + 82);
      } else {
         var1.asSlice(var2 + 82, 8L).fill((byte)0);
      }

      if (this.roofDistanceRange != null) {
         this.roofDistanceRange.serialize(var1, var2 + 90);
      } else {
         var1.asSlice(var2 + 90, 8L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_BOOL, var2 + 98, this.surfacePhysicalMaterialsMatchAny);
      var1.set(PacketIO.PROTO_BOOL, var2 + 99, this.exteriorRoofPhysicalMaterialsMatchAny);
      int var4 = var2 + 136;
      if (this.environmentIndices != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 100, var4 - var2 - 136);
         if (this.environmentIndices.length > 4096000) {
            throw ProtocolException.arrayTooLong("EnvironmentIndices", this.environmentIndices.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.environmentIndices.length);
         MemorySegment.copy(this.environmentIndices, 0, var1, PacketIO.PROTO_INT, var4, this.environmentIndices.length);
         var4 += this.environmentIndices.length * 4;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 100, -1);
      }

      if (this.weatherIndices != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 104, var4 - var2 - 136);
         if (this.weatherIndices.length > 4096000) {
            throw ProtocolException.arrayTooLong("WeatherIndices", this.weatherIndices.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.weatherIndices.length);
         MemorySegment.copy(this.weatherIndices, 0, var1, PacketIO.PROTO_INT, var4, this.weatherIndices.length);
         var4 += this.weatherIndices.length * 4;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 104, -1);
      }

      if (this.fluidFXIndices != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 108, var4 - var2 - 136);
         if (this.fluidFXIndices.length > 4096000) {
            throw ProtocolException.arrayTooLong("FluidFXIndices", this.fluidFXIndices.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.fluidFXIndices.length);
         MemorySegment.copy(this.fluidFXIndices, 0, var1, PacketIO.PROTO_INT, var4, this.fluidFXIndices.length);
         var4 += this.fluidFXIndices.length * 4;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 108, -1);
      }

      if (this.surroundingBlockSoundSets != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 112, var4 - var2 - 136);
         if (this.surroundingBlockSoundSets.length > 4096000) {
            throw ProtocolException.arrayTooLong("SurroundingBlockSoundSets", this.surroundingBlockSoundSets.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.surroundingBlockSoundSets.length);
         int var5 = 0;

         for (int var6 = 0; var6 < this.surroundingBlockSoundSets.length; var6++) {
            var5 += this.surroundingBlockSoundSets[var6].serialize(var1, var4 + var5);
         }

         var4 += var5;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 112, -1);
      }

      if (this.space != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 116, var4 - var2 - 136);
         if (this.space.length > 4096000) {
            throw ProtocolException.arrayTooLong("Space", this.space.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.space.length);

         for (int var17 = 0; var17 < this.space.length; var17++) {
            var1.set(PacketIO.PROTO_BYTE, var4 + var17 * 1, (byte)this.space[var17].getValue());
         }

         var4 += this.space.length * 1;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 116, -1);
      }

      if (this.shelter != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 120, var4 - var2 - 136);
         if (this.shelter.length > 4096000) {
            throw ProtocolException.arrayTooLong("Shelter", this.shelter.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.shelter.length);

         for (int var18 = 0; var18 < this.shelter.length; var18++) {
            var1.set(PacketIO.PROTO_BYTE, var4 + var18 * 1, (byte)this.shelter[var18].getValue());
         }

         var4 += this.shelter.length * 1;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 120, -1);
      }

      if (this.surfaces != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 124, var4 - var2 - 136);
         if (this.surfaces.length > 4096000) {
            throw ProtocolException.arrayTooLong("Surfaces", this.surfaces.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.surfaces.length);

         for (int var19 = 0; var19 < this.surfaces.length; var19++) {
            var1.set(PacketIO.PROTO_BYTE, var4 + var19 * 1, (byte)this.surfaces[var19].getValue());
         }

         var4 += this.surfaces.length * 1;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 124, -1);
      }

      if (this.surfacePhysicalMaterials != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 128, var4 - var2 - 136);
         if (this.surfacePhysicalMaterials.length > 4096000) {
            throw ProtocolException.arrayTooLong("SurfacePhysicalMaterials", this.surfacePhysicalMaterials.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.surfacePhysicalMaterials.length);
         int var20 = 0;

         for (int var22 = 0; var22 < this.surfacePhysicalMaterials.length; var22++) {
            var20 += this.surfacePhysicalMaterials[var22].serialize(var1, var4 + var20);
         }

         var4 += var20;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 128, -1);
      }

      if (this.exteriorRoofPhysicalMaterials != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 132, var4 - var2 - 136);
         if (this.exteriorRoofPhysicalMaterials.length > 4096000) {
            throw ProtocolException.arrayTooLong("ExteriorRoofPhysicalMaterials", this.exteriorRoofPhysicalMaterials.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.exteriorRoofPhysicalMaterials.length);
         int var21 = 0;

         for (int var23 = 0; var23 < this.exteriorRoofPhysicalMaterials.length; var23++) {
            var21 += this.exteriorRoofPhysicalMaterials[var23].serialize(var1, var4 + var21);
         }

         var4 += var21;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 132, -1);
      }

      class="kw">return var4 - var2;
   }

   class="kw">public int computeSize() {
      int var1 = 136;
      if (this.environmentIndices != null) {
         var1 += VarInt.size(this.environmentIndices.length) + this.environmentIndices.length * 4;
      }

      if (this.weatherIndices != null) {
         var1 += VarInt.size(this.weatherIndices.length) + this.weatherIndices.length * 4;
      }

      if (this.fluidFXIndices != null) {
         var1 += VarInt.size(this.fluidFXIndices.length) + this.fluidFXIndices.length * 4;
      }

      if (this.surroundingBlockSoundSets != null) {
         var1 += VarInt.size(this.surroundingBlockSoundSets.length) + this.surroundingBlockSoundSets.length * 13;
      }

      if (this.space != null) {
         var1 += VarInt.size(this.space.length) + this.space.length * 1;
      }

      if (this.shelter != null) {
         var1 += VarInt.size(this.shelter.length) + this.shelter.length * 1;
      }

      if (this.surfaces != null) {
         var1 += VarInt.size(this.surfaces.length) + this.surfaces.length * 1;
      }

      if (this.surfacePhysicalMaterials != null) {
         var1 += VarInt.size(this.surfacePhysicalMaterials.length) + this.surfacePhysicalMaterials.length * 13;
      }

      if (this.exteriorRoofPhysicalMaterials != null) {
         var1 += VarInt.size(this.exteriorRoofPhysicalMaterials.length) + this.exteriorRoofPhysicalMaterials.length * 13;
      }

      class="kw">return var1;
   }

   class="kw">public AmbienceFXConditions clone() {
      AmbienceFXConditions var1 = new AmbienceFXConditions();
      var1.never = this.never;
      var1.environmentIndices = this.environmentIndices != null ? Arrays.copyOf(this.environmentIndices, this.environmentIndices.length) : null;
      var1.weatherIndices = this.weatherIndices != null ? Arrays.copyOf(this.weatherIndices, this.weatherIndices.length) : null;
      var1.fluidFXIndices = this.fluidFXIndices != null ? Arrays.copyOf(this.fluidFXIndices, this.fluidFXIndices.length) : null;
      var1.environmentTagPatternIndex = this.environmentTagPatternIndex;
      var1.weatherTagPatternIndex = this.weatherTagPatternIndex;
      var1.surroundingBlockSoundSets = this.surroundingBlockSoundSets != null
         ? Arrays.stream(this.surroundingBlockSoundSets).map(var0 -> var0.clone()).toArray(AmbienceFXBlockSoundSet[]::new)
         : null;
      var1.altitude = this.altitude.clone();
      var1.walls = this.walls.clone();
      var1.roof = this.roof;
      var1.roofMaterialTagPatternIndex = this.roofMaterialTagPatternIndex;
      var1.floor = this.floor;
      var1.sunLightLevel = this.sunLightLevel.clone();
      var1.torchLightLevel = this.torchLightLevel.clone();
      var1.globalLightLevel = this.globalLightLevel.clone();
      var1.dayTime = this.dayTime.clone();
      var1.space = this.space != null ? Arrays.copyOf(this.space, this.space.length) : null;
      var1.shelter = this.shelter != null ? Arrays.copyOf(this.shelter, this.shelter.length) : null;
      var1.surfaces = this.surfaces != null ? Arrays.copyOf(this.surfaces, this.surfaces.length) : null;
      var1.roofState = this.roofState;
      var1.spaceScaleRange = this.spaceScaleRange != null ? this.spaceScaleRange.clone() : null;
      var1.spaceScaleMinRange = this.spaceScaleMinRange != null ? this.spaceScaleMinRange.clone() : null;
      var1.spaceScaleMaxRange = this.spaceScaleMaxRange != null ? this.spaceScaleMaxRange.clone() : null;
      var1.escapedRayPercentRange = this.escapedRayPercentRange != null ? this.escapedRayPercentRange.clone() : null;
      var1.reflectionCoeffRange = this.reflectionCoeffRange != null ? this.reflectionCoeffRange.clone() : null;
      var1.absorptionCoeffRange = this.absorptionCoeffRange != null ? this.absorptionCoeffRange.clone() : null;
      var1.roofDistanceRange = this.roofDistanceRange != null ? this.roofDistanceRange.clone() : null;
      var1.surfacePhysicalMaterials = this.surfacePhysicalMaterials != null
         ? Arrays.stream(this.surfacePhysicalMaterials).map(var0 -> var0.clone()).toArray(AmbienceFXPhysicalMaterial[]::new)
         : null;
      var1.surfacePhysicalMaterialsMatchAny = this.surfacePhysicalMaterialsMatchAny;
      var1.exteriorRoofPhysicalMaterials = this.exteriorRoofPhysicalMaterials != null
         ? Arrays.stream(this.exteriorRoofPhysicalMaterials).map(var0 -> var0.clone()).toArray(AmbienceFXPhysicalMaterial[]::new)
         : null;
      var1.exteriorRoofPhysicalMaterialsMatchAny = this.exteriorRoofPhysicalMaterialsMatchAny;
      class="kw">return var1;
   }

   @Override
   class="kw">public boolean equals(Object var1) {
      if (this == var1) {
         class="kw">return true;
      } else {
         class="kw">return !(var1 class="kw">instanceof AmbienceFXConditions var2)
            ? false
            : this.never == var2.never
               && Arrays.equals(this.environmentIndices, var2.environmentIndices)
               && Arrays.equals(this.weatherIndices, var2.weatherIndices)
               && Arrays.equals(this.fluidFXIndices, var2.fluidFXIndices)
               && this.environmentTagPatternIndex == var2.environmentTagPatternIndex
               && this.weatherTagPatternIndex == var2.weatherTagPatternIndex
               && Arrays.equals(this.surroundingBlockSoundSets, var2.surroundingBlockSoundSets)
               && Objects.equals(this.altitude, var2.altitude)
               && Objects.equals(this.walls, var2.walls)
               && this.roof == var2.roof
               && this.roofMaterialTagPatternIndex == var2.roofMaterialTagPatternIndex
               && this.floor == var2.floor
               && Objects.equals(this.sunLightLevel, var2.sunLightLevel)
               && Objects.equals(this.torchLightLevel, var2.torchLightLevel)
               && Objects.equals(this.globalLightLevel, var2.globalLightLevel)
               && Objects.equals(this.dayTime, var2.dayTime)
               && Arrays.equals(this.space, var2.space)
               && Arrays.equals(this.shelter, var2.shelter)
               && Arrays.equals(this.surfaces, var2.surfaces)
               && Objects.equals(this.roofState, var2.roofState)
               && Objects.equals(this.spaceScaleRange, var2.spaceScaleRange)
               && Objects.equals(this.spaceScaleMinRange, var2.spaceScaleMinRange)
               && Objects.equals(this.spaceScaleMaxRange, var2.spaceScaleMaxRange)
               && Objects.equals(this.escapedRayPercentRange, var2.escapedRayPercentRange)
               && Objects.equals(this.reflectionCoeffRange, var2.reflectionCoeffRange)
               && Objects.equals(this.absorptionCoeffRange, var2.absorptionCoeffRange)
               && Objects.equals(this.roofDistanceRange, var2.roofDistanceRange)
               && Arrays.equals(this.surfacePhysicalMaterials, var2.surfacePhysicalMaterials)
               && this.surfacePhysicalMaterialsMatchAny == var2.surfacePhysicalMaterialsMatchAny
               && Arrays.equals(this.exteriorRoofPhysicalMaterials, var2.exteriorRoofPhysicalMaterials)
               && this.exteriorRoofPhysicalMaterialsMatchAny == var2.exteriorRoofPhysicalMaterialsMatchAny;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Boolean.hashCode(this.never);
      var1 = 31 * var1 + Arrays.hashCode(this.environmentIndices);
      var1 = 31 * var1 + Arrays.hashCode(this.weatherIndices);
      var1 = 31 * var1 + Arrays.hashCode(this.fluidFXIndices);
      var1 = 31 * var1 + Integer.hashCode(this.environmentTagPatternIndex);
      var1 = 31 * var1 + Integer.hashCode(this.weatherTagPatternIndex);
      var1 = 31 * var1 + Arrays.hashCode(this.surroundingBlockSoundSets);
      var1 = 31 * var1 + Objects.hashCode(this.altitude);
      var1 = 31 * var1 + Objects.hashCode(this.walls);
      var1 = 31 * var1 + Boolean.hashCode(this.roof);
      var1 = 31 * var1 + Integer.hashCode(this.roofMaterialTagPatternIndex);
      var1 = 31 * var1 + Boolean.hashCode(this.floor);
      var1 = 31 * var1 + Objects.hashCode(this.sunLightLevel);
      var1 = 31 * var1 + Objects.hashCode(this.torchLightLevel);
      var1 = 31 * var1 + Objects.hashCode(this.globalLightLevel);
      var1 = 31 * var1 + Objects.hashCode(this.dayTime);
      var1 = 31 * var1 + Arrays.hashCode(this.space);
      var1 = 31 * var1 + Arrays.hashCode(this.shelter);
      var1 = 31 * var1 + Arrays.hashCode(this.surfaces);
      var1 = 31 * var1 + Objects.hashCode(this.roofState);
      var1 = 31 * var1 + Objects.hashCode(this.spaceScaleRange);
      var1 = 31 * var1 + Objects.hashCode(this.spaceScaleMinRange);
      var1 = 31 * var1 + Objects.hashCode(this.spaceScaleMaxRange);
      var1 = 31 * var1 + Objects.hashCode(this.escapedRayPercentRange);
      var1 = 31 * var1 + Objects.hashCode(this.reflectionCoeffRange);
      var1 = 31 * var1 + Objects.hashCode(this.absorptionCoeffRange);
      var1 = 31 * var1 + Objects.hashCode(this.roofDistanceRange);
      var1 = 31 * var1 + Arrays.hashCode(this.surfacePhysicalMaterials);
      var1 = 31 * var1 + Boolean.hashCode(this.surfacePhysicalMaterialsMatchAny);
      var1 = 31 * var1 + Arrays.hashCode(this.exteriorRoofPhysicalMaterials);
      class="kw">return 31 * var1 + Boolean.hashCode(this.exteriorRoofPhysicalMaterialsMatchAny);
   }
}