diff --git a/src/main/java/cpw/mods/ironchest/BlockIronChest.java b/src/main/java/cpw/mods/ironchest/BlockIronChest.java index e5a6328..9b19f51 100755 --- a/src/main/java/cpw/mods/ironchest/BlockIronChest.java +++ b/src/main/java/cpw/mods/ironchest/BlockIronChest.java @@ -47,10 +47,9 @@ public class BlockIronChest extends Block public BlockIronChest() { super(Material.IRON); + this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "BlockIronChest")); - this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronChestType.IRON)); - this.setHardness(3.0F); this.setUnlocalizedName("IronChest"); this.setCreativeTab(CreativeTabs.DECORATIONS); @@ -103,6 +102,7 @@ public class BlockIronChest extends Block } player.openGui(IronChest.instance, ((TileEntityIronChest) te).getType().ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); + return true; } @@ -153,6 +153,7 @@ public class BlockIronChest extends Block public void onBlockAdded(World world, BlockPos pos, IBlockState blockState) { super.onBlockAdded(world, pos, blockState); + world.notifyBlockUpdate(pos, blockState, blockState, 3); } @@ -160,11 +161,14 @@ public class BlockIronChest extends Block public void onBlockPlacedBy(World world, BlockPos pos, IBlockState blockState, EntityLivingBase entityliving, ItemStack itemStack) { TileEntity te = world.getTileEntity(pos); + if (te != null && te instanceof TileEntityIronChest) { TileEntityIronChest teic = (TileEntityIronChest) te; + teic.wasPlaced(entityliving, itemStack); teic.setFacing(entityliving.getHorizontalFacing().getOpposite()); + world.notifyBlockUpdate(pos, blockState, blockState, 3); } } @@ -186,6 +190,7 @@ public class BlockIronChest extends Block InventoryHelper.dropInventoryItems(worldIn, pos, tileentity); } + super.breakBlock(worldIn, pos, state); } @@ -193,14 +198,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); } @@ -214,10 +222,12 @@ public class BlockIronChest extends Block public int getComparatorInputOverride(IBlockState blockState, World world, BlockPos pos) { TileEntity te = world.getTileEntity(pos); + if (te instanceof IInventory) { return Container.calcRedstoneFromInventory((IInventory) te); } + return 0; } @@ -236,14 +246,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 +268,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/ChestChangerType.java b/src/main/java/cpw/mods/ironchest/ChestChangerType.java index 07b91c5..9a085d2 100755 --- a/src/main/java/cpw/mods/ironchest/ChestChangerType.java +++ b/src/main/java/cpw/mods/ironchest/ChestChangerType.java @@ -57,8 +57,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/ContainerIronChest.java b/src/main/java/cpw/mods/ironchest/ContainerIronChest.java index 3b23cc5..6c91460 100755 --- a/src/main/java/cpw/mods/ironchest/ContainerIronChest.java +++ b/src/main/java/cpw/mods/ironchest/ContainerIronChest.java @@ -45,10 +45,12 @@ public class ContainerIronChest extends Container { ItemStack itemstack = null; Slot slot = this.inventorySlots.get(i); + if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); + if (i < this.type.size) { if (!this.mergeItemStack(itemstack1, this.type.size, this.inventorySlots.size(), true)) @@ -73,6 +75,7 @@ public class ContainerIronChest extends Container slot.onSlotChanged(); } } + return itemstack; } @@ -80,6 +83,7 @@ public class ContainerIronChest extends Container public void onContainerClosed(EntityPlayer entityplayer) { super.onContainerClosed(entityplayer); + this.chest.closeInventory(entityplayer); } @@ -101,12 +105,14 @@ 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)); + //@formatter:off + this.addSlotToContainer(new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10)); + //@formatter:on } } diff --git a/src/main/java/cpw/mods/ironchest/IronChest.java b/src/main/java/cpw/mods/ironchest/IronChest.java index 1633f0a..1cc0039 100755 --- a/src/main/java/cpw/mods/ironchest/IronChest.java +++ b/src/main/java/cpw/mods/ironchest/IronChest.java @@ -52,6 +52,7 @@ 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); } diff --git a/src/main/java/cpw/mods/ironchest/IronChestType.java b/src/main/java/cpw/mods/ironchest/IronChestType.java index d2b3cda..3434c17 100755 --- a/src/main/java/cpw/mods/ironchest/IronChestType.java +++ b/src/main/java/cpw/mods/ironchest/IronChestType.java @@ -109,11 +109,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; @@ -152,12 +154,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); } diff --git a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java index 76e6a0a..5d1f822 100755 --- a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java +++ b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java @@ -168,7 +168,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick { ItemStack tempCopyStack = tempCopy[j]; - if (ItemStack.areItemsEqual(tempCopyStack, itemStack)) + if (ItemStack.areItemsEqualIgnoreDurability(tempCopyStack, itemStack)) { if (itemStack.stackSize != tempCopyStack.stackSize) { @@ -196,13 +196,6 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick this.topStacks[i] = null; } - if (this.world != null) - { - IBlockState iblockstate = this.world.getBlockState(this.pos); - - this.world.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3); - } - return; } @@ -249,13 +242,6 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick this.topStacks[i] = null; } - if (this.world != null) - { - IBlockState iblockstate = this.world.getBlockState(this.pos); - - this.world.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3); - } - sendTopStacksPacket(); } diff --git a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java index 76601d1..ba4fe58 100755 --- a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java +++ b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java @@ -66,6 +66,7 @@ public class ClientProxy extends CommonProxy 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); diff --git a/src/main/java/cpw/mods/ironchest/client/GUIChest.java b/src/main/java/cpw/mods/ironchest/client/GUIChest.java index ae8f205..3f2fa01 100755 --- a/src/main/java/cpw/mods/ironchest/client/GUIChest.java +++ b/src/main/java/cpw/mods/ironchest/client/GUIChest.java @@ -91,10 +91,12 @@ public class GUIChest extends GuiContainer protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { 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/network/MessageCrystalChestSync.java b/src/main/java/cpw/mods/ironchest/network/MessageCrystalChestSync.java index 3d4cc8d..2413d88 100644 --- a/src/main/java/cpw/mods/ironchest/network/MessageCrystalChestSync.java +++ b/src/main/java/cpw/mods/ironchest/network/MessageCrystalChestSync.java @@ -3,7 +3,6 @@ package cpw.mods.ironchest.network; import cpw.mods.ironchest.IronChest; import cpw.mods.ironchest.TileEntityIronChest; import io.netty.buffer.ByteBuf; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; @@ -38,18 +37,9 @@ public class MessageCrystalChestSync implements IMessage int size = buf.readInt(); this.topStacks = new ItemStack[size]; - int stackListSize = buf.readInt(); - - for (int i = 0; i < stackListSize; i++) + for (int i = 0; i < size; i++) { - if (i < stackListSize) - { - this.topStacks[i] = readItemStack(buf); - } - else - { - this.topStacks[i] = null; - } + this.topStacks[i] = ByteBufUtils.readItemStack(buf); } } @@ -62,40 +52,10 @@ public class MessageCrystalChestSync implements IMessage buf.writeInt(this.pos.getZ()); buf.writeInt(topStacks.length); - int stackListSize = 0; - for (ItemStack stack : topStacks) { - if (stack != null) - { - stackListSize++; - } + ByteBufUtils.writeItemStack(buf, stack); } - - buf.writeInt(stackListSize); - - for (ItemStack stack : topStacks) - { - if (stack != null) - { - writeItemStack(buf, stack); - } - } - } - - public static void writeItemStack(ByteBuf buf, ItemStack stack) - { - buf.writeInt(Item.getIdFromItem(stack.getItem())); - buf.writeInt(stack.stackSize); - buf.writeInt(stack.getItemDamage()); - ByteBufUtils.writeTag(buf, stack.getItem().getNBTShareTag(stack)); - } - - public static ItemStack readItemStack(ByteBuf buf) - { - ItemStack stack = new ItemStack(Item.getItemById(buf.readInt()), buf.readInt(), buf.readInt()); - stack.setTagCompound(ByteBufUtils.readTag(buf)); - return stack; } public static class Handler implements IMessageHandler @@ -112,6 +72,7 @@ public class MessageCrystalChestSync implements IMessage if (tile instanceof TileEntityIronChest) ((TileEntityIronChest) tile).receiveMessageFromServer(message.topStacks); } + return null; } }