package me.km.blocks; import java.util.Random; import me.km.items.ModItems; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class BlockCampFire extends BlockBase { public static final AxisAlignedBB BOX = new AxisAlignedBB(0.25D, 0.0D, 0.25D, 0.75D, 0.4D, 0.75D); public BlockCampFire(String name, String local) { super(Material.FIRE, name, local); super.setLightOpacity(0); super.setHardness(1.5f); super.setResistance(4); } @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 { w.setBlockState(pos, ModBlocks.campFireBurning.getDefaultState()); return true; } } @Override public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { return BOX; } @Override public boolean isOpaqueCube(IBlockState state) { return false; } @Override public boolean isFullCube(IBlockState state) { return false; } @Override public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { return new ItemStack(ModItems.campFire); } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return ModItems.campFire; } @SideOnly(Side.CLIENT) @Override public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) { return true; } @SideOnly(Side.CLIENT) @Override public BlockRenderLayer getBlockLayer() { return BlockRenderLayer.CUTOUT; } @Override public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } @Override public boolean canPlaceBlockAt(World w, BlockPos pos) { return canBlockStay(w, pos) ? super.canPlaceBlockAt(w, pos) : false; } public boolean canBlockStay(World w, BlockPos pos) { return w.getBlockState(pos.down()).isTopSolid(); } @Override public void neighborChanged(IBlockState state, World w, BlockPos pos, Block b, BlockPos fromPos) { if(!this.canBlockStay(w, pos)) { this.dropBlockAsItem(w, pos, state, 0); w.setBlockToAir(pos); for(EnumFacing enumfacing : EnumFacing.values()) { w.notifyNeighborsOfStateChange(pos.offset(enumfacing), this, false); } } } @Override public boolean isReplaceable(IBlockAccess worldIn, BlockPos pos) { return false; } }