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