--- a/net/minecraft/server/BlockShulkerBox.java +++ b/net/minecraft/server/BlockShulkerBox.java @@ -92,7 +92,32 @@ } - public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {} + // CraftBukkit start - override to prevent duplication when dropping + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityShulkerBox) { + TileEntityShulkerBox tileentityshulkerbox = (TileEntityShulkerBox) tileentity; + + if (!tileentityshulkerbox.r() && tileentityshulkerbox.F()) { + ItemStack itemstack = new ItemStack(Item.getItemOf(this)); + NBTTagCompound nbttagcompound = new NBTTagCompound(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + nbttagcompound.set("BlockEntityTag", ((TileEntityShulkerBox) tileentity).f(nbttagcompound1)); + itemstack.setTag(nbttagcompound); + if (tileentityshulkerbox.hasCustomName()) { + itemstack.g(tileentityshulkerbox.getName()); + tileentityshulkerbox.setCustomName(""); + } + + a(world, blockposition, itemstack); + } + + world.updateAdjacentComparators(blockposition, iblockdata.getBlock()); + } + } + // CraftBukkit end public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) { if (itemstack.hasName()) { @@ -108,7 +133,7 @@ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { TileEntity tileentity = world.getTileEntity(blockposition); - if (tileentity instanceof TileEntityShulkerBox) { + if (false && tileentity instanceof TileEntityShulkerBox) { // CraftBukkit - moved up TileEntityShulkerBox tileentityshulkerbox = (TileEntityShulkerBox) tileentity; if (!tileentityshulkerbox.r() && tileentityshulkerbox.F()) { @@ -126,8 +151,8 @@ a(world, blockposition, itemstack); } - world.updateAdjacentComparators(blockposition, iblockdata.getBlock()); } + world.updateAdjacentComparators(blockposition, iblockdata.getBlock()); // CraftBukkit - moved down super.remove(world, blockposition, iblockdata); }