From 4e8ee7002fc7894800ea03761d473d7192f148c6 Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Tue, 5 Aug 2014 21:02:07 +0100 Subject: [PATCH] Fixed the Crafty Crate not dropping its' contents. --- .../botania/common/block/BlockOpenCrate.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java b/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java index c224f1387..4289bd725 100644 --- a/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java +++ b/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java @@ -12,14 +12,17 @@ package vazkii.botania.common.block; import java.util.List; +import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -29,6 +32,7 @@ import vazkii.botania.api.wand.IWandable; import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.block.tile.TileCraftCrate; import vazkii.botania.common.block.tile.TileOpenCrate; +import vazkii.botania.common.block.tile.TileSimpleInventory; import vazkii.botania.common.item.block.ItemBlockWithMetadataAndName; import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibBlockNames; @@ -40,6 +44,8 @@ public class BlockOpenCrate extends BlockModContainer implements ILexiconable, I IIcon iconBottom; IIcon iconSideCraft; IIcon iconBottomCraft; + + Random random; private static final int SUBTYPES = 2; @@ -48,6 +54,8 @@ public class BlockOpenCrate extends BlockModContainer implements ILexiconable, I setHardness(2.0F); setStepSound(soundTypeWood); setBlockName(LibBlockNames.OPEN_CRATE); + + random = new Random(); } @Override @@ -71,6 +79,44 @@ public class BlockOpenCrate extends BlockModContainer implements ILexiconable, I public int damageDropped(int meta) { return meta; } + + @Override + public void breakBlock(World par1World, int par2, int par3, int par4, Block par5, int par6) { + TileSimpleInventory inv = (TileSimpleInventory) par1World.getTileEntity(par2, par3, par4); + + if (inv != null) { + for (int j1 = 0; j1 < inv.getSizeInventory(); ++j1) { + ItemStack itemstack = inv.getStackInSlot(j1); + + if (itemstack != null) { + float f = random.nextFloat() * 0.8F + 0.1F; + float f1 = random.nextFloat() * 0.8F + 0.1F; + EntityItem entityitem; + + for (float f2 = random.nextFloat() * 0.8F + 0.1F; itemstack.stackSize > 0; par1World.spawnEntityInWorld(entityitem)) { + int k1 = random.nextInt(21) + 10; + + if (k1 > itemstack.stackSize) + k1 = itemstack.stackSize; + + itemstack.stackSize -= k1; + entityitem = new EntityItem(par1World, par2 + f, par3 + f1, par4 + f2, new ItemStack(itemstack.getItem(), k1, 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.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + } + } + } + + par1World.func_147453_f(par2, par3, par4, par5); + } + + super.breakBlock(par1World, par2, par3, par4, par5, par6); + } @Override public void registerBlockIcons(IIconRegister par1IconRegister) {