From a2d1b5c453d92d0f7430b165f61c5cc4a4c1abe6 Mon Sep 17 00:00:00 2001 From: Christian Weeks Date: Sun, 29 Jan 2012 11:30:49 -0500 Subject: [PATCH] Copper and silver chests InvTweaks support --- .../cpw/mods/ironchest/client/GUIChest.java | 35 ++++--- .../net/minecraft/src/mod_IronChest.java | 28 ++++-- .../cpw/mods/ironchest/BlockIronChest.java | 5 +- .../mods/ironchest/ContainerDiamondChest.java | 46 --------- .../mods/ironchest/ContainerGoldChest.java | 50 ---------- .../ironchest/ContainerIronChestBase.java | 48 +++++++--- .../cpw/mods/ironchest/IronChestType.java | 87 +++++++++++------- .../mods/ironchest/TileEntityCopperChest.java | 8 ++ .../mods/ironchest/TileEntitySilverChest.java | 7 ++ .../ironchest/sprites/coppercontainer.png | Bin 0 -> 3677 bytes .../ironchest/sprites/silvercontainer.png | Bin 0 -> 3818 bytes 11 files changed, 139 insertions(+), 175 deletions(-) delete mode 100644 IronChests2/common/cpw/mods/ironchest/ContainerDiamondChest.java delete mode 100644 IronChests2/common/cpw/mods/ironchest/ContainerGoldChest.java create mode 100644 IronChests2/common/cpw/mods/ironchest/TileEntityCopperChest.java create mode 100644 IronChests2/common/cpw/mods/ironchest/TileEntitySilverChest.java create mode 100644 IronChests2/resources/cpw/mods/ironchest/sprites/coppercontainer.png create mode 100644 IronChests2/resources/cpw/mods/ironchest/sprites/silvercontainer.png diff --git a/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java b/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java index 8592789..fc69005 100644 --- a/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java +++ b/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java @@ -1,31 +1,31 @@ package cpw.mods.ironchest.client; -import org.lwjgl.opengl.GL11; - -import cpw.mods.ironchest.ContainerDiamondChest; -import cpw.mods.ironchest.ContainerGoldChest; -import cpw.mods.ironchest.ContainerIronChestBase; -import cpw.mods.ironchest.IronChestType; -import cpw.mods.ironchest.TileEntityIronChest; import net.minecraft.src.Container; import net.minecraft.src.EntityPlayer; import net.minecraft.src.GuiContainer; import net.minecraft.src.IInventory; import net.minecraft.src.ModLoader; +import org.lwjgl.opengl.GL11; + +import cpw.mods.ironchest.ContainerIronChestBase; +import cpw.mods.ironchest.IronChestType; +import cpw.mods.ironchest.TileEntityIronChest; + public class GUIChest extends GuiContainer { public enum GUI { - GOLD(ContainerGoldChest.class,184,256,"/ic2/sprites/goldcontainer.png",IronChestType.GOLD), - DIAMOND(ContainerDiamondChest.class,238,256,"/ic2/sprites/diamondcontainer.png",IronChestType.DIAMOND); + IRON(184,202,"/cpw/mods/ironchest/sprites/ironcontainer.png",IronChestType.IRON), + GOLD(184,256,"/cpw/mods/ironchest/sprites/goldcontainer.png",IronChestType.GOLD), + DIAMOND(238,256,"/cpw/mods/ironchest/sprites/diamondcontainer.png",IronChestType.DIAMOND), + COPPER(184,184,"/cpw/mods/ironchest/sprites/coppercontainer.png",IronChestType.COPPER), + SILVER(184,238,"/cpw/mods/ironchest/sprites/silvercontainer.png",IronChestType.SILVER); - private Class clazz; private int xSize; private int ySize; private String guiTexture; private IronChestType mainType; - private GUI(Class clazz, int xSize, int ySize, String guiTexture, IronChestType mainType) { - this.clazz=clazz; + private GUI(int xSize, int ySize, String guiTexture, IronChestType mainType) { this.xSize=xSize; this.ySize=ySize; this.guiTexture=guiTexture; @@ -33,13 +33,7 @@ public class GUIChest extends GuiContainer { } protected Container makeContainer(IInventory player, IInventory chest) { - try { - return clazz.getConstructor(IInventory.class,IInventory.class).newInstance(player,chest); - } catch (Exception e) { - // unpossible - e.printStackTrace(); - throw new RuntimeException(e); - } + return new ContainerIronChestBase(player,chest, mainType, xSize, ySize); } public static void showGUI(TileEntityIronChest te, EntityPlayer player) { @@ -53,6 +47,9 @@ public class GUIChest extends GuiContainer { } } + public int getRowLength() { + return type.mainType.getRowLength(); + } private GUI type; private GUIChest(GUI type, IInventory player, IInventory chest) { diff --git a/IronChests2/client/net/minecraft/src/mod_IronChest.java b/IronChests2/client/net/minecraft/src/mod_IronChest.java index aba0b61..90f25d0 100644 --- a/IronChests2/client/net/minecraft/src/mod_IronChest.java +++ b/IronChests2/client/net/minecraft/src/mod_IronChest.java @@ -11,6 +11,8 @@ import cpw.mods.ironchest.client.IronChestRenderHelper; import cpw.mods.ironchest.client.TileEntityIronChestRenderer; import net.minecraft.client.Minecraft; import net.minecraft.src.forge.Configuration; +import net.minecraft.src.forge.IOreHandler; +import net.minecraft.src.forge.MinecraftForge; import net.minecraft.src.forge.MinecraftForgeClient; public class mod_IronChest extends BaseModMp { @@ -26,16 +28,10 @@ public class mod_IronChest extends BaseModMp { @Override public void load() { File cfgFile = new File(Minecraft.getMinecraftDir(), "config/IronChest.cfg"); - // If our config file exists - boolean defaultCompatibility = cfgFile.exists(); Configuration cfg = new Configuration(cfgFile); try { cfg.load(); - // But doesn't have the compatibilityMode flag, enable compatibility - // mode - compatibilityMode = Boolean.parseBoolean(cfg.getOrCreateBooleanProperty("compatibilityMode", Configuration.GENERAL_PROPERTY, - defaultCompatibility).value); - ironChestBlock = new BlockIronChest(Integer.parseInt(cfg.getOrCreateBlockIdProperty("blockVeryLargeChest", 181).value)); + ironChestBlock = new BlockIronChest(Integer.parseInt(cfg.getOrCreateBlockIdProperty("ironChests", 181).value)); IronChestType.initGUIs(cfg); } catch (Exception e) { ModLoader.getLogger().severe("IronChest was unable to load it's configuration successfully"); @@ -45,13 +41,27 @@ public class mod_IronChest extends BaseModMp { cfg.save(); } + MinecraftForge.registerOreHandler(new IOreHandler() { + @Override + public void registerOre(String oreClass, ItemStack ore) { + if ("ingotCopper".equals(oreClass)) { + IronChestType.generateRecipesForType(ironChestBlock, Block.chest, IronChestType.COPPER, ore); + } + if ("ingotSilver".equals(oreClass)) { + IronChestType.generateRecipesForType(ironChestBlock, ironChestBlock, IronChestType.SILVER, ore); + } + if ("ingotRefinedIron".equals(oreClass)) { + IronChestType.generateRecipesForType(ironChestBlock, Block.chest, IronChestType.IRON, ore); + } + } + }); ModLoader.RegisterBlock(ironChestBlock, ItemIronChest.class); IronChestType.registerTranslations(); IronChestType.registerTileEntities(TileEntityIronChestRenderer.class); - IronChestType.registerRecipes(ironChestBlock); + IronChestType.generateTieredRecipies(ironChestBlock); ChestItemRenderHelper.instance=new IronChestRenderHelper(); - MinecraftForgeClient.preloadTexture("ic2/sprites/ironchest_block_tex.png"); + MinecraftForgeClient.preloadTexture("cpw/mods/ironchest/sprites/block_textures.png"); } public static void openGUI(EntityPlayer player, TileEntityIronChest te) { diff --git a/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java b/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java index 2cbb8b4..c0fec2e 100644 --- a/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java +++ b/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java @@ -12,7 +12,6 @@ import net.minecraft.src.Material; import net.minecraft.src.MathHelper; import net.minecraft.src.NBTTagCompound; import net.minecraft.src.TileEntity; -import net.minecraft.src.TileEntityChest; import net.minecraft.src.World; import net.minecraft.src.mod_IronChest; import net.minecraft.src.forge.ITextureProvider; @@ -34,7 +33,7 @@ public class BlockIronChest extends BlockContainer implements ITextureProvider { @Override public String getTextureFile() { - return "ic2/sprites/ironchest_block_tex.png"; + return "cpw/mods/ironchest/sprites/block_textures.png"; } @Override @@ -140,7 +139,7 @@ public class BlockIronChest extends BlockContainer implements ITextureProvider { public void onBlockRemoval(World world, int i, int j, int k) { - TileEntityChest tileentitychest = (TileEntityChest)world.getBlockTileEntity(i, j, k); + TileEntityIronChest tileentitychest = (TileEntityIronChest)world.getBlockTileEntity(i, j, k); if (tileentitychest != null) { for (int l = 0; l < tileentitychest.getSizeInventory(); l++) diff --git a/IronChests2/common/cpw/mods/ironchest/ContainerDiamondChest.java b/IronChests2/common/cpw/mods/ironchest/ContainerDiamondChest.java deleted file mode 100644 index 9d96740..0000000 --- a/IronChests2/common/cpw/mods/ironchest/ContainerDiamondChest.java +++ /dev/null @@ -1,46 +0,0 @@ -package cpw.mods.ironchest; - -import net.minecraft.src.IInventory; -import net.minecraft.src.Slot; - -public class ContainerDiamondChest extends ContainerIronChestBase { - public ContainerDiamondChest(IInventory playerInventory, IInventory chestInventory) { - super(playerInventory, chestInventory); - } - - private static final int NUM_ROWS = 9; - private static final int ROW_LENGTH = 12; - - - @Override - protected void layoutContainer(IInventory playerInventory, IInventory chestInventory) { - for(int i = 0; i < NUM_ROWS; i++) - { - for(int l = 0; l < ROW_LENGTH; l++) - { - addSlot(new Slot(chestInventory, l + i * ROW_LENGTH, 12 + l * 18, 8 + i * 18)); - } - - } - - for(int j = 0; j < 3; j++) - { - for(int i1 = 0; i1 < 9; i1++) - { - addSlot(new Slot(playerInventory, i1 + j * 9 + 9, 39 + i1 * 18, 174 + j * 18)); - } - - } - - for(int k = 0; k < 9; k++) - { - addSlot(new Slot(playerInventory, k, 39 + k * 18, 232)); - } - } - - @Override - protected int getRowLength() { - return ROW_LENGTH; - } - -} diff --git a/IronChests2/common/cpw/mods/ironchest/ContainerGoldChest.java b/IronChests2/common/cpw/mods/ironchest/ContainerGoldChest.java deleted file mode 100644 index bc9aab0..0000000 --- a/IronChests2/common/cpw/mods/ironchest/ContainerGoldChest.java +++ /dev/null @@ -1,50 +0,0 @@ -// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. -// Jad home page: http://www.kpdus.com/jad.html -// Decompiler options: packimports(3) braces deadcode - -package cpw.mods.ironchest; - -import net.minecraft.src.IInventory; -import net.minecraft.src.Slot; - -public class ContainerGoldChest extends ContainerIronChestBase -{ - - private static final int NUM_ROWS = 9; - private static final int ROW_LENGTH = 9; - - public ContainerGoldChest(IInventory playerInventory, IInventory chestInventory) { - super(playerInventory,chestInventory); - } - - @Override - protected int getRowLength() { - return ROW_LENGTH; - } - - protected void layoutContainer(IInventory playerInventory, IInventory chestInventory) { - for(int i = 0; i < NUM_ROWS; i++) - { - for(int l = 0; l < NUM_ROWS; l++) - { - addSlot(new Slot(chestInventory, l + i * ROW_LENGTH, 12 + l * 18, 8 + i * 18)); - } - - } - - for(int j = 0; j < 3; j++) - { - for(int i1 = 0; i1 < 9; i1++) - { - addSlot(new Slot(playerInventory, i1 + j * 9 + 9, 12 + i1 * 18, 174 + j * 18)); - } - - } - - for(int k = 0; k < 9; k++) - { - addSlot(new Slot(playerInventory, k, 12 + k * 18, 232)); - } - } - -} diff --git a/IronChests2/common/cpw/mods/ironchest/ContainerIronChestBase.java b/IronChests2/common/cpw/mods/ironchest/ContainerIronChestBase.java index e37ba1d..1a03421 100644 --- a/IronChests2/common/cpw/mods/ironchest/ContainerIronChestBase.java +++ b/IronChests2/common/cpw/mods/ironchest/ContainerIronChestBase.java @@ -6,18 +6,15 @@ import net.minecraft.src.IInventory; import net.minecraft.src.ItemStack; import net.minecraft.src.Slot; -public abstract class ContainerIronChestBase extends Container { - public ContainerIronChestBase(IInventory playerInventory, IInventory chestInventory) { - numRows = chestInventory.getSizeInventory() / getRowLength(); +public class ContainerIronChestBase extends Container { + private IronChestType type; + public ContainerIronChestBase(IInventory playerInventory, IInventory chestInventory, IronChestType type, int xSize, int ySize) { chest = chestInventory; + this.type=type; chestInventory.openChest(); - layoutContainer(playerInventory, chestInventory); - + layoutContainer(playerInventory, chestInventory, type, xSize, ySize); } - protected abstract void layoutContainer(IInventory playerInventory, IInventory chestInventory); - protected abstract int getRowLength(); - public boolean canInteractWith(EntityPlayer player) { return chest.isUseableByPlayer(player); @@ -31,14 +28,14 @@ public abstract class ContainerIronChestBase extends Container { { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); - if(i < numRows * getRowLength()) + if(i < type.size) { - if(!mergeItemStack(itemstack1, numRows * getRowLength(), inventorySlots.size(), true)) + if(!mergeItemStack(itemstack1, type.size, inventorySlots.size(), true)) { return null; } } else - if(!mergeItemStack(itemstack1, 0, numRows * getRowLength(), false)) + if(!mergeItemStack(itemstack1, 0, type.size, false)) { return null; } @@ -59,6 +56,31 @@ public abstract class ContainerIronChestBase extends Container { chest.closeChest(); } - private IInventory chest; - private int numRows; + protected void layoutContainer(IInventory playerInventory, IInventory chestInventory, IronChestType type, int xSize, int ySize) { + for(int chestRow = 0; chestRow < type.getRowCount(); chestRow++) + { + for(int chestCol = 0; chestCol < type.getRowLength(); chestCol++) + { + addSlot(new Slot(chestInventory, chestCol + chestRow * type.getRowLength(), 12 + chestCol * 18, 8 + chestRow * 18)); + } + + } + + int leftCol=(xSize-162)/2 + 1; + for(int playerInvRow = 0; playerInvRow < 3; playerInvRow++) + { + for(int playerInvCol = 0; playerInvCol < 9; playerInvCol++) + { + addSlot(new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4-playerInvRow) * 18 - 10)); + } + + } + + for(int hotbarSlot = 0; hotbarSlot < 9; hotbarSlot++) + { + addSlot(new Slot(playerInventory, hotbarSlot, leftCol + hotbarSlot * 18, ySize-24)); + } + } + + private IInventory chest; } diff --git a/IronChests2/common/cpw/mods/ironchest/IronChestType.java b/IronChests2/common/cpw/mods/ironchest/IronChestType.java index b13da64..7bbeedd 100644 --- a/IronChests2/common/cpw/mods/ironchest/IronChestType.java +++ b/IronChests2/common/cpw/mods/ironchest/IronChestType.java @@ -6,15 +6,18 @@ import net.minecraft.src.ItemStack; import net.minecraft.src.ModLoader; import net.minecraft.src.TileEntity; import net.minecraft.src.TileEntitySpecialRenderer; -import net.minecraft.src.mod_IronChest; import net.minecraft.src.forge.Configuration; public enum IronChestType { - IRON(54, "Iron Chest", null, "ironchest.png", 0, Item.ingotIron, TileEntityIronChest.class, "mmmmPmmmm"), - GOLD(81, "Gold Chest", "guiGoldChest", "goldchest.png", 1, Item.ingotGold, TileEntityGoldChest.class, "mmmmPmmmm"), - DIAMOND(108,"Diamond Chest","guiDiamondChest", "diamondchest.png", 2, Item.diamond, TileEntityDiamondChest.class, "mmmmPmmmm"); + IRON(54, 9, true, "Iron Chest", null, "ironchest.png", 0, Item.ingotIron, TileEntityIronChest.class, "mmmmPmmmm","mGmG3GmGm"), + GOLD(81, 9, true, "Gold Chest", "guiGoldChest", "goldchest.png", 1, Item.ingotGold, TileEntityGoldChest.class, "mmmmPmmmm","mGmG4GmGm"), + DIAMOND(108, 12, true, "Diamond Chest", "guiDiamondChest", "diamondchest.png", 2, Item.diamond, TileEntityDiamondChest.class, "GGGmPmGGG", "GGGG4Gmmm"), + COPPER(45, 9, false, "Copper Chest", "guiCopperChest", "copperchest.png", 3, null, TileEntityCopperChest.class, "mmmmCmmmm"), + SILVER(72, 9, false, "Silver Chest", "guiSilverChest", "silverchest.png", 4, null, TileEntitySilverChest.class, "mmmm0mmmm", "mmmm3mmmm"); int size; + private int rowLength; String friendlyName; + private boolean tieredChest; private String modelTexture; private String guiName; private int textureRow; @@ -23,15 +26,18 @@ public enum IronChestType { private String[] recipes; private int guiId; - IronChestType(int size, String friendlyName, String guiName, String modelTexture, int textureRow, Item mat, Class clazz, String... recipes) { + IronChestType(int size, int rowLength, boolean tieredChest, String friendlyName, String guiName, String modelTexture, int textureRow, Item mat, + Class clazz, String... recipes) { this.size = size; + this.rowLength = rowLength; + this.tieredChest = tieredChest; this.friendlyName = friendlyName; - this.guiName=guiName; - this.modelTexture = "/ic2/sprites/"+modelTexture; + this.guiName = guiName; + this.modelTexture = "/cpw/mods/ironchest/sprites/" + modelTexture; this.textureRow = textureRow; this.clazz = clazz; this.mat = mat; - this.recipes=recipes; + this.recipes = recipes; } public String getModelTexture() { @@ -43,19 +49,10 @@ public enum IronChestType { } public static TileEntity makeEntity(int metadata) { - //Compatibility - int chesttype=metadata; - int facing=0; - - if (metadata>2) { - chesttype=metadata<<2; - facing=metadata&3; - } + // Compatibility + int chesttype = metadata; try { - TileEntityIronChest te=values()[chesttype].clazz.newInstance(); - if (mod_IronChest.compatibilityMode) { - te.setFacing((byte)facing); - } + TileEntityIronChest te = values()[chesttype].clazz.newInstance(); return te; } catch (InstantiationException e) { // unpossible @@ -70,8 +67,8 @@ public enum IronChestType { public static void registerTileEntities(Class renderer) { for (IronChestType typ : values()) { try { - if (renderer!=null) { - ModLoader.RegisterTileEntity(typ.clazz, typ.name(),renderer.newInstance()); + if (renderer != null) { + ModLoader.RegisterTileEntity(typ.clazz, typ.name(), renderer.newInstance()); } else { ModLoader.RegisterTileEntity(typ.clazz, typ.name()); } @@ -87,19 +84,29 @@ public enum IronChestType { public static void registerTranslations() { for (IronChestType typ : values()) { - ModLoader.AddLocalization(typ.name()+".name", typ.friendlyName); + ModLoader.AddLocalization(typ.name() + ".name", typ.friendlyName); } } - public static void registerRecipes(BlockIronChest blockResult) { - ItemStack previous=new ItemStack(Block.chest); + + public static void generateTieredRecipies(BlockIronChest blockResult) { + ItemStack previous = new ItemStack(Block.chest); for (IronChestType typ : values()) { - for (String recipe : typ.recipes) { - String[] recipeSplit=new String[] { recipe.substring(0,3),recipe.substring(3,6), recipe.substring(6,9) }; - addRecipe(new ItemStack(blockResult, 1, typ.ordinal()), recipeSplit, 'm', typ.mat, 'P', previous, 'G', Block.glass, 'C', Block.chest); - } - previous=new ItemStack(blockResult,1,typ.ordinal()); + if (!typ.tieredChest) + continue; + generateRecipesForType(blockResult, previous, typ, typ.mat); + previous = new ItemStack(blockResult, 1, typ.ordinal()); } } + + public static void generateRecipesForType(BlockIronChest blockResult, Object previousTier, IronChestType type, Object mat) { + for (String recipe : type.recipes) { + String[] recipeSplit = new String[] { recipe.substring(0, 3), recipe.substring(3, 6), recipe.substring(6, 9) }; + addRecipe(new ItemStack(blockResult, 1, type.ordinal()), recipeSplit, 'm', mat, 'P', previousTier, 'G', Block.glass, 'C', Block.chest, + '0', new ItemStack(blockResult, 1, 0)/* Iron */, '1', new ItemStack(blockResult, 1, 1)/* GOLD */, '3', new ItemStack(blockResult, + 1, 3)/* Copper */, '4', new ItemStack(blockResult,1,4)); + } + } + private static void addRecipe(ItemStack is, Object... parts) { ModLoader.AddRecipe(is, parts); } @@ -107,15 +114,25 @@ public enum IronChestType { public int getGUI() { return guiId; } - + public static void initGUIs(Configuration cfg) { - int defGUI=51; + int defGUI = 51; for (IronChestType typ : values()) { - if (typ.guiName!=null) { - typ.guiId=Integer.parseInt(cfg.getOrCreateIntProperty(typ.guiName, Configuration.GENERAL_PROPERTY, defGUI++).value); + if (typ.guiName != null) { + typ.guiId = Integer.parseInt(cfg.getOrCreateIntProperty(typ.guiName, Configuration.GENERAL_PROPERTY, defGUI++).value); } else { - typ.guiId=-1; + typ.guiId = -1; } } } + + public int getRowCount() { + return size / rowLength; + } + + public int getRowLength() { + // TODO Auto-generated method stub + return rowLength; + } + } \ No newline at end of file diff --git a/IronChests2/common/cpw/mods/ironchest/TileEntityCopperChest.java b/IronChests2/common/cpw/mods/ironchest/TileEntityCopperChest.java new file mode 100644 index 0000000..4d04ed9 --- /dev/null +++ b/IronChests2/common/cpw/mods/ironchest/TileEntityCopperChest.java @@ -0,0 +1,8 @@ +package cpw.mods.ironchest; + +public class TileEntityCopperChest extends TileEntityIronChest { + public TileEntityCopperChest() { + super(IronChestType.COPPER); + } + +} diff --git a/IronChests2/common/cpw/mods/ironchest/TileEntitySilverChest.java b/IronChests2/common/cpw/mods/ironchest/TileEntitySilverChest.java new file mode 100644 index 0000000..48f72d2 --- /dev/null +++ b/IronChests2/common/cpw/mods/ironchest/TileEntitySilverChest.java @@ -0,0 +1,7 @@ +package cpw.mods.ironchest; + +public class TileEntitySilverChest extends TileEntityIronChest { + public TileEntitySilverChest() { + super(IronChestType.SILVER); + } +} diff --git a/IronChests2/resources/cpw/mods/ironchest/sprites/coppercontainer.png b/IronChests2/resources/cpw/mods/ironchest/sprites/coppercontainer.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdb824efcb80fa10626b46874f548ffd7e92fcf GIT binary patch literal 3677 zcmc(hXHe8lw#NS>X~-D_93%-ilB48dh8!hHmdt>NM2UifWZ@-91_wcfAxn^fAt*_r zWQju%h9DsDN)VK^xV!h=y1Vzo{cx*pcXjotQ`P4@&#$YiI{uD(QaaU)9J)<7tSynwbQGs6La(y#1SPWp%R&mgs7fT zOp~o}zeM7jiM@rbJBl_?CI)W zS`mRoQ1E#Jbl^H?Zoe~L5O5r>sCbK~jqE)D3L2*b18w?wZDQAAFK9R6IW{0v6sXNV z^|me;#RR}YlHkPvOap{MXY-o?1;l{;fRiHuxFZbM3p`mH2Td_mqH+KxjXiV4@3*Sx)}fcAa%vTEd~)g$)?i^DGIMhgPQf8<)>}+64p$ss z>)25Wq$tnxS2uQu-R@BqJUU8nt)+$40|gti=KJ2i*{Bz$;AUo4S5~HVy5QCh{pMlk z$PT+U^Rov(!xc}D4!^u#=8KT9jnE`M{?hU3K(FZ9@N@Dg$GNp+&C>?Ti&MxrPnWhM z&H~CrFkr^Y8@+Fz&A0|o%Kf(U4}D#tkp9G_Y6CV^RVqK~=TwTKxK__+Gwn2dOIQ>C@U zjh~rvnQ1}xlzgwq#oA~zr7H9S5>HQKS~SJeBWjJ5K2y~ra3!+rQ5vr(N1Xk|bCX#L z@Tlk9pRCeqyruemKmp5`=A!&5<3-pyWpw}PlS z{?KW-CXkpRLcNV#hBy$;<-n<`Wua$bFs)U>b&XGoewJL8oG8kuLx3l(ME4zk6aCMw ztBw-lu@+iFyps&cjG}a*afmKiK8ARNga9t(igwK#(=moIjj@NuycQX0LON z=SvDr>7|pc;FX0~fb~^pTTL6HDW$C zu%Y=i>nqVgAQg2Cb7W5(Qjjh0D%n*eTj15V*?Prn;|Xj%red<`7^MTSlWe+CCs)U>p$xNM<}(rn*sz%;q^o=I4hhMA-Zp_Ke{X1Q4z`p%XKhY7M& zp(M5pS>k1?@+RE!ES}V|Q?Jty@y4j2#*Wa^%|+?NRu?41?Ll20^C&{Pi@#=Y=5YYD zIr|LKoS;-zS}2E*)R8o=Gu}^kRUso}`y9XUHy~dZ#ANM z`*=2z-m)Egf zf`7Xsv*W%KJNNRF)XSUsmXdxWoxO-JMysPLlrJ;HJQgd$4H1SB$oh3&Q76$<^UA5} zhN8f-BZpm9i-;$@7tR+U7oz|MbpwPX zijPo@u)cC~9P*g^Lz0R--sMN_%(iM`0Zx@!HTh}f)7AD$ZnxfVDV5wu>)Au8L+&)u zcf!9;j*vO5IV5z3Qwc=JMw`c|BzebKu#bvoNe7P3A^aBAeyL@uE#x7^4dvbn>qtYD z%S7%g&dN4PHK}xqxLSUius~aAKhV7@s?pk`T(8E!u1A9b7on zaS)ARDHUN5lFx+c#TndA|5KF?TEdceV~;WLMiNDE2c!eZBRVQG8aIuwfpQw`X+iZv zo_|Yikq+kjC|M-5ii;8`O=;1i)|=0h&u7UE;PRAEl5Z7{e4d)(125y&Ps1WNk!!92 z0~IdOwdWrnCNzk0W{~xH)TLCASPD~M;l*D~tpul_WVJ{abJq`p@%?g{<@vV;w?EbO z<5Of`?7qC%X6Rs8dX6oM(KQ!_Sgf^H+?T6W^a;jO5SU4B#oQ&WP;7jLg?dgHmT#M9 zRfV_mhv<7m+-vWD+FlRx*rGI}Sd9+bnw#3THM9`5T&#Ea6@%tbW{!VW#e`?gVtz6$ zI2W|a5$o0eA!jcAU1@n2&Ux5%%ynaJK{(%czY7whw=(<3+Ou z1@X<1SOo6%2gSw~7fj#Kpn{6&8`A^RU#2oUWApV6Q^yZScQ`^@en@?rz+1N*ohkRd z$D4u7^e0>=Tu!u4>W);Z;>$LUGfzBiD-Aq-wtI-ih|b7(X|Pkc&l8X_B~#<%$y-~R zG(FefpQCpJg{ftz&Hi}Nz0B*a7QC`?M80^$Ni9DckQiFAL^ggs0D^>w-iPPzb#1GMYD<=f0J<^W5~`R6I``H|%MC(VSa_ zv+=;~gtXR&x*lzCO8emXxae%NZHw(KzPqEF z^L<~Cr1-sqyC>W2fpdY7-Pen>hAWS`o(NvJ{j51O8Nr;Sv8AP55EEtZpE^kj<1c@h zq>j3pYQV+sSu;1B0)O;tdUdzAWGI& zQ#B2m-JTnD-`8P^9?eN9`zG@_PBpBNuABxZwCWBf2L<~&zZtDKd_1EvEqlF|)4*Uc zlXyKPjQG*@&$UA5=W=})pXCzT5|mHB`^oGphQ6u{x^hg9THoI=DRe(NQ7TFwBYgjp z@6QfKlu9@q00U4DA5Wh4G~k6#X=yrBirs6S))y6~wkGU$I6;DTu&&!l?z#L50q3m* z+l-gMrSK~N7~uN1;IAB{q=`(73c=nZewsX6(X3|@i$nU@dr zv(has|AGFRlmJ@*{g3s)|LWo2c6oSkyBfk8@lC3Mz%ycC2&_`Zd4KOV@b6LQ+Wq~p zCkB2y`R~DBIr%RC0{bxp*IXH;e#kk3_98$Vs4yz>^aAZ&v;?_b*T0^t}dt z3J)&3T?%OgzZ++S{k+0s(^A7Y??d0K@E@)JDdxX)p=cVx&KMj7Yx0O5Y;~#TpBPU| zH*XY_w*@3s*99DB g)R%AT|6)`eU(w)BON6+#p8hVUt!|)J1-F0tH=0mC;s5{u literal 0 HcmV?d00001 diff --git a/IronChests2/resources/cpw/mods/ironchest/sprites/silvercontainer.png b/IronChests2/resources/cpw/mods/ironchest/sprites/silvercontainer.png new file mode 100644 index 0000000000000000000000000000000000000000..65179f2a98efe9dd2ec5767084150ef3f11fc6a5 GIT binary patch literal 3818 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 literal 0 HcmV?d00001