BlockCookingPot.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package me.km.blocks.cookingpot;
  2. import java.util.Random;
  3. import me.km.KajetansMod;
  4. import me.km.blocks.IBlockBase;
  5. import me.km.items.ModItems;
  6. import net.minecraft.block.BlockCauldron;
  7. import net.minecraft.block.ITileEntityProvider;
  8. import net.minecraft.block.SoundType;
  9. import net.minecraft.block.state.IBlockState;
  10. import net.minecraft.creativetab.CreativeTabs;
  11. import net.minecraft.entity.player.EntityPlayer;
  12. import net.minecraft.entity.player.EntityPlayerMP;
  13. import net.minecraft.init.Items;
  14. import net.minecraft.item.Item;
  15. import net.minecraft.item.ItemStack;
  16. import net.minecraft.tileentity.TileEntity;
  17. import net.minecraft.util.EnumFacing;
  18. import net.minecraft.util.EnumHand;
  19. import net.minecraft.util.math.BlockPos;
  20. import net.minecraft.world.World;
  21. public class BlockCookingPot extends BlockCauldron implements IBlockBase, ITileEntityProvider
  22. {
  23. protected String name;
  24. public BlockCookingPot(String name, String local)
  25. {
  26. this.name = name;
  27. this.setRegistryName(name);
  28. super.setUnlocalizedName(local);
  29. super.setHardness(2.0F);
  30. super.setCreativeTab(CreativeTabs.BREWING);
  31. }
  32. @Override
  33. public void registerItemModel(Item itemBlock)
  34. {
  35. KajetansMod.proxy.registerItemRenderer(itemBlock, 0, name);
  36. }
  37. @Override
  38. public BlockCookingPot setSoundType(SoundType sound)
  39. {
  40. super.setSoundType(sound);
  41. return this;
  42. }
  43. @Override
  44. public TileEntity createNewTileEntity(World worldIn, int meta)
  45. {
  46. return new TileEntityCookingPot();
  47. }
  48. @Override
  49. public void breakBlock(World w, BlockPos pos, IBlockState state)
  50. {
  51. w.removeTileEntity(pos);
  52. }
  53. @Override
  54. public Item getItemDropped(IBlockState state, Random rand, int fortune)
  55. {
  56. return Item.getItemFromBlock(this);
  57. }
  58. @Override
  59. public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
  60. {
  61. return new ItemStack(Item.getItemFromBlock(this), 1, this.damageDropped(state));
  62. }
  63. @Override
  64. public boolean onBlockActivated(World w, BlockPos pos, IBlockState state, EntityPlayer p,
  65. EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
  66. {
  67. if(w.isRemote)
  68. {
  69. return true;
  70. }
  71. else
  72. {
  73. TileEntity te = w.getTileEntity(pos);
  74. if(te instanceof TileEntityCookingPot)
  75. {
  76. TileEntityCookingPot cauldron = (TileEntityCookingPot) te;
  77. boolean b = false;
  78. if(cauldron.hasDefaultColor())
  79. {
  80. b = super.onBlockActivated(w, pos, state, p, hand, facing, hitX, hitY, hitZ);
  81. }
  82. ItemStack stack = p.getHeldItem(hand);
  83. if(stack.isEmpty() || b)
  84. {
  85. return true;
  86. }
  87. else if(stack.getItem() == Items.BOWL)
  88. {
  89. int waterLevel = state.getValue(LEVEL);
  90. if(waterLevel > 0)
  91. {
  92. ItemStack stew = new ItemStack(ModItems.coloredSoup);
  93. ModItems.coloredSoup.addIngredient(stew, cauldron.getIngredients());
  94. ModItems.coloredSoup.setColor(stew, cauldron.getColor().getRGB());
  95. ModItems.coloredSoup.setFoodStats(stew, cauldron.getIngredients());
  96. stack.shrink(1);
  97. if(stack.isEmpty())
  98. {
  99. p.setHeldItem(hand, stew);
  100. }
  101. else if(!p.inventory.addItemStackToInventory(stew))
  102. {
  103. p.dropItem(stew, false);
  104. }
  105. else if(p instanceof EntityPlayerMP)
  106. {
  107. ((EntityPlayerMP) p).sendContainerToPlayer(p.inventoryContainer);
  108. }
  109. this.setWaterLevel(w, pos, state, waterLevel - 1);
  110. }
  111. return true;
  112. }
  113. if(cauldron.getNumberOfIngredients() < 3 && cauldron.addItemStack(stack))
  114. {
  115. if(!p.capabilities.isCreativeMode)
  116. {
  117. stack.shrink(1);
  118. }
  119. }
  120. return true;
  121. }
  122. return true;
  123. }
  124. }
  125. @Override
  126. public void setWaterLevel(World w, BlockPos pos, IBlockState state, int level)
  127. {
  128. if(level <= 0 && !w.isRemote)
  129. {
  130. TileEntity te = w.getTileEntity(pos);
  131. if(te instanceof TileEntityCookingPot)
  132. {
  133. ((TileEntityCookingPot) te).reset();
  134. }
  135. }
  136. super.setWaterLevel(w, pos, state, level);
  137. }
  138. }