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
+ "}";
}
}