Metadata class

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

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

Поля (1)

МодификаторыТипИмя
public static final String BLOCK_HOLDER

Исходный код

Показать/скрыть
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() {
      }
   }
}