BlockCampFireBurning.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package me.km.blocks.campfire;
  2. import java.util.Random;
  3. import me.km.blocks.ModBlocks;
  4. import me.km.inventory.ContainerCampFire;
  5. import net.minecraft.block.ITileEntityProvider;
  6. import net.minecraft.block.state.IBlockState;
  7. import net.minecraft.entity.player.EntityPlayer;
  8. import net.minecraft.entity.player.EntityPlayerMP;
  9. import net.minecraft.init.Items;
  10. import net.minecraft.inventory.InventoryHelper;
  11. import net.minecraft.item.Item;
  12. import net.minecraft.item.ItemStack;
  13. import net.minecraft.stats.StatList;
  14. import net.minecraft.tileentity.TileEntity;
  15. import net.minecraft.util.EnumFacing;
  16. import net.minecraft.util.EnumHand;
  17. import net.minecraft.util.NonNullList;
  18. import net.minecraft.util.math.BlockPos;
  19. import net.minecraft.world.IBlockAccess;
  20. import net.minecraft.world.World;
  21. public class BlockCampFireBurning extends BlockCampFire implements ITileEntityProvider
  22. {
  23. public BlockCampFireBurning(String name, String local)
  24. {
  25. super(name, local);
  26. this.hasTileEntity = true;
  27. }
  28. @Override
  29. public boolean eventReceived(IBlockState state, World w, BlockPos pos, int id, int param)
  30. {
  31. TileEntity tile = w.getTileEntity(pos);
  32. return tile == null ? false : tile.receiveClientEvent(id, param);
  33. }
  34. @Override
  35. public boolean isBurning(IBlockAccess world, BlockPos pos)
  36. {
  37. return true;
  38. }
  39. @Override
  40. public void onBlockClicked(World w, BlockPos pos, EntityPlayer p)
  41. {
  42. if(!w.isRemote)
  43. {
  44. w.setBlockState(pos, ModBlocks.campFireBurnt.getDefaultState());
  45. }
  46. }
  47. @Override
  48. public Item getItemDropped(IBlockState state, Random rand, int fortune)
  49. {
  50. return Items.STICK;
  51. }
  52. @Override
  53. public int quantityDropped(Random r)
  54. {
  55. return r.nextInt(3) + 1;
  56. }
  57. @Override
  58. public void getDrops(NonNullList<ItemStack> drops, IBlockAccess w, BlockPos pos, IBlockState state, int fortune)
  59. {
  60. super.getDrops(drops, w, pos, state, 0);
  61. Random rand = w instanceof World ? ((World) w).rand : new Random();
  62. if(rand.nextBoolean())
  63. {
  64. drops.add(new ItemStack(Items.COAL, 1, 1));
  65. }
  66. }
  67. @Override
  68. public boolean onBlockActivated(World w, BlockPos pos, IBlockState state, EntityPlayer p, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
  69. {
  70. if(w.isRemote)
  71. {
  72. return true;
  73. }
  74. else
  75. {
  76. TileEntity tile = w.getTileEntity(pos);
  77. if(tile != null && tile instanceof TileEntityCampFire)
  78. {
  79. ContainerCampFire container = new ContainerCampFire(p.inventory, (TileEntityCampFire) tile);
  80. container.openForPlayer((EntityPlayerMP) p);
  81. p.addStat(StatList.FURNACE_INTERACTION);
  82. }
  83. return true;
  84. }
  85. }
  86. @Override
  87. public TileEntity createNewTileEntity(World w, int meta)
  88. {
  89. return new TileEntityCampFire();
  90. }
  91. @Override
  92. public void breakBlock(World w, BlockPos pos, IBlockState state)
  93. {
  94. TileEntity tile = w.getTileEntity(pos);
  95. if(tile instanceof TileEntityCampFire)
  96. {
  97. InventoryHelper.dropInventoryItems(w, pos, (TileEntityCampFire) tile);
  98. }
  99. w.removeTileEntity(pos);
  100. }
  101. }