ItemBase class

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

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

Поля (414)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
ItemBase var1
int var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
String var10
long var10
long var10
int var10
Map var100
var100
int var101
int var102
long var103
int var104
InteractionConfiguration var107
var107
int var109
String var11
int var11
long var11
int var11
long var110
String var111
var111
int var113
int var114
int[] var115
var115
InteractionType var116
int var118
long var119
int var12
long var12
int var12
int var120
Map var122
var122
InteractionType var123
long var125
int var126
var126
int[] var129
var129
int var13
long var13
int var13
long var130
long var131
int var132
ItemHudUI[] var134
var134
long var135
int var136
var136
ItemBase var138
String var139
ItemAppearanceCondition[] var14
int var14
var14
int var14
int var140
int var141
long var142
int var144
int var145
int var146
int var147
long var15
ItemArmor var16
var16
int var17
int var18
long var2
ReadCursor var2
int var2
ReadCursor var2
ReadCursor var2
ReadCursor var2
int var2
int var2
int var2
int var2
int var2
ReadCursor var2
int var2
ReadCursor var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
int var2
Map var2
String var20
var20
int var21
long var22
long var23
long var24
int var25
int var26
long var28
int var3
var3
long var3
int var3
var3
int var3
var3
int var3
var3
long var3
long var3
long var3
long var3
long var3
int var3
var3
long var3
int var3
var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
int var30
int var31
InteractionType var32
int var32
int var33
int var33
int var34
long var35
int var36
String var37
int var38
int var39
int var39
long var4
long var4
long var4
long var4
long var4
long var4
int var4
int var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
var4
byte var4
var4
var4
long var40
int var42
int var43
ItemAppearanceCondition[] var44
String var46
var46
int var47
String var48
var48
int var49
int var5
int var5
int var5
int var5
int var5
int var5
int var5
int var5
ReadCursor var5
byte var5
var5
var5
String var50
var50
int var51
String var52
var52
int var53
String var54
var54
int var55
ItemTranslationProperties var56
var56
ItemResourceType[] var57
var57
ItemTool var59
var59
int var6
int var6
int var6
int var6
int var6
Map var6
Map var6
Map var6
Map var6
int var6
int var6
int var6
int var6
String var6
var6
int var6
var6
ItemWeapon var60
var60
ItemUtility var61
var61
BuilderToolState var62
var62
ItemEntityConfig var63
var63
String[] var64
var64
int var65
String var67
var67
int var68
ModelParticle[] var69
var69
int var7
String[] var7
int var7
int var7
int var7
int[] var7
Map var7
int[] var7
int var7
int var7
int var7
int var7
int var70
var70
ModelParticle[] var72
var72
long var73
int var74
var74
ModelTrail[] var76
var76
long var77
int var78
var78
ItemResourceType[] var8
ModelParticle[] var8
ModelParticle[] var8
ModelTrail[] var8
InteractionType var8
InteractionType var8
InteractionType var8
long var8
ItemHudUI[] var8
long var8
int var8
Map var80
var80
int var81
long var82
int var83
Map var86
var86
int var87
int var88
long var89
long var9
int var9
int var9
long var9
int var9
long var9
int var9
int var90
Map var93
var93
int var94
int var95
long var96
int var97

Методы (393)

МодификаторыВозвратСигнатура
public ItemBase cloneItemBase clone()
public int computeSizeint computeSize()
for for(int var9 = 0; var9 < var6; var9++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var9 = 0; var9 < var6; var9++)
for for(int var9 = 0; var9 < var6; var9++)
for for(int var9 = 0; var9 < var6; var9++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var8 = 0; var8 < var6; var8++)
for for(int var15 = 0; var15 < var12; var15++)
for for(int var9 = 0; var9 < var6; var9++)
for for(int var19 = 0; var19 < var17; var19++)
for for(int var27 = 0; var27 < var25; var27++)
for for(int var29 = 0; var29 < var81; var29++)
for for(int var30 = 0; var30 < var88; var30++)
for for(int var31 = 0; var31 < var95; var31++)
for for(int var108 = 0; var108 < var102; var108++)
for for(int var112 = 0; var112 < var109; var112++)
for for(int var117 = 0; var117 < var113; var117++)
for for(int var124 = 0; var124 < var118; var124++)
for for(int var143 = 0; var143 < var141; var143++)
for for(int var45 = 0; var45 < var42; var45++)
for for(int var41 = 0; var41 < var146; var41++)
for for(int var8 = 0; var8 < this.resourceTypes.length; var8++)
for for(int var40 = 0; var40 < this.categories.length; var40++)
for for(int var41 = 0; var41 < this.particles.length; var41++)
for for(int var42 = 0; var42 < this.firstPersonParticles.length; var42++)
for for(int var43 = 0; var43 < this.trails.length; var43++)
for for(int var49 = 0; var49 < this.hudUI.length; var49++)
for for(ItemResourceType var6 : this.resourceTypes)
for for(String var36 : this.categories)
for for(ModelParticle var37 : this.particles)
for for(ModelParticle var38 : this.firstPersonParticles)
for for(ModelTrail var39 : this.trails)
for for(ItemHudUI var40 : this.hudUI)
abstract return getAnimationreturn getAnimation(var0, 0)
abstract return getArmorreturn getArmor(var0, 0)
static int getBlockIdint getBlockId(MemorySegment var0)
static int getBlockIdint getBlockId(MemorySegment var0, int var1)
abstract return getBlockIdreturn getBlockId(var0, 0)
abstract return getBlockSelectorToolreturn getBlockSelectorTool(var0, 0)
abstract return getBuilderToolDatareturn getBuilderToolData(var0, 0)
abstract return getCarryHudInputBindingsreturn getCarryHudInputBindings(var0, 0)
abstract return getCarryInteractionsreturn getCarryInteractions(var0, 0)
abstract return getCategoriesreturn getCategories(var0, 0)
static boolean getClipsGeometryboolean getClipsGeometry(MemorySegment var0)
static boolean getClipsGeometryboolean getClipsGeometry(MemorySegment var0, int var1)
abstract return getClipsGeometryreturn getClipsGeometry(var0, 0)
static boolean getConsumableboolean getConsumable(MemorySegment var0)
static boolean getConsumableboolean getConsumable(MemorySegment var0, int var1)
abstract return getConsumablereturn getConsumable(var0, 0)
abstract return getDisplayEntityStatsHUDreturn getDisplayEntityStatsHUD(var0, 0)
abstract return getDroppedItemAnimationreturn getDroppedItemAnimation(var0, 0)
static double getDurabilitydouble getDurability(MemorySegment var0)
static double getDurabilitydouble getDurability(MemorySegment var0, int var1)
abstract return getDurabilityreturn getDurability(var0, 0)
abstract return getFirstPersonParticlesreturn getFirstPersonParticles(var0, 0)
abstract return getGliderConfigreturn getGliderConfig(var0, 0)
abstract return getHudUIreturn getHudUI(var0, 0)
abstract return getIconreturn getIcon(var0, 0)
abstract return getIconPropertiesreturn getIconProperties(var0, 0)
abstract return getIdreturn getId(var0, 0)
abstract return getInteractionConfigreturn getInteractionConfig(var0, 0)
abstract return getInteractionVarsreturn getInteractionVars(var0, 0)
abstract return getInteractionsreturn getInteractions(var0, 0)
abstract return getItemAppearanceConditionsreturn getItemAppearanceConditions(var0, 0)
abstract return getItemEntityreturn getItemEntity(var0, 0)
static int getItemLevelint getItemLevel(MemorySegment var0)
static int getItemLevelint getItemLevel(MemorySegment var0, int var1)
abstract return getItemLevelreturn getItemLevel(var0, 0)
static int getItemSoundSetIndexint getItemSoundSetIndex(MemorySegment var0)
static int getItemSoundSetIndexint getItemSoundSetIndex(MemorySegment var0, int var1)
abstract return getItemSoundSetIndexreturn getItemSoundSetIndex(var0, 0)
abstract return getLightreturn getLight(var0, 0)
static int getMaxStackint getMaxStack(MemorySegment var0)
static int getMaxStackint getMaxStack(MemorySegment var0, int var1)
abstract return getMaxStackreturn getMaxStack(var0, 0)
abstract return getModelreturn getModel(var0, 0)
abstract return getParticlesreturn getParticles(var0, 0)
abstract return getPlayerAnimationsIdreturn getPlayerAnimationsId(var0, 0)
abstract return getPullbackConfigreturn getPullbackConfig(var0, 0)
static int getQualityIndexint getQualityIndex(MemorySegment var0)
static int getQualityIndexint getQualityIndex(MemorySegment var0, int var1)
abstract return getQualityIndexreturn getQualityIndex(var0, 0)
static boolean getRenderDeployablePreviewboolean getRenderDeployablePreview(MemorySegment var0)
static boolean getRenderDeployablePreviewboolean getRenderDeployablePreview(MemorySegment var0, int var1)
abstract return getRenderDeployablePreviewreturn getRenderDeployablePreview(var0, 0)
abstract return getResourceTypesreturn getResourceTypes(var0, 0)
static int getReticleIndexint getReticleIndex(MemorySegment var0)
static int getReticleIndexint getReticleIndex(MemorySegment var0, int var1)
abstract return getReticleIndexreturn getReticleIndex(var0, 0)
static float getScalefloat getScale(MemorySegment var0)
static float getScalefloat getScale(MemorySegment var0, int var1)
abstract return getScalereturn getScale(var0, 0)
abstract return getSetreturn getSet(var0, 0)
static int getSoundEventIndexint getSoundEventIndex(MemorySegment var0)
static int getSoundEventIndexint getSoundEventIndex(MemorySegment var0, int var1)
abstract return getSoundEventIndexreturn getSoundEventIndex(var0, 0)
abstract return getSubCategoryreturn getSubCategory(var0, 0)
abstract return getTagIndexesreturn getTagIndexes(var0, 0)
abstract return getTexturereturn getTexture(var0, 0)
abstract return getToolreturn getTool(var0, 0)
abstract return getTrailsreturn getTrails(var0, 0)
abstract return getTranslationPropertiesreturn getTranslationProperties(var0, 0)
static boolean getUsePlayerAnimationsboolean getUsePlayerAnimations(MemorySegment var0)
static boolean getUsePlayerAnimationsboolean getUsePlayerAnimations(MemorySegment var0, int var1)
abstract return getUsePlayerAnimationsreturn getUsePlayerAnimations(var0, 0)
abstract return getUtilityreturn getUtility(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static boolean getVariantboolean getVariant(MemorySegment var0)
static boolean getVariantboolean getVariant(MemorySegment var0, int var1)
abstract return getVariantreturn getVariant(var0, 0)
abstract return getWeaponreturn getWeapon(var0, 0)
static boolean hasAnimationboolean hasAnimation(MemorySegment var0, int var1)
static boolean hasArmorboolean hasArmor(MemorySegment var0, int var1)
static boolean hasBlockSelectorToolboolean hasBlockSelectorTool(MemorySegment var0, int var1)
static boolean hasBuilderToolDataboolean hasBuilderToolData(MemorySegment var0, int var1)
static boolean hasCarryHudInputBindingsboolean hasCarryHudInputBindings(MemorySegment var0, int var1)
static boolean hasCarryInteractionsboolean hasCarryInteractions(MemorySegment var0, int var1)
static boolean hasCategoriesboolean hasCategories(MemorySegment var0, int var1)
static boolean hasDisplayEntityStatsHUDboolean hasDisplayEntityStatsHUD(MemorySegment var0, int var1)
static boolean hasDroppedItemAnimationboolean hasDroppedItemAnimation(MemorySegment var0, int var1)
static boolean hasFirstPersonParticlesboolean hasFirstPersonParticles(MemorySegment var0, int var1)
static boolean hasGliderConfigboolean hasGliderConfig(MemorySegment var0, int var1)
static boolean hasHudUIboolean hasHudUI(MemorySegment var0, int var1)
static boolean hasIconboolean hasIcon(MemorySegment var0, int var1)
static boolean hasIconPropertiesboolean hasIconProperties(MemorySegment var0, int var1)
static boolean hasIdboolean hasId(MemorySegment var0, int var1)
static boolean hasInteractionConfigboolean hasInteractionConfig(MemorySegment var0, int var1)
static boolean hasInteractionVarsboolean hasInteractionVars(MemorySegment var0, int var1)
static boolean hasInteractionsboolean hasInteractions(MemorySegment var0, int var1)
static boolean hasItemAppearanceConditionsboolean hasItemAppearanceConditions(MemorySegment var0, int var1)
static boolean hasItemEntityboolean hasItemEntity(MemorySegment var0, int var1)
static boolean hasLightboolean hasLight(MemorySegment var0, int var1)
static boolean hasModelboolean hasModel(MemorySegment var0, int var1)
static boolean hasParticlesboolean hasParticles(MemorySegment var0, int var1)
static boolean hasPlayerAnimationsIdboolean hasPlayerAnimationsId(MemorySegment var0, int var1)
static boolean hasPullbackConfigboolean hasPullbackConfig(MemorySegment var0, int var1)
static boolean hasResourceTypesboolean hasResourceTypes(MemorySegment var0, int var1)
static boolean hasSetboolean hasSet(MemorySegment var0, int var1)
static boolean hasSubCategoryboolean hasSubCategory(MemorySegment var0, int var1)
static boolean hasTagIndexesboolean hasTagIndexes(MemorySegment var0, int var1)
static boolean hasTextureboolean hasTexture(MemorySegment var0, int var1)
static boolean hasToolboolean hasTool(MemorySegment var0, int var1)
static boolean hasTrailsboolean hasTrails(MemorySegment var0, int var1)
static boolean hasTranslationPropertiesboolean hasTranslationProperties(MemorySegment var0, int var1)
static boolean hasUtilityboolean hasUtility(MemorySegment var0, int var1)
static boolean hasWeaponboolean hasWeapon(MemorySegment var0, int var1)
if if(var1 < 0)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var10 == -1L)
if if(var12 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 == -1L)
if if(var6 > 4096000)
if if(var4 != var2)
if if(var15 == -1L)
if if(var17 > 4096000)
if if(var23 == -1L)
if if(var25 > 4096000)
if if(var73 == -1L)
if if(var81 > 4096000)
if if(var77 == -1L)
if if(var88 > 4096000)
if if(var82 == -1L)
if if(var95 > 4096000)
if if(var89 == -1L)
if if(var102 > 4096000)
if if(var96 == -1L)
if if(var109 > 4096000)
if if(var103 == -1L)
if if(var113 > 4096000)
if if(var110 == -1L)
if if(var118 > 4096000)
if if(var125 == -1L)
if if(var36 > 4096000)
if if(var131 == -1L)
if if(var141 > 4096000)
if if(var40 == -1L)
if if(var42 > 4096000)
if if(var135 == -1L)
if if(var144 > 4096000)
if if(var142 == -1L)
if if(var146 > 4096000)
if if(var2 != null)
if if(this.iconProperties != null)
if if(this.gliderConfig != null)
if if(this.blockSelectorTool != null)
if if(this.light != null)
if if(this.pullbackConfig != null)
if if(this.id != null)
if if(this.model != null)
if if(this.texture != null)
if if(this.animation != null)
if if(this.playerAnimationsId != null)
if if(this.icon != null)
if if(this.translationProperties != null)
if if(this.resourceTypes != null)
if if(this.tool != null)
if if(this.weapon != null)
if if(this.armor != null)
if if(this.utility != null)
if if(this.builderToolData != null)
if if(this.itemEntity != null)
if if(this.set != null)
if if(this.categories != null)
if if(this.subCategory != null)
if if(this.particles != null)
if if(this.firstPersonParticles != null)
if if(this.trails != null)
if if(this.interactions != null)
if if(this.carryInteractions != null)
if if(this.carryHudInputBindings != null)
if if(this.interactionVars != null)
if if(this.interactionConfig != null)
if if(this.droppedItemAnimation != null)
if if(this.tagIndexes != null)
if if(this.itemAppearanceConditions != null)
if if(this.displayEntityStatsHUD != null)
if if(this.hudUI != null)
if if(this.iconProperties != null)
if if(this.consumable)
if if(this.variant)
if if(this.gliderConfig != null)
if if(this.blockSelectorTool != null)
if if(this.light != null)
if if(this.pullbackConfig != null)
if if(this.clipsGeometry)
if if(this.renderDeployablePreview)
if if(this.id != null)
if if(this.model != null)
if if(this.texture != null)
if if(this.animation != null)
if if(this.playerAnimationsId != null)
if if(this.icon != null)
if if(this.translationProperties != null)
if if(this.resourceTypes != null)
if if(this.resourceTypes.length > 4096000)
if if(this.tool != null)
if if(this.weapon != null)
if if(this.armor != null)
if if(this.utility != null)
if if(this.builderToolData != null)
if if(this.itemEntity != null)
if if(this.set != null)
if if(this.categories != null)
if if(this.categories.length > 4096000)
if if(this.subCategory != null)
if if(this.particles != null)
if if(this.particles.length > 4096000)
if if(this.firstPersonParticles != null)
if if(this.firstPersonParticles.length > 4096000)
if if(this.trails != null)
if if(this.trails.length > 4096000)
if if(this.interactions != null)
if if(this.carryInteractions != null)
if if(this.carryHudInputBindings != null)
if if(this.interactionVars != null)
if if(this.interactionConfig != null)
if if(this.droppedItemAnimation != null)
if if(this.tagIndexes != null)
if if(this.tagIndexes.length > 4096000)
if if(this.itemAppearanceConditions != null)
if if(this.displayEntityStatsHUD != null)
if if(this.displayEntityStatsHUD.length > 4096000)
if if(this.hudUI != null)
if if(this.hudUI.length > 4096000)
if if(this.id != null)
if if(this.model != null)
if if(this.texture != null)
if if(this.animation != null)
if if(this.playerAnimationsId != null)
if if(this.icon != null)
if if(this.translationProperties != null)
if if(this.resourceTypes != null)
if if(this.tool != null)
if if(this.weapon != null)
if if(this.armor != null)
if if(this.utility != null)
if if(this.builderToolData != null)
if if(this.itemEntity != null)
if if(this.set != null)
if if(this.categories != null)
if if(this.subCategory != null)
if if(this.particles != null)
if if(this.firstPersonParticles != null)
if if(this.trails != null)
if if(this.interactions != null)
if if(this.carryInteractions != null)
if if(this.carryHudInputBindings != null)
if if(this.interactionVars != null)
if if(this.interactionConfig != null)
if if(this.droppedItemAnimation != null)
if if(this.tagIndexes != null)
if if(this.itemAppearanceConditions != null)
if if(this.displayEntityStatsHUD != null)
if if(this.hudUI != null)
if if(this.itemAppearanceConditions != 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 + 146, var4, "Id")
abstract requireSlot requireSlot(var0, var1 + 146, -1, "Id")
abstract requireSlot requireSlot(var0, var1 + 150, var4, "Model")
abstract requireSlot requireSlot(var0, var1 + 150, -1, "Model")
abstract requireSlot requireSlot(var0, var1 + 154, var4, "Texture")
abstract requireSlot requireSlot(var0, var1 + 154, -1, "Texture")
abstract requireSlot requireSlot(var0, var1 + 158, var4, "Animation")
abstract requireSlot requireSlot(var0, var1 + 158, -1, "Animation")
abstract requireSlot requireSlot(var0, var1 + 162, var4, "PlayerAnimationsId")
abstract requireSlot requireSlot(var0, var1 + 162, -1, "PlayerAnimationsId")
abstract requireSlot requireSlot(var0, var1 + 166, var4, "Icon")
abstract requireSlot requireSlot(var0, var1 + 166, -1, "Icon")
abstract requireSlot requireSlot(var0, var1 + 170, var4, "TranslationProperties")
abstract requireSlot requireSlot(var0, var1 + 170, -1, "TranslationProperties")
abstract requireSlot requireSlot(var0, var1 + 174, var4, "ResourceTypes")
abstract requireSlot requireSlot(var0, var1 + 174, -1, "ResourceTypes")
abstract requireSlot requireSlot(var0, var1 + 178, var4, "Tool")
abstract requireSlot requireSlot(var0, var1 + 178, -1, "Tool")
abstract requireSlot requireSlot(var0, var1 + 182, var4, "Weapon")
abstract requireSlot requireSlot(var0, var1 + 182, -1, "Weapon")
abstract requireSlot requireSlot(var0, var1 + 186, var4, "Armor")
abstract requireSlot requireSlot(var0, var1 + 186, -1, "Armor")
abstract requireSlot requireSlot(var0, var1 + 190, var4, "Utility")
abstract requireSlot requireSlot(var0, var1 + 190, -1, "Utility")
abstract requireSlot requireSlot(var0, var1 + 194, var4, "BuilderToolData")
abstract requireSlot requireSlot(var0, var1 + 194, -1, "BuilderToolData")
abstract requireSlot requireSlot(var0, var1 + 198, var4, "ItemEntity")
abstract requireSlot requireSlot(var0, var1 + 198, -1, "ItemEntity")
abstract requireSlot requireSlot(var0, var1 + 202, var4, "Set")
abstract requireSlot requireSlot(var0, var1 + 202, -1, "Set")
abstract requireSlot requireSlot(var0, var1 + 206, var4, "Categories")
abstract requireSlot requireSlot(var0, var1 + 206, -1, "Categories")
abstract requireSlot requireSlot(var0, var1 + 210, var4, "SubCategory")
abstract requireSlot requireSlot(var0, var1 + 210, -1, "SubCategory")
abstract requireSlot requireSlot(var0, var1 + 214, var4, "Particles")
abstract requireSlot requireSlot(var0, var1 + 214, -1, "Particles")
abstract requireSlot requireSlot(var0, var1 + 218, var4, "FirstPersonParticles")
abstract requireSlot requireSlot(var0, var1 + 218, -1, "FirstPersonParticles")
abstract requireSlot requireSlot(var0, var1 + 222, var4, "Trails")
abstract requireSlot requireSlot(var0, var1 + 222, -1, "Trails")
abstract requireSlot requireSlot(var0, var1 + 226, var4, "Interactions")
abstract requireSlot requireSlot(var0, var1 + 226, -1, "Interactions")
abstract requireSlot requireSlot(var0, var1 + 230, var4, "CarryInteractions")
abstract requireSlot requireSlot(var0, var1 + 230, -1, "CarryInteractions")
abstract requireSlot requireSlot(var0, var1 + 234, var4, "CarryHudInputBindings")
abstract requireSlot requireSlot(var0, var1 + 234, -1, "CarryHudInputBindings")
abstract requireSlot requireSlot(var0, var1 + 238, var4, "InteractionVars")
abstract requireSlot requireSlot(var0, var1 + 238, -1, "InteractionVars")
abstract requireSlot requireSlot(var0, var1 + 242, var4, "InteractionConfig")
abstract requireSlot requireSlot(var0, var1 + 242, -1, "InteractionConfig")
abstract requireSlot requireSlot(var0, var1 + 246, var4, "DroppedItemAnimation")
abstract requireSlot requireSlot(var0, var1 + 246, -1, "DroppedItemAnimation")
abstract requireSlot requireSlot(var0, var1 + 250, var4, "TagIndexes")
abstract requireSlot requireSlot(var0, var1 + 250, -1, "TagIndexes")
abstract requireSlot requireSlot(var0, var1 + 254, var4, "ItemAppearanceConditions")
abstract requireSlot requireSlot(var0, var1 + 254, -1, "ItemAppearanceConditions")
abstract requireSlot requireSlot(var0, var1 + 258, var4, "DisplayEntityStatsHUD")
abstract requireSlot requireSlot(var0, var1 + 258, -1, "DisplayEntityStatsHUD")
abstract requireSlot requireSlot(var0, var1 + 262, var4, "HudUI")
abstract requireSlot requireSlot(var0, var1 + 262, -1, "HudUI")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static ItemBase toObjectItemBase toObject(MemorySegment var0)
static ItemBase toObjectItemBase toObject(MemorySegment var0, int var1)
static ItemBase toObjectItemBase 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 com.hypixel.hytale.protocol.packets.buildertools.BuilderToolState;
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.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ItemBase {
   class="kw">public class="kw">static class="kw">final int NULLABLE_BIT_FIELD_SIZE = 5;
   class="kw">public class="kw">static class="kw">final int FIXED_BLOCK_SIZE = 146;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 30;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 266;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 1677721600;
   @Nullable
   class="kw">public String id;
   @Nullable
   class="kw">public String model;
   class="kw">public float scale;
   @Nullable
   class="kw">public String texture;
   @Nullable
   class="kw">public String animation;
   @Nullable
   class="kw">public String playerAnimationsId;
   class="kw">public boolean usePlayerAnimations;
   class="kw">public int maxStack;
   class="kw">public int reticleIndex;
   @Nullable
   class="kw">public String icon;
   @Nullable
   class="kw">public AssetIconProperties iconProperties;
   @Nullable
   class="kw">public ItemTranslationProperties translationProperties;
   class="kw">public int itemLevel;
   class="kw">public int qualityIndex;
   @Nullable
   class="kw">public ItemResourceType[] resourceTypes;
   class="kw">public boolean consumable;
   class="kw">public boolean variant;
   class="kw">public int blockId;
   @Nullable
   class="kw">public ItemTool tool;
   @Nullable
   class="kw">public ItemWeapon weapon;
   @Nullable
   class="kw">public ItemArmor armor;
   @Nullable
   class="kw">public ItemGlider gliderConfig;
   @Nullable
   class="kw">public ItemUtility utility;
   @Nullable
   class="kw">public BlockSelectorToolData blockSelectorTool;
   @Nullable
   class="kw">public BuilderToolState builderToolData;
   @Nullable
   class="kw">public ItemEntityConfig itemEntity;
   @Nullable
   class="kw">public String set;
   @Nullable
   class="kw">public String[] categories;
   @Nullable
   class="kw">public String subCategory;
   @Nullable
   class="kw">public ModelParticle[] particles;
   @Nullable
   class="kw">public ModelParticle[] firstPersonParticles;
   @Nullable
   class="kw">public ModelTrail[] trails;
   @Nullable
   class="kw">public ColorLight light;
   class="kw">public double durability;
   class="kw">public int soundEventIndex;
   class="kw">public int itemSoundSetIndex;
   @Nullable
   class="kw">public Map<InteractionType, Integer> interactions;
   @Nullable
   class="kw">public Map<InteractionType, Integer> carryInteractions;
   @Nullable
   class="kw">public Map<InteractionType, String> carryHudInputBindings;
   @Nullable
   class="kw">public Map<String, Integer> interactionVars;
   @Nullable
   class="kw">public InteractionConfiguration interactionConfig;
   @Nullable
   class="kw">public String droppedItemAnimation;
   @Nullable
   class="kw">public int[] tagIndexes;
   @Nullable
   class="kw">public Map<Integer, ItemAppearanceCondition[]> itemAppearanceConditions;
   @Nullable
   class="kw">public int[] displayEntityStatsHUD;
   @Nullable
   class="kw">public ItemPullbackConfiguration pullbackConfig;
   class="kw">public boolean clipsGeometry;
   class="kw">public boolean renderDeployablePreview;
   @Nullable
   class="kw">public ItemHudUI[] hudUI;

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

   class="kw">public ItemBase(
      @Nullable String var1,
      @Nullable String var2,
      float var3,
      @Nullable String var4,
      @Nullable String var5,
      @Nullable String var6,
      boolean var7,
      int var8,
      int var9,
      @Nullable String var10,
      @Nullable AssetIconProperties var11,
      @Nullable ItemTranslationProperties var12,
      int var13,
      int var14,
      @Nullable ItemResourceType[] var15,
      boolean var16,
      boolean var17,
      int var18,
      @Nullable ItemTool var19,
      @Nullable ItemWeapon var20,
      @Nullable ItemArmor var21,
      @Nullable ItemGlider var22,
      @Nullable ItemUtility var23,
      @Nullable BlockSelectorToolData var24,
      @Nullable BuilderToolState var25,
      @Nullable ItemEntityConfig var26,
      @Nullable String var27,
      @Nullable String[] var28,
      @Nullable String var29,
      @Nullable ModelParticle[] var30,
      @Nullable ModelParticle[] var31,
      @Nullable ModelTrail[] var32,
      @Nullable ColorLight var33,
      double var34,
      int var36,
      int var37,
      @Nullable Map<InteractionType, Integer> var38,
      @Nullable Map<InteractionType, Integer> var39,
      @Nullable Map<InteractionType, String> var40,
      @Nullable Map<String, Integer> var41,
      @Nullable InteractionConfiguration var42,
      @Nullable String var43,
      @Nullable int[] var44,
      @Nullable Map<Integer, ItemAppearanceCondition[]> var45,
      @Nullable int[] var46,
      @Nullable ItemPullbackConfiguration var47,
      boolean var48,
      boolean var49,
      @Nullable ItemHudUI[] var50
   ) {
      this.id = var1;
      this.model = var2;
      this.scale = var3;
      this.texture = var4;
      this.animation = var5;
      this.playerAnimationsId = var6;
      this.usePlayerAnimations = var7;
      this.maxStack = var8;
      this.reticleIndex = var9;
      this.icon = var10;
      this.iconProperties = var11;
      this.translationProperties = var12;
      this.itemLevel = var13;
      this.qualityIndex = var14;
      this.resourceTypes = var15;
      this.consumable = var16;
      this.variant = var17;
      this.blockId = var18;
      this.tool = var19;
      this.weapon = var20;
      this.armor = var21;
      this.gliderConfig = var22;
      this.utility = var23;
      this.blockSelectorTool = var24;
      this.builderToolData = var25;
      this.itemEntity = var26;
      this.set = var27;
      this.categories = var28;
      this.subCategory = var29;
      this.particles = var30;
      this.firstPersonParticles = var31;
      this.trails = var32;
      this.light = var33;
      this.durability = var34;
      this.soundEventIndex = var36;
      this.itemSoundSetIndex = var37;
      this.interactions = var38;
      this.carryInteractions = var39;
      this.carryHudInputBindings = var40;
      this.interactionVars = var41;
      this.interactionConfig = var42;
      this.droppedItemAnimation = var43;
      this.tagIndexes = var44;
      this.itemAppearanceConditions = var45;
      this.displayEntityStatsHUD = var46;
      this.pullbackConfig = var47;
      this.clipsGeometry = var48;
      this.renderDeployablePreview = var49;
      this.hudUI = var50;
   }

   class="kw">public ItemBase(@Nonnull ItemBase var1) {
      this.id = var1.id;
      this.model = var1.model;
      this.scale = var1.scale;
      this.texture = var1.texture;
      this.animation = var1.animation;
      this.playerAnimationsId = var1.playerAnimationsId;
      this.usePlayerAnimations = var1.usePlayerAnimations;
      this.maxStack = var1.maxStack;
      this.reticleIndex = var1.reticleIndex;
      this.icon = var1.icon;
      this.iconProperties = var1.iconProperties;
      this.translationProperties = var1.translationProperties;
      this.itemLevel = var1.itemLevel;
      this.qualityIndex = var1.qualityIndex;
      this.resourceTypes = var1.resourceTypes;
      this.consumable = var1.consumable;
      this.variant = var1.variant;
      this.blockId = var1.blockId;
      this.tool = var1.tool;
      this.weapon = var1.weapon;
      this.armor = var1.armor;
      this.gliderConfig = var1.gliderConfig;
      this.utility = var1.utility;
      this.blockSelectorTool = var1.blockSelectorTool;
      this.builderToolData = var1.builderToolData;
      this.itemEntity = var1.itemEntity;
      this.set = var1.set;
      this.categories = var1.categories;
      this.subCategory = var1.subCategory;
      this.particles = var1.particles;
      this.firstPersonParticles = var1.firstPersonParticles;
      this.trails = var1.trails;
      this.light = var1.light;
      this.durability = var1.durability;
      this.soundEventIndex = var1.soundEventIndex;
      this.itemSoundSetIndex = var1.itemSoundSetIndex;
      this.interactions = var1.interactions;
      this.carryInteractions = var1.carryInteractions;
      this.carryHudInputBindings = var1.carryHudInputBindings;
      this.interactionVars = var1.interactionVars;
      this.interactionConfig = var1.interactionConfig;
      this.droppedItemAnimation = var1.droppedItemAnimation;
      this.tagIndexes = var1.tagIndexes;
      this.itemAppearanceConditions = var1.itemAppearanceConditions;
      this.displayEntityStatsHUD = var1.displayEntityStatsHUD;
      this.pullbackConfig = var1.pullbackConfig;
      this.clipsGeometry = var1.clipsGeometry;
      this.renderDeployablePreview = var1.renderDeployablePreview;
      this.hudUI = var1.hudUI;
   }

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static String getModel(MemorySegment var0, int var1) {
      class="kw">return hasModel(var0, var1) ? PacketIO.readVarString("Model", var0, var1 + getValidatedOffset(var0, var1, 150, 266, "Model"), 4096000) : null;
   }

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

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

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

   @Nullable
   class="kw">public class="kw">static String getTexture(MemorySegment var0, int var1) {
      class="kw">return hasTexture(var0, var1) ? PacketIO.readVarString("Texture", var0, var1 + getValidatedOffset(var0, var1, 154, 266, "Texture"), 4096000) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static String getAnimation(MemorySegment var0, int var1) {
      class="kw">return hasAnimation(var0, var1) ? PacketIO.readVarString("Animation", var0, var1 + getValidatedOffset(var0, var1, 158, 266, "Animation"), 4096000) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static String getPlayerAnimationsId(MemorySegment var0, int var1) {
      class="kw">return hasPlayerAnimationsId(var0, var1)
         ? PacketIO.readVarString("PlayerAnimationsId", var0, var1 + getValidatedOffset(var0, var1, 162, 266, "PlayerAnimationsId"), 4096000)
         : null;
   }

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static String getIcon(MemorySegment var0, int var1) {
      class="kw">return hasIcon(var0, var1) ? PacketIO.readVarString("Icon", var0, var1 + getValidatedOffset(var0, var1, 166, 266, "Icon"), 4096000) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static AssetIconProperties getIconProperties(MemorySegment var0, int var1) {
      class="kw">return hasIconProperties(var0, var1) ? AssetIconProperties.toObject(var0, var1 + 18) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemTranslationProperties getTranslationProperties(MemorySegment var0, int var1) {
      class="kw">return hasTranslationProperties(var0, var1)
         ? ItemTranslationProperties.toObject(var0, var1 + getValidatedOffset(var0, var1, 170, 266, "TranslationProperties"))
         : null;
   }

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

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

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

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

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

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

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

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

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

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

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

      class="kw">return var8;
   }

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

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

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

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

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

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

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

   @Nullable
   class="kw">public class="kw">static ItemTool getTool(MemorySegment var0, int var1) {
      class="kw">return hasTool(var0, var1) ? ItemTool.toObject(var0, var1 + getValidatedOffset(var0, var1, 178, 266, "Tool")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemWeapon getWeapon(MemorySegment var0, int var1) {
      class="kw">return hasWeapon(var0, var1) ? ItemWeapon.toObject(var0, var1 + getValidatedOffset(var0, var1, 182, 266, "Weapon")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemArmor getArmor(MemorySegment var0, int var1) {
      class="kw">return hasArmor(var0, var1) ? ItemArmor.toObject(var0, var1 + getValidatedOffset(var0, var1, 186, 266, "Armor")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemGlider getGliderConfig(MemorySegment var0, int var1) {
      class="kw">return hasGliderConfig(var0, var1) ? ItemGlider.toObject(var0, var1 + 56) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemUtility getUtility(MemorySegment var0, int var1) {
      class="kw">return hasUtility(var0, var1) ? ItemUtility.toObject(var0, var1 + getValidatedOffset(var0, var1, 190, 266, "Utility")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static BlockSelectorToolData getBlockSelectorTool(MemorySegment var0, int var1) {
      class="kw">return hasBlockSelectorTool(var0, var1) ? BlockSelectorToolData.toObject(var0, var1 + 72) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static BuilderToolState getBuilderToolData(MemorySegment var0, int var1) {
      class="kw">return hasBuilderToolData(var0, var1) ? BuilderToolState.toObject(var0, var1 + getValidatedOffset(var0, var1, 194, 266, "BuilderToolData")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemEntityConfig getItemEntity(MemorySegment var0, int var1) {
      class="kw">return hasItemEntity(var0, var1) ? ItemEntityConfig.toObject(var0, var1 + getValidatedOffset(var0, var1, 198, 266, "ItemEntity")) : null;
   }

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

   @Nullable
   class="kw">public class="kw">static String getSet(MemorySegment var0, int var1) {
      class="kw">return hasSet(var0, var1) ? PacketIO.readVarString("Set", var0, var1 + getValidatedOffset(var0, var1, 202, 266, "Set"), 4096000) : null;
   }

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

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

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

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

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Categories", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

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

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("Categories", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

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

   @Nullable
   class="kw">public class="kw">static String getSubCategory(MemorySegment var0, int var1) {
      class="kw">return hasSubCategory(var0, var1)
         ? PacketIO.readVarString("SubCategory", var0, var1 + getValidatedOffset(var0, var1, 210, 266, "SubCategory"), 4096000)
         : null;
   }

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

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

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

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

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

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

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

      class="kw">return var8;
   }

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

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

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

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

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

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

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

      class="kw">return var8;
   }

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

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

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

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

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

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

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

      class="kw">return var8;
   }

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

   @Nullable
   class="kw">public class="kw">static ColorLight getLight(MemorySegment var0, int var1) {
      class="kw">return hasLight(var0, var1) ? ColorLight.toObject(var0, var1 + 76) : null;
   }

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

   class="kw">public class="kw">static double getDurability(MemorySegment var0, int var1) {
      class="kw">return PacketIO.requireFinite(var0.get(PacketIO.PROTO_DOUBLE, var1 + 80), "Durability");
   }

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

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

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

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

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

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

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

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

      var2 += (int)(var3 >>> 32);
      if (var2 + var5 * 5L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Interactions", (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("Interactions", var8);
         }
      }

      class="kw">return var6;
   }

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

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

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

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

      var2 += (int)(var3 >>> 32);
      if (var2 + var5 * 5L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("CarryInteractions", (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("CarryInteractions", var8);
         }
      }

      class="kw">return var6;
   }

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

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

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

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

      var2 += (int)(var3 >>> 32);
      if (var2 + var5 * 2L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("CarryHudInputBindings", (int)Math.min(var2 + var5 * 2L, 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));
         long var9 = VarInt.getWithLength(var0, ++var2);
         String var11 = PacketIO.readVarString("value", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
         if (var6.put(var8, var11) != null) {
            throw ProtocolException.duplicateKey("CarryHudInputBindings", var8);
         }
      }

      class="kw">return var6;
   }

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

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

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

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

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

      Map var6 = new HashMap<>(var5);

      for (int var7 = 0; var7 < var5; var7++) {
         long var8 = VarInt.getWithLength(var0, var2);
         String var10 = PacketIO.readVarString("key", var0, var2, 0, 4096000, var8);
         var2 += (int)var8 + (int)(var8 >>> 32);
         int var11 = var0.get(PacketIO.PROTO_INT, var2);
         var2 += 4;
         if (var6.put(var10, var11) != null) {
            throw ProtocolException.duplicateKey("InteractionVars", var10);
         }
      }

      class="kw">return var6;
   }

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

   @Nullable
   class="kw">public class="kw">static InteractionConfiguration getInteractionConfig(MemorySegment var0, int var1) {
      class="kw">return hasInteractionConfig(var0, var1)
         ? InteractionConfiguration.toObject(var0, var1 + getValidatedOffset(var0, var1, 242, 266, "InteractionConfig"))
         : null;
   }

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

   @Nullable
   class="kw">public class="kw">static String getDroppedItemAnimation(MemorySegment var0, int var1) {
      class="kw">return hasDroppedItemAnimation(var0, var1)
         ? PacketIO.readVarString("DroppedItemAnimation", var0, var1 + getValidatedOffset(var0, var1, 246, 266, "DroppedItemAnimation"), 4096000)
         : null;
   }

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

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

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

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

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

      var2 += var6;
      int[] var7 = new int[var5];
      MemorySegment.copy(var0, PacketIO.PROTO_INT, var2, var7, 0, var5);
      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static Map<Integer, ItemAppearanceCondition[]> getItemAppearanceConditions(MemorySegment var0) {
      class="kw">return getItemAppearanceConditions(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static Map<Integer, ItemAppearanceCondition[]> getItemAppearanceConditions(MemorySegment var0, int var1) {
      if (!hasItemAppearanceConditions(var0, var1)) {
         class="kw">return null;
      }

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

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

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

      Map var7 = new HashMap<>(var6);

      for (int var8 = 0; var8 < var6; var8++) {
         int var9 = var0.get(PacketIO.PROTO_INT, var3);
         var3 += 4;
         long var10 = VarInt.getWithLength(var0, var3);
         if (var10 == -1L) {
            throw ProtocolException.invalidVarInt("value");
         }

         int var12 = (int)var10;
         int var13 = (int)(var10 >>> 32);
         if (var12 > 4096000) {
            throw ProtocolException.arrayTooLong("value", var12, 4096000);
         }

         if (var3 + var13 + var12 * 38L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("value", var3 + var13 + var12 * 38, (int)var0.byteSize());
         }

         var3 += var13;
         ItemAppearanceCondition[] var14 = new ItemAppearanceCondition[var12];

         for (int var15 = 0; var15 < var12; var15++) {
            var14[var15] = ItemAppearanceCondition.toObject(var0, var3, var2);
            var3 = var2.position;
         }

         if (var7.put(var9, var14) != null) {
            throw ProtocolException.duplicateKey("ItemAppearanceConditions", var9);
         }
      }

      class="kw">return var7;
   }

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

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

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

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

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

      var2 += var6;
      int[] var7 = new int[var5];
      MemorySegment.copy(var0, PacketIO.PROTO_INT, var2, var7, 0, var5);
      class="kw">return var7;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemPullbackConfiguration getPullbackConfig(MemorySegment var0, int var1) {
      class="kw">return hasPullbackConfig(var0, var1) ? ItemPullbackConfiguration.toObject(var0, var1 + 96) : null;
   }

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

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

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

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

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

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

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

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

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

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

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

      class="kw">return var8;
   }

   class="kw">public class="kw">static boolean hasIconProperties(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 hasGliderConfig(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 hasBlockSelectorTool(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 hasLight(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 hasPullbackConfig(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 hasId(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 hasModel(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 hasTexture(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 hasAnimation(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
      class="kw">return (var2 & 1) != 0;
   }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   class="kw">public class="kw">static boolean hasCarryInteractions(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
      class="kw">return (var2 & 4) != 0;
   }

   class="kw">public class="kw">static boolean hasCarryHudInputBindings(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
      class="kw">return (var2 & 8) != 0;
   }

   class="kw">public class="kw">static boolean hasInteractionVars(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
      class="kw">return (var2 & 16) != 0;
   }

   class="kw">public class="kw">static boolean hasInteractionConfig(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
      class="kw">return (var2 & 32) != 0;
   }

   class="kw">public class="kw">static boolean hasDroppedItemAnimation(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
      class="kw">return (var2 & 64) != 0;
   }

   class="kw">public class="kw">static boolean hasTagIndexes(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
      class="kw">return (var2 & 128) != 0;
   }

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

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

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

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

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

      String var46 = null;
      if (hasModel(var0, var1)) {
         requireSlot(var0, var1 + 150, var4, "Model");
         int var47 = var3 + var4;
         long var9 = VarInt.getWithLength(var0, var47);
         var46 = PacketIO.readVarString("Model", var0, var47, 0, 4096000, var9);
         var4 += (int)var9 + (int)(var9 >>> 32);
      } else {
         requireSlot(var0, var1 + 150, -1, "Model");
      }

      String var48 = null;
      if (hasTexture(var0, var1)) {
         requireSlot(var0, var1 + 154, var4, "Texture");
         int var49 = var3 + var4;
         long var10 = VarInt.getWithLength(var0, var49);
         var48 = PacketIO.readVarString("Texture", var0, var49, 0, 4096000, var10);
         var4 += (int)var10 + (int)(var10 >>> 32);
      } else {
         requireSlot(var0, var1 + 154, -1, "Texture");
      }

      String var50 = null;
      if (hasAnimation(var0, var1)) {
         requireSlot(var0, var1 + 158, var4, "Animation");
         int var51 = var3 + var4;
         long var11 = VarInt.getWithLength(var0, var51);
         var50 = PacketIO.readVarString("Animation", var0, var51, 0, 4096000, var11);
         var4 += (int)var11 + (int)(var11 >>> 32);
      } else {
         requireSlot(var0, var1 + 158, -1, "Animation");
      }

      String var52 = null;
      if (hasPlayerAnimationsId(var0, var1)) {
         requireSlot(var0, var1 + 162, var4, "PlayerAnimationsId");
         int var53 = var3 + var4;
         long var12 = VarInt.getWithLength(var0, var53);
         var52 = PacketIO.readVarString("PlayerAnimationsId", var0, var53, 0, 4096000, var12);
         var4 += (int)var12 + (int)(var12 >>> 32);
      } else {
         requireSlot(var0, var1 + 162, -1, "PlayerAnimationsId");
      }

      String var54 = null;
      if (hasIcon(var0, var1)) {
         requireSlot(var0, var1 + 166, var4, "Icon");
         int var55 = var3 + var4;
         long var13 = VarInt.getWithLength(var0, var55);
         var54 = PacketIO.readVarString("Icon", var0, var55, 0, 4096000, var13);
         var4 += (int)var13 + (int)(var13 >>> 32);
      } else {
         requireSlot(var0, var1 + 166, -1, "Icon");
      }

      ItemTranslationProperties var56 = null;
      if (hasTranslationProperties(var0, var1)) {
         requireSlot(var0, var1 + 170, var4, "TranslationProperties");
         var56 = ItemTranslationProperties.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 170, -1, "TranslationProperties");
      }

      ItemResourceType[] var57 = null;
      if (hasResourceTypes(var0, var1)) {
         requireSlot(var0, var1 + 174, var4, "ResourceTypes");
         int var14 = var3 + var4;
         long var15 = VarInt.getWithLength(var0, var14);
         if (var15 == -1L) {
            throw ProtocolException.invalidVarInt("ResourceTypes");
         }

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

         int var18 = (int)(var15 >>> 32);
         if (var14 + var18 + var17 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("ResourceTypes", (int)Math.min(var14 + var18 + var17 * 5L, 2147483647L), (int)var0.byteSize());
         }

         var14 += var18;
         var57 = new ItemResourceType[var17];

         for (int var19 = 0; var19 < var17; var19++) {
            var57[var19] = ItemResourceType.toObject(var0, var14, var5);
            var14 = var5.position;
         }

         var4 = var14 - var3;
      } else {
         requireSlot(var0, var1 + 174, -1, "ResourceTypes");
      }

      ItemTool var59 = null;
      if (hasTool(var0, var1)) {
         requireSlot(var0, var1 + 178, var4, "Tool");
         var59 = ItemTool.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 178, -1, "Tool");
      }

      ItemWeapon var60 = null;
      if (hasWeapon(var0, var1)) {
         requireSlot(var0, var1 + 182, var4, "Weapon");
         var60 = ItemWeapon.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 182, -1, "Weapon");
      }

      ItemArmor var16 = null;
      if (hasArmor(var0, var1)) {
         requireSlot(var0, var1 + 186, var4, "Armor");
         var16 = ItemArmor.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 186, -1, "Armor");
      }

      ItemUtility var61 = null;
      if (hasUtility(var0, var1)) {
         requireSlot(var0, var1 + 190, var4, "Utility");
         var61 = ItemUtility.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 190, -1, "Utility");
      }

      BuilderToolState var62 = null;
      if (hasBuilderToolData(var0, var1)) {
         requireSlot(var0, var1 + 194, var4, "BuilderToolData");
         var62 = BuilderToolState.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 194, -1, "BuilderToolData");
      }

      ItemEntityConfig var63 = null;
      if (hasItemEntity(var0, var1)) {
         requireSlot(var0, var1 + 198, var4, "ItemEntity");
         var63 = ItemEntityConfig.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 198, -1, "ItemEntity");
      }

      String var20 = null;
      if (hasSet(var0, var1)) {
         requireSlot(var0, var1 + 202, var4, "Set");
         int var21 = var3 + var4;
         long var22 = VarInt.getWithLength(var0, var21);
         var20 = PacketIO.readVarString("Set", var0, var21, 0, 4096000, var22);
         var4 += (int)var22 + (int)(var22 >>> 32);
      } else {
         requireSlot(var0, var1 + 202, -1, "Set");
      }

      String[] var64 = null;
      if (hasCategories(var0, var1)) {
         requireSlot(var0, var1 + 206, var4, "Categories");
         int var65 = var3 + var4;
         long var23 = VarInt.getWithLength(var0, var65);
         if (var23 == -1L) {
            throw ProtocolException.invalidVarInt("Categories");
         }

         int var25 = (int)var23;
         if (var25 > 4096000) {
            throw ProtocolException.arrayTooLong("Categories", var25, 4096000);
         }

         int var26 = (int)(var23 >>> 32);
         if (var65 + var26 + var25 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Categories", Math.min(var65 + var26 + var25, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var65 += var26;
         var64 = new String[var25];

         for (int var27 = 0; var27 < var25; var27++) {
            long var28 = VarInt.getWithLength(var0, var65);
            var64[var27] = PacketIO.readVarString("Categories", var0, var65, 0, 4096000, var28);
            var65 += (int)var28 + (int)(var28 >>> 32);
         }

         var4 = var65 - var3;
      } else {
         requireSlot(var0, var1 + 206, -1, "Categories");
      }

      String var67 = null;
      if (hasSubCategory(var0, var1)) {
         requireSlot(var0, var1 + 210, var4, "SubCategory");
         int var68 = var3 + var4;
         long var24 = VarInt.getWithLength(var0, var68);
         var67 = PacketIO.readVarString("SubCategory", var0, var68, 0, 4096000, var24);
         var4 += (int)var24 + (int)(var24 >>> 32);
      } else {
         requireSlot(var0, var1 + 210, -1, "SubCategory");
      }

      ModelParticle[] var69 = null;
      if (hasParticles(var0, var1)) {
         requireSlot(var0, var1 + 214, var4, "Particles");
         int var70 = var3 + var4;
         long var73 = VarInt.getWithLength(var0, var70);
         if (var73 == -1L) {
            throw ProtocolException.invalidVarInt("Particles");
         }

         int var81 = (int)var73;
         if (var81 > 4096000) {
            throw ProtocolException.arrayTooLong("Particles", var81, 4096000);
         }

         int var87 = (int)(var73 >>> 32);
         if (var70 + var87 + var81 * 42L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Particles", (int)Math.min(var70 + var87 + var81 * 42L, 2147483647L), (int)var0.byteSize());
         }

         var70 += var87;
         var69 = new ModelParticle[var81];

         for (int var29 = 0; var29 < var81; var29++) {
            var69[var29] = ModelParticle.toObject(var0, var70, var5);
            var70 = var5.position;
         }

         var4 = var70 - var3;
      } else {
         requireSlot(var0, var1 + 214, -1, "Particles");
      }

      ModelParticle[] var72 = null;
      if (hasFirstPersonParticles(var0, var1)) {
         requireSlot(var0, var1 + 218, var4, "FirstPersonParticles");
         int var74 = var3 + var4;
         long var77 = VarInt.getWithLength(var0, var74);
         if (var77 == -1L) {
            throw ProtocolException.invalidVarInt("FirstPersonParticles");
         }

         int var88 = (int)var77;
         if (var88 > 4096000) {
            throw ProtocolException.arrayTooLong("FirstPersonParticles", var88, 4096000);
         }

         int var94 = (int)(var77 >>> 32);
         if (var74 + var94 + var88 * 42L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("FirstPersonParticles", (int)Math.min(var74 + var94 + var88 * 42L, 2147483647L), (int)var0.byteSize());
         }

         var74 += var94;
         var72 = new ModelParticle[var88];

         for (int var30 = 0; var30 < var88; var30++) {
            var72[var30] = ModelParticle.toObject(var0, var74, var5);
            var74 = var5.position;
         }

         var4 = var74 - var3;
      } else {
         requireSlot(var0, var1 + 218, -1, "FirstPersonParticles");
      }

      ModelTrail[] var76 = null;
      if (hasTrails(var0, var1)) {
         requireSlot(var0, var1 + 222, var4, "Trails");
         int var78 = var3 + var4;
         long var82 = VarInt.getWithLength(var0, var78);
         if (var82 == -1L) {
            throw ProtocolException.invalidVarInt("Trails");
         }

         int var95 = (int)var82;
         if (var95 > 4096000) {
            throw ProtocolException.arrayTooLong("Trails", var95, 4096000);
         }

         int var101 = (int)(var82 >>> 32);
         if (var78 + var101 + var95 * 35L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Trails", (int)Math.min(var78 + var101 + var95 * 35L, 2147483647L), (int)var0.byteSize());
         }

         var78 += var101;
         var76 = new ModelTrail[var95];

         for (int var31 = 0; var31 < var95; var31++) {
            var76[var31] = ModelTrail.toObject(var0, var78, var5);
            var78 = var5.position;
         }

         var4 = var78 - var3;
      } else {
         requireSlot(var0, var1 + 222, -1, "Trails");
      }

      Map var80 = null;
      if (hasInteractions(var0, var1)) {
         requireSlot(var0, var1 + 226, var4, "Interactions");
         int var83 = var3 + var4;
         long var89 = VarInt.getWithLength(var0, var83);
         if (var89 == -1L) {
            throw ProtocolException.invalidVarInt("Interactions");
         }

         int var102 = (int)var89;
         if (var102 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("Interactions", var102, 4096000);
         }

         var83 += (int)(var89 >>> 32);
         if (var83 + var102 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Interactions", (int)Math.min(var83 + var102 * 5L, 2147483647L), (int)var0.byteSize());
         }

         var80 = new HashMap<>(var102);

         for (int var108 = 0; var108 < var102; var108++) {
            InteractionType var32 = InteractionType.fromValue(var0.get(PacketIO.PROTO_BYTE, var83));
            int var33 = var0.get(PacketIO.PROTO_INT, ++var83);
            var83 += 4;
            if (var80.put(var32, var33) != null) {
               throw ProtocolException.duplicateKey("Interactions", var32);
            }
         }

         var4 = var83 - var3;
      } else {
         requireSlot(var0, var1 + 226, -1, "Interactions");
      }

      Map var86 = null;
      if (hasCarryInteractions(var0, var1)) {
         requireSlot(var0, var1 + 230, var4, "CarryInteractions");
         int var90 = var3 + var4;
         long var96 = VarInt.getWithLength(var0, var90);
         if (var96 == -1L) {
            throw ProtocolException.invalidVarInt("CarryInteractions");
         }

         int var109 = (int)var96;
         if (var109 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("CarryInteractions", var109, 4096000);
         }

         var90 += (int)(var96 >>> 32);
         if (var90 + var109 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("CarryInteractions", (int)Math.min(var90 + var109 * 5L, 2147483647L), (int)var0.byteSize());
         }

         var86 = new HashMap<>(var109);

         for (int var112 = 0; var112 < var109; var112++) {
            InteractionType var116 = InteractionType.fromValue(var0.get(PacketIO.PROTO_BYTE, var90));
            int var34 = var0.get(PacketIO.PROTO_INT, ++var90);
            var90 += 4;
            if (var86.put(var116, var34) != null) {
               throw ProtocolException.duplicateKey("CarryInteractions", var116);
            }
         }

         var4 = var90 - var3;
      } else {
         requireSlot(var0, var1 + 230, -1, "CarryInteractions");
      }

      Map var93 = null;
      if (hasCarryHudInputBindings(var0, var1)) {
         requireSlot(var0, var1 + 234, var4, "CarryHudInputBindings");
         int var97 = var3 + var4;
         long var103 = VarInt.getWithLength(var0, var97);
         if (var103 == -1L) {
            throw ProtocolException.invalidVarInt("CarryHudInputBindings");
         }

         int var113 = (int)var103;
         if (var113 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("CarryHudInputBindings", var113, 4096000);
         }

         var97 += (int)(var103 >>> 32);
         if (var97 + var113 * 2L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("CarryHudInputBindings", (int)Math.min(var97 + var113 * 2L, 2147483647L), (int)var0.byteSize());
         }

         var93 = new HashMap<>(var113);

         for (int var117 = 0; var117 < var113; var117++) {
            InteractionType var123 = InteractionType.fromValue(var0.get(PacketIO.PROTO_BYTE, var97));
            long var35 = VarInt.getWithLength(var0, ++var97);
            String var37 = PacketIO.readVarString("value", var0, var97, 0, 4096000, var35);
            var97 += (int)var35 + (int)(var35 >>> 32);
            if (var93.put(var123, var37) != null) {
               throw ProtocolException.duplicateKey("CarryHudInputBindings", var123);
            }
         }

         var4 = var97 - var3;
      } else {
         requireSlot(var0, var1 + 234, -1, "CarryHudInputBindings");
      }

      Map var100 = null;
      if (hasInteractionVars(var0, var1)) {
         requireSlot(var0, var1 + 238, var4, "InteractionVars");
         int var104 = var3 + var4;
         long var110 = VarInt.getWithLength(var0, var104);
         if (var110 == -1L) {
            throw ProtocolException.invalidVarInt("InteractionVars");
         }

         int var118 = (int)var110;
         if (var118 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("InteractionVars", var118, 4096000);
         }

         var104 += (int)(var110 >>> 32);
         if (var104 + var118 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("InteractionVars", (int)Math.min(var104 + var118 * 5L, 2147483647L), (int)var0.byteSize());
         }

         var100 = new HashMap<>(var118);

         for (int var124 = 0; var124 < var118; var124++) {
            long var130 = VarInt.getWithLength(var0, var104);
            String var139 = PacketIO.readVarString("key", var0, var104, 0, 4096000, var130);
            var104 += (int)var130 + (int)(var130 >>> 32);
            int var38 = var0.get(PacketIO.PROTO_INT, var104);
            var104 += 4;
            if (var100.put(var139, var38) != null) {
               throw ProtocolException.duplicateKey("InteractionVars", var139);
            }
         }

         var4 = var104 - var3;
      } else {
         requireSlot(var0, var1 + 238, -1, "InteractionVars");
      }

      InteractionConfiguration var107 = null;
      if (hasInteractionConfig(var0, var1)) {
         requireSlot(var0, var1 + 242, var4, "InteractionConfig");
         var107 = InteractionConfiguration.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 242, -1, "InteractionConfig");
      }

      String var111 = null;
      if (hasDroppedItemAnimation(var0, var1)) {
         requireSlot(var0, var1 + 246, var4, "DroppedItemAnimation");
         int var114 = var3 + var4;
         long var119 = VarInt.getWithLength(var0, var114);
         var111 = PacketIO.readVarString("DroppedItemAnimation", var0, var114, 0, 4096000, var119);
         var4 += (int)var119 + (int)(var119 >>> 32);
      } else {
         requireSlot(var0, var1 + 246, -1, "DroppedItemAnimation");
      }

      int[] var115 = null;
      if (hasTagIndexes(var0, var1)) {
         requireSlot(var0, var1 + 250, var4, "TagIndexes");
         int var120 = var3 + var4;
         long var125 = VarInt.getWithLength(var0, var120);
         if (var125 == -1L) {
            throw ProtocolException.invalidVarInt("TagIndexes");
         }

         int var36 = (int)var125;
         if (var36 > 4096000) {
            throw ProtocolException.arrayTooLong("TagIndexes", var36, 4096000);
         }

         int var140 = (int)(var125 >>> 32);
         if (var120 + var140 + var36 * 4L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("TagIndexes", (int)Math.min(var120 + var140 + var36 * 4L, 2147483647L), (int)var0.byteSize());
         }

         var120 += var140;
         var115 = new int[var36];
         MemorySegment.copy(var0, PacketIO.PROTO_INT, var120, var115, 0, var36);
         var4 = var120 + var36 * 4 - var3;
      } else {
         requireSlot(var0, var1 + 250, -1, "TagIndexes");
      }

      Map var122 = null;
      if (hasItemAppearanceConditions(var0, var1)) {
         requireSlot(var0, var1 + 254, var4, "ItemAppearanceConditions");
         int var126 = var3 + var4;
         long var131 = VarInt.getWithLength(var0, var126);
         if (var131 == -1L) {
            throw ProtocolException.invalidVarInt("ItemAppearanceConditions");
         }

         int var141 = (int)var131;
         if (var141 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("ItemAppearanceConditions", var141, 4096000);
         }

         var126 += (int)(var131 >>> 32);
         if (var126 + var141 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("ItemAppearanceConditions", (int)Math.min(var126 + var141 * 5L, 2147483647L), (int)var0.byteSize());
         }

         var122 = new HashMap<>(var141);

         for (int var143 = 0; var143 < var141; var143++) {
            int var39 = var0.get(PacketIO.PROTO_INT, var126);
            var126 += 4;
            long var40 = VarInt.getWithLength(var0, var126);
            if (var40 == -1L) {
               throw ProtocolException.invalidVarInt("value");
            }

            int var42 = (int)var40;
            int var43 = (int)(var40 >>> 32);
            if (var42 > 4096000) {
               throw ProtocolException.arrayTooLong("value", var42, 4096000);
            }

            if (var126 + var43 + var42 * 38L > var0.byteSize()) {
               throw ProtocolException.bufferTooSmall("value", var126 + var43 + var42 * 38, (int)var0.byteSize());
            }

            var126 += var43;
            ItemAppearanceCondition[] var44 = new ItemAppearanceCondition[var42];

            for (int var45 = 0; var45 < var42; var45++) {
               var44[var45] = ItemAppearanceCondition.toObject(var0, var126, var5);
               var126 = var5.position;
            }

            if (var122.put(var39, var44) != null) {
               throw ProtocolException.duplicateKey("ItemAppearanceConditions", var39);
            }
         }

         var4 = var126 - var3;
      } else {
         requireSlot(var0, var1 + 254, -1, "ItemAppearanceConditions");
      }

      int[] var129 = null;
      if (hasDisplayEntityStatsHUD(var0, var1)) {
         requireSlot(var0, var1 + 258, var4, "DisplayEntityStatsHUD");
         int var132 = var3 + var4;
         long var135 = VarInt.getWithLength(var0, var132);
         if (var135 == -1L) {
            throw ProtocolException.invalidVarInt("DisplayEntityStatsHUD");
         }

         int var144 = (int)var135;
         if (var144 > 4096000) {
            throw ProtocolException.arrayTooLong("DisplayEntityStatsHUD", var144, 4096000);
         }

         int var145 = (int)(var135 >>> 32);
         if (var132 + var145 + var144 * 4L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("DisplayEntityStatsHUD", (int)Math.min(var132 + var145 + var144 * 4L, 2147483647L), (int)var0.byteSize());
         }

         var132 += var145;
         var129 = new int[var144];
         MemorySegment.copy(var0, PacketIO.PROTO_INT, var132, var129, 0, var144);
         var4 = var132 + var144 * 4 - var3;
      } else {
         requireSlot(var0, var1 + 258, -1, "DisplayEntityStatsHUD");
      }

      ItemHudUI[] var134 = null;
      if (hasHudUI(var0, var1)) {
         requireSlot(var0, var1 + 262, var4, "HudUI");
         int var136 = var3 + var4;
         long var142 = VarInt.getWithLength(var0, var136);
         if (var142 == -1L) {
            throw ProtocolException.invalidVarInt("HudUI");
         }

         int var146 = (int)var142;
         if (var146 > 4096000) {
            throw ProtocolException.arrayTooLong("HudUI", var146, 4096000);
         }

         int var147 = (int)(var142 >>> 32);
         if (var136 + var147 + var146 * 2L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("HudUI", (int)Math.min(var136 + var147 + var146 * 2L, 2147483647L), (int)var0.byteSize());
         }

         var136 += var147;
         var134 = new ItemHudUI[var146];

         for (int var41 = 0; var41 < var146; var41++) {
            var134[var41] = ItemHudUI.toObject(var0, var136, var5);
            var136 = var5.position;
         }

         var4 = var136 - var3;
      } else {
         requireSlot(var0, var1 + 262, -1, "HudUI");
      }

      ItemBase var138 = new ItemBase(
         var6,
         var46,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_FLOAT, var1 + 5), "Scale"),
         var48,
         var50,
         var52,
         var0.get(PacketIO.PROTO_BOOL, var1 + 9),
         var0.get(PacketIO.PROTO_INT, var1 + 10),
         var0.get(PacketIO.PROTO_INT, var1 + 14),
         var54,
         hasIconProperties(var0, var1) ? AssetIconProperties.toObject(var0, var1 + 18) : null,
         var56,
         var0.get(PacketIO.PROTO_INT, var1 + 43),
         var0.get(PacketIO.PROTO_INT, var1 + 47),
         var57,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 51) & 1) != 0,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 51) & 2) != 0,
         var0.get(PacketIO.PROTO_INT, var1 + 52),
         var59,
         var60,
         var16,
         hasGliderConfig(var0, var1) ? ItemGlider.toObject(var0, var1 + 56) : null,
         var61,
         hasBlockSelectorTool(var0, var1) ? BlockSelectorToolData.toObject(var0, var1 + 72) : null,
         var62,
         var63,
         var20,
         var64,
         var67,
         var69,
         var72,
         var76,
         hasLight(var0, var1) ? ColorLight.toObject(var0, var1 + 76) : null,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_DOUBLE, var1 + 80), "Durability"),
         var0.get(PacketIO.PROTO_INT, var1 + 88),
         var0.get(PacketIO.PROTO_INT, var1 + 92),
         var80,
         var86,
         var93,
         var100,
         var107,
         var111,
         var115,
         var122,
         var129,
         hasPullbackConfig(var0, var1) ? ItemPullbackConfiguration.toObject(var0, var1 + 96) : null,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 145) & 1) != 0,
         (var0.get(PacketIO.PROTO_BYTE, var1 + 145) & 2) != 0,
         var134
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var138;
   }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 4, var3);
      PacketIO.requireFinite(this.scale, "Scale");
      var1.set(PacketIO.PROTO_FLOAT, var2 + 5, this.scale);
      var1.set(PacketIO.PROTO_BOOL, var2 + 9, this.usePlayerAnimations);
      var1.set(PacketIO.PROTO_INT, var2 + 10, this.maxStack);
      var1.set(PacketIO.PROTO_INT, var2 + 14, this.reticleIndex);
      if (this.iconProperties != null) {
         this.iconProperties.serialize(var1, var2 + 18);
      } else {
         var1.asSlice(var2 + 18, 25L).fill((byte)0);
      }

      var1.set(PacketIO.PROTO_INT, var2 + 43, this.itemLevel);
      var1.set(PacketIO.PROTO_INT, var2 + 47, this.qualityIndex);
      byte var4 = 0;
      if (this.consumable) {
         var4 = (byte)(var4 | 1);
      }

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 51 + 0, var4);
      var1.set(PacketIO.PROTO_INT, var2 + 52, this.blockId);
      if (this.gliderConfig != null) {
         this.gliderConfig.serialize(var1, var2 + 56);
      } else {
         var1.asSlice(var2 + 56, 16L).fill((byte)0);
      }

      if (this.blockSelectorTool != null) {
         this.blockSelectorTool.serialize(var1, var2 + 72);
      } else {
         var1.asSlice(var2 + 72, 4L).fill((byte)0);
      }

      if (this.light != null) {
         this.light.serialize(var1, var2 + 76);
      } else {
         var1.asSlice(var2 + 76, 4L).fill((byte)0);
      }

      PacketIO.requireFinite(this.durability, "Durability");
      var1.set(PacketIO.PROTO_DOUBLE, var2 + 80, this.durability);
      var1.set(PacketIO.PROTO_INT, var2 + 88, this.soundEventIndex);
      var1.set(PacketIO.PROTO_INT, var2 + 92, this.itemSoundSetIndex);
      if (this.pullbackConfig != null) {
         this.pullbackConfig.serialize(var1, var2 + 96);
      } else {
         var1.asSlice(var2 + 96, 49L).fill((byte)0);
      }

      byte var5 = 0;
      if (this.clipsGeometry) {
         var5 = (byte)(var5 | 1);
      }

      if (this.renderDeployablePreview) {
         var5 = (byte)(var5 | 2);
      }

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

      if (this.model != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 150, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.model, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 150, -1);
      }

      if (this.texture != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 154, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.texture, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 154, -1);
      }

      if (this.animation != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 158, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.animation, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 158, -1);
      }

      if (this.playerAnimationsId != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 162, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.playerAnimationsId, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 162, -1);
      }

      if (this.icon != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 166, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.icon, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 166, -1);
      }

      if (this.translationProperties != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 170, var6 - var2 - 266);
         var6 += this.translationProperties.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 170, -1);
      }

      if (this.resourceTypes != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 174, var6 - var2 - 266);
         if (this.resourceTypes.length > 4096000) {
            throw ProtocolException.arrayTooLong("ResourceTypes", this.resourceTypes.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.resourceTypes.length);
         int var7 = 0;

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

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

      if (this.tool != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 178, var6 - var2 - 266);
         var6 += this.tool.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 178, -1);
      }

      if (this.weapon != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 182, var6 - var2 - 266);
         var6 += this.weapon.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 182, -1);
      }

      if (this.armor != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 186, var6 - var2 - 266);
         var6 += this.armor.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 186, -1);
      }

      if (this.utility != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 190, var6 - var2 - 266);
         var6 += this.utility.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 190, -1);
      }

      if (this.builderToolData != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 194, var6 - var2 - 266);
         var6 += this.builderToolData.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 194, -1);
      }

      if (this.itemEntity != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 198, var6 - var2 - 266);
         var6 += this.itemEntity.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 198, -1);
      }

      if (this.set != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 202, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.set, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 202, -1);
      }

      if (this.categories != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 206, var6 - var2 - 266);
         if (this.categories.length > 4096000) {
            throw ProtocolException.arrayTooLong("Categories", this.categories.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.categories.length);
         int var30 = 0;

         for (int var40 = 0; var40 < this.categories.length; var40++) {
            var30 += PacketIO.writeVarString(var1, var6 + var30, this.categories[var40], 4096000);
         }

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

      if (this.subCategory != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 210, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.subCategory, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 210, -1);
      }

      if (this.particles != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 214, var6 - var2 - 266);
         if (this.particles.length > 4096000) {
            throw ProtocolException.arrayTooLong("Particles", this.particles.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.particles.length);
         int var31 = 0;

         for (int var41 = 0; var41 < this.particles.length; var41++) {
            var31 += this.particles[var41].serialize(var1, var6 + var31);
         }

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

      if (this.firstPersonParticles != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 218, var6 - var2 - 266);
         if (this.firstPersonParticles.length > 4096000) {
            throw ProtocolException.arrayTooLong("FirstPersonParticles", this.firstPersonParticles.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.firstPersonParticles.length);
         int var32 = 0;

         for (int var42 = 0; var42 < this.firstPersonParticles.length; var42++) {
            var32 += this.firstPersonParticles[var42].serialize(var1, var6 + var32);
         }

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

      if (this.trails != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 222, var6 - var2 - 266);
         if (this.trails.length > 4096000) {
            throw ProtocolException.arrayTooLong("Trails", this.trails.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.trails.length);
         int var33 = 0;

         for (int var43 = 0; var43 < this.trails.length; var43++) {
            var33 += this.trails[var43].serialize(var1, var6 + var33);
         }

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

      if (this.interactions != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 226, var6 - var2 - 266);
         if (this.interactions.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("Interactions", this.interactions.size(), 4096000);
         }

         var6 += VarInt.set(var1, var6, this.interactions.size());

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

      if (this.carryInteractions != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 230, var6 - var2 - 266);
         if (this.carryInteractions.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("CarryInteractions", this.carryInteractions.size(), 4096000);
         }

         var6 += VarInt.set(var1, var6, this.carryInteractions.size());

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

      if (this.carryHudInputBindings != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 234, var6 - var2 - 266);
         if (this.carryHudInputBindings.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("CarryHudInputBindings", this.carryHudInputBindings.size(), 4096000);
         }

         var6 += VarInt.set(var1, var6, this.carryHudInputBindings.size());

         for (Entry var46 : this.carryHudInputBindings.entrySet()) {
            var1.set(PacketIO.PROTO_BYTE, var6, (byte)var46.getKey().getValue());
            var6 = ++var6 + PacketIO.writeVarString(var1, var6, var46.getValue(), 4096000);
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 234, -1);
      }

      if (this.interactionVars != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 238, var6 - var2 - 266);
         if (this.interactionVars.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("InteractionVars", this.interactionVars.size(), 4096000);
         }

         var6 += VarInt.set(var1, var6, this.interactionVars.size());

         for (Entry var47 : this.interactionVars.entrySet()) {
            var6 += PacketIO.writeVarString(var1, var6, var47.getKey(), 4096000);
            var1.set(PacketIO.PROTO_INT, var6, var47.getValue());
            var6 += 4;
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 238, -1);
      }

      if (this.interactionConfig != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 242, var6 - var2 - 266);
         var6 += this.interactionConfig.serialize(var1, var6);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 242, -1);
      }

      if (this.droppedItemAnimation != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 246, var6 - var2 - 266);
         var6 += PacketIO.writeVarString(var1, var6, this.droppedItemAnimation, 4096000);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 246, -1);
      }

      if (this.tagIndexes != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 250, var6 - var2 - 266);
         if (this.tagIndexes.length > 4096000) {
            throw ProtocolException.arrayTooLong("TagIndexes", this.tagIndexes.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.tagIndexes.length);
         MemorySegment.copy(this.tagIndexes, 0, var1, PacketIO.PROTO_INT, var6, this.tagIndexes.length);
         var6 += this.tagIndexes.length * 4;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 250, -1);
      }

      if (this.itemAppearanceConditions != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 254, var6 - var2 - 266);
         if (this.itemAppearanceConditions.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("ItemAppearanceConditions", this.itemAppearanceConditions.size(), 4096000);
         }

         var6 += VarInt.set(var1, var6, this.itemAppearanceConditions.size());

         for (Entry var48 : this.itemAppearanceConditions.entrySet()) {
            var1.set(PacketIO.PROTO_INT, var6, var48.getKey());
            var6 += 4;
            var6 += VarInt.set(var1, var6, var48.getValue().length);

            for (ItemAppearanceCondition var12 : var48.getValue()) {
               var6 += var12.serialize(var1, var6);
            }
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 254, -1);
      }

      if (this.displayEntityStatsHUD != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 258, var6 - var2 - 266);
         if (this.displayEntityStatsHUD.length > 4096000) {
            throw ProtocolException.arrayTooLong("DisplayEntityStatsHUD", this.displayEntityStatsHUD.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.displayEntityStatsHUD.length);
         MemorySegment.copy(this.displayEntityStatsHUD, 0, var1, PacketIO.PROTO_INT, var6, this.displayEntityStatsHUD.length);
         var6 += this.displayEntityStatsHUD.length * 4;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 258, -1);
      }

      if (this.hudUI != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 262, var6 - var2 - 266);
         if (this.hudUI.length > 4096000) {
            throw ProtocolException.arrayTooLong("HudUI", this.hudUI.length, 4096000);
         }

         var6 += VarInt.set(var1, var6, this.hudUI.length);
         int var39 = 0;

         for (int var49 = 0; var49 < this.hudUI.length; var49++) {
            var39 += this.hudUI[var49].serialize(var1, var6 + var39);
         }

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

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

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

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

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

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

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

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

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

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

         for (ItemResourceType var6 : this.resourceTypes) {
            var2 += var6.computeSize();
         }

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

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

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

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

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

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

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

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

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

         for (String var36 : this.categories) {
            var7 += PacketIO.stringSize(var36);
         }

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

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

      if (this.particles != null) {
         int var8 = 0;

         for (ModelParticle var37 : this.particles) {
            var8 += var37.computeSize();
         }

         var1 += VarInt.size(this.particles.length) + var8;
      }

      if (this.firstPersonParticles != null) {
         int var9 = 0;

         for (ModelParticle var38 : this.firstPersonParticles) {
            var9 += var38.computeSize();
         }

         var1 += VarInt.size(this.firstPersonParticles.length) + var9;
      }

      if (this.trails != null) {
         int var10 = 0;

         for (ModelTrail var39 : this.trails) {
            var10 += var39.computeSize();
         }

         var1 += VarInt.size(this.trails.length) + var10;
      }

      if (this.interactions != null) {
         var1 += VarInt.size(this.interactions.size()) + this.interactions.size() * 5;
      }

      if (this.carryInteractions != null) {
         var1 += VarInt.size(this.carryInteractions.size()) + this.carryInteractions.size() * 5;
      }

      if (this.carryHudInputBindings != null) {
         int var11 = 0;

         for (Entry var27 : this.carryHudInputBindings.entrySet()) {
            var11 += 1 + PacketIO.stringSize(var27.getValue());
         }

         var1 += VarInt.size(this.carryHudInputBindings.size()) + var11;
      }

      if (this.interactionVars != null) {
         int var12 = 0;

         for (Entry var28 : this.interactionVars.entrySet()) {
            var12 += PacketIO.stringSize(var28.getKey()) + 4;
         }

         var1 += VarInt.size(this.interactionVars.size()) + var12;
      }

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

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

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

      if (this.itemAppearanceConditions != null) {
         int var13 = 0;

         for (Entry var29 : this.itemAppearanceConditions.entrySet()) {
            var13 += 4 + VarInt.size(var29.getValue().length) + Arrays.stream(var29.getValue()).mapToInt(var0 -> var0.computeSize()).sum();
         }

         var1 += VarInt.size(this.itemAppearanceConditions.size()) + var13;
      }

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

      if (this.hudUI != null) {
         int var14 = 0;

         for (ItemHudUI var40 : this.hudUI) {
            var14 += var40.computeSize();
         }

         var1 += VarInt.size(this.hudUI.length) + var14;
      }

      class="kw">return var1;
   }

   class="kw">public ItemBase clone() {
      ItemBase var1 = new ItemBase();
      var1.id = this.id;
      var1.model = this.model;
      var1.scale = this.scale;
      var1.texture = this.texture;
      var1.animation = this.animation;
      var1.playerAnimationsId = this.playerAnimationsId;
      var1.usePlayerAnimations = this.usePlayerAnimations;
      var1.maxStack = this.maxStack;
      var1.reticleIndex = this.reticleIndex;
      var1.icon = this.icon;
      var1.iconProperties = this.iconProperties != null ? this.iconProperties.clone() : null;
      var1.translationProperties = this.translationProperties != null ? this.translationProperties.clone() : null;
      var1.itemLevel = this.itemLevel;
      var1.qualityIndex = this.qualityIndex;
      var1.resourceTypes = this.resourceTypes != null ? Arrays.stream(this.resourceTypes).map(var0 -> var0.clone()).toArray(ItemResourceType[]::new) : null;
      var1.consumable = this.consumable;
      var1.variant = this.variant;
      var1.blockId = this.blockId;
      var1.tool = this.tool != null ? this.tool.clone() : null;
      var1.weapon = this.weapon != null ? this.weapon.clone() : null;
      var1.armor = this.armor != null ? this.armor.clone() : null;
      var1.gliderConfig = this.gliderConfig != null ? this.gliderConfig.clone() : null;
      var1.utility = this.utility != null ? this.utility.clone() : null;
      var1.blockSelectorTool = this.blockSelectorTool != null ? this.blockSelectorTool.clone() : null;
      var1.builderToolData = this.builderToolData != null ? this.builderToolData.clone() : null;
      var1.itemEntity = this.itemEntity != null ? this.itemEntity.clone() : null;
      var1.set = this.set;
      var1.categories = this.categories != null ? Arrays.copyOf(this.categories, this.categories.length) : null;
      var1.subCategory = this.subCategory;
      var1.particles = this.particles != null ? Arrays.stream(this.particles).map(var0 -> var0.clone()).toArray(ModelParticle[]::new) : null;
      var1.firstPersonParticles = this.firstPersonParticles != null
         ? Arrays.stream(this.firstPersonParticles).map(var0 -> var0.clone()).toArray(ModelParticle[]::new)
         : null;
      var1.trails = this.trails != null ? Arrays.stream(this.trails).map(var0 -> var0.clone()).toArray(ModelTrail[]::new) : null;
      var1.light = this.light != null ? this.light.clone() : null;
      var1.durability = this.durability;
      var1.soundEventIndex = this.soundEventIndex;
      var1.itemSoundSetIndex = this.itemSoundSetIndex;
      var1.interactions = this.interactions != null ? new HashMap<>(this.interactions) : null;
      var1.carryInteractions = this.carryInteractions != null ? new HashMap<>(this.carryInteractions) : null;
      var1.carryHudInputBindings = this.carryHudInputBindings != null ? new HashMap<>(this.carryHudInputBindings) : null;
      var1.interactionVars = this.interactionVars != null ? new HashMap<>(this.interactionVars) : null;
      var1.interactionConfig = this.interactionConfig != null ? this.interactionConfig.clone() : null;
      var1.droppedItemAnimation = this.droppedItemAnimation;
      var1.tagIndexes = this.tagIndexes != null ? Arrays.copyOf(this.tagIndexes, this.tagIndexes.length) : null;
      if (this.itemAppearanceConditions != null) {
         Map var2 = new HashMap<>();

         for (Entry var4 : this.itemAppearanceConditions.entrySet()) {
            var2.put(var4.getKey(), Arrays.stream(var4.getValue()).map(var0 -> var0.clone()).toArray(ItemAppearanceCondition[]::new));
         }

         var1.itemAppearanceConditions = var2;
      }

      var1.displayEntityStatsHUD = this.displayEntityStatsHUD != null ? Arrays.copyOf(this.displayEntityStatsHUD, this.displayEntityStatsHUD.length) : null;
      var1.pullbackConfig = this.pullbackConfig != null ? this.pullbackConfig.clone() : null;
      var1.clipsGeometry = this.clipsGeometry;
      var1.renderDeployablePreview = this.renderDeployablePreview;
      var1.hudUI = this.hudUI != null ? Arrays.stream(this.hudUI).map(var0 -> var0.clone()).toArray(ItemHudUI[]::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 ItemBase var2)
            ? false
            : Objects.equals(this.id, var2.id)
               && Objects.equals(this.model, var2.model)
               && this.scale == var2.scale
               && Objects.equals(this.texture, var2.texture)
               && Objects.equals(this.animation, var2.animation)
               && Objects.equals(this.playerAnimationsId, var2.playerAnimationsId)
               && this.usePlayerAnimations == var2.usePlayerAnimations
               && this.maxStack == var2.maxStack
               && this.reticleIndex == var2.reticleIndex
               && Objects.equals(this.icon, var2.icon)
               && Objects.equals(this.iconProperties, var2.iconProperties)
               && Objects.equals(this.translationProperties, var2.translationProperties)
               && this.itemLevel == var2.itemLevel
               && this.qualityIndex == var2.qualityIndex
               && Arrays.equals(this.resourceTypes, var2.resourceTypes)
               && this.consumable == var2.consumable
               && this.variant == var2.variant
               && this.blockId == var2.blockId
               && Objects.equals(this.tool, var2.tool)
               && Objects.equals(this.weapon, var2.weapon)
               && Objects.equals(this.armor, var2.armor)
               && Objects.equals(this.gliderConfig, var2.gliderConfig)
               && Objects.equals(this.utility, var2.utility)
               && Objects.equals(this.blockSelectorTool, var2.blockSelectorTool)
               && Objects.equals(this.builderToolData, var2.builderToolData)
               && Objects.equals(this.itemEntity, var2.itemEntity)
               && Objects.equals(this.set, var2.set)
               && Arrays.equals(this.categories, var2.categories)
               && Objects.equals(this.subCategory, var2.subCategory)
               && Arrays.equals(this.particles, var2.particles)
               && Arrays.equals(this.firstPersonParticles, var2.firstPersonParticles)
               && Arrays.equals(this.trails, var2.trails)
               && Objects.equals(this.light, var2.light)
               && this.durability == var2.durability
               && this.soundEventIndex == var2.soundEventIndex
               && this.itemSoundSetIndex == var2.itemSoundSetIndex
               && Objects.equals(this.interactions, var2.interactions)
               && Objects.equals(this.carryInteractions, var2.carryInteractions)
               && Objects.equals(this.carryHudInputBindings, var2.carryHudInputBindings)
               && Objects.equals(this.interactionVars, var2.interactionVars)
               && Objects.equals(this.interactionConfig, var2.interactionConfig)
               && Objects.equals(this.droppedItemAnimation, var2.droppedItemAnimation)
               && Arrays.equals(this.tagIndexes, var2.tagIndexes)
               && Objects.equals(this.itemAppearanceConditions, var2.itemAppearanceConditions)
               && Arrays.equals(this.displayEntityStatsHUD, var2.displayEntityStatsHUD)
               && Objects.equals(this.pullbackConfig, var2.pullbackConfig)
               && this.clipsGeometry == var2.clipsGeometry
               && this.renderDeployablePreview == var2.renderDeployablePreview
               && Arrays.equals(this.hudUI, var2.hudUI);
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Objects.hashCode(this.id);
      var1 = 31 * var1 + Objects.hashCode(this.model);
      var1 = 31 * var1 + Float.hashCode(this.scale);
      var1 = 31 * var1 + Objects.hashCode(this.texture);
      var1 = 31 * var1 + Objects.hashCode(this.animation);
      var1 = 31 * var1 + Objects.hashCode(this.playerAnimationsId);
      var1 = 31 * var1 + Boolean.hashCode(this.usePlayerAnimations);
      var1 = 31 * var1 + Integer.hashCode(this.maxStack);
      var1 = 31 * var1 + Integer.hashCode(this.reticleIndex);
      var1 = 31 * var1 + Objects.hashCode(this.icon);
      var1 = 31 * var1 + Objects.hashCode(this.iconProperties);
      var1 = 31 * var1 + Objects.hashCode(this.translationProperties);
      var1 = 31 * var1 + Integer.hashCode(this.itemLevel);
      var1 = 31 * var1 + Integer.hashCode(this.qualityIndex);
      var1 = 31 * var1 + Arrays.hashCode(this.resourceTypes);
      var1 = 31 * var1 + Boolean.hashCode(this.consumable);
      var1 = 31 * var1 + Boolean.hashCode(this.variant);
      var1 = 31 * var1 + Integer.hashCode(this.blockId);
      var1 = 31 * var1 + Objects.hashCode(this.tool);
      var1 = 31 * var1 + Objects.hashCode(this.weapon);
      var1 = 31 * var1 + Objects.hashCode(this.armor);
      var1 = 31 * var1 + Objects.hashCode(this.gliderConfig);
      var1 = 31 * var1 + Objects.hashCode(this.utility);
      var1 = 31 * var1 + Objects.hashCode(this.blockSelectorTool);
      var1 = 31 * var1 + Objects.hashCode(this.builderToolData);
      var1 = 31 * var1 + Objects.hashCode(this.itemEntity);
      var1 = 31 * var1 + Objects.hashCode(this.set);
      var1 = 31 * var1 + Arrays.hashCode(this.categories);
      var1 = 31 * var1 + Objects.hashCode(this.subCategory);
      var1 = 31 * var1 + Arrays.hashCode(this.particles);
      var1 = 31 * var1 + Arrays.hashCode(this.firstPersonParticles);
      var1 = 31 * var1 + Arrays.hashCode(this.trails);
      var1 = 31 * var1 + Objects.hashCode(this.light);
      var1 = 31 * var1 + Double.hashCode(this.durability);
      var1 = 31 * var1 + Integer.hashCode(this.soundEventIndex);
      var1 = 31 * var1 + Integer.hashCode(this.itemSoundSetIndex);
      var1 = 31 * var1 + Objects.hashCode(this.interactions);
      var1 = 31 * var1 + Objects.hashCode(this.carryInteractions);
      var1 = 31 * var1 + Objects.hashCode(this.carryHudInputBindings);
      var1 = 31 * var1 + Objects.hashCode(this.interactionVars);
      var1 = 31 * var1 + Objects.hashCode(this.interactionConfig);
      var1 = 31 * var1 + Objects.hashCode(this.droppedItemAnimation);
      var1 = 31 * var1 + Arrays.hashCode(this.tagIndexes);
      var1 = 31 * var1 + Objects.hashCode(this.itemAppearanceConditions);
      var1 = 31 * var1 + Arrays.hashCode(this.displayEntityStatsHUD);
      var1 = 31 * var1 + Objects.hashCode(this.pullbackConfig);
      var1 = 31 * var1 + Boolean.hashCode(this.clipsGeometry);
      var1 = 31 * var1 + Boolean.hashCode(this.renderDeployablePreview);
      class="kw">return 31 * var1 + Arrays.hashCode(this.hudUI);
   }
}