Hopper now drops inventory contents when broken. Closes #46

This commit is contained in:
SirSengir 2012-06-04 22:45:16 +02:00
parent 90f3466960
commit 15d239a6a9
2 changed files with 70 additions and 2 deletions

View file

@ -0,0 +1,66 @@
package net.minecraft.src.buildcraft.core;
import java.util.Random;
import net.minecraft.src.BlockContainer;
import net.minecraft.src.EntityItem;
import net.minecraft.src.IInventory;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Material;
import net.minecraft.src.TileEntity;
import net.minecraft.src.World;
import net.minecraft.src.buildcraft.api.APIProxy;
public abstract class BlockBuildCraft extends BlockContainer {
protected static boolean keepInventory = false;
protected Random rand;
protected BlockBuildCraft(int id, Material material) {
super(id, material);
this.rand = new Random();
}
@Override
public void onBlockRemoval(World world, int i, int j, int k) {
if(APIProxy.isRemote())
return;
if(!keepInventory) {
IInventory tile = (IInventory)world.getBlockTileEntity(i, j, k);
if(tile != null)
label0:
for(int l = 0; l < tile.getSizeInventory(); l++) {
ItemStack itemstack = tile.getStackInSlot(l);
if(itemstack == null)
continue;
float f = rand.nextFloat() * 0.8F + 0.1F;
float f1 = rand.nextFloat() * 0.8F + 0.1F;
float f2 = rand.nextFloat() * 0.8F + 0.1F;
do {
if(itemstack.stackSize <= 0)
continue label0;
int i1 = rand.nextInt(21) + 10;
if(i1 > itemstack.stackSize)
i1 = itemstack.stackSize;
ItemStack drop = itemstack.splitStack(i1);
EntityItem entityitem = new EntityItem(world, i + f, j + f1, k + f2, drop);
float f3 = 0.05F;
entityitem.motionX = (float)rand.nextGaussian() * f3;
entityitem.motionY = (float)rand.nextGaussian() * f3 + 0.2F;
entityitem.motionZ = (float)rand.nextGaussian() * f3;
world.spawnEntityInWorld(entityitem);
} while(true);
}
}
super.onBlockRemoval(world, i, j, k);
}
}

View file

@ -4,17 +4,20 @@ import java.util.ArrayList;
import net.minecraft.src.BlockContainer;
import net.minecraft.src.BuildCraftCore;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.IInventory;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Material;
import net.minecraft.src.TileEntity;
import net.minecraft.src.World;
import net.minecraft.src.mod_BuildCraftFactory;
import net.minecraft.src.buildcraft.api.APIProxy;
import net.minecraft.src.buildcraft.core.BlockBuildCraft;
import net.minecraft.src.buildcraft.core.GuiIds;
import net.minecraft.src.buildcraft.core.IItemPipe;
public class BlockHopper extends BlockContainer{
public class BlockHopper extends BlockBuildCraft {
public BlockHopper(int blockId) {
super(blockId, Material.iron);
@ -44,7 +47,6 @@ public class BlockHopper extends BlockContainer{
@Override
public int getBlockTextureFromSide(int par1) {
// TODO Auto-generated method stub
return 1;
}