summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/crafting/CraftingRecipe.java66
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);
+ }
+
+}