diff options
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java')
| -rw-r--r-- | src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java b/src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java new file mode 100644 index 0000000..cb4892e --- /dev/null +++ b/src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java @@ -0,0 +1,66 @@ +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<MineshaftItem, Long> ingredients; + + String buyMessage; + + private CraftingRecipe(MineshaftItem item, long quantity, Map<MineshaftItem, Long> ingredients) { + this.item = item; + this.quantity = quantity; + this.ingredients = ingredients; + } + + public static CraftingRecipe make(MineshaftItem item) { + Map<MineshaftItem, Long> 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<MineshaftItem, Long> getIngredients() { + return ingredients; + } + + public String getBuyMessage() { + return buyMessage; + } + + public CraftingRecipe setBuyMessage(String message) { + buyMessage = message; + return this; + } + public Map<MineshaftItem, Long> getMissingIngredients(Map<MineshaftItem, Long> items) { + return getMissingIngredients(items, 1); + } + + public Map<MineshaftItem, Long> getMissingIngredients(Map<MineshaftItem, Long> items, long amount) { + Map<MineshaftItem, Long> lacking = new HashMap<MineshaftItem, Long>(); + getIngredients().forEach((item, q) -> { + if (items.get(item) < q* amount) { + lacking.put(item, (q * amount) - items.get(item)); + } + }); + + return Collections.unmodifiableMap(lacking); + } + +} |
