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() {
}
}
}