Converted Solderer recipes to JSON, fixes #1356
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
# Refined Storage Changelog
|
# Refined Storage Changelog
|
||||||
|
|
||||||
|
### 1.5.10
|
||||||
|
- Converted Solderer recipes to JSON (raoulvdberge)
|
||||||
|
|
||||||
### 1.5.9
|
### 1.5.9
|
||||||
- Fixed crash relating to MCMP (raoulvdberge)
|
- Fixed crash relating to MCMP (raoulvdberge)
|
||||||
- Fixed not being able to extract anything when connecting an External Storage to Storage Drawers (raoulvdberge)
|
- Fixed not being able to extract anything when connecting an External Storage to Storage Drawers (raoulvdberge)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.api.solderer;
|
|||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
@@ -9,6 +10,11 @@ import javax.annotation.Nonnull;
|
|||||||
* Represents a recipe in the solderer.
|
* Represents a recipe in the solderer.
|
||||||
*/
|
*/
|
||||||
public interface ISoldererRecipe {
|
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)
|
* @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
|
* @return possible stack(s) for the given row, or empty list for no stack
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.api.solderer;
|
package com.raoulvdberge.refinedstorage.api.solderer;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -32,15 +30,4 @@ public interface ISoldererRegistry {
|
|||||||
* @return a list with all the solderer recipes
|
* @return a list with all the solderer recipes
|
||||||
*/
|
*/
|
||||||
List<ISoldererRecipe> getRecipes();
|
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);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,11 +10,11 @@ import net.minecraftforge.items.IItemHandler;
|
|||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SoldererRegistry implements ISoldererRegistry {
|
public class SoldererRegistry implements ISoldererRegistry {
|
||||||
private List<ISoldererRecipe> recipes = new ArrayList<>();
|
private List<ISoldererRecipe> recipes = new LinkedList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addRecipe(@Nonnull ISoldererRecipe recipe) {
|
public void addRecipe(@Nonnull ISoldererRecipe recipe) {
|
||||||
@@ -59,31 +59,4 @@ public class SoldererRegistry implements ISoldererRegistry {
|
|||||||
public List<ISoldererRecipe> getRecipes() {
|
public List<ISoldererRecipe> getRecipes() {
|
||||||
return recipes;
|
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;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,19 +2,13 @@ package com.raoulvdberge.refinedstorage.item;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
import com.raoulvdberge.refinedstorage.RSItems;
|
||||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.client.util.ITooltipFlag;
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
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.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -105,23 +99,4 @@ public class ItemUpgrade extends ItemBase {
|
|||||||
return 0;
|
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.proxy;
|
package com.raoulvdberge.refinedstorage.proxy;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonSyntaxException;
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
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.ReaderWriterHandlerFluids;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone;
|
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.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.capability.CapabilityNetworkNodeProxy;
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiHandler;
|
import com.raoulvdberge.refinedstorage.gui.GuiHandler;
|
||||||
import com.raoulvdberge.refinedstorage.integration.craftingtweaks.IntegrationCraftingTweaks;
|
import com.raoulvdberge.refinedstorage.integration.craftingtweaks.IntegrationCraftingTweaks;
|
||||||
import com.raoulvdberge.refinedstorage.integration.forgeenergy.ReaderWriterHandlerForgeEnergy;
|
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.network.*;
|
||||||
import com.raoulvdberge.refinedstorage.tile.*;
|
import com.raoulvdberge.refinedstorage.tile.*;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
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.TileGrid;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
|
||||||
import net.minecraft.block.Block;
|
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.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemEnchantedBook;
|
||||||
import net.minecraft.util.NonNullList;
|
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.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.event.RegistryEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
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.fml.relauncher.Side;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -208,88 +210,24 @@ public class ProxyCommon {
|
|||||||
public void init(FMLInitializationEvent e) {
|
public void init(FMLInitializationEvent e) {
|
||||||
OreDictionary.registerOre("itemSilicon", RSItems.SILICON);
|
OreDictionary.registerOre("itemSilicon", RSItems.SILICON);
|
||||||
|
|
||||||
// Processors
|
CraftingHelper.register(new ResourceLocation(RS.ID + ":enchanted_book"), new IIngredientFactory() {
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC, false));
|
@Nonnull
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_IMPROVED, false));
|
@Override
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_ADVANCED, false));
|
public Ingredient parse(JsonContext context, JsonObject json) {
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_BASIC, true));
|
String id = JsonUtils.getString(json, "id");
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_IMPROVED, true));
|
int level = JsonUtils.getInt(json, "level", 1);
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_ADVANCED, true));
|
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipePrintedProcessor(ItemProcessor.TYPE_PRINTED_SILICON, false));
|
|
||||||
|
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_BASIC));
|
Enchantment enchantment = Enchantment.getEnchantmentByLocation(id);
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_IMPROVED));
|
|
||||||
API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeProcessor(ItemProcessor.TYPE_ADVANCED));
|
|
||||||
|
|
||||||
// Silicon
|
if (enchantment == null) {
|
||||||
GameRegistry.addSmelting(Items.QUARTZ, new ItemStack(RSItems.SILICON), 0.5f);
|
throw new JsonSyntaxException("Couldn't find enchantment with id '" + id + "'");
|
||||||
|
}
|
||||||
|
|
||||||
// Crafting Grid
|
return Ingredient.fromStacks(ItemEnchantedBook.getEnchantedItemStack(new EnchantmentData(enchantment, level)));
|
||||||
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()))
|
|
||||||
));
|
|
||||||
|
|
||||||
// Pattern Grid
|
SoldererRecipeLoader.load();
|
||||||
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))
|
|
||||||
));
|
|
||||||
|
|
||||||
/*if (IntegrationOC.isLoaded()) {
|
/*if (IntegrationOC.isLoaded()) {
|
||||||
DriverNetwork.register();
|
DriverNetwork.register();
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:fluid_interface"
|
||||||
|
},
|
||||||
|
"duration": 200,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"item": "minecraft:bucket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "dustRedstone"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "refinedstorage:interface"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:interface"
|
||||||
|
},
|
||||||
|
"duration": 200,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"item": "refinedstorage:importer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "refinedstorage:exporter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "refinedstorage:machine_casing"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 2
|
||||||
|
},
|
||||||
|
"duration": 200,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "gemDiamond"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 2,
|
||||||
|
"count": 9
|
||||||
|
},
|
||||||
|
"duration": 1200,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "blockDiamond"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 0
|
||||||
|
},
|
||||||
|
"duration": 100,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "ingotIron"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 0,
|
||||||
|
"count": 9
|
||||||
|
},
|
||||||
|
"duration": 600,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "blockIron"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 1
|
||||||
|
},
|
||||||
|
"duration": 150,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "ingotGold"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 1,
|
||||||
|
"count": 9
|
||||||
|
},
|
||||||
|
"duration": 900,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "blockGold"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"item": "refinedstorage:processor",
|
||||||
|
"data": 6
|
||||||
|
},
|
||||||
|
"duration": 90,
|
||||||
|
"rows": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"type": "forge:ore_dict",
|
||||||
|
"ore": "itemSilicon"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user