BenchRecipeRegistry class

Пакет: com.hypixel.hytale.builtin.crafting

Файл: com/hypixel/hytale/builtin/crafting/BenchRecipeRegistry.java

Поля (12)

МодификаторыТипИмя
final String benchId
break
Set var1
Set var2
ItemResourceType[] var2
BenchRecipeRegistry var2
CraftingRecipe var4
CraftingRecipe var5
BenchRequirement[] var5
List var6
boolean var6
var6

Методы (17)

МодификаторыВозвратСигнатура
public void addRecipevoid addRecipe(@Nonnull BenchRequirement var1, @Nonnull CraftingRecipe var2)
private void extractMaterialFromRecipesvoid extractMaterialFromRecipes(@Nonnull Set<String> var1)
for for(String var6 : var1.categories)
for for(String var4 : var1)
for for(String var3 : var1)
for for(BenchRequirement var10 : var5)
for for(ItemResourceType var6 : var2)
public CraftingRecipe[] getAllRecipesCraftingRecipe[] getAllRecipes()
if if(var1.categories != null && var1.categories.length != 0)
if if(var5 != null)
if if(var4 != null)
if if(var5 != null)
if if(var6)
if if(var2 != null)
public boolean isValidCraftingMaterialboolean isValidCraftingMaterial(@Nonnull ItemStack var1)
public void recomputevoid recompute()
public void removeRecipevoid removeRecipe(@Nonnull String var1)

Исходный код

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

class="kw">import com.hypixel.hytale.protocol.BenchRequirement;
class="kw">import com.hypixel.hytale.protocol.ItemResourceType;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.CraftingRecipe;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.MaterialQuantity;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class BenchRecipeRegistry {
   class="kw">private class="kw">final String benchId;
   @Nonnull
   class="kw">private class="kw">final Map<String, Set<String>> categoryMap = new Object2ObjectOpenHashMap();
   @Nonnull
   class="kw">private class="kw">final Map<String, Set<String>> itemToIncomingRecipe = new Object2ObjectOpenHashMap();
   @Nonnull
   class="kw">private class="kw">final Set<String> uncategorizedRecipes = new ObjectOpenHashSet();
   @Nonnull
   class="kw">private class="kw">final Set<String> allMaterialIds = new ObjectOpenHashSet();
   @Nonnull
   class="kw">private class="kw">final Set<String> allMaterialResourceType = new ObjectOpenHashSet();

   class="kw">public BenchRecipeRegistry(String var1) {
      this.benchId = var1;
   }

   @Nonnull
   class="kw">public Iterable<String> getIncomingRecipesForItem(@Nonnull String var1) {
      Set var2 = this.itemToIncomingRecipe.get(var1);
      class="kw">return var2 == null ? Collections.emptySet() : var2;
   }

   class="kw">public void removeRecipe(@Nonnull String var1) {
      this.uncategorizedRecipes.remove(var1);

      for (Entry var3 : this.categoryMap.entrySet()) {
         var3.getValue().remove(var1);
      }
   }

   class="kw">public void addRecipe(@Nonnull BenchRequirement var1, @Nonnull CraftingRecipe var2) {
      if (var1.categories != null && var1.categories.length != 0) {
         for (String var6 : var1.categories) {
            this.categoryMap.computeIfAbsent(var6, var0 -> new ObjectOpenHashSet()).add(var2.getId());
         }
      } else {
         this.uncategorizedRecipes.add(var2.getId());
      }
   }

   class="kw">public CraftingRecipe[] getAllRecipes() {
      Set var1 = new ObjectOpenHashSet(this.uncategorizedRecipes);

      for (Set var3 : this.categoryMap.values()) {
         var1.addAll(var3);
      }

      List var6 = new ObjectArrayList(var1.size());

      for (String var4 : var1) {
         CraftingRecipe var5 = CraftingRecipe.getAssetMap().getAsset(var4);
         if (var5 != null) {
            var6.add(var5);
         }
      }

      class="kw">return var6.toArray(CraftingRecipe[]::new);
   }

   @Nullable
   class="kw">public Set<String> getRecipesForCategory(@Nonnull String var1) {
      class="kw">return this.categoryMap.get(var1);
   }

   class="kw">public void recompute() {
      this.allMaterialIds.clear();
      this.allMaterialResourceType.clear();
      this.itemToIncomingRecipe.clear();

      for (Set var2 : this.categoryMap.values()) {
         this.extractMaterialFromRecipes(var2);
      }

      this.extractMaterialFromRecipes(this.uncategorizedRecipes);
   }

   class="kw">private void extractMaterialFromRecipes(@Nonnull Set<String> var1) {
      for (String var3 : var1) {
         CraftingRecipe var4 = CraftingRecipe.getAssetMap().getAsset(var3);
         if (var4 != null) {
            BenchRequirement[] var5 = var4.getBenchRequirement();
            if (var5 != null) {
               boolean var6 = false;

               for (BenchRequirement var10 : var5) {
                  if (var10.id.equals(this.benchId)) {
                     var6 = true;
                     break;
                  }
               }

               if (var6) {
                  for (MaterialQuantity var17 : var4.getInput()) {
                     if (var17.getItemId() != null) {
                        this.allMaterialIds.add(var17.getItemId());
                     }

                     if (var17.getResourceTypeId() != null) {
                        this.allMaterialResourceType.add(var17.getResourceTypeId());
                     }
                  }

                  for (MaterialQuantity var18 : var4.getOutputs()) {
                     this.itemToIncomingRecipe.computeIfAbsent(var18.getItemId(), var0 -> new ObjectOpenHashSet()).add(var3);
                  }
               }
            }
         }
      }
   }

   class="kw">public boolean isValidCraftingMaterial(@Nonnull ItemStack var1) {
      if (this.allMaterialIds.contains(var1.getItemId())) {
         class="kw">return true;
      }

      ItemResourceType[] var2 = var1.getItem().getResourceTypes();
      if (var2 != null) {
         for (ItemResourceType var6 : var2) {
            if (this.allMaterialResourceType.contains(var6.id)) {
               class="kw">return true;
            }
         }
      }

      class="kw">return false;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (var1 != null && this.getClass() == var1.getClass()) {
         BenchRecipeRegistry var2 = (BenchRecipeRegistry)var1;
         class="kw">return Objects.equals(this.benchId, var2.benchId)
            && Objects.equals(this.categoryMap, var2.categoryMap)
            && Objects.equals(this.uncategorizedRecipes, var2.uncategorizedRecipes)
            && Objects.equals(this.allMaterialIds, var2.allMaterialIds)
            && Objects.equals(this.allMaterialResourceType, var2.allMaterialResourceType);
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      class="kw">return Objects.hash(this.benchId, this.categoryMap, this.uncategorizedRecipes, this.allMaterialIds, this.allMaterialResourceType);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "BenchRecipeRegistry{benchId='"
         + this.benchId
         + "', categoryMap="
         + this.categoryMap
         + ", uncategorizedRecipes="
         + this.uncategorizedRecipes
         + ", allMaterialIds="
         + this.allMaterialIds
         + ", allMaterialResourceType="
         + this.allMaterialResourceType
         + "}";
   }
}