SyncInteractionChain class

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

Файл: com/hypixel/hytale/protocol/packets/interaction/SyncInteractionChain.java

Поля (112)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
SyncInteractionChain var1
int var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
int var10
long var10
SyncInteractionChain[] var11
var11
int var12
var12
int var12
InteractionSyncData[] var13
long var13
int var14
long var14
byte var15
int var15
int var16
int var18
long var19
int var19
long var2
ReadCursor var2
ReadCursor var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
int var2
int var20
int var23
byte var24
String var26
var26
int var27
String var28
var28
int var29
int var3
var3
int var3
var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
var3
ForkedChainId var30
var30
InteractionChainData var31
var31
InteractionSyncData[] var33
var33
int var34
var34
SyncInteractionChain var37
int var38
int var39
long var4
long var4
int var4
int var4
var4
var4
var4
var4
byte var4
var4
var4
long var40
int var5
ReadCursor var5
int var5
int var6
int var6
String var6
var6
int var6
int var7
int var7
int var7
int var7
SyncInteractionChain[] var8
int var8
long var8
byte var8
int var9
long var9

Методы (125)

МодификаторыВозвратСигнатура
public SyncInteractionChain cloneSyncInteractionChain clone()
public int computeSizeint computeSize()
for for(int var9 = 0; var9 < var6; var9++)
for for(int var11 = 0; var11 < var8; var11++)
for for(int var17 = 0; var17 < var15; var17++)
for for(int var21 = 0; var21 < var18; var21++)
for for(int var7 = 0; var7 < this.newForks.length; var7++)
for for(int var13 = 0; var13 < var12; var13++)
for for(int var14 = 0; var14 < this.interactionData.length; var14++)
for for(SyncInteractionChain var6 : this.newForks)
for for(InteractionSyncData var11 : this.interactionData)
abstract for for(int var9 = var13 * 8; var9 < Math.min(this.interactionData.length, var13 * 8 + 8)
static int getActiveHotbarSlotint getActiveHotbarSlot(MemorySegment var0)
static int getActiveHotbarSlotint getActiveHotbarSlot(MemorySegment var0, int var1)
abstract return getActiveHotbarSlotreturn getActiveHotbarSlot(var0, 0)
static int getActiveToolsSlotint getActiveToolsSlot(MemorySegment var0)
static int getActiveToolsSlotint getActiveToolsSlot(MemorySegment var0, int var1)
abstract return getActiveToolsSlotreturn getActiveToolsSlot(var0, 0)
static int getActiveUtilitySlotint getActiveUtilitySlot(MemorySegment var0)
static int getActiveUtilitySlotint getActiveUtilitySlot(MemorySegment var0, int var1)
abstract return getActiveUtilitySlotreturn getActiveUtilitySlot(var0, 0)
static int getChainIdint getChainId(MemorySegment var0)
static int getChainIdint getChainId(MemorySegment var0, int var1)
abstract return getChainIdreturn getChainId(var0, 0)
abstract return getDatareturn getData(var0, 0)
static boolean getDesyncboolean getDesync(MemorySegment var0)
static boolean getDesyncboolean getDesync(MemorySegment var0, int var1)
abstract return getDesyncreturn getDesync(var0, 0)
static int getEquipSlotint getEquipSlot(MemorySegment var0)
static int getEquipSlotint getEquipSlot(MemorySegment var0, int var1)
abstract return getEquipSlotreturn getEquipSlot(var0, 0)
abstract return getForkedIdreturn getForkedId(var0, 0)
static boolean getInitialboolean getInitial(MemorySegment var0)
static boolean getInitialboolean getInitial(MemorySegment var0, int var1)
abstract return getInitialreturn getInitial(var0, 0)
abstract return getInteractionDatareturn getInteractionData(var0, 0)
static InteractionType getInteractionTypeInteractionType getInteractionType(MemorySegment var0)
static InteractionType getInteractionTypeInteractionType getInteractionType(MemorySegment var0, int var1)
abstract return getInteractionTypereturn getInteractionType(var0, 0)
abstract return getItemInHandIdreturn getItemInHandId(var0, 0)
abstract return getNewForksreturn getNewForks(var0, 0)
static int getOperationBaseIndexint getOperationBaseIndex(MemorySegment var0)
static int getOperationBaseIndexint getOperationBaseIndex(MemorySegment var0, int var1)
abstract return getOperationBaseIndexreturn getOperationBaseIndex(var0, 0)
static int getOverrideRootInteractionint getOverrideRootInteraction(MemorySegment var0)
static int getOverrideRootInteractionint getOverrideRootInteraction(MemorySegment var0, int var1)
abstract return getOverrideRootInteractionreturn getOverrideRootInteraction(var0, 0)
static InteractionState getStateInteractionState getState(MemorySegment var0)
static InteractionState getStateInteractionState getState(MemorySegment var0, int var1)
abstract return getStatereturn getState(var0, 0)
abstract return getToolsItemIdreturn getToolsItemId(var0, 0)
abstract return getUtilityItemIdreturn getUtilityItemId(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static boolean hasDataboolean hasData(MemorySegment var0, int var1)
static boolean hasForkedIdboolean hasForkedId(MemorySegment var0, int var1)
static boolean hasInteractionDataboolean hasInteractionData(MemorySegment var0, int var1)
static boolean hasItemInHandIdboolean hasItemInHandId(MemorySegment var0, int var1)
static boolean hasNewForksboolean hasNewForks(MemorySegment var0, int var1)
static boolean hasToolsItemIdboolean hasToolsItemId(MemorySegment var0, int var1)
static boolean hasUtilityItemIdboolean hasUtilityItemId(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(var4 != var2)
if if(var13 == -1L)
if if(var15 > 4096000)
if if(var14 == -1L)
if if(var38 > 4096000)
if if(var2 != null)
if if(this.itemInHandId != null)
if if(this.utilityItemId != null)
if if(this.toolsItemId != null)
if if(this.forkedId != null)
if if(this.data != null)
if if(this.newForks != null)
if if(this.interactionData != null)
if if(this.initial)
if if(this.desync)
if if(this.itemInHandId != null)
if if(this.utilityItemId != null)
if if(this.toolsItemId != null)
if if(this.forkedId != null)
if if(this.data != null)
if if(this.newForks != null)
if if(this.newForks.length > 4096000)
if if(this.interactionData != null)
if if(this.interactionData.length > 4096000)
if if(this.interactionData[var9] != null)
if if(this.interactionData[var14] != null)
if if(this.itemInHandId != null)
if if(this.utilityItemId != null)
if if(this.toolsItemId != null)
if if(this.forkedId != null)
if if(this.data != null)
if if(this.newForks != null)
if if(this.interactionData != null)
if if(var11 != 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 + 32, var4, "ItemInHandId")
abstract requireSlot requireSlot(var0, var1 + 32, -1, "ItemInHandId")
abstract requireSlot requireSlot(var0, var1 + 36, var4, "UtilityItemId")
abstract requireSlot requireSlot(var0, var1 + 36, -1, "UtilityItemId")
abstract requireSlot requireSlot(var0, var1 + 40, var4, "ToolsItemId")
abstract requireSlot requireSlot(var0, var1 + 40, -1, "ToolsItemId")
abstract requireSlot requireSlot(var0, var1 + 44, var4, "ForkedId")
abstract requireSlot requireSlot(var0, var1 + 44, -1, "ForkedId")
abstract requireSlot requireSlot(var0, var1 + 48, var4, "Data")
abstract requireSlot requireSlot(var0, var1 + 48, -1, "Data")
abstract requireSlot requireSlot(var0, var1 + 52, var4, "NewForks")
abstract requireSlot requireSlot(var0, var1 + 52, -1, "NewForks")
abstract requireSlot requireSlot(var0, var1 + 56, var4, "InteractionData")
abstract requireSlot requireSlot(var0, var1 + 56, -1, "InteractionData")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static SyncInteractionChain toObjectSyncInteractionChain toObject(MemorySegment var0)
static SyncInteractionChain toObjectSyncInteractionChain toObject(MemorySegment var0, int var1)
static SyncInteractionChain toObjectSyncInteractionChain toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2)
abstract return toObjectreturn toObject(var0, 0, null)
abstract return toObjectreturn toObject(var0, var1, null)
while while(var14 < var6)
while while(var23 < var38)

Исходный код

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

class="kw">import com.hypixel.hytale.protocol.ForkedChainId;
class="kw">import com.hypixel.hytale.protocol.InteractionChainData;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionSyncData;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
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 SyncInteractionChain {
   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 = 32;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 7;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 60;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 1677721600;
   class="kw">public int activeHotbarSlot;
   class="kw">public int activeUtilitySlot;
   class="kw">public int activeToolsSlot;
   @Nullable
   class="kw">public String itemInHandId;
   @Nullable
   class="kw">public String utilityItemId;
   @Nullable
   class="kw">public String toolsItemId;
   class="kw">public boolean initial;
   class="kw">public boolean desync;
   class="kw">public int overrideRootInteraction = Integer.MIN_VALUE;
   @Nonnull
   class="kw">public InteractionType interactionType = InteractionType.Primary;
   class="kw">public int equipSlot;
   class="kw">public int chainId;
   @Nullable
   class="kw">public ForkedChainId forkedId;
   @Nullable
   class="kw">public InteractionChainData data;
   @Nonnull
   class="kw">public InteractionState state = InteractionState.Finished;
   @Nullable
   class="kw">public SyncInteractionChain[] newForks;
   class="kw">public int operationBaseIndex;
   @Nullable
   class="kw">public InteractionSyncData[] interactionData;

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

   class="kw">public SyncInteractionChain(
      int var1,
      int var2,
      int var3,
      @Nullable String var4,
      @Nullable String var5,
      @Nullable String var6,
      boolean var7,
      boolean var8,
      int var9,
      @Nonnull InteractionType var10,
      int var11,
      int var12,
      @Nullable ForkedChainId var13,
      @Nullable InteractionChainData var14,
      @Nonnull InteractionState var15,
      @Nullable SyncInteractionChain[] var16,
      int var17,
      @Nullable InteractionSyncData[] var18
   ) {
      this.activeHotbarSlot = var1;
      this.activeUtilitySlot = var2;
      this.activeToolsSlot = var3;
      this.itemInHandId = var4;
      this.utilityItemId = var5;
      this.toolsItemId = var6;
      this.initial = var7;
      this.desync = var8;
      this.overrideRootInteraction = var9;
      this.interactionType = var10;
      this.equipSlot = var11;
      this.chainId = var12;
      this.forkedId = var13;
      this.data = var14;
      this.state = var15;
      this.newForks = var16;
      this.operationBaseIndex = var17;
      this.interactionData = var18;
   }

   class="kw">public SyncInteractionChain(@Nonnull SyncInteractionChain var1) {
      this.activeHotbarSlot = var1.activeHotbarSlot;
      this.activeUtilitySlot = var1.activeUtilitySlot;
      this.activeToolsSlot = var1.activeToolsSlot;
      this.itemInHandId = var1.itemInHandId;
      this.utilityItemId = var1.utilityItemId;
      this.toolsItemId = var1.toolsItemId;
      this.initial = var1.initial;
      this.desync = var1.desync;
      this.overrideRootInteraction = var1.overrideRootInteraction;
      this.interactionType = var1.interactionType;
      this.equipSlot = var1.equipSlot;
      this.chainId = var1.chainId;
      this.forkedId = var1.forkedId;
      this.data = var1.data;
      this.state = var1.state;
      this.newForks = var1.newForks;
      this.operationBaseIndex = var1.operationBaseIndex;
      this.interactionData = var1.interactionData;
   }

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

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

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static String getItemInHandId(MemorySegment var0, int var1) {
      class="kw">return hasItemInHandId(var0, var1)
         ? PacketIO.readVarString("ItemInHandId", var0, var1 + getValidatedOffset(var0, var1, 32, 60, "ItemInHandId"), 4096000)
         : null;
   }

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

   @Nullable
   class="kw">public class="kw">static String getUtilityItemId(MemorySegment var0, int var1) {
      class="kw">return hasUtilityItemId(var0, var1)
         ? PacketIO.readVarString("UtilityItemId", var0, var1 + getValidatedOffset(var0, var1, 36, 60, "UtilityItemId"), 4096000)
         : null;
   }

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

   @Nullable
   class="kw">public class="kw">static String getToolsItemId(MemorySegment var0, int var1) {
      class="kw">return hasToolsItemId(var0, var1)
         ? PacketIO.readVarString("ToolsItemId", var0, var1 + getValidatedOffset(var0, var1, 40, 60, "ToolsItemId"), 4096000)
         : null;
   }

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

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

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

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

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

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

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static ForkedChainId getForkedId(MemorySegment var0, int var1) {
      class="kw">return hasForkedId(var0, var1) ? ForkedChainId.toObject(var0, var1 + getValidatedOffset(var0, var1, 44, 60, "ForkedId")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static InteractionChainData getData(MemorySegment var0, int var1) {
      class="kw">return hasData(var0, var1) ? InteractionChainData.toObject(var0, var1 + getValidatedOffset(var0, var1, 48, 60, "Data")) : null;
   }

   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 + 27));
   }

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

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

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

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

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

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

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

      class="kw">return var8;
   }

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

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

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

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

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

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

      int var7 = (int)(var4 >>> 32);
      if (var3 + var7 + (var6 + 7) / 8 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("InteractionData", Math.min(var3 + var7 + (var6 + 7) / 8, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var3 += var7;
      int var8 = (var6 + 7) / 8;
      int var9 = var3;
      var3 += var8;
      if (var9 + var8 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("InteractionData", var9 + var8, (int)var0.byteSize());
      }

      int var10 = 0;

      for (int var11 = 0; var11 < var8; var11++) {
         var10 += Integer.bitCount(var0.get(PacketIO.PROTO_BYTE, var9 + var11) & 255);
      }

      if ((var6 & 7) != 0) {
         var10 -= Integer.bitCount((var0.get(PacketIO.PROTO_BYTE, var9 + var8 - 1) & 255) >>> (var6 & 7));
      }

      long var19 = var3 + var10 * 165L;
      if (var19 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("InteractionData", (int)Math.min(var19, 2147483647L), (int)var0.byteSize());
      }

      InteractionSyncData[] var13 = new InteractionSyncData[var6];
      int var14 = 0;

      while (var14 < var6) {
         byte var15 = var0.get(PacketIO.PROTO_BYTE, var9 + var14 / 8);

         for (int var16 = Math.min(var6, (var14 & -8) + 8); var14 < var16; var14++) {
            if ((var15 & 1 << (var14 & 7)) != 0) {
               var13[var14] = InteractionSyncData.toObject(var0, var3, var2);
               var3 = var2.position;
            }
         }
      }

      class="kw">return var13;
   }

   class="kw">public class="kw">static boolean hasItemInHandId(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 hasUtilityItemId(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 hasToolsItemId(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 hasForkedId(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 hasData(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 hasNewForks(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 hasInteractionData(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 64) != 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 SyncInteractionChain toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

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

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

      String var26 = null;
      if (hasUtilityItemId(var0, var1)) {
         requireSlot(var0, var1 + 36, var4, "UtilityItemId");
         int var27 = var3 + var4;
         long var9 = VarInt.getWithLength(var0, var27);
         var26 = PacketIO.readVarString("UtilityItemId", var0, var27, 0, 4096000, var9);
         var4 += (int)var9 + (int)(var9 >>> 32);
      } else {
         requireSlot(var0, var1 + 36, -1, "UtilityItemId");
      }

      String var28 = null;
      if (hasToolsItemId(var0, var1)) {
         requireSlot(var0, var1 + 40, var4, "ToolsItemId");
         int var29 = var3 + var4;
         long var10 = VarInt.getWithLength(var0, var29);
         var28 = PacketIO.readVarString("ToolsItemId", var0, var29, 0, 4096000, var10);
         var4 += (int)var10 + (int)(var10 >>> 32);
      } else {
         requireSlot(var0, var1 + 40, -1, "ToolsItemId");
      }

      ForkedChainId var30 = null;
      if (hasForkedId(var0, var1)) {
         requireSlot(var0, var1 + 44, var4, "ForkedId");
         var30 = ForkedChainId.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 44, -1, "ForkedId");
      }

      InteractionChainData var31 = null;
      if (hasData(var0, var1)) {
         requireSlot(var0, var1 + 48, var4, "Data");
         var31 = InteractionChainData.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 48, -1, "Data");
      }

      SyncInteractionChain[] var11 = null;
      if (hasNewForks(var0, var1)) {
         requireSlot(var0, var1 + 52, var4, "NewForks");
         int var12 = var3 + var4;
         long var13 = VarInt.getWithLength(var0, var12);
         if (var13 == -1L) {
            throw ProtocolException.invalidVarInt("NewForks");
         }

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

         int var16 = (int)(var13 >>> 32);
         if (var12 + var16 + var15 * 60L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("NewForks", (int)Math.min(var12 + var16 + var15 * 60L, 2147483647L), (int)var0.byteSize());
         }

         var12 += var16;
         var11 = new SyncInteractionChain[var15];

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

         var4 = var12 - var3;
      } else {
         requireSlot(var0, var1 + 52, -1, "NewForks");
      }

      InteractionSyncData[] var33 = null;
      if (hasInteractionData(var0, var1)) {
         requireSlot(var0, var1 + 56, var4, "InteractionData");
         int var34 = var3 + var4;
         long var14 = VarInt.getWithLength(var0, var34);
         if (var14 == -1L) {
            throw ProtocolException.invalidVarInt("InteractionData");
         }

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

         int var39 = (int)(var14 >>> 32);
         if (var34 + var39 + (var38 + 7) / 8 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("InteractionData", Math.min(var34 + var39 + (var38 + 7) / 8, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var34 += var39;
         int var18 = (var38 + 7) / 8;
         int var19 = var34;
         var34 += var18;
         if (var19 + var18 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("InteractionData", var19 + var18, (int)var0.byteSize());
         }

         int var20 = 0;

         for (int var21 = 0; var21 < var18; var21++) {
            var20 += Integer.bitCount(var0.get(PacketIO.PROTO_BYTE, var19 + var21) & 255);
         }

         if ((var38 & 7) != 0) {
            var20 -= Integer.bitCount((var0.get(PacketIO.PROTO_BYTE, var19 + var18 - 1) & 255) >>> (var38 & 7));
         }

         long var40 = var34 + var20 * 165L;
         if (var40 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("InteractionData", (int)Math.min(var40, 2147483647L), (int)var0.byteSize());
         }

         var33 = new InteractionSyncData[var38];
         int var23 = 0;

         while (var23 < var38) {
            byte var24 = var0.get(PacketIO.PROTO_BYTE, var19 + var23 / 8);

            for (int var25 = Math.min(var38, (var23 & -8) + 8); var23 < var25; var23++) {
               if ((var24 & 1 << (var23 & 7)) != 0) {
                  var33[var23] = InteractionSyncData.toObject(var0, var34, var5);
                  var34 = var5.position;
               }
            }
         }

         var4 = var34 - var3;
      } else {
         requireSlot(var0, var1 + 56, -1, "InteractionData");
      }

      SyncInteractionChain var37 = new SyncInteractionChain(
         var0.get(PacketIO.PROTO_INT, var1 + 1),
         var0.get(PacketIO.PROTO_INT, var1 + 5),
         var0.get(PacketIO.PROTO_INT, var1 + 9),
         var6,
         var26,
         var28,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 13) & 1) != 0,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 13) & 2) != 0,
         var0.get(PacketIO.PROTO_INT, var1 + 14),
         InteractionType.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 18)),
         var0.get(PacketIO.PROTO_INT, var1 + 19),
         var0.get(PacketIO.PROTO_INT, var1 + 23),
         var30,
         var31,
         InteractionState.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 27)),
         var11,
         var0.get(PacketIO.PROTO_INT, var1 + 28),
         var33
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var37;
   }

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

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

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

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

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

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

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 0, var3);
      var1.set(PacketIO.PROTO_INT, var2 + 1, this.activeHotbarSlot);
      var1.set(PacketIO.PROTO_INT, var2 + 5, this.activeUtilitySlot);
      var1.set(PacketIO.PROTO_INT, var2 + 9, this.activeToolsSlot);
      byte var4 = 0;
      if (this.initial) {
         var4 = (byte)(var4 | 1);
      }

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 13 + 0, var4);
      var1.set(PacketIO.PROTO_INT, var2 + 14, this.overrideRootInteraction);
      var1.set(PacketIO.PROTO_BYTE, var2 + 18, (byte)this.interactionType.getValue());
      var1.set(PacketIO.PROTO_INT, var2 + 19, this.equipSlot);
      var1.set(PacketIO.PROTO_INT, var2 + 23, this.chainId);
      var1.set(PacketIO.PROTO_BYTE, var2 + 27, (byte)this.state.getValue());
      var1.set(PacketIO.PROTO_INT, var2 + 28, this.operationBaseIndex);
      int var5 = var2 + 60;
      if (this.itemInHandId != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 32, var5 - var2 - 60);
         var5 += PacketIO.writeVarString(var1, var5, this.itemInHandId, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 32, -1);
      }

      if (this.utilityItemId != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 36, var5 - var2 - 60);
         var5 += PacketIO.writeVarString(var1, var5, this.utilityItemId, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 36, -1);
      }

      if (this.toolsItemId != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 40, var5 - var2 - 60);
         var5 += PacketIO.writeVarString(var1, var5, this.toolsItemId, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 40, -1);
      }

      if (this.forkedId != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 44, var5 - var2 - 60);
         var5 += this.forkedId.serialize(var1, var5);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 44, -1);
      }

      if (this.data != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 48, var5 - var2 - 60);
         var5 += this.data.serialize(var1, var5);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 48, -1);
      }

      if (this.newForks != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 52, var5 - var2 - 60);
         if (this.newForks.length > 4096000) {
            throw ProtocolException.arrayTooLong("NewForks", this.newForks.length, 4096000);
         }

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

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

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

      if (this.interactionData != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 56, var5 - var2 - 60);
         if (this.interactionData.length > 4096000) {
            throw ProtocolException.arrayTooLong("InteractionData", this.interactionData.length, 4096000);
         }

         var5 += VarInt.set(var1, var5, this.interactionData.length);
         int var12 = (this.interactionData.length + 7) / 8;

         for (int var13 = 0; var13 < var12; var13++) {
            byte var8 = 0;

            for (int var9 = var13 * 8; var9 < Math.min(this.interactionData.length, var13 * 8 + 8); var9++) {
               if (this.interactionData[var9] != null) {
                  var8 |= (byte)(1 << (var9 & 7));
               }
            }

            var1.set(PacketIO.PROTO_BYTE, var5 + var13, var8);
         }

         var5 += var12;

         for (int var14 = 0; var14 < this.interactionData.length; var14++) {
            if (this.interactionData[var14] != null) {
               var5 += this.interactionData[var14].serialize(var1, var5);
            }
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 56, -1);
      }

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

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

      if (this.utilityItemId != null) {
         var1 += PacketIO.stringSize(this.utilityItemId);
      }

      if (this.toolsItemId != null) {
         var1 += PacketIO.stringSize(this.toolsItemId);
      }

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

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

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

         for (SyncInteractionChain var6 : this.newForks) {
            var2 += var6.computeSize();
         }

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

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

         for (InteractionSyncData var11 : this.interactionData) {
            if (var11 != null) {
               var7 += var11.computeSize();
            }
         }

         var1 += VarInt.size(this.interactionData.length) + (this.interactionData.length + 7) / 8 + var7;
      }

      class="kw">return var1;
   }

   class="kw">public SyncInteractionChain clone() {
      SyncInteractionChain var1 = new SyncInteractionChain();
      var1.activeHotbarSlot = this.activeHotbarSlot;
      var1.activeUtilitySlot = this.activeUtilitySlot;
      var1.activeToolsSlot = this.activeToolsSlot;
      var1.itemInHandId = this.itemInHandId;
      var1.utilityItemId = this.utilityItemId;
      var1.toolsItemId = this.toolsItemId;
      var1.initial = this.initial;
      var1.desync = this.desync;
      var1.overrideRootInteraction = this.overrideRootInteraction;
      var1.interactionType = this.interactionType;
      var1.equipSlot = this.equipSlot;
      var1.chainId = this.chainId;
      var1.forkedId = this.forkedId != null ? this.forkedId.clone() : null;
      var1.data = this.data != null ? this.data.clone() : null;
      var1.state = this.state;
      var1.newForks = this.newForks != null ? Arrays.stream(this.newForks).map(var0 -> var0.clone()).toArray(SyncInteractionChain[]::new) : null;
      var1.operationBaseIndex = this.operationBaseIndex;
      var1.interactionData = this.interactionData != null
         ? Arrays.stream(this.interactionData).map(var0 -> var0 != null ? var0.clone() : null).toArray(InteractionSyncData[]::new)
         : 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 SyncInteractionChain var2)
            ? false
            : this.activeHotbarSlot == var2.activeHotbarSlot
               && this.activeUtilitySlot == var2.activeUtilitySlot
               && this.activeToolsSlot == var2.activeToolsSlot
               && Objects.equals(this.itemInHandId, var2.itemInHandId)
               && Objects.equals(this.utilityItemId, var2.utilityItemId)
               && Objects.equals(this.toolsItemId, var2.toolsItemId)
               && this.initial == var2.initial
               && this.desync == var2.desync
               && this.overrideRootInteraction == var2.overrideRootInteraction
               && Objects.equals(this.interactionType, var2.interactionType)
               && this.equipSlot == var2.equipSlot
               && this.chainId == var2.chainId
               && Objects.equals(this.forkedId, var2.forkedId)
               && Objects.equals(this.data, var2.data)
               && Objects.equals(this.state, var2.state)
               && Arrays.equals(this.newForks, var2.newForks)
               && this.operationBaseIndex == var2.operationBaseIndex
               && Arrays.equals(this.interactionData, var2.interactionData);
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Integer.hashCode(this.activeHotbarSlot);
      var1 = 31 * var1 + Integer.hashCode(this.activeUtilitySlot);
      var1 = 31 * var1 + Integer.hashCode(this.activeToolsSlot);
      var1 = 31 * var1 + Objects.hashCode(this.itemInHandId);
      var1 = 31 * var1 + Objects.hashCode(this.utilityItemId);
      var1 = 31 * var1 + Objects.hashCode(this.toolsItemId);
      var1 = 31 * var1 + Boolean.hashCode(this.initial);
      var1 = 31 * var1 + Boolean.hashCode(this.desync);
      var1 = 31 * var1 + Integer.hashCode(this.overrideRootInteraction);
      var1 = 31 * var1 + Objects.hashCode(this.interactionType);
      var1 = 31 * var1 + Integer.hashCode(this.equipSlot);
      var1 = 31 * var1 + Integer.hashCode(this.chainId);
      var1 = 31 * var1 + Objects.hashCode(this.forkedId);
      var1 = 31 * var1 + Objects.hashCode(this.data);
      var1 = 31 * var1 + Objects.hashCode(this.state);
      var1 = 31 * var1 + Arrays.hashCode(this.newForks);
      var1 = 31 * var1 + Integer.hashCode(this.operationBaseIndex);
      class="kw">return 31 * var1 + Arrays.hashCode(this.interactionData);
   }
}