ForgePatch/patches/common/net/minecraft/src/ItemInWorldManager.java.patch
LexManos 62700fa7a8 96537dc - Fixup Item in hand rendering of textures > 16x
e88ddc5 - Make the exception print for headless servers if the Downloader cant initalize.
f24ff07 - Remove a bunch of warning about javadoc, not a real fix, but no more warning.
3420ea7 - Update MCP Mapings
87104f0 - Makes GetModSrc check the common folder when attempting to extract source files
640446b - Tie parent/child containers together again. Should close #96
2cf4917 - Village mating produces added villagers, and the egg should place added villagers too. Closes #97.
6394ee8 - Clean up stale references to the Player stored in the NetworkRegistry, closes #100
7299e05 - Merge pull request #99 from CovertJaguar/patch-1
c4bd040 - More readable init logs
2012-09-15 19:36:08 -07:00

122 lines
4.7 KiB
Diff

--- ../src_base/common/net/minecraft/src/ItemInWorldManager.java
+++ ../src_work/common/net/minecraft/src/ItemInWorldManager.java
@@ -1,7 +1,13 @@
package net.minecraft.src;
+
+import net.minecraftforge.common.ForgeHooks;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
public class ItemInWorldManager
{
+ /** Forge reach distance */
+ private double blockReachDistance = 5.0d;
/** The world object that this object is connected to. */
public World theWorld;
@@ -225,7 +231,7 @@
var4.onBlockHarvested(this.theWorld, par1, par2, par3, var5, this.thisPlayerMP);
}
- boolean var6 = this.theWorld.setBlockWithNotify(par1, par2, par3, 0);
+ boolean var6 = (var4 != null && var4.removeBlockByPlayer(theWorld, thisPlayerMP, par1, par2, par3));
if (var4 != null && var6)
{
@@ -246,19 +252,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 var5 = this.theWorld.getBlockMetadata(par1, par2, par3);
this.theWorld.playAuxSFXAtEntity(this.thisPlayerMP, 2001, par1, par2, par3, var4 + (this.theWorld.getBlockMetadata(par1, par2, par3) << 12));
- boolean var6 = this.removeBlock(par1, par2, par3);
+ boolean var6 = false;
if (this.isCreative())
{
+ var6 = this.removeBlock(par1, par2, par3);
this.thisPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet53BlockChange(par1, par2, par3, this.theWorld));
}
else
{
ItemStack var7 = this.thisPlayerMP.getCurrentEquippedItem();
- boolean var8 = this.thisPlayerMP.canHarvestBlock(Block.blocksList[var4]);
+ boolean var8 = false;
+ Block block = Block.blocksList[var4];
+ if (block != null)
+ {
+ var8 = block.canHarvestBlock(thisPlayerMP, var5);
+ }
if (var7 != null)
{
@@ -267,9 +284,11 @@
if (var7.stackSize == 0)
{
this.thisPlayerMP.destroyCurrentEquippedItem();
+ MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thisPlayerMP, var7));
}
}
+ var6 = this.removeBlock(par1, par2, par3);
if (var6 && var8)
{
Block.blocksList[var4].harvestBlock(this.theWorld, this.thisPlayerMP, par1, par2, par3, var5);
@@ -306,6 +325,7 @@
if (var6.stackSize == 0)
{
par1EntityPlayer.inventory.mainInventory[par1EntityPlayer.inventory.currentItem] = null;
+ MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thisPlayerMP, var6));
}
return true;
@@ -318,6 +338,12 @@
*/
public boolean activateBlockOrUseItem(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
{
+ if (par3ItemStack != null &&
+ par3ItemStack.getItem() != null &&
+ par3ItemStack.getItem().onItemUseFirst(par3ItemStack, par1EntityPlayer, par2World, par4, par5, par6, par7, par8, par9, par10))
+ {
+ return true;
+ }
int var11 = par2World.getBlockId(par4, par5, par6);
if (var11 > 0 && Block.blocksList[var11].onBlockActivated(par2World, par4, par5, par6, par1EntityPlayer, par7, par8, par9, par10))
@@ -339,7 +365,15 @@
}
else
{
- return par3ItemStack.tryPlaceItemIntoWorld(par1EntityPlayer, par2World, par4, par5, par6, par7, par8, par9, par10);
+ if (!par3ItemStack.tryPlaceItemIntoWorld(par1EntityPlayer, par2World, par4, par5, par6, par7, par8, par9, par10))
+ {
+ return false;
+ }
+ if (par3ItemStack.stackSize <= 0)
+ {
+ MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thisPlayerMP, par3ItemStack));
+ }
+ return true;
}
}
@@ -350,4 +384,13 @@
{
this.theWorld = par1WorldServer;
}
+
+ public double getBlockReachDistance()
+ {
+ return blockReachDistance;
+ }
+ public void setBlockReachDistance(double distance)
+ {
+ blockReachDistance = distance;
+ }
}