BlockCookingPot.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package me.km.blocks.cookingpot;
  2. import me.km.items.ItemColoredSoup;
  3. import me.km.items.ModItems;
  4. import net.minecraft.block.Block;
  5. import net.minecraft.block.CauldronBlock;
  6. import net.minecraft.block.ITileEntityProvider;
  7. import net.minecraft.block.material.Material;
  8. import net.minecraft.block.material.MaterialColor;
  9. import net.minecraft.block.BlockState;
  10. import net.minecraft.entity.player.PlayerEntity;
  11. import net.minecraft.entity.player.ServerPlayerEntity;
  12. import net.minecraft.item.Items;
  13. import net.minecraft.item.ItemStack;
  14. import net.minecraft.tileentity.TileEntity;
  15. import net.minecraft.util.Hand;
  16. import net.minecraft.util.math.BlockPos;
  17. import net.minecraft.util.math.BlockRayTraceResult;
  18. import net.minecraft.world.IBlockReader;
  19. import net.minecraft.world.World;
  20. import net.minecraft.util.ActionResultType;
  21. @SuppressWarnings("deprecation")
  22. public class BlockCookingPot extends CauldronBlock implements ITileEntityProvider {
  23. public BlockCookingPot(String name) {
  24. super(Block.Properties.of(Material.METAL, MaterialColor.COLOR_BROWN).strength(2.0f));
  25. this.setRegistryName(name);
  26. }
  27. @Override
  28. public TileEntity createNewTileEntity(IBlockReader reader) {
  29. return new TileEntityCookingPot();
  30. }
  31. @Override
  32. public boolean hasTileEntity(BlockState state) {
  33. return true;
  34. }
  35. @Override
  36. public TileEntity createTileEntity(BlockState state, IBlockReader world) {
  37. return new TileEntityCookingPot();
  38. }
  39. @Override
  40. public ActionResultType onBlockActivated(BlockState state, World w, BlockPos pos,
  41. PlayerEntity p, Hand hand, BlockRayTraceResult hit) {
  42. TileEntity te = w.getTileEntity(pos);
  43. if(te instanceof TileEntityCookingPot) {
  44. TileEntityCookingPot cauldron = (TileEntityCookingPot) te;
  45. ItemStack stack = p.getHeldItem(hand);
  46. if(stack.isEmpty()) {
  47. return ActionResultType.PASS;
  48. } else if(stack.getItem() == Items.BOWL) {
  49. int waterLevel = state.get(LEVEL);
  50. if(waterLevel > 0 && !w.isRemote) {
  51. ItemStack stew = new ItemStack(ModItems.coloredSoup);
  52. ItemColoredSoup.addIngredient(stew, cauldron.getIngredients());
  53. ItemColoredSoup.setColor(stew, cauldron.getColor().getRGB());
  54. ItemColoredSoup.setFoodStats(stew, cauldron.getIngredients());
  55. stack.shrink(1);
  56. if(stack.isEmpty()) {
  57. p.setHeldItem(hand, stew);
  58. } else if(!p.inventory.addItemStackToInventory(stew)) {
  59. p.dropItem(stew, false);
  60. } else if(p instanceof ServerPlayerEntity) {
  61. ((ServerPlayerEntity) p).sendContainerToPlayer(p.container);
  62. }
  63. this.setWaterLevel(w, pos, state, waterLevel - 1);
  64. }
  65. return ActionResultType.SUCCESS;
  66. }
  67. int ingredients = cauldron.getNumberOfIngredients();
  68. if(ingredients < 3 && cauldron.addItemStack(stack, !w.isRemote)) {
  69. if(!w.isRemote && !p.isCreative()) {
  70. stack.shrink(1);
  71. }
  72. return ActionResultType.SUCCESS;
  73. }
  74. if(ingredients > 0) {
  75. return ActionResultType.PASS;
  76. }
  77. }
  78. return super.onBlockActivated(state, w, pos, p, hand, hit);
  79. }
  80. @Override
  81. public void setWaterLevel(World w, BlockPos pos, BlockState state, int level) {
  82. if(level <= 0 && !w.isRemote) {
  83. TileEntity te = w.getTileEntity(pos);
  84. if(te instanceof TileEntityCookingPot) {
  85. ((TileEntityCookingPot) te).reset();
  86. }
  87. }
  88. super.setWaterLevel(w, pos, state, level);
  89. }
  90. @Override
  91. public void fillWithRain(World w, BlockPos pos) {
  92. if(!w.isRemote) {
  93. TileEntity te = w.getTileEntity(pos);
  94. if(te instanceof TileEntityCookingPot) {
  95. ((TileEntityCookingPot) te).reset();
  96. }
  97. }
  98. super.fillWithRain(w, pos);
  99. }
  100. }