BlockModCauldron.java 4.8 KB

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