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.client.renderer.shulker; + +import java.util.Random; + +import com.google.common.primitives.SignedBytes; + +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.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelShulker; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.entity.RenderEntityItem; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ResourceLocation; + +public class TileEntityIronShulkerBoxRenderer extends TileEntitySpecialRenderer +{ + private Random random; + + private RenderEntityItem itemRenderer; + + private final ModelShulker model; + + //@formatter:off + private static float[][] shifts = { { 0.3F, 0.45F, 0.3F }, { 0.7F, 0.45F, 0.3F }, { 0.3F, 0.45F, 0.7F }, { 0.7F, 0.45F, 0.7F }, { 0.3F, 0.1F, 0.3F }, { 0.7F, 0.1F, 0.3F }, { 0.3F, 0.1F, 0.7F }, { 0.7F, 0.1F, 0.7F }, { 0.5F, 0.32F, 0.5F } }; + //@formatter:on + + private static EntityItem customitem = new EntityItem(null); + + public TileEntityIronShulkerBoxRenderer() + { + this.model = new ModelShulker(); + this.random = new Random(); + } + + @Override + public void renderTileEntityAt(TileEntityIronShulkerBox te, double x, double y, double z, float partialTicks, int destroyStage) + { + if (te == null || te.isInvalid()) + { + return; + } + + EnumFacing facing = EnumFacing.UP; + IronShulkerBoxType type = te.getType(); + + if (te.hasWorld()) + { + IBlockState iblockstate = this.getWorld().getBlockState(te.getPos()); + + if (iblockstate.getBlock() instanceof BlockIronShulkerBox) + { + facing = te.getFacing(); + type = iblockstate.getValue(BlockIronShulkerBox.VARIANT_PROP); + } + } + + GlStateManager.enableDepth(); + GlStateManager.depthFunc(515); + GlStateManager.depthMask(true); + GlStateManager.disableCull(); + + if (destroyStage >= 0) + { + this.bindTexture(DESTROY_STAGES[destroyStage]); + GlStateManager.matrixMode(5890); + GlStateManager.pushMatrix(); + GlStateManager.scale(4.0F, 4.0F, 1.0F); + GlStateManager.translate(0.0625F, 0.0625F, 0.0625F); + GlStateManager.matrixMode(5888); + } + else + { + //@formatter:off + ResourceLocation rs = new ResourceLocation("ironchest", "textures/model/shulker/" + te.getColor().getName() + "/shulker_" + te.getColor().getName() + type.modelTexture); + //@formatter:on + + this.bindTexture(rs); + } + + GlStateManager.pushMatrix(); + GlStateManager.enableRescaleNormal(); + + if (destroyStage < 0) + { + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + } + + GlStateManager.translate((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); + GlStateManager.scale(1.0F, -1.0F, -1.0F); + GlStateManager.translate(0.0F, 1.0F, 0.0F); + GlStateManager.scale(0.9995F, 0.9995F, 0.9995F); + GlStateManager.translate(0.0F, -1.0F, 0.0F); + + switch (facing) + { + case DOWN: + GlStateManager.translate(0.0F, 2.0F, 0.0F); + GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F); + case UP: + default: + break; + case NORTH: + GlStateManager.translate(0.0F, 1.0F, 1.0F); + GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F); + break; + case SOUTH: + GlStateManager.translate(0.0F, 1.0F, -1.0F); + GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); + break; + case WEST: + GlStateManager.translate(-1.0F, 1.0F, 0.0F); + GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(-90.0F, 0.0F, 0.0F, 1.0F); + break; + case EAST: + GlStateManager.translate(1.0F, 1.0F, 0.0F); + GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(90.0F, 0.0F, 0.0F, 1.0F); + } + + this.model.base.render(0.0625F); + GlStateManager.translate(0.0F, -te.getProgress(partialTicks) * 0.5F, 0.0F); + GlStateManager.rotate(270.0F * te.getProgress(partialTicks), 0.0F, 1.0F, 0.0F); + this.model.lid.render(0.0625F); + GlStateManager.enableCull(); + GlStateManager.disableRescaleNormal(); + GlStateManager.popMatrix(); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + + if (destroyStage >= 0) + { + GlStateManager.matrixMode(5890); + GlStateManager.popMatrix(); + GlStateManager.matrixMode(5888); + } + + if (type == IronShulkerBoxType.CRYSTAL) + { + GlStateManager.enableCull(); + } + + if (type.isTransparent() && te.getDistanceSq(this.rendererDispatcher.entityX, this.rendererDispatcher.entityY, this.rendererDispatcher.entityZ) < 128d) + { + this.random.setSeed(254L); + + float shiftX; + float shiftY; + float shiftZ; + int shift = 0; + float blockScale = 0.70F; + float timeD = (float) (360D * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL) - partialTicks; + + if (te.getTopItems().get(1).isEmpty()) + { + shift = 8; + blockScale = 0.85F; + } + + GlStateManager.pushMatrix(); + GlStateManager.translate((float) x, (float) y, (float) z); + + customitem.setWorld(this.getWorld()); + customitem.hoverStart = 0F; + + for (ItemStack item : te.getTopItems()) + { + if (shift > shifts.length) + { + break; + } + + if (item.isEmpty()) + { + shift++; + continue; + } + + shiftX = shifts[shift][0]; + shiftY = shifts[shift][1]; + shiftZ = shifts[shift][2]; + shift++; + + GlStateManager.pushMatrix(); + GlStateManager.translate(shiftX, shiftY, shiftZ); + GlStateManager.rotate(timeD, 0F, 1F, 0F); + GlStateManager.scale(blockScale, blockScale, blockScale); + + customitem.setEntityItemStack(item); + + if (this.itemRenderer == null) + { + this.itemRenderer = new RenderEntityItem(Minecraft.getMinecraft().getRenderManager(), Minecraft.getMinecraft().getRenderItem()) { + @Override + public int getModelCount(ItemStack stack) + { + return SignedBytes.saturatedCast(Math.min(stack.getCount() / 32, 15) + 1); + } + + @Override + public boolean shouldBob() + { + return false; + } + + @Override + public boolean shouldSpreadItems() + { + return true; + } + }; + } + + this.itemRenderer.doRender(customitem, 0D, 0D, 0D, 0F, partialTicks); + + GlStateManager.popMatrix(); + } + + GlStateManager.popMatrix(); + } + } +} diff --git a/src/main/java/cpw/mods/ironchest/CommonProxy.java b/src/main/java/cpw/mods/ironchest/common/CommonProxy.java old mode 100755 new mode 100644 similarity index 69% rename from src/main/java/cpw/mods/ironchest/CommonProxy.java rename to src/main/java/cpw/mods/ironchest/common/CommonProxy.java index 505be12..4266c6c --- a/src/main/java/cpw/mods/ironchest/CommonProxy.java +++ b/src/main/java/cpw/mods/ironchest/common/CommonProxy.java @@ -8,8 +8,12 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common; +import cpw.mods.ironchest.common.gui.chest.ContainerIronChest; +import cpw.mods.ironchest.common.gui.shulker.ContainerIronShulkerBox; +import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest; +import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; @@ -32,14 +36,27 @@ public class CommonProxy implements IGuiHandler public Object getServerGuiElement(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) { TileEntityIronChest icte = (TileEntityIronChest) te; + return new ContainerIronChest(player.inventory, icte, icte.getType(), 0, 0); } + else if (te != null && te instanceof TileEntityIronShulkerBox) + { + TileEntityIronShulkerBox icte = (TileEntityIronShulkerBox) te; + + return new ContainerIronShulkerBox(player.inventory, icte, icte.getType(), 0, 0); + } else { return null; } } + + public World getClientWorld() + { + return null; + } } \ No newline at end of file diff --git a/src/main/java/cpw/mods/ironchest/common/ICContent.java b/src/main/java/cpw/mods/ironchest/common/ICContent.java new file mode 100644 index 0000000..72fce4d --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/ICContent.java @@ -0,0 +1,222 @@ +/******************************************************************************* + * 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; + +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 SHULKER_BLOCKS = Lists.newArrayList(); + public static final List SHULKER_ITEM_BLOCKS = Lists.newArrayList(); + + public static final List VANILLA_SHULKER_BLOCKS = Lists.newArrayList(); + public static final List VANILLA_SHULKER_COLORS = Lists.newArrayList(); + + public static void preInit() + { + // Chests Start + ChestChangerType.buildItems(); + + ironChestBlock = GameRegistry.register(new BlockIronChest()); + ironChestItemBlock = GameRegistry.register(new ItemIronChest(ironChestBlock)); + + for (IronChestType typ : IronChestType.VALUES) + { + if (typ.clazz != null) + { + GameRegistry.registerTileEntity(typ.clazz, "IronChest." + typ.name()); + } + } + + IronChestType.registerBlocksAndRecipes(ironChestBlock); + ChestChangerType.generateRecipes(); + // Chests End + + // Shulkers Start + setVanillaShulkerList(); + + ShulkerBoxChangerType.buildItems(); + + registerShulkerBlocks(); + + registerShulkerItemBlocks(); + + for (IronShulkerBoxType typ : IronShulkerBoxType.VALUES) + { + if (typ.clazz != null) + { + GameRegistry.registerTileEntity(typ.clazz, "IronShulkerBox." + typ.name()); + } + } + + for (int i = 0; i < ICContent.SHULKER_BLOCKS.size(); i++) + { + IronShulkerBoxType.registerBlocksAndRecipes((BlockIronShulkerBox) SHULKER_BLOCKS.get(i), (BlockShulkerBox) VANILLA_SHULKER_BLOCKS.get(i)); + } + + for (ItemBlock block : SHULKER_ITEM_BLOCKS) + { + BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(block, new BehaviorDispenseIronShulkerBox()); + } + + GameRegistry.addRecipe(new IronShulkerBoxColoring()); + RecipeSorter.register(IronChest.MOD_ID, IronShulkerBoxColoring.class, Category.SHAPELESS, "after:forge:shapelessore"); + + ShulkerBoxChangerType.generateRecipes(); + // Shulkers End + + tabGeneral.setDisplayIcon(new ItemStack(ironChestBlock, 1, IronChestType.IRON.ordinal())); + } + + private static void registerShulkerBlocks() + { + SHULKER_BLOCKS.add(ironShulkerBoxWhiteBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.WHITE))); + SHULKER_BLOCKS.add(ironShulkerBoxOrangeBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.ORANGE))); + SHULKER_BLOCKS.add(ironShulkerBoxMagentaBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.MAGENTA))); + SHULKER_BLOCKS.add(ironShulkerBoxLightBlueBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.LIGHT_BLUE))); + SHULKER_BLOCKS.add(ironShulkerBoxYellowBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.YELLOW))); + SHULKER_BLOCKS.add(ironShulkerBoxLimeBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.LIME))); + SHULKER_BLOCKS.add(ironShulkerBoxPinkBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.PINK))); + SHULKER_BLOCKS.add(ironShulkerBoxGrayBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.GRAY))); + SHULKER_BLOCKS.add(ironShulkerBoxSilverBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.SILVER))); + SHULKER_BLOCKS.add(ironShulkerBoxCyanBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.CYAN))); + SHULKER_BLOCKS.add(ironShulkerBoxPurpleBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.PURPLE))); + SHULKER_BLOCKS.add(ironShulkerBoxBlueBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.BLUE))); + SHULKER_BLOCKS.add(ironShulkerBoxBrownBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.BROWN))); + SHULKER_BLOCKS.add(ironShulkerBoxGreenBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.GREEN))); + SHULKER_BLOCKS.add(ironShulkerBoxRedBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.RED))); + SHULKER_BLOCKS.add(ironShulkerBoxBlackBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.BLACK))); + } + + private static void registerShulkerItemBlocks() + { + //@formatter:off + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxWhiteItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxWhiteBlock, EnumDyeColor.WHITE))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxOrangeItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxOrangeBlock, EnumDyeColor.ORANGE))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxMagentaItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxMagentaBlock, EnumDyeColor.MAGENTA))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxLightBlueItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxLightBlueBlock, EnumDyeColor.LIGHT_BLUE))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxYellowItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxYellowBlock, EnumDyeColor.YELLOW))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxLimeItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxLimeBlock, EnumDyeColor.LIME))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxPinkItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxPinkBlock, EnumDyeColor.PINK))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxGrayItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxGrayBlock, EnumDyeColor.GRAY))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxSilverItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxSilverBlock, EnumDyeColor.SILVER))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxCyanItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxCyanBlock, EnumDyeColor.CYAN))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxPurpleItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxPurpleBlock, EnumDyeColor.PURPLE))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxBlueItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxBlueBlock, EnumDyeColor.BLUE))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxBrownItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxBrownBlock, EnumDyeColor.BROWN))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxGreenItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxGreenBlock, EnumDyeColor.GREEN))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxRedItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxRedBlock, EnumDyeColor.RED))); + SHULKER_ITEM_BLOCKS.add(ironShulkerBoxBlackItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxBlackBlock, EnumDyeColor.BLACK))); + //@formatter:on + } + + private static void setVanillaShulkerList() + { + VANILLA_SHULKER_BLOCKS.add(Blocks.WHITE_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.ORANGE_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.MAGENTA_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.LIGHT_BLUE_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.YELLOW_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.LIME_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.PINK_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.GRAY_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.SILVER_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.CYAN_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.PURPLE_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.BLUE_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.BROWN_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.GREEN_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.RED_SHULKER_BOX); + VANILLA_SHULKER_BLOCKS.add(Blocks.BLACK_SHULKER_BOX); + + VANILLA_SHULKER_COLORS.add(EnumDyeColor.WHITE); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.ORANGE); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.MAGENTA); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.LIGHT_BLUE); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.YELLOW); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.LIME); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.PINK); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.GRAY); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.SILVER); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.CYAN); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.PURPLE); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.BLUE); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.BROWN); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.GREEN); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.RED); + VANILLA_SHULKER_COLORS.add(EnumDyeColor.BLACK); + } +} diff --git a/src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java b/src/main/java/cpw/mods/ironchest/common/ai/IronChestAIOcelotSit.java old mode 100755 new mode 100644 similarity index 63% rename from src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java rename to src/main/java/cpw/mods/ironchest/common/ai/IronChestAIOcelotSit.java index 50cbf5d..11ea4e9 --- a/src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java +++ b/src/main/java/cpw/mods/ironchest/common/ai/IronChestAIOcelotSit.java @@ -1,5 +1,17 @@ -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.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 VARIANT_PROP = PropertyEnum.create("variant", IronShulkerBoxType.class); + private final EnumDyeColor color; + private EnumFacing facingDirection; + + public BlockIronShulkerBox(EnumDyeColor colorIn) + { + super(Material.IRON); + + this.color = colorIn; + this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_shulker_box_" + colorIn.getName())); + this.setUnlocalizedName("IronShulkerBox" + colorIn.getName()); + this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronShulkerBoxType.IRON)); + this.setHardness(3.0F); + this.setCreativeTab(ICContent.tabGeneral); + } + + /** + * Used to determine ambient occlusion and culling when rebuilding chunks for render + */ + @Override + public boolean isOpaqueCube(IBlockState state) + { + return false; + } + + @Override + public boolean causesSuffocation(IBlockState state) + { + return true; + } + + @Override + public boolean isFullCube(IBlockState state) + { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean hasCustomBreakingProgress(IBlockState state) + { + return true; + } + + /** + * The type of render function called. MODEL for mixed tesr and static model, MODELBLOCK_ANIMATED for TESR-only, LIQUID for vanilla liquids, INVISIBLE to skip all rendering + */ + @Override + public EnumBlockRenderType getRenderType(IBlockState state) + { + return EnumBlockRenderType.ENTITYBLOCK_ANIMATED; + } + + @Override + //@formatter:off + public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY) + //@formatter:on + { + if (worldIn.isRemote) + { + return true; + } + else if (playerIn.isSpectator()) + { + return true; + } + else + { + TileEntity tileentity = worldIn.getTileEntity(pos); + + if (tileentity instanceof TileEntityIronShulkerBox) + { + EnumFacing enumfacing = ((TileEntityIronShulkerBox) tileentity).getFacing(); + boolean flag; + + if (((TileEntityIronShulkerBox) tileentity).getAnimationStatus() == TileEntityIronShulkerBox.AnimationStatus.CLOSED) + { + //@formatter:off + AxisAlignedBB axisalignedbb = FULL_BLOCK_AABB.addCoord(0.5F * enumfacing.getFrontOffsetX(), 0.5F * enumfacing.getFrontOffsetY(), 0.5F * enumfacing.getFrontOffsetZ()).contract(enumfacing.getFrontOffsetX(), enumfacing.getFrontOffsetY(), enumfacing.getFrontOffsetZ()); + //@formatter:on + + flag = !worldIn.collidesWithAnyBlock(axisalignedbb.offset(pos.offset(enumfacing))); + } + else + { + flag = true; + } + + if (flag) + { + //@formatter:off + playerIn.openGui(IronChest.instance, ((TileEntityIronShulkerBox) tileentity).getType().ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ()); + //@formatter:on + } + + return true; + } + else + { + return false; + } + } + } + + @Override + public boolean hasTileEntity(IBlockState state) + { + return true; + } + + @Override + public TileEntity createTileEntity(World world, IBlockState state) + { + return state.getValue(VARIANT_PROP).makeEntity(this.color); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item itemIn, CreativeTabs tab, NonNullList list) + { + for (IronShulkerBoxType type : IronShulkerBoxType.VALUES) + { + if (type.isValidForCreativeMode()) + { + list.add(new ItemStack(itemIn, 1, type.ordinal())); + } + } + } + + @Override + public IBlockState getStateFromMeta(int meta) + { + return this.getDefaultState().withProperty(VARIANT_PROP, IronShulkerBoxType.VALUES[meta]); + } + + @Override + public int getMetaFromState(IBlockState blockState) + { + return blockState.getValue(VARIANT_PROP).ordinal(); + } + + @Override + protected BlockStateContainer createBlockState() + { + return new BlockStateContainer(this, VARIANT_PROP); + } + + @Override + //@formatter:off + public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) + //@formatter:on + { + this.facingDirection = facing; + + return super.getStateForPlacement(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer); + } + + @Override + public void onBlockAdded(World world, BlockPos pos, IBlockState state) + { + super.onBlockAdded(world, pos, state); + + world.notifyBlockUpdate(pos, state, state, 3); + } + + /** + * Called by ItemBlocks after a block is set in the world, to allow post-place logic + */ + @Override + public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) + { + if (stack.hasDisplayName()) + { + TileEntity tileentity = worldIn.getTileEntity(pos); + + if (tileentity instanceof TileEntityIronShulkerBox) + { + ((TileEntityIronShulkerBox) tileentity).setCustomName(stack.getDisplayName()); + + ((TileEntityIronShulkerBox) tileentity).setFacing(facingDirection); + + worldIn.notifyBlockUpdate(pos, state, state, 3); + } + } + else + { + TileEntity tileentity = worldIn.getTileEntity(pos); + + if (tileentity instanceof TileEntityIronShulkerBox) + { + TileEntityIronShulkerBox teic = (TileEntityIronShulkerBox) tileentity; + + teic.setFacing(facingDirection); + + worldIn.notifyBlockUpdate(pos, state, state, 3); + } + } + } + + @Override + public int damageDropped(IBlockState state) + { + return state.getValue(VARIANT_PROP).ordinal(); + } + + @Override + public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) + { + TileEntityIronShulkerBox tileentityironshulkerbox = (TileEntityIronShulkerBox) worldIn.getTileEntity(pos); + + tileentityironshulkerbox.setDestroyedByCreativePlayer(player.capabilities.isCreativeMode); + tileentityironshulkerbox.fillWithLoot(player); + } + + /** + * Spawns this Block's drops into the World as EntityItems. + */ + @Override + public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune) + { + } + + /** + * Called serverside after this block is replaced with another in Chunk, but before the Tile Entity is updated + */ + @Override + public void breakBlock(World worldIn, BlockPos pos, IBlockState state) + { + TileEntity tileentity = worldIn.getTileEntity(pos); + + if (tileentity instanceof TileEntityIronShulkerBox) + { + TileEntityIronShulkerBox tileentityironshulkerbox = (TileEntityIronShulkerBox) tileentity; + + if (!tileentityironshulkerbox.isCleared() && tileentityironshulkerbox.shouldDrop()) + { + if (!tileentityironshulkerbox.beenUpgraded()) + { + ItemStack itemstack = new ItemStack(Item.getItemFromBlock(this), 1, state.getValue(VARIANT_PROP).ordinal()); + NBTTagCompound nbttagcompound = new NBTTagCompound(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + nbttagcompound.setTag("BlockEntityTag", ((TileEntityIronShulkerBox) tileentity).saveToNbt(nbttagcompound1)); + itemstack.setTagCompound(nbttagcompound); + + if (tileentityironshulkerbox.hasCustomName()) + { + itemstack.setStackDisplayName(tileentityironshulkerbox.getName()); + + tileentityironshulkerbox.setCustomName(""); + } + + spawnAsEntity(worldIn, pos, itemstack); + } + } + + worldIn.updateComparatorOutputLevel(pos, state.getBlock()); + } + + super.breakBlock(worldIn, pos, state); + } + + @Override + public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion) + { + TileEntity te = world.getTileEntity(pos); + + if (te instanceof TileEntityIronShulkerBox) + { + TileEntityIronShulkerBox teic = (TileEntityIronShulkerBox) te; + + if (teic.getType().isExplosionResistant()) + { + return 10000F; + } + } + + return super.getExplosionResistance(world, pos, exploder, explosion); + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) + { + super.addInformation(stack, player, tooltip, advanced); + + NBTTagCompound nbttagcompound = stack.getTagCompound(); + + if (nbttagcompound != null && nbttagcompound.hasKey("BlockEntityTag", 10)) + { + NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("BlockEntityTag"); + + if (nbttagcompound1.hasKey("LootTable", 8)) + { + tooltip.add("???????"); + } + + if (nbttagcompound1.hasKey("Items", 9)) + { + if (nbttagcompound1.hasKey("ShulkerBoxSize", 3)) + { + NonNullList nonnulllist = NonNullList. withSize(nbttagcompound1.getInteger("ShulkerBoxSize"), ItemStack.EMPTY); + ItemStackHelper.loadAllItems(nbttagcompound1, nonnulllist); + int i = 0; + int j = 0; + + for (ItemStack itemstack : nonnulllist) + { + if (!itemstack.isEmpty()) + { + ++j; + + if (i <= 4) + { + ++i; + tooltip.add(String.format("%s x%d", new Object[] { itemstack.getDisplayName(), Integer.valueOf(itemstack.getCount()) })); + } + } + } + + if (j - i > 0) + { + //@formatter:off + tooltip.add(String.format(TextFormatting.ITALIC + I18n.translateToLocal("container.shulkerBox.more"), new Object[] {Integer.valueOf(j - i)})); + //@formatter:on + } + } + } + } + } + + @Override + public EnumPushReaction getMobilityFlag(IBlockState state) + { + return EnumPushReaction.DESTROY; + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) + { + TileEntity tileentity = source.getTileEntity(pos); + + return tileentity instanceof TileEntityIronShulkerBox ? ((TileEntityIronShulkerBox) tileentity).getBoundingBox() : FULL_BLOCK_AABB; + } + + @Override + public boolean hasComparatorInputOverride(IBlockState state) + { + return true; + } + + @Override + public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos) + { + return Container.calcRedstoneFromInventory((IInventory) worldIn.getTileEntity(pos)); + } + + @Override + public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) + { + ItemStack itemstack = super.getItem(worldIn, pos, state); + TileEntityIronShulkerBox tileentityironshulkerbox = (TileEntityIronShulkerBox) worldIn.getTileEntity(pos); + NBTTagCompound nbttagcompound = tileentityironshulkerbox.saveToNbt(new NBTTagCompound()); + + if (!nbttagcompound.hasNoTags()) + { + itemstack.setTagInfo("BlockEntityTag", nbttagcompound); + } + + return itemstack; + } + + public static Block getBlockByColor(EnumDyeColor colorIn) + { + switch (colorIn) + { + case WHITE: + return ICContent.ironShulkerBoxWhiteBlock; + case ORANGE: + return ICContent.ironShulkerBoxOrangeBlock; + case MAGENTA: + return ICContent.ironShulkerBoxMagentaBlock; + case LIGHT_BLUE: + return ICContent.ironShulkerBoxLightBlueBlock; + case YELLOW: + return ICContent.ironShulkerBoxYellowBlock; + case LIME: + return ICContent.ironShulkerBoxLimeBlock; + case PINK: + return ICContent.ironShulkerBoxPinkBlock; + case GRAY: + return ICContent.ironShulkerBoxGrayBlock; + case SILVER: + return ICContent.ironShulkerBoxSilverBlock; + case CYAN: + return ICContent.ironShulkerBoxCyanBlock; + case PURPLE: + default: + return ICContent.ironShulkerBoxPurpleBlock; + case BLUE: + return ICContent.ironShulkerBoxBlueBlock; + case BROWN: + return ICContent.ironShulkerBoxBrownBlock; + case GREEN: + return ICContent.ironShulkerBoxGreenBlock; + case RED: + return ICContent.ironShulkerBoxRedBlock; + case BLACK: + return ICContent.ironShulkerBoxBlackBlock; + } + } + + public static ItemStack getColoredItemStack(EnumDyeColor colorIn, int damageIn) + { + return new ItemStack(getBlockByColor(colorIn), 1, damageIn); + } + + @SideOnly(Side.CLIENT) + public static EnumDyeColor getColorFromBlock(Block blockIn) + { + return blockIn instanceof BlockIronShulkerBox ? ((BlockIronShulkerBox) blockIn).getColor() : EnumDyeColor.PURPLE; + } + + @SideOnly(Side.CLIENT) + public EnumDyeColor getColor() + { + return this.color; + } + + @Override + @Deprecated + 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/common/blocks/shulker/IronShulkerBoxType.java b/src/main/java/cpw/mods/ironchest/common/blocks/shulker/IronShulkerBoxType.java new file mode 100644 index 0000000..fbaf4f8 --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/blocks/shulker/IronShulkerBoxType.java @@ -0,0 +1,233 @@ +/******************************************************************************* + * 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.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 clazz; + + public final int xSize; + + public final int ySize; + + public final Collection matList; + + public final Collection recipes; + + private String breakTexture; + + //@formatter:off + IronShulkerBoxType(int size, int rowLength, boolean tieredChest, String modelTexture, Class clazz, int xSize, int ySize, Collection mats, String... recipes) + //@formatter:on + { + this.name = this.name().toLowerCase(); + this.size = size; + this.rowLength = rowLength; + this.tieredChest = tieredChest; + this.modelTexture = modelTexture; + this.clazz = clazz; + this.xSize = xSize; + this.ySize = ySize; + this.matList = Collections.unmodifiableCollection(mats); + this.recipes = Collections.unmodifiableCollection(Arrays.asList(recipes)); + } + + @Override + public String getName() + { + return this.name; + } + + public String getBreakTexture() + { + if (this.breakTexture == null) + { + switch (this) + { + case OBSIDIAN: + { + this.breakTexture = "minecraft:blocks/obsidian"; + break; + } + case VANILLA: + { + this.breakTexture = "minecraft:blocks/planks_oak"; + break; + } + default: + { + this.breakTexture = "ironchest:blocks/" + this.getName() + "break"; + } + } + } + + return this.breakTexture; + } + + public static void registerBlocksAndRecipes(BlockIronShulkerBox blockResult, BlockShulkerBox shulkerBox) + { + Object previous = shulkerBox; + + for (IronShulkerBoxType typ : values()) + { + generateRecipesForType(blockResult, previous, typ); + + ItemStack chest = new ItemStack(blockResult, 1, typ.ordinal()); + + if (typ.tieredChest) + { + previous = chest; + } + } + } + + public static void generateRecipesForType(BlockIronShulkerBox blockResult, Object previousTier, IronShulkerBoxType type) + { + for (String recipe : type.recipes) + { + 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 */ + '1', new ItemStack(blockResult, 1, 1), /* Gold Chest */ + '2', new ItemStack(blockResult, 1, 2), /* Diamond Chest */ + '3', new ItemStack(blockResult, 1, 3), /* Copper Chest */ + '4', new ItemStack(blockResult, 1, 4) /* Silver Chest */ + ); + //@formatter:on + } + } + } + + public static Object translateOreName(String mat) + { + if (mat.equals("shulkerBox")) + { + return Blocks.PURPLE_SHULKER_BOX; + } + + if (mat.equals("obsidian")) + { + return Blocks.OBSIDIAN; + } + + return mat; + } + + public static void addRecipe(ItemStack is, Object... parts) + { + ShapedOreRecipe oreRecipe = new ShapedOreRecipe(is, parts); + + GameRegistry.addRecipe(oreRecipe); + } + + public int getRowCount() + { + return this.size / this.rowLength; + } + + public boolean isTransparent() + { + return this == CRYSTAL; + } + + public boolean isValidForCreativeMode() + { + return this != VANILLA; + } + + public boolean isExplosionResistant() + { + return this == OBSIDIAN; + } + + public Slot makeSlot(IInventory chestInventory, int index, int x, int y) + { + return new ValidatingShulkerBoxSlot(chestInventory, index, x, y); + } + + public TileEntityIronShulkerBox makeEntity(EnumDyeColor colorIn) + { + switch (this) + { + case IRON: + return new TileEntityIronShulkerBox(colorIn); + case GOLD: + return new TileEntityGoldShulkerBox(colorIn); + case DIAMOND: + return new TileEntityDiamondShulkerBox(colorIn); + case COPPER: + return new TileEntityCopperShulkerBox(colorIn); + case SILVER: + return new TileEntitySilverShulkerBox(colorIn); + case CRYSTAL: + return new TileEntityCrystalShulkerBox(colorIn); + case OBSIDIAN: + return new TileEntityObsidianShulkerBox(colorIn); + default: + return null; + } + } +} diff --git a/src/main/java/cpw/mods/ironchest/common/crafting/IronShulkerBoxColoring.java b/src/main/java/cpw/mods/ironchest/common/crafting/IronShulkerBoxColoring.java new file mode 100644 index 0000000..6abb3c0 --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/crafting/IronShulkerBoxColoring.java @@ -0,0 +1,136 @@ +/******************************************************************************* + * 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.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 getRemainingItems(InventoryCrafting inv) + { + NonNullList nonnulllist = NonNullList. withSize(inv.getSizeInventory(), ItemStack.EMPTY); + + for (int i = 0; i < nonnulllist.size(); ++i) + { + ItemStack itemstack = inv.getStackInSlot(i); + + if (itemstack.getItem().hasContainerItem(itemstack)) + { + nonnulllist.set(i, new ItemStack(itemstack.getItem().getContainerItem())); + } + } + + return nonnulllist; + } +} diff --git a/src/main/java/cpw/mods/ironchest/ContainerIronChest.java b/src/main/java/cpw/mods/ironchest/common/gui/chest/ContainerIronChest.java old mode 100755 new mode 100644 similarity index 93% rename from src/main/java/cpw/mods/ironchest/ContainerIronChest.java rename to src/main/java/cpw/mods/ironchest/common/gui/chest/ContainerIronChest.java index 6ee41f7..019045f --- a/src/main/java/cpw/mods/ironchest/ContainerIronChest.java +++ b/src/main/java/cpw/mods/ironchest/common/gui/chest/ContainerIronChest.java @@ -8,8 +8,9 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.gui.chest; +import cpw.mods.ironchest.common.blocks.chest.IronChestType; import invtweaks.api.container.ChestContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -108,11 +109,13 @@ public class ContainerIronChest extends Container } int leftCol = (xSize - 162) / 2 + 1; + for (int playerInvRow = 0; playerInvRow < 3; playerInvRow++) { for (int playerInvCol = 0; playerInvCol < 9; playerInvCol++) { - this.addSlotToContainer(new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10)); + this.addSlotToContainer( + new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10)); } } diff --git a/src/main/java/cpw/mods/ironchest/common/gui/chest/slot/ValidatingChestSlot.java b/src/main/java/cpw/mods/ironchest/common/gui/chest/slot/ValidatingChestSlot.java new file mode 100644 index 0000000..1985faa --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/gui/chest/slot/ValidatingChestSlot.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * 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.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 shulkerBoxContents = NonNullList. withSize(27, ItemStack.EMPTY); + EnumFacing shulkerBoxFacing = EnumFacing.UP; + EnumDyeColor shulkerBoxColor = EnumDyeColor.PURPLE; + + if (te != null) + { + if (te instanceof TileEntityIronShulkerBox) + { + shulkerBoxContents = ((TileEntityIronShulkerBox) te).getItems(); + shulkerBoxFacing = ((TileEntityIronShulkerBox) te).getFacing(); + shulkerBoxColor = getColorFromTileEntity(te, worldIn); + ((TileEntityIronShulkerBox) te).setHasBeenUpgraded(); + + newShulkerBox = this.type.target.makeEntity(shulkerBoxColor); + + if (newShulkerBox == null) + { + return EnumActionResult.PASS; + } + } + else if (te instanceof TileEntityShulkerBox) + { + IBlockState shulkerBoxState = worldIn.getBlockState(pos); + shulkerBoxFacing = shulkerBoxState.getValue(BlockShulkerBox.FACING); + TileEntityShulkerBox shulkerBox = (TileEntityShulkerBox) te; + + if (!this.type.canUpgrade(IronShulkerBoxType.VANILLA)) + { + return EnumActionResult.PASS; + } + + shulkerBoxContents = NonNullList. withSize(shulkerBox.getSizeInventory(), ItemStack.EMPTY); + + for (int i = 0; i < shulkerBoxContents.size(); i++) + { + shulkerBoxContents.set(i, shulkerBox.getStackInSlot(i)); + } + + shulkerBoxColor = getColorFromTileEntity(te, worldIn); + + shulkerBox.clear(); + shulkerBox.setDestroyedByCreativePlayer(true); + + newShulkerBox = this.type.target.makeEntity(shulkerBoxColor); + } + } + + te.updateContainingBlockInfo(); + + worldIn.setBlockToAir(pos); + + IBlockState iblockstate = null; + + if (ICContent.SHULKER_BLOCKS.get(shulkerBoxColor.getMetadata()) != null) + { + Block block = ICContent.SHULKER_BLOCKS.get(shulkerBoxColor.getMetadata()); + + iblockstate = block.getDefaultState().withProperty(BlockIronShulkerBox.VARIANT_PROP, this.type.target); + } + else + { + return EnumActionResult.PASS; + } + + worldIn.setTileEntity(pos, newShulkerBox); + worldIn.setBlockState(pos, iblockstate, 3); + + worldIn.notifyBlockUpdate(pos, iblockstate, iblockstate, 3); + + TileEntity te2 = worldIn.getTileEntity(pos); + + if (te2 instanceof TileEntityIronShulkerBox) + { + ((TileEntityIronShulkerBox) te2).setContents(shulkerBoxContents); + ((TileEntityIronShulkerBox) te2).setFacing(shulkerBoxFacing); + } + + if (!playerIn.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + return EnumActionResult.SUCCESS; + } +} diff --git a/src/main/java/cpw/mods/ironchest/common/network/MessageCrystalChestSync.java b/src/main/java/cpw/mods/ironchest/common/network/MessageCrystalChestSync.java new file mode 100644 index 0000000..2772cea --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/network/MessageCrystalChestSync.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * 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.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 topStacks; + + public MessageCrystalChestSync(TileEntityIronChest tile, NonNullList stack) + { + this.dimension = tile.getWorld().provider.getDimension(); + this.pos = tile.getPos(); + this.topStacks = stack; + } + + public MessageCrystalChestSync() + { + } + + @Override + public void fromBytes(ByteBuf buf) + { + this.dimension = buf.readInt(); + this.pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); + + int size = buf.readInt(); + this.topStacks = NonNullList. withSize(size, ItemStack.EMPTY); + + for (int i = 0; i < size; i++) + { + ItemStack itemstack = ByteBufUtils.readItemStack(buf); + + this.topStacks.set(i, itemstack); + } + } + + @Override + public void toBytes(ByteBuf buf) + { + buf.writeInt(this.dimension); + buf.writeInt(this.pos.getX()); + buf.writeInt(this.pos.getY()); + buf.writeInt(this.pos.getZ()); + buf.writeInt(this.topStacks.size()); + + for (ItemStack stack : this.topStacks) + { + ByteBufUtils.writeItemStack(buf, stack); + } + } + + public static class Handler implements IMessageHandler + { + @Override + public IMessage onMessage(MessageCrystalChestSync message, MessageContext ctx) + { + World world = IronChest.proxy.getClientWorld(); + + if (world != null) + { + TileEntity tile = world.getTileEntity(message.pos); + + if (tile instanceof TileEntityIronChest) + ((TileEntityIronChest) tile).receiveMessageFromServer(message.topStacks); + } + + return null; + } + } +} \ No newline at end of file diff --git a/src/main/java/cpw/mods/ironchest/common/network/MessageCrystalShulkerSync.java b/src/main/java/cpw/mods/ironchest/common/network/MessageCrystalShulkerSync.java new file mode 100644 index 0000000..bae53ac --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/network/MessageCrystalShulkerSync.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * 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.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 topStacks; + + public MessageCrystalShulkerSync(TileEntityIronShulkerBox tile, NonNullList stack) + { + this.dimension = tile.getWorld().provider.getDimension(); + this.pos = tile.getPos(); + this.topStacks = stack; + } + + public MessageCrystalShulkerSync() + { + } + + @Override + public void fromBytes(ByteBuf buf) + { + this.dimension = buf.readInt(); + this.pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); + + int size = buf.readInt(); + this.topStacks = NonNullList. withSize(size, ItemStack.EMPTY); + + for (int i = 0; i < size; i++) + { + ItemStack itemstack = ByteBufUtils.readItemStack(buf); + + this.topStacks.set(i, itemstack); + } + } + + @Override + public void toBytes(ByteBuf buf) + { + buf.writeInt(this.dimension); + buf.writeInt(this.pos.getX()); + buf.writeInt(this.pos.getY()); + buf.writeInt(this.pos.getZ()); + buf.writeInt(this.topStacks.size()); + + for (ItemStack stack : this.topStacks) + { + ByteBufUtils.writeItemStack(buf, stack); + } + } + + public static class Handler implements IMessageHandler + { + @Override + public IMessage onMessage(MessageCrystalShulkerSync message, MessageContext ctx) + { + World world = IronChest.proxy.getClientWorld(); + + if (world != null) + { + TileEntity tile = world.getTileEntity(message.pos); + + if (tile instanceof TileEntityIronShulkerBox) + ((TileEntityIronShulkerBox) tile).receiveMessageFromServer(message.topStacks); + } + + return null; + } + } +} \ No newline at end of file diff --git a/src/main/java/cpw/mods/ironchest/TileEntityCopperChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityCopperChest.java old mode 100755 new mode 100644 similarity index 84% rename from src/main/java/cpw/mods/ironchest/TileEntityCopperChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityCopperChest.java index f3929ef..59e30f5 --- a/src/main/java/cpw/mods/ironchest/TileEntityCopperChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityCopperChest.java @@ -8,7 +8,9 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; + +import cpw.mods.ironchest.common.blocks.chest.IronChestType; public class TileEntityCopperChest extends TileEntityIronChest { diff --git a/src/main/java/cpw/mods/ironchest/TileEntityCrystalChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityCrystalChest.java old mode 100755 new mode 100644 similarity index 84% rename from src/main/java/cpw/mods/ironchest/TileEntityCrystalChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityCrystalChest.java index 6a65262..e0f333c --- a/src/main/java/cpw/mods/ironchest/TileEntityCrystalChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityCrystalChest.java @@ -8,7 +8,9 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; + +import cpw.mods.ironchest.common.blocks.chest.IronChestType; public class TileEntityCrystalChest extends TileEntityIronChest { diff --git a/src/main/java/cpw/mods/ironchest/TileEntityDiamondChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityDiamondChest.java old mode 100755 new mode 100644 similarity index 84% rename from src/main/java/cpw/mods/ironchest/TileEntityDiamondChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityDiamondChest.java index f81ab57..3adf7ed --- a/src/main/java/cpw/mods/ironchest/TileEntityDiamondChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityDiamondChest.java @@ -8,7 +8,9 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; + +import cpw.mods.ironchest.common.blocks.chest.IronChestType; public class TileEntityDiamondChest extends TileEntityIronChest { diff --git a/src/main/java/cpw/mods/ironchest/TileEntityDirtChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityDirtChest.java old mode 100755 new mode 100644 similarity index 81% rename from src/main/java/cpw/mods/ironchest/TileEntityDirtChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityDirtChest.java index a6eea6a..dd802c0 --- a/src/main/java/cpw/mods/ironchest/TileEntityDirtChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityDirtChest.java @@ -1,5 +1,6 @@ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; +import cpw.mods.ironchest.common.blocks.chest.IronChestType; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -15,13 +16,13 @@ public class TileEntityDirtChest extends TileEntityIronChest static { dirtChest9000GuideBook.setTagInfo("author", new NBTTagString("cpw")); - dirtChest9000GuideBook.setTagInfo("title", new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.title"))); + dirtChest9000GuideBook.setTagInfo("title", new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.title"))); NBTTagList pages = new NBTTagList(); - pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page1"))); - pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page2"))); - pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page3"))); - pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page4"))); - pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page5"))); + pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page1"))); + pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page2"))); + pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page3"))); + pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page4"))); + pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page5"))); dirtChest9000GuideBook.setTagInfo("pages", pages); } diff --git a/src/main/java/cpw/mods/ironchest/TileEntityGoldChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityGoldChest.java old mode 100755 new mode 100644 similarity index 84% rename from src/main/java/cpw/mods/ironchest/TileEntityGoldChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityGoldChest.java index 16776ed..d6f0e79 --- a/src/main/java/cpw/mods/ironchest/TileEntityGoldChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityGoldChest.java @@ -8,7 +8,9 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; + +import cpw.mods.ironchest.common.blocks.chest.IronChestType; public class TileEntityGoldChest extends TileEntityIronChest { diff --git a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityIronChest.java old mode 100755 new mode 100644 similarity index 88% rename from src/main/java/cpw/mods/ironchest/TileEntityIronChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityIronChest.java index 0ef935b..69b8e03 --- a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityIronChest.java @@ -8,11 +8,17 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; import java.util.Collections; import java.util.Comparator; +import cpw.mods.ironchest.IronChest; +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.gui.chest.ContainerIronChest; +import cpw.mods.ironchest.common.network.MessageCrystalChestSync; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -31,13 +37,14 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraftforge.common.util.Constants; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; public class TileEntityIronChest extends TileEntityLockableLoot implements ITickable { /** Chest Contents */ public NonNullList chestContents; - /** Crystal chest top stacks */ + /** Crystal Chest top stacks */ private NonNullList topStacks; /** The current angle of the lid (between 0 and 1) */ @@ -113,7 +120,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick { IBlockState state = this.world.getBlockState(this.pos); - if (state.getBlock() == IronChest.ironChestBlock) + if (state.getBlock() == ICContent.ironChestBlock) { type = state.getValue(BlockIronChest.VARIANT_PROP); } @@ -163,7 +170,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick { ItemStack tempCopyStack = tempCopy.get(j); - if (ItemStack.areItemsEqual(tempCopyStack, itemStack)) + if (ItemStack.areItemsEqualIgnoreDurability(tempCopyStack, itemStack)) { if (itemStack.getCount() != tempCopyStack.getCount()) { @@ -250,6 +257,8 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick this.world.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3); } + + sendTopStacksPacket(); } @Override @@ -338,15 +347,17 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick public void update() { // Resynchronizes clients with the server state - if (this.world != null && !this.world.isRemote && this.numPlayersUsing != 0 - && (this.ticksSinceSync + this.pos.getX() + this.pos.getY() + this.pos.getZ()) % 200 == 0) + //@formatter:off + if (this.world != null && !this.world.isRemote && this.numPlayersUsing != 0 && (this.ticksSinceSync + this.pos.getX() + this.pos.getY() + this.pos.getZ()) % 200 == 0) + //@formatter:on { this.numPlayersUsing = 0; float f = 5.0F; - for (EntityPlayer player : this.world.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB(this.pos.getX() - f, this.pos.getY() - f, - this.pos.getZ() - f, this.pos.getX() + 1 + f, this.pos.getY() + 1 + f, this.pos.getZ() + 1 + f))) + //@formatter:off + for (EntityPlayer player : this.world.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB(this.pos.getX() - f, this.pos.getY() - f, this.pos.getZ() - f, this.pos.getX() + 1 + f, this.pos.getY() + 1 + f, this.pos.getZ() + 1 + f))) + //@formatter:on { if (player.openContainer instanceof ContainerIronChest) { @@ -357,7 +368,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick if (this.world != null && !this.world.isRemote && this.ticksSinceSync < 0) { - this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 3, ((this.numPlayersUsing << 3) & 0xF8) | (this.facing.ordinal() & 0x7)); + this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 3, ((this.numPlayersUsing << 3) & 0xF8) | (this.facing.ordinal() & 0x7)); } if (!this.world.isRemote && this.inventoryTouched) @@ -455,9 +466,9 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick ++this.numPlayersUsing; - this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); - this.world.notifyNeighborsOfStateChange(this.pos, IronChest.ironChestBlock, false); - this.world.notifyNeighborsOfStateChange(this.pos.down(), IronChest.ironChestBlock, false); + this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 1, this.numPlayersUsing); + this.world.notifyNeighborsOfStateChange(this.pos, ICContent.ironChestBlock, false); + this.world.notifyNeighborsOfStateChange(this.pos.down(), ICContent.ironChestBlock, false); } } @@ -473,9 +484,9 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick --this.numPlayersUsing; - this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); - this.world.notifyNeighborsOfStateChange(this.pos, IronChest.ironChestBlock, false); - this.world.notifyNeighborsOfStateChange(this.pos.down(), IronChest.ironChestBlock, false); + this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 1, this.numPlayersUsing); + this.world.notifyNeighborsOfStateChange(this.pos, ICContent.ironChestBlock, false); + this.world.notifyNeighborsOfStateChange(this.pos.down(), ICContent.ironChestBlock, false); } } @@ -491,10 +502,6 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick compound.setByte("facing", (byte) this.facing.ordinal()); - NonNullList stacks = this.buildItemStackDataList(); - - ItemStackHelper.saveAllItems(compound, stacks); - return new SPacketUpdateTileEntity(this.pos, 0, compound); } @@ -506,29 +513,6 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick NBTTagCompound compound = pkt.getNbtCompound(); this.facing = EnumFacing.VALUES[compound.getByte("facing")]; - - NonNullList stacks = NonNullList. withSize(this.getTopItems().size(), ItemStack.EMPTY); - - ItemStackHelper.loadAllItems(compound, stacks); - - if (this.getType().isTransparent()) - { - int pos = 0; - - for (int i = 0; i < this.getTopItems().size(); i++) - { - if (!stacks.get(pos).isEmpty()) - { - this.getTopItems().set(i, stacks.get(pos)); - } - else - { - this.getTopItems().set(i, ItemStack.EMPTY); - } - - pos++; - } - } } } @@ -570,7 +554,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick { this.setFacing(this.facing.rotateY()); - this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 2, this.facing.ordinal()); + this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 2, this.facing.ordinal()); } public void wasPlaced(EntityLivingBase entityliving, ItemStack stack) @@ -592,7 +576,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick @Override public String getGuiID() { - return "IronChest:" + this.getType().name(); + return "IronChest:" + this.getType().name() + "_chest"; } @Override @@ -608,7 +592,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick } @Override - protected NonNullList getItems() + public NonNullList getItems() { return this.chestContents; } @@ -631,4 +615,17 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick return true; } + + protected void sendTopStacksPacket() + { + NonNullList stacks = this.buildItemStackDataList(); + //@formatter:off + IronChest.packetHandler.sendToAllAround(new MessageCrystalChestSync(this, stacks), new TargetPoint(world.provider.getDimension(), getPos().getX(), getPos().getY(), getPos().getZ(), 128)); + //@formatter:on + } + + public void receiveMessageFromServer(NonNullList topStacks) + { + this.topStacks = topStacks; + } } diff --git a/src/main/java/cpw/mods/ironchest/TileEntityObsidianChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityObsidianChest.java old mode 100755 new mode 100644 similarity index 58% rename from src/main/java/cpw/mods/ironchest/TileEntityObsidianChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityObsidianChest.java index db21645..0a87841 --- a/src/main/java/cpw/mods/ironchest/TileEntityObsidianChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntityObsidianChest.java @@ -1,4 +1,6 @@ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; + +import cpw.mods.ironchest.common.blocks.chest.IronChestType; public class TileEntityObsidianChest extends TileEntityIronChest { diff --git a/src/main/java/cpw/mods/ironchest/TileEntitySilverChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntitySilverChest.java old mode 100755 new mode 100644 similarity index 84% rename from src/main/java/cpw/mods/ironchest/TileEntitySilverChest.java rename to src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntitySilverChest.java index 1769186..9da06a6 --- a/src/main/java/cpw/mods/ironchest/TileEntitySilverChest.java +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/chest/TileEntitySilverChest.java @@ -8,7 +8,9 @@ * Contributors: * cpw - initial API and implementation ******************************************************************************/ -package cpw.mods.ironchest; +package cpw.mods.ironchest.common.tileentity.chest; + +import cpw.mods.ironchest.common.blocks.chest.IronChestType; public class TileEntitySilverChest extends TileEntityIronChest { diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityCopperShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityCopperShulkerBox.java new file mode 100644 index 0000000..a70e3a0 --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityCopperShulkerBox.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 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 items; + + /** Crystal Shulker Boxes top stacks */ + private NonNullList topStacks; + + /** Direction Shulker ox is facing */ + private EnumFacing facing; + + /** If the inventory got touched */ + private boolean inventoryTouched; + + /** Server sync counter (once per 20 ticks) */ + private int ticksSinceSync; + + /** If the inventory had items */ + private boolean hadStuff; + + private boolean hasBeenCleared; + private int openCount; + private AnimationStatus animationStatus; + private float progress; + private float progressOld; + private EnumDyeColor color; + private boolean destroyedByCreativePlayer; + private boolean hasBeenUpgraded; + + /** The Variant of the Shulker Box (Not Color) */ + private IronShulkerBoxType shulkerBoxType; + + public TileEntityIronShulkerBox() + { + this(null); + } + + public TileEntityIronShulkerBox(@Nullable EnumDyeColor colorIn) + { + this(colorIn, IronShulkerBoxType.IRON); + } + + public TileEntityIronShulkerBox(@Nullable EnumDyeColor colorIn, IronShulkerBoxType typeIn) + { + super(); + + this.shulkerBoxType = typeIn; + + this.SLOTS = new int[typeIn.size]; + + this.items = NonNullList. withSize(typeIn.size, ItemStack.EMPTY); + this.topStacks = NonNullList. withSize(8, ItemStack.EMPTY); + + this.animationStatus = AnimationStatus.CLOSED; + this.color = colorIn; + + this.facing = EnumFacing.UP; + + this.hasBeenUpgraded = false; + } + + public void setContents(NonNullList contents) + { + this.items = NonNullList. withSize(this.getType().size, ItemStack.EMPTY); + + for (int i = 0; i < contents.size(); i++) + { + if (i < this.items.size()) + { + this.getItems().set(i, contents.get(i)); + } + } + + this.inventoryTouched = true; + } + + @Override + public int getSizeInventory() + { + return this.getItems().size(); + } + + public EnumFacing getFacing() + { + return this.facing; + } + + public IronShulkerBoxType getType() + { + IronShulkerBoxType type = IronShulkerBoxType.IRON; + + if (this.hasWorld()) + { + IBlockState state = this.world.getBlockState(this.pos); + + if (state.getBlock() instanceof BlockIronShulkerBox) + { + type = state.getValue(BlockIronShulkerBox.VARIANT_PROP); + } + } + + return type; + } + + @Override + public ItemStack getStackInSlot(int index) + { + this.fillWithLoot((EntityPlayer) null); + + this.inventoryTouched = true; + + return this.getItems().get(index); + } + + @Override + public void markDirty() + { + super.markDirty(); + + this.sortTopStacks(); + } + + protected void sortTopStacks() + { + if (!this.getType().isTransparent() || (this.world != null && this.world.isRemote)) + { + return; + } + + NonNullList tempCopy = NonNullList. withSize(this.getSizeInventory(), ItemStack.EMPTY); + + boolean hasStuff = false; + + int compressedIdx = 0; + + mainLoop: for (int i = 0; i < this.getSizeInventory(); i++) + { + ItemStack itemStack = this.getItems().get(i); + + if (!itemStack.isEmpty()) + { + for (int j = 0; j < compressedIdx; j++) + { + ItemStack tempCopyStack = tempCopy.get(j); + + if (ItemStack.areItemsEqualIgnoreDurability(tempCopyStack, itemStack)) + { + if (itemStack.getCount() != tempCopyStack.getCount()) + { + tempCopyStack.grow(itemStack.getCount()); + } + + continue mainLoop; + } + } + + tempCopy.set(compressedIdx, itemStack.copy()); + + compressedIdx++; + + hasStuff = true; + } + } + + if (!hasStuff && this.hadStuff) + { + this.hadStuff = false; + + for (int i = 0; i < this.getTopItems().size(); i++) + { + this.getTopItems().set(i, ItemStack.EMPTY); + } + + return; + } + + this.hadStuff = true; + + Collections.sort(tempCopy, new Comparator() { + @Override + public int compare(ItemStack stack1, ItemStack stack2) + { + if (stack1.isEmpty()) + { + return 1; + } + else if (stack2.isEmpty()) + { + return -1; + } + else + { + return stack2.getCount() - stack1.getCount(); + } + } + }); + + int p = 0; + + for (ItemStack element : tempCopy) + { + if (!element.isEmpty() && element.getCount() > 0) + { + if (p == this.getTopItems().size()) + { + break; + } + + this.getTopItems().set(p, element); + + p++; + } + } + + for (int i = p; i < this.getTopItems().size(); i++) + { + this.getTopItems().set(i, ItemStack.EMPTY); + } + + sendTopStacksPacket(); + } + + /** + * Get the name of this object. For players this returns their username + */ + @Override + public String getName() + { + return this.hasCustomName() ? this.customName : this.getType().name(); + } + + @Override + public void readFromNBT(NBTTagCompound compound) + { + super.readFromNBT(compound); + + this.loadFromNbt(compound); + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound compound) + { + super.writeToNBT(compound); + + return this.saveToNbt(compound); + } + + public void loadFromNbt(NBTTagCompound compound) + { + this.items = NonNullList. withSize(this.getSizeInventory(), ItemStack.EMPTY); + + if (!this.checkLootAndRead(compound) && compound.hasKey("Items", 9)) + { + ItemStackHelper.loadAllItems(compound, this.items); + } + + if (compound.hasKey("CustomName", 8)) + { + this.customName = compound.getString("CustomName"); + } + + this.facing = EnumFacing.VALUES[compound.getByte("facing")]; + + this.sortTopStacks(); + } + + public NBTTagCompound saveToNbt(NBTTagCompound compound) + { + if (!this.checkLootAndWrite(compound)) + { + ItemStackHelper.saveAllItems(compound, this.items, false); + } + + compound.setInteger("ShulkerBoxSize", this.getSizeInventory()); + + compound.setByte("facing", (byte) this.facing.ordinal()); + + if (this.hasCustomName()) + { + compound.setString("CustomName", this.customName); + } + + if (!compound.hasKey("Lock") && this.isLocked()) + { + this.getLockCode().toNBT(compound); + } + + return compound; + } + + /** + * Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. + */ + @Override + public int getInventoryStackLimit() + { + return 64; + } + + /** + * Like the old updateEntity(), except more generic. + */ + @Override + public void update() + { + this.updateAnimation(); + + if (this.animationStatus == AnimationStatus.OPENING || this.animationStatus == AnimationStatus.CLOSING) + { + this.moveCollidedEntities(); + } + + if (this.world != null && !this.world.isRemote && this.ticksSinceSync < 0) + { + this.world.addBlockEvent(this.pos, this.getBlockType(), 3, ((this.openCount << 3) & 0xF8) | (this.facing.ordinal() & 0x7)); + } + + if (!this.world.isRemote && this.inventoryTouched) + { + this.inventoryTouched = false; + + this.sortTopStacks(); + } + + this.ticksSinceSync++; + } + + protected void updateAnimation() + { + this.progressOld = this.progress; + + switch (this.animationStatus) + { + case CLOSED: + this.progress = 0.0F; + break; + case OPENING: + this.progress += 0.1F; + + if (this.progress >= 1.0F) + { + this.moveCollidedEntities(); + this.animationStatus = AnimationStatus.OPENED; + this.progress = 1.0F; + } + + break; + case CLOSING: + this.progress -= 0.1F; + + if (this.progress <= 0.0F) + { + this.animationStatus = AnimationStatus.CLOSED; + this.progress = 0.0F; + } + + break; + case OPENED: + this.progress = 1.0F; + } + } + + public AnimationStatus getAnimationStatus() + { + return this.animationStatus; + } + + public AxisAlignedBB getBoundingBox() + { + return this.getBoundingBox(this.getFacing()); + } + + public AxisAlignedBB getBoundingBox(EnumFacing facing) + { + //@formatter:off + return Block.FULL_BLOCK_AABB.addCoord(0.5F * this.getProgress(1.0F) * facing.getFrontOffsetX(), 0.5F * this.getProgress(1.0F) * facing.getFrontOffsetY(), 0.5F * this.getProgress(1.0F) * facing.getFrontOffsetZ()); + //@formatter:on + } + + private AxisAlignedBB getTopBoundingBox(EnumFacing facing) + { + EnumFacing enumfacing = facing.getOpposite(); + + return this.getBoundingBox(facing).contract(enumfacing.getFrontOffsetX(), enumfacing.getFrontOffsetY(), enumfacing.getFrontOffsetZ()); + } + + private void moveCollidedEntities() + { + IBlockState iblockstate = this.world.getBlockState(this.getPos()); + + if (iblockstate.getBlock() instanceof BlockIronShulkerBox) + { + EnumFacing enumfacing = this.getFacing(); + AxisAlignedBB axisalignedbb = this.getTopBoundingBox(enumfacing).offset(this.pos); + List list = this.world.getEntitiesWithinAABBExcludingEntity((Entity) null, axisalignedbb); + + if (!list.isEmpty()) + { + for (int i = 0; i < list.size(); ++i) + { + Entity entity = list.get(i); + + if (entity.getPushReaction() != EnumPushReaction.IGNORE) + { + double d0 = 0.0D; + double d1 = 0.0D; + double d2 = 0.0D; + AxisAlignedBB axisalignedbb1 = entity.getEntityBoundingBox(); + + switch (enumfacing.getAxis()) + { + case X: + + if (enumfacing.getAxisDirection() == EnumFacing.AxisDirection.POSITIVE) + { + d0 = axisalignedbb.maxX - axisalignedbb1.minX; + } + else + { + d0 = axisalignedbb1.maxX - axisalignedbb.minX; + } + + d0 = d0 + 0.01D; + break; + case Y: + + if (enumfacing.getAxisDirection() == EnumFacing.AxisDirection.POSITIVE) + { + d1 = axisalignedbb.maxY - axisalignedbb1.minY; + } + else + { + d1 = axisalignedbb1.maxY - axisalignedbb.minY; + } + + d1 = d1 + 0.01D; + break; + case Z: + + if (enumfacing.getAxisDirection() == EnumFacing.AxisDirection.POSITIVE) + { + d2 = axisalignedbb.maxZ - axisalignedbb1.minZ; + } + else + { + d2 = axisalignedbb1.maxZ - axisalignedbb.minZ; + } + + d2 = d2 + 0.01D; + } + + //@formatter:off + entity.move(MoverType.SHULKER_BOX, d0 * enumfacing.getFrontOffsetX(), d1 * enumfacing.getFrontOffsetY(), d2 * enumfacing.getFrontOffsetZ()); + //@formatter:on + } + } + } + } + } + + @Override + public boolean receiveClientEvent(int id, int type) + { + if (id == 1) + { + this.openCount = type; + + if (type == 0) + { + this.animationStatus = AnimationStatus.CLOSING; + } + + if (type == 1) + { + this.animationStatus = AnimationStatus.OPENING; + } + + return true; + } + else if (id == 2) + { + this.facing = EnumFacing.VALUES[type]; + + return true; + } + else if (id == 3) + { + this.facing = EnumFacing.VALUES[type & 0x7]; + + this.openCount = (type & 0xF8) >> 3; + + return true; + } + else + { + return super.receiveClientEvent(id, type); + } + } + + @Override + public void openInventory(EntityPlayer player) + { + if (!player.isSpectator()) + { + if (this.openCount < 0) + { + this.openCount = 0; + } + + ++this.openCount; + + this.world.addBlockEvent(this.pos, this.getBlockType(), 1, this.openCount); + + if (this.openCount == 1) + { + //@formatter:off + this.world.playSound((EntityPlayer) null, this.pos, SoundEvents.BLOCK_SHULKER_BOX_OPEN, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F); + //@formatter:on + } + } + } + + @Override + public void closeInventory(EntityPlayer player) + { + if (!player.isSpectator()) + { + --this.openCount; + + this.world.addBlockEvent(this.pos, this.getBlockType(), 1, this.openCount); + + if (this.openCount <= 0) + { + //@formatter:off + this.world.playSound((EntityPlayer) null, this.pos, SoundEvents.BLOCK_SHULKER_BOX_CLOSE, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F); + //@formatter:on + } + } + } + + public void setFacing(EnumFacing facing) + { + this.facing = facing; + } + + @Override + @Nullable + public SPacketUpdateTileEntity getUpdatePacket() + { + NBTTagCompound compound = new NBTTagCompound(); + + compound.setByte("facing", (byte) this.facing.ordinal()); + + return new SPacketUpdateTileEntity(this.pos, 0, compound); + } + + @Override + public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) + { + if (pkt.getTileEntityType() == 0) + { + NBTTagCompound compound = pkt.getNbtCompound(); + + this.facing = EnumFacing.VALUES[compound.getByte("facing")]; + } + } + + public NonNullList buildItemStackDataList() + { + if (this.getType().isTransparent()) + { + NonNullList sortList = NonNullList. withSize(this.getTopItems().size(), ItemStack.EMPTY); + + int pos = 0; + + for (ItemStack is : this.topStacks) + { + if (!is.isEmpty()) + { + sortList.set(pos, is); + } + else + { + sortList.set(pos, ItemStack.EMPTY); + } + + pos++; + } + + return sortList; + } + + return NonNullList. withSize(this.getTopItems().size(), ItemStack.EMPTY); + } + + @Override + public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) + { + this.fillWithLoot(playerIn); + + return new ContainerIronShulkerBox(playerInventory, this, this.shulkerBoxType, this.shulkerBoxType.xSize, this.shulkerBoxType.ySize); + } + + @Override + public String getGuiID() + { + return "IronChest:" + this.getType().name() + "_shulker_box"; + } + + @Override + public boolean canRenderBreaking() + { + return true; + } + + @Override + public NBTTagCompound getUpdateTag() + { + return this.writeToNBT(new NBTTagCompound()); + } + + @Override + public NonNullList getItems() + { + return this.items; + } + + public NonNullList getTopItems() + { + return this.topStacks; + } + + @Override + public boolean isEmpty() + { + for (ItemStack itemstack : this.items) + { + if (!itemstack.isEmpty()) + { + return false; + } + } + + return true; + } + + @Override + public int[] getSlotsForFace(EnumFacing side) + { + return SLOTS; + } + + /** + * Returns true if automation can insert the given item in the given slot from the given side. + */ + @Override + public boolean canInsertItem(int index, ItemStack itemStackIn, EnumFacing direction) + { + //@formatter:off + return !(Block.getBlockFromItem(itemStackIn.getItem()) instanceof BlockIronShulkerBox) && !(Block.getBlockFromItem(itemStackIn.getItem()) instanceof BlockShulkerBox); + //@formatter:on + } + + /** + * Returns true if automation can extract the given item in the given slot from the given side. + */ + @Override + public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction) + { + return true; + } + + @Override + public void clear() + { + this.hasBeenCleared = true; + super.clear(); + } + + public boolean isCleared() + { + return this.hasBeenCleared; + } + + public void setHasBeenUpgraded() + { + this.hasBeenUpgraded = true; + } + + public boolean beenUpgraded() + { + return this.hasBeenUpgraded; + } + + public float getProgress(float partialTicks) + { + return this.progressOld + (this.progress - this.progressOld) * partialTicks; + } + + @SideOnly(Side.CLIENT) + public EnumDyeColor getColor() + { + if (this.color == null) + { + this.color = BlockIronShulkerBox.getColorFromBlock(this.getBlockType()); + } + + return this.color; + } + + public boolean isDestroyedByCreativePlayer() + { + return this.destroyedByCreativePlayer; + } + + public void setDestroyedByCreativePlayer(boolean destoryedByCreativeUser) + { + this.destroyedByCreativePlayer = destoryedByCreativeUser; + } + + public boolean shouldDrop() + { + return !this.isDestroyedByCreativePlayer() || !this.isEmpty() || this.hasCustomName() || this.lootTable != null; + } + + protected void sendTopStacksPacket() + { + NonNullList stacks = this.buildItemStackDataList(); + //@formatter:off + IronChest.packetHandler.sendToAllAround(new MessageCrystalShulkerSync(this, stacks), new TargetPoint(world.provider.getDimension(), getPos().getX(), getPos().getY(), getPos().getZ(), 128)); + //@formatter:on + } + + public void receiveMessageFromServer(NonNullList topStacks) + { + this.topStacks = topStacks; + } + + public static enum AnimationStatus + { + CLOSED, OPENING, OPENED, CLOSING; + } +} diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityObsidianShulkerBox.java b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityObsidianShulkerBox.java new file mode 100644 index 0000000..daf3a2f --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/tileentity/shulker/TileEntityObsidianShulkerBox.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 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 tooltip, boolean advanced) + { + addOptionalTooltip(stack, tooltip); + + super.addInformation(stack, playerIn, tooltip, advanced); + } + + public static void addOptionalTooltip(ItemStack stack, List tooltip) + { + if (I18n.canTranslate(stack.getUnlocalizedName() + ".tooltip")) + { + tooltip.addAll(getTooltips(TextFormatting.GRAY.toString() + translateRecursive(stack.getUnlocalizedName() + ".tooltip"))); + } + else if (I18n.canTranslate(stack.getUnlocalizedName() + ".tooltip")) + { + tooltip.addAll(getTooltips(TextFormatting.GRAY.toString() + translateRecursive(stack.getUnlocalizedName() + ".tooltip"))); + } + } + + public static String translateRecursive(String key, Object... params) + { + return I18n.translateToLocal(I18n.translateToLocalFormatted(key, params)); + } + + public static List getTooltips(String text) + { + List list = Lists.newLinkedList(); + if (text == null) + return list; + int j = 0; + int k; + while ((k = text.indexOf("\\n", j)) >= 0) + { + list.add(text.substring(j, k)); + j = k + 2; + } + + list.add(text.substring(j, text.length())); + + return list; + } +} \ No newline at end of file diff --git a/src/main/java/cpw/mods/ironchest/common/util/MissingMappingsHandler.java b/src/main/java/cpw/mods/ironchest/common/util/MissingMappingsHandler.java new file mode 100644 index 0000000..1546c05 --- /dev/null +++ b/src/main/java/cpw/mods/ironchest/common/util/MissingMappingsHandler.java @@ -0,0 +1,190 @@ +/******************************************************************************* + * 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 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