ItemArmor class

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

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

Поля (141)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
ItemArmor var1
int var1
var1
var1
var1
var1
var1
var1
var1
String var10
String var10
String var10
int var10
int var11
long var11
long var11
long var11
int var11
int var12
Modifier[] var13
int var13
int var13
int var13
int var13
int var14
int var14
int var14
long var14
ResistanceModifier[] var15
Modifier[] var15
Modifier[] var15
long var15
int var16
int var17
Modifier[] var18
long var2
int var2
int var2
int var2
int var2
int var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
int var2
Map var2
int var20
ResistanceModifier[] var21
Map var26
var26
int var27
long var3
long var3
long var3
long var3
long var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
Map var30
var30
int var31
Map var34
var34
long var35
int var36
Map var39
var39
int var4
int var4
var4
var4
var4
var4
var4
var4
int var4
int var40
long var41
int var42
ItemMovementSettings var45
var45
int var47
long var48
ItemArmor var49
int var5
int var5
int var5
int var5
int var5
int var5
ReadCursor var5
int var5
Map var5
int var51
long var52
int var54
String var56
long var57
long var58
String var59
int var6
Map var6
Map var6
Map var6
Map var6
Cosmetic[] var6
var6
int var6
Map var6
long var60
String var61
int var62
long var63
int var64
int var65
int var66
Modifier[] var67
int var68
Modifier[] var69
Cosmetic[] var7
int var7
int var7
Map var7
int var8
long var8
long var8
long var8
long var8
long var9
long var9

Методы (124)

МодификаторыВозвратСигнатура
public ItemArmor cloneItemArmor clone()
public int computeSizeint computeSize()
for for(int var8 = 0; var8 < var5; var8++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var14 = 0; var14 < var11; var14++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var16 = 0; var16 < var13; var16++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var16 = 0; var16 < var13; var16++)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var16 = 0; var16 < var13; var16++)
for for(int var12 = 0; var12 < var10; var12++)
for for(int var46 = 0; var46 < var40; var46++)
for for(int var19 = 0; var19 < var16; var19++)
for for(int var50 = 0; var50 < var47; var50++)
for for(int var22 = 0; var22 < var62; var22++)
for for(int var53 = 0; var53 < var51; var53++)
for for(int var23 = 0; var23 < var64; var23++)
for for(int var55 = 0; var55 < var54; var55++)
for for(int var24 = 0; var24 < var66; var24++)
for for(int var5 = 0; var5 < this.cosmeticsToHide.length; var5++)
static ItemArmorSlot getArmorSlotItemArmorSlot getArmorSlot(MemorySegment var0)
static ItemArmorSlot getArmorSlotItemArmorSlot getArmorSlot(MemorySegment var0, int var1)
abstract return getArmorSlotreturn getArmorSlot(var0, 0)
static double getBaseDamageResistancedouble getBaseDamageResistance(MemorySegment var0)
static double getBaseDamageResistancedouble getBaseDamageResistance(MemorySegment var0, int var1)
abstract return getBaseDamageResistancereturn getBaseDamageResistance(var0, 0)
abstract return getCosmeticsToHidereturn getCosmeticsToHide(var0, 0)
abstract return getDamageClassEnhancementreturn getDamageClassEnhancement(var0, 0)
abstract return getDamageEnhancementreturn getDamageEnhancement(var0, 0)
abstract return getDamageResistancereturn getDamageResistance(var0, 0)
abstract return getMovementSettingsreturn getMovementSettings(var0, 0)
abstract return getStatModifiersreturn getStatModifiers(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
static boolean hasCosmeticsToHideboolean hasCosmeticsToHide(MemorySegment var0, int var1)
static boolean hasDamageClassEnhancementboolean hasDamageClassEnhancement(MemorySegment var0, int var1)
static boolean hasDamageEnhancementboolean hasDamageEnhancement(MemorySegment var0, int var1)
static boolean hasDamageResistanceboolean hasDamageResistance(MemorySegment var0, int var1)
static boolean hasMovementSettingsboolean hasMovementSettings(MemorySegment var0, int var1)
static boolean hasStatModifiersboolean hasStatModifiers(MemorySegment var0, int var1)
if if(var1 < 0)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var9 == -1L)
if if(var11 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var11 == -1L)
if if(var13 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var11 == -1L)
if if(var13 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var11 == -1L)
if if(var13 > 4096000)
if if(var4 != var2)
if if(var8 == -1L)
if if(var10 > 4096000)
if if(var9 == -1L)
if if(var40 > 4096000)
if if(var14 == -1L)
if if(var16 > 4096000)
if if(var35 == -1L)
if if(var47 > 4096000)
if if(var58 == -1L)
if if(var62 > 4096000)
if if(var41 == -1L)
if if(var51 > 4096000)
if if(var60 == -1L)
if if(var64 > 4096000)
if if(var48 == -1L)
if if(var54 > 4096000)
if if(var63 == -1L)
if if(var66 > 4096000)
if if(var2 != null)
if if(this.cosmeticsToHide != null)
if if(this.statModifiers != null)
if if(this.damageResistance != null)
if if(this.damageEnhancement != null)
if if(this.damageClassEnhancement != null)
if if(this.movementSettings != null)
if if(this.cosmeticsToHide != null)
if if(this.cosmeticsToHide.length > 4096000)
if if(this.statModifiers != null)
if if(this.damageResistance != null)
if if(this.damageEnhancement != null)
if if(this.damageClassEnhancement != null)
if if(this.movementSettings != null)
if if(this.cosmeticsToHide != null)
if if(this.statModifiers != null)
if if(this.damageResistance != null)
if if(this.damageEnhancement != null)
if if(this.damageClassEnhancement != null)
if if(this.movementSettings != null)
if if(this.statModifiers != null)
if if(this.damageResistance != null)
if if(this.damageEnhancement != null)
if if(this.damageClassEnhancement != 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 + 10, var4, "CosmeticsToHide")
abstract requireSlot requireSlot(var0, var1 + 10, -1, "CosmeticsToHide")
abstract requireSlot requireSlot(var0, var1 + 14, var4, "StatModifiers")
abstract requireSlot requireSlot(var0, var1 + 14, -1, "StatModifiers")
abstract requireSlot requireSlot(var0, var1 + 18, var4, "DamageResistance")
abstract requireSlot requireSlot(var0, var1 + 18, -1, "DamageResistance")
abstract requireSlot requireSlot(var0, var1 + 22, var4, "DamageEnhancement")
abstract requireSlot requireSlot(var0, var1 + 22, -1, "DamageEnhancement")
abstract requireSlot requireSlot(var0, var1 + 26, var4, "DamageClassEnhancement")
abstract requireSlot requireSlot(var0, var1 + 26, -1, "DamageClassEnhancement")
abstract requireSlot requireSlot(var0, var1 + 30, var4, "MovementSettings")
abstract requireSlot requireSlot(var0, var1 + 30, -1, "MovementSettings")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static ItemArmor toObjectItemArmor toObject(MemorySegment var0)
static ItemArmor toObjectItemArmor toObject(MemorySegment var0, int var1)
static ItemArmor toObjectItemArmor toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2)
abstract return toObjectreturn toObject(var0, 0, null)
abstract return toObjectreturn toObject(var0, var1, null)

Исходный код

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

class="kw">import com.hypixel.hytale.protocol.io.PacketIO;
class="kw">import com.hypixel.hytale.protocol.io.ProtocolException;
class="kw">import com.hypixel.hytale.protocol.io.ReadCursor;
class="kw">import com.hypixel.hytale.protocol.io.VarInt;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.util.Arrays;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ItemArmor {
   class="kw">public class="kw">static class="kw">final int NULLABLE_BIT_FIELD_SIZE = 1;
   class="kw">public class="kw">static class="kw">final int FIXED_BLOCK_SIZE = 10;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 6;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 34;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 1677721600;
   @Nonnull
   class="kw">public ItemArmorSlot armorSlot = ItemArmorSlot.Head;
   @Nullable
   class="kw">public Cosmetic[] cosmeticsToHide;
   @Nullable
   class="kw">public Map<Integer, Modifier[]> statModifiers;
   class="kw">public double baseDamageResistance;
   @Nullable
   class="kw">public Map<String, ResistanceModifier[]> damageResistance;
   @Nullable
   class="kw">public Map<String, Modifier[]> damageEnhancement;
   @Nullable
   class="kw">public Map<String, Modifier[]> damageClassEnhancement;
   @Nullable
   class="kw">public ItemMovementSettings movementSettings;

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

   class="kw">public ItemArmor(
      @Nonnull ItemArmorSlot var1,
      @Nullable Cosmetic[] var2,
      @Nullable Map<Integer, Modifier[]> var3,
      double var4,
      @Nullable Map<String, ResistanceModifier[]> var6,
      @Nullable Map<String, Modifier[]> var7,
      @Nullable Map<String, Modifier[]> var8,
      @Nullable ItemMovementSettings var9
   ) {
      this.armorSlot = var1;
      this.cosmeticsToHide = var2;
      this.statModifiers = var3;
      this.baseDamageResistance = var4;
      this.damageResistance = var6;
      this.damageEnhancement = var7;
      this.damageClassEnhancement = var8;
      this.movementSettings = var9;
   }

   class="kw">public ItemArmor(@Nonnull ItemArmor var1) {
      this.armorSlot = var1.armorSlot;
      this.cosmeticsToHide = var1.cosmeticsToHide;
      this.statModifiers = var1.statModifiers;
      this.baseDamageResistance = var1.baseDamageResistance;
      this.damageResistance = var1.damageResistance;
      this.damageEnhancement = var1.damageEnhancement;
      this.damageClassEnhancement = var1.damageClassEnhancement;
      this.movementSettings = var1.movementSettings;
   }

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

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

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

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

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

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

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

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

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

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

      for (int var8 = 0; var8 < var5; var8++) {
         var7[var8] = Cosmetic.fromValue(var0.get(PacketIO.PROTO_BYTE, var2 + var8 * 1));
      }

      class="kw">return var7;
   }

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

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

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

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

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

      Map var6 = new HashMap<>(var5);

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

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

         if (var2 + var12 + var11 * 6L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("value", var2 + var12 + var11 * 6, (int)var0.byteSize());
         }

         var2 += var12;
         Modifier[] var13 = new Modifier[var11];

         for (int var14 = 0; var14 < var11; var14++) {
            var13[var14] = Modifier.toObject(var0, var2);
            var2 += 6;
         }

         if (var6.put(var8, var13) != null) {
            throw ProtocolException.duplicateKey("StatModifiers", var8);
         }
      }

      class="kw">return var6;
   }

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

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

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

   @Nullable
   class="kw">public class="kw">static Map<String, ResistanceModifier[]> getDamageResistance(MemorySegment var0, int var1) {
      if (!hasDamageResistance(var0, var1)) {
         class="kw">return null;
      }

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

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

      var2 += (int)(var3 >>> 32);
      if (var2 + var5 * 2L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("DamageResistance", (int)Math.min(var2 + var5 * 2L, 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);
         long var11 = VarInt.getWithLength(var0, var2);
         if (var11 == -1L) {
            throw ProtocolException.invalidVarInt("value");
         }

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

         if (var2 + var14 + var13 * 5L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("value", var2 + var14 + var13 * 5, (int)var0.byteSize());
         }

         var2 += var14;
         ResistanceModifier[] var15 = new ResistanceModifier[var13];

         for (int var16 = 0; var16 < var13; var16++) {
            var15[var16] = ResistanceModifier.toObject(var0, var2);
            var2 += 5;
         }

         if (var6.put(var10, var15) != null) {
            throw ProtocolException.duplicateKey("DamageResistance", var10);
         }
      }

      class="kw">return var6;
   }

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

   @Nullable
   class="kw">public class="kw">static Map<String, Modifier[]> getDamageEnhancement(MemorySegment var0, int var1) {
      if (!hasDamageEnhancement(var0, var1)) {
         class="kw">return null;
      }

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

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

      var2 += (int)(var3 >>> 32);
      if (var2 + var5 * 2L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("DamageEnhancement", (int)Math.min(var2 + var5 * 2L, 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);
         long var11 = VarInt.getWithLength(var0, var2);
         if (var11 == -1L) {
            throw ProtocolException.invalidVarInt("value");
         }

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

         if (var2 + var14 + var13 * 6L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("value", var2 + var14 + var13 * 6, (int)var0.byteSize());
         }

         var2 += var14;
         Modifier[] var15 = new Modifier[var13];

         for (int var16 = 0; var16 < var13; var16++) {
            var15[var16] = Modifier.toObject(var0, var2);
            var2 += 6;
         }

         if (var6.put(var10, var15) != null) {
            throw ProtocolException.duplicateKey("DamageEnhancement", var10);
         }
      }

      class="kw">return var6;
   }

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

   @Nullable
   class="kw">public class="kw">static Map<String, Modifier[]> getDamageClassEnhancement(MemorySegment var0, int var1) {
      if (!hasDamageClassEnhancement(var0, var1)) {
         class="kw">return null;
      }

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

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

      var2 += (int)(var3 >>> 32);
      if (var2 + var5 * 2L > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("DamageClassEnhancement", (int)Math.min(var2 + var5 * 2L, 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);
         long var11 = VarInt.getWithLength(var0, var2);
         if (var11 == -1L) {
            throw ProtocolException.invalidVarInt("value");
         }

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

         if (var2 + var14 + var13 * 6L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("value", var2 + var14 + var13 * 6, (int)var0.byteSize());
         }

         var2 += var14;
         Modifier[] var15 = new Modifier[var13];

         for (int var16 = 0; var16 < var13; var16++) {
            var15[var16] = Modifier.toObject(var0, var2);
            var2 += 6;
         }

         if (var6.put(var10, var15) != null) {
            throw ProtocolException.duplicateKey("DamageClassEnhancement", var10);
         }
      }

      class="kw">return var6;
   }

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

   @Nullable
   class="kw">public class="kw">static ItemMovementSettings getMovementSettings(MemorySegment var0, int var1) {
      class="kw">return hasMovementSettings(var0, var1) ? ItemMovementSettings.toObject(var0, var1 + getValidatedOffset(var0, var1, 30, 34, "MovementSettings")) : null;
   }

   class="kw">public class="kw">static boolean hasCosmeticsToHide(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 hasStatModifiers(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 hasDamageResistance(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 hasDamageEnhancement(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 hasDamageClassEnhancement(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 hasMovementSettings(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 32) != 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 ItemArmor toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

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

   class="kw">public class="kw">static ItemArmor toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2) {
      requireBounds(var0, var1);
      int var3 = var1 + 34;
      int var4 = 0;
      ReadCursor var5 = var2 != null ? var2 : new ReadCursor();
      Cosmetic[] var6 = null;
      if (hasCosmeticsToHide(var0, var1)) {
         requireSlot(var0, var1 + 10, var4, "CosmeticsToHide");
         int var7 = var3 + var4;
         long var8 = VarInt.getWithLength(var0, var7);
         if (var8 == -1L) {
            throw ProtocolException.invalidVarInt("CosmeticsToHide");
         }

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

         int var11 = (int)(var8 >>> 32);
         if (var7 + var11 + var10 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("CosmeticsToHide", Math.min(var7 + var11 + var10, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var7 += var11;
         var6 = new Cosmetic[var10];

         for (int var12 = 0; var12 < var10; var12++) {
            var6[var12] = Cosmetic.fromValue(var0.get(PacketIO.PROTO_BYTE, var7 + var12 * 1));
         }

         var4 = var7 + var10 - var3;
      } else {
         requireSlot(var0, var1 + 10, -1, "CosmeticsToHide");
      }

      Map var26 = null;
      if (hasStatModifiers(var0, var1)) {
         requireSlot(var0, var1 + 14, var4, "StatModifiers");
         int var27 = var3 + var4;
         long var9 = VarInt.getWithLength(var0, var27);
         if (var9 == -1L) {
            throw ProtocolException.invalidVarInt("StatModifiers");
         }

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

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

         var26 = new HashMap<>(var40);

         for (int var46 = 0; var46 < var40; var46++) {
            int var13 = var0.get(PacketIO.PROTO_INT, var27);
            var27 += 4;
            long var14 = VarInt.getWithLength(var0, var27);
            if (var14 == -1L) {
               throw ProtocolException.invalidVarInt("value");
            }

            int var16 = (int)var14;
            int var17 = (int)(var14 >>> 32);
            if (var16 > 4096000) {
               throw ProtocolException.arrayTooLong("value", var16, 4096000);
            }

            if (var27 + var17 + var16 * 6L > var0.byteSize()) {
               throw ProtocolException.bufferTooSmall("value", var27 + var17 + var16 * 6, (int)var0.byteSize());
            }

            var27 += var17;
            Modifier[] var18 = new Modifier[var16];

            for (int var19 = 0; var19 < var16; var19++) {
               var18[var19] = Modifier.toObject(var0, var27);
               var27 += 6;
            }

            if (var26.put(var13, var18) != null) {
               throw ProtocolException.duplicateKey("StatModifiers", var13);
            }
         }

         var4 = var27 - var3;
      } else {
         requireSlot(var0, var1 + 14, -1, "StatModifiers");
      }

      Map var30 = null;
      if (hasDamageResistance(var0, var1)) {
         requireSlot(var0, var1 + 18, var4, "DamageResistance");
         int var31 = var3 + var4;
         long var35 = VarInt.getWithLength(var0, var31);
         if (var35 == -1L) {
            throw ProtocolException.invalidVarInt("DamageResistance");
         }

         int var47 = (int)var35;
         if (var47 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("DamageResistance", var47, 4096000);
         }

         var31 += (int)(var35 >>> 32);
         if (var31 + var47 * 2L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("DamageResistance", (int)Math.min(var31 + var47 * 2L, 2147483647L), (int)var0.byteSize());
         }

         var30 = new HashMap<>(var47);

         for (int var50 = 0; var50 < var47; var50++) {
            long var52 = VarInt.getWithLength(var0, var31);
            String var56 = PacketIO.readVarString("key", var0, var31, 0, 4096000, var52);
            var31 += (int)var52 + (int)(var52 >>> 32);
            long var58 = VarInt.getWithLength(var0, var31);
            if (var58 == -1L) {
               throw ProtocolException.invalidVarInt("value");
            }

            int var62 = (int)var58;
            int var20 = (int)(var58 >>> 32);
            if (var62 > 4096000) {
               throw ProtocolException.arrayTooLong("value", var62, 4096000);
            }

            if (var31 + var20 + var62 * 5L > var0.byteSize()) {
               throw ProtocolException.bufferTooSmall("value", var31 + var20 + var62 * 5, (int)var0.byteSize());
            }

            var31 += var20;
            ResistanceModifier[] var21 = new ResistanceModifier[var62];

            for (int var22 = 0; var22 < var62; var22++) {
               var21[var22] = ResistanceModifier.toObject(var0, var31);
               var31 += 5;
            }

            if (var30.put(var56, var21) != null) {
               throw ProtocolException.duplicateKey("DamageResistance", var56);
            }
         }

         var4 = var31 - var3;
      } else {
         requireSlot(var0, var1 + 18, -1, "DamageResistance");
      }

      Map var34 = null;
      if (hasDamageEnhancement(var0, var1)) {
         requireSlot(var0, var1 + 22, var4, "DamageEnhancement");
         int var36 = var3 + var4;
         long var41 = VarInt.getWithLength(var0, var36);
         if (var41 == -1L) {
            throw ProtocolException.invalidVarInt("DamageEnhancement");
         }

         int var51 = (int)var41;
         if (var51 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("DamageEnhancement", var51, 4096000);
         }

         var36 += (int)(var41 >>> 32);
         if (var36 + var51 * 2L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("DamageEnhancement", (int)Math.min(var36 + var51 * 2L, 2147483647L), (int)var0.byteSize());
         }

         var34 = new HashMap<>(var51);

         for (int var53 = 0; var53 < var51; var53++) {
            long var15 = VarInt.getWithLength(var0, var36);
            String var59 = PacketIO.readVarString("key", var0, var36, 0, 4096000, var15);
            var36 += (int)var15 + (int)(var15 >>> 32);
            long var60 = VarInt.getWithLength(var0, var36);
            if (var60 == -1L) {
               throw ProtocolException.invalidVarInt("value");
            }

            int var64 = (int)var60;
            int var65 = (int)(var60 >>> 32);
            if (var64 > 4096000) {
               throw ProtocolException.arrayTooLong("value", var64, 4096000);
            }

            if (var36 + var65 + var64 * 6L > var0.byteSize()) {
               throw ProtocolException.bufferTooSmall("value", var36 + var65 + var64 * 6, (int)var0.byteSize());
            }

            var36 += var65;
            Modifier[] var67 = new Modifier[var64];

            for (int var23 = 0; var23 < var64; var23++) {
               var67[var23] = Modifier.toObject(var0, var36);
               var36 += 6;
            }

            if (var34.put(var59, var67) != null) {
               throw ProtocolException.duplicateKey("DamageEnhancement", var59);
            }
         }

         var4 = var36 - var3;
      } else {
         requireSlot(var0, var1 + 22, -1, "DamageEnhancement");
      }

      Map var39 = null;
      if (hasDamageClassEnhancement(var0, var1)) {
         requireSlot(var0, var1 + 26, var4, "DamageClassEnhancement");
         int var42 = var3 + var4;
         long var48 = VarInt.getWithLength(var0, var42);
         if (var48 == -1L) {
            throw ProtocolException.invalidVarInt("DamageClassEnhancement");
         }

         int var54 = (int)var48;
         if (var54 > 4096000) {
            throw ProtocolException.dictionaryTooLarge("DamageClassEnhancement", var54, 4096000);
         }

         var42 += (int)(var48 >>> 32);
         if (var42 + var54 * 2L > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("DamageClassEnhancement", (int)Math.min(var42 + var54 * 2L, 2147483647L), (int)var0.byteSize());
         }

         var39 = new HashMap<>(var54);

         for (int var55 = 0; var55 < var54; var55++) {
            long var57 = VarInt.getWithLength(var0, var42);
            String var61 = PacketIO.readVarString("key", var0, var42, 0, 4096000, var57);
            var42 += (int)var57 + (int)(var57 >>> 32);
            long var63 = VarInt.getWithLength(var0, var42);
            if (var63 == -1L) {
               throw ProtocolException.invalidVarInt("value");
            }

            int var66 = (int)var63;
            int var68 = (int)(var63 >>> 32);
            if (var66 > 4096000) {
               throw ProtocolException.arrayTooLong("value", var66, 4096000);
            }

            if (var42 + var68 + var66 * 6L > var0.byteSize()) {
               throw ProtocolException.bufferTooSmall("value", var42 + var68 + var66 * 6, (int)var0.byteSize());
            }

            var42 += var68;
            Modifier[] var69 = new Modifier[var66];

            for (int var24 = 0; var24 < var66; var24++) {
               var69[var24] = Modifier.toObject(var0, var42);
               var42 += 6;
            }

            if (var39.put(var61, var69) != null) {
               throw ProtocolException.duplicateKey("DamageClassEnhancement", var61);
            }
         }

         var4 = var42 - var3;
      } else {
         requireSlot(var0, var1 + 26, -1, "DamageClassEnhancement");
      }

      ItemMovementSettings var45 = null;
      if (hasMovementSettings(var0, var1)) {
         requireSlot(var0, var1 + 30, var4, "MovementSettings");
         var45 = ItemMovementSettings.toObject(var0, var3 + var4, var5);
         var4 = var5.position - var3;
      } else {
         requireSlot(var0, var1 + 30, -1, "MovementSettings");
      }

      ItemArmor var49 = new ItemArmor(
         ItemArmorSlot.fromValue(var0.get(PacketIO.PROTO_BYTE, var1 + 1)),
         var6,
         var26,
         PacketIO.requireFinite(var0.get(PacketIO.PROTO_DOUBLE, var1 + 2), "BaseDamageResistance"),
         var30,
         var34,
         var39,
         var45
      );
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var49;
   }

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

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

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

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

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

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

      var1.set(PacketIO.PROTO_BYTE, var2 + 0, var3);
      var1.set(PacketIO.PROTO_BYTE, var2 + 1, (byte)this.armorSlot.getValue());
      PacketIO.requireFinite(this.baseDamageResistance, "BaseDamageResistance");
      var1.set(PacketIO.PROTO_DOUBLE, var2 + 2, this.baseDamageResistance);
      int var4 = var2 + 34;
      if (this.cosmeticsToHide != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 10, var4 - var2 - 34);
         if (this.cosmeticsToHide.length > 4096000) {
            throw ProtocolException.arrayTooLong("CosmeticsToHide", this.cosmeticsToHide.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.cosmeticsToHide.length);

         for (int var5 = 0; var5 < this.cosmeticsToHide.length; var5++) {
            var1.set(PacketIO.PROTO_BYTE, var4 + var5 * 1, (byte)this.cosmeticsToHide[var5].getValue());
         }

         var4 += this.cosmeticsToHide.length * 1;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 10, -1);
      }

      if (this.statModifiers != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 14, var4 - var2 - 34);
         if (this.statModifiers.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("StatModifiers", this.statModifiers.size(), 4096000);
         }

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

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

            for (Modifier var10 : var6.getValue()) {
               var4 += var10.serialize(var1, var4);
            }
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 14, -1);
      }

      if (this.damageResistance != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 18, var4 - var2 - 34);
         if (this.damageResistance.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("DamageResistance", this.damageResistance.size(), 4096000);
         }

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

         for (Entry var20 : this.damageResistance.entrySet()) {
            var4 += PacketIO.writeVarString(var1, var4, var20.getKey(), 4096000);
            var4 += VarInt.set(var1, var4, var20.getValue().length);

            for (ResistanceModifier var32 : var20.getValue()) {
               var4 += var32.serialize(var1, var4);
            }
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 18, -1);
      }

      if (this.damageEnhancement != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 22, var4 - var2 - 34);
         if (this.damageEnhancement.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("DamageEnhancement", this.damageEnhancement.size(), 4096000);
         }

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

         for (Entry var21 : this.damageEnhancement.entrySet()) {
            var4 += PacketIO.writeVarString(var1, var4, var21.getKey(), 4096000);
            var4 += VarInt.set(var1, var4, var21.getValue().length);

            for (Modifier var33 : var21.getValue()) {
               var4 += var33.serialize(var1, var4);
            }
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 22, -1);
      }

      if (this.damageClassEnhancement != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 26, var4 - var2 - 34);
         if (this.damageClassEnhancement.size() > 4096000) {
            throw ProtocolException.dictionaryTooLarge("DamageClassEnhancement", this.damageClassEnhancement.size(), 4096000);
         }

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

         for (Entry var22 : this.damageClassEnhancement.entrySet()) {
            var4 += PacketIO.writeVarString(var1, var4, var22.getKey(), 4096000);
            var4 += VarInt.set(var1, var4, var22.getValue().length);

            for (Modifier var34 : var22.getValue()) {
               var4 += var34.serialize(var1, var4);
            }
         }
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 26, -1);
      }

      if (this.movementSettings != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 30, var4 - var2 - 34);
         var4 += this.movementSettings.serialize(var1, var4);
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 30, -1);
      }

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

   class="kw">public int computeSize() {
      int var1 = 34;
      if (this.cosmeticsToHide != null) {
         var1 += VarInt.size(this.cosmeticsToHide.length) + this.cosmeticsToHide.length * 1;
      }

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

         for (Entry var4 : this.statModifiers.entrySet()) {
            var2 += 4 + VarInt.size(var4.getValue().length) + ((Modifier[])var4.getValue()).length * 6;
         }

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

      if (this.damageResistance != null) {
         int var5 = 0;

         for (Entry var11 : this.damageResistance.entrySet()) {
            var5 += PacketIO.stringSize(var11.getKey()) + VarInt.size(var11.getValue().length) + ((ResistanceModifier[])var11.getValue()).length * 5;
         }

         var1 += VarInt.size(this.damageResistance.size()) + var5;
      }

      if (this.damageEnhancement != null) {
         int var6 = 0;

         for (Entry var12 : this.damageEnhancement.entrySet()) {
            var6 += PacketIO.stringSize(var12.getKey()) + VarInt.size(var12.getValue().length) + ((Modifier[])var12.getValue()).length * 6;
         }

         var1 += VarInt.size(this.damageEnhancement.size()) + var6;
      }

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

         for (Entry var13 : this.damageClassEnhancement.entrySet()) {
            var7 += PacketIO.stringSize(var13.getKey()) + VarInt.size(var13.getValue().length) + ((Modifier[])var13.getValue()).length * 6;
         }

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

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

      class="kw">return var1;
   }

   class="kw">public ItemArmor clone() {
      ItemArmor var1 = new ItemArmor();
      var1.armorSlot = this.armorSlot;
      var1.cosmeticsToHide = this.cosmeticsToHide != null ? Arrays.copyOf(this.cosmeticsToHide, this.cosmeticsToHide.length) : null;
      if (this.statModifiers != null) {
         Map var2 = new HashMap<>();

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

         var1.statModifiers = var2;
      }

      var1.baseDamageResistance = this.baseDamageResistance;
      if (this.damageResistance != null) {
         Map var5 = new HashMap<>();

         for (Entry var11 : this.damageResistance.entrySet()) {
            var5.put(var11.getKey(), Arrays.stream(var11.getValue()).map(var0 -> var0.clone()).toArray(ResistanceModifier[]::new));
         }

         var1.damageResistance = var5;
      }

      if (this.damageEnhancement != null) {
         Map var6 = new HashMap<>();

         for (Entry var12 : this.damageEnhancement.entrySet()) {
            var6.put(var12.getKey(), Arrays.stream(var12.getValue()).map(var0 -> var0.clone()).toArray(Modifier[]::new));
         }

         var1.damageEnhancement = var6;
      }

      if (this.damageClassEnhancement != null) {
         Map var7 = new HashMap<>();

         for (Entry var13 : this.damageClassEnhancement.entrySet()) {
            var7.put(var13.getKey(), Arrays.stream(var13.getValue()).map(var0 -> var0.clone()).toArray(Modifier[]::new));
         }

         var1.damageClassEnhancement = var7;
      }

      var1.movementSettings = this.movementSettings != null ? this.movementSettings.clone() : null;
      class="kw">return var1;
   }

   @Override
   class="kw">public boolean equals(Object var1) {
      if (this == var1) {
         class="kw">return true;
      } else {
         class="kw">return !(var1 class="kw">instanceof ItemArmor var2)
            ? false
            : Objects.equals(this.armorSlot, var2.armorSlot)
               && Arrays.equals(this.cosmeticsToHide, var2.cosmeticsToHide)
               && Objects.equals(this.statModifiers, var2.statModifiers)
               && this.baseDamageResistance == var2.baseDamageResistance
               && Objects.equals(this.damageResistance, var2.damageResistance)
               && Objects.equals(this.damageEnhancement, var2.damageEnhancement)
               && Objects.equals(this.damageClassEnhancement, var2.damageClassEnhancement)
               && Objects.equals(this.movementSettings, var2.movementSettings);
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Objects.hashCode(this.armorSlot);
      var1 = 31 * var1 + Arrays.hashCode(this.cosmeticsToHide);
      var1 = 31 * var1 + Objects.hashCode(this.statModifiers);
      var1 = 31 * var1 + Double.hashCode(this.baseDamageResistance);
      var1 = 31 * var1 + Objects.hashCode(this.damageResistance);
      var1 = 31 * var1 + Objects.hashCode(this.damageEnhancement);
      var1 = 31 * var1 + Objects.hashCode(this.damageClassEnhancement);
      class="kw">return 31 * var1 + Objects.hashCode(this.movementSettings);
   }
}