fixed godawful shredder handler

This commit is contained in:
HbmMods 2020-04-24 20:58:06 +02:00
parent c88068fda1
commit d26f710679
5 changed files with 225 additions and 159 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 290 B

View File

@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map;
import com.hbm.inventory.MachineRecipes;
import com.hbm.inventory.MachineRecipes.StackWrapper;
import com.hbm.inventory.gui.GUIMachineShredder;
import com.hbm.lib.RefStrings;
@ -83,7 +84,7 @@ public class ShredderRecipeHandler extends TemplateRecipeHandler {
if ((outputId.equals("shredding")) && getClass() == ShredderRecipeHandler.class) {
Map<Object, Object> recipes = MachineRecipes.instance().getShredderRecipes();
for (Map.Entry<Object, Object> recipe : recipes.entrySet()) {
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()));
this.arecipes.add(new SmeltingSet(((StackWrapper)recipe.getKey()).getStack(), (ItemStack)recipe.getValue()));
}
} else {
super.loadCraftingRecipes(outputId, results);
@ -95,7 +96,7 @@ public class ShredderRecipeHandler extends TemplateRecipeHandler {
Map<Object, Object> recipes = MachineRecipes.instance().getShredderRecipes();
for (Map.Entry<Object, Object> recipe : recipes.entrySet()) {
if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result))
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()));
this.arecipes.add(new SmeltingSet(((StackWrapper)recipe.getKey()).getStack(), (ItemStack)recipe.getValue()));
}
}
@ -112,8 +113,8 @@ public class ShredderRecipeHandler extends TemplateRecipeHandler {
public void loadUsageRecipes(ItemStack ingredient) {
Map<Object, Object> recipes = MachineRecipes.instance().getShredderRecipes();
for (Map.Entry<Object, Object> recipe : recipes.entrySet()) {
if (NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()))
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()));
if (NEIServerUtils.areStacksSameType(ingredient, ((StackWrapper)recipe.getKey()).getStack()))
this.arecipes.add(new SmeltingSet(((StackWrapper)recipe.getKey()).getStack(), (ItemStack)recipe.getValue()));
}
}

View File

@ -7,6 +7,7 @@ import java.util.List;
import java.util.Map;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.interfaces.Spaghetti;
import com.hbm.items.ModItems;
import com.hbm.items.special.ItemBattery;
import com.hbm.items.tool.ItemAssemblyTemplate;
@ -1764,83 +1765,19 @@ public class MachineRecipes {
return fuels;
}
public class ShredderRecipe {
//keep this
//like in a museum or something
//this is a testament of my incompetence
//look at it
//look at how horrifying it is
//children, never do this
/*public class ShredderRecipe {
public ItemStack input;
public ItemStack output;
public void registerEverythingImSrs() {
//Makes the OreDict easily accessible. Neat.
//You see that guy up there? He's a liar. "easily accessible" may be true, but the detection is bullshit.
/*System.out.println("Loading all items and blocks, please wait...");
System.out.println("This process normally takes very long due to the incompetence of other modders I have to compensate for. Sorry for the inconvenience.");
for (Object item : GameData.getItemRegistry()) {
List<String> list = new ArrayList<String>();
int[] array;
if (item instanceof Item) {
int x = 1;
//if(((Item)item).getHasSubtypes())
// x = 126;
for(int j = 0; j < x; j++)
{
ItemStack stack = new ItemStack((Item) item, 1, j);
array = OreDictionary.getOreIDs(stack);
for (int i = 0; i < array.length; i++) {
// if
// (!OreDictionary.getOreName(array[i]).equals("Unknown"))
// {
list.add(OreDictionary.getOreName(array[i]));
// }
}
// if(list.size() > 0)
theWholeThing.add(new DictCouple(stack, list));
}
}
}
for (Object block : GameData.getBlockRegistry()) {
List<String> list = new ArrayList<String>();
int[] array;
if (block instanceof Block) {
Item item = Item.getItemFromBlock((Block)block);
int x = 1;
//if(item != null && item.getHasSubtypes())
// x = 16;
for(int j = 0; j < x; j++)
{
ItemStack stack = new ItemStack((Block) block, 1, j);
array = OreDictionary.getOreIDs(stack);
for (int i = 0; i < array.length; i++) {
// if
// (!OreDictionary.getOreName(array[i]).equals("Unknown"))
// {
list.add(OreDictionary.getOreName(array[i]));
// }
}
// if(list.size() > 0)
if(!doesExist(stack))
theWholeThing.add(new DictCouple(stack, list));
}
}
}
System.out.println("Added " + theWholeThing.size() + " elements from the Ore Dict!");*/
String[] names = OreDictionary.getOreNames();
List<ItemStack> stacks = new ArrayList<ItemStack>();
@ -1899,13 +1836,6 @@ public class MachineRecipes {
} else {
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
}
/*} else if (s.length() > 3 && s.substring(0, 3).equals("rod")) {
ItemStack stack = canFindDustByName(s.substring(3));
if (stack != null) {
setRecipe(theWholeThing.get(i).item, new ItemStack(stack.getItem(), 2, stack.getItemDamage()));
} else {
setRecipe(theWholeThing.get(i).item, new ItemStack(ModItems.scrap));
}*/
} else if (s.length() > 5 && s.substring(0, 5).equals("block")) {
ItemStack stack = canFindDustByName(s.substring(5));
if (stack != null) {
@ -2018,28 +1948,6 @@ public class MachineRecipes {
}
public void PrintRecipes() {
/*for(int i = 0; i < recipes.size(); i++) {
System.out.println("Recipe #" + i + ", " + recipes.get(i).input + " - " + recipes.get(i).output);
}*/
/*for(int i = 0; i < theWholeThing.size(); i++) {
System.out.println(theWholeThing.get(i).item);
}*/
/*for(int i = 0; i < theWholeThing.size(); i++) {
//for(int j = 0; j < theWholeThing.get(i).list.size(); j++)
{
//System.out.println(theWholeThing.get(i).item + " | " + getShredderResult(theWholeThing.get(i).item));
}
}*/
/*for (int j = 0; j < recipes.size(); j++) {
if (recipes.get(j) != null && recipes.get(j).input != null && recipes.get(j).output != null &&
recipes.get(j).input.getItem() != null && recipes.get(j).output.getItem() != null)
System.out.println(recipes.get(j).input + " | " + recipes.get(j).output);
else
System.out.println(recipes.get(j));
}*/
MainRegistry.logger.debug("TWT: " + theWholeThing.size() + ", REC: " + recipesShredder.size());
}
@ -2090,6 +1998,118 @@ public class MachineRecipes {
}
return recipes;
}*/
//new and improved
public static HashMap<StackWrapper, ItemStack> shredderRecipes = new HashMap();
public static HashMap<Object, Object> neiShredderRecipes;
public static void registerShredder() {
String[] names = OreDictionary.getOreNames();
for(int i = 0; i < names.length; i++) {
String name = names[i];
//if the dict contains invalid names, skip
if(name == null || name.isEmpty())
continue;
List<ItemStack> matches = OreDictionary.getOres(name);
//if the name isn't assigned to an ore, also skip
if(matches == null || matches.isEmpty())
continue;
if(name.length() > 5 && name.substring(0, 5).equals("ingot")) {
ItemStack dust = getDustByName(name.substring(5));
if(dust != null) {
for(ItemStack stack : matches) {
System.out.println("INGOT Added " + stack.getDisplayName() + " to " + dust.getDisplayName() + " (" + dust.stackSize + ")");
shredderRecipes.put(new StackWrapper(stack), dust);
}
}
} else if(name.length() > 3 && name.substring(0, 3).equals("ore")) {
ItemStack dust = getDustByName(name.substring(3));
if(dust != null) {
dust.stackSize = 2;
for(ItemStack stack : matches) {
System.out.println("ORE Added " + stack.getDisplayName() + " to " + dust.getDisplayName() + " (" + dust.stackSize + ")");
shredderRecipes.put(new StackWrapper(stack), dust);
}
}
} else if(name.length() > 5 && name.substring(0, 5).equals("block")) {
ItemStack dust = getDustByName(name.substring(5));
if(dust != null) {
dust.stackSize = 9;
for(ItemStack stack : matches) {
System.out.println("BLOCK Added " + stack.getDisplayName() + " to " + dust.getDisplayName() + " (" + dust.stackSize + ")");
shredderRecipes.put(new StackWrapper(stack), dust);
}
}
} else if(name.length() > 3 && name.substring(0, 3).equals("gem")) {
ItemStack dust = getDustByName(name.substring(3));
if(dust != null) {
for(ItemStack stack : matches) {
System.out.println("GEM Added " + stack.getDisplayName() + " to " + dust.getDisplayName() + " (" + dust.stackSize + ")");
shredderRecipes.put(new StackWrapper(stack), dust);
}
}
} else if(name.length() > 3 && name.substring(0, 4).equals("dust")) {
for(ItemStack stack : matches) {
System.out.println("DUST Added " + stack.getDisplayName() + " to dust");
shredderRecipes.put(new StackWrapper(stack), new ItemStack(ModItems.dust));
}
}
}
}
public static ItemStack getDustByName(String name) {
List<ItemStack> matches = OreDictionary.getOres("dust" + name);
if(matches != null && !matches.isEmpty())
return matches.get(0).copy();
return new ItemStack(ModItems.scrap);
}
public static void overridePreSetRecipe(ItemStack in, ItemStack out) {
shredderRecipes.put(new StackWrapper(in), out);
}
public Map<Object, Object> getShredderRecipes() {
//convert the map only once to save on processing power (might be more ram intensive but that can't be THAT bad, right?)
if(neiShredderRecipes == null)
neiShredderRecipes = new HashMap(shredderRecipes);
return neiShredderRecipes;
}
public static ItemStack getShredderResult(ItemStack stack) {
ItemStack sta = shredderRecipes.get(new StackWrapper(stack));
if(sta != null)
System.out.println(stack.getDisplayName() + " resulted " + sta.getDisplayName());
else
System.out.println(stack.getDisplayName() + " resulted null");
return sta == null ? new ItemStack(ModItems.scrap) : sta;
}
public Map<Object[], Object> getCMBRecipes() {
@ -2184,6 +2204,7 @@ public class MachineRecipes {
return false;
}
@Spaghetti("jesus christ")
public static List<ItemStack> getRecipeFromTempate(ItemStack stack) {
if(stack == null || !(stack.getItem() instanceof ItemAssemblyTemplate))
@ -5679,4 +5700,57 @@ public class MachineRecipes {
return map;
}
public static class StackWrapper {
public Item item;
public int damage;
public StackWrapper(ItemStack item) {
this.item = item.getItem();
this.damage = item.getItemDamage();
}
public StackWrapper(Item item) {
this.item = item;
this.damage = 0;
}
public StackWrapper(Item item, int meta) {
this.item = item;
this.damage = meta;
}
public ItemStack getStack() {
return new ItemStack(item, 1, damage);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + damage;
result = prime * result + ((item == null) ? 0 : item.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StackWrapper other = (StackWrapper) obj;
if (damage != other.damage)
return false;
if (item == null) {
if (other.item != null)
return false;
} else if (!item.equals(other.item))
return false;
return true;
}
}
}

View File

@ -50,7 +50,6 @@ import com.hbm.entity.projectile.*;
import com.hbm.handler.*;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.inventory.*;
import com.hbm.inventory.MachineRecipes.ShredderRecipe;
import com.hbm.items.ModItems;
import com.hbm.lib.HbmWorld;
import com.hbm.lib.Library;
@ -1286,64 +1285,56 @@ public class MainRegistry
@EventHandler
public static void PostLoad(FMLPostInitializationEvent PostEvent)
{
ShredderRecipe recipes = new MachineRecipes().new ShredderRecipe();
recipes.registerEverythingImSrs();
recipes.addRecipes();
recipes.removeDuplicates();
MachineRecipes.registerShredder();
recipes.overridePreSetRecipe(new ItemStack(ModItems.scrap), new ItemStack(ModItems.dust));
recipes.overridePreSetRecipe(new ItemStack(ModItems.dust), new ItemStack(ModItems.dust));
recipes.overridePreSetRecipe(new ItemStack(Blocks.glowstone), new ItemStack(Items.glowstone_dust, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 0), new ItemStack(ModItems.powder_quartz, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 1), new ItemStack(ModItems.powder_quartz, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 2), new ItemStack(ModItems.powder_quartz, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_stairs), new ItemStack(ModItems.powder_quartz, 3));
recipes.overridePreSetRecipe(new ItemStack(Blocks.stone_slab, 1, 7), new ItemStack(ModItems.powder_quartz, 2));
recipes.overridePreSetRecipe(new ItemStack(Items.quartz), new ItemStack(ModItems.powder_quartz));
recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_ore), new ItemStack(ModItems.powder_quartz, 2));
recipes.overridePreSetRecipe(new ItemStack(ModBlocks.ore_nether_fire), new ItemStack(ModItems.powder_fire, 6));
recipes.overridePreSetRecipe(new ItemStack(Blocks.packed_ice), new ItemStack(ModItems.powder_ice, 1));
recipes.overridePreSetRecipe(new ItemStack(ModBlocks.brick_light), new ItemStack(Items.clay_ball, 4));
recipes.overridePreSetRecipe(new ItemStack(ModBlocks.brick_concrete), new ItemStack(Blocks.gravel, 1));
recipes.overridePreSetRecipe(new ItemStack(ModBlocks.brick_obsidian), new ItemStack(ModBlocks.gravel_obsidian, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.obsidian), new ItemStack(ModBlocks.gravel_obsidian, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.stone), new ItemStack(Blocks.gravel, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.gravel, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.gravel, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.gravel), new ItemStack(Blocks.sand, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.sand), new ItemStack(ModItems.dust, 2));
recipes.overridePreSetRecipe(new ItemStack(Blocks.brick_block), new ItemStack(Items.clay_ball, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.brick_stairs), new ItemStack(Items.clay_ball, 3));
recipes.overridePreSetRecipe(new ItemStack(Items.flower_pot), new ItemStack(Items.clay_ball, 3));
recipes.overridePreSetRecipe(new ItemStack(Items.brick), new ItemStack(Items.clay_ball, 1));
recipes.overridePreSetRecipe(new ItemStack(Blocks.sandstone), new ItemStack(Blocks.sand, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.sandstone_stairs), new ItemStack(Blocks.sand, 6));
recipes.overridePreSetRecipe(new ItemStack(Blocks.clay), new ItemStack(Items.clay_ball, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.hardened_clay), new ItemStack(Items.clay_ball, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.tnt), new ItemStack(Items.gunpowder, 5));
recipes.overridePreSetRecipe(new ItemStack(ModItems.powder_quartz), new ItemStack(ModItems.powder_lithium_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.powder_lapis), new ItemStack(ModItems.powder_cobalt_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_neodymium), new ItemStack(ModItems.powder_neodymium_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_cobalt), new ItemStack(ModItems.powder_cobalt_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_niobium), new ItemStack(ModItems.powder_niobium_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_cerium), new ItemStack(ModItems.powder_cerium_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_lanthanium), new ItemStack(ModItems.powder_lanthanium_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_actinium), new ItemStack(ModItems.powder_actinium_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_meteorite), new ItemStack(ModItems.powder_meteorite_tiny, 1));
recipes.overridePreSetRecipe(new ItemStack(ModBlocks.block_meteor), new ItemStack(ModItems.powder_meteorite, 10));
recipes.overridePreSetRecipe(new ItemStack(Items.enchanted_book), new ItemStack(ModItems.powder_magic, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.arc_electrode_burnt), new ItemStack(ModItems.powder_coal, 1));
recipes.overridePreSetRecipe(new ItemStack(ModItems.arc_electrode_desh), new ItemStack(ModItems.powder_desh, 2));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.scrap), new ItemStack(ModItems.dust));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.dust), new ItemStack(ModItems.dust));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.glowstone), new ItemStack(Items.glowstone_dust, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 0), new ItemStack(ModItems.powder_quartz, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 1), new ItemStack(ModItems.powder_quartz, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 2), new ItemStack(ModItems.powder_quartz, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_stairs), new ItemStack(ModItems.powder_quartz, 3));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.stone_slab, 1, 7), new ItemStack(ModItems.powder_quartz, 2));
MachineRecipes.overridePreSetRecipe(new ItemStack(Items.quartz), new ItemStack(ModItems.powder_quartz));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_ore), new ItemStack(ModItems.powder_quartz, 2));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModBlocks.ore_nether_fire), new ItemStack(ModItems.powder_fire, 6));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.packed_ice), new ItemStack(ModItems.powder_ice, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModBlocks.brick_light), new ItemStack(Items.clay_ball, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModBlocks.brick_concrete), new ItemStack(Blocks.gravel, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModBlocks.brick_obsidian), new ItemStack(ModBlocks.gravel_obsidian, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.obsidian), new ItemStack(ModBlocks.gravel_obsidian, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.stone), new ItemStack(Blocks.gravel, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.gravel, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.gravel, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.gravel), new ItemStack(Blocks.sand, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.sand), new ItemStack(ModItems.dust, 2));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.brick_block), new ItemStack(Items.clay_ball, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.brick_stairs), new ItemStack(Items.clay_ball, 3));
MachineRecipes.overridePreSetRecipe(new ItemStack(Items.flower_pot), new ItemStack(Items.clay_ball, 3));
MachineRecipes.overridePreSetRecipe(new ItemStack(Items.brick), new ItemStack(Items.clay_ball, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.sandstone), new ItemStack(Blocks.sand, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.sandstone_stairs), new ItemStack(Blocks.sand, 6));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.clay), new ItemStack(Items.clay_ball, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.hardened_clay), new ItemStack(Items.clay_ball, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.tnt), new ItemStack(Items.gunpowder, 5));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.powder_quartz), new ItemStack(ModItems.powder_lithium_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.powder_lapis), new ItemStack(ModItems.powder_cobalt_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_neodymium), new ItemStack(ModItems.powder_neodymium_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_cobalt), new ItemStack(ModItems.powder_cobalt_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_niobium), new ItemStack(ModItems.powder_niobium_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_cerium), new ItemStack(ModItems.powder_cerium_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_lanthanium), new ItemStack(ModItems.powder_lanthanium_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_actinium), new ItemStack(ModItems.powder_actinium_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_meteorite), new ItemStack(ModItems.powder_meteorite_tiny, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModBlocks.block_meteor), new ItemStack(ModItems.powder_meteorite, 10));
MachineRecipes.overridePreSetRecipe(new ItemStack(Items.enchanted_book), new ItemStack(ModItems.powder_magic, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.arc_electrode_burnt), new ItemStack(ModItems.powder_coal, 1));
MachineRecipes.overridePreSetRecipe(new ItemStack(ModItems.arc_electrode_desh), new ItemStack(ModItems.powder_desh, 2));
for(int i = 0; i < 16; i++) {
recipes.overridePreSetRecipe(new ItemStack(Blocks.stained_hardened_clay, 1, i), new ItemStack(Items.clay_ball, 4));
recipes.overridePreSetRecipe(new ItemStack(Blocks.wool, 1, i), new ItemStack(Items.string, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.stained_hardened_clay, 1, i), new ItemStack(Items.clay_ball, 4));
MachineRecipes.overridePreSetRecipe(new ItemStack(Blocks.wool, 1, i), new ItemStack(Items.string, 4));
}
recipes.PrintRecipes();
FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(Items.water_bucket), new ItemStack(Items.bucket), FluidType.WATER, 1000));
FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(Items.lava_bucket), new ItemStack(Items.bucket), FluidType.LAVA, 1000));