package me.km.blocks; import java.util.Random; import me.km.inventory.ContainerCampFire; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.stats.StatList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockCampFireBurning extends BlockCampFire implements ITileEntityProvider { public BlockCampFireBurning(String name, String local) { super(name, local); this.isBlockContainer = true; } @Override public boolean eventReceived(IBlockState state, World w, BlockPos pos, int id, int param) { TileEntity tile = w.getTileEntity(pos); return tile == null ? false : tile.receiveClientEvent(id, param); } @Override public boolean isBurning(IBlockAccess world, BlockPos pos) { return true; } @Override public void onBlockClicked(World w, BlockPos pos, EntityPlayer p) { if(!w.isRemote) { w.setBlockState(pos, ModBlocks.campFireBurnt.getDefaultState()); } } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Items.STICK; } @Override public int quantityDropped(Random r) { return r.nextInt(3) + 1; } @Override public void getDrops(NonNullList drops, IBlockAccess w, BlockPos pos, IBlockState state, int fortune) { super.getDrops(drops, w, pos, state, 0); Random rand = w instanceof World ? ((World) w).rand : new Random(); if(rand.nextBoolean()) { drops.add(new ItemStack(Items.COAL, 1, 1)); } } @Override public boolean onBlockActivated(World w, BlockPos pos, IBlockState state, EntityPlayer p, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if(w.isRemote) { return true; } else { TileEntity tile = w.getTileEntity(pos); if(tile != null && tile instanceof TileEntityCampFire) { ContainerCampFire container = new ContainerCampFire(p.inventory, (TileEntityCampFire) tile); container.openForPlayer((EntityPlayerMP) p); p.addStat(StatList.FURNACE_INTERACTION); } return true; } } @Override public TileEntity createNewTileEntity(World w, int meta) { return new TileEntityCampFire(); } @Override public void breakBlock(World w, BlockPos pos, IBlockState state) { TileEntity tile = w.getTileEntity(pos); if(tile instanceof TileEntityCampFire) { InventoryHelper.dropInventoryItems(w, pos, (TileEntityCampFire) tile); } w.removeTileEntity(pos); } }