ParticleSpawner class

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

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

Поля (90)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
ParticleSpawner 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
int var10
long var11
int var13
int var14
Particle var16
var16
UVMotion var17
var17
ParticleSpawner var19
long 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
long var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
int var4
int var4
var4
var4
var4
byte var4
var4
var4
int var5
int var5
ReadCursor var5
int var5
int var6
String var6
var6
int var6
ParticleAttractor[] var7
int var7
long var8
ParticleAttractor[] var9
var9

Методы (131)

МодификаторыВозвратСигнатура
public ParticleSpawner cloneParticleSpawner clone()
public int computeSizeint computeSize()
for for(int var8 = 0; var8 < var5; var8++)
for for(int var15 = 0; var15 < var13; var15++)
for for(int var7 = 0; var7 < this.attractors.length; var7++)
abstract return getAttractorsreturn getAttractors(var0, 0)
static float getCameraOffsetfloat getCameraOffset(MemorySegment var0)
static float getCameraOffsetfloat getCameraOffset(MemorySegment var0, int var1)
abstract return getCameraOffsetreturn getCameraOffset(var0, 0)
abstract return getEmitOffsetreturn getEmitOffset(var0, 0)
abstract return getIdreturn getId(var0, 0)
abstract return getInitialVelocityreturn getInitialVelocity(var0, 0)
abstract return getIntersectionHighlightreturn getIntersectionHighlight(var0, 0)
static boolean getIsLowResboolean getIsLowRes(MemorySegment var0)
static boolean getIsLowResboolean getIsLowRes(MemorySegment var0, int var1)
abstract return getIsLowResreturn getIsLowRes(var0, 0)
static float getLifeSpanfloat getLifeSpan(MemorySegment var0)
static float getLifeSpanfloat getLifeSpan(MemorySegment var0, int var1)
abstract return getLifeSpanreturn getLifeSpan(var0, 0)
static float getLightInfluencefloat getLightInfluence(MemorySegment var0)
static float getLightInfluencefloat getLightInfluence(MemorySegment var0, int var1)
abstract return getLightInfluencereturn getLightInfluence(var0, 0)
static boolean getLinearFilteringboolean getLinearFiltering(MemorySegment var0)
static boolean getLinearFilteringboolean getLinearFiltering(MemorySegment var0, int var1)
abstract return getLinearFilteringreturn getLinearFiltering(var0, 0)
static int getMaxConcurrentParticlesint getMaxConcurrentParticles(MemorySegment var0)
static int getMaxConcurrentParticlesint getMaxConcurrentParticles(MemorySegment var0, int var1)
abstract return getMaxConcurrentParticlesreturn getMaxConcurrentParticles(var0, 0)
abstract return getParticlereturn getParticle(var0, 0)
abstract return getParticleCollisionreturn getParticleCollision(var0, 0)
abstract return getParticleLifeSpanreturn getParticleLifeSpan(var0, 0)
static boolean getParticleRotateWithSpawnerboolean getParticleRotateWithSpawner(MemorySegment var0)
static boolean getParticleRotateWithSpawnerboolean getParticleRotateWithSpawner(MemorySegment var0, int var1)
abstract return getParticleRotateWithSpawnerreturn getParticleRotateWithSpawner(var0, 0)
static ParticleRotationInfluence getParticleRotationInfluenceParticleRotationInfluence getParticleRotationInfluence(MemorySegment var0)
static ParticleRotationInfluence getParticleRotationInfluenceParticleRotationInfluence getParticleRotationInfluence(MemorySegment var0, int var1)
abstract return getParticleRotationInfluencereturn getParticleRotationInfluence(var0, 0)
static FXRenderMode getRenderModeFXRenderMode getRenderMode(MemorySegment var0)
static FXRenderMode getRenderModeFXRenderMode getRenderMode(MemorySegment var0, int var1)
abstract return getRenderModereturn getRenderMode(var0, 0)
static EmitShape getShapeEmitShape getShape(MemorySegment var0)
static EmitShape getShapeEmitShape getShape(MemorySegment var0, int var1)
abstract return getShapereturn getShape(var0, 0)
static boolean getSpawnBurstboolean getSpawnBurst(MemorySegment var0)
static boolean getSpawnBurstboolean getSpawnBurst(MemorySegment var0, int var1)
abstract return getSpawnBurstreturn getSpawnBurst(var0, 0)
abstract return getSpawnRatereturn getSpawnRate(var0, 0)
abstract return getTotalParticlesreturn getTotalParticles(var0, 0)
static float getTrailSpawnerPositionMultiplierfloat getTrailSpawnerPositionMultiplier(MemorySegment var0)
static float getTrailSpawnerPositionMultiplierfloat getTrailSpawnerPositionMultiplier(MemorySegment var0, int var1)
abstract return getTrailSpawnerPositionMultiplierreturn getTrailSpawnerPositionMultiplier(var0, 0)
static float getTrailSpawnerRotationMultiplierfloat getTrailSpawnerRotationMultiplier(MemorySegment var0)
static float getTrailSpawnerRotationMultiplierfloat getTrailSpawnerRotationMultiplier(MemorySegment var0, int var1)
abstract return getTrailSpawnerRotationMultiplierreturn getTrailSpawnerRotationMultiplier(var0, 0)
static boolean getUseEmitDirectionboolean getUseEmitDirection(MemorySegment var0)
static boolean getUseEmitDirectionboolean getUseEmitDirection(MemorySegment var0, int var1)
abstract return getUseEmitDirectionreturn getUseEmitDirection(var0, 0)
abstract return getUvMotionreturn getUvMotion(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static float getVelocityStretchMultiplierfloat getVelocityStretchMultiplier(MemorySegment var0)
static float getVelocityStretchMultiplierfloat getVelocityStretchMultiplier(MemorySegment var0, int var1)
abstract return getVelocityStretchMultiplierreturn getVelocityStretchMultiplier(var0, 0)
abstract return getWaveDelayreturn getWaveDelay(var0, 0)
static boolean hasAttractorsboolean hasAttractors(MemorySegment var0, int var1)
static boolean hasEmitOffsetboolean hasEmitOffset(MemorySegment var0, int var1)
static boolean hasIdboolean hasId(MemorySegment var0, int var1)
static boolean hasInitialVelocityboolean hasInitialVelocity(MemorySegment var0, int var1)
static boolean hasIntersectionHighlightboolean hasIntersectionHighlight(MemorySegment var0, int var1)
static boolean hasParticleboolean hasParticle(MemorySegment var0, int var1)
static boolean hasParticleCollisionboolean hasParticleCollision(MemorySegment var0, int var1)
static boolean hasParticleLifeSpanboolean hasParticleLifeSpan(MemorySegment var0, int var1)
static boolean hasSpawnRateboolean hasSpawnRate(MemorySegment var0, int var1)
static boolean hasTotalParticlesboolean hasTotalParticles(MemorySegment var0, int var1)
static boolean hasUvMotionboolean hasUvMotion(MemorySegment var0, int var1)
static boolean hasWaveDelayboolean hasWaveDelay(MemorySegment var0, int var1)
if if(var1 < 0)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 != var2)
if if(var11 == -1L)
if if(var13 > 4096000)
if if(var2 != null)
if if(this.emitOffset != null)
if if(this.spawnRate != null)
if if(this.waveDelay != null)
if if(this.totalParticles != null)
if if(this.initialVelocity != null)
if if(this.particleCollision != null)
if if(this.particleLifeSpan != null)
if if(this.intersectionHighlight != null)
if if(this.id != null)
if if(this.particle != null)
if if(this.uvMotion != null)
if if(this.attractors != null)
if if(this.emitOffset != null)
if if(this.spawnRate != null)
if if(this.waveDelay != null)
if if(this.totalParticles != null)
if if(this.initialVelocity != null)
if if(this.particleRotateWithSpawner)
if if(this.isLowRes)
if if(this.particleCollision != null)
if if(this.particleLifeSpan != null)
if if(this.intersectionHighlight != null)
if if(this.id != null)
if if(this.particle != null)
if if(this.uvMotion != null)
if if(this.attractors != null)
if if(this.attractors.length > 4096000)
if if(this.id != null)
if if(this.particle != null)
if if(this.uvMotion != null)
if if(this.attractors != 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 + 130, var4, "Id")
abstract requireSlot requireSlot(var0, var1 + 130, -1, "Id")
abstract requireSlot requireSlot(var0, var1 + 134, var4, "Particle")
abstract requireSlot requireSlot(var0, var1 + 134, -1, "Particle")
abstract requireSlot requireSlot(var0, var1 + 138, var4, "UvMotion")
abstract requireSlot requireSlot(var0, var1 + 138, -1, "UvMotion")
abstract requireSlot requireSlot(var0, var1 + 142, var4, "Attractors")
abstract requireSlot requireSlot(var0, var1 + 142, -1, "Attractors")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static ParticleSpawner toObjectParticleSpawner toObject(MemorySegment var0)
static ParticleSpawner toObjectParticleSpawner toObject(MemorySegment var0, int var1)
static ParticleSpawner toObjectParticleSpawner 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 ParticleSpawner {
   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 = 130;
   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 = 146;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 651264347;
   @Nullable
   class="kw">public String id;
   @Nullable
   class="kw">public Particle particle;
   @Nonnull
   class="kw">public EmitShape shape = EmitShape.Sphere;
   @Nullable
   class="kw">public RangeVector3f emitOffset;
   class="kw">public float cameraOffset;
   class="kw">public boolean useEmitDirection;
   class="kw">public float lifeSpan;
   @Nullable
   class="kw">public Rangef spawnRate;
   class="kw">public boolean spawnBurst;
   @Nullable
   class="kw">public Rangef waveDelay;
   @Nullable
   class="kw">public Range totalParticles;
   class="kw">public int maxConcurrentParticles;
   @Nullable
   class="kw">public InitialVelocity initialVelocity;
   class="kw">public float velocityStretchMultiplier;
   @Nonnull
   class="kw">public ParticleRotationInfluence particleRotationInfluence = ParticleRotationInfluence.None;
   class="kw">public boolean particleRotateWithSpawner;
   class="kw">public boolean isLowRes;
   class="kw">public float trailSpawnerPositionMultiplier;
   class="kw">public float trailSpawnerRotationMultiplier;
   @Nullable
   class="kw">public ParticleCollision particleCollision;
   @Nonnull
   class="kw">public FXRenderMode renderMode = FXRenderMode.BlendLinear;
   class="kw">public float lightInfluence;
   class="kw">public boolean linearFiltering;
   @Nullable
   class="kw">public Rangef particleLifeSpan;
   @Nullable
   class="kw">public UVMotion uvMotion;
   @Nullable
   class="kw">public ParticleAttractor[] attractors;
   @Nullable
   class="kw">public IntersectionHighlight intersectionHighlight;

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

   class="kw">public ParticleSpawner(
      @Nullable String var1,
      @Nullable Particle var2,
      @Nonnull EmitShape var3,
      @Nullable RangeVector3f var4,
      float var5,
      boolean var6,
      float var7,
      @Nullable Rangef var8,
      boolean var9,
      @Nullable Rangef var10,
      @Nullable Range var11,
      int var12,
      @Nullable InitialVelocity var13,
      float var14,
      @Nonnull ParticleRotationInfluence var15,
      boolean var16,
      boolean var17,
      float var18,
      float var19,
      @Nullable ParticleCollision var20,
      @Nonnull FXRenderMode var21,
      float var22,
      boolean var23,
      @Nullable Rangef var24,
      @Nullable UVMotion var25,
      @Nullable ParticleAttractor[] var26,
      @Nullable IntersectionHighlight var27
   ) {
      this.id = var1;
      this.particle = var2;
      this.shape = var3;
      this.emitOffset = var4;
      this.cameraOffset = var5;
      this.useEmitDirection = var6;
      this.lifeSpan = var7;
      this.spawnRate = var8;
      this.spawnBurst = var9;
      this.waveDelay = var10;
      this.totalParticles = var11;
      this.maxConcurrentParticles = var12;
      this.initialVelocity = var13;
      this.velocityStretchMultiplier = var14;
      this.particleRotationInfluence = var15;
      this.particleRotateWithSpawner = var16;
      this.isLowRes = var17;
      this.trailSpawnerPositionMultiplier = var18;
      this.trailSpawnerRotationMultiplier = var19;
      this.particleCollision = var20;
      this.renderMode = var21;
      this.lightInfluence = var22;
      this.linearFiltering = var23;
      this.particleLifeSpan = var24;
      this.uvMotion = var25;
      this.attractors = var26;
      this.intersectionHighlight = var27;
   }

   class="kw">public ParticleSpawner(@Nonnull ParticleSpawner var1) {
      this.id = var1.id;
      this.particle = var1.particle;
      this.shape = var1.shape;
      this.emitOffset = var1.emitOffset;
      this.cameraOffset = var1.cameraOffset;
      this.useEmitDirection = var1.useEmitDirection;
      this.lifeSpan = var1.lifeSpan;
      this.spawnRate = var1.spawnRate;
      this.spawnBurst = var1.spawnBurst;
      this.waveDelay = var1.waveDelay;
      this.totalParticles = var1.totalParticles;
      this.maxConcurrentParticles = var1.maxConcurrentParticles;
      this.initialVelocity = var1.initialVelocity;
      this.velocityStretchMultiplier = var1.velocityStretchMultiplier;
      this.particleRotationInfluence = var1.particleRotationInfluence;
      this.particleRotateWithSpawner = var1.particleRotateWithSpawner;
      this.isLowRes = var1.isLowRes;
      this.trailSpawnerPositionMultiplier = var1.trailSpawnerPositionMultiplier;
      this.trailSpawnerRotationMultiplier = var1.trailSpawnerRotationMultiplier;
      this.particleCollision = var1.particleCollision;
      this.renderMode = var1.renderMode;
      this.lightInfluence = var1.lightInfluence;
      this.linearFiltering = var1.linearFiltering;
      this.particleLifeSpan = var1.particleLifeSpan;
      this.uvMotion = var1.uvMotion;
      this.attractors = var1.attractors;
      this.intersectionHighlight = var1.intersectionHighlight;
   }

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

      long var2 = var1 + 146L;
      if (var2 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("ParticleSpawner", (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, 130, 146, "Id"), 4096000) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static Particle getParticle(MemorySegment var0, int var1) {
      class="kw">return hasParticle(var0, var1) ? Particle.toObject(var0, var1 + getValidatedOffset(var0, var1, 134, 146, "Particle")) : null;
   }

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

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

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

   @Nullable
   class="kw">public class="kw">static RangeVector3f getEmitOffset(MemorySegment var0, int var1) {
      class="kw">return hasEmitOffset(var0, var1) ? RangeVector3f.toObject(var0, var1 + 3) : null;
   }

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

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

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

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

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

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

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static Range getTotalParticles(MemorySegment var0, int var1) {
      class="kw">return hasTotalParticles(var0, var1) ? Range.toObject(var0, var1 + 54) : null;
   }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static ParticleCollision getParticleCollision(MemorySegment var0, int var1) {
      class="kw">return hasParticleCollision(var0, var1) ? ParticleCollision.toObject(var0, var1 + 105) : null;
   }

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

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

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static UVMotion getUvMotion(MemorySegment var0, int var1) {
      class="kw">return hasUvMotion(var0, var1) ? UVMotion.toObject(var0, var1 + getValidatedOffset(var0, var1, 138, 146, "UvMotion")) : null;
   }

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

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

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

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

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

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

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

      class="kw">return var7;
   }

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

   @Nullable
   class="kw">public class="kw">static IntersectionHighlight getIntersectionHighlight(MemorySegment var0, int var1) {
      class="kw">return hasIntersectionHighlight(var0, var1) ? IntersectionHighlight.toObject(var0, var1 + 122) : null;
   }

   class="kw">public class="kw">static boolean hasEmitOffset(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 hasSpawnRate(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 hasWaveDelay(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 hasTotalParticles(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 hasInitialVelocity(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 hasParticleCollision(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 hasParticleLifeSpan(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 hasIntersectionHighlight(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 hasId(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 hasParticle(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 hasUvMotion(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 hasAttractors(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      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 ParticleSpawner toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

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

   class="kw">public class="kw">static ParticleSpawner toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2) {
      requireBounds(var0, var1);
      int var3 = var1 + 146;
      int var4 = 0;
      ReadCursor var5 = var2 != null ? var2 : new ReadCursor();
      String var6 = null;
      if (hasId(var0, var1)) {
         requireSlot(var0, var1 + 130, 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 + 130, -1, "Id");
      }

      Particle var16 = null;
      if (hasParticle(var0, var1)) {
         requireSlot(var0, var1 + 134, var4, "Particle");
         var16 = Particle.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 134, -1, "Particle");
      }

      UVMotion var17 = null;
      if (hasUvMotion(var0, var1)) {
         requireSlot(var0, var1 + 138, var4, "UvMotion");
         var17 = UVMotion.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 138, -1, "UvMotion");
      }

      ParticleAttractor[] var9 = null;
      if (hasAttractors(var0, var1)) {
         requireSlot(var0, var1 + 142, var4, "Attractors");
         int var10 = var3 + var4;
         long var11 = VarInt.getWithLength(var0, var10);
         if (var11 == -1L) {
            throw ProtocolException.invalidVarInt("Attractors");
         }

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

         int var14 = (int)(var11 >>> 32);
         if (var10 + var14 + var13 * 85L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Attractors", (int)Math.min(var10 + var14 + var13 * 85L, 2147483647L), (int)var0.byteSize());
         }

         var10 += var14;
         var9 = new ParticleAttractor[var13];

         for (int var15 = 0; var15 < var13; var15++) {
            var9[var15] = ParticleAttractor.toObject(var0, var10 + var15 * 85);
         }

         var4 = var10 + var13 * 85 - var3;
      } else {
         requireSlot(var0, var1 + 142, -1, "Attractors");
      }

      ParticleSpawner var19 = new ParticleSpawner(
         var6,
         var16,
         EmitShape.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 2)),
         hasEmitOffset(var0, var1) ? RangeVector3f.toObject(var0, var1 + 3) : null,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 28), "CameraOffset"),
         var0.get(PacketIO.PROTO_BOOL, var1 + 32),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 33), "LifeSpan"),
         hasSpawnRate(var0, var1) ? Rangef.toObject(var0, var1 + 37) : null,
         var0.get(PacketIO.PROTO_BOOL, var1 + 45),
         hasWaveDelay(var0, var1) ? Rangef.toObject(var0, var1 + 46) : null,
         hasTotalParticles(var0, var1) ? Range.toObject(var0, var1 + 54) : null,
         var0.get(PacketIO.PROTO_INT, var1 + 62),
         hasInitialVelocity(var0, var1) ? InitialVelocity.toObject(var0, var1 + 66) : null,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 91), "VelocityStretchMultiplier"),
         ParticleRotationInfluence.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 95)),
         (var0.get(PacketIO.PROTO_BYTE, var1 + 96) & 1) != 0,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 96) & 2) != 0,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 97), "TrailSpawnerPositionMultiplier"),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 101), "TrailSpawnerRotationMultiplier"),
         hasParticleCollision(var0, var1) ? ParticleCollision.toObject(var0, var1 + 105) : null,
         FXRenderMode.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 108)),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 109), "LightInfluence"),
         var0.get(PacketIO.PROTO_BOOL, var1 + 113),
         hasParticleLifeSpan(var0, var1) ? Rangef.toObject(var0, var1 + 114) : null,
         var17,
         var9,
         hasIntersectionHighlight(var0, var1) ? IntersectionHighlight.toObject(var0, var1 + 122) : null
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var19;
   }

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

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

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

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

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

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

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

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

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

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

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

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 1, var3);
      var1.set(PacketIO.PROTO_BYTE, var2 + 2, (byte)this.shape.getValue());
      if (this.emitOffset != null) {
         this.emitOffset.serialize(var1, var2 + 3);
      } else {
         var1.asSlice(var2 + 3, 25L).fill((byte)0);
      }

      PacketIO.requireFinite(this.cameraOffset, "CameraOffset");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 28, this.cameraOffset);
      var1.set(PacketIO.PROTO_BOOL, var2 + 32, this.useEmitDirection);
      PacketIO.requireFinite(this.lifeSpan, "LifeSpan");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 33, this.lifeSpan);
      if (this.spawnRate != null) {
         this.spawnRate.serialize(var1, var2 + 37);
      } else {
         var1.asSlice(var2 + 37, 8L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_BOOL, var2 + 45, this.spawnBurst);
      if (this.waveDelay != null) {
         this.waveDelay.serialize(var1, var2 + 46);
      } else {
         var1.asSlice(var2 + 46, 8L).fill((byte)0);
      }

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

      var1.set(PacketIO.PROTO_INT, var2 + 62, this.maxConcurrentParticles);
      if (this.initialVelocity != null) {
         this.initialVelocity.serialize(var1, var2 + 66);
      } else {
         var1.asSlice(var2 + 66, 25L).fill((byte)0);
      }

      PacketIO.requireFinite(this.velocityStretchMultiplier, "VelocityStretchMultiplier");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 91, this.velocityStretchMultiplier);
      var1.set(PacketIO.PROTO_BYTE, var2 + 95, (byte)this.particleRotationInfluence.getValue());
      byte var4 = 0;
      if (this.particleRotateWithSpawner) {
         var4 = (byte)(var4 | 1);
      }

      if (this.isLowRes) {
         var4 = (byte)(var4 | 2);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 96 + 0, var4);
      PacketIO.requireFinite(this.trailSpawnerPositionMultiplier, "TrailSpawnerPositionMultiplier");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 97, this.trailSpawnerPositionMultiplier);
      PacketIO.requireFinite(this.trailSpawnerRotationMultiplier, "TrailSpawnerRotationMultiplier");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 101, this.trailSpawnerRotationMultiplier);
      if (this.particleCollision != null) {
         this.particleCollision.serialize(var1, var2 + 105);
      } else {
         var1.asSlice(var2 + 105, 3L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 108, (byte)this.renderMode.getValue());
      PacketIO.requireFinite(this.lightInfluence, "LightInfluence");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 109, this.lightInfluence);
      var1.set(PacketIO.PROTO_BOOL, var2 + 113, this.linearFiltering);
      if (this.particleLifeSpan != null) {
         this.particleLifeSpan.serialize(var1, var2 + 114);
      } else {
         var1.asSlice(var2 + 114, 8L).fill((byte)0);
      }

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

      int var5 = var2 + 146;
      if (this.id != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 130, var5 - var2 - 146);
         var5 += PacketIO.writeVarString(var1, var5, this.id, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 130, -1);
      }

      if (this.particle != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 134, var5 - var2 - 146);
         var5 += this.particle.serialize(var1, var5);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 134, -1);
      }

      if (this.uvMotion != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 138, var5 - var2 - 146);
         var5 += this.uvMotion.serialize(var1, var5);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 138, -1);
      }

      if (this.attractors != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 142, var5 - var2 - 146);
         if (this.attractors.length > 4096000) {
            throw ProtocolException.arrayTooLong("Attractors", this.attractors.length, 4096000);
         }

         var5 += VarInt.set(var1, var5, this.attractors.length);
         int var6 = 0;

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

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

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

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

      if (this.particle != null) {
         var1 += this.particle.computeSize();
      }

      if (this.uvMotion != null) {
         var1 += this.uvMotion.computeSize();
      }

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

      class="kw">return var1;
   }

   class="kw">public ParticleSpawner clone() {
      ParticleSpawner var1 = new ParticleSpawner();
      var1.id = this.id;
      var1.particle = this.particle != null ? this.particle.clone() : null;
      var1.shape = this.shape;
      var1.emitOffset = this.emitOffset != null ? this.emitOffset.clone() : null;
      var1.cameraOffset = this.cameraOffset;
      var1.useEmitDirection = this.useEmitDirection;
      var1.lifeSpan = this.lifeSpan;
      var1.spawnRate = this.spawnRate != null ? this.spawnRate.clone() : null;
      var1.spawnBurst = this.spawnBurst;
      var1.waveDelay = this.waveDelay != null ? this.waveDelay.clone() : null;
      var1.totalParticles = this.totalParticles != null ? this.totalParticles.clone() : null;
      var1.maxConcurrentParticles = this.maxConcurrentParticles;
      var1.initialVelocity = this.initialVelocity != null ? this.initialVelocity.clone() : null;
      var1.velocityStretchMultiplier = this.velocityStretchMultiplier;
      var1.particleRotationInfluence = this.particleRotationInfluence;
      var1.particleRotateWithSpawner = this.particleRotateWithSpawner;
      var1.isLowRes = this.isLowRes;
      var1.trailSpawnerPositionMultiplier = this.trailSpawnerPositionMultiplier;
      var1.trailSpawnerRotationMultiplier = this.trailSpawnerRotationMultiplier;
      var1.particleCollision = this.particleCollision != null ? this.particleCollision.clone() : null;
      var1.renderMode = this.renderMode;
      var1.lightInfluence = this.lightInfluence;
      var1.linearFiltering = this.linearFiltering;
      var1.particleLifeSpan = this.particleLifeSpan != null ? this.particleLifeSpan.clone() : null;
      var1.uvMotion = this.uvMotion != null ? this.uvMotion.clone() : null;
      var1.attractors = this.attractors != null ? Arrays.stream(this.attractors).map(var0 -> var0.clone()).toArray(ParticleAttractor[]::new) : null;
      var1.intersectionHighlight = this.intersectionHighlight != null ? this.intersectionHighlight.clone() : null;
      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 ParticleSpawner var2)
            ? false
            : Objects.equals(this.id, var2.id)
               && Objects.equals(this.particle, var2.particle)
               && Objects.equals(this.shape, var2.shape)
               && Objects.equals(this.emitOffset, var2.emitOffset)
               && this.cameraOffset == var2.cameraOffset
               && this.useEmitDirection == var2.useEmitDirection
               && this.lifeSpan == var2.lifeSpan
               && Objects.equals(this.spawnRate, var2.spawnRate)
               && this.spawnBurst == var2.spawnBurst
               && Objects.equals(this.waveDelay, var2.waveDelay)
               && Objects.equals(this.totalParticles, var2.totalParticles)
               && this.maxConcurrentParticles == var2.maxConcurrentParticles
               && Objects.equals(this.initialVelocity, var2.initialVelocity)
               && this.velocityStretchMultiplier == var2.velocityStretchMultiplier
               && Objects.equals(this.particleRotationInfluence, var2.particleRotationInfluence)
               && this.particleRotateWithSpawner == var2.particleRotateWithSpawner
               && this.isLowRes == var2.isLowRes
               && this.trailSpawnerPositionMultiplier == var2.trailSpawnerPositionMultiplier
               && this.trailSpawnerRotationMultiplier == var2.trailSpawnerRotationMultiplier
               && Objects.equals(this.particleCollision, var2.particleCollision)
               && Objects.equals(this.renderMode, var2.renderMode)
               && this.lightInfluence == var2.lightInfluence
               && this.linearFiltering == var2.linearFiltering
               && Objects.equals(this.particleLifeSpan, var2.particleLifeSpan)
               && Objects.equals(this.uvMotion, var2.uvMotion)
               && Arrays.equals(this.attractors, var2.attractors)
               && Objects.equals(this.intersectionHighlight, var2.intersectionHighlight);
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Objects.hashCode(this.id);
      var1 = 31 * var1 + Objects.hashCode(this.particle);
      var1 = 31 * var1 + Objects.hashCode(this.shape);
      var1 = 31 * var1 + Objects.hashCode(this.emitOffset);
      var1 = 31 * var1 + Float.hashCode(this.cameraOffset);
      var1 = 31 * var1 + Boolean.hashCode(this.useEmitDirection);
      var1 = 31 * var1 + Float.hashCode(this.lifeSpan);
      var1 = 31 * var1 + Objects.hashCode(this.spawnRate);
      var1 = 31 * var1 + Boolean.hashCode(this.spawnBurst);
      var1 = 31 * var1 + Objects.hashCode(this.waveDelay);
      var1 = 31 * var1 + Objects.hashCode(this.totalParticles);
      var1 = 31 * var1 + Integer.hashCode(this.maxConcurrentParticles);
      var1 = 31 * var1 + Objects.hashCode(this.initialVelocity);
      var1 = 31 * var1 + Float.hashCode(this.velocityStretchMultiplier);
      var1 = 31 * var1 + Objects.hashCode(this.particleRotationInfluence);
      var1 = 31 * var1 + Boolean.hashCode(this.particleRotateWithSpawner);
      var1 = 31 * var1 + Boolean.hashCode(this.isLowRes);
      var1 = 31 * var1 + Float.hashCode(this.trailSpawnerPositionMultiplier);
      var1 = 31 * var1 + Float.hashCode(this.trailSpawnerRotationMultiplier);
      var1 = 31 * var1 + Objects.hashCode(this.particleCollision);
      var1 = 31 * var1 + Objects.hashCode(this.renderMode);
      var1 = 31 * var1 + Float.hashCode(this.lightInfluence);
      var1 = 31 * var1 + Boolean.hashCode(this.linearFiltering);
      var1 = 31 * var1 + Objects.hashCode(this.particleLifeSpan);
      var1 = 31 * var1 + Objects.hashCode(this.uvMotion);
      var1 = 31 * var1 + Arrays.hashCode(this.attractors);
      class="kw">return 31 * var1 + Objects.hashCode(this.intersectionHighlight);
   }
}