BlockCookingPot.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. public class BlockCookingPot extends CauldronBlock implements ITileEntityProvider {
  22. public BlockCookingPot(String name) {
  23. super(Block.Properties.create(Material.IRON, MaterialColor.BROWN).hardnessAndResistance(2.0f));
  24. this.setRegistryName(name);
  25. }
  26. @Override
  27. public TileEntity createNewTileEntity(IBlockReader reader) {
  28. return new TileEntityCookingPot();
  29. }
  30. @Override
  31. public boolean hasTileEntity(BlockState state) {
  32. return true;
  33. }
  34. @Override
  35. public TileEntity createTileEntity(BlockState state, IBlockReader world) {
  36. return new TileEntityCookingPot();
  37. }
  38. @Override
  39. public ActionResultType onBlockActivated(BlockState state, World w, BlockPos pos, PlayerEntity p, Hand hand, BlockRayTraceResult hit) {
  40. TileEntity te = w.getTileEntity(pos);
  41. if(te instanceof TileEntityCookingPot) {
  42. TileEntityCookingPot cauldron = (TileEntityCookingPot) te;
  43. ItemStack stack = p.getHeldItem(hand);
  44. if(stack.isEmpty()) {
  45. return ActionResultType.PASS;
  46. } else if(stack.getItem() == Items.BOWL) {
  47. int waterLevel = state.get(LEVEL);
  48. if(waterLevel > 0 && !w.isRemote) {
  49. ItemStack stew = new ItemStack(ModItems.coloredSoup);
  50. ItemColoredSoup.addIngredient(stew, cauldron.getIngredients());
  51. ItemColoredSoup.setColor(stew, cauldron.getColor().getRGB());
  52. ItemColoredSoup.setFoodStats(stew, cauldron.getIngredients());
  53. stack.shrink(1);
  54. if(stack.isEmpty()) {
  55. p.setHeldItem(hand, stew);
  56. } else if(!p.inventory.addItemStackToInventory(stew)) {
  57. p.dropItem(stew, false);
  58. } else if(p instanceof ServerPlayerEntity) {
  59. ((ServerPlayerEntity) p).sendContainerToPlayer(p.container);
  60. }
  61. this.setWaterLevel(w, pos, state, waterLevel - 1);
  62. }
  63. return ActionResultType.SUCCESS;
  64. }
  65. int ingredients = cauldron.getNumberOfIngredients();
  66. if(ingredients < 3 && cauldron.addItemStack(stack, !w.isRemote)) {
  67. if(!w.isRemote && !p.isCreative()) {
  68. stack.shrink(1);
  69. }
  70. return ActionResultType.SUCCESS;
  71. }
  72. if(ingredients > 0) {
  73. return ActionResultType.PASS;
  74. }
  75. }
  76. return super.onBlockActivated(state, w, pos, p, hand, hit);
  77. }
  78. @Override
  79. public void setWaterLevel(World w, BlockPos pos, BlockState state, int level) {
  80. if(level <= 0 && !w.isRemote) {
  81. TileEntity te = w.getTileEntity(pos);
  82. if(te instanceof TileEntityCookingPot) {
  83. ((TileEntityCookingPot) te).reset();
  84. }
  85. }
  86. super.setWaterLevel(w, pos, state, level);
  87. }
  88. @Override
  89. public void fillWithRain(World w, BlockPos pos) {
  90. if(!w.isRemote) {
  91. TileEntity te = w.getTileEntity(pos);
  92. if(te instanceof TileEntityCookingPot) {
  93. ((TileEntityCookingPot) te).reset();
  94. }
  95. }
  96. super.fillWithRain(w, pos);
  97. }
  98. }