BlockCampFireBurning.java 3.2 KB

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