From f5b98a42f8f1bff47c89d38c997510fe40a60945 Mon Sep 17 00:00:00 2001 From: ganymedes01 Date: Wed, 27 May 2015 18:17:59 -0300 Subject: [PATCH] Bunch of fixes and cleanups. See description for details -Removed unnecessary classes and files (like unused textures) -Use the vanilla packet system instead of a custom one (which ended up fixing chest rotations reseting every time the game was restarted) -Render chests as items without hackery (Not very pretty... but I'm not really sure what forge wants us to do if not what I did) --- 18 Mappings.txt | 52 ----- .../cpw/mods/ironchest/BlockIronChest.java | 62 +++--- .../java/cpw/mods/ironchest/IronChest.java | 20 +- .../ironchest/MappableItemStackWrapper.java | 33 --- .../cpw/mods/ironchest/PacketHandler.java | 203 ------------------ .../cpw/mods/ironchest/RegistryHelper.java | 38 ---- .../mods/ironchest/TileEntityIronChest.java | 188 +++++++++------- .../mods/ironchest/client/ClientProxy.java | 22 +- .../client/IronChestRenderHelper.java | 52 ----- .../ironchest/models/item/BlockIronChest.json | 3 - .../ironchest/models/item/chest_copper.json | 40 ++++ .../ironchest/models/item/chest_crystal.json | 40 ++++ .../ironchest/models/item/chest_diamond.json | 40 ++++ .../models/item/chest_dirtchest9000.json | 40 ++++ .../ironchest/models/item/chest_gold.json | 40 ++++ .../ironchest/models/item/chest_iron.json | 40 ++++ .../ironchest/models/item/chest_obsidian.json | 40 ++++ .../ironchest/models/item/chest_silver.json | 40 ++++ .../textures/blocks/copper_front.png | Bin 679 -> 0 bytes .../ironchest/textures/blocks/copper_side.png | Bin 661 -> 0 bytes .../ironchest/textures/blocks/copper_top.png | Bin 546 -> 0 bytes .../textures/blocks/crystal_front.png | Bin 396 -> 0 bytes .../textures/blocks/crystal_side.png | Bin 396 -> 0 bytes .../ironchest/textures/blocks/crystal_top.png | Bin 382 -> 0 bytes .../textures/blocks/diamond_front.png | Bin 762 -> 0 bytes .../textures/blocks/diamond_side.png | Bin 719 -> 0 bytes .../ironchest/textures/blocks/diamond_top.png | Bin 572 -> 0 bytes .../textures/blocks/dirtchest9000_front.png | Bin 3194 -> 0 bytes .../textures/blocks/dirtchest9000_side.png | Bin 3202 -> 0 bytes .../textures/blocks/dirtchest9000_top.png | Bin 3212 -> 0 bytes .../ironchest/textures/blocks/gold_front.png | Bin 784 -> 0 bytes .../ironchest/textures/blocks/gold_side.png | Bin 726 -> 0 bytes .../ironchest/textures/blocks/gold_top.png | Bin 572 -> 0 bytes .../ironchest/textures/blocks/iron_front.png | Bin 787 -> 0 bytes .../ironchest/textures/blocks/iron_side.png | Bin 726 -> 0 bytes .../ironchest/textures/blocks/iron_top.png | Bin 572 -> 0 bytes .../textures/blocks/obsidian_front.png | Bin 586 -> 0 bytes .../textures/blocks/obsidian_side.png | Bin 593 -> 0 bytes .../textures/blocks/obsidian_top.png | Bin 604 -> 0 bytes .../textures/blocks/silver_front.png | Bin 625 -> 0 bytes .../ironchest/textures/blocks/silver_side.png | Bin 608 -> 0 bytes .../ironchest/textures/blocks/silver_top.png | Bin 527 -> 0 bytes 42 files changed, 480 insertions(+), 513 deletions(-) delete mode 100644 18 Mappings.txt delete mode 100755 src/main/java/cpw/mods/ironchest/MappableItemStackWrapper.java delete mode 100755 src/main/java/cpw/mods/ironchest/PacketHandler.java delete mode 100644 src/main/java/cpw/mods/ironchest/RegistryHelper.java delete mode 100755 src/main/java/cpw/mods/ironchest/client/IronChestRenderHelper.java delete mode 100755 src/main/resources/assets/ironchest/models/item/BlockIronChest.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_copper.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_crystal.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_diamond.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_dirtchest9000.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_gold.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_iron.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_obsidian.json create mode 100755 src/main/resources/assets/ironchest/models/item/chest_silver.json delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/copper_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/copper_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/copper_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/crystal_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/crystal_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/crystal_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/diamond_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/diamond_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/diamond_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/gold_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/gold_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/gold_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/iron_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/iron_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/iron_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/obsidian_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/obsidian_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/obsidian_top.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/silver_front.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/silver_side.png delete mode 100755 src/main/resources/assets/ironchest/textures/blocks/silver_top.png diff --git a/18 Mappings.txt b/18 Mappings.txt deleted file mode 100644 index c22f2840..00000000 --- a/18 Mappings.txt +++ /dev/null @@ -1,52 +0,0 @@ -—MAPPINGS NOW IN MCPBOT— - -—————————— -FIXES -—————————— -—GameData— - - private int registerBlock(Block block, String name, int idHint) - { - // handle ItemBlock-before-Block registrations - ItemBlock itemBlock = null; - - for (Item item : iItemRegistry.typeSafeIterable()) // find matching ItemBlock - { - if (item instanceof ItemBlock && ((ItemBlock) item).blockInstance == block) - { - itemBlock = (ItemBlock) item; - break; - } - } - - if (itemBlock != null) // has ItemBlock, adjust id and clear the slot already occupied by the corresponding item - { - idHint = iItemRegistry.getId(itemBlock); - FMLLog.fine("Found matching ItemBlock %s for Block %s at id %d", itemBlock, block, idHint); - freeSlot(idHint, block); // temporarily free the slot occupied by the Item for the block registration - } - - // add - int blockId = iBlockRegistry.add(idHint, name, block, availabilityMap); - - if (itemBlock != null) // verify - { - if (blockId != idHint) throw new IllegalStateException(String.format("Block at itemblock id %d insertion failed, got id %d.", idHint, blockId)); - verifyItemBlockName(itemBlock); - } - - //Hackery added by me which probably shouldn't be done - Iterator iterator1 = block.getBlockState().getValidStates().iterator(); - - while (iterator1.hasNext()) - { - IBlockState iblockstate = (IBlockState)iterator1.next(); - int i = blockRegistry.getIDForObject(block) << 4 | block.getMetaFromBlockState(iblockstate); - Block.field_176229_d.func_148746_a(iblockstate, i); - } - //End hackery - - useSlot(blockId); - ((RegistryDelegate.Delegate) block.delegate).setName(name); - return blockId; - } \ No newline at end of file diff --git a/src/main/java/cpw/mods/ironchest/BlockIronChest.java b/src/main/java/cpw/mods/ironchest/BlockIronChest.java index d9cdeb52..a34cf1c7 100755 --- a/src/main/java/cpw/mods/ironchest/BlockIronChest.java +++ b/src/main/java/cpw/mods/ironchest/BlockIronChest.java @@ -49,9 +49,9 @@ public class BlockIronChest extends BlockContainer public BlockIronChest() { super(Material.iron); - + this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronChestType.IRON)); - + this.setBlockBounds(0.0625F, 0F, 0.0625F, 0.9375F, 0.875F, 0.9375F); this.setHardness(3.0F); this.setUnlocalizedName("IronChest"); @@ -69,13 +69,7 @@ public boolean isFullCube() { return false; } - - @Override - public int getRenderType() - { - return 2; - } - + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState blockState, EntityPlayer player, EnumFacing direction, float p_180639_6_, float p_180639_7_, float p_180639_8_) { @@ -99,13 +93,13 @@ public boolean onBlockActivated(World world, BlockPos pos, IBlockState blockStat player.openGui(IronChest.instance, ((TileEntityIronChest) te).getType().ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); return true; } - + @Override public TileEntity createNewTileEntity(World world, int metadata) { return IronChestType.makeEntity(metadata); } - + @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) @@ -118,7 +112,7 @@ public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) } } } - + @Override public IBlockState getStateFromMeta(int meta) { @@ -128,9 +122,9 @@ public IBlockState getStateFromMeta(int meta) @Override public int getMetaFromState(IBlockState blockState) { - return ((IronChestType)blockState.getValue(VARIANT_PROP)).ordinal(); + return ((IronChestType) blockState.getValue(VARIANT_PROP)).ordinal(); } - + @Override protected BlockState createBlockState() { @@ -141,7 +135,7 @@ protected BlockState createBlockState() public ArrayList getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { ArrayList items = Lists.newArrayList(); - ItemStack stack = new ItemStack(this,1,getMetaFromState(state)); + ItemStack stack = new ItemStack(this, 1, getMetaFromState(state)); IronChestType.values()[IronChestType.validateMeta(getMetaFromState(state))].adornItemDrop(stack); items.add(stack); return items; @@ -158,7 +152,7 @@ public void onBlockAdded(World world, BlockPos pos, IBlockState blockState) public void onBlockPlacedBy(World world, BlockPos pos, IBlockState blockState, EntityLivingBase entityliving, ItemStack itemStack) { byte chestFacing = 0; - int facing = MathHelper.floor_double((double) ((entityliving.rotationYaw * 4F) / 360F) + 0.5D) & 3; + int facing = MathHelper.floor_double((entityliving.rotationYaw * 4F) / 360F + 0.5D) & 3; if (facing == 0) { chestFacing = 2; @@ -188,7 +182,7 @@ public void onBlockPlacedBy(World world, BlockPos pos, IBlockState blockState, E @Override public int damageDropped(IBlockState state) { - return IronChestType.validateMeta(((IronChestType)state.getValue(VARIANT_PROP)).ordinal()); + return IronChestType.validateMeta(((IronChestType) state.getValue(VARIANT_PROP)).ordinal()); } @Override @@ -206,7 +200,7 @@ public void breakBlock(World world, BlockPos pos, IBlockState blockState) public void dropContent(int newSize, IInventory chest, World world, BlockPos pos) { Random random = world.rand; - + for (int l = newSize; l < chest.getSizeInventory(); l++) { ItemStack itemstack = chest.getStackInSlot(l); @@ -225,8 +219,7 @@ public void dropContent(int newSize, IInventory chest, World world, BlockPos pos i1 = itemstack.stackSize; } itemstack.stackSize -= i1; - EntityItem entityitem = new EntityItem(world, (float) pos.getX() + f, (float) pos.getY() + (newSize > 0 ? 1 : 0) + f1, (float) pos.getZ() + f2, - new ItemStack(itemstack.getItem(), i1, itemstack.getMetadata())); + EntityItem entityitem = new EntityItem(world, pos.getX() + f, (float) pos.getY() + (newSize > 0 ? 1 : 0) + f1, pos.getZ() + f2, new ItemStack(itemstack.getItem(), i1, itemstack.getMetadata())); float f3 = 0.05F; entityitem.motionX = (float) random.nextGaussian() * f3; entityitem.motionY = (float) random.nextGaussian() * f3 + 0.2F; @@ -243,20 +236,21 @@ public void dropContent(int newSize, IInventory chest, World world, BlockPos pos @Override 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); + 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); } @Override - public boolean hasComparatorInputOverride() { + public boolean hasComparatorInputOverride() + { return true; } @@ -266,12 +260,13 @@ public int getComparatorInputOverride(World world, BlockPos pos) TileEntity te = world.getTileEntity(pos); if (te instanceof IInventory) { - return Container.calcRedstoneFromInventory((IInventory)te); + return Container.calcRedstoneFromInventory((IInventory) te); } return 0; } private static final EnumFacing[] validRotationAxes = new EnumFacing[] { EnumFacing.UP, EnumFacing.DOWN }; + @Override public EnumFacing[] getValidRotations(World worldObj, BlockPos pos) { @@ -288,7 +283,8 @@ public boolean rotateBlock(World worldObj, BlockPos pos, EnumFacing axis) if (axis == EnumFacing.UP || axis == EnumFacing.DOWN) { TileEntity tileEntity = worldObj.getTileEntity(pos); - if (tileEntity instanceof TileEntityIronChest) { + if (tileEntity instanceof TileEntityIronChest) + { TileEntityIronChest icte = (TileEntityIronChest) tileEntity; icte.rotateAround(); } diff --git a/src/main/java/cpw/mods/ironchest/IronChest.java b/src/main/java/cpw/mods/ironchest/IronChest.java index 6ecfe739..cf6cf97a 100755 --- a/src/main/java/cpw/mods/ironchest/IronChest.java +++ b/src/main/java/cpw/mods/ironchest/IronChest.java @@ -10,8 +10,6 @@ ******************************************************************************/ package cpw.mods.ironchest; -import net.minecraft.client.Minecraft; -import net.minecraft.init.Blocks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; @@ -21,12 +19,9 @@ import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.relauncher.Side; @Mod(modid = "IronChest", name = "Iron Chests", dependencies = "required-after:FML@[7.2,)") -public class IronChest +public class IronChest { public static BlockIronChest ironChestBlock; @SidedProxy(clientSide = "cpw.mods.ironchest.client.ClientProxy", serverSide = "cpw.mods.ironchest.CommonProxy") @@ -39,27 +34,22 @@ public void preInit(FMLPreInitializationEvent event) { Version.init(event.getVersionProperties()); event.getModMetadata().version = Version.fullVersionString(); - - PacketHandler.INSTANCE.ordinal(); } @EventHandler public void load(FMLInitializationEvent evt) { - //Registration has been moved to init to account for the registration of inventory models - //Minecraft.getRenderItem() returns null before this stage + // Registration has been moved to init to account for the registration of inventory models + // Minecraft.getRenderItem() returns null before this stage ChestChangerType.buildItems(); ironChestBlock = new BlockIronChest(); - RegistryHelper.registerBlock(ironChestBlock, ItemIronChest.class, "BlockIronChest"); - - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager().getBlockModelShapes().registerBuiltInBlocks(ironChestBlock); - + GameRegistry.registerBlock(ironChestBlock, ItemIronChest.class, "BlockIronChest"); + for (IronChestType typ : IronChestType.values()) { GameRegistry.registerTileEntityWithAlternatives(typ.clazz, "IronChest." + typ.name(), typ.name()); proxy.registerTileEntitySpecialRenderer(typ); } - OreDictionary.registerOre("chestWood", Blocks.chest); IronChestType.registerBlocksAndRecipes(ironChestBlock); ChestChangerType.generateRecipes(); NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy); diff --git a/src/main/java/cpw/mods/ironchest/MappableItemStackWrapper.java b/src/main/java/cpw/mods/ironchest/MappableItemStackWrapper.java deleted file mode 100755 index 95a8a408..00000000 --- a/src/main/java/cpw/mods/ironchest/MappableItemStackWrapper.java +++ /dev/null @@ -1,33 +0,0 @@ -package cpw.mods.ironchest; - -import net.minecraft.item.ItemStack; - -public class MappableItemStackWrapper { - private ItemStack wrap; - - public MappableItemStackWrapper(ItemStack toWrap) - { - wrap = toWrap; - } - - @Override - public boolean equals(Object obj) - { - if (!(obj instanceof MappableItemStackWrapper)) return false; - MappableItemStackWrapper isw = (MappableItemStackWrapper) obj; - if (wrap.getHasSubtypes()) - { - return isw.wrap.isItemEqual(wrap); - } - else - { - return isw.wrap == wrap; - } - } - - @Override - public int hashCode() - { - return System.identityHashCode(wrap); - } -} diff --git a/src/main/java/cpw/mods/ironchest/PacketHandler.java b/src/main/java/cpw/mods/ironchest/PacketHandler.java deleted file mode 100755 index da04a4d8..00000000 --- a/src/main/java/cpw/mods/ironchest/PacketHandler.java +++ /dev/null @@ -1,203 +0,0 @@ -/******************************************************************************* - * 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; - -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; - -import java.util.EnumMap; - -import net.minecraft.item.ItemStack; -import net.minecraft.network.Packet; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.network.ByteBufUtils; -import net.minecraftforge.fml.common.network.FMLEmbeddedChannel; -import net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/** - * Handles the packet wrangling for IronChest - * @author cpw - * - */ -public enum PacketHandler { - INSTANCE; - - /** - * Our channel "pair" from {@link NetworkRegistry} - */ - private EnumMap channels; - - /** - * Make our packet handler, and add an {@link IronChestCodec} always - */ - private PacketHandler() - { - // request a channel pair for IronChest from the network registry - // Add the IronChestCodec as a member of both channel pipelines - this.channels = NetworkRegistry.INSTANCE.newChannel("IronChest", new IronChestCodec()); - if (FMLCommonHandler.instance().getSide() == Side.CLIENT) - { - addClientHandler(); - } - } - - /** - * This is only called on the client side - it adds an - * {@link IronChestMessageHandler} to the client side pipeline, since the - * only place we expect to handle messages is on the client. - */ - @SideOnly(Side.CLIENT) - private void addClientHandler() { - FMLEmbeddedChannel clientChannel = this.channels.get(Side.CLIENT); - // These two lines find the existing codec (Ironchestcodec) and insert our message handler after it - // in the pipeline - String codec = clientChannel.findChannelHandlerNameForType(IronChestCodec.class); - clientChannel.pipeline().addAfter(codec, "ClientHandler", new IronChestMessageHandler()); - } - - /** - * This class simply handles the {@link IronChestMessage} when it's received - * at the client side It can contain client only code, because it's only run - * on the client. - * - * @author cpw - * - */ - private static class IronChestMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, IronChestMessage msg) throws Exception - { - World world = IronChest.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(new BlockPos(msg.x, msg.y, msg.z)); - if (te instanceof TileEntityIronChest) - { - TileEntityIronChest icte = (TileEntityIronChest) te; - icte.setFacing(msg.facing); - icte.handlePacketData(msg.type, msg.itemStacks); - } - } - } - - /** - * This is our "message". In fact, {@link FMLIndexedMessageToMessageCodec} - * can handle many messages on the same channel at once, using a - * discriminator byte. But for IronChest, we only need the one message, so - * we have just this. - * - * @author cpw - * - */ - public static class IronChestMessage - { - int x; - int y; - int z; - int type; - int facing; - ItemStack[] itemStacks; - } - - /** - * This is the codec that automatically transforms the - * {@link FMLProxyPacket} which wraps the client and server custom payload - * packets into a message we care about. - * - * @author cpw - * - */ - private class IronChestCodec extends FMLIndexedMessageToMessageCodec - { - /** - * We register our discriminator bytes here. We only have the one type, so we only - * register one. - */ - public IronChestCodec() - { - addDiscriminator(0, IronChestMessage.class); - } - @Override - public void encodeInto(ChannelHandlerContext ctx, IronChestMessage msg, ByteBuf target) throws Exception - { - target.writeInt(msg.x); - target.writeInt(msg.y); - target.writeInt(msg.z); - int typeAndFacing = ((msg.type & 0x0F) | ((msg.facing & 0x0F) << 4)) & 0xFF; - target.writeByte(typeAndFacing); - target.writeBoolean(msg.itemStacks != null); - if (msg.itemStacks != null) - { - for (ItemStack i: msg.itemStacks) - { - ByteBufUtils.writeItemStack(target, i); - } - } - } - - @Override - public void decodeInto(ChannelHandlerContext ctx, ByteBuf dat, IronChestMessage msg) - { - msg.x = dat.readInt(); - msg.y = dat.readInt(); - msg.z = dat.readInt(); - int typDat = dat.readByte(); - msg.type = (byte)(typDat & 0xf); - msg.facing = (byte)((typDat >> 4) & 0xf); - boolean hasStacks = dat.readBoolean(); - msg.itemStacks = new ItemStack[0]; - if (hasStacks) - { - msg.itemStacks = new ItemStack[8]; - for (int i = 0; i < msg.itemStacks.length; i++) - { - msg.itemStacks[i] = ByteBufUtils.readItemStack(dat); - } - } - } - - } - - /** - * This is a utility method called to transform a packet from a custom - * packet into a "system packet". We're called from - * {@link TileEntity#getDescriptionPacket()} in this case, but there are - * others. All network packet methods in minecraft have been adapted to - * handle {@link FMLProxyPacket} but general purpose objects can't be - * handled sadly. - * - * This method uses the {@link IronChestCodec} to transform a custom packet - * {@link IronChestMessage} into an {@link FMLProxyPacket} by using the - * utility method {@link FMLEmbeddedChannel#generatePacketFrom(Object)} on - * the channel to do exactly that. - * - * @param tileEntityIronChest - * @return - */ - public static Packet getPacket(TileEntityIronChest tileEntityIronChest) - { - IronChestMessage msg = new IronChestMessage(); - msg.x = tileEntityIronChest.getPos().getX(); - msg.y = tileEntityIronChest.getPos().getY(); - msg.z = tileEntityIronChest.getPos().getZ(); - msg.type = tileEntityIronChest.getType().ordinal(); - msg.facing = tileEntityIronChest.getFacing(); - msg.itemStacks = tileEntityIronChest.buildItemStackDataList(); - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } -} diff --git a/src/main/java/cpw/mods/ironchest/RegistryHelper.java b/src/main/java/cpw/mods/ironchest/RegistryHelper.java deleted file mode 100644 index 770f6081..00000000 --- a/src/main/java/cpw/mods/ironchest/RegistryHelper.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * 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; - -import java.util.Iterator; - -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.item.ItemBlock; -import net.minecraftforge.fml.common.registry.GameRegistry; - - -public class RegistryHelper -{ - public static Block registerBlock(Block block, Class itemclass, String name, Object... itemCtorArgs) - { - block = GameRegistry.registerBlock(block, itemclass, name, itemCtorArgs); - - Iterator iterator = block.getBlockState().getValidStates().iterator(); - - while (iterator.hasNext()) - { - IBlockState iblockstate = (IBlockState)iterator.next(); - int id = Block.blockRegistry.getIDForObject(block) << 4 | block.getMetaFromState(iblockstate); - Block.BLOCK_STATE_IDS.put(iblockstate, id); - } - - return block; - } -} diff --git a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java index 217eceb2..7f2a0051 100755 --- a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java +++ b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java @@ -22,13 +22,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.server.gui.IUpdatePlayerListBox; import net.minecraft.tileentity.TileEntityLockable; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.util.Constants; -public class TileEntityIronChest extends TileEntityLockable implements IUpdatePlayerListBox, IInventory +public class TileEntityIronChest extends TileEntityLockable implements IUpdatePlayerListBox, IInventory { private int ticksSinceSync = -1; public float prevLidAngle; @@ -37,7 +40,7 @@ public class TileEntityIronChest extends TileEntityLockable implements IUpdatePl private IronChestType type; public ItemStack[] chestContents; private ItemStack[] topStacks; - private int facing; + private byte facing; private boolean inventoryTouched; private boolean hadStuff; private String customName; @@ -59,8 +62,8 @@ public ItemStack[] getContents() { return chestContents; } - - public void setContents (ItemStack[] contents) + + public void setContents(ItemStack[] contents) { chestContents = new ItemStack[getSizeInventory()]; for (int i = 0; i < contents.length; i++) @@ -142,19 +145,18 @@ protected void sortTopStacks() return; } hadStuff = true; - Arrays.sort(tempCopy, new Comparator() { + Arrays.sort(tempCopy, new Comparator() + { @Override public int compare(ItemStack o1, ItemStack o2) { if (o1 == null) { return 1; - } - else if (o2 == null) + } else if (o2 == null) { return -1; - } - else + } else { return o2.stackSize - o1.stackSize; } @@ -201,8 +203,7 @@ public ItemStack decrStackSize(int i, int j) } markDirty(); return itemstack1; - } - else + } else { return null; } @@ -218,19 +219,19 @@ public void setInventorySlotContents(int i, ItemStack itemstack) } markDirty(); } - + @Override public String getName() { return this.hasCustomName() ? this.customName : type.name(); } - + @Override public boolean hasCustomName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; @@ -240,17 +241,15 @@ public void setCustomName(String name) public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); - - //10 - TAG_COMPOUND - NBTTagList nbttaglist = nbttagcompound.getTagList("Items", 10); + + NBTTagList nbttaglist = nbttagcompound.getTagList("Items", Constants.NBT.TAG_COMPOUND); this.chestContents = new ItemStack[getSizeInventory()]; - - //8 - TAG_STRING - if (nbttagcompound.hasKey("CustomName", 8)) + + if (nbttagcompound.hasKey("CustomName", Constants.NBT.TAG_STRING)) { this.customName = nbttagcompound.getString("CustomName"); } - + for (int i = 0; i < nbttaglist.tagCount(); i++) { NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); @@ -281,8 +280,8 @@ public void writeToNBT(NBTTagCompound nbttagcompound) } nbttagcompound.setTag("Items", nbttaglist); - nbttagcompound.setByte("facing", (byte)facing); - + nbttagcompound.setByte("facing", facing); + if (this.hasCustomName()) { nbttagcompound.setString("CustomName", this.customName); @@ -306,7 +305,7 @@ public boolean isUseableByPlayer(EntityPlayer entityplayer) { return false; } - return entityplayer.getDistanceSq((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D) <= 64D; + return entityplayer.getDistanceSq(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D) <= 64D; } @Override @@ -318,10 +317,12 @@ public void update() this.numUsingPlayers = 0; float var1 = 5.0F; @SuppressWarnings("unchecked") - List var2 = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB((double)((float)pos.getX() - var1), (double)((float)pos.getY() - var1), (double)((float)pos.getZ() - var1), (double)((float)(pos.getX() + 1) + var1), (double)((float)(pos.getY() + 1) + var1), (double)((float)(pos.getZ() + 1) + var1))); + List var2 = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB(pos.getX() - var1, pos.getY() - var1, pos.getZ() - var1, pos.getX() + 1 + var1, pos.getY() + 1 + var1, pos.getZ() + 1 + var1)); - for (EntityPlayer var4 : var2) { - if (var4.openContainer instanceof ContainerIronChest) { + for (EntityPlayer var4 : var2) + { + if (var4.openContainer instanceof ContainerIronChest) + { ++this.numUsingPlayers; } } @@ -342,9 +343,9 @@ public void update() float f = 0.1F; if (numUsingPlayers > 0 && lidAngle == 0.0F) { - double d = (double) pos.getX() + 0.5D; - double d1 = (double) pos.getZ() + 0.5D; - worldObj.playSoundEffect(d, (double) pos.getY() + 0.5D, d1, "random.chestopen", 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F); + double d = pos.getX() + 0.5D; + double d1 = pos.getZ() + 0.5D; + worldObj.playSoundEffect(d, pos.getY() + 0.5D, d1, "random.chestopen", 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F); } if (numUsingPlayers == 0 && lidAngle > 0.0F || numUsingPlayers > 0 && lidAngle < 1.0F) { @@ -352,8 +353,7 @@ public void update() if (numUsingPlayers > 0) { lidAngle += f; - } - else + } else { lidAngle -= f; } @@ -364,9 +364,9 @@ public void update() float f2 = 0.5F; if (lidAngle < f2 && f1 >= f2) { - double d2 = (double) pos.getX() + 0.5D; - double d3 = (double) pos.getZ() + 0.5D; - worldObj.playSoundEffect(d2, (double) pos.getY() + 0.5D, d3, "random.chestclosed", 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F); + double d2 = pos.getX() + 0.5D; + double d3 = pos.getZ() + 0.5D; + worldObj.playSoundEffect(d2, pos.getY() + 0.5D, d3, "random.chestclosed", 0.5F, worldObj.rand.nextFloat() * 0.1F + 0.9F); } if (lidAngle < 0.0F) { @@ -381,12 +381,10 @@ public boolean receiveClientEvent(int i, int j) if (i == 1) { numUsingPlayers = j; - } - else if (i == 2) + } else if (i == 2) { facing = (byte) j; - } - else if (i == 3) + } else if (i == 3) { facing = (byte) (j & 0x7); numUsingPlayers = (j & 0xF8) >> 3; @@ -397,7 +395,10 @@ else if (i == 3) @Override public void openInventory(EntityPlayer player) { - if (worldObj == null) return; + if (worldObj == null) + { + return; + } numUsingPlayers++; worldObj.addBlockEvent(pos, IronChest.ironChestBlock, 1, numUsingPlayers); } @@ -405,12 +406,15 @@ public void openInventory(EntityPlayer player) @Override public void closeInventory(EntityPlayer player) { - if (worldObj == null) return; + if (worldObj == null) + { + return; + } numUsingPlayers--; worldObj.addBlockEvent(pos, IronChest.ironChestBlock, 1, numUsingPlayers); } - public void setFacing(int facing2) + public void setFacing(byte facing2) { this.facing = facing2; } @@ -436,30 +440,65 @@ public TileEntityIronChest updateFromMetadata(int l) @Override public Packet getDescriptionPacket() { - return PacketHandler.getPacket(this); + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("type", getType().ordinal()); + nbt.setByte("facing", facing); + ItemStack[] stacks = buildItemStackDataList(); + if (stacks != null) + { + NBTTagList nbttaglist = new NBTTagList(); + for (int i = 0; i < stacks.length; i++) + { + if (stacks[i] != null) + { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte) i); + stacks[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + nbt.setTag("stacks", nbttaglist); + } + + return new S35PacketUpdateTileEntity(pos, 0, nbt); } - public void handlePacketData(int typeData, ItemStack[] intData) + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { - TileEntityIronChest chest = this; - if (this.type.ordinal() != typeData) + if (pkt.getTileEntityType() == 0) { - chest = updateFromMetadata(typeData); - } - if (IronChestType.values()[typeData].isTransparent() && intData != null) - { - int pos = 0; - for (int i = 0; i < chest.topStacks.length; i++) + NBTTagCompound nbt = pkt.getNbtCompound(); + type = IronChestType.values()[nbt.getInteger("type")]; + facing = nbt.getByte("facing"); + + NBTTagList tagList = nbt.getTagList("stacks", Constants.NBT.TAG_COMPOUND); + ItemStack[] stacks = new ItemStack[topStacks.length]; + + for (int i = 0; i < stacks.length; i++) { - if (intData[pos] != null) + NBTTagCompound nbt1 = tagList.getCompoundTagAt(i); + int j = nbt1.getByte("Slot") & 0xff; + if (j >= 0 && j < stacks.length) { - chest.topStacks[i] = intData[pos]; + stacks[j] = ItemStack.loadItemStackFromNBT(nbt1); } - else + } + + if (type.isTransparent() && stacks != null) + { + int pos = 0; + for (int i = 0; i < topStacks.length; i++) { - chest.topStacks[i] = null; + if (stacks[pos] != null) + { + topStacks[i] = stacks[pos]; + } else + { + topStacks[i] = null; + } + pos++; } - pos ++; } } } @@ -475,8 +514,7 @@ public ItemStack[] buildItemStackDataList() if (is != null) { sortList[pos++] = is; - } - else + } else { sortList[pos++] = null; } @@ -494,31 +532,25 @@ public ItemStack getStackInSlotOnClosing(int par1) ItemStack var2 = this.chestContents[par1]; this.chestContents[par1] = null; return var2; - } - else + } else { return null; } } - public void setMaxStackSize(int size) - { - - } - @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { return type.acceptsStack(itemstack); } - void rotateAround() + public void rotateAround() { - facing++; - if(facing > EnumFacing.EAST.ordinal()) - { - facing = EnumFacing.NORTH.ordinal(); - } + facing++; + if (facing > EnumFacing.EAST.ordinal()) + { + facing = (byte) EnumFacing.NORTH.ordinal(); + } setFacing(facing); worldObj.addBlockEvent(pos, IronChest.ironChestBlock, 2, facing); } @@ -527,7 +559,9 @@ public void wasPlaced(EntityLivingBase entityliving, ItemStack itemStack) { } - public void removeAdornments() {} + public void removeAdornments() + { + } @Override public int getField(int id) @@ -536,7 +570,9 @@ public int getField(int id) } @Override - public void setField(int id, int value) {} + public void setField(int id, int value) + { + } @Override public int getFieldCount() @@ -564,10 +600,10 @@ public String getGuiID() { return "IronChest:" + type.name(); } - + @Override public boolean canRenderBreaking() { - return true; + return true; } } diff --git a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java index 09ad48a3..1967404b 100755 --- a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java +++ b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java @@ -10,8 +10,12 @@ ******************************************************************************/ package cpw.mods.ironchest.client; -import net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemModelMesher; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.world.World; @@ -22,20 +26,23 @@ import cpw.mods.ironchest.IronChestType; import cpw.mods.ironchest.TileEntityIronChest; -public class ClientProxy extends CommonProxy +public class ClientProxy extends CommonProxy { @Override public void registerRenderInformation() - { + { + Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager().getBlockModelShapes().registerBuiltInBlocks(IronChest.ironChestBlock); + + ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher(); for (IronChestType chestType : IronChestType.values()) { if (chestType != IronChestType.WOOD) { - ModelHelper.registerBlock(IronChest.ironChestBlock, chestType.ordinal(), "ironchest:BlockIronChest"); + Item chestItem = Item.getItemFromBlock(IronChest.ironChestBlock); + mesher.register(chestItem, chestType.ordinal(), new ModelResourceLocation("ironchest:chest_" + chestType.getName().toLowerCase(), "inventory")); + ModelBakery.addVariantName(chestItem, "ironchest:chest_" + chestType.getName().toLowerCase()); } } - - TileEntityItemStackRenderer.instance = new IronChestRenderHelper(); } @Override @@ -57,8 +64,7 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int if (te != null && te instanceof TileEntityIronChest) { return GUIChest.GUI.buildGUI(IronChestType.values()[ID], player.inventory, (TileEntityIronChest) te); - } - else + } else { return null; } diff --git a/src/main/java/cpw/mods/ironchest/client/IronChestRenderHelper.java b/src/main/java/cpw/mods/ironchest/client/IronChestRenderHelper.java deleted file mode 100755 index 4c0ca28c..00000000 --- a/src/main/java/cpw/mods/ironchest/client/IronChestRenderHelper.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * 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; - -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.item.ItemStack; - -import com.google.common.collect.Maps; - -import cpw.mods.ironchest.IronChest; -import cpw.mods.ironchest.IronChestType; -import cpw.mods.ironchest.TileEntityIronChest; - -public class IronChestRenderHelper extends TileEntityItemStackRenderer -{ - private Map itemRenders = Maps.newHashMap(); - - public IronChestRenderHelper() - { - for (IronChestType typ : IronChestType.values()) - { - itemRenders.put(typ.ordinal(), (TileEntityIronChest) IronChest.ironChestBlock.createNewTileEntity(null, typ.ordinal())); - } - } - - @Override - public void renderByItem(ItemStack itemStack) - { - Block block = Block.getBlockFromItem(itemStack.getItem()); - - if (block == IronChest.ironChestBlock) - { - TileEntityRendererDispatcher.instance.renderTileEntityAt(itemRenders.get(itemStack.getMetadata()), 0.0D, 0.0D, 0.0D, 0.0F); - } - else - { - super.renderByItem(itemStack); - } - } -} diff --git a/src/main/resources/assets/ironchest/models/item/BlockIronChest.json b/src/main/resources/assets/ironchest/models/item/BlockIronChest.json deleted file mode 100755 index 9935accd..00000000 --- a/src/main/resources/assets/ironchest/models/item/BlockIronChest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "builtin/entity" -} diff --git a/src/main/resources/assets/ironchest/models/item/chest_copper.json b/src/main/resources/assets/ironchest/models/item/chest_copper.json new file mode 100755 index 00000000..488cab4f --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_copper.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/copperchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_crystal.json b/src/main/resources/assets/ironchest/models/item/chest_crystal.json new file mode 100755 index 00000000..ff0c8239 --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_crystal.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/crystalchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_diamond.json b/src/main/resources/assets/ironchest/models/item/chest_diamond.json new file mode 100755 index 00000000..89505152 --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_diamond.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/diamondchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_dirtchest9000.json b/src/main/resources/assets/ironchest/models/item/chest_dirtchest9000.json new file mode 100755 index 00000000..d2947cdb --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_dirtchest9000.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/dirtchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_gold.json b/src/main/resources/assets/ironchest/models/item/chest_gold.json new file mode 100755 index 00000000..5260625c --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_gold.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/goldchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_iron.json b/src/main/resources/assets/ironchest/models/item/chest_iron.json new file mode 100755 index 00000000..2c63365f --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_iron.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/ironchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_obsidian.json b/src/main/resources/assets/ironchest/models/item/chest_obsidian.json new file mode 100755 index 00000000..b13d0189 --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_obsidian.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/obsidianchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/models/item/chest_silver.json b/src/main/resources/assets/ironchest/models/item/chest_silver.json new file mode 100755 index 00000000..43fdd95b --- /dev/null +++ b/src/main/resources/assets/ironchest/models/item/chest_silver.json @@ -0,0 +1,40 @@ +{ + "textures": { + "texture": "ironchest:model/silverchest" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 7, 4.75, 10.5, 8.25 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 4.75, 7, 8.25 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 8.25, 7, 10.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 8.25, 14, 10.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 8.25, 10.5, 10.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8.25, 3.5, 10.75 ], "texture": "#texture" } + } + }, + { "from": [ 1, 9, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 7, 0, 10.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 3.5, 0, 7, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 3.5, 3.5, 7, 4.75 ], "texture": "#texture" }, + "south": { "uv": [ 10.5, 3.5, 14, 4.75 ], "texture": "#texture" }, + "west": { "uv": [ 7, 3.5, 10.5, 4.75 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3.5, 3.5, 4.75 ], "texture": "#texture" } + } + }, + { "from": [ 7, 7, 0 ], + "to": [ 9, 11, 1 ], + "faces": { + "down": { "uv": [ 0, 0.75, 1.25, 0.5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0.25, 0.75, 0.5 ], "texture": "#texture" }, + "north": { "uv": [ 0.25, 0.25, 0.75, 1.25 ], "texture": "#texture" }, + "south": { "uv": [ 1, 0.25, 1.5, 1.25 ], "texture": "#texture" }, + "west": { "uv": [ 0.75, 0.25, 1, 1.25 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0.25, 0.25, 1.25 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/ironchest/textures/blocks/copper_front.png b/src/main/resources/assets/ironchest/textures/blocks/copper_front.png deleted file mode 100755 index 8ca415c5ae6d61aff4d347b0793ca30e2bb4dd86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lvott z6XJTX)@^UO{j<|spPbnE$JRYMwBo_O#V;@JdwF5c?JZO8?VR)Y$m)B$=HA^t zvM=sLcjWQT@M9gJ|NsBzz8+);bS-0&x4Vn!y=^zMfgH{PkH}&M25w;x zW@MN(M*=9g(bL5-MB;Mnx!Xcb3L*}H`l206r!5g#7&&X2M#sPZ+e=H9vEM$-oPN+C z;+oa%O>^SkrR{cRkf^@l+VW$!trZJ{BA;@J&CxG1EGmp24E#8E$NcndV7T%6!Nn7W zLFS)5^;%9a8vWOs)F9BXNPwX~-Ba7^Wp`LaW#(QI1O$~b=8 zhAC^Wd|nuow$qTO>OtB(OO^xfcKVBdtT@AT!97(C>Rd$4i#D zMwB?`=jNv7l`uFLr6!i7rYMwWmSiZnd-?{1H}Z)C6{&(0r2wU@lEEq%j0_Bobq#>X zGQ`l-%GAQj&_vh3)XKns?cL{26b-rgDVb@NPz{E45bDP46hOx7_4S6Fo+k-*%fF5l$aLa z6XJTX)@^UO{j<|spPbnE$JRYMwBo_O#V;@JdwF5ci}Snh?V5Xc`;1qY58mHB z|Mr$Cw>M9Ies;&B!z=IYob&YLru%yq+}bqp*2W2UwobjVw(I)pjw{O=FE6gSIKS-T zypl@`D=#mqzA(4={Op2rGjh&O%Q`b9{mkUl)00w8^(UO@i9S0uJSXW)|qW{#O$BVJUv!ia(=Ag%WdKiMf72V^Xdgo=Ijdcxx$TGyx)XLPt%FsmDz|_jXfbHGq zP81Ef`6-!cl~4_ax<*DJhK5!~25=4KTTjLVH3))iNXyJg%}dNpwJHHJ7>wf$b~*D` Q0wozdUHx3vIVCg!0L|wRIRF3v diff --git a/src/main/resources/assets/ironchest/textures/blocks/copper_top.png b/src/main/resources/assets/ironchest/textures/blocks/copper_top.png deleted file mode 100755 index 09a84886bc2e187d872f7213611e06eec16085e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lyD93 z32{AG>-PBAx+lliKRL1S+3BrMPi}gCcE^kJyI)?|^Z3Z>2m2Pkytwbx<%9Qj&3$xu z<-MJA?rxv)@ZhrhdluZ@GUe8$iMKXR`2YWZj$xWC&_Ko{Z+925nu{wWfgH{PkH}&M z25w;xW@MN(M*=9=>FMGaB5^sj-+C8Sf;UEKBP2(iR;nCB+;3+62fPet>an1bm+#Zhi@7T1QTzo z8*~eN|8h-RPS++#Y}u3ru3M&cTj&2abhx_u>*D$8u0E^ReA?4@ufDiPbN#=n`gimH zGr733YGfAhegQg4vcxr_#5q4VH#M(>!MP|ku_QG`p**uBL&4qCHz2%`PaLR76{IKy zC}oulR>5FoU}&ss07RA{hNf1g7FLEPx(23J1_o^JK6j#M$jwj5Osj-yFw`|N3NbXa xGBSW`DBpTA9;iVOWJ6kJPHJ9aZmLxYkilRaZ+O!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=Y7G zC&U#Ks7)k|4ie28U-i(m6ET1IZHC zh!W@g+}zZ>5(ej@)Wnk16ovB4k_-iRPv3y>Mm}+%B2|#06rhwiMgp(B|rv)X}nRu0iowWNd`|>KbLh*2~7Y9cWCVZ diff --git a/src/main/resources/assets/ironchest/textures/blocks/crystal_side.png b/src/main/resources/assets/ironchest/textures/blocks/crystal_side.png deleted file mode 100755 index 842cc18f2af1361649fa194d602a0fb79a42e563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=Y7G zC&U#Ks7)k|4ie28U-i(m6ET1IZHC zh!W@g+}zZ>5(ej@)Wnk16ovB4k_-iRPv3y>Mm}+%B2|#06rhwiMgp(B|rv)X}rO{bH%5Dk_?`%elF{r5}E)L>1nJ0 diff --git a/src/main/resources/assets/ironchest/textures/blocks/crystal_top.png b/src/main/resources/assets/ironchest/textures/blocks/crystal_top.png deleted file mode 100755 index ce8ef6307c684e7bbe2175666f0c4adc36e8e505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YhS zC&U#aiAhqkfIczlvOfV1%r`+p|P$35Lt#8np&A!SQ(n=8kkxc z7_hzj+=-$gH$NpatrDuiP}j&P#L&>n$N;XPeCx@0pawyZ4QZJ45bDP46hOx7_4S6Fo+k-*%fF5lz156 z6XMFa_zA4cneKtUF(` zY=6yh=pFlkx2(I~uo=4rhT!WHAE+w=f7ZGR&GI0Tevy>Eak7aXI$faj_-?0f&nWVjHx>lGZnf?sn`y8FGb0eSJnd!>$(^ttQ%w>~K`lg+Gx)x-%CVA?HulhMFDqrEnta~BRZ~eBX zn`Fo@Tp-GR_+o|8+_SvRN*?!%;fJbb%fe%*Pdb9)uO2uKu1DomT>zHtY~VFi|&qIn4% z9~cb-dFER%wXg_zTy{}#(E3{+@{8%v5qWh!{+dld4@s7|MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)C6{&(0r2wU@lEEq%j0_Bobq#>XGQ`l-%GAQj&_vh3)XKns z?cL{26b-rgDVb@NPz{E45bDP46hOx7_4S6Fo+k-*%fF5l-L{K z6XMFa_zAF`{tMK(;pg-zXyK$?fK!i@r$22Pkt!g`=)UBoBZ8xhR=Vf zKm4xp;G4{?uaY;u2w(mzaQ+kT>5n|8KJcIY$angqz`0M{Cq8f;d(UzB9mm0U?EBxc z?R(3%_YK>gH>^8fvuuCOap)cUfw!!?-mva?&9e0s%eGg{n_seQdBwcxCG*CY|NsA= z_2Sh`php;!yxm>wJX07R138=p9+AZi4BWyX%*Zfnjs#F}pQnpsh{WaCb0@``40u>C z1Qlp>M6t^-h>E7K2uR`h@PB{mE57(mCw87xYAIPP=u|4|wesR?{x*)Dnfo_oz>&6OoPc2oaZzmW1P%hHEyvIYZrNedIw4iBIcWHF( zVUSt6#*pJe!>dhA%d{95wn^RE7RGTQ>wkY%{Fyrv5#CeezX5$BS>hT|;+&tGo0?a` z;9QiNSdyBeP@Y+mq2TW68xY>eCk|Ak3R08;l(I?&t6(rPFf`UR03yo}LsKhL3oAnt zT?11q0|T~qpF2@BIal$@O1TaS?83{1OWYyF311? diff --git a/src/main/resources/assets/ironchest/textures/blocks/diamond_top.png b/src/main/resources/assets/ironchest/textures/blocks/diamond_top.png deleted file mode 100755 index 08c3bb536ec965230594a72ff4283a8c7688e9e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5ln4y) z32|jy{KV<)FPC?}Jm3HJ|M=VI<8RLozXL!0c7OLPv$nc2qP=E>KO zcfN1Ycs}E0Y0mSR3k%t|@AzbKfByTwpY3nxv2`)2gsTFbC|TkfQR1ARo128bg=d#Wzp$PzOFx9#M diff --git a/src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_front.png b/src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_front.png deleted file mode 100755 index 4e1e1fdd307ba264954c8c52e8d9d20737923625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3194 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 diff --git a/src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_side.png b/src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_side.png deleted file mode 100755 index ebda19fd06b24959429d20ffb2f6fc6d9220cad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3202 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 diff --git a/src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_top.png b/src/main/resources/assets/ironchest/textures/blocks/dirtchest9000_top.png deleted file mode 100755 index a92c5f17eb6c7855a2f9baa3a6f7fd454b5b81e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3212 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 diff --git a/src/main/resources/assets/ironchest/textures/blocks/gold_side.png b/src/main/resources/assets/ironchest/textures/blocks/gold_side.png deleted file mode 100755 index f06fb4f7ea158ed4505c76a3217a4e7b816ba7cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFvV z6XM$1$xvCxaO+LL&DY*HUOHZTZgKUQ$)(3y=N~BD|5SAEL)P8*$!G3Jp1djY;B(c5 zhbm|9N*}w*f8;Xnop&*ppXi>xEq>yL(CxQjH(t4(yDxw0mgwP2JcllFAH2YI_MYtV zYl26w@a;d#vF8-qwj(T?_A#y9$+%_*vl12+{?6T8{>-23`^ECELzJje-*>L zl??M%Fw9-fFl#ZxjD-x-7ceYd$FOh>!|WvtGZ!&ToyRb3KEvcW3{&PZOq$IwX%@r8 znGFB`|G&q%80a+y#w2fd7l(g0V{QOBoCO|{#S9GG!XV7ZFl&wkP;kGei(`ny<=At_ znVJlE8Xg7}h_J3@W`A&uH#91><>SBn)GuxIMZbzT70;SDt@zg)l(ps7Ts@}bXZclI zuD*@tFxxyc^IJx>!ImE!2UB`_R~pW=>U&zivQ|>@m(TU*$C6IQp8p)%a<$}bugp2~ zb^GsDaqRx9Xu;-KU?s2L&VA@-)!w^@J#6NkkI-tl{#(>7f1-w@dS;J;i;9qq*V0Wf zN=q^)IZe}E$;AWovN-1|8|D@!t`)DDRtYUwv-Q9GR{mQF67w#3UsM5lMY6;-qQp5r zH#aq}gu%HeHL)Z$MWH;iBtya7(>EZzkxv|`NEM_g1t?{e3|7HlWMF8lYXC%+A%><_ zrWRI)Cb|ZuRt5%a?>={;Xvob^$xN$+YB1C_G72#?v@$Y)Ybf7(G9IWw5M)DIW=?8e dVs5Hc36Q~H7;mui_-&B&44$rjF6*2UngDe%88iR@ diff --git a/src/main/resources/assets/ironchest/textures/blocks/gold_top.png b/src/main/resources/assets/ironchest/textures/blocks/gold_top.png deleted file mode 100755 index a29e9f378a0499c1c2188819f166f07a336d5a9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5ln4y) z32|-hWVrgwU*V}KyuD`Ik^DgG@`{a8cvaUQexbRTr{->e` zpR3N?k-Ypw_w;S?6E}n|K2kq>PxjO;(W6)R4qxIqbdmf2|NlJe-K>FzGbVYvyGWI$ zKQRJwI14-?iy0WWg+Z8+Vb&Z8px|^*7sn8Z%c=d2V$B8|E~YaX7*)50-M;sK5$o^$HS?&j<( zuu+AvM^QGnCJhTe>cWiRZiFqM3=2+qs|EJo)a8;laB}-f*N}Tg^b5rw57@Uhz z6H8K46v{J8G8EiBeFMT9`NV;WR6&YTfKpb;U=<8T28PDE20&yPVrXh*YGGw)qHADk zWnjSe?sF%KhTQy=%(P0V218vVqYy(wD45bDP46hOx7_4S6Fo+k-*%fF5l=u+f z6XM#|)mK&Da{KMOTW{XpeD(VJi4k@n9(?|M|Kq3opFZ7q_4>lYhsUm6 zKYIQ8nLBr{K6`%l?!8mDZa@6;<<9%}J5QWkym8a~wd>aH*?Zu^#gjL09lv(t=#^_X zU%x(j_3EPa>s$Kz>pD6n&Y8Pm@4iD9FWq_f{^sj9=N~*gef!Rl%U2Iyx^n2^<#YER zoVb4T*wyO?&Ry7h`t0_j$2adkv~JhlwLAB0+HS<=ip1own%tgy)EL^%|{ia20H_TbOa@OMI)8;RpzF^6exeKSxTQqsj zg2}VzPntFF|NsB<&wES;`kgV!+ug-KFU`>t$l)yTh%9Dc;1&j9Muu5)B!GhFJzX3_ zBreCEi;Qk^5NZF&7~)dAeT{_9X;B?rLvx8lwn)Cy-~U_4>VK_0clCXJF~?3{C6};u zCpX1tgvdb^-|yYKHTQS^_PhDtICdX?SWy&H_RVHK zcgq7Ii+8Q9O}`VLC>uQ6B;c;+GN+(LgG;$X_@HZ-Vv6MhMaOwZ8YVb#xlVMN$C%Pu z@_)q_{)#<{y!J2L5`bQlEOCt}an8@pP0cG|a4t$sEJ;mKD945bDP46hOx7_4S6Fo+k-*%fF5lsFvV z6XM#|)mK&Da{KMOTW{XpeD(VJi4k@n9(?|M|Kq27A3mPFd+*e(+Yi5d zx%lYuxqJ7IU%PSi%C)=iKU{hG?983JCvV=m^X~o4*Kf{0czF8uog$t(8bH= z?mswj{pPW&*AJY#u=n)Y?MIJq-hXJ_uDxq_?%BBa!1~?$HtjpOdi$=GTedIVuzB&i zjSE(hamd#kWbjkWni`H(KvvlRG#mlG7Up#%mk|}c+PMx=C z@|*>eXV0HBYu^9={~zsjlK^^$G0EHA#o^!0m>WP2XMsm#F#`j)FbFd;%$fsIvES3h zF+}2W?78DiO$Iy-4}%IsSl2SMKRCu48kO4e@n3%Gm$v$%UqzgXXHA?|{Ob+M+Hz~I z9#itO{HiTi-$rwoZJwF=Eu-3C%MXr&DLuU_4QE>QJuP5aE2;R)=lb(wNhf2^e~xXr zTJpA6=A8Mu{dcQ4cK=nhU~??6lGktNKJ>F{@7=>5HuKI$XtiAbE$Ws(QA1Kavq!;2 zMaaf$>82Q^C7F|)rfIL_;#s(cL7a1y4RZ?<*NWFntArM;+4|poEB~zoiFud2FRB2& zB3a@ZQR1ARo128bg=d#Wzp$PzxDn%Fo diff --git a/src/main/resources/assets/ironchest/textures/blocks/iron_top.png b/src/main/resources/assets/ironchest/textures/blocks/iron_top.png deleted file mode 100755 index 30efea4db7ec6109c23529a720c54f8fbfd446ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5ln4y) z32|-f>bv&*#q}32Z@zkc`|Z11Z{FT~{pQZQ_cva?y8Hgay$>JnfBbay+4GB!9zXc} z`Qeu@XYby-^7Pr6J9kgsymjgElXLeUoW6bM*wyPtE?+%->B|5A|98JOX9pV2nB?v5 zB2}9H#0bdYEbxddW?PSeGyc!^MFgZ zo3pRLMis^$MI{+Fr&y+vY&9p1r6)H1Yg}bLGtxcJP(Dv?>ADyup6`Z>W+p~%=YC@I z!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z%2yAjF;}# z{Q(L}mbgZgIOpf)rskC}I2WZRmZYXAlxLP?D7bt2281{Ai31f$ffNPjrgnPbV&Ok^(rG_tLmt<~flF14XWCd@uAJi6 zts&&0qtT(ty|0P2{z!cBqbaMn%_71B-~2ds-7n}As&g3o5L=Hktj zIk)8mdJ2_RtjOarn)6*+!RNEqv%SZA3)wW^26;tZ+Aa~LU*>Dke#GmUJj*98#%Go) zVMd~%D_oBTN%3B1Dcl@lvRLMCm)(oD&6i|iFRlKvM@_@{#NmdMcKt8zv-B{E%NtZ2 z<8NR7z_DW5Cp(#kpEA0{mo_EnOWeHwcAoPL4GE|9rA%8K=U5l9mc_^%;!rs?Ptqsk z+dL)rgxs)sn`er%m&$%no!zrXY;KY3ynDxQi?8}olocsvE4^)IIltSrnUWmkFKf7%-uO$?r{elF{r5}E*9!Q8_D diff --git a/src/main/resources/assets/ironchest/textures/blocks/obsidian_side.png b/src/main/resources/assets/ironchest/textures/blocks/obsidian_side.png deleted file mode 100755 index dc8d227eb9c8e438cddddbc293bfbbcdb7d564b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000XT000XT0n*)m`~Uy|8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X z4i^9b02*{fSaefwW^{L9a%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004eNkl3j0)bSDgcvFYCT0f2z{KC-U-Q@&6&vF8%DOxIzFwcQ z);3Kuo6XLnh=?&pYn|u$X0s{F5)+xv=Y8MvQek-C8&f4X=R`*5hAgv>H?JrOSynzB z-W5WSF>>6$VS}pbs%k+b`ZV0u^~%}>NG5d@DY?eDSnYvx9?#416AuvSQU#Ho(|fPJ zqR{J~l3xBlfEg&{{o1)RkR|~ltuYpbk>XTkmI>^sx~?M$nYArgEv{+3_q(Q98&jae zPofAtu=MW$9S#O6^N-GLfia=;@EX3j$aBGtuftDqraohez~1x22VJppY8=Dnqyd1| zVNg5-Y{$dN?;K^9MNuf$BlZ1rF_dLPVis)KUi}JygPs;cS7B+Df?0$d)MdD|+w9d8 frRzF+QA&LSk)KHy<3b}!00000NkvXXu0mjfJ9hDl diff --git a/src/main/resources/assets/ironchest/textures/blocks/obsidian_top.png b/src/main/resources/assets/ironchest/textures/blocks/obsidian_top.png deleted file mode 100755 index 4f531cc5b6f6e57570eec1d2d7d06559661aee2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000XT000XT0n*)m`~Uy|8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X z4i^9b02*{fSaefwW^{L9a%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004pNklSOA%=>9iGhg$F);D}e+7?iK&(Bzvh4HSd!MFh zn(1^pnM}4(M8sN~=XqI{o6V-KYo17!Wy3IFX?S=)sLm5adQRsCF4j7c!TTLh4K@bB z$y#wPd?%=?$jJBO&0A#QJ{CpIoj8VXjGCrh&u_tQc~JEzUrt{9`Z1$>rfu6)8Quu2 z%h@%QgWp?QaXIc^!PD_WbsO?QAR|{)01HCz*Y`0ET0G*PDB5<}b)8{AL?C*M1J45bDP46hOx7_4S6Fo+k-*%fF5l&A~v z32~jiVEUvv6R%vqa_QQ|i&rmPxN`o?#WN?)p15)Q#`Rm*4<0*s?DVm7m(LwPbNuj$ z!#D5Tyms^2&iy;qY+kc+!^(|2Hts*Nf7QlSvlh>qHhsD`Cy<+`}C2JNhUcG4f`eln&Eu6n%{{R2~V^-%r0lI`S$=lsU z^VIfM6(EPRz$3Dlfq`2Xgc%uT&5-~K&i8b243W4Td+wr8lY#(iK!;F_w{GhpAKl20 z|Mzd`_T?{4Zo=Ijdcxx$TGyx z)XLPt%FsmDz|_jXfbHGqP81Ef`6-!cl~4_ax<*DJhK5!~25=4KTTjLVH3))iNXyJg g%}dNpwJHHJ7);`g0+}i<03{hbUHx3vIVCg!0HN*r<^TWy diff --git a/src/main/resources/assets/ironchest/textures/blocks/silver_side.png b/src/main/resources/assets/ironchest/textures/blocks/silver_side.png deleted file mode 100755 index d4df07738c55bf926f233ebfd1b0bd5ae8766fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lqd@D z32~jiVEUvv6R%vqa_QQ|i&rmPxN`o?#WN?)p15)Q#`Rm*kDoby_{8CxcWxd$cJSKG zYiBQ=J$CxofujfZAK8EC_@UhgcWv9dZS$_p8+UBnv~$yj?Hkr@UAKDE>Qx(8tysTe z$(qHBS1($*Vde7m%NDI#xNzly`77rC|No!w?8|vT+ZmI*-Ca}1 z9Bz^P$UQL3oO9t6yMB$Qd)qQX7H_$>$SIqrCCqELV0FM zhJw4NZ$Nk>pEyvFDo9ZZP|7M9tb)PFz|dIN0EjF@3{9;}EvyVpbPY_c3=G)beeOij zkei>9nN|taV5nqKJWzum$cD7coYcI;+*GR)AcMgq-e5nE45bDP46hOx7_4S6Fo+k-*%fF5l&}f# z32~jiVETnC=PzEpaOv8`E7z}FyLs*Ut?TD5pF45(#EsiGZr-_h{LJyQm(CtLeeCdw z!>2EtK6vclfujfZAKCx^|NnlWnVo}?8-`Ablc`wlW_n(^j^XLCFe&S&X$SuEE2Xu;LiEBiObAE1a zYF-J0b5UwyNotBhd1gt5g1e`0KzJjcI8c!)NKpz<$|@PGg2BkZ&{)?1h%7@4O|48V ztPD+b4NR>J4A|a%?nKd$o1c=IRteQ$sB2^tVrXb(WB}JtzV&20P=g@IhP2F_)V##p cRI3sogTW-;@C3JJ7EqGG)78&qol`;+04ig{9{>OV