From 0a534f2eaea5ef1d31ece1dbebf01ecf85ff56fd Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 18 May 2014 07:53:39 -0400 Subject: [PATCH] Made a crate crafting handler, should prevent item loss when upgrading crates --- .../resonantinduction/archaic/Archaic.java | 3 ++ .../archaic/crate/CrateCraftingHandler.java | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 archaic/src/main/scala/resonantinduction/archaic/crate/CrateCraftingHandler.java diff --git a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java index 7b4a7a4e5..5256b617f 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java +++ b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java @@ -13,6 +13,7 @@ import resonant.lib.prefab.item.ItemBlockMetadata; import resonant.lib.recipe.UniversalRecipe; import resonantinduction.archaic.blocks.TileTurntable; import resonantinduction.archaic.crate.BlockCrate; +import resonantinduction.archaic.crate.CrateCraftingHandler; import resonantinduction.archaic.crate.ItemBlockCrate; import resonantinduction.archaic.crate.TileCrate; import resonantinduction.archaic.engineering.ItemHammer; @@ -166,6 +167,8 @@ public class Archaic GameRegistry.addRecipe(new ShapedOreRecipe(itemHandCrank, "S ", "SSS", " S", 'S', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(itemImprint, "PPP", "PIP", "PPP", 'P', Item.paper, 'I', new ItemStack(Item.dyePowder, 0))); GameRegistry.addRecipe(new ShapedOreRecipe(itemHammer, "CC ", "CS ", " S", 'C', "cobblestone", 'S', "stickWood")); + + GameRegistry.registerCraftingHandler(new CrateCraftingHandler()); proxy.postInit(); modproxies.postInit(); } diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/CrateCraftingHandler.java b/archaic/src/main/scala/resonantinduction/archaic/crate/CrateCraftingHandler.java new file mode 100644 index 000000000..30ae715e9 --- /dev/null +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/CrateCraftingHandler.java @@ -0,0 +1,39 @@ +package resonantinduction.archaic.crate; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import resonantinduction.archaic.Archaic; +import cpw.mods.fml.common.ICraftingHandler; + +/** Crafting handler for crates + * + * @author Darkguardsman */ +public class CrateCraftingHandler implements ICraftingHandler +{ + @Override + public void onCrafting(EntityPlayer player, ItemStack item, IInventory craftMatrix) + { + if (item != null && item.itemID == Archaic.blockCrate.blockID) + { + ItemStack centerStack = craftMatrix.getStackInSlot(4); + if (centerStack != null && centerStack.itemID == Archaic.blockCrate.blockID) + { + ItemStack containedStack = ItemBlockCrate.getContainingItemStack(centerStack); + if (centerStack != null) + { + ItemBlockCrate.setContainingItemStack(item, containedStack); + } + } + } + + } + + @Override + public void onSmelting(EntityPlayer player, ItemStack item) + { + // TODO Auto-generated method stub + + } + +}