From ac91c8319ec6e1dec990746dd04dda6da2a24bc2 Mon Sep 17 00:00:00 2001 From: Christian Weeks Date: Sat, 28 Jan 2012 20:55:20 -0500 Subject: [PATCH] Drop contents when removing --- .../cpw/mods/ironchest/client/GUIChest.java | 2 - .../cpw/mods/ironchest/BlockIronChest.java | 48 ++++++++++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java b/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java index 58e4225..8592789 100644 --- a/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java +++ b/IronChests2/client/cpw/mods/ironchest/client/GUIChest.java @@ -1,7 +1,5 @@ package cpw.mods.ironchest.client; -import java.lang.reflect.InvocationTargetException; - import org.lwjgl.opengl.GL11; import cpw.mods.ironchest.ContainerDiamondChest; diff --git a/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java b/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java index f4de1c9..2cbb8b4 100644 --- a/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java +++ b/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java @@ -1,22 +1,30 @@ package cpw.mods.ironchest; +import java.util.Random; + import net.minecraft.src.BlockContainer; +import net.minecraft.src.EntityItem; import net.minecraft.src.EntityLiving; import net.minecraft.src.EntityPlayer; import net.minecraft.src.IBlockAccess; +import net.minecraft.src.ItemStack; import net.minecraft.src.Material; import net.minecraft.src.MathHelper; +import net.minecraft.src.NBTTagCompound; import net.minecraft.src.TileEntity; +import net.minecraft.src.TileEntityChest; import net.minecraft.src.World; import net.minecraft.src.mod_IronChest; import net.minecraft.src.forge.ITextureProvider; public class BlockIronChest extends BlockContainer implements ITextureProvider { + private Random random; public BlockIronChest(int id) { super(id, Material.iron); setBlockName("IronChest"); setHardness(3.0F); + random=new Random(); } @Override @@ -119,7 +127,6 @@ public class BlockIronChest extends BlockContainer implements ITextureProvider { if (facing == 3) { chestFacing = 4; } - System.out.printf("Facing %d %d\n", facing,chestFacing); TileEntity te = world.getBlockTileEntity(i, j, k); if (te != null && te instanceof TileEntityIronChest) { ((TileEntityIronChest) te).setFacing(chestFacing); @@ -130,4 +137,43 @@ public class BlockIronChest extends BlockContainer implements ITextureProvider { protected int damageDropped(int i) { return i; } + + public void onBlockRemoval(World world, int i, int j, int k) + { + TileEntityChest tileentitychest = (TileEntityChest)world.getBlockTileEntity(i, j, k); + if (tileentitychest != null) + { + for (int l = 0; l < tileentitychest.getSizeInventory(); l++) + { + ItemStack itemstack = tileentitychest.getStackInSlot(l); + if (itemstack == null) + { + continue; + } + float f = random.nextFloat() * 0.8F + 0.1F; + float f1 = random.nextFloat() * 0.8F + 0.1F; + float f2 = random.nextFloat() * 0.8F + 0.1F; + while (itemstack.stackSize > 0) + { + int i1 = random.nextInt(21) + 10; + if (i1 > itemstack.stackSize) + { + i1 = itemstack.stackSize; + } + itemstack.stackSize -= i1; + EntityItem entityitem = new EntityItem(world, (float)i + f, (float)j + f1, (float)k + f2, new ItemStack(itemstack.itemID, i1, itemstack.getItemDamage())); + float f3 = 0.05F; + entityitem.motionX = (float)random.nextGaussian() * f3; + entityitem.motionY = (float)random.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float)random.nextGaussian() * f3; + if (itemstack.hasTagCompound()) + { + entityitem.item.setTagCompound((NBTTagCompound)itemstack.getTagCompound().cloneTag()); + } + world.spawnEntityInWorld(entityitem); + } + } + } + super.onBlockRemoval(world, i, j, k); + } }