SoundEvent class

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

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

Поля (84)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
SoundEvent var1
int var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
long var10
int var10
int var11
int var11
int var12
SoundEventLayer[] var16
var16
int var17
var17
StateBinding[] var19
var19
long var2
ReadCursor var2
ReadCursor var2
int var2
byte var2
byte var2
byte var2
byte var2
int var2
int var20
var20
AudioCategoryDuckingRule[] var22
var22
int var23
SoundEvent var25
long var26
int var27
int var28
int var29
int var3
var3
int var3
var3
long var3
int var3
byte var3
var3
var3
var3
var3
int var30
long var4
long var4
int var4
int var4
var4
var4
var4
int var4
int var5
int var5
ReadCursor var5
int var5
int var6
int var6
int var6
String var6
var6
int var7
int var7
AudioCategoryDuckingRule[] var7
int var7
int var7
SoundEventLayer[] var8
StateBinding[] var8
long var8
long var9

Методы (97)

МодификаторыВозвратСигнатура
public SoundEvent cloneSoundEvent clone()
public int computeSizeint computeSize()
for for(int var9 = 0; var9 < var6; var9++)
for for(int var9 = 0; var9 < var6; var9++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var13 = 0; var13 < var11; var13++)
for for(int var14 = 0; var14 < var27; var14++)
for for(int var15 = 0; var15 < var29; var15++)
for for(int var6 = 0; var6 < this.layers.length; var6++)
for for(int var12 = 0; var12 < this.stateBindings.length; var12++)
for for(int var13 = 0; var13 < this.duckingRules.length; var13++)
for for(SoundEventLayer var6 : this.layers)
for for(StateBinding var11 : this.stateBindings)
static int getAudioCategoryint getAudioCategory(MemorySegment var0)
static int getAudioCategoryint getAudioCategory(MemorySegment var0, int var1)
abstract return getAudioCategoryreturn getAudioCategory(var0, 0)
static boolean getBypassDuckingboolean getBypassDucking(MemorySegment var0)
static boolean getBypassDuckingboolean getBypassDucking(MemorySegment var0, int var1)
abstract return getBypassDuckingreturn getBypassDucking(var0, 0)
abstract return getDuckingRulesreturn getDuckingRules(var0, 0)
abstract return getIdreturn getId(var0, 0)
abstract return getLayersreturn getLayers(var0, 0)
static float getMaxDistancefloat getMaxDistance(MemorySegment var0)
static float getMaxDistancefloat getMaxDistance(MemorySegment var0, int var1)
abstract return getMaxDistancereturn getMaxDistance(var0, 0)
static int getMaxInstanceint getMaxInstance(MemorySegment var0)
static int getMaxInstanceint getMaxInstance(MemorySegment var0, int var1)
abstract return getMaxInstancereturn getMaxInstance(var0, 0)
static float getPitchfloat getPitch(MemorySegment var0)
static float getPitchfloat getPitch(MemorySegment var0, int var1)
abstract return getPitchreturn getPitch(var0, 0)
static boolean getPreventSoundInterruptionboolean getPreventSoundInterruption(MemorySegment var0)
static boolean getPreventSoundInterruptionboolean getPreventSoundInterruption(MemorySegment var0, int var1)
abstract return getPreventSoundInterruptionreturn getPreventSoundInterruption(var0, 0)
static float getSpatialBlendfloat getSpatialBlend(MemorySegment var0)
static float getSpatialBlendfloat getSpatialBlend(MemorySegment var0, int var1)
abstract return getSpatialBlendreturn getSpatialBlend(var0, 0)
static float getStartAttenuationDistancefloat getStartAttenuationDistance(MemorySegment var0)
static float getStartAttenuationDistancefloat getStartAttenuationDistance(MemorySegment var0, int var1)
abstract return getStartAttenuationDistancereturn getStartAttenuationDistance(var0, 0)
abstract return getStateBindingsreturn getStateBindings(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static float getVolumefloat getVolume(MemorySegment var0)
static float getVolumefloat getVolume(MemorySegment var0, int var1)
abstract return getVolumereturn getVolume(var0, 0)
static boolean hasDuckingRulesboolean hasDuckingRules(MemorySegment var0, int var1)
static boolean hasIdboolean hasId(MemorySegment var0, int var1)
static boolean hasLayersboolean hasLayers(MemorySegment var0, int var1)
static boolean hasStateBindingsboolean hasStateBindings(MemorySegment var0, int var1)
if if(var1 < 0)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 != var2)
if if(var9 == -1L)
if if(var11 > 4096000)
if if(var10 == -1L)
if if(var27 > 4096000)
if if(var26 == -1L)
if if(var29 > 4096000)
if if(var2 != null)
if if(this.id != null)
if if(this.layers != null)
if if(this.stateBindings != null)
if if(this.duckingRules != null)
if if(this.id != null)
if if(this.layers != null)
if if(this.layers.length > 4096000)
if if(this.stateBindings != null)
if if(this.stateBindings.length > 4096000)
if if(this.duckingRules != null)
if if(this.duckingRules.length > 4096000)
if if(this.id != null)
if if(this.layers != null)
if if(this.stateBindings != null)
if if(this.duckingRules != 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 + 31, var4, "Id")
abstract requireSlot requireSlot(var0, var1 + 31, -1, "Id")
abstract requireSlot requireSlot(var0, var1 + 35, var4, "Layers")
abstract requireSlot requireSlot(var0, var1 + 35, -1, "Layers")
abstract requireSlot requireSlot(var0, var1 + 39, var4, "StateBindings")
abstract requireSlot requireSlot(var0, var1 + 39, -1, "StateBindings")
abstract requireSlot requireSlot(var0, var1 + 43, var4, "DuckingRules")
abstract requireSlot requireSlot(var0, var1 + 43, -1, "DuckingRules")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static SoundEvent toObjectSoundEvent toObject(MemorySegment var0)
static SoundEvent toObjectSoundEvent toObject(MemorySegment var0, int var1)
static SoundEvent toObjectSoundEvent 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 SoundEvent {
   class="kw">public class="kw">static class="kw">final int NULLABLE_BIT_FIELD_SIZE = 1;
   class="kw">public class="kw">static class="kw">final int FIXED_BLOCK_SIZE = 31;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 4;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 47;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 1677721600;
   @Nullable
   class="kw">public String id;
   class="kw">public float volume;
   class="kw">public float pitch;
   class="kw">public int maxInstance;
   class="kw">public boolean preventSoundInterruption;
   class="kw">public float startAttenuationDistance;
   class="kw">public float maxDistance;
   class="kw">public float spatialBlend;
   @Nullable
   class="kw">public SoundEventLayer[] layers;
   class="kw">public int audioCategory;
   @Nullable
   class="kw">public StateBinding[] stateBindings;
   @Nullable
   class="kw">public AudioCategoryDuckingRule[] duckingRules;
   class="kw">public boolean bypassDucking;

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

   class="kw">public SoundEvent(
      @Nullable String var1,
      float var2,
      float var3,
      int var4,
      boolean var5,
      float var6,
      float var7,
      float var8,
      @Nullable SoundEventLayer[] var9,
      int var10,
      @Nullable StateBinding[] var11,
      @Nullable AudioCategoryDuckingRule[] var12,
      boolean var13
   ) {
      this.id = var1;
      this.volume = var2;
      this.pitch = var3;
      this.maxInstance = var4;
      this.preventSoundInterruption = var5;
      this.startAttenuationDistance = var6;
      this.maxDistance = var7;
      this.spatialBlend = var8;
      this.layers = var9;
      this.audioCategory = var10;
      this.stateBindings = var11;
      this.duckingRules = var12;
      this.bypassDucking = var13;
   }

   class="kw">public SoundEvent(@Nonnull SoundEvent var1) {
      this.id = var1.id;
      this.volume = var1.volume;
      this.pitch = var1.pitch;
      this.maxInstance = var1.maxInstance;
      this.preventSoundInterruption = var1.preventSoundInterruption;
      this.startAttenuationDistance = var1.startAttenuationDistance;
      this.maxDistance = var1.maxDistance;
      this.spatialBlend = var1.spatialBlend;
      this.layers = var1.layers;
      this.audioCategory = var1.audioCategory;
      this.stateBindings = var1.stateBindings;
      this.duckingRules = var1.duckingRules;
      this.bypassDucking = var1.bypassDucking;
   }

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

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

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

   @Nullable
   class="kw">public class="kw">static String getId(MemorySegment var0, int var1) {
      class="kw">return hasId(var0, var1) ? PacketIO.readVarString("Id", var0, var1 + getValidatedOffset(var0, var1, 31, 47, "Id"), 4096000) : null;
   }

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

   class="kw">public class="kw">static float getVolume(MemorySegment var0, int var1) {
      class="kw">return PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 1), "Volume");
   }

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

   class="kw">public class="kw">static float getPitch(MemorySegment var0, int var1) {
      class="kw">return PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 5), "Pitch");
   }

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

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

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

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

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

   class="kw">public class="kw">static float getStartAttenuationDistance(MemorySegment var0, int var1) {
      class="kw">return PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 14), "StartAttenuationDistance");
   }

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

   class="kw">public class="kw">static float getMaxDistance(MemorySegment var0, int var1) {
      class="kw">return PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 18), "MaxDistance");
   }

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

   class="kw">public class="kw">static float getSpatialBlend(MemorySegment var0, int var1) {
      class="kw">return PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 22), "SpatialBlend");
   }

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

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

      ReadCursor var2 = new ReadCursor();
      int var3 = var1 + getValidatedOffset(var0, var1, 35, 47, "Layers");
      long var4 = VarInt.getWithLength(var0, var3);
      if (var4 == -1L) {
         throw ProtocolException.invalidVarInt("Layers");
      }

      int var6 = (int)var4;
      if (var6 > 4096000) {
         throw ProtocolException.arrayTooLong("Layers", var6, 4096000);
      }

      int var7 = (int)(var4 >>> 32);
      if (var3 + var7 + var6 * 45L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Layers", (int)Math.min(var3 + var7 + var6 * 45L, 2147483647L), (int)var0.byteSize());
      }

      var3 += var7;
      SoundEventLayer[] var8 = new SoundEventLayer[var6];

      for (int var9 = 0; var9 < var6; var9++) {
         var8[var9] = SoundEventLayer.toObject(var0, var3, var2);
         var3 = var2.position;
      }

      class="kw">return var8;
   }

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

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

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

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

      ReadCursor var2 = new ReadCursor();
      int var3 = var1 + getValidatedOffset(var0, var1, 39, 47, "StateBindings");
      long var4 = VarInt.getWithLength(var0, var3);
      if (var4 == -1L) {
         throw ProtocolException.invalidVarInt("StateBindings");
      }

      int var6 = (int)var4;
      if (var6 > 4096000) {
         throw ProtocolException.arrayTooLong("StateBindings", var6, 4096000);
      }

      int var7 = (int)(var4 >>> 32);
      if (var3 + var7 + var6 * 5L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("StateBindings", (int)Math.min(var3 + var7 + var6 * 5L, 2147483647L), (int)var0.byteSize());
      }

      var3 += var7;
      StateBinding[] var8 = new StateBinding[var6];

      for (int var9 = 0; var9 < var6; var9++) {
         var8[var9] = StateBinding.toObject(var0, var3, var2);
         var3 = var2.position;
      }

      class="kw">return var8;
   }

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

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

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

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

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

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

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

      class="kw">return var7;
   }

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

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

   class="kw">public class="kw">static boolean hasId(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 hasLayers(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 hasStateBindings(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 hasDuckingRules(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 8) != 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 SoundEvent toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

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

   class="kw">public class="kw">static SoundEvent toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2) {
      requireBounds(var0, var1);
      int var3 = var1 + 47;
      int var4 = 0;
      ReadCursor var5 = var2 != null ? var2 : new ReadCursor();
      String var6 = null;
      if (hasId(var0, var1)) {
         requireSlot(var0, var1 + 31, var4, "Id");
         int var7 = var3 + var4;
         long var8 = VarInt.getWithLength(var0, var7);
         var6 = PacketIO.readVarString("Id", var0, var7, 0, 4096000, var8);
         var4 += (int)var8 + (int)(var8 >>> 32);
      } else {
         requireSlot(var0, var1 + 31, -1, "Id");
      }

      SoundEventLayer[] var16 = null;
      if (hasLayers(var0, var1)) {
         requireSlot(var0, var1 + 35, var4, "Layers");
         int var17 = var3 + var4;
         long var9 = VarInt.getWithLength(var0, var17);
         if (var9 == -1L) {
            throw ProtocolException.invalidVarInt("Layers");
         }

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

         int var12 = (int)(var9 >>> 32);
         if (var17 + var12 + var11 * 45L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Layers", (int)Math.min(var17 + var12 + var11 * 45L, 2147483647L), (int)var0.byteSize());
         }

         var17 += var12;
         var16 = new SoundEventLayer[var11];

         for (int var13 = 0; var13 < var11; var13++) {
            var16[var13] = SoundEventLayer.toObject(var0, var17, var5);
            var17 = var5.position;
         }

         var4 = var17 - var3;
      } else {
         requireSlot(var0, var1 + 35, -1, "Layers");
      }

      StateBinding[] var19 = null;
      if (hasStateBindings(var0, var1)) {
         requireSlot(var0, var1 + 39, var4, "StateBindings");
         int var20 = var3 + var4;
         long var10 = VarInt.getWithLength(var0, var20);
         if (var10 == -1L) {
            throw ProtocolException.invalidVarInt("StateBindings");
         }

         int var27 = (int)var10;
         if (var27 > 4096000) {
            throw ProtocolException.arrayTooLong("StateBindings", var27, 4096000);
         }

         int var28 = (int)(var10 >>> 32);
         if (var20 + var28 + var27 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("StateBindings", (int)Math.min(var20 + var28 + var27 * 5L, 2147483647L), (int)var0.byteSize());
         }

         var20 += var28;
         var19 = new StateBinding[var27];

         for (int var14 = 0; var14 < var27; var14++) {
            var19[var14] = StateBinding.toObject(var0, var20, var5);
            var20 = var5.position;
         }

         var4 = var20 - var3;
      } else {
         requireSlot(var0, var1 + 39, -1, "StateBindings");
      }

      AudioCategoryDuckingRule[] var22 = null;
      if (hasDuckingRules(var0, var1)) {
         requireSlot(var0, var1 + 43, var4, "DuckingRules");
         int var23 = var3 + var4;
         long var26 = VarInt.getWithLength(var0, var23);
         if (var26 == -1L) {
            throw ProtocolException.invalidVarInt("DuckingRules");
         }

         int var29 = (int)var26;
         if (var29 > 4096000) {
            throw ProtocolException.arrayTooLong("DuckingRules", var29, 4096000);
         }

         int var30 = (int)(var26 >>> 32);
         if (var23 + var30 + var29 * 24L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("DuckingRules", (int)Math.min(var23 + var30 + var29 * 24L, 2147483647L), (int)var0.byteSize());
         }

         var23 += var30;
         var22 = new AudioCategoryDuckingRule[var29];

         for (int var15 = 0; var15 < var29; var15++) {
            var22[var15] = AudioCategoryDuckingRule.toObject(var0, var23 + var15 * 24);
         }

         var4 = var23 + var29 * 24 - var3;
      } else {
         requireSlot(var0, var1 + 43, -1, "DuckingRules");
      }

      SoundEvent var25 = new SoundEvent(
         var6,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 1), "Volume"),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 5), "Pitch"),
         var0.get(PacketIO.PROTO_INT, var1 + 9),
         var0.get(PacketIO.PROTO_BOOL, var1 + 13),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 14), "StartAttenuationDistance"),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 18), "MaxDistance"),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 22), "SpatialBlend"),
         var16,
         var0.get(PacketIO.PROTO_INT, var1 + 26),
         var19,
         var22,
         var0.get(PacketIO.PROTO_BOOL, var1 + 30)
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var25;
   }

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

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

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

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 0, var3);
      PacketIO.requireFinite(this.volume, "Volume");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 1, this.volume);
      PacketIO.requireFinite(this.pitch, "Pitch");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 5, this.pitch);
      var1.set(PacketIO.PROTO_INT, var2 + 9, this.maxInstance);
      var1.set(PacketIO.PROTO_BOOL, var2 + 13, this.preventSoundInterruption);
      PacketIO.requireFinite(this.startAttenuationDistance, "StartAttenuationDistance");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 14, this.startAttenuationDistance);
      PacketIO.requireFinite(this.maxDistance, "MaxDistance");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 18, this.maxDistance);
      PacketIO.requireFinite(this.spatialBlend, "SpatialBlend");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 22, this.spatialBlend);
      var1.set(PacketIO.PROTO_INT, var2 + 26, this.audioCategory);
      var1.set(PacketIO.PROTO_BOOL, var2 + 30, this.bypassDucking);
      int var4 = var2 + 47;
      if (this.id != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 31, var4 - var2 - 47);
         var4 += PacketIO.writeVarString(var1, var4, this.id, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 31, -1);
      }

      if (this.layers != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 35, var4 - var2 - 47);
         if (this.layers.length > 4096000) {
            throw ProtocolException.arrayTooLong("Layers", this.layers.length, 4096000);
         }

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

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

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

      if (this.stateBindings != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 39, var4 - var2 - 47);
         if (this.stateBindings.length > 4096000) {
            throw ProtocolException.arrayTooLong("StateBindings", this.stateBindings.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.stateBindings.length);
         int var10 = 0;

         for (int var12 = 0; var12 < this.stateBindings.length; var12++) {
            var10 += this.stateBindings[var12].serialize(var1, var4 + var10);
         }

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

      if (this.duckingRules != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 43, var4 - var2 - 47);
         if (this.duckingRules.length > 4096000) {
            throw ProtocolException.arrayTooLong("DuckingRules", this.duckingRules.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.duckingRules.length);
         int var11 = 0;

         for (int var13 = 0; var13 < this.duckingRules.length; var13++) {
            var11 += this.duckingRules[var13].serialize(var1, var4 + var11);
         }

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

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

   class="kw">public int computeSize() {
      int var1 = 47;
      if (this.id != null) {
         var1 += PacketIO.stringSize(this.id);
      }

      if (this.layers != null) {
         int var2 = 0;

         for (SoundEventLayer var6 : this.layers) {
            var2 += var6.computeSize();
         }

         var1 += VarInt.size(this.layers.length) + var2;
      }

      if (this.stateBindings != null) {
         int var7 = 0;

         for (StateBinding var11 : this.stateBindings) {
            var7 += var11.computeSize();
         }

         var1 += VarInt.size(this.stateBindings.length) + var7;
      }

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

      class="kw">return var1;
   }

   class="kw">public SoundEvent clone() {
      SoundEvent var1 = new SoundEvent();
      var1.id = this.id;
      var1.volume = this.volume;
      var1.pitch = this.pitch;
      var1.maxInstance = this.maxInstance;
      var1.preventSoundInterruption = this.preventSoundInterruption;
      var1.startAttenuationDistance = this.startAttenuationDistance;
      var1.maxDistance = this.maxDistance;
      var1.spatialBlend = this.spatialBlend;
      var1.layers = this.layers != null ? Arrays.stream(this.layers).map(var0 -> var0.clone()).toArray(SoundEventLayer[]::new) : null;
      var1.audioCategory = this.audioCategory;
      var1.stateBindings = this.stateBindings != null ? Arrays.stream(this.stateBindings).map(var0 -> var0.clone()).toArray(StateBinding[]::new) : null;
      var1.duckingRules = this.duckingRules != null
         ? Arrays.stream(this.duckingRules).map(var0 -> var0.clone()).toArray(AudioCategoryDuckingRule[]::new)
         : null;
      var1.bypassDucking = this.bypassDucking;
      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 SoundEvent var2)
            ? false
            : Objects.equals(this.id, var2.id)
               && this.volume == var2.volume
               && this.pitch == var2.pitch
               && this.maxInstance == var2.maxInstance
               && this.preventSoundInterruption == var2.preventSoundInterruption
               && this.startAttenuationDistance == var2.startAttenuationDistance
               && this.maxDistance == var2.maxDistance
               && this.spatialBlend == var2.spatialBlend
               && Arrays.equals(this.layers, var2.layers)
               && this.audioCategory == var2.audioCategory
               && Arrays.equals(this.stateBindings, var2.stateBindings)
               && Arrays.equals(this.duckingRules, var2.duckingRules)
               && this.bypassDucking == var2.bypassDucking;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Objects.hashCode(this.id);
      var1 = 31 * var1 + Float.hashCode(this.volume);
      var1 = 31 * var1 + Float.hashCode(this.pitch);
      var1 = 31 * var1 + Integer.hashCode(this.maxInstance);
      var1 = 31 * var1 + Boolean.hashCode(this.preventSoundInterruption);
      var1 = 31 * var1 + Float.hashCode(this.startAttenuationDistance);
      var1 = 31 * var1 + Float.hashCode(this.maxDistance);
      var1 = 31 * var1 + Float.hashCode(this.spatialBlend);
      var1 = 31 * var1 + Arrays.hashCode(this.layers);
      var1 = 31 * var1 + Integer.hashCode(this.audioCategory);
      var1 = 31 * var1 + Arrays.hashCode(this.stateBindings);
      var1 = 31 * var1 + Arrays.hashCode(this.duckingRules);
      class="kw">return 31 * var1 + Boolean.hashCode(this.bypassDucking);
   }
}