ForgePatch/patches/minecraft/net/minecraft/src/PlayerControllerSP.java.patch

84 lines
3.4 KiB
Diff

--- ../src_base/minecraft/net/minecraft/src/PlayerControllerSP.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft/net/minecraft/src/PlayerControllerSP.java 0000-00-00 00:00:00.000000000 -0000
@@ -1,6 +1,7 @@
package net.minecraft.src;
import net.minecraft.client.Minecraft;
+import net.minecraft.src.forge.ForgeHooks;
public class PlayerControllerSP extends PlayerController
{
@@ -35,11 +36,17 @@
*/
public boolean onPlayerDestroyBlock(int par1, int par2, int par3, int par4)
{
+ ItemStack stack = mc.thePlayer.getCurrentEquippedItem();
+ if (stack != null && stack.getItem().onBlockStartBreak(stack, par1, par2, par3, mc.thePlayer))
+ {
+ return false;
+ }
+
int var5 = this.mc.theWorld.getBlockId(par1, par2, par3);
int var6 = this.mc.theWorld.getBlockMetadata(par1, par2, par3);
boolean var7 = super.onPlayerDestroyBlock(par1, par2, par3, par4);
ItemStack var8 = this.mc.thePlayer.getCurrentEquippedItem();
- boolean var9 = this.mc.thePlayer.canHarvestBlock(Block.blocksList[var5]);
+ boolean var9 = Block.blocksList[var5].canHarvestBlock(mc.thePlayer, var6);
if (var8 != null)
{
@@ -75,7 +82,7 @@
Block.blocksList[var5].onBlockClicked(this.mc.theWorld, par1, par2, par3, this.mc.thePlayer);
}
- if (var5 > 0 && Block.blocksList[var5].blockStrength(this.mc.thePlayer) >= 1.0F)
+ if (var5 > 0 && Block.blocksList[var5].blockStrength(mc.theWorld, mc.thePlayer, par1, par2, par3) >= 1.0F)
{
this.onPlayerDestroyBlock(par1, par2, par3, par4);
}
@@ -117,7 +124,7 @@
}
Block var6 = Block.blocksList[var5];
- this.curBlockDamage += var6.blockStrength(this.mc.thePlayer);
+ this.curBlockDamage += var6.blockStrength(mc.theWorld, this.mc.thePlayer, par1, par2, par3);
if (this.blockDestroySoundCounter % 4.0F == 0.0F && var6 != null)
{
@@ -195,8 +202,34 @@
*/
public boolean onPlayerRightClick(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack, int par4, int par5, int par6, int par7)
{
+ if (par3ItemStack != null &&
+ par3ItemStack.getItem() != null &&
+ par3ItemStack.getItem().onItemUseFirst(par3ItemStack, par1EntityPlayer, par2World, par4, par5, par6, par7))
+ {
+ return true;
+ }
+
int var8 = par2World.getBlockId(par4, par5, par6);
- return var8 > 0 && Block.blocksList[var8].blockActivated(par2World, par4, par5, par6, par1EntityPlayer) ? true : (par3ItemStack == null ? false : par3ItemStack.useItem(par1EntityPlayer, par2World, par4, par5, par6, par7));
+ if (var8 > 0 && Block.blocksList[var8].blockActivated(par2World, par4, par5, par6, par1EntityPlayer))
+ {
+ return true;
+ }
+
+ if (par3ItemStack == null)
+ {
+ return false;
+ }
+
+ if (!par3ItemStack.useItem(par1EntityPlayer, par2World, par4, par5, par6, par7))
+ {
+ return false;
+ }
+
+ if (par3ItemStack.stackSize <= 0)
+ {
+ ForgeHooks.onDestroyCurrentItem(par1EntityPlayer, par3ItemStack);
+ }
+ return true;
}
public boolean func_35642_f()