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