BlockCampFire.java 3.5 KB

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