From 7e06505e842b93aafd7d0261ab4534c399b9a272 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Sat, 17 Apr 2021 16:58:10 +0200 Subject: [PATCH] Added Recipe System --- .../dartcraft/internal/ItemIngredient.java | 36 +++++++++++++++++++ .../modding/dartcraft/internal/Registry.java | 26 ++++++++++++-- .../modding/tileralib/api/IIngredient.java | 11 ++++++ .../ley/modding/tileralib/api/IRegistry.java | 5 +++ 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ley/modding/dartcraft/internal/ItemIngredient.java create mode 100644 src/main/java/ley/modding/tileralib/api/IIngredient.java diff --git a/src/main/java/ley/modding/dartcraft/internal/ItemIngredient.java b/src/main/java/ley/modding/dartcraft/internal/ItemIngredient.java new file mode 100644 index 0000000..ab0a5f8 --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/internal/ItemIngredient.java @@ -0,0 +1,36 @@ +package ley.modding.dartcraft.internal; + +import ley.modding.tileralib.api.IIngredient; +import net.minecraft.item.Item; + +public class ItemIngredient implements IIngredient { + + char key; + int count; + Item item; + + public ItemIngredient(char key, Item item) { + this.key = key; + this.item = item; + } + + public ItemIngredient(int count, Item item) { + this.count = count; + this.item = item; + } + + @Override + public char getKey() { + return key; + } + + @Override + public int getCount() { + return count; + } + + @Override + public Object getIngredient() { + return item; + } +} diff --git a/src/main/java/ley/modding/dartcraft/internal/Registry.java b/src/main/java/ley/modding/dartcraft/internal/Registry.java index 55b321f..9fab045 100644 --- a/src/main/java/ley/modding/dartcraft/internal/Registry.java +++ b/src/main/java/ley/modding/dartcraft/internal/Registry.java @@ -2,13 +2,14 @@ package ley.modding.dartcraft.internal; import cpw.mods.fml.common.registry.GameRegistry; import ley.modding.dartcraft.Dartcraft; +import ley.modding.tileralib.api.IIngredient; import ley.modding.tileralib.api.IRegistry; import ley.modding.tileralib.api.ITEProvider; import net.minecraft.block.Block; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; -import java.util.HashMap; -import java.util.Map; +import java.util.*; public class Registry implements IRegistry { @@ -41,6 +42,27 @@ public class Registry implements IRegistry { return GameRegistry.findBlock(getModID(), id); } + @Override + public void addShapedRecipe(ItemStack output, String[] pattern, IIngredient[] ingredients) { + List objects = new ArrayList(Arrays.asList(pattern)); + for (IIngredient i : ingredients) { + objects.add(i.getKey()); + objects.add(i.getIngredient()); + } + GameRegistry.addShapedRecipe(output, objects.toArray()); + } + + @Override + public void addShapelessRecipe(ItemStack output, IIngredient[] input) { + List objects = new ArrayList(); + for (IIngredient ing : input) { + for (int i = 0; i < ing.getCount(); i++) { + objects.add(ing.getIngredient()); + } + } + GameRegistry.addShapelessRecipe(output, objects.toArray()); + } + @Override public Item registerItem(Item item) { if (item != null) { diff --git a/src/main/java/ley/modding/tileralib/api/IIngredient.java b/src/main/java/ley/modding/tileralib/api/IIngredient.java new file mode 100644 index 0000000..35fc4bc --- /dev/null +++ b/src/main/java/ley/modding/tileralib/api/IIngredient.java @@ -0,0 +1,11 @@ +package ley.modding.tileralib.api; + +public interface IIngredient { + + char getKey(); + + int getCount(); + + Object getIngredient(); + +} diff --git a/src/main/java/ley/modding/tileralib/api/IRegistry.java b/src/main/java/ley/modding/tileralib/api/IRegistry.java index d782c3e..c9b44f8 100644 --- a/src/main/java/ley/modding/tileralib/api/IRegistry.java +++ b/src/main/java/ley/modding/tileralib/api/IRegistry.java @@ -3,6 +3,7 @@ package ley.modding.tileralib.api; import net.minecraft.block.Block; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; public interface IRegistry { @@ -16,4 +17,8 @@ public interface IRegistry { Block getBlock(String id); + void addShapedRecipe(ItemStack output, String[] pattern, IIngredient[] ingredients); + + void addShapelessRecipe(ItemStack output, IIngredient[] input); + }