From d1722c5458e8104bd4dd5b3ddfbf040d6b5b373f Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 13 Jul 2017 13:30:06 +0200 Subject: [PATCH] Converted Solderer recipes to JSON, fixes #1356 --- CHANGELOG.md | 3 + .../api/solderer/ISoldererRecipe.java | 6 + .../api/solderer/ISoldererRegistry.java | 13 -- .../solderer/SoldererRecipeFactory.java | 73 +++++++++++ .../solderer/SoldererRecipeFluidStorage.java | 42 ------- .../solderer/SoldererRecipeLoader.java | 63 ++++++++++ .../SoldererRecipePrintedProcessor.java | 71 ----------- .../solderer/SoldererRecipeProcessor.java | 67 ---------- .../solderer/SoldererRecipeStorage.java | 42 ------- .../solderer/SoldererRecipeUpgrade.java | 50 -------- .../apiimpl/solderer/SoldererRegistry.java | 31 +---- .../refinedstorage/item/ItemUpgrade.java | 25 ---- .../refinedstorage/proxy/ProxyCommon.java | 116 ++++-------------- .../128k_fluid_storage_block.json | 28 +++++ .../solderer_recipes/16k_storage_block.json | 28 +++++ .../solderer_recipes/1k_storage_block.json | 28 +++++ .../256k_fluid_storage_block.json | 28 +++++ .../solderer_recipes/4k_storage_block.json | 28 +++++ .../512k_fluid_storage_block.json | 28 +++++ .../64k_fluid_storage_block.json | 28 +++++ .../solderer_recipes/64k_storage_block.json | 28 +++++ .../solderer_recipes/advanced_processor.json | 21 ++++ .../solderer_recipes/basic_processor.json | 21 ++++ .../solderer_recipes/crafting_grid.json | 21 ++++ .../solderer_recipes/crafting_upgrade.json | 21 ++++ .../solderer_recipes/fluid_grid.json | 20 +++ .../solderer_recipes/fluid_interface.json | 18 +++ .../solderer_recipes/fortune_1_upgrade.json | 25 ++++ .../solderer_recipes/fortune_2_upgrade.json | 25 ++++ .../solderer_recipes/fortune_3_upgrade.json | 25 ++++ .../solderer_recipes/improved_processor.json | 21 ++++ .../interdimensional_upgrade.json | 21 ++++ .../solderer_recipes/interface.json | 17 +++ .../solderer_recipes/pattern_grid.json | 20 +++ .../printed_advanced_processor.json | 15 +++ ...printed_advanced_processor_from_block.json | 16 +++ .../printed_basic_processor.json | 15 +++ .../printed_basic_processor_from_block.json | 16 +++ .../printed_improved_processor.json | 15 +++ ...printed_improved_processor_from_block.json | 16 +++ .../solderer_recipes/printed_silicon.json | 15 +++ .../solderer_recipes/range_upgrade.json | 21 ++++ .../solderer_recipes/silk_touch_upgrade.json | 21 ++++ .../solderer_recipes/speed_upgrade.json | 20 +++ 44 files changed, 844 insertions(+), 428 deletions(-) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFactory.java delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFluidStorage.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeLoader.java delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipePrintedProcessor.java delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeProcessor.java delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeStorage.java delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeUpgrade.java create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/128k_fluid_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/16k_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/1k_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/256k_fluid_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/4k_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/512k_fluid_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/64k_fluid_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/64k_storage_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/advanced_processor.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/basic_processor.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/crafting_grid.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/crafting_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/fluid_grid.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/fluid_interface.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/fortune_1_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/fortune_2_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/fortune_3_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/improved_processor.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/interdimensional_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/interface.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/pattern_grid.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor_from_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor_from_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor_from_block.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/printed_silicon.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/range_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/silk_touch_upgrade.json create mode 100644 src/main/resources/assets/refinedstorage/solderer_recipes/speed_upgrade.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 19e8f52b2..047ce25cc 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Refined Storage Changelog +### 1.5.10 +- Converted Solderer recipes to JSON (raoulvdberge) + ### 1.5.9 - Fixed crash relating to MCMP (raoulvdberge) - Fixed not being able to extract anything when connecting an External Storage to Storage Drawers (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRecipe.java b/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRecipe.java index 61feda37f..f74fdf362 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRecipe.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRecipe.java @@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.api.solderer; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; import javax.annotation.Nonnull; @@ -9,6 +10,11 @@ import javax.annotation.Nonnull; * Represents a recipe in the solderer. */ public interface ISoldererRecipe { + /** + * @return the name of this solderer recipe + */ + ResourceLocation getName(); + /** * @param row the row in the solderer that we want the stack for (between 0 - 2) * @return possible stack(s) for the given row, or empty list for no stack diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRegistry.java index bead272c9..bc216a4c5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/solderer/ISoldererRegistry.java @@ -1,7 +1,5 @@ package com.raoulvdberge.refinedstorage.api.solderer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; @@ -32,15 +30,4 @@ public interface ISoldererRegistry { * @return a list with all the solderer recipes */ List getRecipes(); - - /** - * Creates a simple solderer recipe. - * - * @param result the result - * @param duration the duration in ticks - * @param rows the rows of this recipe, has to be 3 rows (empty list for empty row) - * @return a solderer recipe - */ - @Nonnull - ISoldererRecipe createSimpleRecipe(@Nonnull ItemStack result, int duration, NonNullList... rows); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFactory.java new file mode 100644 index 000000000..e5e9e32a3 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFactory.java @@ -0,0 +1,73 @@ +package com.raoulvdberge.refinedstorage.apiimpl.solderer; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; +import com.raoulvdberge.refinedstorage.RSUtils; +import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; +import net.minecraft.item.ItemStack; +import net.minecraft.util.JsonUtils; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.common.crafting.JsonContext; + +import javax.annotation.Nonnull; +import java.util.ArrayList; +import java.util.List; + +public class SoldererRecipeFactory { + private final ResourceLocation name; + private JsonObject json; + + public SoldererRecipeFactory(ResourceLocation name, JsonObject json) { + this.name = name; + this.json = json; + } + + public ISoldererRecipe create(JsonContext context) { + JsonArray rowsArray = JsonUtils.getJsonArray(json, "rows"); + + if (rowsArray.size() != 3) { + throw new JsonSyntaxException("Expected 3 rows, got " + rowsArray.size() + " rows"); + } + + List> rows = new ArrayList<>(3); + + for (JsonElement element : rowsArray) { + if (element.isJsonNull()) { + rows.add(RSUtils.emptyNonNullList()); + } else { + rows.add(NonNullList.from(ItemStack.EMPTY, CraftingHelper.getIngredient(element, context).getMatchingStacks())); + } + } + + final ItemStack result = CraftingHelper.getItemStack(JsonUtils.getJsonObject(json, "result"), context); + final int duration = JsonUtils.getInt(json, "duration"); + + return new ISoldererRecipe() { + @Override + public ResourceLocation getName() { + return name; + } + + @Nonnull + @Override + public NonNullList getRow(int row) { + return rows.get(row); + } + + @Nonnull + @Override + public ItemStack getResult() { + return result; + } + + @Override + public int getDuration() { + return duration; + } + }; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFluidStorage.java deleted file mode 100755 index 4e7e365b7..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeFluidStorage.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.solderer; - -import com.raoulvdberge.refinedstorage.RSBlocks; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; -import com.raoulvdberge.refinedstorage.block.FluidStorageType; -import com.raoulvdberge.refinedstorage.item.ItemBlockFluidStorage; -import com.raoulvdberge.refinedstorage.item.ItemProcessor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; - -import javax.annotation.Nonnull; - -public class SoldererRecipeFluidStorage implements ISoldererRecipe { - private FluidStorageType type; - private NonNullList rows = NonNullList.create(); - - public SoldererRecipeFluidStorage(FluidStorageType type, int storagePart) { - this.type = type; - - this.rows.add(new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC)); - this.rows.add(new ItemStack(RSItems.FLUID_STORAGE_PART, 1, storagePart)); - this.rows.add(new ItemStack(RSBlocks.MACHINE_CASING)); - } - - @Override - @Nonnull - public NonNullList getRow(int row) { - return NonNullList.withSize(1, rows.get(row)); - } - - @Override - @Nonnull - public ItemStack getResult() { - return ItemBlockFluidStorage.initNBT(new ItemStack(RSBlocks.FLUID_STORAGE, 1, type.getId())); - } - - @Override - public int getDuration() { - return 200; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeLoader.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeLoader.java new file mode 100644 index 000000000..5f55b58ad --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeLoader.java @@ -0,0 +1,63 @@ +package com.raoulvdberge.refinedstorage.apiimpl.solderer; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import net.minecraft.util.JsonUtils; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.common.crafting.JsonContext; +import net.minecraftforge.fml.common.FMLLog; +import net.minecraftforge.fml.common.Loader; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.io.IOUtils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.nio.file.Files; + +public class SoldererRecipeLoader { + private static Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); + + public static void load() { + JsonContext context = new JsonContext(RS.ID); + + CraftingHelper.findFiles(Loader.instance().activeModContainer(), "assets/" + RS.ID + "/solderer_recipes", root -> { + // @todo: Load the constants into to the context. + + return true; + }, (root, file) -> { + String relative = root.relativize(file).toString(); + + if (!"json".equals(FilenameUtils.getExtension(file.toString()))) { + return true; + } + + String name = FilenameUtils.removeExtension(relative).replaceAll("\\\\", "/"); + ResourceLocation key = new ResourceLocation(RS.ID, name); + + BufferedReader reader = null; + + try { + reader = Files.newBufferedReader(file); + + API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeFactory(key, JsonUtils.fromJson(GSON, reader, JsonObject.class)).create(context)); + } catch (JsonParseException e) { + FMLLog.log.error("Parsing error while reading JSON solderer recipe {}", key, e); + + return false; + } catch (IOException e) { + FMLLog.log.error("Couldn't read JSON solderer recipe {} from {}", key, file, e); + + return false; + } finally { + IOUtils.closeQuietly(reader); + } + + return true; + }); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipePrintedProcessor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipePrintedProcessor.java deleted file mode 100755 index 6c57dc0a6..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipePrintedProcessor.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.solderer; - -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.RSUtils; -import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; -import com.raoulvdberge.refinedstorage.item.ItemProcessor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraftforge.oredict.OreDictionary; - -import javax.annotation.Nonnull; - -public class SoldererRecipePrintedProcessor implements ISoldererRecipe { - private int type; - private boolean fullBlock; - private ItemStack result; - private NonNullList requirement; - - public SoldererRecipePrintedProcessor(int type, boolean fullBlock) { - this.type = type; - this.fullBlock = fullBlock; - this.result = new ItemStack(RSItems.PROCESSOR, fullBlock ? 9 : 1, type); - - switch (type) { - case ItemProcessor.TYPE_PRINTED_BASIC: - this.requirement = fullBlock ? OreDictionary.getOres("blockIron") : OreDictionary.getOres("ingotIron"); - break; - case ItemProcessor.TYPE_PRINTED_IMPROVED: - this.requirement = fullBlock ? OreDictionary.getOres("blockGold") : OreDictionary.getOres("ingotGold"); - break; - case ItemProcessor.TYPE_PRINTED_ADVANCED: - this.requirement = fullBlock ? OreDictionary.getOres("blockDiamond") : OreDictionary.getOres("gemDiamond"); - break; - case ItemProcessor.TYPE_PRINTED_SILICON: - if (fullBlock) { - throw new IllegalArgumentException("Printed silicon can't be made from block form!"); - } - - this.requirement = OreDictionary.getOres("itemSilicon"); - break; - } - } - - @Override - @Nonnull - public NonNullList getRow(int row) { - return row == 1 ? requirement : RSUtils.emptyNonNullList(); - } - - @Override - @Nonnull - public ItemStack getResult() { - return result; - } - - @Override - public int getDuration() { - switch (type) { - case ItemProcessor.TYPE_PRINTED_BASIC: - return 100 * (fullBlock ? 6 : 1); - case ItemProcessor.TYPE_PRINTED_IMPROVED: - return 150 * (fullBlock ? 6 : 1); - case ItemProcessor.TYPE_PRINTED_ADVANCED: - return 200 * (fullBlock ? 6 : 1); - case ItemProcessor.TYPE_PRINTED_SILICON: - return 90 * (fullBlock ? 6 : 1); - default: - return 0; - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeProcessor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeProcessor.java deleted file mode 100755 index aa739f98f..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeProcessor.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.solderer; - -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; -import com.raoulvdberge.refinedstorage.item.ItemProcessor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraftforge.oredict.OreDictionary; - -import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.List; - -public class SoldererRecipeProcessor implements ISoldererRecipe { - private int type; - private ItemStack result; - private List> rows = new ArrayList<>(); - - public SoldererRecipeProcessor(int type) { - this.type = type; - - this.result = new ItemStack(RSItems.PROCESSOR, 1, type); - - this.rows.add(NonNullList.withSize(1, createPrintedProcessor())); - this.rows.add(OreDictionary.getOres("dustRedstone")); - this.rows.add(NonNullList.withSize(1, new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_PRINTED_SILICON))); - } - - private ItemStack createPrintedProcessor() { - switch (type) { - case ItemProcessor.TYPE_BASIC: - return new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_PRINTED_BASIC); - case ItemProcessor.TYPE_IMPROVED: - return new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_PRINTED_IMPROVED); - case ItemProcessor.TYPE_ADVANCED: - return new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_PRINTED_ADVANCED); - default: - return ItemStack.EMPTY; - } - } - - @Override - @Nonnull - public NonNullList getRow(int row) { - return rows.get(row); - } - - @Override - @Nonnull - public ItemStack getResult() { - return result; - } - - @Override - public int getDuration() { - switch (type) { - case ItemProcessor.TYPE_BASIC: - return 250; - case ItemProcessor.TYPE_IMPROVED: - return 300; - case ItemProcessor.TYPE_ADVANCED: - return 350; - default: - return 0; - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeStorage.java deleted file mode 100755 index ac1e02552..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeStorage.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.solderer; - -import com.raoulvdberge.refinedstorage.RSBlocks; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; -import com.raoulvdberge.refinedstorage.block.ItemStorageType; -import com.raoulvdberge.refinedstorage.item.ItemBlockStorage; -import com.raoulvdberge.refinedstorage.item.ItemProcessor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; - -import javax.annotation.Nonnull; - -public class SoldererRecipeStorage implements ISoldererRecipe { - private ItemStorageType type; - private NonNullList rows = NonNullList.create(); - - public SoldererRecipeStorage(ItemStorageType type, int storagePart) { - this.type = type; - - this.rows.add(new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC)); - this.rows.add(new ItemStack(RSItems.STORAGE_PART, 1, storagePart)); - this.rows.add(new ItemStack(RSBlocks.MACHINE_CASING)); - } - - @Override - @Nonnull - public NonNullList getRow(int row) { - return NonNullList.withSize(1, rows.get(row)); - } - - @Override - @Nonnull - public ItemStack getResult() { - return ItemBlockStorage.initNBT(new ItemStack(RSBlocks.STORAGE, 1, type.getId())); - } - - @Override - public int getDuration() { - return 200; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeUpgrade.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeUpgrade.java deleted file mode 100755 index 99901ff47..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRecipeUpgrade.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.solderer; - -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; -import com.raoulvdberge.refinedstorage.item.ItemUpgrade; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraftforge.oredict.OreDictionary; - -import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.List; - -public class SoldererRecipeUpgrade implements ISoldererRecipe { - private ItemStack result; - private List> rows = new ArrayList<>(); - - public SoldererRecipeUpgrade(int type) { - this.result = new ItemStack(RSItems.UPGRADE, 1, type); - - this.rows.add(ItemUpgrade.getRequirement(result)); - this.rows.add(OreDictionary.getOres("dustRedstone")); - this.rows.add(NonNullList.withSize(1, new ItemStack(RSItems.UPGRADE, 1, 0))); - } - - public SoldererRecipeUpgrade(ItemStack result) { - this.result = result; - - this.rows.add(ItemUpgrade.getRequirement(result)); - this.rows.add(OreDictionary.getOres("dustRedstone")); - this.rows.add(NonNullList.withSize(1, new ItemStack(RSItems.UPGRADE, 1, 0))); - } - - @Override - @Nonnull - public NonNullList getRow(int row) { - return rows.get(row); - } - - @Override - @Nonnull - public ItemStack getResult() { - return result; - } - - @Override - public int getDuration() { - return 250; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRegistry.java index 91a5033a3..025875ba7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/solderer/SoldererRegistry.java @@ -10,11 +10,11 @@ import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; public class SoldererRegistry implements ISoldererRegistry { - private List recipes = new ArrayList<>(); + private List recipes = new LinkedList<>(); @Override public void addRecipe(@Nonnull ISoldererRecipe recipe) { @@ -59,31 +59,4 @@ public class SoldererRegistry implements ISoldererRegistry { public List getRecipes() { return recipes; } - - @Nonnull - @Override - public ISoldererRecipe createSimpleRecipe(@Nonnull ItemStack result, int duration, NonNullList... rows) { - if (rows.length != 3) { - throw new IllegalArgumentException("Solderer recipe expects 3 rows, got " + rows.length + " rows"); - } - - return new ISoldererRecipe() { - @Nonnull - @Override - public NonNullList getRow(int row) { - return rows[row]; - } - - @Nonnull - @Override - public ItemStack getResult() { - return result; - } - - @Override - public int getDuration() { - return duration; - } - }; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java index 0cd36c917..aa1091bdc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java @@ -2,19 +2,13 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.RSUtils; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentData; -import net.minecraft.init.Items; -import net.minecraft.item.ItemEnchantedBook; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.NonNullList; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; import javax.annotation.Nullable; import java.util.List; @@ -105,23 +99,4 @@ public class ItemUpgrade extends ItemBase { return 0; } } - - public static NonNullList getRequirement(ItemStack stack) { - switch (stack.getItemDamage()) { - case ItemUpgrade.TYPE_RANGE: - return OreDictionary.getOres("enderpearl"); - case ItemUpgrade.TYPE_SPEED: - return NonNullList.withSize(1, new ItemStack(Items.SUGAR)); - case ItemUpgrade.TYPE_CRAFTING: - return OreDictionary.getOres("workbench"); - case ItemUpgrade.TYPE_INTERDIMENSIONAL: - return OreDictionary.getOres("netherStar"); - case ItemUpgrade.TYPE_SILK_TOUCH: - return NonNullList.withSize(1, ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(Enchantment.getEnchantmentByLocation("silk_touch"), 1))); - case ItemUpgrade.TYPE_FORTUNE: - return NonNullList.withSize(1, ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(Enchantment.getEnchantmentByLocation("fortune"), getFortuneLevel(stack)))); - default: - return RSUtils.emptyNonNullList(); - } - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index e114d9371..e2d99741a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -1,5 +1,7 @@ package com.raoulvdberge.refinedstorage.proxy; +import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSItems; @@ -14,19 +16,12 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerFluids; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone; -import com.raoulvdberge.refinedstorage.apiimpl.solderer.*; +import com.raoulvdberge.refinedstorage.apiimpl.solderer.SoldererRecipeLoader; import com.raoulvdberge.refinedstorage.block.BlockBase; -import com.raoulvdberge.refinedstorage.block.FluidStorageType; -import com.raoulvdberge.refinedstorage.block.GridType; -import com.raoulvdberge.refinedstorage.block.ItemStorageType; import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy; import com.raoulvdberge.refinedstorage.gui.GuiHandler; import com.raoulvdberge.refinedstorage.integration.craftingtweaks.IntegrationCraftingTweaks; import com.raoulvdberge.refinedstorage.integration.forgeenergy.ReaderWriterHandlerForgeEnergy; -import com.raoulvdberge.refinedstorage.item.ItemFluidStoragePart; -import com.raoulvdberge.refinedstorage.item.ItemProcessor; -import com.raoulvdberge.refinedstorage.item.ItemStoragePart; -import com.raoulvdberge.refinedstorage.item.ItemUpgrade; import com.raoulvdberge.refinedstorage.network.*; import com.raoulvdberge.refinedstorage.tile.*; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; @@ -35,11 +30,17 @@ import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; import net.minecraft.block.Block; -import net.minecraft.init.Items; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentData; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; +import net.minecraft.item.ItemEnchantedBook; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.JsonUtils; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.common.crafting.IIngredientFactory; +import net.minecraftforge.common.crafting.JsonContext; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; @@ -51,6 +52,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.oredict.OreDictionary; +import javax.annotation.Nonnull; import java.util.LinkedList; import java.util.List; @@ -208,88 +210,24 @@ public class ProxyCommon { public void init(FMLInitializationEvent e) { OreDictionary.registerOre("itemSilicon", RSItems.SILICON); - // Processors - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC, false)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_IMPROVED, false)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_ADVANCED, false)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC, true)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_IMPROVED, true)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_ADVANCED, true)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_SILICON, false)); + CraftingHelper.register(new ResourceLocation(RS.ID + ":enchanted_book"), new IIngredientFactory() { + @Nonnull + @Override + public Ingredient parse(JsonContext context, JsonObject json) { + String id = JsonUtils.getString(json, "id"); + int level = JsonUtils.getInt(json, "level", 1); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_BASIC)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_IMPROVED)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_ADVANCED)); + Enchantment enchantment = Enchantment.getEnchantmentByLocation(id); - // Silicon - GameRegistry.addSmelting(Items.QUARTZ, new ItemStack(RSItems.SILICON), 0.5f); + if (enchantment == null) { + throw new JsonSyntaxException("Couldn't find enchantment with id '" + id + "'"); + } - // Crafting Grid - API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.GRID, 1, GridType.CRAFTING.getId()), - 500, - OreDictionary.getOres("workbench"), - NonNullList.withSize(1, new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED)), - NonNullList.withSize(1, new ItemStack(RSBlocks.GRID, 1, GridType.NORMAL.getId())) - )); + return Ingredient.fromStacks(ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(enchantment, level))); + } + }); - // Pattern Grid - API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.GRID, 1, GridType.PATTERN.getId()), - 500, - NonNullList.withSize(1, new ItemStack(RSItems.PATTERN)), - NonNullList.withSize(1, new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED)), - NonNullList.withSize(1, new ItemStack(RSBlocks.GRID, 1, GridType.NORMAL.getId())) - )); - - // Fluid Grid - API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.GRID, 1, GridType.FLUID.getId()), - 500, - NonNullList.withSize(1, new ItemStack(Items.BUCKET)), - NonNullList.withSize(1, new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED)), - NonNullList.withSize(1, new ItemStack(RSBlocks.GRID, 1, GridType.NORMAL.getId())) - )); - - // Upgrades - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SPEED)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_INTERDIMENSIONAL)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_SILK_TOUCH)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_CRAFTING)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.initializeForFortune(1))); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.initializeForFortune(2))); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.initializeForFortune(3))); - - // Storage Blocks - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeStorage(ItemStorageType.TYPE_1K, ItemStoragePart.TYPE_1K)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeStorage(ItemStorageType.TYPE_4K, ItemStoragePart.TYPE_4K)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeStorage(ItemStorageType.TYPE_16K, ItemStoragePart.TYPE_16K)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeStorage(ItemStorageType.TYPE_64K, ItemStoragePart.TYPE_64K)); - - // Fluid Storage Blocks - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeFluidStorage(FluidStorageType.TYPE_64K, ItemFluidStoragePart.TYPE_64K)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeFluidStorage(FluidStorageType.TYPE_128K, ItemFluidStoragePart.TYPE_128K)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeFluidStorage(FluidStorageType.TYPE_256K, ItemFluidStoragePart.TYPE_256K)); - API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeFluidStorage(FluidStorageType.TYPE_512K, ItemFluidStoragePart.TYPE_512K)); - - // Interface - API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.INTERFACE), - 200, - NonNullList.withSize(1, new ItemStack(RSBlocks.IMPORTER)), - NonNullList.withSize(1, new ItemStack(RSBlocks.EXPORTER)), - NonNullList.withSize(1, new ItemStack(RSBlocks.MACHINE_CASING)) - )); - - // Fluid Interface - API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.FLUID_INTERFACE), - 200, - NonNullList.withSize(1, new ItemStack(Items.BUCKET)), - OreDictionary.getOres("dustRedstone"), - NonNullList.withSize(1, new ItemStack(RSBlocks.INTERFACE)) - )); + SoldererRecipeLoader.load(); /*if (IntegrationOC.isLoaded()) { DriverNetwork.register(); diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/128k_fluid_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/128k_fluid_storage_block.json new file mode 100644 index 000000000..25485d6c2 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/128k_fluid_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Fluids": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:fluid_storage", + "data": 1 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:fluid_storage_part", + "data": 1 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/16k_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/16k_storage_block.json new file mode 100644 index 000000000..711a995bc --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/16k_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Items": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:storage", + "data": 2 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:storage_part", + "data": 2 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/1k_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/1k_storage_block.json new file mode 100644 index 000000000..a0250f6c7 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/1k_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Items": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:storage", + "data": 0 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:storage_part", + "data": 0 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/256k_fluid_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/256k_fluid_storage_block.json new file mode 100644 index 000000000..fb8efe54e --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/256k_fluid_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Fluids": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:fluid_storage", + "data": 2 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:fluid_storage_part", + "data": 2 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/4k_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/4k_storage_block.json new file mode 100644 index 000000000..6db2c3b3a --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/4k_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Items": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:storage", + "data": 1 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:storage_part", + "data": 1 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/512k_fluid_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/512k_fluid_storage_block.json new file mode 100644 index 000000000..f2cd86ed8 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/512k_fluid_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Fluids": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:fluid_storage", + "data": 3 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:fluid_storage_part", + "data": 3 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/64k_fluid_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/64k_fluid_storage_block.json new file mode 100644 index 000000000..ee5c239ee --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/64k_fluid_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Fluids": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:fluid_storage", + "data": 0 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:fluid_storage_part", + "data": 0 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/64k_storage_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/64k_storage_block.json new file mode 100644 index 000000000..a30213e3f --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/64k_storage_block.json @@ -0,0 +1,28 @@ +{ + "result": { + "nbt": { + "Storage": { + "Items": [ + ], + "Stored": 0, + "Protocol": 1 + } + }, + "item": "refinedstorage:storage", + "data": 3 + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 3 + }, + { + "item": "refinedstorage:storage_part", + "data": 3 + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/advanced_processor.json b/src/main/resources/assets/refinedstorage/solderer_recipes/advanced_processor.json new file mode 100644 index 000000000..211cf33ff --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/advanced_processor.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 5 + }, + "duration": 350, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 2 + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:processor", + "data": 6 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/basic_processor.json b/src/main/resources/assets/refinedstorage/solderer_recipes/basic_processor.json new file mode 100644 index 000000000..0b09cd0c3 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/basic_processor.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 3 + }, + "duration": 250, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 0 + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:processor", + "data": 6 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/crafting_grid.json b/src/main/resources/assets/refinedstorage/solderer_recipes/crafting_grid.json new file mode 100644 index 000000000..048ff024a --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/crafting_grid.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:grid", + "data": 1 + }, + "duration": 500, + "rows": [ + { + "type": "forge:ore_dict", + "ore": "workbench" + }, + { + "item": "refinedstorage:processor", + "data": 5 + }, + { + "item": "refinedstorage:grid", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/crafting_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/crafting_upgrade.json new file mode 100644 index 000000000..41de8e075 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/crafting_upgrade.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:upgrade", + "data": 3 + }, + "duration": 250, + "rows": [ + { + "type": "forge:ore_dict", + "ore": "workbench" + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/fluid_grid.json b/src/main/resources/assets/refinedstorage/solderer_recipes/fluid_grid.json new file mode 100644 index 000000000..95fecc26e --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/fluid_grid.json @@ -0,0 +1,20 @@ +{ + "result": { + "item": "refinedstorage:grid", + "data": 3 + }, + "duration": 500, + "rows": [ + { + "item": "minecraft:bucket" + }, + { + "item": "refinedstorage:processor", + "data": 5 + }, + { + "item": "refinedstorage:grid", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/fluid_interface.json b/src/main/resources/assets/refinedstorage/solderer_recipes/fluid_interface.json new file mode 100644 index 000000000..fed3c8b66 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/fluid_interface.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "refinedstorage:fluid_interface" + }, + "duration": 200, + "rows": [ + { + "item": "minecraft:bucket" + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:interface" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_1_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_1_upgrade.json new file mode 100644 index 000000000..82e5b3887 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_1_upgrade.json @@ -0,0 +1,25 @@ +{ + "result": { + "nbt": { + "Fortune": 1 + }, + "item": "refinedstorage:upgrade", + "data": 7 + }, + "duration": 250, + "rows": [ + { + "type": "refinedstorage:enchanted_book", + "id": "fortune", + "level": 1 + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_2_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_2_upgrade.json new file mode 100644 index 000000000..9d7973fc6 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_2_upgrade.json @@ -0,0 +1,25 @@ +{ + "result": { + "nbt": { + "Fortune": 2 + }, + "item": "refinedstorage:upgrade", + "data": 7 + }, + "duration": 250, + "rows": [ + { + "type": "refinedstorage:enchanted_book", + "id": "fortune", + "level": 2 + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_3_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_3_upgrade.json new file mode 100644 index 000000000..8b74d48a3 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/fortune_3_upgrade.json @@ -0,0 +1,25 @@ +{ + "result": { + "nbt": { + "Fortune": 3 + }, + "item": "refinedstorage:upgrade", + "data": 7 + }, + "duration": 250, + "rows": [ + { + "type": "refinedstorage:enchanted_book", + "id": "fortune", + "level": 3 + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/improved_processor.json b/src/main/resources/assets/refinedstorage/solderer_recipes/improved_processor.json new file mode 100644 index 000000000..3bb253c90 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/improved_processor.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 4 + }, + "duration": 300, + "rows": [ + { + "item": "refinedstorage:processor", + "data": 1 + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:processor", + "data": 6 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/interdimensional_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/interdimensional_upgrade.json new file mode 100644 index 000000000..dd8766816 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/interdimensional_upgrade.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:upgrade", + "data": 5 + }, + "duration": 250, + "rows": [ + { + "type": "forge:ore_dict", + "ore": "netherStar" + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/interface.json b/src/main/resources/assets/refinedstorage/solderer_recipes/interface.json new file mode 100644 index 000000000..bc22ddd40 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/interface.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "refinedstorage:interface" + }, + "duration": 200, + "rows": [ + { + "item": "refinedstorage:importer" + }, + { + "item": "refinedstorage:exporter" + }, + { + "item": "refinedstorage:machine_casing" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/pattern_grid.json b/src/main/resources/assets/refinedstorage/solderer_recipes/pattern_grid.json new file mode 100644 index 000000000..417ba9072 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/pattern_grid.json @@ -0,0 +1,20 @@ +{ + "result": { + "item": "refinedstorage:grid", + "data": 2 + }, + "duration": 500, + "rows": [ + { + "item": "refinedstorage:pattern" + }, + { + "item": "refinedstorage:processor", + "data": 5 + }, + { + "item": "refinedstorage:grid", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor.json new file mode 100644 index 000000000..83ae0d909 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor.json @@ -0,0 +1,15 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 2 + }, + "duration": 200, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "gemDiamond" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor_from_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor_from_block.json new file mode 100644 index 000000000..71ef83dc7 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_advanced_processor_from_block.json @@ -0,0 +1,16 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 2, + "count": 9 + }, + "duration": 1200, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "blockDiamond" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor.json new file mode 100644 index 000000000..0ff8fa8ba --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor.json @@ -0,0 +1,15 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 0 + }, + "duration": 100, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "ingotIron" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor_from_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor_from_block.json new file mode 100644 index 000000000..8cf5dcb6b --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_basic_processor_from_block.json @@ -0,0 +1,16 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 0, + "count": 9 + }, + "duration": 600, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "blockIron" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor.json new file mode 100644 index 000000000..cbaf8366e --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor.json @@ -0,0 +1,15 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 1 + }, + "duration": 150, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "ingotGold" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor_from_block.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor_from_block.json new file mode 100644 index 000000000..e9d21739b --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_improved_processor_from_block.json @@ -0,0 +1,16 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 1, + "count": 9 + }, + "duration": 900, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "blockGold" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/printed_silicon.json b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_silicon.json new file mode 100644 index 000000000..be9e8ea11 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/printed_silicon.json @@ -0,0 +1,15 @@ +{ + "result": { + "item": "refinedstorage:processor", + "data": 6 + }, + "duration": 90, + "rows": [ + null, + { + "type": "forge:ore_dict", + "ore": "itemSilicon" + }, + null + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/range_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/range_upgrade.json new file mode 100644 index 000000000..c7aceca1f --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/range_upgrade.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:upgrade", + "data": 1 + }, + "duration": 250, + "rows": [ + { + "type": "forge:ore_dict", + "ore": "enderpearl" + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/silk_touch_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/silk_touch_upgrade.json new file mode 100644 index 000000000..b6f7585ae --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/silk_touch_upgrade.json @@ -0,0 +1,21 @@ +{ + "result": { + "item": "refinedstorage:upgrade", + "data": 6 + }, + "duration": 250, + "rows": [ + { + "type": "refinedstorage:enchanted_book", + "id": "silk_touch" + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/solderer_recipes/speed_upgrade.json b/src/main/resources/assets/refinedstorage/solderer_recipes/speed_upgrade.json new file mode 100644 index 000000000..a40c059e1 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/solderer_recipes/speed_upgrade.json @@ -0,0 +1,20 @@ +{ + "result": { + "item": "refinedstorage:upgrade", + "data": 2 + }, + "duration": 250, + "rows": [ + { + "item": "minecraft:sugar" + }, + { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + { + "item": "refinedstorage:upgrade", + "data": 0 + } + ] +} \ No newline at end of file