InteractionSyncData class

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

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

Поля (82)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
InteractionSyncData 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
int var10
InteractionType var11
int var12
SelectedHitEntity[] var15
var15
int var16
InteractionSyncData var18
int var19
long var2
int var2
int var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
int var20
long var3
long var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
int var4
int var4
var4
var4
int var4
int var5
int var5
int var5
Map var5
var5
Map var6
int var6
int var6
SelectedHitEntity[] var7
long var7
InteractionType var8
long var8
int var9
int var9

Методы (120)

МодификаторыВозвратСигнатура
public InteractionSyncData cloneInteractionSyncData clone()
public int computeSizeint computeSize()
for for(int var7 = 0; var7 < var5; var7++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var10 = 0; var10 < var9; var10++)
for for(int var21 = 0; var21 < var19; var21++)
for for(int var11 = 0; var11 < this.hitEntities.length; var11++)
static ApplyForceState getApplyForceStateApplyForceState getApplyForceState(MemorySegment var0)
static ApplyForceState getApplyForceStateApplyForceState getApplyForceState(MemorySegment var0, int var1)
abstract return getApplyForceStatereturn getApplyForceState(var0, 0)
abstract return getAttackerPosreturn getAttackerPos(var0, 0)
abstract return getAttackerRotreturn getAttackerRot(var0, 0)
static BlockFace getBlockFaceBlockFace getBlockFace(MemorySegment var0)
static BlockFace getBlockFaceBlockFace getBlockFace(MemorySegment var0, int var1)
abstract return getBlockFacereturn getBlockFace(var0, 0)
abstract return getBlockPositionreturn getBlockPosition(var0, 0)
abstract return getBlockRotationreturn getBlockRotation(var0, 0)
static int getChainingIndexint getChainingIndex(MemorySegment var0)
static int getChainingIndexint getChainingIndex(MemorySegment var0, int var1)
abstract return getChainingIndexreturn getChainingIndex(var0, 0)
static float getChargeValuefloat getChargeValue(MemorySegment var0)
static float getChargeValuefloat getChargeValue(MemorySegment var0, int var1)
abstract return getChargeValuereturn getChargeValue(var0, 0)
static int getEnteredRootInteractionint getEnteredRootInteraction(MemorySegment var0)
static int getEnteredRootInteractionint getEnteredRootInteraction(MemorySegment var0, int var1)
abstract return getEnteredRootInteractionreturn getEnteredRootInteraction(var0, 0)
static int getEntityIdint getEntityId(MemorySegment var0)
static int getEntityIdint getEntityId(MemorySegment var0, int var1)
abstract return getEntityIdreturn getEntityId(var0, 0)
static int getFlagIndexint getFlagIndex(MemorySegment var0)
static int getFlagIndexint getFlagIndex(MemorySegment var0, int var1)
abstract return getFlagIndexreturn getFlagIndex(var0, 0)
abstract return getForkCountsreturn getForkCounts(var0, 0)
abstract return getGeneratedUUIDreturn getGeneratedUUID(var0, 0)
abstract return getHitEntitiesreturn getHitEntities(var0, 0)
static MovementDirection getMovementDirectionMovementDirection getMovementDirection(MemorySegment var0)
static MovementDirection getMovementDirectionMovementDirection getMovementDirection(MemorySegment var0, int var1)
abstract return getMovementDirectionreturn getMovementDirection(var0, 0)
static int getNextLabelint getNextLabel(MemorySegment var0)
static int getNextLabelint getNextLabel(MemorySegment var0, int var1)
abstract return getNextLabelreturn getNextLabel(var0, 0)
static int getOperationCounterint getOperationCounter(MemorySegment var0)
static int getOperationCounterint getOperationCounter(MemorySegment var0, int var1)
abstract return getOperationCounterreturn getOperationCounter(var0, 0)
static int getPlacedBlockIdint getPlacedBlockId(MemorySegment var0)
static int getPlacedBlockIdint getPlacedBlockId(MemorySegment var0, int var1)
abstract return getPlacedBlockIdreturn getPlacedBlockId(var0, 0)
static float getProgressfloat getProgress(MemorySegment var0)
static float getProgressfloat getProgress(MemorySegment var0, int var1)
abstract return getProgressreturn getProgress(var0, 0)
static float getRaycastDistancefloat getRaycastDistance(MemorySegment var0)
static float getRaycastDistancefloat getRaycastDistance(MemorySegment var0, int var1)
abstract return getRaycastDistancereturn getRaycastDistance(var0, 0)
abstract return getRaycastHitreturn getRaycastHit(var0, 0)
abstract return getRaycastNormalreturn getRaycastNormal(var0, 0)
static int getRootInteractionint getRootInteraction(MemorySegment var0)
static int getRootInteractionint getRootInteraction(MemorySegment var0, int var1)
abstract return getRootInteractionreturn getRootInteraction(var0, 0)
static InteractionState getStateInteractionState getState(MemorySegment var0)
static InteractionState getStateInteractionState getState(MemorySegment var0, int var1)
abstract return getStatereturn getState(var0, 0)
static int getTotalForksint getTotalForks(MemorySegment var0)
static int getTotalForksint getTotalForks(MemorySegment var0, int var1)
abstract return getTotalForksreturn getTotalForks(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static boolean hasAttackerPosboolean hasAttackerPos(MemorySegment var0, int var1)
static boolean hasAttackerRotboolean hasAttackerRot(MemorySegment var0, int var1)
static boolean hasBlockPositionboolean hasBlockPosition(MemorySegment var0, int var1)
static boolean hasBlockRotationboolean hasBlockRotation(MemorySegment var0, int var1)
static boolean hasForkCountsboolean hasForkCounts(MemorySegment var0, int var1)
static boolean hasGeneratedUUIDboolean hasGeneratedUUID(MemorySegment var0, int var1)
static boolean hasHitEntitiesboolean hasHitEntities(MemorySegment var0, int var1)
static boolean hasRaycastHitboolean hasRaycastHit(MemorySegment var0, int var1)
static boolean hasRaycastNormalboolean hasRaycastNormal(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(var4 != var2)
if if(var7 == -1L)
if if(var9 > 4096000)
if if(var8 == -1L)
if if(var19 > 4096000)
if if(var2 != null)
if if(this.blockPosition != null)
if if(this.blockRotation != null)
if if(this.attackerPos != null)
if if(this.attackerRot != null)
if if(this.raycastHit != null)
if if(this.raycastNormal != null)
if if(this.generatedUUID != null)
if if(this.forkCounts != null)
if if(this.hitEntities != null)
if if(this.blockPosition != null)
if if(this.blockRotation != null)
if if(this.attackerPos != null)
if if(this.attackerRot != null)
if if(this.raycastHit != null)
if if(this.raycastNormal != null)
if if(this.generatedUUID != null)
if if(this.forkCounts != null)
if if(this.hitEntities != null)
if if(this.hitEntities.length > 4096000)
if if(this.forkCounts != null)
if if(this.hitEntities != 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 + 157, var4, "ForkCounts")
abstract requireSlot requireSlot(var0, var1 + 157, -1, "ForkCounts")
abstract requireSlot requireSlot(var0, var1 + 161, var4, "HitEntities")
abstract requireSlot requireSlot(var0, var1 + 161, -1, "HitEntities")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static InteractionSyncData toObjectInteractionSyncData toObject(MemorySegment var0)
static InteractionSyncData toObjectInteractionSyncData toObject(MemorySegment var0, int var1)
static InteractionSyncData toObjectInteractionSyncData 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.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3fc;

class="kw">public class InteractionSyncData {
   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 = 157;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 2;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 165;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 237568175;
   @Nonnull
   class="kw">public InteractionState state = InteractionState.Finished;
   class="kw">public float progress;
   class="kw">public int operationCounter;
   class="kw">public int rootInteraction;
   class="kw">public int totalForks;
   class="kw">public int entityId;
   class="kw">public int enteredRootInteraction = Integer.MIN_VALUE;
   @Nullable
   class="kw">public BlockPosition blockPosition;
   @Nonnull
   class="kw">public BlockFace blockFace = BlockFace.None;
   @Nullable
   class="kw">public BlockRotation blockRotation;
   class="kw">public int placedBlockId = Integer.MIN_VALUE;
   class="kw">public float chargeValue = -1.0F;
   @Nullable
   class="kw">public Map<InteractionType, Integer> forkCounts;
   class="kw">public int chainingIndex = -1;
   class="kw">public int flagIndex = -1;
   @Nullable
   class="kw">public SelectedHitEntity[] hitEntities;
   @Nullable
   class="kw">public Position attackerPos;
   @Nullable
   class="kw">public Direction attackerRot;
   @Nullable
   class="kw">public Position raycastHit;
   class="kw">public float raycastDistance;
   @Nullable
   class="kw">public Vector3fc raycastNormal;
   @Nonnull
   class="kw">public MovementDirection movementDirection = MovementDirection.None;
   @Nonnull
   class="kw">public ApplyForceState applyForceState = ApplyForceState.Waiting;
   class="kw">public int nextLabel;
   @Nullable
   class="kw">public UUID generatedUUID = null;

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

   class="kw">public InteractionSyncData(
      @Nonnull InteractionState var1,
      float var2,
      int var3,
      int var4,
      int var5,
      int var6,
      int var7,
      @Nullable BlockPosition var8,
      @Nonnull BlockFace var9,
      @Nullable BlockRotation var10,
      int var11,
      float var12,
      @Nullable Map<InteractionType, Integer> var13,
      int var14,
      int var15,
      @Nullable SelectedHitEntity[] var16,
      @Nullable Position var17,
      @Nullable Direction var18,
      @Nullable Position var19,
      float var20,
      @Nullable Vector3fc var21,
      @Nonnull MovementDirection var22,
      @Nonnull ApplyForceState var23,
      int var24,
      @Nullable UUID var25
   ) {
      this.state = var1;
      this.progress = var2;
      this.operationCounter = var3;
      this.rootInteraction = var4;
      this.totalForks = var5;
      this.entityId = var6;
      this.enteredRootInteraction = var7;
      this.blockPosition = var8;
      this.blockFace = var9;
      this.blockRotation = var10;
      this.placedBlockId = var11;
      this.chargeValue = var12;
      this.forkCounts = var13;
      this.chainingIndex = var14;
      this.flagIndex = var15;
      this.hitEntities = var16;
      this.attackerPos = var17;
      this.attackerRot = var18;
      this.raycastHit = var19;
      this.raycastDistance = var20;
      this.raycastNormal = var21;
      this.movementDirection = var22;
      this.applyForceState = var23;
      this.nextLabel = var24;
      this.generatedUUID = var25;
   }

   class="kw">public InteractionSyncData(@Nonnull InteractionSyncData var1) {
      this.state = var1.state;
      this.progress = var1.progress;
      this.operationCounter = var1.operationCounter;
      this.rootInteraction = var1.rootInteraction;
      this.totalForks = var1.totalForks;
      this.entityId = var1.entityId;
      this.enteredRootInteraction = var1.enteredRootInteraction;
      this.blockPosition = var1.blockPosition;
      this.blockFace = var1.blockFace;
      this.blockRotation = var1.blockRotation;
      this.placedBlockId = var1.placedBlockId;
      this.chargeValue = var1.chargeValue;
      this.forkCounts = var1.forkCounts;
      this.chainingIndex = var1.chainingIndex;
      this.flagIndex = var1.flagIndex;
      this.hitEntities = var1.hitEntities;
      this.attackerPos = var1.attackerPos;
      this.attackerRot = var1.attackerRot;
      this.raycastHit = var1.raycastHit;
      this.raycastDistance = var1.raycastDistance;
      this.raycastNormal = var1.raycastNormal;
      this.movementDirection = var1.movementDirection;
      this.applyForceState = var1.applyForceState;
      this.nextLabel = var1.nextLabel;
      this.generatedUUID = var1.generatedUUID;
   }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static BlockPosition getBlockPosition(MemorySegment var0, int var1) {
      class="kw">return hasBlockPosition(var0, var1) ? BlockPosition.toObject(var0, var1 + 27) : null;
   }

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

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

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

   @Nullable
   class="kw">public class="kw">static BlockRotation getBlockRotation(MemorySegment var0, int var1) {
      class="kw">return hasBlockRotation(var0, var1) ? BlockRotation.toObject(var0, var1 + 40) : null;
   }

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

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

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

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

   @Nullable
   class="kw">public class="kw">static Map<InteractionType, Integer> getForkCounts(MemorySegment var0) {
      class="kw">return getForkCounts(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Map<InteractionType, Integer> getForkCounts(MemorySegment var0, int var1) {
      if (!hasForkCounts(var0, var1)) {
         class="kw">return null;
      }

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

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

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

      Map var6 = new HashMap<>(var5);

      for (int var7 = 0; var7 < var5; var7++) {
         InteractionType var8 = InteractionType.fromValue(var0.get(PacketIO.PROTO_BYTE, var2));
         int var9 = var0.get(PacketIO.PROTO_INT, ++var2);
         var2 += 4;
         if (var6.put(var8, var9) != null) {
            throw ProtocolException.duplicateKey("ForkCounts", var8);
         }
      }

      class="kw">return var6;
   }

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

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

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

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

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

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

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

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

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

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

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

      class="kw">return var7;
   }

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

   @Nullable
   class="kw">public class="kw">static Position getAttackerPos(MemorySegment var0, int var1) {
      class="kw">return hasAttackerPos(var0, var1) ? Position.toObject(var0, var1 + 59) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static Direction getAttackerRot(MemorySegment var0, int var1) {
      class="kw">return hasAttackerRot(var0, var1) ? Direction.toObject(var0, var1 + 83) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static Position getRaycastHit(MemorySegment var0, int var1) {
      class="kw">return hasRaycastHit(var0, var1) ? Position.toObject(var0, var1 + 95) : null;
   }

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

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

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

   @Nullable
   class="kw">public class="kw">static Vector3fc getRaycastNormal(MemorySegment var0, int var1) {
      class="kw">return hasRaycastNormal(var0, var1) ? PacketIO.requireFinite(PacketIO.readVector3f(var0, var1 + 123), "RaycastNormal") : null;
   }

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static UUID getGeneratedUUID(MemorySegment var0, int var1) {
      class="kw">return hasGeneratedUUID(var0, var1) ? PacketIO.readUUID(var0, var1 + 141) : null;
   }

   class="kw">public class="kw">static boolean hasBlockPosition(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 hasBlockRotation(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 hasAttackerPos(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 hasAttackerRot(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 hasRaycastHit(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 hasRaycastNormal(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 hasGeneratedUUID(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 hasForkCounts(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 hasHitEntities(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 1) != 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 InteractionSyncData toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

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

   class="kw">public class="kw">static InteractionSyncData toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2) {
      requireBounds(var0, var1);
      int var3 = var1 + 165;
      int var4 = 0;
      Map var5 = null;
      if (hasForkCounts(var0, var1)) {
         requireSlot(var0, var1 + 157, var4, "ForkCounts");
         int var6 = var3 + var4;
         long var7 = VarInt.getWithLength(var0, var6);
         if (var7 == -1L) {
            throw ProtocolException.invalidVarInt("ForkCounts");
         }

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

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

         var5 = new HashMap<>(var9);

         for (int var10 = 0; var10 < var9; var10++) {
            InteractionType var11 = InteractionType.fromValue(var0.get(PacketIO.PROTO_BYTE, var6));
            int var12 = var0.get(PacketIO.PROTO_INT, ++var6);
            var6 += 4;
            if (var5.put(var11, var12) != null) {
               throw ProtocolException.duplicateKey("ForkCounts", var11);
            }
         }

         var4 = var6 - var3;
      } else {
         requireSlot(var0, var1 + 157, -1, "ForkCounts");
      }

      SelectedHitEntity[] var15 = null;
      if (hasHitEntities(var0, var1)) {
         requireSlot(var0, var1 + 161, var4, "HitEntities");
         int var16 = var3 + var4;
         long var8 = VarInt.getWithLength(var0, var16);
         if (var8 == -1L) {
            throw ProtocolException.invalidVarInt("HitEntities");
         }

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

         int var20 = (int)(var8 >>> 32);
         if (var16 + var20 + var19 * 53L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("HitEntities", (int)Math.min(var16 + var20 + var19 * 53L, 2147483647L), (int)var0.byteSize());
         }

         var16 += var20;
         var15 = new SelectedHitEntity[var19];

         for (int var21 = 0; var21 < var19; var21++) {
            var15[var21] = SelectedHitEntity.toObject(var0, var16 + var21 * 53);
         }

         var4 = var16 + var19 * 53 - var3;
      } else {
         requireSlot(var0, var1 + 161, -1, "HitEntities");
      }

      InteractionSyncData var18 = new InteractionSyncData(
         InteractionState.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 2)),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 3), "Progress"),
         var0.get(PacketIO.PROTO_INT, var1 + 7),
         var0.get(PacketIO.PROTO_INT, var1 + 11),
         var0.get(PacketIO.PROTO_INT, var1 + 15),
         var0.get(PacketIO.PROTO_INT, var1 + 19),
         var0.get(PacketIO.PROTO_INT, var1 + 23),
         hasBlockPosition(var0, var1) ? BlockPosition.toObject(var0, var1 + 27) : null,
         BlockFace.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 39)),
         hasBlockRotation(var0, var1) ? BlockRotation.toObject(var0, var1 + 40) : null,
         var0.get(PacketIO.PROTO_INT, var1 + 43),
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 47), "ChargeValue"),
         var5,
         var0.get(PacketIO.PROTO_INT, var1 + 51),
         var0.get(PacketIO.PROTO_INT, var1 + 55),
         var15,
         hasAttackerPos(var0, var1) ? Position.toObject(var0, var1 + 59) : null,
         hasAttackerRot(var0, var1) ? Direction.toObject(var0, var1 + 83) : null,
         hasRaycastHit(var0, var1) ? Position.toObject(var0, var1 + 95) : null,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 119), "RaycastDistance"),
         hasRaycastNormal(var0, var1) ? PacketIO.requireFinite(PacketIO.readVector3f(var0, var1 + 123), "RaycastNormal") : null,
         MovementDirection.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 135)),
         ApplyForceState.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 136)),
         var0.get(PacketIO.PROTO_INT, var1 + 137),
         hasGeneratedUUID(var0, var1) ? PacketIO.readUUID(var0, var1 + 141) : null
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var18;
   }

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

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

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

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

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

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

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

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

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 1, var3);
      var1.set(PacketIO.PROTO_BYTE, var2 + 2, (byte)this.state.getValue());
      PacketIO.requireFinite(this.progress, "Progress");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 3, this.progress);
      var1.set(PacketIO.PROTO_INT, var2 + 7, this.operationCounter);
      var1.set(PacketIO.PROTO_INT, var2 + 11, this.rootInteraction);
      var1.set(PacketIO.PROTO_INT, var2 + 15, this.totalForks);
      var1.set(PacketIO.PROTO_INT, var2 + 19, this.entityId);
      var1.set(PacketIO.PROTO_INT, var2 + 23, this.enteredRootInteraction);
      if (this.blockPosition != null) {
         this.blockPosition.serialize(var1, var2 + 27);
      } else {
         var1.asSlice(var2 + 27, 12L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 39, (byte)this.blockFace.getValue());
      if (this.blockRotation != null) {
         this.blockRotation.serialize(var1, var2 + 40);
      } else {
         var1.asSlice(var2 + 40, 3L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_INT, var2 + 43, this.placedBlockId);
      PacketIO.requireFinite(this.chargeValue, "ChargeValue");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 47, this.chargeValue);
      var1.set(PacketIO.PROTO_INT, var2 + 51, this.chainingIndex);
      var1.set(PacketIO.PROTO_INT, var2 + 55, this.flagIndex);
      if (this.attackerPos != null) {
         this.attackerPos.serialize(var1, var2 + 59);
      } else {
         var1.asSlice(var2 + 59, 24L).fill((byte)0);
      }

      if (this.attackerRot != null) {
         this.attackerRot.serialize(var1, var2 + 83);
      } else {
         var1.asSlice(var2 + 83, 12L).fill((byte)0);
      }

      if (this.raycastHit != null) {
         this.raycastHit.serialize(var1, var2 + 95);
      } else {
         var1.asSlice(var2 + 95, 24L).fill((byte)0);
      }

      PacketIO.requireFinite(this.raycastDistance, "RaycastDistance");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 119, this.raycastDistance);
      if (this.raycastNormal != null) {
         PacketIO.requireFinite(this.raycastNormal, "RaycastNormal");
         PacketIO.writeVector3f(var1, var2 + 123, this.raycastNormal);
      } else {
         var1.asSlice(var2 + 123, 12L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 135, (byte)this.movementDirection.getValue());
      var1.set(PacketIO.PROTO_BYTE, var2 + 136, (byte)this.applyForceState.getValue());
      var1.set(PacketIO.PROTO_INT, var2 + 137, this.nextLabel);
      if (this.generatedUUID != null) {
         PacketIO.writeUUID(var1, var2 + 141, this.generatedUUID);
      } else {
         var1.asSlice(var2 + 141, 16L).fill((byte)0);
      }

      int var4 = var2 + 165;
      if (this.forkCounts != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 157, var4 - var2 - 165);
         if (this.forkCounts.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("ForkCounts", this.forkCounts.size(), 4096000);
         }

         var4 += VarInt.set(var1, var4, this.forkCounts.size());

         for (Entry var6 : this.forkCounts.entrySet()) {
            var1.set(PacketIO.PROTO_BYTE, var4, (byte)var6.getKey().getValue());
            var1.set(PacketIO.PROTO_INT, ++var4, var6.getValue());
            var4 += 4;
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 157, -1);
      }

      if (this.hitEntities != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 161, var4 - var2 - 165);
         if (this.hitEntities.length > 4096000) {
            throw ProtocolException.arrayTooLong("HitEntities", this.hitEntities.length, 4096000);
         }

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

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

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

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

   class="kw">public int computeSize() {
      int var1 = 165;
      if (this.forkCounts != null) {
         var1 += VarInt.size(this.forkCounts.size()) + this.forkCounts.size() * 5;
      }

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

      class="kw">return var1;
   }

   class="kw">public InteractionSyncData clone() {
      InteractionSyncData var1 = new InteractionSyncData();
      var1.state = this.state;
      var1.progress = this.progress;
      var1.operationCounter = this.operationCounter;
      var1.rootInteraction = this.rootInteraction;
      var1.totalForks = this.totalForks;
      var1.entityId = this.entityId;
      var1.enteredRootInteraction = this.enteredRootInteraction;
      var1.blockPosition = this.blockPosition != null ? this.blockPosition.clone() : null;
      var1.blockFace = this.blockFace;
      var1.blockRotation = this.blockRotation != null ? this.blockRotation.clone() : null;
      var1.placedBlockId = this.placedBlockId;
      var1.chargeValue = this.chargeValue;
      var1.forkCounts = this.forkCounts != null ? new HashMap<>(this.forkCounts) : null;
      var1.chainingIndex = this.chainingIndex;
      var1.flagIndex = this.flagIndex;
      var1.hitEntities = this.hitEntities != null ? Arrays.stream(this.hitEntities).map(var0 -> var0.clone()).toArray(SelectedHitEntity[]::new) : null;
      var1.attackerPos = this.attackerPos != null ? this.attackerPos.clone() : null;
      var1.attackerRot = this.attackerRot != null ? this.attackerRot.clone() : null;
      var1.raycastHit = this.raycastHit != null ? this.raycastHit.clone() : null;
      var1.raycastDistance = this.raycastDistance;
      var1.raycastNormal = this.raycastNormal;
      var1.movementDirection = this.movementDirection;
      var1.applyForceState = this.applyForceState;
      var1.nextLabel = this.nextLabel;
      var1.generatedUUID = this.generatedUUID;
      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 InteractionSyncData var2)
            ? false
            : Objects.equals(this.state, var2.state)
               && this.progress == var2.progress
               && this.operationCounter == var2.operationCounter
               && this.rootInteraction == var2.rootInteraction
               && this.totalForks == var2.totalForks
               && this.entityId == var2.entityId
               && this.enteredRootInteraction == var2.enteredRootInteraction
               && Objects.equals(this.blockPosition, var2.blockPosition)
               && Objects.equals(this.blockFace, var2.blockFace)
               && Objects.equals(this.blockRotation, var2.blockRotation)
               && this.placedBlockId == var2.placedBlockId
               && this.chargeValue == var2.chargeValue
               && Objects.equals(this.forkCounts, var2.forkCounts)
               && this.chainingIndex == var2.chainingIndex
               && this.flagIndex == var2.flagIndex
               && Arrays.equals(this.hitEntities, var2.hitEntities)
               && Objects.equals(this.attackerPos, var2.attackerPos)
               && Objects.equals(this.attackerRot, var2.attackerRot)
               && Objects.equals(this.raycastHit, var2.raycastHit)
               && this.raycastDistance == var2.raycastDistance
               && Objects.equals(this.raycastNormal, var2.raycastNormal)
               && Objects.equals(this.movementDirection, var2.movementDirection)
               && Objects.equals(this.applyForceState, var2.applyForceState)
               && this.nextLabel == var2.nextLabel
               && Objects.equals(this.generatedUUID, var2.generatedUUID);
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Objects.hashCode(this.state);
      var1 = 31 * var1 + Float.hashCode(this.progress);
      var1 = 31 * var1 + Integer.hashCode(this.operationCounter);
      var1 = 31 * var1 + Integer.hashCode(this.rootInteraction);
      var1 = 31 * var1 + Integer.hashCode(this.totalForks);
      var1 = 31 * var1 + Integer.hashCode(this.entityId);
      var1 = 31 * var1 + Integer.hashCode(this.enteredRootInteraction);
      var1 = 31 * var1 + Objects.hashCode(this.blockPosition);
      var1 = 31 * var1 + Objects.hashCode(this.blockFace);
      var1 = 31 * var1 + Objects.hashCode(this.blockRotation);
      var1 = 31 * var1 + Integer.hashCode(this.placedBlockId);
      var1 = 31 * var1 + Float.hashCode(this.chargeValue);
      var1 = 31 * var1 + Objects.hashCode(this.forkCounts);
      var1 = 31 * var1 + Integer.hashCode(this.chainingIndex);
      var1 = 31 * var1 + Integer.hashCode(this.flagIndex);
      var1 = 31 * var1 + Arrays.hashCode(this.hitEntities);
      var1 = 31 * var1 + Objects.hashCode(this.attackerPos);
      var1 = 31 * var1 + Objects.hashCode(this.attackerRot);
      var1 = 31 * var1 + Objects.hashCode(this.raycastHit);
      var1 = 31 * var1 + Float.hashCode(this.raycastDistance);
      var1 = 31 * var1 + Objects.hashCode(this.raycastNormal);
      var1 = 31 * var1 + Objects.hashCode(this.movementDirection);
      var1 = 31 * var1 + Objects.hashCode(this.applyForceState);
      var1 = 31 * var1 + Integer.hashCode(this.nextLabel);
      class="kw">return 31 * var1 + Objects.hashCode(this.generatedUUID);
   }
}