62700fa7a8
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
122 lines
4.7 KiB
Diff
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;
|
|
+ }
|
|
}
|