ItemValidator class
Пакет: com.hypixel.hytale.server.core.inventory
Файл: com/hypixel/hytale/server/core/inventory/MaterialQuantity.java
implements: Validator<MaterialQuantity>
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
acceptpublic void accept(@Nullable MaterialQuantity var1, @Nonnull ValidationResults var2) |
|
|
if if(var1 != null) |
|
|
if if(var1.itemId == null) |
|
public void |
updateSchemapublic void updateSchema(@Nonnull SchemaContext var1, @Nonnull Schema var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.inventory;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
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.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.validation.ValidationResults;
class="kw">import com.hypixel.hytale.codec.validation.Validator;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">public class MaterialQuantity class="kw">implements NetworkSerializable<com.hypixel.hytale.protocol.MaterialQuantity> {
class="kw">public class="kw">static class="kw">final MaterialQuantity[] EMPTY_ARRAY = new MaterialQuantity[0];
class="kw">public class="kw">static class="kw">final ValidatorCache<MaterialQuantity> ITEM_VALIDATOR_CACHE = new ValidatorCache<>(new MaterialQuantity.ItemValidator());
class="kw">public class="kw">static class="kw">final BuilderCodec<MaterialQuantity> CODEC = BuilderCodec.builder(MaterialQuantity.class, MaterialQuantity::new)
.append(new KeyedCodec<>("ItemId", Codec.STRING), (var0, var1) -> var0.itemId = var1, var0 -> var0.itemId)
.addValidatorLate(() -> Item.VALIDATOR_CACHE.getValidator().late())
.add()
.addField(new KeyedCodec<>("ResourceTypeId", Codec.STRING), (var0, var1) -> var0.resourceTypeId = var1, var0 -> var0.resourceTypeId)
.addField(new KeyedCodec<>("ItemTag", Codec.STRING), (var0, var1) -> var0.tag = var1, var0 -> var0.tag)
.<Integer>append(new KeyedCodec<>("Quantity", Codec.INTEGER), (var0, var1) -> var0.quantity = var1, var0 -> var0.quantity)
.addValidator(Validators.greaterThan(0))
.add()
.addField(new KeyedCodec<>("Metadata", Codec.BSON_DOCUMENT), (var0, var1) -> var0.metadata = var1, var0 -> var0.metadata)
.afterDecode((var0, var1) -> {
if (var0.tag != null) {
var0.tagIndex = AssetRegistry.getOrCreateTagIndex(var0.tag);
}
})
.build();
@Nullable
class="kw">protected String itemId;
@Nullable
class="kw">protected String resourceTypeId;
class="kw">protected String tag;
class="kw">protected int tagIndex = Integer.MIN_VALUE;
class="kw">protected int quantity = 1;
@Nullable
class="kw">protected BsonDocument metadata;
@Nullable
class="kw">protected Set<String> excludedItemIds;
class="kw">public MaterialQuantity(@Nullable String var1, @Nullable String var2, @Nullable String var3, int var4, BsonDocument var5) {
if (var1 == null && var2 == null && var3 == null) {
throw new IllegalArgumentException("itemId, resourceTypeId and tag cannot all be null!");
}
if (var4 <= 0) {
throw new IllegalArgumentException("quantity " + var4 + " must be >0!");
}
this.itemId = var1;
this.resourceTypeId = var2;
this.tag = var3;
this.quantity = var4;
this.metadata = var5;
}
class="kw">protected MaterialQuantity() {
}
@Nullable
class="kw">public String getItemId() {
class="kw">return this.itemId;
}
@Nullable
class="kw">public String getResourceTypeId() {
class="kw">return this.resourceTypeId;
}
class="kw">public int getTagIndex() {
class="kw">return this.tagIndex;
}
class="kw">public int getQuantity() {
class="kw">return this.quantity;
}
class="kw">public BsonDocument getMetadata() {
class="kw">return this.metadata;
}
@Nonnull
class="kw">public MaterialQuantity clone(int var1) {
MaterialQuantity var2 = new MaterialQuantity(this.itemId, this.resourceTypeId, this.tag, var1, this.metadata);
var2.tagIndex = this.tagIndex;
var2.excludedItemIds = this.excludedItemIds;
class="kw">return var2;
}
@Nonnull
class="kw">public MaterialQuantity withExcludedItemIds(@Nullable Set<String> var1) {
this.excludedItemIds = var1 != null && !var1.isEmpty() ? var1 : null;
class="kw">return this;
}
@Nullable
class="kw">public Set<String> getExcludedItemIds() {
class="kw">return this.excludedItemIds;
}
class="kw">public boolean isItemExcluded(@Nullable String var1) {
class="kw">return this.excludedItemIds != null && var1 != null && this.excludedItemIds.contains(var1);
}
@Nullable
class="kw">public ItemStack toItemStack() {
if (this.itemId == null) {
class="kw">return null;
} else {
class="kw">return this.itemId.equals("Empty") ? ItemStack.EMPTY : new ItemStack(this.itemId, this.quantity, this.metadata);
}
}
@Nonnull
class="kw">public class="kw">static List<ItemStack> toItemStacks(@Nonnull MaterialQuantity[] var0) {
ObjectArrayList var1 = new ObjectArrayList(var0.length);
for (MaterialQuantity var5 : var0) {
if (var5 != null) {
ItemStack var6 = var5.toItemStack();
if (!ItemStack.isEmpty(var6)) {
var1.add(var6);
}
}
}
class="kw">return var1;
}
@Nullable
class="kw">public ResourceQuantity toResource() {
class="kw">return this.resourceTypeId == null ? null : new ResourceQuantity(this.resourceTypeId, this.quantity);
}
@Nonnull
class="kw">public com.hypixel.hytale.protocol.MaterialQuantity toPacket() {
com.hypixel.hytale.protocol.MaterialQuantity var1 = new com.hypixel.hytale.protocol.MaterialQuantity();
if (this.itemId != null) {
var1.itemId = this.itemId.toString();
}
var1.itemTag = this.tagIndex;
var1.resourceTypeId = this.resourceTypeId;
var1.quantity = this.quantity;
class="kw">return var1;
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
}
if (var1 != null && this.getClass() == var1.getClass()) {
MaterialQuantity var2 = (MaterialQuantity)var1;
if (this.quantity != var2.quantity) {
class="kw">return false;
}
if (this.itemId != null ? this.itemId.equals(var2.itemId) : var2.itemId == null) {
if (this.resourceTypeId != null ? this.resourceTypeId.equals(var2.resourceTypeId) : var2.resourceTypeId == null) {
if (this.tag != null ? this.tag.equals(var2.tag) : var2.tag == null) {
class="kw">return this.metadata != null ? this.metadata.equals(var2.metadata) : var2.metadata == null;
} else {
class="kw">return false;
}
} else {
class="kw">return false;
}
} else {
class="kw">return false;
}
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
int var1 = this.itemId != null ? this.itemId.hashCode() : 0;
var1 = 31 * var1 + (this.resourceTypeId != null ? this.resourceTypeId.hashCode() : 0);
var1 = 31 * var1 + (this.tag != null ? this.tag.hashCode() : 0);
var1 = 31 * var1 + this.quantity;
class="kw">return 31 * var1 + (this.metadata != null ? this.metadata.hashCode() : 0);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "MaterialQuantity{itemId="
+ this.itemId
+ ", resourceTypeId='"
+ this.resourceTypeId
+ "', tag='"
+ this.tag
+ "', quantity="
+ this.quantity
+ ", metadata="
+ this.metadata
+ "}";
}
class="kw">private class="kw">static class="kw">final class ItemValidator class="kw">implements Validator<MaterialQuantity> {
class="kw">private ItemValidator() {
}
class="kw">public void accept(@Nullable MaterialQuantity var1, @Nonnull ValidationResults var2) {
if (var1 != null) {
if (var1.itemId == null) {
var2.fail("Material quantity " + var1 + " has no ItemId!");
} else {
Item.VALIDATOR_CACHE.getValidator().accept(var1.itemId, var2);
}
}
}
@Override
class="kw">public void updateSchema(@Nonnull SchemaContext var1, @Nonnull Schema var2) {
}
}
}