Converted Solderer recipes to JSON, fixes #1356

This commit is contained in:
raoulvdberge
2017-07-13 13:30:06 +02:00
parent f24f76c550
commit d1722c5458
44 changed files with 844 additions and 428 deletions

View File

@@ -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

View File

@@ -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<ISoldererRecipe> 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<ItemStack>... rows);
}

View File

@@ -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<NonNullList<ItemStack>> 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<ItemStack> getRow(int row) {
return rows.get(row);
}
@Nonnull
@Override
public ItemStack getResult() {
return result;
}
@Override
public int getDuration() {
return duration;
}
};
}
}

View File

@@ -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<ItemStack> 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<ItemStack> 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;
}
}

View File

@@ -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;
});
}
}

View File

@@ -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<ItemStack> 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<ItemStack> 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;
}
}
}

View File

@@ -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<NonNullList<ItemStack>> 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<ItemStack> 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;
}
}
}

View File

@@ -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<ItemStack> 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<ItemStack> 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;
}
}

View File

@@ -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<NonNullList<ItemStack>> 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<ItemStack> getRow(int row) {
return rows.get(row);
}
@Override
@Nonnull
public ItemStack getResult() {
return result;
}
@Override
public int getDuration() {
return 250;
}
}

View File

@@ -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<ISoldererRecipe> recipes = new ArrayList<>();
private List<ISoldererRecipe> recipes = new LinkedList<>();
@Override
public void addRecipe(@Nonnull ISoldererRecipe recipe) {
@@ -59,31 +59,4 @@ public class SoldererRegistry implements ISoldererRegistry {
public List<ISoldererRecipe> getRecipes() {
return recipes;
}
@Nonnull
@Override
public ISoldererRecipe createSimpleRecipe(@Nonnull ItemStack result, int duration, NonNullList<ItemStack>... rows) {
if (rows.length != 3) {
throw new IllegalArgumentException("Solderer recipe expects 3 rows, got " + rows.length + " rows");
}
return new ISoldererRecipe() {
@Nonnull
@Override
public NonNullList<ItemStack> getRow(int row) {
return rows[row];
}
@Nonnull
@Override
public ItemStack getResult() {
return result;
}
@Override
public int getDuration() {
return duration;
}
};
}
}

View File

@@ -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<ItemStack> 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();
}
}
}

View File

@@ -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();

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -0,0 +1,18 @@
{
"result": {
"item": "refinedstorage:fluid_interface"
},
"duration": 200,
"rows": [
{
"item": "minecraft:bucket"
},
{
"type": "forge:ore_dict",
"ore": "dustRedstone"
},
{
"item": "refinedstorage:interface"
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -0,0 +1,17 @@
{
"result": {
"item": "refinedstorage:interface"
},
"duration": 200,
"rows": [
{
"item": "refinedstorage:importer"
},
{
"item": "refinedstorage:exporter"
},
{
"item": "refinedstorage:machine_casing"
}
]
}

View File

@@ -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
}
]
}

View File

@@ -0,0 +1,15 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 2
},
"duration": 200,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "gemDiamond"
},
null
]
}

View File

@@ -0,0 +1,16 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 2,
"count": 9
},
"duration": 1200,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "blockDiamond"
},
null
]
}

View File

@@ -0,0 +1,15 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 0
},
"duration": 100,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "ingotIron"
},
null
]
}

View File

@@ -0,0 +1,16 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 0,
"count": 9
},
"duration": 600,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "blockIron"
},
null
]
}

View File

@@ -0,0 +1,15 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 1
},
"duration": 150,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "ingotGold"
},
null
]
}

View File

@@ -0,0 +1,16 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 1,
"count": 9
},
"duration": 900,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "blockGold"
},
null
]
}

View File

@@ -0,0 +1,15 @@
{
"result": {
"item": "refinedstorage:processor",
"data": 6
},
"duration": 90,
"rows": [
null,
{
"type": "forge:ore_dict",
"ore": "itemSilicon"
},
null
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}