Added missing server side onBlockStartBreak hook, fixes Sheers.

This commit is contained in:
LexManos 2012-08-19 20:43:32 -07:00
parent 3a726c6e68
commit d3300cabb0
2 changed files with 21 additions and 12 deletions

View File

@ -23,7 +23,15 @@
if (var4 != null && var6) if (var4 != null && var6)
{ {
@@ -246,16 +252,22 @@ @@ -243,19 +249,30 @@
}
else
{
+ ItemStack stack = thisPlayerMP.getCurrentEquippedItem();
+ if (stack != null && stack.getItem().onBlockStartBreak(stack, par1, par2, par3, thisPlayerMP))
+ {
+ return false;
+ }
int var4 = this.theWorld.getBlockId(par1, par2, par3); int var4 = this.theWorld.getBlockId(par1, par2, par3);
int var5 = this.theWorld.getBlockMetadata(par1, par2, par3); int var5 = this.theWorld.getBlockMetadata(par1, par2, par3);
this.theWorld.playAuxSFXAtEntity(this.thisPlayerMP, 2001, par1, par2, par3, var4 + (this.theWorld.getBlockMetadata(par1, par2, par3) << 12)); this.theWorld.playAuxSFXAtEntity(this.thisPlayerMP, 2001, par1, par2, par3, var4 + (this.theWorld.getBlockMetadata(par1, par2, par3) << 12));
@ -48,7 +56,7 @@
if (var7 != null) if (var7 != null)
{ {
@@ -264,9 +276,11 @@ @@ -264,9 +281,11 @@
if (var7.stackSize == 0) if (var7.stackSize == 0)
{ {
this.thisPlayerMP.destroyCurrentEquippedItem(); this.thisPlayerMP.destroyCurrentEquippedItem();
@ -60,7 +68,7 @@
if (var6 && var8) if (var6 && var8)
{ {
Block.blocksList[var4].harvestBlock(this.theWorld, this.thisPlayerMP, par1, par2, par3, var5); Block.blocksList[var4].harvestBlock(this.theWorld, this.thisPlayerMP, par1, par2, par3, var5);
@@ -303,6 +317,7 @@ @@ -303,6 +322,7 @@
if (var6.stackSize == 0) if (var6.stackSize == 0)
{ {
par1EntityPlayer.inventory.mainInventory[par1EntityPlayer.inventory.currentItem] = null; par1EntityPlayer.inventory.mainInventory[par1EntityPlayer.inventory.currentItem] = null;
@ -68,7 +76,7 @@
} }
return true; return true;
@@ -315,6 +330,12 @@ @@ -315,6 +335,12 @@
*/ */
public boolean activateBlockOrUseItem(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack, int par4, int par5, int par6, int par7, float par8, float par9, float par10) public boolean activateBlockOrUseItem(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
{ {
@ -81,7 +89,7 @@
int var11 = par2World.getBlockId(par4, par5, par6); int var11 = par2World.getBlockId(par4, par5, par6);
if (var11 > 0 && Block.blocksList[var11].onBlockActivated(par2World, par4, par5, par6, par1EntityPlayer, par7, par8, par9, par10)) if (var11 > 0 && Block.blocksList[var11].onBlockActivated(par2World, par4, par5, par6, par1EntityPlayer, par7, par8, par9, par10))
@@ -336,7 +357,15 @@ @@ -336,7 +362,15 @@
} }
else else
{ {
@ -98,7 +106,7 @@
} }
} }
@@ -347,4 +376,13 @@ @@ -347,4 +381,13 @@
{ {
this.theWorld = par1WorldServer; this.theWorld = par1WorldServer;
} }

View File

@ -9,21 +9,22 @@
public class ItemShears extends Item public class ItemShears extends Item
{ {
@@ -16,9 +20,12 @@ @@ -12,13 +16,12 @@
public boolean func_77660_a(ItemStack par1ItemStack, World par2World, int par3, int par4, int par5, int par6, EntityLiving par7EntityLiving)
{
- if (par3 != Block.leaves.blockID && par3 != Block.web.blockID && par3 != Block.tallGrass.blockID && par3 != Block.vine.blockID && par3 != Block.tripWire.blockID)
+ if (par3 != Block.leaves.blockID && par3 != Block.web.blockID && par3 != Block.tallGrass.blockID && par3 != Block.vine.blockID && par3 != Block.tripWire.blockID && !(Block.blocksList[par3] instanceof IShearable))
{ {
return super.func_77660_a(par1ItemStack, par2World, par3, par4, par5, par6, par7EntityLiving); return super.func_77660_a(par1ItemStack, par2World, par3, par4, par5, par6, par7EntityLiving);
} }
+ else if (!(Block.blocksList[par3] instanceof IShearable))
+ {
+ return super.func_77660_a(par1ItemStack, par2World, par3, par4, par5, par6, par7EntityLiving);
+ }
else else
{ {
- par1ItemStack.damageItem(1, par7EntityLiving); - par1ItemStack.damageItem(1, par7EntityLiving);
return true; return true;
} }
} }
@@ -39,4 +46,64 @@ @@ -39,4 +42,64 @@
{ {
return par2Block.blockID != Block.web.blockID && par2Block.blockID != Block.leaves.blockID ? (par2Block.blockID == Block.cloth.blockID ? 5.0F : super.getStrVsBlock(par1ItemStack, par2Block)) : 15.0F; return par2Block.blockID != Block.web.blockID && par2Block.blockID != Block.leaves.blockID ? (par2Block.blockID == Block.cloth.blockID ? 5.0F : super.getStrVsBlock(par1ItemStack, par2Block)) : 15.0F;
} }