diff --git a/build.gradle b/build.gradle index 539131a..bbc6963 100755 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ repositories { } dependencies { - deobfCompile "mezz.jei:jei_1.11.2:4.2.7.241" + deobfCompile "mezz.jei:jei_1.11.2:4.3.5.277" } // This is our group. I'm cpw.mods @@ -43,8 +43,8 @@ archivesBaseName = "ironchest" // Setup the forge minecraft plugin data. Specify the preferred forge/minecraft version here minecraft { - version = "1.11.2-13.20.0.2252" - mappings = "snapshot_20161118" + version = "1.11.2-13.20.0.2299" + mappings = "snapshot_20170519" runDir = "run" } diff --git a/src/main/java/cpw/mods/ironchest/IronChest.java b/src/main/java/cpw/mods/ironchest/IronChest.java index cffcb29..52155bd 100755 --- a/src/main/java/cpw/mods/ironchest/IronChest.java +++ b/src/main/java/cpw/mods/ironchest/IronChest.java @@ -12,22 +12,23 @@ package cpw.mods.ironchest; import java.util.Properties; -import javax.annotation.Nonnull; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.util.ResourceLocation; +import cpw.mods.ironchest.common.CommonProxy; +import cpw.mods.ironchest.common.ICContent; +import cpw.mods.ironchest.common.network.MessageCrystalChestSync; +import cpw.mods.ironchest.common.network.MessageCrystalShulkerSync; +import cpw.mods.ironchest.common.util.MissingMappingsHandler; +import cpw.mods.ironchest.common.util.OcelotsSitOnChestsHandler; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent; -import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent.MissingMapping; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import net.minecraftforge.fml.relauncher.Side; @Mod(modid = IronChest.MOD_ID, name = "Iron Chests", dependencies = "required-after:forge@[13.19.0.2142,)", acceptedMinecraftVersions = "[1.11, 1.12)") public class IronChest @@ -37,12 +38,10 @@ public class IronChest @Instance(IronChest.MOD_ID) public static IronChest instance; - @SidedProxy(clientSide = "cpw.mods.ironchest.client.ClientProxy", serverSide = "cpw.mods.ironchest.CommonProxy") + @SidedProxy(clientSide = "cpw.mods.ironchest.client.ClientProxy", serverSide = "cpw.mods.ironchest.common.CommonProxy") public static CommonProxy proxy; - public static BlockIronChest ironChestBlock; - - public static ItemIronChest ironChestItemBlock; + public static final SimpleNetworkWrapper packetHandler = NetworkRegistry.INSTANCE.newSimpleChannel(MOD_ID); @EventHandler public void preInit(FMLPreInitializationEvent event) @@ -55,122 +54,28 @@ public class IronChest String minor = properties.getProperty("IronChest.build.minor.number"); String rev = properties.getProperty("IronChest.build.revision.number"); String build = properties.getProperty("IronChest.build.number"); + event.getModMetadata().version = String.format("%s.%s.%s build %s", major, minor, rev, build); } - ChestChangerType.buildItems(); - ironChestBlock = GameRegistry.register(new BlockIronChest()); - ironChestItemBlock = GameRegistry.register(new ItemIronChest(ironChestBlock)); + ICContent.preInit(); - for (IronChestType typ : IronChestType.VALUES) - { - if (typ.clazz != null) - { - GameRegistry.registerTileEntity(typ.clazz, "IronChest." + typ.name()); - } - } - - IronChestType.registerBlocksAndRecipes(ironChestBlock); - ChestChangerType.generateRecipes(); NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy); proxy.registerRenderInformation(); MinecraftForge.EVENT_BUS.register(new OcelotsSitOnChestsHandler()); } + @EventHandler + public void init(FMLInitializationEvent event) + { + int messageId = 0; + packetHandler.registerMessage(MessageCrystalChestSync.Handler.class, MessageCrystalChestSync.class, messageId++, Side.CLIENT); + packetHandler.registerMessage(MessageCrystalShulkerSync.Handler.class, MessageCrystalShulkerSync.class, messageId++, Side.CLIENT); + } + @EventHandler public void onMissingMappings(FMLMissingMappingsEvent event) { - for (MissingMapping mapping : event.get()) - { - if (mapping.resourceLocation.getResourceDomain().equals(IronChest.MOD_ID)) - { - @Nonnull - String path = mapping.resourceLocation.getResourcePath(); - - if (path.endsWith("blockironchest")) - { - path = path.replace("blockironchest", "iron_chest"); - ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path); - Block block = ForgeRegistries.BLOCKS.getValue(newRes); - - if (block != null) - { - if (mapping.type == GameRegistry.Type.BLOCK) - { - mapping.remap(block); - } - else - { - mapping.remap(Item.getItemFromBlock(block)); - } - } - } - - if (path.endsWith("irongoldupgrade")) - { - path = path.replace("irongoldupgrade", "iron_gold_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("golddiamondupgrade")) - { - path = path.replace("golddiamondupgrade", "gold_diamond_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("coppersilverupgrade")) - { - path = path.replace("coppersilverupgrade", "copper_silver_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("silvergoldupgrade")) - { - path = path.replace("silvergoldupgrade", "silver_gold_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("copperironupgrade")) - { - path = path.replace("copperironupgrade", "copper_iron_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("diamondcrystalupgrade")) - { - path = path.replace("diamondcrystalupgrade", "diamond_crystal_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("woodironupgrade")) - { - path = path.replace("woodironupgrade", "wood_iron_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("woodcopperupgrade")) - { - path = path.replace("woodcopperupgrade", "wood_copper_upgrade"); - replaceUpgradeItem(path, mapping); - } - - if (path.endsWith("diamondobsidianupgrade")) - { - path = path.replace("diamondobsidianupgrade", "diamond_obsidian_upgrade"); - replaceUpgradeItem(path, mapping); - } - } - } - } - - private static void replaceUpgradeItem(String path, MissingMapping mapping) - { - ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path); - Item item = ForgeRegistries.ITEMS.getValue(newRes); - - if (item != null) - { - mapping.remap(item); - } + MissingMappingsHandler.onMissingMappings(event); } } diff --git a/src/main/java/cpw/mods/ironchest/ValidatingSlot.java b/src/main/java/cpw/mods/ironchest/ValidatingSlot.java deleted file mode 100755 index 5391f7f..0000000 --- a/src/main/java/cpw/mods/ironchest/ValidatingSlot.java +++ /dev/null @@ -1,22 +0,0 @@ -package cpw.mods.ironchest; - -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ValidatingSlot extends Slot -{ - private IronChestType type; - - public ValidatingSlot(IInventory inventoryIn, int slotIndex, int xPosition, int yPosition, IronChestType type) - { - super(inventoryIn, slotIndex, xPosition, yPosition); - this.type = type; - } - - @Override - public boolean isItemValid(ItemStack stack) - { - return this.type.acceptsStack(stack); - } -} diff --git a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java index 8856a44..9fbc019 100755 --- a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java +++ b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java @@ -10,11 +10,21 @@ ******************************************************************************/ package cpw.mods.ironchest.client; -import cpw.mods.ironchest.ChestChangerType; -import cpw.mods.ironchest.CommonProxy; import cpw.mods.ironchest.IronChest; -import cpw.mods.ironchest.IronChestType; -import cpw.mods.ironchest.TileEntityIronChest; +import cpw.mods.ironchest.client.gui.chest.GUIChest; +import cpw.mods.ironchest.client.gui.shulker.GUIShulkerChest; +import cpw.mods.ironchest.client.renderer.chest.TileEntityIronChestRenderer; +import cpw.mods.ironchest.client.renderer.shulker.TileEntityIronShulkerBoxRenderer; +import cpw.mods.ironchest.common.CommonProxy; +import cpw.mods.ironchest.common.ICContent; +import cpw.mods.ironchest.common.blocks.chest.IronChestType; +import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType; +import cpw.mods.ironchest.common.items.ChestChangerType; +import cpw.mods.ironchest.common.items.ShulkerBoxChangerType; +import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest; +import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -33,7 +43,8 @@ public class ClientProxy extends CommonProxy @Override public void registerRenderInformation() { - Item chestItem = Item.getItemFromBlock(IronChest.ironChestBlock); + // Chests Start + Item chestItem = Item.getItemFromBlock(ICContent.ironChestBlock); for (IronChestType type : IronChestType.values()) { @@ -53,19 +64,60 @@ public class ClientProxy extends CommonProxy ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "iron_chest_upgrades"), "variant=" + type.itemName.toLowerCase())); //@formatter:on } + // Chests End + + // Shulkers Start + for (Block shulker : ICContent.SHULKER_BLOCKS) + { + Item shulkerBoxItem = Item.getItemFromBlock(shulker); + + for (IronShulkerBoxType type : IronShulkerBoxType.values()) + { + if (type != IronShulkerBoxType.VANILLA) + { + //@formatter:off + ModelLoader.setCustomModelResourceLocation(shulkerBoxItem, type.ordinal(), new ModelResourceLocation(shulkerBoxItem.getRegistryName(), "variant=" + type.getName())); + //@formatter:on + } + } + } + + for (IronShulkerBoxType type : IronShulkerBoxType.values()) + { + ClientRegistry.bindTileEntitySpecialRenderer(type.clazz, new TileEntityIronShulkerBoxRenderer()); + } + + for (ShulkerBoxChangerType type : ShulkerBoxChangerType.VALUES) + { + //@formatter:off + ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "iron_shulker_box_upgrades"), "variant=" + type.itemName.toLowerCase())); + //@formatter:on + } + // Shulker End } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); + if (te != null && te instanceof TileEntityIronChest) { return GUIChest.GUI.buildGUI(IronChestType.values()[ID], player.inventory, (TileEntityIronChest) te); } + else if (te != null && te instanceof TileEntityIronShulkerBox) + { + return GUIShulkerChest.GUI.buildGUI(IronShulkerBoxType.values()[ID], player.inventory, (TileEntityIronShulkerBox) te); + } else { return null; } } + + @Override + public World getClientWorld() + { + return Minecraft.getMinecraft().world; + } } diff --git a/src/main/java/cpw/mods/ironchest/client/GUIChest.java b/src/main/java/cpw/mods/ironchest/client/gui/chest/GUIChest.java old mode 100755 new mode 100644 similarity index 93% rename from src/main/java/cpw/mods/ironchest/client/GUIChest.java rename to src/main/java/cpw/mods/ironchest/client/gui/chest/GUIChest.java index 2de0f54..dc5ddec --- a/src/main/java/cpw/mods/ironchest/client/GUIChest.java +++ b/src/main/java/cpw/mods/ironchest/client/gui/chest/GUIChest.java @@ -8,11 +8,11 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest.client; +package cpw.mods.ironchest.client.gui.chest; -import cpw.mods.ironchest.ContainerIronChest; -import cpw.mods.ironchest.IronChestType; -import cpw.mods.ironchest.TileEntityIronChest; +import cpw.mods.ironchest.common.blocks.chest.IronChestType; +import cpw.mods.ironchest.common.gui.chest.ContainerIronChest; +import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.inventory.Container; @@ -91,10 +91,12 @@ public class GUIChest extends GuiContainer protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - // new "bind tex" + this.mc.getTextureManager().bindTexture(this.type.guiResourceList.location); + int x = (this.width - this.xSize) / 2; int y = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize); } } diff --git a/src/main/java/cpw/mods/ironchest/client/gui/shulker/GUIShulkerChest.java b/src/main/java/cpw/mods/ironchest/client/gui/shulker/GUIShulkerChest.java new file mode 100644 index 0000000..0ad516a --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/client/gui/shulker/GUIShulkerChest.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright (c) 2012 cpw. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.client.gui.shulker;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import cpw.mods.ironchest.common.gui.shulker.ContainerIronShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.util.ResourceLocation;
+
+public class GUIShulkerChest extends GuiContainer
+{
+ public enum ResourceList
+ {
+ //@formatter:off
+ IRON(new ResourceLocation("ironchest", "textures/gui/iron_container.png")),
+ COPPER(new ResourceLocation("ironchest", "textures/gui/copper_container.png")),
+ SILVER(new ResourceLocation("ironchest", "textures/gui/silver_container.png")),
+ GOLD(new ResourceLocation("ironchest", "textures/gui/gold_container.png")),
+ DIAMOND(new ResourceLocation("ironchest", "textures/gui/diamond_container.png"));
+ //@formatter:on
+
+ public final ResourceLocation location;
+
+ ResourceList(ResourceLocation loc)
+ {
+ this.location = loc;
+ }
+ }
+
+ public enum GUI
+ {
+ //@formatter:off
+ IRON(184, 202, ResourceList.IRON, IronShulkerBoxType.IRON),
+ GOLD(184, 256, ResourceList.GOLD, IronShulkerBoxType.GOLD),
+ DIAMOND(238, 256, ResourceList.DIAMOND, IronShulkerBoxType.DIAMOND),
+ COPPER(184, 184, ResourceList.COPPER, IronShulkerBoxType.COPPER),
+ SILVER(184, 238, ResourceList.SILVER, IronShulkerBoxType.SILVER),
+ CRYSTAL(238, 256, ResourceList.DIAMOND, IronShulkerBoxType.CRYSTAL),
+ OBSIDIAN(238, 256, ResourceList.DIAMOND,IronShulkerBoxType.OBSIDIAN);
+ //@formatter:on
+
+ private int xSize;
+ private int ySize;
+ private ResourceList guiResourceList;
+ private IronShulkerBoxType mainType;
+
+ GUI(int xSize, int ySize, ResourceList guiResourceList, IronShulkerBoxType mainType)
+ {
+ this.xSize = xSize;
+ this.ySize = ySize;
+ this.guiResourceList = guiResourceList;
+ this.mainType = mainType;
+ }
+
+ protected Container makeContainer(IInventory player, IInventory shulker)
+ {
+ return new ContainerIronShulkerBox(player, shulker, this.mainType, this.xSize, this.ySize);
+ }
+
+ public static GUIShulkerChest buildGUI(IronShulkerBoxType type, IInventory playerInventory, TileEntityIronShulkerBox shulkerInventory)
+ {
+ return new GUIShulkerChest(values()[shulkerInventory.getType().ordinal()], playerInventory, shulkerInventory);
+ }
+ }
+
+ private GUI type;
+
+ private GUIShulkerChest(GUI type, IInventory player, IInventory shulker)
+ {
+ super(type.makeContainer(player, shulker));
+
+ this.type = type;
+ this.xSize = type.xSize;
+ this.ySize = type.ySize;
+ this.allowUserInput = false;
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
+ {
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+
+ this.mc.getTextureManager().bindTexture(this.type.guiResourceList.location);
+
+ int x = (this.width - this.xSize) / 2;
+ int y = (this.height - this.ySize) / 2;
+
+ this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java b/src/main/java/cpw/mods/ironchest/client/renderer/chest/TileEntityIronChestRenderer.java
old mode 100755
new mode 100644
similarity index 93%
rename from src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java
rename to src/main/java/cpw/mods/ironchest/client/renderer/chest/TileEntityIronChestRenderer.java
index 067a83f..45c5ab4
--- a/src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java
+++ b/src/main/java/cpw/mods/ironchest/client/renderer/chest/TileEntityIronChestRenderer.java
@@ -8,16 +8,16 @@
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
-package cpw.mods.ironchest.client;
+package cpw.mods.ironchest.client.renderer.chest;
import java.util.Random;
import com.google.common.primitives.SignedBytes;
-import cpw.mods.ironchest.BlockIronChest;
-import cpw.mods.ironchest.IronChest;
-import cpw.mods.ironchest.IronChestType;
-import cpw.mods.ironchest.TileEntityIronChest;
+import cpw.mods.ironchest.common.ICContent;
+import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
+import cpw.mods.ironchest.common.blocks.chest.IronChestType;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelChest;
@@ -36,8 +36,9 @@ public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common;
+
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
+import cpw.mods.ironchest.common.blocks.chest.IronChestType;
+import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import cpw.mods.ironchest.common.crafting.IronShulkerBoxColoring;
+import cpw.mods.ironchest.common.items.ChestChangerType;
+import cpw.mods.ironchest.common.items.ShulkerBoxChangerType;
+import cpw.mods.ironchest.common.items.chest.ItemIronChest;
+import cpw.mods.ironchest.common.items.shulker.ItemIronShulkerBox;
+import cpw.mods.ironchest.common.util.BehaviorDispenseIronShulkerBox;
+import cpw.mods.ironchest.common.util.CreativeTab;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockDispenser;
+import net.minecraft.block.BlockShulkerBox;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fml.common.registry.GameRegistry;
+import net.minecraftforge.oredict.RecipeSorter;
+import net.minecraftforge.oredict.RecipeSorter.Category;
+
+public class ICContent
+{
+ public static CreativeTab tabGeneral = new CreativeTab("IronChest", new ItemStack(Item.getItemFromBlock(Blocks.SLIME_BLOCK)));
+
+ public static BlockIronChest ironChestBlock;
+ public static ItemIronChest ironChestItemBlock;
+
+ public static BlockIronShulkerBox ironShulkerBoxWhiteBlock;
+ public static BlockIronShulkerBox ironShulkerBoxOrangeBlock;
+ public static BlockIronShulkerBox ironShulkerBoxMagentaBlock;
+ public static BlockIronShulkerBox ironShulkerBoxLightBlueBlock;
+ public static BlockIronShulkerBox ironShulkerBoxYellowBlock;
+ public static BlockIronShulkerBox ironShulkerBoxLimeBlock;
+ public static BlockIronShulkerBox ironShulkerBoxPinkBlock;
+ public static BlockIronShulkerBox ironShulkerBoxGrayBlock;
+ public static BlockIronShulkerBox ironShulkerBoxSilverBlock;
+ public static BlockIronShulkerBox ironShulkerBoxCyanBlock;
+ public static BlockIronShulkerBox ironShulkerBoxPurpleBlock;
+ public static BlockIronShulkerBox ironShulkerBoxBlueBlock;
+ public static BlockIronShulkerBox ironShulkerBoxBrownBlock;
+ public static BlockIronShulkerBox ironShulkerBoxGreenBlock;
+ public static BlockIronShulkerBox ironShulkerBoxRedBlock;
+ public static BlockIronShulkerBox ironShulkerBoxBlackBlock;
+
+ public static ItemIronShulkerBox ironShulkerBoxWhiteItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxOrangeItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxMagentaItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxLightBlueItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxYellowItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxLimeItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxPinkItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxGrayItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxSilverItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxCyanItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxPurpleItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxBlueItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxBrownItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxGreenItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxRedItemBlock;
+ public static ItemIronShulkerBox ironShulkerBoxBlackItemBlock;
+
+ public static final List
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.ai;
+import cpw.mods.ironchest.common.ICContent;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.ai.EntityAIOcelotSit;
@@ -30,7 +42,7 @@ public class IronChestAIOcelotSit extends EntityAIOcelotSit
IBlockState iblockstate = worldIn.getBlockState(pos);
Block block = iblockstate.getBlock();
- if (block == IronChest.ironChestBlock)
+ if (block == ICContent.ironChestBlock)
{
TileEntity tileentity = worldIn.getTileEntity(pos);
diff --git a/src/main/java/cpw/mods/ironchest/BlockIronChest.java b/src/main/java/cpw/mods/ironchest/common/blocks/chest/BlockIronChest.java
old mode 100755
new mode 100644
similarity index 91%
rename from src/main/java/cpw/mods/ironchest/BlockIronChest.java
rename to src/main/java/cpw/mods/ironchest/common/blocks/chest/BlockIronChest.java
index 5bd0b33..7dafdba
--- a/src/main/java/cpw/mods/ironchest/BlockIronChest.java
+++ b/src/main/java/cpw/mods/ironchest/common/blocks/chest/BlockIronChest.java
@@ -8,8 +8,13 @@
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
-package cpw.mods.ironchest;
+package cpw.mods.ironchest.common.blocks.chest;
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.ICContent;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
@@ -20,7 +25,6 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
-import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -34,6 +38,7 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.ILockableContainer;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -47,13 +52,12 @@ public class BlockIronChest extends Block
public BlockIronChest()
{
super(Material.IRON);
+
this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest"));
-
this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronChestType.IRON));
-
this.setHardness(3.0F);
this.setUnlocalizedName("IronChest");
- this.setCreativeTab(CreativeTabs.DECORATIONS);
+ this.setCreativeTab(ICContent.tabGeneral);
}
@Override
@@ -80,6 +84,18 @@ public class BlockIronChest extends Block
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}
+ @Nullable
+ public ILockableContainer getLockableContainer(World worldIn, BlockPos pos)
+ {
+ return this.getContainer(worldIn, pos, false);
+ }
+
+ @Nullable
+ public ILockableContainer getContainer(World worldIn, BlockPos pos, boolean allowBlocking)
+ {
+ return null;
+ }
+
@Override
//@formatter:off
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY)
@@ -103,6 +119,7 @@ public class BlockIronChest extends Block
}
playerIn.openGui(IronChest.instance, ((TileEntityIronChest) te).getType().ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ());
+
return true;
}
@@ -160,11 +177,14 @@ public class BlockIronChest extends Block
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
TileEntity te = worldIn.getTileEntity(pos);
+
if (te != null && te instanceof TileEntityIronChest)
{
TileEntityIronChest teic = (TileEntityIronChest) te;
+
teic.wasPlaced(placer, stack);
teic.setFacing(placer.getHorizontalFacing().getOpposite());
+
worldIn.notifyBlockUpdate(pos, state, state, 3);
}
}
@@ -186,6 +206,7 @@ public class BlockIronChest extends Block
InventoryHelper.dropInventoryItems(worldIn, pos, tileentity);
}
+
super.breakBlock(worldIn, pos, state);
}
@@ -193,14 +214,17 @@ public class BlockIronChest extends Block
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion)
{
TileEntity te = world.getTileEntity(pos);
+
if (te instanceof TileEntityIronChest)
{
TileEntityIronChest teic = (TileEntityIronChest) te;
+
if (teic.getType().isExplosionResistant())
{
return 10000F;
}
}
+
return super.getExplosionResistance(world, pos, exploder, explosion);
}
@@ -211,14 +235,9 @@ public class BlockIronChest extends Block
}
@Override
- public int getComparatorInputOverride(IBlockState blockState, World world, BlockPos pos)
+ public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos)
{
- TileEntity te = world.getTileEntity(pos);
- if (te instanceof IInventory)
- {
- return Container.calcRedstoneFromInventory((IInventory) te);
- }
- return 0;
+ return Container.calcRedstone(worldIn.getTileEntity(pos));
}
private static final EnumFacing[] validRotationAxes = new EnumFacing[] { EnumFacing.UP, EnumFacing.DOWN };
@@ -236,14 +255,18 @@ public class BlockIronChest extends Block
{
return false;
}
+
if (axis == EnumFacing.UP || axis == EnumFacing.DOWN)
{
TileEntity tileEntity = worldObj.getTileEntity(pos);
+
if (tileEntity instanceof TileEntityIronChest)
{
TileEntityIronChest icte = (TileEntityIronChest) tileEntity;
+
icte.rotateAround();
}
+
return true;
}
return false;
@@ -254,7 +277,9 @@ public class BlockIronChest extends Block
public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param)
{
super.eventReceived(state, worldIn, pos, id, param);
+
TileEntity tileentity = worldIn.getTileEntity(pos);
+
return tileentity != null && tileentity.receiveClientEvent(id, param);
}
}
diff --git a/src/main/java/cpw/mods/ironchest/IronChestType.java b/src/main/java/cpw/mods/ironchest/common/blocks/chest/IronChestType.java
old mode 100755
new mode 100644
similarity index 87%
rename from src/main/java/cpw/mods/ironchest/IronChestType.java
rename to src/main/java/cpw/mods/ironchest/common/blocks/chest/IronChestType.java
index d81bea3..78de92b
--- a/src/main/java/cpw/mods/ironchest/IronChestType.java
+++ b/src/main/java/cpw/mods/ironchest/common/blocks/chest/IronChestType.java
@@ -8,12 +8,21 @@
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
-package cpw.mods.ironchest;
+package cpw.mods.ironchest.common.blocks.chest;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import cpw.mods.ironchest.common.gui.chest.slot.ValidatingChestSlot;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityCopperChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityCrystalChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityDiamondChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityDirtChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityGoldChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityObsidianChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntitySilverChest;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
@@ -71,7 +80,7 @@ public enum IronChestType implements IStringSerializable
this.size = size;
this.rowLength = rowLength;
this.tieredChest = tieredChest;
- this.modelTexture = new ResourceLocation("ironchest", "textures/model/" + modelTexture);
+ this.modelTexture = new ResourceLocation("ironchest", "textures/model/chest/" + modelTexture);
this.matList = Collections.unmodifiableCollection(mats);
this.clazz = clazz;
this.recipes = Collections.unmodifiableCollection(Arrays.asList(recipes));
@@ -119,11 +128,13 @@ public enum IronChestType implements IStringSerializable
public static void registerBlocksAndRecipes(BlockIronChest blockResult)
{
Object previous = "chestWood";
+
for (IronChestType typ : values())
{
generateRecipesForType(blockResult, previous, typ);
+
ItemStack chest = new ItemStack(blockResult, 1, typ.ordinal());
- // if (typ.isValidForCreativeMode()) GameRegistry.registerCustomItemStack(typ.friendlyName, chest);//TODO fix this!!
+
if (typ.tieredChest)
{
previous = chest;
@@ -137,12 +148,17 @@ public enum IronChestType implements IStringSerializable
{
String[] recipeSplit = new String[] { recipe.substring(0, 3), recipe.substring(3, 6), recipe.substring(6, 9) };
Object mainMaterial = null;
+
for (String mat : type.matList)
{
mainMaterial = translateOreName(mat);
//@formatter:off
- addRecipe(new ItemStack(blockResult, 1, type.ordinal()), recipeSplit, 'm', mainMaterial, 'P', previousTier, /* previous tier of chest */
- 'G', "blockGlass", 'C', "chestWood", '0', new ItemStack(blockResult, 1, 0), /* Iron Chest */
+ addRecipe(new ItemStack(blockResult, 1, type.ordinal()), recipeSplit,
+ 'm', mainMaterial,
+ 'P', previousTier, /* previous tier of chest */
+ 'G', "blockGlass",
+ 'C', "chestWood",
+ '0', new ItemStack(blockResult, 1, 0), /* Iron Chest */
'1', new ItemStack(blockResult, 1, 1), /* Gold Chest */
'2', new ItemStack(blockResult, 1, 2), /* Diamond Chest */
'3', new ItemStack(blockResult, 1, 3), /* Copper Chest */
@@ -162,12 +178,14 @@ public enum IronChestType implements IStringSerializable
{
return Blocks.DIRT;
}
+
return mat;
}
public static void addRecipe(ItemStack is, Object... parts)
{
ShapedOreRecipe oreRecipe = new ShapedOreRecipe(is, parts);
+
GameRegistry.addRecipe(oreRecipe);
}
@@ -193,7 +211,7 @@ public enum IronChestType implements IStringSerializable
public Slot makeSlot(IInventory chestInventory, int index, int x, int y)
{
- return new ValidatingSlot(chestInventory, index, x, y, this);
+ return new ValidatingChestSlot(chestInventory, index, x, y, this);
}
private static final Item DIRT_ITEM = Item.getItemFromBlock(Blocks.DIRT);
diff --git a/src/main/java/cpw/mods/ironchest/common/blocks/shulker/BlockIronShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/blocks/shulker/BlockIronShulkerBox.java
new file mode 100644
index 0000000..521c341
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/blocks/shulker/BlockIronShulkerBox.java
@@ -0,0 +1,493 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.blocks.shulker;
+
+import java.util.List;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.ICContent;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.EnumPushReaction;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.properties.PropertyEnum;
+import net.minecraft.block.state.BlockStateContainer;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.ItemStackHelper;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumBlockRenderType;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.EnumHand;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.math.AxisAlignedBB;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraft.util.text.translation.I18n;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SuppressWarnings("deprecation")
+public class BlockIronShulkerBox extends Block
+{
+ public static final PropertyEnum
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.blocks.shulker;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+import cpw.mods.ironchest.common.gui.shulker.slot.ValidatingShulkerBoxSlot;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityCopperShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityCrystalShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityDiamondShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityGoldShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityObsidianShulkerBox;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntitySilverShulkerBox;
+import net.minecraft.block.BlockShulkerBox;
+import net.minecraft.init.Blocks;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IStringSerializable;
+import net.minecraftforge.fml.common.registry.GameRegistry;
+import net.minecraftforge.oredict.ShapedOreRecipe;
+
+public enum IronShulkerBoxType implements IStringSerializable
+{
+ //@formatter:off
+ IRON(54, 9, true, "_iron.png", TileEntityIronShulkerBox.class, 184, 202, Arrays.asList("ingotIron", "ingotRefinedIron"), "mmmmPmmmm", "mGmG3GmGm"),
+ GOLD(81, 9, true, "_gold.png", TileEntityGoldShulkerBox.class, 184, 256, Collections.singleton("ingotGold"), "mmmmPmmmm", "mGmG4GmGm"),
+ DIAMOND(108, 12, true, "_diamond.png", TileEntityDiamondShulkerBox.class, 184, 256, Collections.singleton("gemDiamond"), "GGGmPmGGG", "GGGG4Gmmm"),
+ COPPER(45, 9, false, "_copper.png", TileEntityCopperShulkerBox.class, 184, 184, Collections.singleton("ingotCopper"), "mmmmCmmmm"),
+ SILVER(72, 9, false, "_silver.png", TileEntitySilverShulkerBox.class, 184, 238, Collections.singleton("ingotSilver"), "mmmm3mmmm", "mGmG0GmGm"),
+ CRYSTAL(108, 12, true, "_crystal.png", TileEntityCrystalShulkerBox.class, 238, 256, Collections.singleton("blockGlass"), "GGGGPGGGG"),
+ OBSIDIAN(108, 12, false, "_obsidian.png", TileEntityObsidianShulkerBox.class, 238, 256, Collections.singleton("obsidian"), "mmmm2mmmm"),
+ VANILLA(0, 0, false, "", null, 0, 0, Collections.singleton("shulkerBox"));
+ //@formatter:on
+
+ public static final IronShulkerBoxType VALUES[] = values();
+
+ public final String name;
+
+ public final int size;
+
+ public final int rowLength;
+
+ public final boolean tieredChest;
+
+ public final String modelTexture;
+
+ public final Class extends TileEntityIronShulkerBox> clazz;
+
+ public final int xSize;
+
+ public final int ySize;
+
+ public final Collection
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.crafting;
+
+import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
+import net.minecraft.block.Block;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.InventoryCrafting;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.IRecipe;
+import net.minecraft.util.NonNullList;
+import net.minecraft.world.World;
+
+public class IronShulkerBoxColoring implements IRecipe
+{
+ public IronShulkerBoxColoring()
+ {
+ }
+
+ /**
+ * Used to check if a recipe matches current crafting inventory
+ */
+ @Override
+ public boolean matches(InventoryCrafting inv, World worldIn)
+ {
+ int i = 0;
+ int j = 0;
+
+ for (int k = 0; k < inv.getSizeInventory(); ++k)
+ {
+ ItemStack itemstack = inv.getStackInSlot(k);
+
+ if (!itemstack.isEmpty())
+ {
+ if (Block.getBlockFromItem(itemstack.getItem()) instanceof BlockIronShulkerBox)
+ {
+ ++i;
+ }
+ else
+ {
+ if (itemstack.getItem() != Items.DYE)
+ {
+ return false;
+ }
+
+ ++j;
+ }
+
+ if (j > 1 || i > 1)
+ {
+ return false;
+ }
+ }
+ }
+
+ return i == 1 && j == 1;
+ }
+
+ /**
+ * Returns an Item that is the result of this recipe
+ */
+ @Override
+ public ItemStack getCraftingResult(InventoryCrafting inv)
+ {
+ ItemStack itemstack = ItemStack.EMPTY;
+ ItemStack itemstack1 = ItemStack.EMPTY;
+
+ for (int i = 0; i < inv.getSizeInventory(); ++i)
+ {
+ ItemStack itemstack2 = inv.getStackInSlot(i);
+
+ if (!itemstack2.isEmpty())
+ {
+ if (Block.getBlockFromItem(itemstack2.getItem()) instanceof BlockIronShulkerBox)
+ {
+ itemstack = itemstack2;
+ }
+ else if (itemstack2.getItem() == Items.DYE)
+ {
+ itemstack1 = itemstack2;
+ }
+ }
+ }
+
+ ItemStack itemstack3 = BlockIronShulkerBox.getColoredItemStack(EnumDyeColor.byDyeDamage(itemstack1.getMetadata()), itemstack.getMetadata());
+
+ if (itemstack.hasTagCompound())
+ {
+ itemstack3.setTagCompound(itemstack.getTagCompound().copy());
+ }
+
+ return itemstack3;
+ }
+
+ /**
+ * Returns the size of the recipe area
+ */
+ @Override
+ public int getRecipeSize()
+ {
+ return 10;
+ }
+
+ @Override
+ public ItemStack getRecipeOutput()
+ {
+ return ItemStack.EMPTY;
+ }
+
+ @Override
+ public NonNullList
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.gui.chest.slot;
+
+import cpw.mods.ironchest.common.blocks.chest.IronChestType;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class ValidatingChestSlot extends Slot
+{
+ private IronChestType type;
+
+ public ValidatingChestSlot(IInventory inventoryIn, int slotIndex, int xPosition, int yPosition, IronChestType type)
+ {
+ super(inventoryIn, slotIndex, xPosition, yPosition);
+ this.type = type;
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack stack)
+ {
+ return this.type.acceptsStack(stack);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/gui/shulker/ContainerIronShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/gui/shulker/ContainerIronShulkerBox.java
new file mode 100644
index 0000000..2d657e6
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/gui/shulker/ContainerIronShulkerBox.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.gui.shulker;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import invtweaks.api.container.ChestContainer;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+@ChestContainer(isLargeChest = true)
+public class ContainerIronShulkerBox extends Container
+{
+ private IronShulkerBoxType type;
+
+ private EntityPlayer player;
+
+ private IInventory inventory;
+
+ public ContainerIronShulkerBox(IInventory playerInventory, IInventory shulkerBoxInventory, IronShulkerBoxType type, int xSize, int ySize)
+ {
+ this.inventory = shulkerBoxInventory;
+ this.player = ((InventoryPlayer) playerInventory).player;
+ this.type = type;
+ shulkerBoxInventory.openInventory(this.player);
+ this.layoutContainer(playerInventory, shulkerBoxInventory, type, xSize, ySize);
+ }
+
+ protected void layoutContainer(IInventory playerInventory, IInventory shulkerBoxInventory, IronShulkerBoxType type, int xSize, int ySize)
+ {
+ for (int chestRow = 0; chestRow < type.getRowCount(); chestRow++)
+ {
+ for (int chestCol = 0; chestCol < type.rowLength; chestCol++)
+ {
+ this.addSlotToContainer(type.makeSlot(shulkerBoxInventory, chestCol + chestRow * type.rowLength, 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++)
+ {
+ //@formatter:off
+ this.addSlotToContainer(new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10));
+ //@formatter:on
+ }
+
+ }
+
+ for (int hotbarSlot = 0; hotbarSlot < 9; hotbarSlot++)
+ {
+ this.addSlotToContainer(new Slot(playerInventory, hotbarSlot, leftCol + hotbarSlot * 18, ySize - 24));
+ }
+ }
+
+ public EntityPlayer getPlayer()
+ {
+ return this.player;
+ }
+
+ /**
+ * Determines whether supplied player can use this container
+ */
+ @Override
+ public boolean canInteractWith(EntityPlayer playerIn)
+ {
+ return this.inventory.isUsableByPlayer(playerIn);
+ }
+
+ /**
+ * Take a stack from the specified inventory slot.
+ */
+ @Override
+ public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
+ {
+ ItemStack itemstack = ItemStack.EMPTY;
+ Slot slot = this.inventorySlots.get(index);
+
+ if (slot != null && slot.getHasStack())
+ {
+ ItemStack itemstack1 = slot.getStack();
+ itemstack = itemstack1.copy();
+
+ if (index < this.type.size)
+ {
+ if (!this.mergeItemStack(itemstack1, this.type.size, this.inventorySlots.size(), true))
+ {
+ return ItemStack.EMPTY;
+ }
+ }
+ else if (!this.mergeItemStack(itemstack1, 0, this.type.size, false))
+ {
+ return ItemStack.EMPTY;
+ }
+
+ if (itemstack1.isEmpty())
+ {
+ slot.putStack(ItemStack.EMPTY);
+ }
+ else
+ {
+ slot.onSlotChanged();
+ }
+ }
+
+ return itemstack;
+ }
+
+ /**
+ * Called when the container is closed.
+ */
+ @Override
+ public void onContainerClosed(EntityPlayer playerIn)
+ {
+ super.onContainerClosed(playerIn);
+
+ this.inventory.closeInventory(playerIn);
+ }
+
+ @ChestContainer.RowSizeCallback
+ public int getNumColumns()
+ {
+ return this.type.rowLength;
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/gui/shulker/slot/ValidatingShulkerBoxSlot.java b/src/main/java/cpw/mods/ironchest/common/gui/shulker/slot/ValidatingShulkerBoxSlot.java
new file mode 100644
index 0000000..9ce2211
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/gui/shulker/slot/ValidatingShulkerBoxSlot.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.gui.shulker.slot;
+
+import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockShulkerBox;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class ValidatingShulkerBoxSlot extends Slot
+{
+ public ValidatingShulkerBoxSlot(IInventory inventoryIn, int slotIndex, int xPosition, int yPosition)
+ {
+ super(inventoryIn, slotIndex, xPosition, yPosition);
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack stack)
+ {
+ //@formatter:off
+ return !(Block.getBlockFromItem(stack.getItem()) instanceof BlockIronShulkerBox) && !(Block.getBlockFromItem(stack.getItem()) instanceof BlockShulkerBox);
+ //@formatter:on
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/ChestChangerType.java b/src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java
old mode 100755
new mode 100644
similarity index 60%
rename from src/main/java/cpw/mods/ironchest/ChestChangerType.java
rename to src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java
index 94a671d..5efbb5c
--- a/src/main/java/cpw/mods/ironchest/ChestChangerType.java
+++ b/src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java
@@ -4,17 +4,19 @@
*
* Contributors: cpw - initial API and implementation
******************************************************************************/
-package cpw.mods.ironchest;
+package cpw.mods.ironchest.common.items;
-import static cpw.mods.ironchest.IronChestType.COPPER;
-import static cpw.mods.ironchest.IronChestType.CRYSTAL;
-import static cpw.mods.ironchest.IronChestType.DIAMOND;
-import static cpw.mods.ironchest.IronChestType.GOLD;
-import static cpw.mods.ironchest.IronChestType.IRON;
-import static cpw.mods.ironchest.IronChestType.OBSIDIAN;
-import static cpw.mods.ironchest.IronChestType.SILVER;
-import static cpw.mods.ironchest.IronChestType.WOOD;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.COPPER;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.CRYSTAL;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.DIAMOND;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.GOLD;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.IRON;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.OBSIDIAN;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.SILVER;
+import static cpw.mods.ironchest.common.blocks.chest.IronChestType.WOOD;
+import cpw.mods.ironchest.common.blocks.chest.IronChestType;
+import cpw.mods.ironchest.common.items.chest.ItemChestChanger;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
@@ -22,15 +24,15 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public enum ChestChangerType
{
//@formatter:off
- IRONGOLD(IRON, GOLD, "iron_gold_upgrade", "mmm", "msm", "mmm"),
- GOLDDIAMOND(GOLD, DIAMOND, "gold_diamond_upgrade", "GGG", "msm", "GGG"),
- COPPERSILVER(COPPER, SILVER, "copper_silver_upgrade", "mmm", "msm", "mmm"),
- SILVERGOLD(SILVER, GOLD, "silver_gold_upgrade", "mGm", "GsG", "mGm"),
- COPPERIRON(COPPER, IRON, "copper_iron_upgrade", "mGm", "GsG", "mGm"),
- DIAMONDCRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_upgrade", "GGG", "GOG", "GGG"),
- WOODIRON(WOOD, IRON, "wood_iron_upgrade", "mmm", "msm", "mmm"),
- WOODCOPPER(WOOD, COPPER, "wood_copper_upgrade", "mmm", "msm", "mmm"),
- DIAMONDOBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_upgrade", "mmm", "mGm", "mmm");
+ IRON_GOLD(IRON, GOLD, "iron_gold_chest_upgrade", "mmm", "msm", "mmm"),
+ GOLD_DIAMOND(GOLD, DIAMOND, "gold_diamond_chest_upgrade", "GGG", "msm", "GGG"),
+ COPPER_SILVER(COPPER, SILVER, "copper_silver_chest_upgrade", "mmm", "msm", "mmm"),
+ SILVER_GOLD(SILVER, GOLD, "silver_gold_chest_upgrade", "mGm", "GsG", "mGm"),
+ COPPER_IRON(COPPER, IRON, "copper_iron_chest_upgrade", "mGm", "GsG", "mGm"),
+ DIAMOND_CRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_chest_upgrade", "GGG", "GOG", "GGG"),
+ WOOD_IRON(WOOD, IRON, "wood_iron_chest_upgrade", "mmm", "msm", "mmm"),
+ WOOD_COPPER(WOOD, COPPER, "wood_copper_chest_upgrade", "mmm", "msm", "mmm"),
+ DIAMOND_OBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_chest_upgrade", "mmm", "mGm", "mmm");
//@formatter:on
public static final ChestChangerType[] VALUES = values();
@@ -57,8 +59,11 @@ public enum ChestChangerType
public ItemChestChanger buildItem()
{
this.item = new ItemChestChanger(this);
+
this.item.setRegistryName(this.itemName);
+
GameRegistry.register(this.item);
+
return this.item;
}
diff --git a/src/main/java/cpw/mods/ironchest/common/items/ShulkerBoxChangerType.java b/src/main/java/cpw/mods/ironchest/common/items/ShulkerBoxChangerType.java
new file mode 100644
index 0000000..aab7e44
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/items/ShulkerBoxChangerType.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw. All rights reserved. This program and the accompanying materials are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors: cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.items;
+
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.COPPER;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.CRYSTAL;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.DIAMOND;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.GOLD;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.IRON;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.OBSIDIAN;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.SILVER;
+import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.VANILLA;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import cpw.mods.ironchest.common.items.shulker.ItemShulkerBoxChanger;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fml.common.registry.GameRegistry;
+
+public enum ShulkerBoxChangerType
+{
+ //@formatter:off
+ IRON_GOLD(IRON, GOLD, "iron_gold_shulker_upgrade", "mmm", "msm", "mmm"),
+ GOLD_DIAMOND(GOLD, DIAMOND, "gold_diamond_shulker_upgrade", "GGG", "msm", "GGG"),
+ COPPER_SILVER(COPPER, SILVER, "copper_silver_shulker_upgrade", "mmm", "msm", "mmm"),
+ SILVER_GOLD(SILVER, GOLD, "silver_gold_shulker_upgrade", "mGm", "GsG", "mGm"),
+ COPPER_IRON(COPPER, IRON, "copper_iron_shulker_upgrade", "mGm", "GsG", "mGm"),
+ DIAMOND_CRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_shulker_upgrade", "GGG", "GOG", "GGG"),
+ VANILLA_IRON(VANILLA, IRON, "vanilla_iron_shulker_upgrade", "mmm", "msm", "mmm"),
+ VANILLA_COPPER(VANILLA, COPPER, "vanilla_copper_shulker_upgrade", "mmm", "msm", "mmm"),
+ DIAMOND_OBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_shulker_upgrade", "mmm", "mGm", "mmm");
+ //@formatter:on
+
+ public static final ShulkerBoxChangerType[] VALUES = values();
+
+ public final IronShulkerBoxType source;
+ public final IronShulkerBoxType target;
+ public final String itemName;
+ public ItemShulkerBoxChanger item;
+ private String[] recipe;
+
+ ShulkerBoxChangerType(IronShulkerBoxType source, IronShulkerBoxType target, String itemName, String... recipe)
+ {
+ this.source = source;
+ this.target = target;
+ this.itemName = itemName;
+ this.recipe = recipe;
+ }
+
+ public boolean canUpgrade(IronShulkerBoxType from)
+ {
+ return from == this.source;
+ }
+
+ public ItemShulkerBoxChanger buildItem()
+ {
+ this.item = new ItemShulkerBoxChanger(this);
+
+ this.item.setRegistryName(this.itemName);
+
+ GameRegistry.register(this.item);
+
+ return this.item;
+ }
+
+ public void addRecipes()
+ {
+ for (String sourceMat : this.source.matList)
+ {
+ for (String targetMat : this.target.matList)
+ {
+ Object targetMaterial = IronShulkerBoxType.translateOreName(targetMat);
+ Object sourceMaterial = IronShulkerBoxType.translateOreName(sourceMat);
+
+ //@formatter:off
+ IronShulkerBoxType.addRecipe(new ItemStack(this.item), this.recipe, 'm', targetMaterial, 's', sourceMaterial, 'G', "blockGlass", 'O', Blocks.OBSIDIAN);
+ //@formatter:on
+ }
+ }
+ }
+
+ public static void buildItems()
+ {
+ for (ShulkerBoxChangerType type : VALUES)
+ {
+ type.buildItem();
+ }
+ }
+
+ public static void generateRecipes()
+ {
+ for (ShulkerBoxChangerType item : VALUES)
+ {
+ item.addRecipes();
+ }
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/ItemChestChanger.java b/src/main/java/cpw/mods/ironchest/common/items/chest/ItemChestChanger.java
old mode 100755
new mode 100644
similarity index 81%
rename from src/main/java/cpw/mods/ironchest/ItemChestChanger.java
rename to src/main/java/cpw/mods/ironchest/common/items/chest/ItemChestChanger.java
index 2006e9d..0b59c91
--- a/src/main/java/cpw/mods/ironchest/ItemChestChanger.java
+++ b/src/main/java/cpw/mods/ironchest/common/items/chest/ItemChestChanger.java
@@ -8,13 +8,19 @@
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
-package cpw.mods.ironchest;
+package cpw.mods.ironchest.common.items.chest;
+import java.util.Locale;
+
+import cpw.mods.ironchest.common.ICContent;
+import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
+import cpw.mods.ironchest.common.blocks.chest.IronChestType;
+import cpw.mods.ironchest.common.items.ChestChangerType;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
+import cpw.mods.ironchest.common.util.ItemTooltip;
import net.minecraft.block.BlockChest;
import net.minecraft.block.state.IBlockState;
-import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
@@ -25,7 +31,7 @@ import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
-public class ItemChestChanger extends Item
+public class ItemChestChanger extends ItemTooltip
{
public final ChestChangerType type;
@@ -33,15 +39,17 @@ public class ItemChestChanger extends Item
{
this.type = type;
this.setMaxStackSize(1);
- this.setUnlocalizedName("ironchest:" + type.name());
- this.setCreativeTab(CreativeTabs.MISC);
+ this.setUnlocalizedName("ironchest.chest." + type.name().toLowerCase(Locale.US));
+ this.setCreativeTab(ICContent.tabGeneral);
}
/**
* Called when a Block is right-clicked with this Item
*/
@Override
- public EnumActionResult onItemUse(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
+ //@formatter:off
+ public EnumActionResult onItemUseFirst(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand)
+ //@formatter:on
{
ItemStack itemstack = playerIn.getHeldItem(hand);
@@ -59,7 +67,9 @@ public class ItemChestChanger extends Item
}
else
{
- if (worldIn.getBlockState(pos) != IronChest.ironChestBlock.getStateFromMeta(IronChestType.valueOf(this.type.source.getName().toUpperCase()).ordinal()))
+ //@formatter:off
+ if (worldIn.getBlockState(pos) != ICContent.ironChestBlock.getStateFromMeta(IronChestType.valueOf(this.type.source.getName().toUpperCase()).ordinal()))
+ //@formatter:on
{
return EnumActionResult.PASS;
}
@@ -120,7 +130,7 @@ public class ItemChestChanger extends Item
worldIn.removeTileEntity(pos);
worldIn.setBlockToAir(pos);
- IBlockState iblockstate = IronChest.ironChestBlock.getDefaultState().withProperty(BlockIronChest.VARIANT_PROP, this.type.target);
+ IBlockState iblockstate = ICContent.ironChestBlock.getDefaultState().withProperty(BlockIronChest.VARIANT_PROP, this.type.target);
worldIn.setTileEntity(pos, newchest);
worldIn.setBlockState(pos, iblockstate, 3);
diff --git a/src/main/java/cpw/mods/ironchest/ItemIronChest.java b/src/main/java/cpw/mods/ironchest/common/items/chest/ItemIronChest.java
old mode 100755
new mode 100644
similarity index 78%
rename from src/main/java/cpw/mods/ironchest/ItemIronChest.java
rename to src/main/java/cpw/mods/ironchest/common/items/chest/ItemIronChest.java
index f53d61c..c485047
--- a/src/main/java/cpw/mods/ironchest/ItemIronChest.java
+++ b/src/main/java/cpw/mods/ironchest/common/items/chest/ItemIronChest.java
@@ -8,8 +8,12 @@
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
-package cpw.mods.ironchest;
+package cpw.mods.ironchest.common.items.chest;
+import java.util.Locale;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
@@ -20,8 +24,8 @@ public class ItemIronChest extends ItemBlock
public ItemIronChest(Block block)
{
super(block);
- this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest"));
+ this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest"));
this.setMaxDamage(0);
this.setHasSubtypes(true);
}
@@ -35,6 +39,6 @@ public class ItemIronChest extends ItemBlock
@Override
public String getUnlocalizedName(ItemStack itemstack)
{
- return "tile.ironchest:" + IronChestType.VALUES[itemstack.getMetadata()].name();
+ return "tile.ironchest.chest." + IronChestType.VALUES[itemstack.getMetadata()].name().toLowerCase(Locale.US);
}
}
diff --git a/src/main/java/cpw/mods/ironchest/common/items/shulker/ItemIronShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/items/shulker/ItemIronShulkerBox.java
new file mode 100644
index 0000000..d33a2a9
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/items/shulker/ItemIronShulkerBox.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.items.shulker;
+
+import java.util.Locale;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.block.Block;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
+
+public class ItemIronShulkerBox extends ItemBlock
+{
+ private final String colorName;
+
+ public ItemIronShulkerBox(Block block, EnumDyeColor colorIn)
+ {
+ super(block);
+
+ this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_shulker_box_" + colorIn.getName()));
+ this.setMaxDamage(0);
+ this.setHasSubtypes(true);
+ this.setMaxStackSize(1);
+ this.colorName = colorIn.getName();
+ }
+
+ @Override
+ public int getMetadata(int meta)
+ {
+ return meta;
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack itemstack)
+ {
+ return "tile.ironchest.shulker_box." + IronShulkerBoxType.VALUES[itemstack.getMetadata()].name().toLowerCase(Locale.US) + "." + this.colorName;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cpw/mods/ironchest/common/items/shulker/ItemShulkerBoxChanger.java b/src/main/java/cpw/mods/ironchest/common/items/shulker/ItemShulkerBoxChanger.java
new file mode 100644
index 0000000..1d3c388
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/items/shulker/ItemShulkerBoxChanger.java
@@ -0,0 +1,213 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.items.shulker;
+
+import java.util.Locale;
+
+import cpw.mods.ironchest.common.ICContent;
+import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import cpw.mods.ironchest.common.items.ShulkerBoxChangerType;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
+import cpw.mods.ironchest.common.util.ItemTooltip;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockShulkerBox;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.tileentity.TileEntityShulkerBox;
+import net.minecraft.util.EnumActionResult;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.EnumHand;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class ItemShulkerBoxChanger extends ItemTooltip
+{
+ public final ShulkerBoxChangerType type;
+
+ public ItemShulkerBoxChanger(ShulkerBoxChangerType type)
+ {
+ this.type = type;
+
+ this.setMaxStackSize(1);
+ this.setUnlocalizedName("ironchest.shulker_box." + type.name().toLowerCase(Locale.US));
+ this.setCreativeTab(ICContent.tabGeneral);
+ }
+
+ public EnumDyeColor getColorFromTileEntity(TileEntity te, World worldIn)
+ {
+ if (te != null)
+ {
+ if (te instanceof TileEntityIronShulkerBox)
+ {
+ TileEntityIronShulkerBox ironShulkerBox = (TileEntityIronShulkerBox) te;
+
+ Block ironShulkerBoxBlock = worldIn.getBlockState(ironShulkerBox.getPos()).getBlock();
+
+ for (int i = 0; i < ICContent.SHULKER_BLOCKS.size(); i++)
+ {
+ if (ICContent.SHULKER_BLOCKS.get(i) == ironShulkerBoxBlock)
+ {
+ return ICContent.VANILLA_SHULKER_COLORS.get(i);
+ }
+ }
+ }
+ else if (te instanceof TileEntityShulkerBox)
+ {
+ TileEntityShulkerBox shulkerBox = (TileEntityShulkerBox) te;
+
+ Block shulkerBoxBlock = worldIn.getBlockState(shulkerBox.getPos()).getBlock();
+
+ for (int i = 0; i < ICContent.VANILLA_SHULKER_BLOCKS.size(); i++)
+ {
+ if (ICContent.VANILLA_SHULKER_BLOCKS.get(i) == shulkerBoxBlock)
+ {
+ return ICContent.VANILLA_SHULKER_COLORS.get(i);
+ }
+ }
+ }
+ }
+
+ return EnumDyeColor.PURPLE;
+ }
+
+ /**
+ * Called when a Block is right-clicked with this Item
+ */
+ @Override
+ //@formatter:off
+ public EnumActionResult onItemUseFirst(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand)
+ //@formatter:on
+ {
+ ItemStack itemstack = playerIn.getHeldItem(hand);
+
+ if (worldIn.isRemote)
+ {
+ return EnumActionResult.PASS;
+ }
+
+ if (this.type.canUpgrade(IronShulkerBoxType.VANILLA))
+ {
+ if (!(worldIn.getBlockState(pos).getBlock() instanceof BlockShulkerBox))
+ {
+ return EnumActionResult.PASS;
+ }
+ }
+ else
+ {
+ if ((worldIn.getBlockState(pos).getBlock() instanceof BlockIronShulkerBox))
+ {
+ //@formatter:off
+ if (worldIn.getBlockState(pos) != ((BlockIronShulkerBox) worldIn.getBlockState(pos).getBlock()).getStateFromMeta(IronShulkerBoxType.valueOf(this.type.source.getName().toUpperCase()).ordinal()))
+ //@formatter:on
+ {
+ return EnumActionResult.PASS;
+ }
+ }
+ else
+ {
+ return EnumActionResult.PASS;
+ }
+ }
+
+ TileEntity te = worldIn.getTileEntity(pos);
+
+ TileEntityIronShulkerBox newShulkerBox = new TileEntityIronShulkerBox();
+
+ NonNullList
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.network;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
+import io.netty.buffer.ByteBuf;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraftforge.fml.common.network.ByteBufUtils;
+import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
+import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
+import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
+
+public class MessageCrystalChestSync implements IMessage
+{
+ int dimension;
+ BlockPos pos;
+ private NonNullList
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.network;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
+import io.netty.buffer.ByteBuf;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraftforge.fml.common.network.ByteBufUtils;
+import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
+import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
+import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
+
+public class MessageCrystalShulkerSync implements IMessage
+{
+ int dimension;
+ BlockPos pos;
+ private NonNullList
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.item.EnumDyeColor;
+
+public class TileEntityCopperShulkerBox extends TileEntityIronShulkerBox
+{
+ public TileEntityCopperShulkerBox()
+ {
+ this(null);
+ }
+
+ public TileEntityCopperShulkerBox(@Nullable EnumDyeColor colorIn)
+ {
+ super(colorIn, IronShulkerBoxType.COPPER);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityCrystalShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityCrystalShulkerBox.java
new file mode 100644
index 0000000..066b571
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityCrystalShulkerBox.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.item.EnumDyeColor;
+
+public class TileEntityCrystalShulkerBox extends TileEntityIronShulkerBox
+{
+ public TileEntityCrystalShulkerBox()
+ {
+ this(null);
+ }
+
+ public TileEntityCrystalShulkerBox(@Nullable EnumDyeColor colorIn)
+ {
+ super(colorIn, IronShulkerBoxType.CRYSTAL);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityDiamondShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityDiamondShulkerBox.java
new file mode 100644
index 0000000..b8b5915
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityDiamondShulkerBox.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.item.EnumDyeColor;
+
+public class TileEntityDiamondShulkerBox extends TileEntityIronShulkerBox
+{
+ public TileEntityDiamondShulkerBox()
+ {
+ this(null);
+ }
+
+ public TileEntityDiamondShulkerBox(@Nullable EnumDyeColor colorIn)
+ {
+ super(colorIn, IronShulkerBoxType.DIAMOND);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityGoldShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityGoldShulkerBox.java
new file mode 100644
index 0000000..51c874a
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityGoldShulkerBox.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.item.EnumDyeColor;
+
+public class TileEntityGoldShulkerBox extends TileEntityIronShulkerBox
+{
+ public TileEntityGoldShulkerBox()
+ {
+ this(null);
+ }
+
+ public TileEntityGoldShulkerBox(@Nullable EnumDyeColor colorIn)
+ {
+ super(colorIn, IronShulkerBoxType.GOLD);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityIronShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityIronShulkerBox.java
new file mode 100644
index 0000000..51db829
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityIronShulkerBox.java
@@ -0,0 +1,795 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import cpw.mods.ironchest.common.gui.shulker.ContainerIronShulkerBox;
+import cpw.mods.ironchest.common.network.MessageCrystalShulkerSync;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockShulkerBox;
+import net.minecraft.block.material.EnumPushReaction;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.MoverType;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.init.SoundEvents;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ISidedInventory;
+import net.minecraft.inventory.ItemStackHelper;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.network.NetworkManager;
+import net.minecraft.network.play.server.SPacketUpdateTileEntity;
+import net.minecraft.tileentity.TileEntityLockableLoot;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.ITickable;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.util.math.AxisAlignedBB;
+import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+public class TileEntityIronShulkerBox extends TileEntityLockableLoot implements ITickable, ISidedInventory
+{
+ private final int[] SLOTS;
+
+ /** Shulker Box Contents */
+ private NonNullList
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.item.EnumDyeColor;
+
+public class TileEntityObsidianShulkerBox extends TileEntityIronShulkerBox
+{
+ public TileEntityObsidianShulkerBox()
+ {
+ this(null);
+ }
+
+ public TileEntityObsidianShulkerBox(@Nullable EnumDyeColor colorIn)
+ {
+ super(colorIn, IronShulkerBoxType.OBSIDIAN);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntitySilverShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntitySilverShulkerBox.java
new file mode 100644
index 0000000..b116394
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntitySilverShulkerBox.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.tileentity.shulker;
+
+import javax.annotation.Nullable;
+
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import net.minecraft.item.EnumDyeColor;
+
+public class TileEntitySilverShulkerBox extends TileEntityIronShulkerBox
+{
+ public TileEntitySilverShulkerBox()
+ {
+ this(null);
+ }
+
+ public TileEntitySilverShulkerBox(@Nullable EnumDyeColor colorIn)
+ {
+ super(colorIn, IronShulkerBoxType.SILVER);
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/util/BehaviorDispenseIronShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/util/BehaviorDispenseIronShulkerBox.java
new file mode 100644
index 0000000..7a16110
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/util/BehaviorDispenseIronShulkerBox.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.util;
+
+import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
+import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
+import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockDispenser;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.dispenser.IBlockSource;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Bootstrap.BehaviorDispenseOptional;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BehaviorDispenseIronShulkerBox extends BehaviorDispenseOptional
+{
+ @Override
+ protected ItemStack dispenseStack(IBlockSource source, ItemStack stack)
+ {
+ Block block = Block.getBlockFromItem(stack.getItem());
+ World world = source.getWorld();
+ EnumFacing enumfacing = source.getBlockState().getValue(BlockDispenser.FACING);
+ BlockPos blockpos = source.getBlockPos().offset(enumfacing);
+ this.successful = world.mayPlace(block, blockpos, false, EnumFacing.DOWN, (Entity) null);
+
+ if (this.successful)
+ {
+ EnumFacing enumfacing1 = world.isAirBlock(blockpos.down()) ? enumfacing : EnumFacing.UP;
+ IBlockState iblockstate = block.getDefaultState().withProperty(BlockIronShulkerBox.VARIANT_PROP, IronShulkerBoxType.VALUES[stack.getMetadata()]);
+ world.setBlockState(blockpos, iblockstate);
+ TileEntity tileentity = world.getTileEntity(blockpos);
+ ItemStack itemstack = stack.splitStack(1);
+
+ ((TileEntityIronShulkerBox) tileentity).setFacing(enumfacing1);
+
+ if (itemstack.hasTagCompound())
+ {
+ ((TileEntityIronShulkerBox) tileentity).loadFromNbt(itemstack.getTagCompound().getCompoundTag("BlockEntityTag"));
+ }
+
+ if (itemstack.hasDisplayName())
+ {
+ ((TileEntityIronShulkerBox) tileentity).setCustomName(itemstack.getDisplayName());
+ }
+
+ world.updateComparatorOutputLevel(blockpos, iblockstate.getBlock());
+ }
+
+ return stack;
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/util/CreativeTab.java b/src/main/java/cpw/mods/ironchest/common/util/CreativeTab.java
new file mode 100644
index 0000000..5a3a384
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/util/CreativeTab.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.util;
+
+import javax.annotation.Nonnull;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+public class CreativeTab extends CreativeTabs
+{
+ private ItemStack icon;
+
+ // a vanilla icon in case the other one isn't present
+ public CreativeTab(String label, ItemStack backupIcon)
+ {
+ super(label);
+
+ this.icon = backupIcon;
+ }
+
+ public void setDisplayIcon(ItemStack displayIcon)
+ {
+ if (!displayIcon.isEmpty())
+ {
+ this.icon = displayIcon;
+ }
+ }
+
+ @Nonnull
+ @SideOnly(Side.CLIENT)
+ @Override
+ public ItemStack getIconItemStack()
+ {
+ return icon;
+ }
+
+ @Nonnull
+ @SideOnly(Side.CLIENT)
+ @Override
+ public ItemStack getTabIconItem()
+ {
+ return icon;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cpw/mods/ironchest/common/util/ItemTooltip.java b/src/main/java/cpw/mods/ironchest/common/util/ItemTooltip.java
new file mode 100644
index 0000000..bd47c70
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/util/ItemTooltip.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.util;
+
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraft.util.text.translation.I18n;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SuppressWarnings("deprecation")
+public class ItemTooltip extends Item
+{
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack stack, EntityPlayer playerIn, List
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.util;
+
+import javax.annotation.Nonnull;
+
+import cpw.mods.ironchest.IronChest;
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
+import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent.MissingMapping;
+import net.minecraftforge.fml.common.registry.ForgeRegistries;
+import net.minecraftforge.fml.common.registry.GameRegistry;
+
+public class MissingMappingsHandler
+{
+ public static void onMissingMappings(FMLMissingMappingsEvent event)
+ {
+ for (MissingMapping mapping : event.get())
+ {
+ if (mapping.resourceLocation.getResourceDomain().equals(IronChest.MOD_ID))
+ {
+ @Nonnull
+ String path = mapping.resourceLocation.getResourcePath();
+
+ replaceOldChest(path, mapping);
+
+ replaceOldUpgrades(path, mapping);
+
+ replaceNewUpgrades(path, mapping);
+ }
+ }
+ }
+
+ private static void replaceOldChest(String path, MissingMapping mapping)
+ {
+ if (path.endsWith("blockironchest"))
+ {
+ path = path.replace("blockironchest", "iron_chest");
+ ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path);
+ Block block = ForgeRegistries.BLOCKS.getValue(newRes);
+
+ if (block != null)
+ {
+ if (mapping.type == GameRegistry.Type.BLOCK)
+ {
+ mapping.remap(block);
+ }
+ else
+ {
+ mapping.remap(Item.getItemFromBlock(block));
+ }
+ }
+ }
+ }
+
+ private static void replaceOldUpgrades(String path, MissingMapping mapping)
+ {
+ if (path.endsWith("irongoldupgrade"))
+ {
+ path = path.replace("irongoldupgrade", "iron_gold_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("golddiamondupgrade"))
+ {
+ path = path.replace("golddiamondupgrade", "gold_diamond_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("coppersilverupgrade"))
+ {
+ path = path.replace("coppersilverupgrade", "copper_silver_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("silvergoldupgrade"))
+ {
+ path = path.replace("silvergoldupgrade", "silver_gold_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("copperironupgrade"))
+ {
+ path = path.replace("copperironupgrade", "copper_iron_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("diamondcrystalupgrade"))
+ {
+ path = path.replace("diamondcrystalupgrade", "diamond_crystal_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("woodironupgrade"))
+ {
+ path = path.replace("woodironupgrade", "wood_iron_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("woodcopperupgrade"))
+ {
+ path = path.replace("woodcopperupgrade", "wood_copper_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("diamondobsidianupgrade"))
+ {
+ path = path.replace("diamondobsidianupgrade", "diamond_obsidian_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+ }
+
+ private static void replaceNewUpgrades(String path, MissingMapping mapping)
+ {
+ if (path.endsWith("iron_gold_upgrade"))
+ {
+ path = path.replace("iron_gold_upgrade", "iron_gold_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("gold_diamond_upgrade"))
+ {
+ path = path.replace("gold_diamond_upgrade", "gold_diamond_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("copper_silver_upgrade"))
+ {
+ path = path.replace("copper_silver_upgrade", "copper_silver_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("silver_gold_upgrade"))
+ {
+ path = path.replace("silver_gold_upgrade", "silver_gold_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("copper_iron_upgrade"))
+ {
+ path = path.replace("copper_iron_upgrade", "copper_iron_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("diamond_crystal_upgrade"))
+ {
+ path = path.replace("diamond_crystal_upgrade", "diamond_crystal_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("wood_iron_upgrade"))
+ {
+ path = path.replace("wood_iron_upgrade", "wood_iron_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("wood_copper_upgrade"))
+ {
+ path = path.replace("wood_copper_upgrade", "wood_copper_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+
+ if (path.endsWith("diamond_obsidian_upgrade"))
+ {
+ path = path.replace("diamond_obsidian_upgrade", "diamond_obsidian_chest_upgrade");
+ replaceUpgradeItem(path, mapping);
+ }
+ }
+
+ private static void replaceUpgradeItem(String path, MissingMapping mapping)
+ {
+ ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path);
+ Item item = ForgeRegistries.ITEMS.getValue(newRes);
+
+ if (item != null)
+ {
+ mapping.remap(item);
+ }
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/OcelotsSitOnChestsHandler.java b/src/main/java/cpw/mods/ironchest/common/util/OcelotsSitOnChestsHandler.java
old mode 100755
new mode 100644
similarity index 67%
rename from src/main/java/cpw/mods/ironchest/OcelotsSitOnChestsHandler.java
rename to src/main/java/cpw/mods/ironchest/common/util/OcelotsSitOnChestsHandler.java
index 04145af..1f28813
--- a/src/main/java/cpw/mods/ironchest/OcelotsSitOnChestsHandler.java
+++ b/src/main/java/cpw/mods/ironchest/common/util/OcelotsSitOnChestsHandler.java
@@ -1,7 +1,18 @@
-package cpw.mods.ironchest;
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.util;
import java.util.HashSet;
+import cpw.mods.ironchest.common.ai.IronChestAIOcelotSit;
import net.minecraft.entity.ai.EntityAIOcelotSit;
import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry;
import net.minecraft.entity.passive.EntityOcelot;
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_chest.json b/src/main/resources/assets/ironchest/blockstates/iron_chest.json
index 662e399..aee9e35 100644
--- a/src/main/resources/assets/ironchest/blockstates/iron_chest.json
+++ b/src/main/resources/assets/ironchest/blockstates/iron_chest.json
@@ -9,49 +9,49 @@
"iron": {
"textures": {
"particle": "ironchest:blocks/iron_break",
- "texture": "ironchest:model/iron_chest"
+ "texture": "ironchest:model/chest/iron_chest"
}
},
"gold": {
"textures": {
"particle": "ironchest:blocks/gold_break",
- "texture": "ironchest:model/gold_chest"
+ "texture": "ironchest:model/chest/gold_chest"
}
},
"diamond": {
"textures": {
"particle": "ironchest:blocks/diamond_break",
- "texture": "ironchest:model/diamond_chest"
+ "texture": "ironchest:model/chest/diamond_chest"
}
},
"copper": {
"textures": {
"particle": "ironchest:blocks/copper_break",
- "texture": "ironchest:model/copper_chest"
+ "texture": "ironchest:model/chest/copper_chest"
}
},
"silver": {
"textures": {
"particle": "ironchest:blocks/silver_break",
- "texture": "ironchest:model/silver_chest"
+ "texture": "ironchest:model/chest/silver_chest"
}
},
"crystal": {
"textures": {
"particle": "ironchest:blocks/crystal_break",
- "texture": "ironchest:model/crystal_chest"
+ "texture": "ironchest:model/chest/crystal_chest"
}
},
"obsidian": {
"textures": {
"particle": "minecraft:blocks/obsidian",
- "texture": "ironchest:model/obsidian_chest"
+ "texture": "ironchest:model/chest/obsidian_chest"
}
},
"dirtchest9000": {
"textures": {
"particle": "minecraft:blocks/dirt",
- "texture": "ironchest:model/dirt_chest"
+ "texture": "ironchest:model/chest/dirt_chest"
}
},
"wood": {
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_chest_upgrades.json b/src/main/resources/assets/ironchest/blockstates/iron_chest_upgrades.json
index 9132a14..02347a4 100644
--- a/src/main/resources/assets/ironchest/blockstates/iron_chest_upgrades.json
+++ b/src/main/resources/assets/ironchest/blockstates/iron_chest_upgrades.json
@@ -6,49 +6,49 @@
},
"variants": {
"variant": {
- "copper_silver_upgrade": {
+ "copper_silver_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/copper_silver_upgrade"
+ "layer0": "ironchest:items/chest/copper_silver_upgrade"
}
},
- "diamond_crystal_upgrade": {
+ "diamond_crystal_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/diamond_crystal_upgrade"
+ "layer0": "ironchest:items/chest/diamond_crystal_upgrade"
}
},
- "diamond_obsidian_upgrade": {
+ "diamond_obsidian_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/diamond_obsidian_upgrade"
+ "layer0": "ironchest:items/chest/diamond_obsidian_upgrade"
}
},
- "gold_diamond_upgrade": {
+ "gold_diamond_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/gold_diamond_upgrade"
+ "layer0": "ironchest:items/chest/gold_diamond_upgrade"
}
},
- "iron_gold_upgrade": {
+ "iron_gold_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/iron_gold_upgrade"
+ "layer0": "ironchest:items/chest/iron_gold_upgrade"
}
},
- "silver_gold_upgrade": {
+ "silver_gold_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/silver_gold_upgrade"
+ "layer0": "ironchest:items/chest/silver_gold_upgrade"
}
},
- "wood_copper_upgrade": {
+ "wood_copper_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/wood_copper_upgrade"
+ "layer0": "ironchest:items/chest/wood_copper_upgrade"
}
},
- "wood_iron_upgrade": {
+ "wood_iron_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/wood_iron_upgrade"
+ "layer0": "ironchest:items/chest/wood_iron_upgrade"
}
},
- "copper_iron_upgrade": {
+ "copper_iron_chest_upgrade": {
"textures": {
- "layer0": "ironchest:items/copper_iron_upgrade"
+ "layer0": "ironchest:items/chest/copper_iron_upgrade"
}
}
}
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_black.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_black.json
new file mode 100644
index 0000000..f931a73
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_black.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/black/shulker_black_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/black/shulker_black_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/black/shulker_black_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/black/shulker_black_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/black/shulker_black_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/black/shulker_black_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/black/shulker_black_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_black",
+ "texture":"minecraft:entity/shulker/shulker_black"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_blue.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_blue.json
new file mode 100644
index 0000000..87b6406
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_blue.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/blue/shulker_blue_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_blue",
+ "texture":"minecraft:entity/shulker/shulker_blue"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_brown.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_brown.json
new file mode 100644
index 0000000..d4c9ac0
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_brown.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/brown/shulker_brown_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_brown",
+ "texture":"minecraft:entity/shulker/shulker_brown"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_cyan.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_cyan.json
new file mode 100644
index 0000000..10b80a8
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_cyan.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/cyan/shulker_cyan_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_cyan",
+ "texture":"minecraft:entity/shulker/shulker_cyan"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_gray.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_gray.json
new file mode 100644
index 0000000..67885e3
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_gray.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/gray/shulker_gray_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_gray",
+ "texture":"minecraft:entity/shulker/shulker_gray"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_green.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_green.json
new file mode 100644
index 0000000..15a1422
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_green.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/green/shulker_green_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/green/shulker_green_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/green/shulker_green_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/green/shulker_green_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/green/shulker_green_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/green/shulker_green_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/green/shulker_green_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_green",
+ "texture":"minecraft:entity/shulker/shulker_green"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_light_blue.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_light_blue.json
new file mode 100644
index 0000000..d786991
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_light_blue.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/light_blue/shulker_light_blue_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_light_blue",
+ "texture":"minecraft:entity/shulker/shulker_light_blue"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_lime.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_lime.json
new file mode 100644
index 0000000..30e4a88
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_lime.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/lime/shulker_lime_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_lime",
+ "texture":"minecraft:entity/shulker/shulker_lime"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_magenta.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_magenta.json
new file mode 100644
index 0000000..4976efe
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_magenta.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/magenta/shulker_magenta_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_magenta",
+ "texture":"minecraft:entity/shulker/shulker_magenta"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_orange.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_orange.json
new file mode 100644
index 0000000..ff4b745
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_orange.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/orange/shulker_orange_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_orange",
+ "texture":"minecraft:entity/shulker/shulker_orange"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_pink.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_pink.json
new file mode 100644
index 0000000..859e355
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_pink.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/pink/shulker_pink_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_pink",
+ "texture":"minecraft:entity/shulker/shulker_pink"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_purple.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_purple.json
new file mode 100644
index 0000000..7965a77
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_purple.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/purple/shulker_purple_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_purple",
+ "texture":"minecraft:entity/shulker/shulker_purple"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_red.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_red.json
new file mode 100644
index 0000000..b3f9644
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_red.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/red/shulker_red_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/red/shulker_red_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/red/shulker_red_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/red/shulker_red_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/red/shulker_red_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/red/shulker_red_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/red/shulker_red_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_red",
+ "texture":"minecraft:entity/shulker/shulker_red"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_silver.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_silver.json
new file mode 100644
index 0000000..5a07481
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_silver.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/silver/shulker_silver_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_silver",
+ "texture":"minecraft:entity/shulker/shulker_silver"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_upgrades.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_upgrades.json
new file mode 100644
index 0000000..70b9b48
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_upgrades.json
@@ -0,0 +1,56 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"builtin/generated",
+ "transform":"forge:default-item"
+ },
+ "variants":{
+ "variant":{
+ "copper_silver_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/copper_silver_upgrade"
+ }
+ },
+ "diamond_crystal_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/diamond_crystal_upgrade"
+ }
+ },
+ "diamond_obsidian_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/diamond_obsidian_upgrade"
+ }
+ },
+ "gold_diamond_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/gold_diamond_upgrade"
+ }
+ },
+ "iron_gold_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/iron_gold_upgrade"
+ }
+ },
+ "silver_gold_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/silver_gold_upgrade"
+ }
+ },
+ "vanilla_copper_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/vanilla_copper_upgrade"
+ }
+ },
+ "vanilla_iron_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/vanilla_iron_upgrade"
+ }
+ },
+ "copper_iron_shulker_upgrade":{
+ "textures":{
+ "layer0":"ironchest:items/shulker/copper_iron_upgrade"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_white.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_white.json
new file mode 100644
index 0000000..2bbd7d7
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_white.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/white/shulker_white_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/white/shulker_white_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/white/shulker_white_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/white/shulker_white_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/white/shulker_white_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/white/shulker_white_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/white/shulker_white_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_white",
+ "texture":"minecraft:entity/shulker/shulker_white"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_yellow.json b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_yellow.json
new file mode 100644
index 0000000..5da91c3
--- /dev/null
+++ b/src/main/resources/assets/ironchest/blockstates/iron_shulker_box_yellow.json
@@ -0,0 +1,59 @@
+{
+ "forge_marker":1,
+ "defaults":{
+ "model":"ironchest:iron_shulker_box",
+ "transform":"forge:default-block"
+ },
+ "variants":{
+ "variant":{
+ "iron":{
+ "textures":{
+ "particle":"ironchest:blocks/iron_break",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_iron"
+ }
+ },
+ "gold":{
+ "textures":{
+ "particle":"ironchest:blocks/gold_break",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_gold"
+ }
+ },
+ "diamond":{
+ "textures":{
+ "particle":"ironchest:blocks/diamond_break",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_diamond"
+ }
+ },
+ "copper":{
+ "textures":{
+ "particle":"ironchest:blocks/copper_break",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_copper"
+ }
+ },
+ "silver":{
+ "textures":{
+ "particle":"ironchest:blocks/silver_break",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_silver"
+ }
+ },
+ "crystal":{
+ "textures":{
+ "particle":"ironchest:blocks/crystal_break",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_crystal"
+ }
+ },
+ "obsidian":{
+ "textures":{
+ "particle":"minecraft:blocks/obsidian",
+ "texture":"ironchest:model/shulker/yellow/shulker_yellow_obsidian"
+ }
+ },
+ "vanilla":{
+ "textures":{
+ "particle":"minecraft:blocks/shulker_top_yellow",
+ "texture":"minecraft:entity/shulker/shulker_yellow"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/lang/cs_CZ.lang b/src/main/resources/assets/ironchest/lang/cs_CZ.lang
index a202085..76000eb 100755
--- a/src/main/resources/assets/ironchest/lang/cs_CZ.lang
+++ b/src/main/resources/assets/ironchest/lang/cs_CZ.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Železná truhla
-tile.ironchest:GOLD.name=Zlatá truhla
-tile.ironchest:DIAMOND.name=Diamantová truhla
-tile.ironchest:COPPER.name=Měděná truhla
-tile.ironchest:SILVER.name=Stříbrná truhla
-tile.ironchest:CRYSTAL.name=Krystalová truhla
-tile.ironchest:OBSIDIAN.name=Obsidiánová truhla
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Vylepšení železné truhly na zlatou
-item.ironchest:GOLDDIAMOND.name=Vylepšení zlaté truhly na diamantovou
-item.ironchest:COPPERSILVER.name=Vylepšení měděné truhly na stříbrnou
-item.ironchest:SILVERGOLD.name=Vylepšení stříbrné truhly na zlatou
-item.ironchest:COPPERIRON.name=Vylepšení měděné truhly na železnou
-item.ironchest:DIAMONDCRYSTAL.name=Vylepšení diamantové truhly na krystalovou
-item.ironchest:WOODIRON.name=Vylepšení dřevěné truhly na železnou
-item.ironchest:WOODCOPPER.name=Vylepšení dřevěné truhly na měděnou
-item.ironchest:DIAMONDOBSIDIAN.name=Vylepšení diamantové truhly na obsidiánovou
+tile.ironchest.chest.iron.name=Železná truhla
+tile.ironchest.chest.gold.name=Zlatá truhla
+tile.ironchest.chest.diamond.name=Diamantová truhla
+tile.ironchest.chest.copper.name=Měděná truhla
+tile.ironchest.chest.silver.name=Stříbrná truhla
+tile.ironchest.chest.crystal.name=Krystalová truhla
+tile.ironchest.chest.obsidian.name=Obsidiánová truhla
+
+item.ironchest.chest.iron_gold.name=Vylepšení železné truhly na zlatou
+item.ironchest.chest.gold_diamond.name=Vylepšení zlaté truhly na diamantovou
+item.ironchest.chest.copper_silver.name=Vylepšení měděné truhly na stříbrnou
+item.ironchest.chest.silver_gold.name=Vylepšení stříbrné truhly na zlatou
+item.ironchest.chest.copper_iron.name=Vylepšení měděné truhly na železnou
+item.ironchest.chest.diamond_crystal.name=Vylepšení diamantové truhly na krystalovou
+item.ironchest.chest.wood_iron.name=Vylepšení dřevěné truhly na železnou
+item.ironchest.chest.wood_copper.name=Vylepšení dřevěné truhly na měděnou
+item.ironchest.chest.diamond_obsidian.name=Vylepšení diamantové truhly na obsidiánovou
diff --git a/src/main/resources/assets/ironchest/lang/da_DK.lang b/src/main/resources/assets/ironchest/lang/da_DK.lang
index 7e40e34..7dfe72a 100755
--- a/src/main/resources/assets/ironchest/lang/da_DK.lang
+++ b/src/main/resources/assets/ironchest/lang/da_DK.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Jern Kiste
-tile.ironchest:GOLD.name=Guld Kiste
-tile.ironchest:DIAMOND.name=Diamant Kiste
-tile.ironchest:COPPER.name=Kobber Kiste
-tile.ironchest:SILVER.name=Sølv Kiste
-tile.ironchest:CRYSTAL.name=Krystal Kiste
-tile.ironchest:OBSIDIAN.name=Obsidian Kiste
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Jern til Guld Kiste Opgradering
-item.ironchest:GOLDDIAMOND.name=Guld til Diamant Kiste Opgradering
-item.ironchest:COPPERSILVER.name=Kobber til Sølv Kiste Opgradering
-item.ironchest:SILVERGOLD.name=Sølv til Guld Kiste Opgradering
-item.ironchest:COPPERIRON.name=Kobber til Jern Kiste Opgradering
-item.ironchest:DIAMONDCRYSTAL.name=Diamant til Krystal Kiste Opgradering
-item.ironchest:WOODIRON.name=Træ til Jern Kiste Opgradering
-item.ironchest:WOODCOPPER.name=Træ til Kobber Kiste Opgradering
-item.ironchest:DIAMONDOBSIDIAN.name=Diamant til Obsidian Kiste Opgradering
+tile.ironchest.chest.iron.name=Jern Kiste
+tile.ironchest.chest.gold.name=Guld Kiste
+tile.ironchest.chest.diamond.name=Diamant Kiste
+tile.ironchest.chest.copper.name=Kobber Kiste
+tile.ironchest.chest.silver.name=Sølv Kiste
+tile.ironchest.chest.crystal.name=Krystal Kiste
+tile.ironchest.chest.obsidian.name=Obsidian Kiste
+
+item.ironchest.chest.iron_gold.name=Jern til Guld Kiste Opgradering
+item.ironchest.chest.gold_diamond.name=Guld til Diamant Kiste Opgradering
+item.ironchest.chest.copper_silver.name=Kobber til Sølv Kiste Opgradering
+item.ironchest.chest.silver_gold.name=Sølv til Guld Kiste Opgradering
+item.ironchest.chest.copper_iron.name=Kobber til Jern Kiste Opgradering
+item.ironchest.chest.diamond_crystal.name=Diamant til Krystal Kiste Opgradering
+item.ironchest.chest.wood_iron.name=Træ til Jern Kiste Opgradering
+item.ironchest.chest.wood_copper.name=Træ til Kobber Kiste Opgradering
+item.ironchest.chest.diamond_obsidian.name=Diamant til Obsidian Kiste Opgradering
diff --git a/src/main/resources/assets/ironchest/lang/de_DE.lang b/src/main/resources/assets/ironchest/lang/de_DE.lang
index fd6c403..87e1956 100755
--- a/src/main/resources/assets/ironchest/lang/de_DE.lang
+++ b/src/main/resources/assets/ironchest/lang/de_DE.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Eisentruhe
-tile.ironchest:GOLD.name=Goldtruhe
-tile.ironchest:DIAMOND.name=Diamanttruhe
-tile.ironchest:COPPER.name=Kupfertruhe
-tile.ironchest:SILVER.name=Silbertruhe
-tile.ironchest:CRYSTAL.name=Kristalltruhe
-tile.ironchest:OBSIDIAN.name=Obsidiantruhe
-tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Eisen-zu-Goldtruhen-Upgrade
-item.ironchest:GOLDDIAMOND.name=Gold-zu-Diamanttruhen-Upgrade
-item.ironchest:COPPERSILVER.name=Kupfer-zu-Silbertruhen-Upgrade
-item.ironchest:SILVERGOLD.name=Silber-zu-Goldtruhen-Upgrade
-item.ironchest:COPPERIRON.name=Kupfer-zu-Eisentruhen-Upgrade
-item.ironchest:DIAMONDCRYSTAL.name=Diamant-zu-Kristalltruhen-Upgrade
-item.ironchest:WOODIRON.name=Holz-zu-Eisentruhen-Upgrade
-item.ironchest:WOODCOPPER.name=Holz-zu-Kupfertruhen-Upgrade
-item.ironchest:DIAMONDOBSIDIAN.name=Diamant-zu-Obsidiantruhen-Upgrade
+tile.ironchest.chest.iron.name=Eisentruhe
+tile.ironchest.chest.gold.name=Goldtruhe
+tile.ironchest.chest.diamond.name=Diamanttruhe
+tile.ironchest.chest.copper.name=Kupfertruhe
+tile.ironchest.chest.silver.name=Silbertruhe
+tile.ironchest.chest.crystal.name=Kristalltruhe
+tile.ironchest.chest.obsidian.name=Obsidiantruhe
+tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
-book.ironchest:dirtchest9000.title=Wie du deine neue DirtChest 9000 nutzt!
-book.ironchest:dirtchest9000.page1=Willkommen zu Ihrer neuen DirtChest 9000! Wir hoffen, dass Sie viele freudige Jahre genießen werden, wenn Sie Ihre Erd-Stacks in unserem nützlichen Speichergerät lagern.
-book.ironchest:dirtchest9000.page2=Nutzung: Werfen Sie einfach den Erd-Stack Ihrer Wahl in den äußerst rezeptiven Slot und genießen Sie die Annehmlichkeit, diese Erde für Sie verfügbar zu haben, jedes mal, wenn Sie diese Truhe passieren!
-book.ironchest:dirtchest9000.page3=Wir hoffen, Sie haben das Durchgehen dieser Bedienungsanleitung genossen, und hoffen, dass sie sich weiterhin entscheiden werden, in Zukunft unsere Produkte zu nutzen! Mit freundlichen Grüßen, Die DirtChest 9000 manual writers incorporated.
-book.ironchest:dirtchest9000.page4=Garantie: Dieses Produkt hat keine Garantie jeglicher Sorte. Ihre Erde könnte nicht gespeichert werden, er könnte langsam in die Umwelt gesaugt werden, oder stattdessen könnte das Produkt gar nichts machen.
-book.ironchest:dirtchest9000.page5=DirtChest 9000 ist freundlich zur Umwelt. Bitte entsorgen Sie diesen Guide verantwortungsbewusst, und tun sie nicht, was Sie immer tun und schmeißen ihn in irgendwelche Lava. Wir würden sehr traurig sein.
+item.ironchest.chest.iron_gold.name=Eisen-zu-Goldtruhen-Upgrade
+item.ironchest.chest.gold_diamond.name=Gold-zu-Diamanttruhen-Upgrade
+item.ironchest.chest.copper_silver.name=Kupfer-zu-Silbertruhen-Upgrade
+item.ironchest.chest.silver_gold.name=Silber-zu-Goldtruhen-Upgrade
+item.ironchest.chest.copper_iron.name=Kupfer-zu-Eisentruhen-Upgrade
+item.ironchest.chest.diamond_crystal.name=Diamant-zu-Kristalltruhen-Upgrade
+item.ironchest.chest.wood_iron.name=Holz-zu-Eisentruhen-Upgrade
+item.ironchest.chest.wood_copper.name=Holz-zu-Kupfertruhen-Upgrade
+item.ironchest.chest.diamond_obsidian.name=Diamant-zu-Obsidiantruhen-Upgrade
+
+book.ironchest.dirtchest9000.title=Wie du deine neue DirtChest 9000 nutzt!
+book.ironchest.dirtchest9000.page1=Willkommen zu Ihrer neuen DirtChest 9000! Wir hoffen, dass Sie viele freudige Jahre genießen werden, wenn Sie Ihre Erd-Stacks in unserem nützlichen Speichergerät lagern.
+book.ironchest.dirtchest9000.page2=Nutzung: Werfen Sie einfach den Erd-Stack Ihrer Wahl in den äußerst rezeptiven Slot und genießen Sie die Annehmlichkeit, diese Erde für Sie verfügbar zu haben, jedes mal, wenn Sie diese Truhe passieren!
+book.ironchest.dirtchest9000.page3=Wir hoffen, Sie haben das Durchgehen dieser Bedienungsanleitung genossen, und hoffen, dass sie sich weiterhin entscheiden werden, in Zukunft unsere Produkte zu nutzen! Mit freundlichen Grüßen, Die DirtChest 9000 manual writers incorporated.
+book.ironchest.dirtchest9000.page4=Garantie: Dieses Produkt hat keine Garantie jeglicher Sorte. Ihre Erde könnte nicht gespeichert werden, er könnte langsam in die Umwelt gesaugt werden, oder stattdessen könnte das Produkt gar nichts machen.
+book.ironchest.dirtchest9000.page5=DirtChest 9000 ist freundlich zur Umwelt. Bitte entsorgen Sie diesen Guide verantwortungsbewusst, und tun sie nicht, was Sie immer tun und schmeißen ihn in irgendwelche Lava. Wir würden sehr traurig sein.
diff --git a/src/main/resources/assets/ironchest/lang/el_GR.lang b/src/main/resources/assets/ironchest/lang/el_GR.lang
index 67285bb..53fbd94 100755
--- a/src/main/resources/assets/ironchest/lang/el_GR.lang
+++ b/src/main/resources/assets/ironchest/lang/el_GR.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Σιδερένιο Σεντούκι
-tile.ironchest:GOLD.name=Χρυσό Σεντούκι
-tile.ironchest:DIAMOND.name=Διαμαντένιο Σεντούκι
-tile.ironchest:COPPER.name=Χάλκινο Σεντούκι
-tile.ironchest:SILVER.name=Ασημένιο Σεντούκι
-tile.ironchest:CRYSTAL.name=Κρυστάλλινο Σεντούκι
-tile.ironchest:OBSIDIAN.name=Σεντούκι Οψιδιανού
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Αναβάθμιση από Σιδερένιο σε Χρυσό Σεντούκι
-item.ironchest:GOLDDIAMOND.name=Αναβάθμιση από Χρυσό σε Διαμαντένιο Σεντούκι
-item.ironchest:COPPERSILVER.name=Αναβάθμιση από Χάλκινο σε Ασημένιο Σεντούκι
-item.ironchest:SILVERGOLD.name=Αναβάθμιση από Ασημένιο σε Χρυσό Σεντούκι
-item.ironchest:COPPERIRON.name=Αναβάθμιση από Χάλκινο σε Σιδερένιο Σεντούκι
-item.ironchest:DIAMONDCRYSTAL.name=Αναβάθμιση από Διαμαντένιο σε Κρυστάλλινο Σεντούκι
-item.ironchest:WOODIRON.name=Αναβάθμιση από Ξύλινο σε Σιδερένιο Σεντούκι
-item.ironchest:WOODCOPPER.name=Αναβάθμιση από Ξύλινο σε Χάλκινο Σεντούκι
-item.ironchest:DIAMONDOBSIDIAN.name=Αναβάθμιση από Διαμαντένιο σε Σεντούκι Οψιδιανού
+tile.ironchest.chest.iron.name=Σιδερένιο Σεντούκι
+tile.ironchest.chest.gold.name=Χρυσό Σεντούκι
+tile.ironchest.chest.diamond.name=Διαμαντένιο Σεντούκι
+tile.ironchest.chest.copper.name=Χάλκινο Σεντούκι
+tile.ironchest.chest.silver.name=Ασημένιο Σεντούκι
+tile.ironchest.chest.crystal.name=Κρυστάλλινο Σεντούκι
+tile.ironchest.chest.obsidian.name=Σεντούκι Οψιδιανού
+
+item.ironchest.chest.iron_gold.name=Αναβάθμιση από Σιδερένιο σε Χρυσό Σεντούκι
+item.ironchest.chest.gold_diamond.name=Αναβάθμιση από Χρυσό σε Διαμαντένιο Σεντούκι
+item.ironchest.chest.copper_silver.name=Αναβάθμιση από Χάλκινο σε Ασημένιο Σεντούκι
+item.ironchest.chest.silver_gold.name=Αναβάθμιση από Ασημένιο σε Χρυσό Σεντούκι
+item.ironchest.chest.copper_iron.name=Αναβάθμιση από Χάλκινο σε Σιδερένιο Σεντούκι
+item.ironchest.chest.diamond_crystal.name=Αναβάθμιση από Διαμαντένιο σε Κρυστάλλινο Σεντούκι
+item.ironchest.chest.wood_iron.name=Αναβάθμιση από Ξύλινο σε Σιδερένιο Σεντούκι
+item.ironchest.chest.wood_copper.name=Αναβάθμιση από Ξύλινο σε Χάλκινο Σεντούκι
+item.ironchest.chest.diamond_obsidian.name=Αναβάθμιση από Διαμαντένιο σε Σεντούκι Οψιδιανού
diff --git a/src/main/resources/assets/ironchest/lang/en_PT.lang b/src/main/resources/assets/ironchest/lang/en_PT.lang
index ea69e27..1595581 100755
--- a/src/main/resources/assets/ironchest/lang/en_PT.lang
+++ b/src/main/resources/assets/ironchest/lang/en_PT.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Steel Coffer
-tile.ironchest:GOLD.name=Gold Coffer
-tile.ironchest:DIAMOND.name=Diamond Coffer
-tile.ironchest:COPPER.name=Copper Coffer
-tile.ironchest:SILVER.name=Silver Coffer
-tile.ironchest:CRYSTAL.name=Shinin' Coffer
-tile.ironchest:OBSIDIAN.name=Coffer o' tears
-tile.ironchest:DIRTCHEST9000.name=FilthCoffer 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Steel to Gold Coffer Upgradin'
-item.ironchest:GOLDDIAMOND.name=Gold to Diamond Coffer Upgradin'
-item.ironchest:COPPERSILVER.name=Copper to Silver Coffer Upgradin'
-item.ironchest:SILVERGOLD.name=Silver to Gold Coffer Upgradin'
-item.ironchest:COPPERIRON.name=Copper to Steel Coffer Upgradin'
-item.ironchest:DIAMONDCRYSTAL.name=Diamond to Shinin' Coffer Upgradin'
-item.ironchest:WOODIRON.name=Timber to Steel Coffer Upgradin'
-item.ironchest:WOODCOPPER.name=Wood to Copper Coffer Upgradin'
-item.ironchest:DIAMONDOBSIDIAN.name=Diamond to Coffer o' Tears Upgradin'
+tile.ironchest.chest.iron.name=Steel Coffer
+tile.ironchest.chest.gold.name=Gold Coffer
+tile.ironchest.chest.diamond.name=Diamond Coffer
+tile.ironchest.chest.copper.name=Copper Coffer
+tile.ironchest.chest.silver.name=Silver Coffer
+tile.ironchest.chest.crystal.name=Shinin' Coffer
+tile.ironchest.chest.obsidian.name=Coffer o' tears
+tile.ironchest.chest.dirtchest9000.name=FilthCoffer 9000!
-book.ironchest:dirtchest9000.title=How to use yer FilthCoffer 9000!
-book.ironchest:dirtchest9000.page1=Welcome to yer new FilthCoffer 9000! We hope ye will enjoy many happy years of storing yer filth wit yer coffer .
-book.ironchest:dirtchest9000.page2=Usage: simply put yer filth in yer slot and yer got yerself some filth any time ye need it!
-book.ironchest:dirtchest9000.page3=We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated.
-book.ironchest:dirtchest9000.page4=Warranty: We can't keep yer filth from pirates. Yer filth may not be stored, it may slowly return to yer world, or it may stay in yer coffer.
-book.ironchest:dirtchest9000.page5=FilthCoffer 9000 is kind to yer voyage. Throw yer paper in a coffer near by wit yer booty, and don't just chuck it into some molten rock. We wouldn't be the happiest o' pirates.
+item.ironchest.chest.iron_gold.name=Steel to Gold Coffer Upgradin'
+item.ironchest.chest.gold_diamond.name=Gold to Diamond Coffer Upgradin'
+item.ironchest.chest.copper_silver.name=Copper to Silver Coffer Upgradin'
+item.ironchest.chest.silver_gold.name=Silver to Gold Coffer Upgradin'
+item.ironchest.chest.copper_iron.name=Copper to Steel Coffer Upgradin'
+item.ironchest.chest.diamond_crystal.name=Diamond to Shinin' Coffer Upgradin'
+item.ironchest.chest.wood_iron.name=Timber to Steel Coffer Upgradin'
+item.ironchest.chest.wood_copper.name=Wood to Copper Coffer Upgradin'
+item.ironchest.chest.diamond_obsidian.name=Diamond to Coffer o' Tears Upgradin'
+
+book.ironchest.dirtchest9000.title=How to use yer FilthCoffer 9000!
+book.ironchest.dirtchest9000.page1=Welcome to yer new FilthCoffer 9000! We hope ye will enjoy many happy years of storing yer filth wit yer coffer .
+book.ironchest.dirtchest9000.page2=Usage: simply put yer filth in yer slot and yer got yerself some filth any time ye need it!
+book.ironchest.dirtchest9000.page3=We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated.
+book.ironchest.dirtchest9000.page4=Warranty: We can't keep yer filth from pirates. Yer filth may not be stored, it may slowly return to yer world, or it may stay in yer coffer.
+book.ironchest.dirtchest9000.page5=FilthCoffer 9000 is kind to yer voyage. Throw yer paper in a coffer near by wit yer booty, and don't just chuck it into some molten rock. We wouldn't be the happiest o' pirates.
diff --git a/src/main/resources/assets/ironchest/lang/en_US.lang b/src/main/resources/assets/ironchest/lang/en_US.lang
index be39337..9abd9cb 100755
--- a/src/main/resources/assets/ironchest/lang/en_US.lang
+++ b/src/main/resources/assets/ironchest/lang/en_US.lang
@@ -1,25 +1,177 @@
-tile.ironchest:IRON.name=Iron Chest
-tile.ironchest:GOLD.name=Gold Chest
-tile.ironchest:DIAMOND.name=Diamond Chest
-tile.ironchest:COPPER.name=Copper Chest
-tile.ironchest:SILVER.name=Silver Chest
-tile.ironchest:CRYSTAL.name=Crystal Chest
-tile.ironchest:OBSIDIAN.name=Obsidian Chest
-tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Iron to Gold Chest Upgrade
-item.ironchest:GOLDDIAMOND.name=Gold to Diamond Chest Upgrade
-item.ironchest:COPPERSILVER.name=Copper to Silver Chest Upgrade
-item.ironchest:SILVERGOLD.name=Silver to Gold Chest Upgrade
-item.ironchest:COPPERIRON.name=Copper to Iron Chest Upgrade
-item.ironchest:DIAMONDCRYSTAL.name=Diamond to Crystal Chest Upgrade
-item.ironchest:WOODIRON.name=Wood to Iron Chest Upgrade
-item.ironchest:WOODCOPPER.name=Wood to Copper Chest Upgrade
-item.ironchest:DIAMONDOBSIDIAN.name=Diamond to Obsidian Chest Upgrade
+tile.ironchest.chest.iron.name=Iron Chest
+tile.ironchest.chest.gold.name=Gold Chest
+tile.ironchest.chest.diamond.name=Diamond Chest
+tile.ironchest.chest.copper.name=Copper Chest
+tile.ironchest.chest.silver.name=Silver Chest
+tile.ironchest.chest.crystal.name=Crystal Chest
+tile.ironchest.chest.obsidian.name=Obsidian Chest
+tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
-book.ironchest:dirtchest9000.title=How to use your DirtChest 9000!
-book.ironchest:dirtchest9000.page1="Welcome to your new DirtChest 9000! We hope you will enjoy many happy years of storing your stack of dirt in our storage utility."
-book.ironchest:dirtchest9000.page2="Usage: simply insert the stack of dirt of your choice into the highly receptive slot and enjoy the great convenience of having that dirt available to you, any time you pass by this chest!"
-book.ironchest:dirtchest9000.page3="We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated."
-book.ironchest:dirtchest9000.page4="Warranty: This product has no warranty of any kind. Your dirt may not be stored, it may slowly leech into the environment, or alternatively, it may not do anything at all."
-book.ironchest:dirtchest9000.page5="DirtChest 9000 is kind to the environment. Please dispose of this guide book responsibly, and do not whatever you do just chuck it into some lava. We would be very sad."
+item.ironchest.chest.iron_gold.name=Iron to Gold Chest Upgrade
+item.ironchest.chest.gold_diamond.name=Gold to Diamond Chest Upgrade
+item.ironchest.chest.copper_silver.name=Copper to Silver Chest Upgrade
+item.ironchest.chest.silver_gold.name=Silver to Gold Chest Upgrade
+item.ironchest.chest.copper_iron.name=Copper to Iron Chest Upgrade
+item.ironchest.chest.diamond_crystal.name=Diamond to Crystal Chest Upgrade
+item.ironchest.chest.wood_iron.name=Wood to Iron Chest Upgrade
+item.ironchest.chest.wood_copper.name=Wood to Copper Chest Upgrade
+item.ironchest.chest.diamond_obsidian.name=Diamond to Obsidian Chest Upgrade
+
+book.ironchest.dirtchest9000.title=How to use your DirtChest 9000!
+book.ironchest.dirtchest9000.page1="Welcome to your new DirtChest 9000! We hope you will enjoy many happy years of storing your stack of dirt in our storage utility."
+book.ironchest.dirtchest9000.page2="Usage: simply insert the stack of dirt of your choice into the highly receptive slot and enjoy the great convenience of having that dirt available to you, any time you pass by this chest!"
+book.ironchest.dirtchest9000.page3="We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated."
+book.ironchest.dirtchest9000.page4="Warranty: This product has no warranty of any kind. Your dirt may not be stored, it may slowly leech into the environment, or alternatively, it may not do anything at all."
+book.ironchest.dirtchest9000.page5="DirtChest 9000 is kind to the environment. Please dispose of this guide book responsibly, and do not whatever you do just chuck it into some lava. We would be very sad."
+
+#######################
+# Shulker Boxes #
+#######################
+
+tile.ironchest.shulker_box.iron.white.name=White Iron Shulker Box
+tile.ironchest.shulker_box.iron.orange.name=Orange Iron Shulker Box
+tile.ironchest.shulker_box.iron.magenta.name=Magenta Iron Shulker Box
+tile.ironchest.shulker_box.iron.light_blue.name=Light Blue Iron Shulker Box
+tile.ironchest.shulker_box.iron.yellow.name=Yellow Iron Shulker Box
+tile.ironchest.shulker_box.iron.lime.name=Lime Iron Shulker Box
+tile.ironchest.shulker_box.iron.pink.name=Pink Iron Shulker Box
+tile.ironchest.shulker_box.iron.gray.name=Gray Iron Shulker Box
+tile.ironchest.shulker_box.iron.silver.name=Silver Iron Shulker Box
+tile.ironchest.shulker_box.iron.cyan.name=Cyan Iron Shulker Box
+tile.ironchest.shulker_box.iron.purple.name=Purple Iron Shulker Box
+tile.ironchest.shulker_box.iron.blue.name=Blue Iron Shulker Box
+tile.ironchest.shulker_box.iron.brown.name=Brown Iron Shulker Box
+tile.ironchest.shulker_box.iron.green.name=Green Iron Shulker Box
+tile.ironchest.shulker_box.iron.red.name=Red Iron Shulker Box
+tile.ironchest.shulker_box.iron.black.name=Black Iron Shulker Box
+
+tile.ironchest.shulker_box.gold.white.name=White Gold Shulker Box
+tile.ironchest.shulker_box.gold.orange.name=Orange Gold Shulker Box
+tile.ironchest.shulker_box.gold.magenta.name=Magenta Gold Shulker Box
+tile.ironchest.shulker_box.gold.light_blue.name=Light Blue Gold Shulker Box
+tile.ironchest.shulker_box.gold.yellow.name=Yellow Gold Shulker Box
+tile.ironchest.shulker_box.gold.lime.name=Lime Gold Shulker Box
+tile.ironchest.shulker_box.gold.pink.name=Pink Gold Shulker Box
+tile.ironchest.shulker_box.gold.gray.name=Gray Gold Shulker Box
+tile.ironchest.shulker_box.gold.silver.name=Silver Gold Shulker Box
+tile.ironchest.shulker_box.gold.cyan.name=Cyan Gold Shulker Box
+tile.ironchest.shulker_box.gold.purple.name=Purple Gold Shulker Box
+tile.ironchest.shulker_box.gold.blue.name=Blue Gold Shulker Box
+tile.ironchest.shulker_box.gold.brown.name=Brown Gold Shulker Box
+tile.ironchest.shulker_box.gold.green.name=Green Gold Shulker Box
+tile.ironchest.shulker_box.gold.red.name=Red Gold Shulker Box
+tile.ironchest.shulker_box.gold.black.name=Black Gold Shulker Box
+
+tile.ironchest.shulker_box.diamond.white.name=White Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.orange.name=Orange Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.magenta.name=Magenta Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.light_blue.name=Light Blue Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.yellow.name=Yellow Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.lime.name=Lime Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.pink.name=Pink Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.gray.name=Gray Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.silver.name=Silver Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.cyan.name=Cyan Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.purple.name=Purple Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.blue.name=Blue Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.brown.name=Brown Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.green.name=Green Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.red.name=Red Diamond Shulker Box
+tile.ironchest.shulker_box.diamond.black.name=Black Diamond Shulker Box
+
+tile.ironchest.shulker_box.copper.white.name=White Copper Shulker Box
+tile.ironchest.shulker_box.copper.orange.name=Orange Copper Shulker Box
+tile.ironchest.shulker_box.copper.magenta.name=Magenta Copper Shulker Box
+tile.ironchest.shulker_box.copper.light_blue.name=Light Blue Copper Shulker Box
+tile.ironchest.shulker_box.copper.yellow.name=Yellow Copper Shulker Box
+tile.ironchest.shulker_box.copper.lime.name=Lime Copper Shulker Box
+tile.ironchest.shulker_box.copper.pink.name=Pink Copper Shulker Box
+tile.ironchest.shulker_box.copper.gray.name=Gray Copper Shulker Box
+tile.ironchest.shulker_box.copper.silver.name=Silver Copper Shulker Box
+tile.ironchest.shulker_box.copper.cyan.name=Cyan Copper Shulker Box
+tile.ironchest.shulker_box.copper.purple.name=Purple Copper Shulker Box
+tile.ironchest.shulker_box.copper.blue.name=Blue Copper Shulker Box
+tile.ironchest.shulker_box.copper.brown.name=Brown Copper Shulker Box
+tile.ironchest.shulker_box.copper.green.name=Green Copper Shulker Box
+tile.ironchest.shulker_box.copper.red.name=Red Copper Shulker Box
+tile.ironchest.shulker_box.copper.black.name=Black Copper Shulker Box
+
+tile.ironchest.shulker_box.silver.white.name=White Silver Shulker Box
+tile.ironchest.shulker_box.silver.orange.name=Orange Silver Shulker Box
+tile.ironchest.shulker_box.silver.magenta.name=Magenta Silver Shulker Box
+tile.ironchest.shulker_box.silver.light_blue.name=Light Blue Silver Shulker Box
+tile.ironchest.shulker_box.silver.yellow.name=Yellow Silver Shulker Box
+tile.ironchest.shulker_box.silver.lime.name=Lime Silver Shulker Box
+tile.ironchest.shulker_box.silver.pink.name=Pink Silver Shulker Box
+tile.ironchest.shulker_box.silver.gray.name=Gray Silver Shulker Box
+tile.ironchest.shulker_box.silver.silver.name=Silver Silver Shulker Box
+tile.ironchest.shulker_box.silver.cyan.name=Cyan Silver Shulker Box
+tile.ironchest.shulker_box.silver.purple.name=Purple Silver Shulker Box
+tile.ironchest.shulker_box.silver.blue.name=Blue Silver Shulker Box
+tile.ironchest.shulker_box.silver.brown.name=Brown Silver Shulker Box
+tile.ironchest.shulker_box.silver.green.name=Green Silver Shulker Box
+tile.ironchest.shulker_box.silver.red.name=Red Silver Shulker Box
+tile.ironchest.shulker_box.silver.black.name=Black Silver Shulker Box
+
+tile.ironchest.shulker_box.crystal.white.name=White Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.orange.name=Orange Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.magenta.name=Magenta Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.light_blue.name=Light Blue Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.yellow.name=Yellow Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.lime.name=Lime Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.pink.name=Pink Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.gray.name=Gray Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.silver.name=Silver Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.cyan.name=Cyan Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.purple.name=Purple Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.blue.name=Blue Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.brown.name=Brown Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.green.name=Green Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.red.name=Red Crystal Shulker Box
+tile.ironchest.shulker_box.crystal.black.name=Black Crystal Shulker Box
+
+tile.ironchest.shulker_box.obsidian.white.name=White Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.orange.name=Orange Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.magenta.name=Magenta Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.light_blue.name=Light Blue Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.yellow.name=Yellow Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.lime.name=Lime Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.pink.name=Pink Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.gray.name=Gray Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.silver.name=Silver Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.cyan.name=Cyan Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.purple.name=Purple Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.blue.name=Blue Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.brown.name=Brown Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.green.name=Green Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.red.name=Red Obsidian Shulker Box
+tile.ironchest.shulker_box.obsidian.black.name=Black Obsidian Shulker Box
+
+item.ironchest.shulker_box.iron_gold.name=Iron to Gold Shulker Box Upgrade
+item.ironchest.shulker_box.iron_gold.tooltip=Used to upgrade a Iron Shulker Box to a Gold Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.gold_diamond.name=Gold to Diamond Shulker Box Upgrade
+item.ironchest.shulker_box.gold_diamond.tooltip=Used to upgrade a Gold Shulker Box to a Diamond Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.copper_silver.name=Copper to Silver Shulker Box Upgrade
+item.ironchest.shulker_box.copper_silver.tooltip=Used to upgrade a Copper Shulker Box to a Silver Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.silver_gold.name=Silver to Gold Shulker Box Upgrade
+item.ironchest.shulker_box.silver_gold.tooltip=Used to upgrade a Silver Shulker Box to a Gold Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.copper_iron.name=Copper to Iron Shulker Box Upgrade
+item.ironchest.shulker_box.copper_iron.tooltip=Used to upgrade a Copper Shulker Box to a Iron Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.diamond_crystal.name=Diamond to Crystal Shulker Box Upgrade
+item.ironchest.shulker_box.diamond_crystal.tooltip=Used to upgrade a Diamond Shulker Box to a Crystal Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.vanilla_iron.name=Vanilla to Iron Shulker Box Upgrade
+item.ironchest.shulker_box.vanilla_iron.tooltip=Used to upgrade a Vanilla Shulker Box to a Iron Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.vanilla_copper.name=Vanilla to Copper Shulker Box Upgrade
+item.ironchest.shulker_box.vanilla_copper.tooltip=Used to upgrade a Vanilla Shulker Box to a Copper Shulker Box\nThe color of the Shulker Box will stay the same.
+item.ironchest.shulker_box.diamond_obsidian.name=Diamond to Obsidian Shulker Box Upgrade
+item.ironchest.shulker_box.diamond_obsidian.tooltip=Used to upgrade a Diamond Shulker Box to a Obsidian Shulker Box\nThe color of the Shulker Box will stay the same.
+
+##############
+# GUIs #
+##############
+
+itemGroup.IronChest=Iron Chests
diff --git a/src/main/resources/assets/ironchest/lang/es_ES.lang b/src/main/resources/assets/ironchest/lang/es_ES.lang
index b770efc..e96ac0e 100755
--- a/src/main/resources/assets/ironchest/lang/es_ES.lang
+++ b/src/main/resources/assets/ironchest/lang/es_ES.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Cofre de Hierro
-tile.ironchest:GOLD.name=Cofre de Oro
-tile.ironchest:DIAMOND.name=Cofre de Diamante
-tile.ironchest:COPPER.name=Cofre de Cobre
-tile.ironchest:SILVER.name=Cofre de Plata
-tile.ironchest:CRYSTAL.name=Cofre de Cristal
-tile.ironchest:OBSIDIAN.name=Cofre de Obsidiana
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Mejora de Cofre de Hierro a Oro
-item.ironchest:GOLDDIAMOND.name=Mejora de Cofre de Oro a Diamante
-item.ironchest:COPPERSILVER.name=Mejora de Cofre de Cobre a Plata
-item.ironchest:SILVERGOLD.name=Mejora de Cofre de Plata a Oro
-item.ironchest:COPPERIRON.name=Mejora de Cofre de Cobre a Hierro
-item.ironchest:DIAMONDCRYSTAL.name=Mejora de Cofre de Diamante a Cristal
-item.ironchest:WOODIRON.name=Mejora de Cofre de Madera a Hierro
-item.ironchest:WOODCOPPER.name=Mejora de Cofre de Madera a Cobre
-item.ironchest:DIAMONDOBSIDIAN.name=Mejora de Cofre de Diamante a Obsidiana
+tile.ironchest.chest.iron.name=Cofre de Hierro
+tile.ironchest.chest.gold.name=Cofre de Oro
+tile.ironchest.chest.diamond.name=Cofre de Diamante
+tile.ironchest.chest.copper.name=Cofre de Cobre
+tile.ironchest.chest.silver.name=Cofre de Plata
+tile.ironchest.chest.crystal.name=Cofre de Cristal
+tile.ironchest.chest.obsidian.name=Cofre de Obsidiana
+
+item.ironchest.chest.iron_gold.name=Mejora de Cofre de Hierro a Oro
+item.ironchest.chest.gold_diamond.name=Mejora de Cofre de Oro a Diamante
+item.ironchest.chest.copper_silver.name=Mejora de Cofre de Cobre a Plata
+item.ironchest.chest.silver_gold.name=Mejora de Cofre de Plata a Oro
+item.ironchest.chest.copper_iron.name=Mejora de Cofre de Cobre a Hierro
+item.ironchest.chest.diamond_crystal.name=Mejora de Cofre de Diamante a Cristal
+item.ironchest.chest.wood_iron.name=Mejora de Cofre de Madera a Hierro
+item.ironchest.chest.wood_copper.name=Mejora de Cofre de Madera a Cobre
+item.ironchest.chest.diamond_obsidian.name=Mejora de Cofre de Diamante a Obsidiana
diff --git a/src/main/resources/assets/ironchest/lang/et_EE.lang b/src/main/resources/assets/ironchest/lang/et_EE.lang
index c0b3776..a52d091 100755
--- a/src/main/resources/assets/ironchest/lang/et_EE.lang
+++ b/src/main/resources/assets/ironchest/lang/et_EE.lang
@@ -1,18 +1,22 @@
-tile.ironchest:IRON.name=Raudkirst
-tile.ironchest:GOLD.name=Kuldkirst
-tile.ironchest:DIAMOND.name=Teemantkirst
-tile.ironchest:COPPER.name=Vaskkirst
-tile.ironchest:SILVER.name=Hõbekirst
-tile.ironchest:CRYSTAL.name=Kristallkirst
-tile.ironchest:OBSIDIAN.name=Obsidiaankirst
-tile.ironchest:DIRTCHEST9000.name=Muldkirst 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Raudkirst kuld kirstuks
-item.ironchest:GOLDDIAMOND.name=Kuldkirst teemandist kirstuks
-item.ironchest:COPPERSILVER.name=Vaskkirst hõbedast kirstuks
-item.ironchest:SILVERGOLD.name=Hõbekirst kullast kirstuks
-item.ironchest:COPPERIRON.name=Vaskkirst rauast kirstuks
-item.ironchest:DIAMONDCRYSTAL.name=Teemantkirst kristallist kirstuks
-item.ironchest:WOODIRON.name=Puukirst rauast kirstuks
-item.ironchest:WOODCOPPER.name=Puukirst vasest kirstuks
-item.ironchest:DIAMONDOBSIDIAN.name=Teemantkirst obsidiaanist kirstuks
+tile.ironchest.chest.iron.name=Raudkirst
+tile.ironchest.chest.gold.name=Kuldkirst
+tile.ironchest.chest.diamond.name=Teemantkirst
+tile.ironchest.chest.copper.name=Vaskkirst
+tile.ironchest.chest.silver.name=Hõbekirst
+tile.ironchest.chest.crystal.name=Kristallkirst
+tile.ironchest.chest.obsidian.name=Obsidiaankirst
+tile.ironchest.chest.dirtchest9000.name=Muldkirst 9000!
+
+item.ironchest.chest.iron_gold.name=Raudkirst kuld kirstuks
+item.ironchest.chest.gold_diamond.name=Kuldkirst teemandist kirstuks
+item.ironchest.chest.copper_silver.name=Vaskkirst hõbedast kirstuks
+item.ironchest.chest.silver_gold.name=Hõbekirst kullast kirstuks
+item.ironchest.chest.copper_iron.name=Vaskkirst rauast kirstuks
+item.ironchest.chest.diamond_crystal.name=Teemantkirst kristallist kirstuks
+item.ironchest.chest.wood_iron.name=Puukirst rauast kirstuks
+item.ironchest.chest.wood_copper.name=Puukirst vasest kirstuks
+item.ironchest.chest.diamond_obsidian.name=Teemantkirst obsidiaanist kirstuks
diff --git a/src/main/resources/assets/ironchest/lang/fr_CA.lang b/src/main/resources/assets/ironchest/lang/fr_CA.lang
index d609513..1223320 100644
--- a/src/main/resources/assets/ironchest/lang/fr_CA.lang
+++ b/src/main/resources/assets/ironchest/lang/fr_CA.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Coffre en fer
-tile.ironchest:GOLD.name=Coffre en or
-tile.ironchest:DIAMOND.name=Coffre en diamant
-tile.ironchest:COPPER.name=Coffre en cuivre
-tile.ironchest:SILVER.name=Coffre en argent
-tile.ironchest:CRYSTAL.name=Coffre en cristal
-tile.ironchest:OBSIDIAN.name=Coffre en obsidienne
-tile.ironchest:DIRTCHEST9000.name=DirtChest 9000 !
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Upgrade de coffre en fer à l'or
-item.ironchest:GOLDDIAMOND.name=Upgrade de coffre en or au diamant
-item.ironchest:COPPERSILVER.name=Upgrade de coffre en cuivre à l'argent
-item.ironchest:SILVERGOLD.name=Upgrade de coffre en argent à l'or
-item.ironchest:COPPERIRON.name=Upgrade de coffre en cuivre au fer
-item.ironchest:DIAMONDCRYSTAL.name=Upgrade de coffre en diamant au cristal
-item.ironchest:WOODIRON.name=Upgrade de coffre en bois au fer
-item.ironchest:WOODCOPPER.name=Upgrade de coffre en bois au cuivre
-item.ironchest:DIAMONDOBSIDIAN.name=Upgrade de coffre en diamant à l'obsidienne
+tile.ironchest.chest.iron.name=Coffre en fer
+tile.ironchest.chest.gold.name=Coffre en or
+tile.ironchest.chest.diamond.name=Coffre en diamant
+tile.ironchest.chest.copper.name=Coffre en cuivre
+tile.ironchest.chest.silver.name=Coffre en argent
+tile.ironchest.chest.crystal.name=Coffre en cristal
+tile.ironchest.chest.obsidian.name=Coffre en obsidienne
+tile.ironchest.chest.dirtchest9000.name=DirtChest 9000 !
-book.ironchest:dirtchest9000.title=Comment utiliser votre DirtChest 9000 !
-book.ironchest:dirtchest9000.page1=Bienvenue à votre nouveau DirtChest 9000 ! Nous espérons que vous apprécierez les innombrables années heureuses à emmagasiner votre stack de terre dans notre utilitaire de stockage.
-book.ironchest:dirtchest9000.page2=Utilisation : insérez tout simplement le stack de terre de votre choix dans la case hautement réceptive et appréciez l'immense commodité d'avoir cette terre disponible à portée de la main, à tout moment où vous passez devant ce coffre !
-book.ironchest:dirtchest9000.page3=Nous espérons que vous avez apprécié faire la critique de ce manuel d'instruction, et espérons que vous allez considérer utiliser nos produits dans le futur ! Nos meilleures salutations, les rédacteurs du manuel DirtChest 9000 inc.
-book.ironchest:dirtchest9000.page4=Garantie : ce produit n'a aucune garantie quelconque. Votre terre peut ne pas être stockée, elle peut se fondre lentement dans l'environnement, ou encore, elle peut ne rien faire du tout.
-book.ironchest:dirtchest9000.page5=DirtChest 9000 respecte l'environnement. Veuillez disposer de ce guide de manière responsable, et quoique vous fassiez, ne le balancez juste pas dans de la lave. Nous en serions attristés.
+item.ironchest.chest.iron_gold.name=Upgrade de coffre en fer à l'or
+item.ironchest.chest.gold_diamond.name=Upgrade de coffre en or au diamant
+item.ironchest.chest.copper_silver.name=Upgrade de coffre en cuivre à l'argent
+item.ironchest.chest.silver_gold.name=Upgrade de coffre en argent à l'or
+item.ironchest.chest.copper_iron.name=Upgrade de coffre en cuivre au fer
+item.ironchest.chest.diamond_crystal.name=Upgrade de coffre en diamant au cristal
+item.ironchest.chest.wood_iron.name=Upgrade de coffre en bois au fer
+item.ironchest.chest.wood_copper.name=Upgrade de coffre en bois au cuivre
+item.ironchest.chest.diamond_obsidian.name=Upgrade de coffre en diamant à l'obsidienne
+
+book.ironchest.dirtchest9000.title=Comment utiliser votre DirtChest 9000 !
+book.ironchest.dirtchest9000.page1=Bienvenue à votre nouveau DirtChest 9000 ! Nous espérons que vous apprécierez les innombrables années heureuses à emmagasiner votre stack de terre dans notre utilitaire de stockage.
+book.ironchest.dirtchest9000.page2=Utilisation : insérez tout simplement le stack de terre de votre choix dans la case hautement réceptive et appréciez l'immense commodité d'avoir cette terre disponible à portée de la main, à tout moment où vous passez devant ce coffre !
+book.ironchest.dirtchest9000.page3=Nous espérons que vous avez apprécié faire la critique de ce manuel d'instruction, et espérons que vous allez considérer utiliser nos produits dans le futur ! Nos meilleures salutations, les rédacteurs du manuel DirtChest 9000 inc.
+book.ironchest.dirtchest9000.page4=Garantie : ce produit n'a aucune garantie quelconque. Votre terre peut ne pas être stockée, elle peut se fondre lentement dans l'environnement, ou encore, elle peut ne rien faire du tout.
+book.ironchest.dirtchest9000.page5=DirtChest 9000 respecte l'environnement. Veuillez disposer de ce guide de manière responsable, et quoique vous fassiez, ne le balancez juste pas dans de la lave. Nous en serions attristés.
diff --git a/src/main/resources/assets/ironchest/lang/fr_FR.lang b/src/main/resources/assets/ironchest/lang/fr_FR.lang
index c1714d6..5e66670 100755
--- a/src/main/resources/assets/ironchest/lang/fr_FR.lang
+++ b/src/main/resources/assets/ironchest/lang/fr_FR.lang
@@ -1,19 +1,21 @@
-#fr_FR translated by robin4002
+################
+# Chests #
+################
-tile.ironchest:IRON.name=Coffre en Fer
-tile.ironchest:GOLD.name=Coffre en Or
-tile.ironchest:DIAMOND.name=Coffre en Diamant
-tile.ironchest:COPPER.name=Coffre en Cuivre
-tile.ironchest:SILVER.name=Coffre en Argent
-tile.ironchest:CRYSTAL.name=Coffre en Cristal
-tile.ironchest:OBSIDIAN.name=Coffre en Obsidienne
+tile.ironchest.chest.iron.name=Coffre en Fer
+tile.ironchest.chest.gold.name=Coffre en Or
+tile.ironchest.chest.diamond.name=Coffre en Diamant
+tile.ironchest.chest.copper.name=Coffre en Cuivre
+tile.ironchest.chest.silver.name=Coffre en Argent
+tile.ironchest.chest.crystal.name=Coffre en Cristal
+tile.ironchest.chest.obsidian.name=Coffre en Obsidienne
-item.ironchest:IRONGOLD.name=Amélioration de coffre en fer à or
-item.ironchest:GOLDDIAMOND.name=Amélioration de coffre en or à diamant
-item.ironchest:COPPERSILVER.name=Amélioration de coffre en cuivre à argent
-item.ironchest:SILVERGOLD.name=Amélioration de coffre en argent à or
-item.ironchest:COPPERIRON.name=Amélioration de coffre en cuivre à fer
-item.ironchest:DIAMONDCRYSTAL.name=Amélioration de coffre en diamant à crital
-item.ironchest:WOODIRON.name=Amélioration de coffre en bois à fer
-item.ironchest:WOODCOPPER.name=Amélioration de coffre en bois à cuivre
-item.ironchest:DIAMONDOBSIDIAN.name=Amélioration de coffre en diamant à obsidienne
+item.ironchest.chest.iron_gold.name=Amélioration de coffre en fer à or
+item.ironchest.chest.gold_diamond.name=Amélioration de coffre en or à diamant
+item.ironchest.chest.copper_silver.name=Amélioration de coffre en cuivre à argent
+item.ironchest.chest.silver_gold.name=Amélioration de coffre en argent à or
+item.ironchest.chest.copper_iron.name=Amélioration de coffre en cuivre à fer
+item.ironchest.chest.diamond_crystal.name=Amélioration de coffre en diamant à crital
+item.ironchest.chest.wood_iron.name=Amélioration de coffre en bois à fer
+item.ironchest.chest.wood_copper.name=Amélioration de coffre en bois à cuivre
+item.ironchest.chest.diamond_obsidian.name=Amélioration de coffre en diamant à obsidienne
diff --git a/src/main/resources/assets/ironchest/lang/hu_HU.lang b/src/main/resources/assets/ironchest/lang/hu_HU.lang
index 88d82d8..df8f085 100644
--- a/src/main/resources/assets/ironchest/lang/hu_HU.lang
+++ b/src/main/resources/assets/ironchest/lang/hu_HU.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Vas láda
-tile.ironchest:GOLD.name=Arany láda
-tile.ironchest:DIAMOND.name=Gyémánt láda
-tile.ironchest:COPPER.name=Réz láda
-tile.ironchest:SILVER.name=Ezüst láda
-tile.ironchest:CRYSTAL.name=Kristály láda
-tile.ironchest:OBSIDIAN.name=Obszidián láda
-tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Vasról arany ládára bővítő
-item.ironchest:GOLDDIAMOND.name=Aranyról gyémánt ládára bővítő
-item.ironchest:COPPERSILVER.name=Rézről ezüst ládára bővítő
-item.ironchest:SILVERGOLD.name=Ezüstről arany ládára bővítő
-item.ironchest:COPPERIRON.name=Részről vas ládára bővítő
-item.ironchest:DIAMONDCRYSTAL.name=Gyémántról kristály ládára bővítő
-item.ironchest:WOODIRON.name=Normálról (fa) vas ládára bővítő
-item.ironchest:WOODCOPPER.name=Normálról (fa) réz ládára bővítő
-item.ironchest:DIAMONDOBSIDIAN.name=Gyémántról obszidián ládára bővítő
+tile.ironchest.chest.iron.name=Vas láda
+tile.ironchest.chest.gold.name=Arany láda
+tile.ironchest.chest.diamond.name=Gyémánt láda
+tile.ironchest.chest.copper.name=Réz láda
+tile.ironchest.chest.silver.name=Ezüst láda
+tile.ironchest.chest.crystal.name=Kristály láda
+tile.ironchest.chest.obsidian.name=Obszidián láda
+tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
-book.ironchest:dirtchest9000.title=Hogyan használd a DirtChest 9000-et!
-book.ironchest:dirtchest9000.page1=Üdvözöl az új DirtChest 9000! Reméljük sok boldog évig élvezni fogod egy halom föld tárólásának eme vadiúj módját.
-book.ironchest:dirtchest9000.page2=Használat: egyszerűen pakolj bele egy halom földet eme különlegesen érzékeny tárolóegységbe és élvezd a kényelmet, hogy egy halom föld mindig rendelkezésedre fog állni, bármikor nyitod is ki ezt a ládát.
-book.ironchest:dirtchest9000.page3=Reméljük, hogy élvezted eme kézikönyv olvasgatását, és megfontolod más termékünk használatát is a jövöben. Üdvözlettel: A DirtChest 9000 kézikönyv írói.
-book.ironchest:dirtchest9000.page4=Garancia: Ez a termék nem rendelkezik semmiféle garanciával. A belepakolt föld lehet, hogy nem is kerül tárolásra, elszivárog a környezetbe, vagy az is lehetséges hogy nem történik vele semmi.
-book.ironchest:dirtchest9000.page5=A DirtChest 9000 környezetbarát termék. Kérjül fokozottan ügyelj erre a kézikönyv megsemmisitésekor, és semmiképpen se dobd lávába. Akkor ugyanis nagyon szomorúak leszünk.
\ No newline at end of file
+item.ironchest.chest.iron_gold.name=Vasról arany ládára bővítő
+item.ironchest.chest.gold_diamond.name=Aranyról gyémánt ládára bővítő
+item.ironchest.chest.copper_silver.name=Rézről ezüst ládára bővítő
+item.ironchest.chest.silver_gold.name=Ezüstről arany ládára bővítő
+item.ironchest.chest.copper_iron.name=Részről vas ládára bővítő
+item.ironchest.chest.diamond_crystal.name=Gyémántról kristály ládára bővítő
+item.ironchest.chest.wood_iron.name=Normálról (fa) vas ládára bővítő
+item.ironchest.chest.wood_copper.name=Normálról (fa) réz ládára bővítő
+item.ironchest.chest.diamond_obsidian.name=Gyémántról obszidián ládára bővítő
+
+book.ironchest.dirtchest9000.title=Hogyan használd a DirtChest 9000-et!
+book.ironchest.dirtchest9000.page1=Üdvözöl az új DirtChest 9000! Reméljük sok boldog évig élvezni fogod egy halom föld tárólásának eme vadiúj módját.
+book.ironchest.dirtchest9000.page2=Használat: egyszerűen pakolj bele egy halom földet eme különlegesen érzékeny tárolóegységbe és élvezd a kényelmet, hogy egy halom föld mindig rendelkezésedre fog állni, bármikor nyitod is ki ezt a ládát.
+book.ironchest.dirtchest9000.page3=Reméljük, hogy élvezted eme kézikönyv olvasgatását, és megfontolod más termékünk használatát is a jövöben. Üdvözlettel: A DirtChest 9000 kézikönyv írói.
+book.ironchest.dirtchest9000.page4=Garancia: Ez a termék nem rendelkezik semmiféle garanciával. A belepakolt föld lehet, hogy nem is kerül tárolásra, elszivárog a környezetbe, vagy az is lehetséges hogy nem történik vele semmi.
+book.ironchest.dirtchest9000.page5=A DirtChest 9000 környezetbarát termék. Kérjül fokozottan ügyelj erre a kézikönyv megsemmisitésekor, és semmiképpen se dobd lávába. Akkor ugyanis nagyon szomorúak leszünk.
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/lang/it_IT.lang b/src/main/resources/assets/ironchest/lang/it_IT.lang
index fc3d82c..610d317 100755
--- a/src/main/resources/assets/ironchest/lang/it_IT.lang
+++ b/src/main/resources/assets/ironchest/lang/it_IT.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Baule di ferro
-tile.ironchest:GOLD.name=Baule d'oro
-tile.ironchest:DIAMOND.name=Baule di diamante
-tile.ironchest:COPPER.name=Baule di rame
-tile.ironchest:SILVER.name=Baule d'argento
-tile.ironchest:CRYSTAL.name=Baule di cristallo
-tile.ironchest:OBSIDIAN.name=Baule di ossidiana
-tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Potenziamento da ferro a oro
-item.ironchest:GOLDDIAMOND.name=Potenziamento da oro a diamante
-item.ironchest:COPPERSILVER.name=Potenziamento da rame a argento
-item.ironchest:SILVERGOLD.name=Potenziamento da argento a oro
-item.ironchest:COPPERIRON.name=Potenziamento da rame a ferro
-item.ironchest:DIAMONDCRYSTAL.name=Potenziamento da diamante a cristallo
-item.ironchest:WOODIRON.name=Potenziamento da legno a ferro
-item.ironchest:WOODCOPPER.name=Potenziamento da legno a rame
-item.ironchest:DIAMONDOBSIDIAN.name=Potenziamento da diamante a ossidiana
+tile.ironchest.chest.iron.name=Baule di ferro
+tile.ironchest.chest.gold.name=Baule d'oro
+tile.ironchest.chest.diamond.name=Baule di diamante
+tile.ironchest.chest.copper.name=Baule di rame
+tile.ironchest.chest.silver.name=Baule d'argento
+tile.ironchest.chest.crystal.name=Baule di cristallo
+tile.ironchest.chest.obsidian.name=Baule di ossidiana
+tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
-book.ironchest:dirtchest9000.title=Come usare la tua DirtChest 9000!
-book.ironchest:dirtchest9000.page1=Benvenuto alla tua nuova DirtChest 9000! Speriamo che possiate godere di molti anni felici in cui imagazzinate grandi quantità di terra nei nostri contenitori.
-book.ironchest:dirtchest9000.page2=Uso: inserisci uno stack di terra nello slot e goditi la grande convenienza di avere della terra a tua disposizione ogni volta che passi vicino alla cassa!
-book.ironchest:dirtchest9000.page3=Speriamo che questo manuale vi sia stato utile, e speriamo che prenderete in considerazione usare i nostri prodotti in futuro ! I migliori saluti, i scrittori del manuale per la DirtChest 9000.
-book.ironchest:dirtchest9000.page4=Garanzia: Questo prodotto non ha nessuna garanzia di alcun tipo. La tua terra potrebbe non essere imagazzinata, potrebbe lentamente fuoriuscire nell'ambiente, oppure, non farà niente.
-book.ironchest:dirtchest9000.page5=La DirtChest 9000 è amico dell'ambiente. Per favore conservate questo libro in un modo responsabile, e non buttatelo nella lava come un oggetto qualsiasi. Saremmo veramente tristi.
+item.ironchest.chest.iron_gold.name=Potenziamento da ferro a oro
+item.ironchest.chest.gold_diamond.name=Potenziamento da oro a diamante
+item.ironchest.chest.copper_silver.name=Potenziamento da rame a argento
+item.ironchest.chest.silver_gold.name=Potenziamento da argento a oro
+item.ironchest.chest.copper_iron.name=Potenziamento da rame a ferro
+item.ironchest.chest.diamond_crystal.name=Potenziamento da diamante a cristallo
+item.ironchest.chest.wood_iron.name=Potenziamento da legno a ferro
+item.ironchest.chest.wood_copper.name=Potenziamento da legno a rame
+item.ironchest.chest.diamond_obsidian.name=Potenziamento da diamante a ossidiana
+
+book.ironchest.dirtchest9000.title=Come usare la tua DirtChest 9000!
+book.ironchest.dirtchest9000.page1=Benvenuto alla tua nuova DirtChest 9000! Speriamo che possiate godere di molti anni felici in cui imagazzinate grandi quantità di terra nei nostri contenitori.
+book.ironchest.dirtchest9000.page2=Uso: inserisci uno stack di terra nello slot e goditi la grande convenienza di avere della terra a tua disposizione ogni volta che passi vicino alla cassa!
+book.ironchest.dirtchest9000.page3=Speriamo che questo manuale vi sia stato utile, e speriamo che prenderete in considerazione usare i nostri prodotti in futuro ! I migliori saluti, i scrittori del manuale per la DirtChest 9000.
+book.ironchest.dirtchest9000.page4=Garanzia: Questo prodotto non ha nessuna garanzia di alcun tipo. La tua terra potrebbe non essere imagazzinata, potrebbe lentamente fuoriuscire nell'ambiente, oppure, non farà niente.
+book.ironchest.dirtchest9000.page5=La DirtChest 9000 è amico dell'ambiente. Per favore conservate questo libro in un modo responsabile, e non buttatelo nella lava come un oggetto qualsiasi. Saremmo veramente tristi.
diff --git a/src/main/resources/assets/ironchest/lang/ko_KR.lang b/src/main/resources/assets/ironchest/lang/ko_KR.lang
index 837ae58..7f475e7 100755
--- a/src/main/resources/assets/ironchest/lang/ko_KR.lang
+++ b/src/main/resources/assets/ironchest/lang/ko_KR.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=철 상자
-tile.ironchest:GOLD.name=금 상자
-tile.ironchest:DIAMOND.name=다이아몬드 상자
-tile.ironchest:COPPER.name=구리 상자
-tile.ironchest:SILVER.name=은 상자
-tile.ironchest:CRYSTAL.name=수정 상자
-tile.ironchest:OBSIDIAN.name=흑요석 상자
-tile.ironchest:DIRTCHEST9000.name=흙 상자 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=철 상자를 금 상자로 업그레이드
-item.ironchest:GOLDDIAMOND.name=금 상자를 다이아몬드 상자로 업그레이드
-item.ironchest:COPPERSILVER.name=구리 상자를 은 상자로 업그레이드
-item.ironchest:SILVERGOLD.name=은 상자를 금 상자로 업그레이드
-item.ironchest:COPPERIRON.name=구리 상자를 철 상자로 업그레이드
-item.ironchest:DIAMONDCRYSTAL.name=다이아몬드 상자를 수정 상자로 업그레이드
-item.ironchest:WOODIRON.name=나무 상자를 철 상자로 업그레이드
-item.ironchest:WOODCOPPER.name=나무 상자를 구리 상자로 업그레이드
-item.ironchest:DIAMONDOBSIDIAN.name=다이아몬드 상자를 흑요석 상자로 업그레이드
+tile.ironchest.chest.iron.name=철 상자
+tile.ironchest.chest.gold.name=금 상자
+tile.ironchest.chest.diamond.name=다이아몬드 상자
+tile.ironchest.chest.copper.name=구리 상자
+tile.ironchest.chest.silver.name=은 상자
+tile.ironchest.chest.crystal.name=수정 상자
+tile.ironchest.chest.obsidian.name=흑요석 상자
+tile.ironchest.chest.dirtchest9000.name=흙 상자 9000!
-book.ironchest:dirtchest9000.title=흙 상자 9000을 사용하는 방법!
-book.ironchest:dirtchest9000.page1=새로운 흙 상자 9000을 사용하게 되신 것을 환영합니다! 우리는 당신이 이 저장 도구에서 흙들을 많은 해 동안 행복하게 저장하기를 기원합니다.
+item.ironchest.chest.iron_gold.name=철 상자를 금 상자로 업그레이드
+item.ironchest.chest.gold_diamond.name=금 상자를 다이아몬드 상자로 업그레이드
+item.ironchest.chest.copper_silver.name=구리 상자를 은 상자로 업그레이드
+item.ironchest.chest.silver_gold.name=은 상자를 금 상자로 업그레이드
+item.ironchest.chest.copper_iron.name=구리 상자를 철 상자로 업그레이드
+item.ironchest.chest.diamond_crystal.name=다이아몬드 상자를 수정 상자로 업그레이드
+item.ironchest.chest.wood_iron.name=나무 상자를 철 상자로 업그레이드
+item.ironchest.chest.wood_copper.name=나무 상자를 구리 상자로 업그레이드
+item.ironchest.chest.diamond_obsidian.name=다이아몬드 상자를 흑요석 상자로 업그레이드
+
+book.ironchest.dirtchest9000.title=흙 상자 9000을 사용하는 방법!
+book.ironchest.dirtchest9000.page1=새로운 흙 상자 9000을 사용하게 되신 것을 환영합니다! 우리는 당신이 이 저장 도구에서 흙들을 많은 해 동안 행복하게 저장하기를 기원합니다.
사용법: 단순히 흙 뭉치들을 아이템 슬롯에 넣고 이 상자를 지나갈 때마다 언제나 당신에게 제공되어지는 흙들의 편리함을 누리세요!
-book.ironchest:dirtchest9000.page3=우리는 당신이 이 사용설명서를 즐겁게 읽었고, 나중에 이 제품을 사용하기를 바랍니다! 흙 상자 9000 매뉴얼
-book.ironchest:dirtchest9000.page4=주의: 이 제품에는 어떤 종류의 보증도 하지 않습니다 당신의 흙들은 저장되지 않을 수도 있습니다. 그러면 이 흙 상자는 천천히 환경 속으로 돌아가거나, 혹은 아무것도 하지 않을 것입니다.
-book.ironchest:dirtchest9000.page5=흙 상자 9000은 환경 친화적입니다. 가이드북의 처분에는 책임이 따릅니다, 그러니 어떠한 경우라도 용암에 버리지 마세요. 우리는 매우 슬플 것입니다.
+book.ironchest.dirtchest9000.page3=우리는 당신이 이 사용설명서를 즐겁게 읽었고, 나중에 이 제품을 사용하기를 바랍니다! 흙 상자 9000 매뉴얼
+book.ironchest.dirtchest9000.page4=주의: 이 제품에는 어떤 종류의 보증도 하지 않습니다 당신의 흙들은 저장되지 않을 수도 있습니다. 그러면 이 흙 상자는 천천히 환경 속으로 돌아가거나, 혹은 아무것도 하지 않을 것입니다.
+book.ironchest.dirtchest9000.page5=흙 상자 9000은 환경 친화적입니다. 가이드북의 처분에는 책임이 따릅니다, 그러니 어떠한 경우라도 용암에 버리지 마세요. 우리는 매우 슬플 것입니다.
diff --git a/src/main/resources/assets/ironchest/lang/nb_NO.lang b/src/main/resources/assets/ironchest/lang/nb_NO.lang
index c5beb18..5c823e6 100755
--- a/src/main/resources/assets/ironchest/lang/nb_NO.lang
+++ b/src/main/resources/assets/ironchest/lang/nb_NO.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Jernkiste
-tile.ironchest:GOLD.name=Gullkiste
-tile.ironchest:DIAMOND.name=Diamantkiste
-tile.ironchest:COPPER.name=Kobberkiste
-tile.ironchest:SILVER.name=Sølvkiste
-tile.ironchest:CRYSTAL.name=Krystallkiste
-tile.ironchest:OBSIDIAN.name=Obsidiankiste
-tile.ironchest:DIRTCHEST9000.name=JordKiste 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Jern til Gull Kisteoppgradering
-item.ironchest:GOLDDIAMOND.name=Gull til Diamant Kisteoppgradering
-item.ironchest:COPPERSILVER.name=Kobber til Sølv Kisteoppgradering
-item.ironchest:SILVERGOLD.name=Sølv til Gull Kisteoppgradering
-item.ironchest:COPPERIRON.name=Kobber til Jern Kisteoppgradering
-item.ironchest:DIAMONDCRYSTAL.name=Diamant til Krystall Kisteoppgradering
-item.ironchest:WOODIRON.name=Tre til Jern Kisteoppgradering
-item.ironchest:WOODCOPPER.name=Tre til Kobber Kisteoppgradering
-item.ironchest:DIAMONDOBSIDIAN.name=Diamant til Obsidian Kisteoppgradering
+tile.ironchest.chest.iron.name=Jernkiste
+tile.ironchest.chest.gold.name=Gullkiste
+tile.ironchest.chest.diamond.name=Diamantkiste
+tile.ironchest.chest.copper.name=Kobberkiste
+tile.ironchest.chest.silver.name=Sølvkiste
+tile.ironchest.chest.crystal.name=Krystallkiste
+tile.ironchest.chest.obsidian.name=Obsidiankiste
+tile.ironchest.chest.dirtchest9000.name=JordKiste 9000!
-book.ironchest:dirtchest9000.title=Hvordan bruker din JordKiste 9000!
-book.ironchest:dirtchest9000.page1=Velkommen til din nye JordKiste9000! Vi håper du vil nyte mange lykkelige år med lagring av din stabel av jord i vå lager verktøy.
-book.ironchest:dirtchest9000.page2=Bruk: bare å sette bunken med jord av ditt valg i den svært mottakelige sporet og nyte den store fordelen med åa den jorden tilgjengelig for deg, nådu passerer denne kisten!
-book.ironchest:dirtchest9000.page3=Vi håper du har hatt en god fornøyelse gjennom denne bruksanvisningen, og hår du vil vurdere å bruke vå produkter i fremtiden! Vennlig hilsen, JordKiste9000 manual forfattere innarbeidet.
-book.ironchest:dirtchest9000.page4=Garanti: Dette produktet har ingen garantier av noe slag. Din jord kan ikke lagres, det kan sakte lekke ut i miljøet, eller alternativt, kan det ikke gjøre noe i det hele tatt.
-book.ironchest:dirtchest9000.page5=JordKiste 9000 er snill mot miljøet. Vennligst ta hånd om denne veileder boken ansvarlig, og hva du enn gjør ikke kast den inn i noe lav. Vi ville bli veldig trist.
+item.ironchest.chest.iron_gold.name=Jern til Gull Kisteoppgradering
+item.ironchest.chest.gold_diamond.name=Gull til Diamant Kisteoppgradering
+item.ironchest.chest.copper_silver.name=Kobber til Sølv Kisteoppgradering
+item.ironchest.chest.silver_gold.name=Sølv til Gull Kisteoppgradering
+item.ironchest.chest.copper_iron.name=Kobber til Jern Kisteoppgradering
+item.ironchest.chest.diamond_crystal.name=Diamant til Krystall Kisteoppgradering
+item.ironchest.chest.wood_iron.name=Tre til Jern Kisteoppgradering
+item.ironchest.chest.wood_copper.name=Tre til Kobber Kisteoppgradering
+item.ironchest.chest.diamond_obsidian.name=Diamant til Obsidian Kisteoppgradering
+
+book.ironchest.dirtchest9000.title=Hvordan bruker din JordKiste 9000!
+book.ironchest.dirtchest9000.page1=Velkommen til din nye JordKiste9000! Vi håper du vil nyte mange lykkelige år med lagring av din stabel av jord i vå lager verktøy.
+book.ironchest.dirtchest9000.page2=Bruk: bare å sette bunken med jord av ditt valg i den svært mottakelige sporet og nyte den store fordelen med åa den jorden tilgjengelig for deg, nådu passerer denne kisten!
+book.ironchest.dirtchest9000.page3=Vi håper du har hatt en god fornøyelse gjennom denne bruksanvisningen, og hår du vil vurdere å bruke vå produkter i fremtiden! Vennlig hilsen, JordKiste9000 manual forfattere innarbeidet.
+book.ironchest.dirtchest9000.page4=Garanti: Dette produktet har ingen garantier av noe slag. Din jord kan ikke lagres, det kan sakte lekke ut i miljøet, eller alternativt, kan det ikke gjøre noe i det hele tatt.
+book.ironchest.dirtchest9000.page5=JordKiste 9000 er snill mot miljøet. Vennligst ta hånd om denne veileder boken ansvarlig, og hva du enn gjør ikke kast den inn i noe lav. Vi ville bli veldig trist.
diff --git a/src/main/resources/assets/ironchest/lang/nl_NL.lang b/src/main/resources/assets/ironchest/lang/nl_NL.lang
index fb3a2f5..343148f 100755
--- a/src/main/resources/assets/ironchest/lang/nl_NL.lang
+++ b/src/main/resources/assets/ironchest/lang/nl_NL.lang
@@ -1,25 +1,25 @@
-tile.ironchest:IRON.name=Ijzeren Kist
-tile.ironchest:GOLD.name=Gouden Kist
-tile.ironchest:DIAMOND.name=Diamanten Kist
-tile.ironchest:COPPER.name=Koperen Kist
-tile.ironchest:SILVER.name=Zilveren Kist
-tile.ironchest:CRYSTAL.name=Kristallen Kist
-tile.ironchest:OBSIDIAN.name=Obsidiaanen Kist
-tile.ironchest:DIRTCHEST9000.name=Aarden Kist 9000!
+tile.ironchest.chest.iron.name=Ijzeren Kist
+tile.ironchest.chest.gold.name=Gouden Kist
+tile.ironchest.chest.diamond.name=Diamanten Kist
+tile.ironchest.chest.copper.name=Koperen Kist
+tile.ironchest.chest.silver.name=Zilveren Kist
+tile.ironchest.chest.crystal.name=Kristallen Kist
+tile.ironchest.chest.obsidian.name=Obsidiaanen Kist
+tile.ironchest.chest.dirtchest9000.name=Aarden Kist 9000!
-item.ironchest:IRONGOLD.name=Ijzeren naar Gouden Kist Transformatie
-item.ironchest:GOLDDIAMOND.name=Gouden naar Diamanten Kist Transformatie
-item.ironchest:COPPERSILVER.name=Koperen naar Zilveren Kist Transformatie
-item.ironchest:SILVERGOLD.name=Zilveren naar Gouden Kist Transformatie
-item.ironchest:COPPERIRON.name=Koperen naar Ijzeren Kist Transformatie
-item.ironchest:DIAMONDCRYSTAL.name=Diamanten naar Kristallen Kist Transformatie
-item.ironchest:WOODIRON.name=Houten naar Ijzeren Kist Transformatie
-item.ironchest:WOODCOPPER.name=Houten naar Koperen Kist Transformatie
-item.ironchest:DIAMONDOBSIDIAN.name=Diamanten naar Obsidiaanen Kist Transformatie
+item.ironchest.chest.iron_gold.name=Ijzeren naar Gouden Kist Transformatie
+item.ironchest.chest.gold_diamond.name=Gouden naar Diamanten Kist Transformatie
+item.ironchest.chest.copper_silver.name=Koperen naar Zilveren Kist Transformatie
+item.ironchest.chest.silver_gold.name=Zilveren naar Gouden Kist Transformatie
+item.ironchest.chest.copper_iron.name=Koperen naar Ijzeren Kist Transformatie
+item.ironchest.chest.diamond_crystal.name=Diamanten naar Kristallen Kist Transformatie
+item.ironchest.chest.wood_iron.name=Houten naar Ijzeren Kist Transformatie
+item.ironchest.chest.wood_copper.name=Houten naar Koperen Kist Transformatie
+item.ironchest.chest.diamond_obsidian.name=Diamanten naar Obsidiaanen Kist Transformatie
-book.ironchest:dirtchest9000.title=Hoe gebruik je uw Aarden Kist 9000!
-book.ironchest:dirtchest9000.page1=Welkom voor uw nieuwe Aarden Kist 9000! We hopen dat je veel geluk zal beleven om uw hoop aarde te bewaren in onze stokeer faciliteit.
-book.ironchest:dirtchest9000.page2=Gebruik: Plaats simpelweg uw hoop aarde naar uw keuze in de zeer ontvankelijke gleuf en geniet van de geriefelijkheid om dat hoop aarde altijd beschikbaar tot u te hebben, wanneer dan ook!
-book.ironchest:dirtchest9000.page3=We hopen dat u heeft genoten om deze handleiding te lezen en we hopen dat u overweegt om onze producten in de toekomst te gebruiken! Met vriendelijke groeten, De Aarden Kist 9000 Handleiding Auteurs.
-book.ironchest:dirtchest9000.page4=Garantie: Deze product biedt geen enkele garantie. Uw aarde kan mogenlijk niet gestockeerd worden, het kan langzaam verdampen of het kan ook helemaal niks doen.
-book.ironchest:dirtchest9000.page5=Aarden Kist 9000 is mileuvriendelijk. Gelieve deze handleiding verantwoordlijk te ontdoen en gooi het niet zomaar in wat lava. We zouden zeer verdrietig zijn.
+book.ironchest.dirtchest9000.title=Hoe gebruik je uw Aarden Kist 9000!
+book.ironchest.dirtchest9000.page1=Welkom voor uw nieuwe Aarden Kist 9000! We hopen dat je veel geluk zal beleven om uw hoop aarde te bewaren in onze stokeer faciliteit.
+book.ironchest.dirtchest9000.page2=Gebruik: Plaats simpelweg uw hoop aarde naar uw keuze in de zeer ontvankelijke gleuf en geniet van de geriefelijkheid om dat hoop aarde altijd beschikbaar tot u te hebben, wanneer dan ook!
+book.ironchest.dirtchest9000.page3=We hopen dat u heeft genoten om deze handleiding te lezen en we hopen dat u overweegt om onze producten in de toekomst te gebruiken! Met vriendelijke groeten, De Aarden Kist 9000 Handleiding Auteurs.
+book.ironchest.dirtchest9000.page4=Garantie: Deze product biedt geen enkele garantie. Uw aarde kan mogenlijk niet gestockeerd worden, het kan langzaam verdampen of het kan ook helemaal niks doen.
+book.ironchest.dirtchest9000.page5=Aarden Kist 9000 is mileuvriendelijk. Gelieve deze handleiding verantwoordlijk te ontdoen en gooi het niet zomaar in wat lava. We zouden zeer verdrietig zijn.
diff --git a/src/main/resources/assets/ironchest/lang/pl_PL.lang b/src/main/resources/assets/ironchest/lang/pl_PL.lang
index c5ffc85..45d2027 100755
--- a/src/main/resources/assets/ironchest/lang/pl_PL.lang
+++ b/src/main/resources/assets/ironchest/lang/pl_PL.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Żelazna skrzynia
-tile.ironchest:GOLD.name=Złota skrzynia
-tile.ironchest:DIAMOND.name=Diamentowa skrzynia
-tile.ironchest:COPPER.name=Miedziana skrzynia
-tile.ironchest:SILVER.name=Srebrna skrzynia
-tile.ironchest:CRYSTAL.name=Kryształowa skrzynia
-tile.ironchest:OBSIDIAN.name=Obsydianowa skrzynia
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Ulepszenie żelaznej skrzyni na złotą
-item.ironchest:GOLDDIAMOND.name=Ulepszenie złotej skrzyni na diamentową
-item.ironchest:COPPERSILVER.name=Ulepszenie miedzianej skrzyni na srebrną
-item.ironchest:SILVERGOLD.name=Ulepszenie srebrnej skrzyni na złotą
-item.ironchest:COPPERIRON.name=Ulepszenie miedzianej skrzyni na żelazną
-item.ironchest:DIAMONDCRYSTAL.name=Ulepszenie diamentowej skrzyni na kryształową
-item.ironchest:WOODIRON.name=Ulepszenie drewnianej skrzyni na żelazną
-item.ironchest:WOODCOPPER.name=Ulepszenie drewnianej skrzyni na miedzianą
-item.ironchest:DIAMONDOBSIDIAN.name=Ulepszenie diamentowej skrzyni na obsydianową
+tile.ironchest.chest.iron.name=Żelazna skrzynia
+tile.ironchest.chest.gold.name=Złota skrzynia
+tile.ironchest.chest.diamond.name=Diamentowa skrzynia
+tile.ironchest.chest.copper.name=Miedziana skrzynia
+tile.ironchest.chest.silver.name=Srebrna skrzynia
+tile.ironchest.chest.crystal.name=Kryształowa skrzynia
+tile.ironchest.chest.obsidian.name=Obsydianowa skrzynia
+
+item.ironchest.chest.iron_gold.name=Ulepszenie żelaznej skrzyni na złotą
+item.ironchest.chest.gold_diamond.name=Ulepszenie złotej skrzyni na diamentową
+item.ironchest.chest.copper_silver.name=Ulepszenie miedzianej skrzyni na srebrną
+item.ironchest.chest.silver_gold.name=Ulepszenie srebrnej skrzyni na złotą
+item.ironchest.chest.copper_iron.name=Ulepszenie miedzianej skrzyni na żelazną
+item.ironchest.chest.diamond_crystal.name=Ulepszenie diamentowej skrzyni na kryształową
+item.ironchest.chest.wood_iron.name=Ulepszenie drewnianej skrzyni na żelazną
+item.ironchest.chest.wood_copper.name=Ulepszenie drewnianej skrzyni na miedzianą
+item.ironchest.chest.diamond_obsidian.name=Ulepszenie diamentowej skrzyni na obsydianową
diff --git a/src/main/resources/assets/ironchest/lang/pt_BR.lang b/src/main/resources/assets/ironchest/lang/pt_BR.lang
index 38c0e34..aefa357 100755
--- a/src/main/resources/assets/ironchest/lang/pt_BR.lang
+++ b/src/main/resources/assets/ironchest/lang/pt_BR.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Baú de Ferro
-tile.ironchest:GOLD.name=Baú de Ouro
-tile.ironchest:DIAMOND.name=Baú de Diamante
-tile.ironchest:COPPER.name=Baú de Cobre
-tile.ironchest:SILVER.name=Baú de Prata
-tile.ironchest:CRYSTAL.name=Baú de Cristal
-tile.ironchest:OBSIDIAN.name=Baú de Obsidiana
-tile.ironchest:DIRTCHEST9000.name=BaúDeSujeira 9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Aprimoramento de Baú de Ferro para Ouro
-item.ironchest:GOLDDIAMOND.name=Aprimoramento de Baú de Ouro para Diamante
-item.ironchest:COPPERSILVER.name=Aprimoramento de Baú de Cobre para Prata
-item.ironchest:SILVERGOLD.name=Aprimoramento de Baú de Prata para Ouro
-item.ironchest:COPPERIRON.name=Aprimoramento de Baú de Cobre para Ferro
-item.ironchest:DIAMONDCRYSTAL.name=Aprimoramento de Baú de Diamante para Cristal
-item.ironchest:WOODIRON.name=Aprimoramento de Baú de Madeira para Ferro
-item.ironchest:WOODCOPPER.name=Aprimoramento de Baú de Madeira para Cobre
-item.ironchest:DIAMONDOBSIDIAN.name=Aprimoramento de Baú de Diamante para Obsidiana
+tile.ironchest.chest.iron.name=Baú de Ferro
+tile.ironchest.chest.gold.name=Baú de Ouro
+tile.ironchest.chest.diamond.name=Baú de Diamante
+tile.ironchest.chest.copper.name=Baú de Cobre
+tile.ironchest.chest.silver.name=Baú de Prata
+tile.ironchest.chest.crystal.name=Baú de Cristal
+tile.ironchest.chest.obsidian.name=Baú de Obsidiana
+tile.ironchest.chest.dirtchest9000.name=BaúDeSujeira 9000!
-book.ironchest:dirtchest9000.title=Como utilizar seu BaúDeSujeira 9000!
-book.ironchest:dirtchest9000.page1=Bem-vindo ao seu novo BaúDeSujeira 9000! Esperamos que desfrute de muitos anos felizes de armazenagem de sua pilha de sujeira em nosso utilitário de armazenamento.
-book.ironchest:dirtchest9000.page2=Uso: basta inserir o monte de sujeira de sua escolha no slot altamente receptivo e apreciar a grande conveniência de ter essa sujeira disponíveis para você, a qualquer momento que você passar pelo baú!
-book.ironchest:dirtchest9000.page3=Esperamos que tenham gostado de rever este manual de instruções, e espero que você considere o uso de nossos produtos no futuro! Atenciosamente, manual do BaúDeSujeira 9000 escritores incorporados.
-book.ironchest:dirtchest9000.page4=Garantia: Este produto não tem qualquer tipo de garantia. Sua sujeira pode não ser armazenada, pode vazar lentamente para o ambiente, ou alternativamente, pode não fazer absolutamente nada.
-book.ironchest:dirtchest9000.page5=BaúDeSujeira 9000 é bom para o meio ambiente. Elimine este guia de forma responsável, e não o que você faz apenas lançando-o em alguma lava. Ficaríamos muito triste.
+item.ironchest.chest.iron_gold.name=Aprimoramento de Baú de Ferro para Ouro
+item.ironchest.chest.gold_diamond.name=Aprimoramento de Baú de Ouro para Diamante
+item.ironchest.chest.copper_silver.name=Aprimoramento de Baú de Cobre para Prata
+item.ironchest.chest.silver_gold.name=Aprimoramento de Baú de Prata para Ouro
+item.ironchest.chest.copper_iron.name=Aprimoramento de Baú de Cobre para Ferro
+item.ironchest.chest.diamond_crystal.name=Aprimoramento de Baú de Diamante para Cristal
+item.ironchest.chest.wood_iron.name=Aprimoramento de Baú de Madeira para Ferro
+item.ironchest.chest.wood_copper.name=Aprimoramento de Baú de Madeira para Cobre
+item.ironchest.chest.diamond_obsidian.name=Aprimoramento de Baú de Diamante para Obsidiana
+
+book.ironchest.dirtchest9000.title=Como utilizar seu BaúDeSujeira 9000!
+book.ironchest.dirtchest9000.page1=Bem-vindo ao seu novo BaúDeSujeira 9000! Esperamos que desfrute de muitos anos felizes de armazenagem de sua pilha de sujeira em nosso utilitário de armazenamento.
+book.ironchest.dirtchest9000.page2=Uso: basta inserir o monte de sujeira de sua escolha no slot altamente receptivo e apreciar a grande conveniência de ter essa sujeira disponíveis para você, a qualquer momento que você passar pelo baú!
+book.ironchest.dirtchest9000.page3=Esperamos que tenham gostado de rever este manual de instruções, e espero que você considere o uso de nossos produtos no futuro! Atenciosamente, manual do BaúDeSujeira 9000 escritores incorporados.
+book.ironchest.dirtchest9000.page4=Garantia: Este produto não tem qualquer tipo de garantia. Sua sujeira pode não ser armazenada, pode vazar lentamente para o ambiente, ou alternativamente, pode não fazer absolutamente nada.
+book.ironchest.dirtchest9000.page5=BaúDeSujeira 9000 é bom para o meio ambiente. Elimine este guia de forma responsável, e não o que você faz apenas lançando-o em alguma lava. Ficaríamos muito triste.
diff --git a/src/main/resources/assets/ironchest/lang/pt_PT.lang b/src/main/resources/assets/ironchest/lang/pt_PT.lang
index cb29cb2..d84b696 100755
--- a/src/main/resources/assets/ironchest/lang/pt_PT.lang
+++ b/src/main/resources/assets/ironchest/lang/pt_PT.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Baú de Ferro
-tile.ironchest:GOLD.name=Baú de Ouro
-tile.ironchest:DIAMOND.name=Baú de Diamante
-tile.ironchest:COPPER.name=Baú de Cobre
-tile.ironchest:SILVER.name=Baú de Prata
-tile.ironchest:CRYSTAL.name=Baú de Cristal
-tile.ironchest:OBSIDIAN.name=Baú de Obsidiana
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Melhoria de Baú de Ferro para Ouro
-item.ironchest:GOLDDIAMOND.name=Melhoria de Baú de Ouro para Diamante
-item.ironchest:COPPERSILVER.name=Melhoria de Baú de Cobre para Prata
-item.ironchest:SILVERGOLD.name=Melhoria de Baú de Prata para Ouro
-item.ironchest:COPPERIRON.name=Melhoria de Baú de Cobre para Ferro
-item.ironchest:DIAMONDCRYSTAL.name=Melhoria de Baú de Diamante para Cristal
-item.ironchest:WOODIRON.name=Melhoria de Baú de Madeira para Ferro
-item.ironchest:WOODCOPPER.name=Melhoria de Baú de Madeira para Cobre
-item.ironchest:DIAMONDOBSIDIAN.name=Melhoria de Baú de Diamante para Obsidiana
+tile.ironchest.chest.iron.name=Baú de Ferro
+tile.ironchest.chest.gold.name=Baú de Ouro
+tile.ironchest.chest.diamond.name=Baú de Diamante
+tile.ironchest.chest.copper.name=Baú de Cobre
+tile.ironchest.chest.silver.name=Baú de Prata
+tile.ironchest.chest.crystal.name=Baú de Cristal
+tile.ironchest.chest.obsidian.name=Baú de Obsidiana
+
+item.ironchest.chest.iron_gold.name=Melhoria de Baú de Ferro para Ouro
+item.ironchest.chest.gold_diamond.name=Melhoria de Baú de Ouro para Diamante
+item.ironchest.chest.copper_silver.name=Melhoria de Baú de Cobre para Prata
+item.ironchest.chest.silver_gold.name=Melhoria de Baú de Prata para Ouro
+item.ironchest.chest.copper_iron.name=Melhoria de Baú de Cobre para Ferro
+item.ironchest.chest.diamond_crystal.name=Melhoria de Baú de Diamante para Cristal
+item.ironchest.chest.wood_iron.name=Melhoria de Baú de Madeira para Ferro
+item.ironchest.chest.wood_copper.name=Melhoria de Baú de Madeira para Cobre
+item.ironchest.chest.diamond_obsidian.name=Melhoria de Baú de Diamante para Obsidiana
diff --git a/src/main/resources/assets/ironchest/lang/ru_RU.lang b/src/main/resources/assets/ironchest/lang/ru_RU.lang
index 114eee7..709ddcf 100755
--- a/src/main/resources/assets/ironchest/lang/ru_RU.lang
+++ b/src/main/resources/assets/ironchest/lang/ru_RU.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Железный сундук
-tile.ironchest:GOLD.name=Золотой сундук
-tile.ironchest:DIAMOND.name=Алмазный сундук
-tile.ironchest:COPPER.name=Медный сундук
-tile.ironchest:SILVER.name=Серебряный сундук
-tile.ironchest:CRYSTAL.name=Кристальный сундук
-tile.ironchest:OBSIDIAN.name=Обсидиановый сундук
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Улучшение из железного в золотой сундук
-item.ironchest:GOLDDIAMOND.name=Улучшение из золотого в алмазный сундук
-item.ironchest:COPPERSILVER.name=Улучшение из медного в серебряный сундук
-item.ironchest:SILVERGOLD.name=Улучшение из серебряного в золотой сундук
-item.ironchest:COPPERIRON.name=Улучшение из медного в железный сундук
-item.ironchest:DIAMONDCRYSTAL.name=Улучшение из алмазного в кристальный сундук
-item.ironchest:WOODIRON.name=Улучшение из деревянного в железный сундук
-item.ironchest:WOODCOPPER.name=Улучшение из деревянного в медный сундук
-item.ironchest:DIAMONDOBSIDIAN.name=Улучшение из алмазного в обсидиановый сундук
+tile.ironchest.chest.iron.name=Железный сундук
+tile.ironchest.chest.gold.name=Золотой сундук
+tile.ironchest.chest.diamond.name=Алмазный сундук
+tile.ironchest.chest.copper.name=Медный сундук
+tile.ironchest.chest.silver.name=Серебряный сундук
+tile.ironchest.chest.crystal.name=Кристальный сундук
+tile.ironchest.chest.obsidian.name=Обсидиановый сундук
+
+item.ironchest.chest.iron_gold.name=Улучшение из железного в золотой сундук
+item.ironchest.chest.gold_diamond.name=Улучшение из золотого в алмазный сундук
+item.ironchest.chest.copper_silver.name=Улучшение из медного в серебряный сундук
+item.ironchest.chest.silver_gold.name=Улучшение из серебряного в золотой сундук
+item.ironchest.chest.copper_iron.name=Улучшение из медного в железный сундук
+item.ironchest.chest.diamond_crystal.name=Улучшение из алмазного в кристальный сундук
+item.ironchest.chest.wood_iron.name=Улучшение из деревянного в железный сундук
+item.ironchest.chest.wood_copper.name=Улучшение из деревянного в медный сундук
+item.ironchest.chest.diamond_obsidian.name=Улучшение из алмазного в обсидиановый сундук
diff --git a/src/main/resources/assets/ironchest/lang/sv_SE.lang b/src/main/resources/assets/ironchest/lang/sv_SE.lang
index 2bbeacf..1f25185 100755
--- a/src/main/resources/assets/ironchest/lang/sv_SE.lang
+++ b/src/main/resources/assets/ironchest/lang/sv_SE.lang
@@ -1,17 +1,21 @@
-tile.ironchest:IRON.name=Järnkista
-tile.ironchest:GOLD.name=Guldkista
-tile.ironchest:DIAMOND.name=Diamantkista
-tile.ironchest:COPPER.name=Kopparkista
-tile.ironchest:SILVER.name=Silverkista
-tile.ironchest:CRYSTAL.name=Kristallkista
-tile.ironchest:OBSIDIAN.name=Obsidiankista
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Järn till Guld Kistuppgradering
-item.ironchest:GOLDDIAMOND.name=Guld till Diamant Kistuppgradering
-item.ironchest:COPPERSILVER.name=Koppar till Silver Kistuppgradering
-item.ironchest:SILVERGOLD.name=Silver till Guld Kistuppgradering
-item.ironchest:COPPERIRON.name=Koppar till Järn Kistuppgradering
-item.ironchest:DIAMONDCRYSTAL.name=Diamant till Kristal Kistuppgradering
-item.ironchest:WOODIRON.name=Trä till Järn Kistuppgradering
-item.ironchest:WOODCOPPER.name=Trä till Koppar Kistuppgradering
-item.ironchest:DIAMONDOBSIDIAN.name=Diamant till Obsidian Kistuppgradering
+tile.ironchest.chest.iron.name=Järnkista
+tile.ironchest.chest.gold.name=Guldkista
+tile.ironchest.chest.diamond.name=Diamantkista
+tile.ironchest.chest.copper.name=Kopparkista
+tile.ironchest.chest.silver.name=Silverkista
+tile.ironchest.chest.crystal.name=Kristallkista
+tile.ironchest.chest.obsidian.name=Obsidiankista
+
+item.ironchest.chest.iron_gold.name=Järn till Guld Kistuppgradering
+item.ironchest.chest.gold_diamond.name=Guld till Diamant Kistuppgradering
+item.ironchest.chest.copper_silver.name=Koppar till Silver Kistuppgradering
+item.ironchest.chest.silver_gold.name=Silver till Guld Kistuppgradering
+item.ironchest.chest.copper_iron.name=Koppar till Järn Kistuppgradering
+item.ironchest.chest.diamond_crystal.name=Diamant till Kristal Kistuppgradering
+item.ironchest.chest.wood_iron.name=Trä till Järn Kistuppgradering
+item.ironchest.chest.wood_copper.name=Trä till Koppar Kistuppgradering
+item.ironchest.chest.diamond_obsidian.name=Diamant till Obsidian Kistuppgradering
diff --git a/src/main/resources/assets/ironchest/lang/tr_TR.lang b/src/main/resources/assets/ironchest/lang/tr_TR.lang
index 9c86204..4343651 100755
--- a/src/main/resources/assets/ironchest/lang/tr_TR.lang
+++ b/src/main/resources/assets/ironchest/lang/tr_TR.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=Demir Sandık
-tile.ironchest:GOLD.name=Altın Sandık
-tile.ironchest:DIAMOND.name=Elmas Sandık
-tile.ironchest:COPPER.name=Bakır Sandık
-tile.ironchest:SILVER.name=Gümüş Sandık
-tile.ironchest:CRYSTAL.name=Kristal Sandık
-tile.ironchest:OBSIDIAN.name=Obsidyen Sandık
-tile.ironchest:DIRTCHEST9000.name=Toprak Sandık-9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=Demir Sandığı Altın Sandığa Yükselt
-item.ironchest:GOLDDIAMOND.name=Altın Sandığı Elmas Sandığa Yükselt
-item.ironchest:COPPERSILVER.name=Bakır Sandığı Gümüş Sandığa Yükselt
-item.ironchest:SILVERGOLD.name=Gümüş Sandığı Altın Sandığa Yükselt
-item.ironchest:COPPERIRON.name=Bakır Sandığı Demir Sandığa Yükselt
-item.ironchest:DIAMONDCRYSTAL.name=Elmas Sandığı Kristal Sandığa Yükselt
-item.ironchest:WOODIRON.name=Tahta Sandığı Demir Sandığa Yükselt
-item.ironchest:WOODCOPPER.name=Tahta Sandığı Bakır Sandığa Yükselt
-item.ironchest:DIAMONDOBSIDIAN.name=Elmas Sandığı Obsidyen Sandığa Yükselt
+tile.ironchest.chest.iron.name=Demir Sandık
+tile.ironchest.chest.gold.name=Altın Sandık
+tile.ironchest.chest.diamond.name=Elmas Sandık
+tile.ironchest.chest.copper.name=Bakır Sandık
+tile.ironchest.chest.silver.name=Gümüş Sandık
+tile.ironchest.chest.crystal.name=Kristal Sandık
+tile.ironchest.chest.obsidian.name=Obsidyen Sandık
+tile.ironchest.chest.dirtchest9000.name=Toprak Sandık-9000!
-book.ironchest:dirtchest9000.title=Toprak Sandık-9000 Kullanım Kılavuzu
-book.ironchest:dirtchest9000.page1=Yeni sandık olan Toprak Sandık-9000 yaptığınız için teşekkürler.Bu sandık ile topraklarınızı depolayabilirsiniz.
-book.ironchest:dirtchest9000.page2=Kullanımı: 64 adet toprak alarak içine koyunuz. Böylece sadece toprak depolanır.
-book.ironchest:dirtchest9000.page3=Biz bu kılavuzu gözden keyif aldık umuyoruz, ve gelecekte ürünlerimizi kullanmayı düşünün umuyoruz! Saygılarımızla, dahil DirtChest 9000 manuel yazar.
-book.ironchest:dirtchest9000.page4=Garanti: Bu ürün herhangi bir garanti vardır. Sizin kir depolanabilir değil, yavaş yavaş çevreye sülük olabilir, ya da alternatif olarak, hiç bir şey yapamazsınız.
-book.ironchest:dirtchest9000.page5=Toprak Sandık-9000 çevreye türüdür. Sorumlu bu rehber kitap imha edin ve ne olursa olsun sadece bazı lav içine ayna yok yok. Bizim için çok üzücü olacaktır.
+item.ironchest.chest.iron_gold.name=Demir Sandığı Altın Sandığa Yükselt
+item.ironchest.chest.gold_diamond.name=Altın Sandığı Elmas Sandığa Yükselt
+item.ironchest.chest.copper_silver.name=Bakır Sandığı Gümüş Sandığa Yükselt
+item.ironchest.chest.silver_gold.name=Gümüş Sandığı Altın Sandığa Yükselt
+item.ironchest.chest.copper_iron.name=Bakır Sandığı Demir Sandığa Yükselt
+item.ironchest.chest.diamond_crystal.name=Elmas Sandığı Kristal Sandığa Yükselt
+item.ironchest.chest.wood_iron.name=Tahta Sandığı Demir Sandığa Yükselt
+item.ironchest.chest.wood_copper.name=Tahta Sandığı Bakır Sandığa Yükselt
+item.ironchest.chest.diamond_obsidian.name=Elmas Sandığı Obsidyen Sandığa Yükselt
+
+book.ironchest.dirtchest9000.title=Toprak Sandık-9000 Kullanım Kılavuzu
+book.ironchest.dirtchest9000.page1=Yeni sandık olan Toprak Sandık-9000 yaptığınız için teşekkürler.Bu sandık ile topraklarınızı depolayabilirsiniz.
+book.ironchest.dirtchest9000.page2=Kullanımı: 64 adet toprak alarak içine koyunuz. Böylece sadece toprak depolanır.
+book.ironchest.dirtchest9000.page3=Biz bu kılavuzu gözden keyif aldık umuyoruz, ve gelecekte ürünlerimizi kullanmayı düşünün umuyoruz! Saygılarımızla, dahil DirtChest 9000 manuel yazar.
+book.ironchest.dirtchest9000.page4=Garanti: Bu ürün herhangi bir garanti vardır. Sizin kir depolanabilir değil, yavaş yavaş çevreye sülük olabilir, ya da alternatif olarak, hiç bir şey yapamazsınız.
+book.ironchest.dirtchest9000.page5=Toprak Sandık-9000 çevreye türüdür. Sorumlu bu rehber kitap imha edin ve ne olursa olsun sadece bazı lav içine ayna yok yok. Bizim için çok üzücü olacaktır.
diff --git a/src/main/resources/assets/ironchest/lang/zh_CN.lang b/src/main/resources/assets/ironchest/lang/zh_CN.lang
index 974ada4..991d877 100755
--- a/src/main/resources/assets/ironchest/lang/zh_CN.lang
+++ b/src/main/resources/assets/ironchest/lang/zh_CN.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=铁箱子
-tile.ironchest:GOLD.name=金箱子
-tile.ironchest:DIAMOND.name=钻石箱子
-tile.ironchest:COPPER.name=铜箱子
-tile.ironchest:SILVER.name=银箱子
-tile.ironchest:CRYSTAL.name=水晶箱子
-tile.ironchest:OBSIDIAN.name=黑曜石箱子
-tile.ironchest:DIRTCHEST9000.name=泥箱子9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=升级:铁>金
-item.ironchest:GOLDDIAMOND.name=升级:金>钻石
-item.ironchest:COPPERSILVER.name=升级:铜>银
-item.ironchest:SILVERGOLD.name=升级:银>金
-item.ironchest:COPPERIRON.name=升级:铜>铁
-item.ironchest:DIAMONDCRYSTAL.name=升级:钻石>水晶
-item.ironchest:WOODIRON.name=升级:木>铁
-item.ironchest:WOODCOPPER.name=升级:木>铜
-item.ironchest:DIAMONDOBSIDIAN.name=升级:钻石>黑曜石
+tile.ironchest.chest.iron.name=铁箱子
+tile.ironchest.chest.gold.name=金箱子
+tile.ironchest.chest.diamond.name=钻石箱子
+tile.ironchest.chest.copper.name=铜箱子
+tile.ironchest.chest.silver.name=银箱子
+tile.ironchest.chest.crystal.name=水晶箱子
+tile.ironchest.chest.obsidian.name=黑曜石箱子
+tile.ironchest.chest.dirtchest9000.name=泥箱子9000!
-book.ironchest:dirtchest9000.title=傻瓜也一定会用的泥箱子9000!
-book.ironchest:dirtchest9000.page1=欢迎使用这台全新的泥箱子9000!希望你能愉快地常年使用我们的设备来储存(大量)泥土(大雾)。
-book.ironchest:dirtchest9000.page2=使用方法: 把一组泥土丢进去就行了。每次您经过的时候都可以打开它(很方便地)取出来用。
-book.ironchest:dirtchest9000.page3=希望您阅读本手册愉快,并选择使用我们的产品。作为泥箱子9000手册作者我谨向您致以诚挚问候。
-book.ironchest:dirtchest9000.page4=质量保障: 恕本产品不提供任何质量保障。您的泥土或者能安全存储其内,或者会逐渐流失到环境中,或者什么也不会发生。(读者:我了个去!)
-book.ironchest:dirtchest9000.page5=泥箱子9000十分环保。请小心收藏好本手册,如果您随手丢进岩浆的话,我们可会伤心的。
+item.ironchest.chest.iron_gold.name=升级:铁>金
+item.ironchest.chest.gold_diamond.name=升级:金>钻石
+item.ironchest.chest.copper_silver.name=升级:铜>银
+item.ironchest.chest.silver_gold.name=升级:银>金
+item.ironchest.chest.copper_iron.name=升级:铜>铁
+item.ironchest.chest.diamond_crystal.name=升级:钻石>水晶
+item.ironchest.chest.wood_iron.name=升级:木>铁
+item.ironchest.chest.wood_copper.name=升级:木>铜
+item.ironchest.chest.diamond_obsidian.name=升级:钻石>黑曜石
+
+book.ironchest.dirtchest9000.title=傻瓜也一定会用的泥箱子9000!
+book.ironchest.dirtchest9000.page1=欢迎使用这台全新的泥箱子9000!希望你能愉快地常年使用我们的设备来储存(大量)泥土(大雾)。
+book.ironchest.dirtchest9000.page2=使用方法: 把一组泥土丢进去就行了。每次您经过的时候都可以打开它(很方便地)取出来用。
+book.ironchest.dirtchest9000.page3=希望您阅读本手册愉快,并选择使用我们的产品。作为泥箱子9000手册作者我谨向您致以诚挚问候。
+book.ironchest.dirtchest9000.page4=质量保障: 恕本产品不提供任何质量保障。您的泥土或者能安全存储其内,或者会逐渐流失到环境中,或者什么也不会发生。(读者:我了个去!)
+book.ironchest.dirtchest9000.page5=泥箱子9000十分环保。请小心收藏好本手册,如果您随手丢进岩浆的话,我们可会伤心的。
diff --git a/src/main/resources/assets/ironchest/lang/zh_TW.lang b/src/main/resources/assets/ironchest/lang/zh_TW.lang
index d4755f6..69c7cdc 100755
--- a/src/main/resources/assets/ironchest/lang/zh_TW.lang
+++ b/src/main/resources/assets/ironchest/lang/zh_TW.lang
@@ -1,25 +1,29 @@
-tile.ironchest:IRON.name=鐵箱
-tile.ironchest:GOLD.name=黃金箱
-tile.ironchest:DIAMOND.name=鑽石箱
-tile.ironchest:COPPER.name=銅箱
-tile.ironchest:SILVER.name=銀箱
-tile.ironchest:CRYSTAL.name=水晶箱
-tile.ironchest:OBSIDIAN.name=黑曜石箱
-tile.ironchest:DIRTCHEST9000.name=泥土箱9000!
+################
+# Chests #
+################
-item.ironchest:IRONGOLD.name=鐵箱升級成金箱
-item.ironchest:GOLDDIAMOND.name=金箱升級成鑽石箱
-item.ironchest:COPPERSILVER.name=銅箱升級成銀箱
-item.ironchest:SILVERGOLD.name=銀箱升級成金箱
-item.ironchest:COPPERIRON.name=銅箱升級成鐵箱
-item.ironchest:DIAMONDCRYSTAL.name=鑽石箱升級成水晶箱
-item.ironchest:WOODIRON.name=木箱升級成鐵箱
-item.ironchest:WOODCOPPER.name=木箱升級成銅箱
-item.ironchest:DIAMONDOBSIDIAN.name=鑽石箱升級成黑曜石箱
+tile.ironchest.chest.iron.name=鐵箱
+tile.ironchest.chest.gold.name=黃金箱
+tile.ironchest.chest.diamond.name=鑽石箱
+tile.ironchest.chest.copper.name=銅箱
+tile.ironchest.chest.silver.name=銀箱
+tile.ironchest.chest.crystal.name=水晶箱
+tile.ironchest.chest.obsidian.name=黑曜石箱
+tile.ironchest.chest.dirtchest9000.name=泥土箱9000!
-book.ironchest:dirtchest9000.title=笨蛋也一定會用的泥土箱9000!
-book.ironchest:dirtchest9000.page1=歡迎使用這台全新的泥土箱9000!希望你能愉快地常年使用我們的設備來儲存泥土。
-book.ironchest:dirtchest9000.page2=使用方法:把一組泥土丟進去就行了。每次您經過的時候都可以打開它很方便地取出來用。
-book.ironchest:dirtchest9000.page3=希望您閱讀本手冊愉快,並選擇使用我們的產品。作為泥土箱9000手冊作者我謹向您致以誠摯問候。
-book.ironchest:dirtchest9000.page4=質量保障:恕本產品不提供任何質量保障。您的泥土或許能安全存儲其內,或許會逐漸流失到環境中,或者什麼也不會發生。
-book.ironchest:dirtchest9000.page5=泥土箱9000十分環保。請小心收藏好本手冊,如果您隨手丟進岩漿的話,我們可會傷心的。
\ No newline at end of file
+item.ironchest.chest.iron_gold.name=鐵箱升級成金箱
+item.ironchest.chest.gold_diamond.name=金箱升級成鑽石箱
+item.ironchest.chest.copper_silver.name=銅箱升級成銀箱
+item.ironchest.chest.silver_gold.name=銀箱升級成金箱
+item.ironchest.chest.copper_iron.name=銅箱升級成鐵箱
+item.ironchest.chest.diamond_crystal.name=鑽石箱升級成水晶箱
+item.ironchest.chest.wood_iron.name=木箱升級成鐵箱
+item.ironchest.chest.wood_copper.name=木箱升級成銅箱
+item.ironchest.chest.diamond_obsidian.name=鑽石箱升級成黑曜石箱
+
+book.ironchest.dirtchest9000.title=笨蛋也一定會用的泥土箱9000!
+book.ironchest.dirtchest9000.page1=歡迎使用這台全新的泥土箱9000!希望你能愉快地常年使用我們的設備來儲存泥土。
+book.ironchest.dirtchest9000.page2=使用方法:把一組泥土丟進去就行了。每次您經過的時候都可以打開它很方便地取出來用。
+book.ironchest.dirtchest9000.page3=希望您閱讀本手冊愉快,並選擇使用我們的產品。作為泥土箱9000手冊作者我謹向您致以誠摯問候。
+book.ironchest.dirtchest9000.page4=質量保障:恕本產品不提供任何質量保障。您的泥土或許能安全存儲其內,或許會逐漸流失到環境中,或者什麼也不會發生。
+book.ironchest.dirtchest9000.page5=泥土箱9000十分環保。請小心收藏好本手冊,如果您隨手丟進岩漿的話,我們可會傷心的。
\ No newline at end of file
diff --git a/src/main/resources/assets/ironchest/models/block/iron_chest.json b/src/main/resources/assets/ironchest/models/block/iron_chest.json
index 9f41512..16c0ca9 100644
--- a/src/main/resources/assets/ironchest/models/block/iron_chest.json
+++ b/src/main/resources/assets/ironchest/models/block/iron_chest.json
@@ -1,7 +1,7 @@
{
"parent": "block/block",
"textures": {
- "texture": "ironchest:model/copper_chest"
+ "texture": "ironchest:model/chest/copper_chest"
},
"elements": [
{ "from": [ 1, 0, 1 ],
diff --git a/src/main/resources/assets/ironchest/models/block/iron_shulker_box.json b/src/main/resources/assets/ironchest/models/block/iron_shulker_box.json
new file mode 100644
index 0000000..3886143
--- /dev/null
+++ b/src/main/resources/assets/ironchest/models/block/iron_shulker_box.json
@@ -0,0 +1,152 @@
+{
+ "parent": "block/block",
+ "textures": {
+ "texture": "ironchest:model/shulker/purple/shulker_purple_copper"
+ },
+ "elements": [
+ { "from": [ 1, 0, 0 ],
+ "to": [ 15, 4, 1 ],
+ "faces": {
+ "north": { "uv": [ 0.25, 12, 3.75, 13 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 4, 4, 0 ],
+ "to": [ 12, 8, 1 ],
+ "faces": {
+ "north": { "uv": [ 1, 11, 3, 12 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 1, 4, 0 ],
+ "to": [ 4, 8, 1 ],
+ "faces": {
+ "north": { "uv": [ 3, 6, 3.75, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 12, 4, 0 ],
+ "to": [ 15, 8, 1 ],
+ "faces": {
+ "north": { "uv": [ 0.25, 6, 1, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 1, 8, 0 ],
+ "to": [ 15, 16, 1 ],
+ "faces": {
+ "north": { "uv": [ 0.25, 4, 3.75, 6 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 15, 0, 0 ],
+ "to": [ 16, 4, 16 ],
+ "faces": {
+ "north": { "uv": [ 0, 12, 0.25, 13 ], "texture": "#texture" },
+ "east": { "uv": [ 4, 12, 8, 13 ], "texture": "#texture" },
+ "south": { "uv": [ 11.75, 12, 12, 13 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 15, 4, 4 ],
+ "to": [ 16, 8, 12 ],
+ "faces": {
+ "east": { "uv": [ 5, 11, 7, 12 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 15, 4, 0 ],
+ "to": [ 16, 8, 4 ],
+ "faces": {
+ "north": { "uv": [ 0, 6, 0.25, 7 ], "texture": "#texture" },
+ "east": { "uv": [ 7, 6, 8, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 15, 4, 12 ],
+ "to": [ 16, 8, 16 ],
+ "faces": {
+ "east": { "uv": [ 4, 6, 5, 7 ], "texture": "#texture" },
+ "south": { "uv": [ 11.75, 6, 12, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 15, 8, 0 ],
+ "to": [ 16, 16, 16 ],
+ "faces": {
+ "north": { "uv": [ 0, 4, 0.25, 6 ], "texture": "#texture" },
+ "east": { "uv": [ 4, 4, 8, 6 ], "texture": "#texture" },
+ "south": { "uv": [ 11.75, 4, 12, 6 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 1, 0, 15 ],
+ "to": [ 15, 4, 16 ],
+ "faces": {
+ "south": { "uv": [ 8.25, 12, 11.75, 13 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 4, 4, 15 ],
+ "to": [ 12, 8, 16 ],
+ "faces": {
+ "south": { "uv": [ 9, 11, 11, 12 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 12, 4, 15 ],
+ "to": [ 15, 8, 16 ],
+ "faces": {
+ "south": { "uv": [ 11, 6, 11.75, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 1, 4, 15 ],
+ "to": [ 4, 8, 16 ],
+ "faces": {
+ "south": { "uv": [ 8.25, 6, 9, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 1, 8, 15 ],
+ "to": [ 15, 16, 16 ],
+ "faces": {
+ "south": { "uv": [ 8.25, 4, 11.75, 6 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 0, 0 ],
+ "to": [ 1, 4, 16 ],
+ "faces": {
+ "north": { "uv": [ 3.75, 12, 4, 13 ], "texture": "#texture" },
+ "south": { "uv": [ 8, 12, 8.25, 13 ], "texture": "#texture" },
+ "west": { "uv": [ 12, 12, 16, 13 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 4, 4 ],
+ "to": [ 1, 8, 12 ],
+ "faces": {
+ "west": { "uv": [ 13, 11, 15, 12 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 4, 12 ],
+ "to": [ 1, 8, 16 ],
+ "faces": {
+ "south": { "uv": [ 8, 6, 8.25, 7 ], "texture": "#texture" },
+ "west": { "uv": [ 15, 6, 16, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 4, 0 ],
+ "to": [ 1, 8, 4 ],
+ "faces": {
+ "north": { "uv": [ 3.75, 6, 4, 7 ], "texture": "#texture" },
+ "west": { "uv": [ 12, 6, 13, 7 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 8, 0 ],
+ "to": [ 1, 16, 16 ],
+ "faces": {
+ "north": { "uv": [ 3.75, 4, 4, 6 ], "texture": "#texture" },
+ "south": { "uv": [ 8, 4, 8.25, 6 ], "texture": "#texture" },
+ "west": { "uv": [ 12, 4, 16, 6 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 16, 0 ],
+ "to": [ 16, 16, 16 ],
+ "faces": {
+ "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture" }
+ }
+ },
+ { "from": [ 0, 0, 0 ],
+ "to": [ 16, 0, 16 ],
+ "faces": {
+ "down": { "uv": [ 8, 7, 12, 11 ], "texture": "#texture" }
+ }
+ }
+ ]
+}
diff --git a/src/main/resources/assets/ironchest/textures/items/copper_iron_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/copper_iron_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/copper_iron_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/copper_iron_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/copper_silver_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/copper_silver_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/copper_silver_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/copper_silver_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/diamond_crystal_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/diamond_crystal_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/diamond_crystal_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/diamond_crystal_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/diamond_obsidian_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/diamond_obsidian_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/diamond_obsidian_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/diamond_obsidian_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/gold_diamond_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/gold_diamond_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/gold_diamond_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/gold_diamond_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/iron_gold_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/iron_gold_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/iron_gold_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/iron_gold_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/silver_gold_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/silver_gold_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/silver_gold_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/silver_gold_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/wood_copper_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/wood_copper_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/wood_copper_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/wood_copper_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/wood_iron_upgrade.png b/src/main/resources/assets/ironchest/textures/items/chest/wood_iron_upgrade.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/items/wood_iron_upgrade.png
rename to src/main/resources/assets/ironchest/textures/items/chest/wood_iron_upgrade.png
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/copper_iron_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/copper_iron_upgrade.png
new file mode 100644
index 0000000..0af1e53
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/copper_iron_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/copper_silver_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/copper_silver_upgrade.png
new file mode 100644
index 0000000..1adaafb
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/copper_silver_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/diamond_crystal_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/diamond_crystal_upgrade.png
new file mode 100644
index 0000000..6af17cf
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/diamond_crystal_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/diamond_obsidian_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/diamond_obsidian_upgrade.png
new file mode 100644
index 0000000..5b8a863
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/diamond_obsidian_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/gold_diamond_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/gold_diamond_upgrade.png
new file mode 100644
index 0000000..2830e6f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/gold_diamond_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/iron_gold_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/iron_gold_upgrade.png
new file mode 100644
index 0000000..e5a4985
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/iron_gold_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/silver_gold_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/silver_gold_upgrade.png
new file mode 100644
index 0000000..4cf4ebf
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/silver_gold_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/vanilla_copper_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/vanilla_copper_upgrade.png
new file mode 100644
index 0000000..c675fdc
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/vanilla_copper_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/items/shulker/vanilla_iron_upgrade.png b/src/main/resources/assets/ironchest/textures/items/shulker/vanilla_iron_upgrade.png
new file mode 100644
index 0000000..6569f1c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/items/shulker/vanilla_iron_upgrade.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/copper_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/copper_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/copper_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/copper_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/crystal_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/crystal_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/crystal_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/crystal_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/diamond_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/diamond_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/diamond_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/diamond_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/dirt_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/dirt_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/dirt_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/dirt_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/gold_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/gold_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/gold_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/gold_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/iron_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/iron_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/iron_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/iron_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/obsidian_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/obsidian_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/obsidian_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/obsidian_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/silver_chest.png b/src/main/resources/assets/ironchest/textures/model/chest/silver_chest.png
similarity index 100%
rename from src/main/resources/assets/ironchest/textures/model/silver_chest.png
rename to src/main/resources/assets/ironchest/textures/model/chest/silver_chest.png
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_copper.png
new file mode 100644
index 0000000..c063481
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_crystal.png
new file mode 100644
index 0000000..bf1a0df
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_diamond.png
new file mode 100644
index 0000000..a62e142
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_gold.png
new file mode 100644
index 0000000..69fe3d1
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_iron.png
new file mode 100644
index 0000000..b143aff
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_obsidian.png
new file mode 100644
index 0000000..79bc61f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_silver.png
new file mode 100644
index 0000000..521fa4a
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/black/shulker_black_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_copper.png
new file mode 100644
index 0000000..758b621
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_crystal.png
new file mode 100644
index 0000000..a31d58a
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_diamond.png
new file mode 100644
index 0000000..ec58ab5
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_gold.png
new file mode 100644
index 0000000..daf8900
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_iron.png
new file mode 100644
index 0000000..4bc3bd6
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_obsidian.png
new file mode 100644
index 0000000..344b074
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_silver.png
new file mode 100644
index 0000000..0436fd4
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/blue/shulker_blue_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_copper.png
new file mode 100644
index 0000000..41e99d7
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_crystal.png
new file mode 100644
index 0000000..45158d9
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_diamond.png
new file mode 100644
index 0000000..d5e4520
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_gold.png
new file mode 100644
index 0000000..6bdcf69
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_iron.png
new file mode 100644
index 0000000..e4fe618
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_obsidian.png
new file mode 100644
index 0000000..cdbf1e6
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_silver.png
new file mode 100644
index 0000000..b35a2f7
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/brown/shulker_brown_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_copper.png
new file mode 100644
index 0000000..68b95fd
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_crystal.png
new file mode 100644
index 0000000..7538629
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_diamond.png
new file mode 100644
index 0000000..49d83f5
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_gold.png
new file mode 100644
index 0000000..0de0966
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_iron.png
new file mode 100644
index 0000000..b58fece
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_obsidian.png
new file mode 100644
index 0000000..5653b2b
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_silver.png
new file mode 100644
index 0000000..0948fbf
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/cyan/shulker_cyan_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_copper.png
new file mode 100644
index 0000000..c38d315
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_crystal.png
new file mode 100644
index 0000000..b01a705
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_diamond.png
new file mode 100644
index 0000000..a203a53
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_gold.png
new file mode 100644
index 0000000..ac4121d
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_iron.png
new file mode 100644
index 0000000..efbf42b
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_obsidian.png
new file mode 100644
index 0000000..2fc737c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_silver.png
new file mode 100644
index 0000000..f73e3cc
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/gray/shulker_gray_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_copper.png
new file mode 100644
index 0000000..dc9b554
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_crystal.png
new file mode 100644
index 0000000..b1086f5
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_diamond.png
new file mode 100644
index 0000000..56031cf
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_gold.png
new file mode 100644
index 0000000..4c3a012
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_iron.png
new file mode 100644
index 0000000..03ba66f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_obsidian.png
new file mode 100644
index 0000000..5b5bac2
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_silver.png
new file mode 100644
index 0000000..8a24ba1
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/green/shulker_green_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_copper.png
new file mode 100644
index 0000000..8ac1c8b
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_crystal.png
new file mode 100644
index 0000000..769ba59
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_diamond.png
new file mode 100644
index 0000000..e5777c0
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_gold.png
new file mode 100644
index 0000000..129230f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_iron.png
new file mode 100644
index 0000000..88e7040
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_obsidian.png
new file mode 100644
index 0000000..3ce5604
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_silver.png
new file mode 100644
index 0000000..6106ce1
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/light_blue/shulker_light_blue_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_copper.png
new file mode 100644
index 0000000..685fa1b
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_crystal.png
new file mode 100644
index 0000000..ae5730c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_diamond.png
new file mode 100644
index 0000000..f25e06b
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_gold.png
new file mode 100644
index 0000000..74eac84
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_iron.png
new file mode 100644
index 0000000..9628237
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_obsidian.png
new file mode 100644
index 0000000..e105a8e
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_silver.png
new file mode 100644
index 0000000..b0e4aec
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/lime/shulker_lime_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_copper.png
new file mode 100644
index 0000000..a75e99c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_crystal.png
new file mode 100644
index 0000000..90f3b43
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_diamond.png
new file mode 100644
index 0000000..a5c3b13
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_gold.png
new file mode 100644
index 0000000..9779061
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_iron.png
new file mode 100644
index 0000000..1fd56d1
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_obsidian.png
new file mode 100644
index 0000000..2d02c34
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_silver.png
new file mode 100644
index 0000000..6aa40c2
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/magenta/shulker_magenta_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_copper.png
new file mode 100644
index 0000000..4e4538c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_crystal.png
new file mode 100644
index 0000000..2f7c58c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_diamond.png
new file mode 100644
index 0000000..7eea8f8
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_gold.png
new file mode 100644
index 0000000..03c738d
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_iron.png
new file mode 100644
index 0000000..a58329d
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_obsidian.png
new file mode 100644
index 0000000..bdce3fc
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_silver.png
new file mode 100644
index 0000000..3343cf2
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/orange/shulker_orange_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_copper.png
new file mode 100644
index 0000000..cd5eac0
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_crystal.png
new file mode 100644
index 0000000..9e14424
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_diamond.png
new file mode 100644
index 0000000..e9bd16f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_gold.png
new file mode 100644
index 0000000..ee7b20c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_iron.png
new file mode 100644
index 0000000..68f7fa8
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_obsidian.png
new file mode 100644
index 0000000..94e2b70
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_silver.png
new file mode 100644
index 0000000..3e75c46
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/pink/shulker_pink_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_copper.png
new file mode 100644
index 0000000..f4d329d
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_crystal.png
new file mode 100644
index 0000000..7725806
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_diamond.png
new file mode 100644
index 0000000..62b29cd
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_gold.png
new file mode 100644
index 0000000..eba9229
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_iron.png
new file mode 100644
index 0000000..1eec057
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_obsidian.png
new file mode 100644
index 0000000..9c5e91a
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_silver.png
new file mode 100644
index 0000000..9696f10
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/purple/shulker_purple_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_copper.png
new file mode 100644
index 0000000..d8c0ae8
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_crystal.png
new file mode 100644
index 0000000..df51f74
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_diamond.png
new file mode 100644
index 0000000..246d020
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_gold.png
new file mode 100644
index 0000000..b2414d9
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_iron.png
new file mode 100644
index 0000000..debb62c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_obsidian.png
new file mode 100644
index 0000000..52c08aa
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_silver.png
new file mode 100644
index 0000000..660269b
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/red/shulker_red_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_copper.png
new file mode 100644
index 0000000..ac0e5d2
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_crystal.png
new file mode 100644
index 0000000..05d20bb
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_diamond.png
new file mode 100644
index 0000000..5415c21
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_gold.png
new file mode 100644
index 0000000..0bce8d3
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_iron.png
new file mode 100644
index 0000000..cd024b0
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_obsidian.png
new file mode 100644
index 0000000..45bd925
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_silver.png
new file mode 100644
index 0000000..7f548f1
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/silver/shulker_silver_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_copper.png
new file mode 100644
index 0000000..f15c684
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_crystal.png
new file mode 100644
index 0000000..417ed2f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_diamond.png
new file mode 100644
index 0000000..6e76b1f
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_gold.png
new file mode 100644
index 0000000..cabc5fb
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_iron.png
new file mode 100644
index 0000000..883ddd3
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_obsidian.png
new file mode 100644
index 0000000..299ff86
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_silver.png
new file mode 100644
index 0000000..5eaa773
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/white/shulker_white_silver.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_copper.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_copper.png
new file mode 100644
index 0000000..3552d94
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_copper.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_crystal.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_crystal.png
new file mode 100644
index 0000000..f44fa93
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_crystal.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_diamond.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_diamond.png
new file mode 100644
index 0000000..0434c5c
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_diamond.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_gold.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_gold.png
new file mode 100644
index 0000000..a7a9cfd
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_gold.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_iron.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_iron.png
new file mode 100644
index 0000000..65b5759
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_iron.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_obsidian.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_obsidian.png
new file mode 100644
index 0000000..252a5a7
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_obsidian.png differ
diff --git a/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_silver.png b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_silver.png
new file mode 100644
index 0000000..19d4850
Binary files /dev/null and b/src/main/resources/assets/ironchest/textures/model/shulker/yellow/shulker_yellow_silver.png differ