package net.uomc.mineshaft.crafting; import java.util.Collections; import java.util.HashMap; import java.util.Map; import net.uomc.mineshaft.MineshaftItem; public class CraftingRecipe { MineshaftItem item; long quantity; Map ingredients; String buyMessage; private CraftingRecipe(MineshaftItem item, long quantity, Map ingredients) { this.item = item; this.quantity = quantity; this.ingredients = ingredients; } public static CraftingRecipe make(MineshaftItem item) { Map ingredients = new HashMap<>(); return new CraftingRecipe(item, 1, ingredients); } public CraftingRecipe addIngredient(MineshaftItem item, long amount) { ingredients.put(item, amount); return this; } public MineshaftItem getItem() { return item; } public long getQuantity() { return quantity; } public Map getIngredients() { return ingredients; } public String getBuyMessage() { return buyMessage; } public CraftingRecipe setBuyMessage(String message) { buyMessage = message; return this; } public Map getMissingIngredients(Map items) { return getMissingIngredients(items, 1); } public Map getMissingIngredients(Map items, long amount) { Map lacking = new HashMap(); getIngredients().forEach((item, q) -> { if (items.get(item) < q* amount) { lacking.put(item, (q * amount) - items.get(item)); } }); return Collections.unmodifiableMap(lacking); } }