BlockCampFire.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package me.km.blocks;
  2. import java.util.Random;
  3. import me.km.items.ModItems;
  4. import net.minecraft.block.Block;
  5. import net.minecraft.block.material.Material;
  6. import net.minecraft.block.state.IBlockState;
  7. import net.minecraft.entity.player.EntityPlayer;
  8. import net.minecraft.item.Item;
  9. import net.minecraft.item.ItemStack;
  10. import net.minecraft.util.BlockRenderLayer;
  11. import net.minecraft.util.EnumBlockRenderType;
  12. import net.minecraft.util.EnumFacing;
  13. import net.minecraft.util.EnumHand;
  14. import net.minecraft.util.math.AxisAlignedBB;
  15. import net.minecraft.util.math.BlockPos;
  16. import net.minecraft.world.IBlockAccess;
  17. import net.minecraft.world.World;
  18. import net.minecraftforge.fml.relauncher.Side;
  19. import net.minecraftforge.fml.relauncher.SideOnly;
  20. public class BlockCampFire extends BlockBase
  21. {
  22. public static final AxisAlignedBB BOX = new AxisAlignedBB(0.25D, 0.0D, 0.25D, 0.75D, 0.4D, 0.75D);
  23. public BlockCampFire(String name, String local)
  24. {
  25. super(Material.FIRE, name, local);
  26. super.setLightOpacity(0);
  27. super.setHardness(1.5f);
  28. super.setResistance(4);
  29. }
  30. @Override
  31. public boolean onBlockActivated(World w, BlockPos pos, IBlockState state, EntityPlayer p, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
  32. {
  33. if (w.isRemote)
  34. {
  35. return true;
  36. }
  37. else
  38. {
  39. w.setBlockState(pos, ModBlocks.campFireBurning.getDefaultState());
  40. return true;
  41. }
  42. }
  43. @Override
  44. public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
  45. {
  46. return BOX;
  47. }
  48. @Override
  49. public boolean isOpaqueCube(IBlockState state)
  50. {
  51. return false;
  52. }
  53. @Override
  54. public boolean isFullCube(IBlockState state)
  55. {
  56. return false;
  57. }
  58. @Override
  59. public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
  60. {
  61. return new ItemStack(ModItems.campFire);
  62. }
  63. @Override
  64. public Item getItemDropped(IBlockState state, Random rand, int fortune)
  65. {
  66. return ModItems.campFire;
  67. }
  68. @SideOnly(Side.CLIENT)
  69. @Override
  70. public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
  71. {
  72. return true;
  73. }
  74. @SideOnly(Side.CLIENT)
  75. @Override
  76. public BlockRenderLayer getBlockLayer()
  77. {
  78. return BlockRenderLayer.CUTOUT;
  79. }
  80. @Override
  81. public EnumBlockRenderType getRenderType(IBlockState state)
  82. {
  83. return EnumBlockRenderType.MODEL;
  84. }
  85. @Override
  86. public boolean canPlaceBlockAt(World w, BlockPos pos)
  87. {
  88. return canBlockStay(w, pos) ? super.canPlaceBlockAt(w, pos) : false;
  89. }
  90. public boolean canBlockStay(World w, BlockPos pos)
  91. {
  92. return w.getBlockState(pos.down()).isTopSolid();
  93. }
  94. @Override
  95. public void neighborChanged(IBlockState state, World w, BlockPos pos, Block b, BlockPos fromPos)
  96. {
  97. if(!this.canBlockStay(w, pos))
  98. {
  99. this.dropBlockAsItem(w, pos, state, 0);
  100. w.setBlockToAir(pos);
  101. for(EnumFacing enumfacing : EnumFacing.values())
  102. {
  103. w.notifyNeighborsOfStateChange(pos.offset(enumfacing), this, false);
  104. }
  105. }
  106. }
  107. @Override
  108. public boolean isReplaceable(IBlockAccess worldIn, BlockPos pos)
  109. {
  110. return false;
  111. }
  112. }