ItemStack class

Пакет: com.hypixel.hytale.server.core.inventory

Файл: com/hypixel/hytale/server/core/inventory/ItemStack.java

implements: NetworkSerializable<ItemWithAllMetadata>

Поля (25)

МодификаторыТипИмя
public static final String BLOCK_HOLDER
Item var1
Item var1
ItemWithAllMetadata var1
ItemDisplayMetadata var1
ItemDisplayMetadata var1
int var1
var1
var1
var1
var1
String var2
ItemStack var2
long var2
var2
BsonDocument var3
BsonValue var3
BsonDocument var3
Item var4
BsonDocument var4
var4
BsonValue var4
double var5
BsonValue var5
boolean var6

Методы (39)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("itemId cannot be null!")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("itemId cannot be BlockTypeKey.EMPTY!")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Invalid state: " + var1)
public Metadatapublic Metadata()
public double getDurabilitydouble getDurability()
public <T> T getFromMetadataOrDefault<T> T getFromMetadataOrDefault(@Nonnull String var1, @Nonnull BuilderCodec<T> var2)
public double getMaxDurabilitydouble getMaxDurability()
public boolean getOverrideDroppedItemAnimationboolean getOverrideDroppedItemAnimation()
public int getQualityIndexint getQualityIndex()
public int getQuantityint getQuantity()
if if(var2 <= 0)
if if(var1 == null)
if if(var1 == null)
if if(var2 == null)
if if(var1 == 0)
if if(var3 == null)
if if(var6)
if if(this.cachedPacket != null)
if if(var1 == null)
if if(var1 == null)
if if(var3 == null)
if if(this == var1)
if if(this.quantity != var2.quantity)
public boolean isBrokenboolean isBroken()
public boolean isEmptyboolean isEmpty()
static boolean isEmptyboolean isEmpty(@Nullable ItemStack var0)
public boolean isEquivalentTypeboolean isEquivalentType(@Nullable ItemStack var1)
static boolean isEquivalentTypeboolean isEquivalentType(@Nullable ItemStack var0, ItemStack var1)
static boolean isSameItemTypeboolean isSameItemType(@Nullable ItemStack var0, @Nullable ItemStack var1)
public boolean isStackableWithboolean isStackableWith(@Nullable ItemStack var1)
static boolean isStackableWithboolean isStackableWith(@Nullable ItemStack var0, @Nullable ItemStack var1)
public boolean isUnbreakableboolean isUnbreakable()
public boolean isValidboolean isValid()
public void setOverrideDroppedItemAnimationvoid setOverrideDroppedItemAnimation(boolean var1)
abstract this this(var1, var2, var7)
abstract this this(var1, var2, var3, var5, var8)
abstract this this(var1, 1)
abstract this this(var1, var2, null)
public ItemWithAllMetadata toPacketItemWithAllMetadata toPacket()

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.ItemWithAllMetadata;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.metadata.ItemDisplayMetadata;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;

class="kw">public class ItemStack class="kw">implements NetworkSerializable<ItemWithAllMetadata> {
   @Nonnull
   class="kw">public class="kw">static class="kw">final ItemStack[] EMPTY_ARRAY = new ItemStack[0];
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<ItemStack> CODEC = BuilderCodec.builder(ItemStack.class, ItemStack::new)
      .append(new KeyedCodec<>("Id", Codec.STRING), (var0, var1) -> var0.itemId = var1, var0 -> var0.itemId)
      .addValidator(Validators.nonNull())
      .addValidator(Item.VALIDATOR_CACHE.getValidator().late())
      .add()
      .<Integer>append(new KeyedCodec<>("Quantity", Codec.INTEGER), (var0, var1) -> var0.quantity = var1, var0 -> var0.quantity)
      .addValidator(Validators.greaterThan(0))
      .add()
      .<Double>append(new KeyedCodec<>("Durability", Codec.DOUBLE), (var0, var1) -> var0.durability = var1, var0 -> var0.durability)
      .addValidator(Validators.greaterThanOrEqual(0.0))
      .add()
      .<Double>append(new KeyedCodec<>("MaxDurability", Codec.DOUBLE), (var0, var1) -> var0.maxDurability = var1, var0 -> var0.maxDurability)
      .addValidator(Validators.greaterThanOrEqual(0.0))
      .add()
      .append(new KeyedCodec<>("Quality", Codec.INTEGER), (var0, var1) -> var0.qualityIndex = var1, var0 -> var0.getQualityIndex())
      .add()
      .append(new KeyedCodec<>("Metadata", Codec.BSON_DOCUMENT), (var0, var1) -> var0.metadata = var1, var0 -> var0.metadata)
      .add()
      .append(
         new KeyedCodec<>("OverrideDroppedItemAnimation", Codec.BOOLEAN),
         (var0, var1) -> var0.overrideDroppedItemAnimation = var1,
         var0 -> var0.overrideDroppedItemAnimation
      )
      .add()
      .build();
   @Nonnull
   class="kw">public class="kw">static class="kw">final ItemStack EMPTY = new ItemStack() {
      {
         this.itemId = "Empty";
      }
   };
   class="kw">protected String itemId;
   class="kw">protected int quantity = 1;
   class="kw">protected double durability;
   class="kw">protected double maxDurability;
   class="kw">protected int qualityIndex = Integer.MIN_VALUE;
   class="kw">protected boolean overrideDroppedItemAnimation;
   @Nullable
   class="kw">protected BsonDocument metadata;
   @Nullable
   class="kw">private ItemWithAllMetadata cachedPacket;

   class="kw">public ItemStack(@Nonnull String var1, int var2, @Nullable BsonDocument var3) {
      if (var2 <= 0) {
         throw new IllegalArgumentException(String.format("quantity %s must be >0!", var2));
      }

      if (var1 == null) {
         throw new IllegalArgumentException("itemId cannot be null!");
      }

      if (var1.equals("Empty")) {
         throw new IllegalArgumentException("itemId cannot be BlockTypeKey.EMPTY!");
      }

      this.itemId = var1;
      this.quantity = var2;
      Item var4 = this.getItem();
      double var5 = var4.getMaxDurability();
      this.durability = var5;
      this.maxDurability = var5;
      this.qualityIndex = var4.getQualityIndex();
      this.metadata = var3;
   }

   class="kw">public ItemStack(@Nonnull String var1, int var2, double var3, double var5, @Nullable BsonDocument var7) {
      this(var1, var2, var7);
      this.durability = var3;
      this.maxDurability = var5;
   }

   class="kw">public ItemStack(@Nonnull String var1, int var2, double var3, double var5, int var7, @Nullable BsonDocument var8) {
      this(var1, var2, var3, var5, var8);
      this.qualityIndex = var7;
   }

   class="kw">public ItemStack(@Nonnull String var1) {
      this(var1, 1);
   }

   class="kw">public ItemStack(@Nonnull String var1, int var2) {
      this(var1, var2, null);
   }

   class="kw">protected ItemStack() {
   }

   @Nonnull
   class="kw">public String getItemId() {
      class="kw">return this.itemId;
   }

   class="kw">public int getQuantity() {
      class="kw">return this.quantity;
   }

   @Nullable
   @Deprecated
   class="kw">public BsonDocument getMetadata() {
      class="kw">return this.metadata == null ? null : this.metadata.clone();
   }

   class="kw">public boolean isUnbreakable() {
      class="kw">return this.maxDurability <= 0.0;
   }

   class="kw">public boolean isBroken() {
      class="kw">return this.isUnbreakable() ? false : this.durability == 0.0;
   }

   class="kw">public double getMaxDurability() {
      class="kw">return this.maxDurability;
   }

   class="kw">public double getDurability() {
      class="kw">return this.durability;
   }

   class="kw">public int getQualityIndex() {
      class="kw">return this.qualityIndex != Integer.MIN_VALUE ? this.qualityIndex : this.getItem().getQualityIndex();
   }

   class="kw">public boolean isEmpty() {
      class="kw">return this.itemId.equals("Empty");
   }

   class="kw">public boolean getOverrideDroppedItemAnimation() {
      class="kw">return this.overrideDroppedItemAnimation;
   }

   class="kw">public void setOverrideDroppedItemAnimation(boolean var1) {
      this.overrideDroppedItemAnimation = var1;
   }

   @Nullable
   class="kw">public String getBlockKey() {
      if (this.isEmpty()) {
         class="kw">return "Empty";
      } else {
         Item var1 = this.getItem();
         if (var1 == null) {
            class="kw">return null;
         } else {
            class="kw">return var1.hasBlockType() ? var1.getBlockId() : null;
         }
      }
   }

   @Nonnull
   class="kw">public Item getItem() {
      Item var1 = Item.getAssetMap().getAsset(this.itemId);
      class="kw">return var1 != null ? var1 : Item.UNKNOWN;
   }

   class="kw">public boolean isValid() {
      class="kw">return this.isEmpty() || this.getItem() != null;
   }

   @Nonnull
   class="kw">public ItemStack withDurability(double var1) {
      class="kw">return new ItemStack(this.itemId, this.quantity, MathUtil.clamp(var1, 0.0, this.maxDurability), this.maxDurability, this.qualityIndex, this.metadata);
   }

   @Nonnull
   class="kw">public ItemStack withMaxDurability(double var1) {
      class="kw">return new ItemStack(this.itemId, this.quantity, Math.min(this.durability, var1), var1, this.qualityIndex, this.metadata);
   }

   @Nonnull
   class="kw">public ItemStack withQuality(int var1) {
      class="kw">return new ItemStack(this.itemId, this.quantity, this.durability, this.maxDurability, var1, this.metadata);
   }

   @Nonnull
   class="kw">public ItemStack withIncreasedDurability(double var1) {
      class="kw">return this.withDurability(this.durability + var1);
   }

   @Nonnull
   class="kw">public ItemStack withRestoredDurability(double var1) {
      class="kw">return new ItemStack(this.itemId, this.quantity, var1, var1, this.qualityIndex, this.metadata);
   }

   @Nonnull
   class="kw">public ItemStack withState(@Nonnull String var1) {
      String var2 = this.getItem().getItemIdForState(var1);
      if (var2 == null) {
         throw new IllegalArgumentException("Invalid state: " + var1);
      } else {
         class="kw">return new ItemStack(var2, this.quantity, this.durability, this.maxDurability, this.qualityIndex, this.metadata);
      }
   }

   @Nullable
   class="kw">public ItemStack withQuantity(int var1) {
      if (var1 == 0) {
         class="kw">return null;
      } else {
         class="kw">return var1 == this.quantity ? this : new ItemStack(this.itemId, var1, this.durability, this.maxDurability, this.qualityIndex, this.metadata);
      }
   }

   @Nonnull
   class="kw">public ItemStack cleanCopy() {
      class="kw">return new ItemStack(this.itemId, this.quantity, this.durability, this.maxDurability, this.qualityIndex, this.metadata);
   }

   @Nonnull
   class="kw">public ItemStack withMetadata(@Nullable BsonDocument var1) {
      class="kw">return new ItemStack(this.itemId, this.quantity, this.durability, this.maxDurability, this.qualityIndex, var1);
   }

   @Nonnull
   class="kw">public <T> ItemStack withMetadata(@Nonnull KeyedCodec<T> var1, @Nullable T var2) {
      class="kw">return this.withMetadata(var1.getKey(), var1.getChildCodec(), var2);
   }

   @Nonnull
   class="kw">public <T> ItemStack withMetadata(@Nonnull String var1, @Nonnull Codec<T> var2, @Nullable T var3) {
      BsonDocument var4 = this.metadata == null ? new BsonDocument() : this.metadata.clone();
      if (var3 == null) {
         var4.remove(var1);
      } else {
         BsonValue var5 = var2.encode(var3);
         boolean var6 = var5.isNull() || var5 class="kw">instanceof BsonDocument var7 && var7.isEmpty();
         if (var6) {
            var4.remove(var1);
         } else {
            var4.put(var1, var5);
         }
      }

      if (var4.isEmpty()) {
         var4 = null;
      }

      class="kw">return new ItemStack(this.itemId, this.quantity, this.durability, this.maxDurability, this.qualityIndex, var4);
   }

   @Nonnull
   class="kw">public ItemStack withMetadata(@Nonnull String var1, @Nullable BsonValue var2) {
      BsonDocument var3 = this.metadata == null ? new BsonDocument() : this.metadata.clone();
      if (var2 != null && !var2.isNull()) {
         var3.put(var1, var2);
      } else {
         var3.remove(var1);
      }

      class="kw">return new ItemStack(this.itemId, this.quantity, this.durability, this.maxDurability, this.qualityIndex, var3);
   }

   class="kw">public ItemWithAllMetadata toPacket() {
      if (this.cachedPacket != null) {
         class="kw">return this.cachedPacket;
      }

      ItemWithAllMetadata var1 = new ItemWithAllMetadata();
      var1.itemId = this.itemId.toString();
      var1.quantity = this.quantity;
      var1.durability = this.durability;
      var1.maxDurability = this.maxDurability;
      var1.quality = this.getQualityIndex();
      var1.overrideDroppedItemAnimation = this.overrideDroppedItemAnimation;
      var1.metadata = this.metadata != null ? this.metadata.toJson() : null;
      this.cachedPacket = var1;
      class="kw">return this.cachedPacket;
   }

   class="kw">public boolean isStackableWith(@Nullable ItemStack var1) {
      if (var1 == null) {
         class="kw">return false;
      } else if (Double.compare(var1.durability, this.durability) != 0) {
         class="kw">return false;
      } else if (Double.compare(var1.maxDurability, this.maxDurability) != 0) {
         class="kw">return false;
      } else if (this.getQualityIndex() != var1.getQualityIndex()) {
         class="kw">return false;
      } else if (!this.itemId.equals(var1.itemId)) {
         class="kw">return false;
      } else {
         class="kw">return this.metadata != null ? this.metadata.equals(var1.metadata) : var1.metadata == null;
      }
   }

   class="kw">public boolean isEquivalentType(@Nullable ItemStack var1) {
      if (var1 == null) {
         class="kw">return false;
      } else if (!this.itemId.equals(var1.itemId)) {
         class="kw">return false;
      } else {
         class="kw">return this.metadata != null ? this.metadata.equals(var1.metadata) : var1.metadata == null;
      }
   }

   @Nullable
   class="kw">public <T> T getFromMetadataOrNull(@Nonnull KeyedCodec<T> var1) {
      class="kw">return var1.getOrNull(this.metadata);
   }

   @Nullable
   class="kw">public <T> T getFromMetadataOrNull(@Nonnull String var1, @Nonnull Codec<T> var2) {
      BsonValue var3 = this.metadata == null ? null : this.metadata.get(var1);
      class="kw">return var3 == null ? null : var2.decode(var3);
   }

   class="kw">public <T> T getFromMetadataOrDefault(@Nonnull String var1, @Nonnull BuilderCodec<T> var2) {
      BsonDocument var3 = this.metadata == null ? new BsonDocument() : this.metadata.clone();
      if (var3 == null) {
         class="kw">return var2.getDefaultValue();
      }

      BsonValue var4 = var3.get(var1);
      class="kw">return var4 == null ? var2.getDefaultValue() : var2.decode(var4);
   }

   @Nonnull
   class="kw">public Message getDisplayName() {
      ItemDisplayMetadata var1 = this.getFromMetadataOrNull(ItemDisplayMetadata.KEYED_CODEC);
      class="kw">return var1 != null && var1.getName() != null ? var1.getName() : this.getItem().getTranslationMessage();
   }

   @Nonnull
   class="kw">public Message getDisplayDescription() {
      ItemDisplayMetadata var1 = this.getFromMetadataOrNull(ItemDisplayMetadata.KEYED_CODEC);
      class="kw">return var1 != null && var1.getDescription() != null ? var1.getDescription() : this.getItem().getDescriptionTranslationMessage();
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 != null && this.getClass() == var1.getClass()) {
         ItemStack var2 = (ItemStack)var1;
         if (this.quantity != var2.quantity) {
            class="kw">return false;
         } else if (Double.compare(var2.durability, this.durability) != 0) {
            class="kw">return false;
         } else if (Double.compare(var2.maxDurability, this.maxDurability) != 0) {
            class="kw">return false;
         } else if (this.getQualityIndex() != var2.getQualityIndex()) {
            class="kw">return false;
         } else if (!this.itemId.equals(var2.itemId)) {
            class="kw">return false;
         } else {
            class="kw">return this.metadata != null ? this.metadata.equals(var2.metadata) : var2.metadata == null;
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = this.itemId.hashCode();
      var1 = 31 * var1 + this.quantity;
      long var2 = Double.doubleToLongBits(this.durability);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.maxDurability);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var1 = 31 * var1 + this.getQualityIndex();
      class="kw">return 31 * var1 + (this.metadata != null ? this.metadata.hashCode() : 0);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "ItemStack{itemId="
         + this.itemId
         + ", quantity="
         + this.quantity
         + ", maxDurability="
         + this.maxDurability
         + ", durability="
         + this.durability
         + ", quality="
         + this.qualityIndex
         + ", metadata="
         + this.metadata
         + "}";
   }

   class="kw">public class="kw">static boolean isEmpty(@Nullable ItemStack var0) {
      class="kw">return var0 == null || var0.isEmpty();
   }

   class="kw">public class="kw">static boolean isStackableWith(@Nullable ItemStack var0, @Nullable ItemStack var1) {
      class="kw">return var0 == var1 || var0 != null && var0.isStackableWith(var1);
   }

   class="kw">public class="kw">static boolean isEquivalentType(@Nullable ItemStack var0, ItemStack var1) {
      class="kw">return var0 == var1 || var0 != null && var0.isEquivalentType(var1);
   }

   class="kw">public class="kw">static boolean isSameItemType(@Nullable ItemStack var0, @Nullable ItemStack var1) {
      class="kw">return var0 == var1 || var0 != null && var1 != null && var0.itemId.equals(var1.itemId);
   }

   class="kw">public class="kw">static class Metadata {
      class="kw">public class="kw">static class="kw">final String BLOCK_HOLDER = "BlockHolder";

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