diff --git a/patches/net/minecraft/server/management/ItemInWorldManager.java.patch b/patches/net/minecraft/server/management/ItemInWorldManager.java.patch index 216506b..cc281f3 100644 --- a/patches/net/minecraft/server/management/ItemInWorldManager.java.patch +++ b/patches/net/minecraft/server/management/ItemInWorldManager.java.patch @@ -49,7 +49,7 @@ public void onBlockClicked(int p_73074_1_, int p_73074_2_, int p_73074_3_, int p_73074_4_) { + // CraftBukkit start -+ org.bukkit.event.player.PlayerInteractEvent cbEvent = CraftEventFactory.callPlayerInteractEvent(this.thisPlayerMP, Action.LEFT_CLICK_BLOCK, p_73074_1_, p_73074_2_, p_73074_3_, p_73074_4_, this.thisPlayerMP.inventory.getCurrentItem()); ++ //org.bukkit.event.player.PlayerInteractEvent cbEvent = CraftEventFactory.callPlayerInteractEvent(this.thisPlayerMP, Action.LEFT_CLICK_BLOCK, p_73074_1_, p_73074_2_, p_73074_3_, p_73074_4_, this.thisPlayerMP.inventory.getCurrentItem()); + if (!this.gameType.isAdventure() || this.thisPlayerMP.isCurrentToolAdventureModeExempt(p_73074_1_, p_73074_2_, p_73074_3_)) { @@ -57,7 +57,7 @@ - if (event.isCanceled()) + net.minecraftforge.event.entity.player.PlayerInteractEvent event = ForgeEventFactory.onPlayerInteract(this.thisPlayerMP, net.minecraftforge.event.entity.player.PlayerInteractEvent.Action.LEFT_CLICK_BLOCK, p_73074_1_, p_73074_2_, p_73074_3_, p_73074_4_, theWorld); // Forge + -+ if (cbEvent.isCancelled() || event.isCanceled()) ++ if (event.isCanceled()) { - thisPlayerMP.playerNetServerHandler.sendPacket(new S23PacketBlockChange(p_73074_1_, p_73074_2_, p_73074_3_, theWorld)); + // Let the client know the block still exists @@ -223,8 +223,7 @@ + if (p_73078_3_.stackSize <= 0) ForgeEventFactory.onPlayerDestroyItem(thisPlayerMP, p_73078_3_); + return true; + } - } -- } ++ } + // Cauldron end + if (denyBlock) + { @@ -254,13 +253,7 @@ + { + thisPlayerMP.openContainer.bukkitView = new CraftInventoryView(thisPlayerMP.getBukkitEntity(), MinecraftServer.getServer().server.createInventory(thisPlayerMP.getBukkitEntity(), InventoryType.CHEST), thisPlayerMP.openContainer); + } - -- if (p_73078_3_ != null && !result && event.useItem != Event.Result.DENY) -- { -- int meta = p_73078_3_.getItemDamage(); -- int size = p_73078_3_.stackSize; -- result = p_73078_3_.tryPlaceItemIntoWorld(p_73078_1_, p_73078_2_, p_73078_4_, p_73078_5_, p_73078_6_, p_73078_7_, p_73078_8_, p_73078_9_, p_73078_10_); -- if (isCreative()) ++ + thisPlayerMP.openContainer = CraftEventFactory.callInventoryOpenEvent(thisPlayerMP, thisPlayerMP.openContainer, false); + if (thisPlayerMP.openContainer == null) + { @@ -270,12 +263,17 @@ + } + } + // Cauldron end -+ } -+ + } +- } + +- if (p_73078_3_ != null && !result && event.useItem != Event.Result.DENY) +- { +- int meta = p_73078_3_.getItemDamage(); +- int size = p_73078_3_.stackSize; +- result = p_73078_3_.tryPlaceItemIntoWorld(p_73078_1_, p_73078_2_, p_73078_4_, p_73078_5_, p_73078_6_, p_73078_7_, p_73078_8_, p_73078_9_, p_73078_10_); +- if (isCreative()) + if (p_73078_3_ != null && !denyResult && p_73078_3_.stackSize > 0) - { -- p_73078_3_.setItemDamage(meta); -- p_73078_3_.stackSize = size; ++ { + int meta = p_73078_3_.getItemDamage(); + int size = p_73078_3_.stackSize; + denyResult = p_73078_3_.tryPlaceItemIntoWorld(p_73078_1_, p_73078_2_, p_73078_4_, p_73078_5_, p_73078_6_, p_73078_7_, p_73078_8_, p_73078_9_, p_73078_10_); @@ -291,14 +289,16 @@ + { + ForgeEventFactory.onPlayerDestroyItem(this.thisPlayerMP, p_73078_3_); + } - } -- if (p_73078_3_.stackSize <= 0) ForgeEventFactory.onPlayerDestroyItem(thisPlayerMP, p_73078_3_); ++ } + + // If we have 'true' and no explicit deny *or* an explicit allow -- run the item part of the hook + if (p_73078_3_ != null && ((!denyResult && event.useItemInHand() != org.bukkit.event.Event.Result.DENY) || event.useItemInHand() == org.bukkit.event.Event.Result.ALLOW)) -+ { + { +- p_73078_3_.setItemDamage(meta); +- p_73078_3_.stackSize = size; + this.tryUseItem(p_73078_1_, p_73078_2_, p_73078_3_); -+ } + } +- if (p_73078_3_.stackSize <= 0) ForgeEventFactory.onPlayerDestroyItem(thisPlayerMP, p_73078_3_); } - /* Re-enable if this causes bukkit incompatibility, or re-write client side to only send a single packet per right click. @@ -312,3 +312,9 @@ } public void setWorld(WorldServer p_73080_1_) +@@ -416,4 +531,4 @@ + { + blockReachDistance = distance; + } +-} ++} diff --git a/patches/net/minecraftforge/event/ForgeEventFactory.java.patch b/patches/net/minecraftforge/event/ForgeEventFactory.java.patch index 98566f4..ae8b421 100644 --- a/patches/net/minecraftforge/event/ForgeEventFactory.java.patch +++ b/patches/net/minecraftforge/event/ForgeEventFactory.java.patch @@ -35,7 +35,7 @@ PlayerEvent.HarvestCheck event = new PlayerEvent.HarvestCheck(player, block, success); MinecraftForge.EVENT_BUS.post(event); return event.success; -@@ -80,25 +94,137 @@ +@@ -80,25 +94,136 @@ @Deprecated // Location version below public static float getBreakSpeed(EntityPlayer player, Block block, int metadata, float original) { @@ -129,7 +129,6 @@ + } + org.bukkit.event.player.PlayerInteractEvent eve = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(player, aktor, x, y, z, face, player.getHeldItem()); + if(eve.isCancelled()) { event.setCanceled(true); return event; } -+// callPlayerInteractEvent(net.minecraft.entity.player.EntityPlayer who, Action action, int clickedX, int clickedY, int clickedZ, int clickedFace, net.minecraft.item.ItemStack itemstack) { + + if (isSpawn(player) && nonVanilla(player)) + { @@ -177,7 +176,7 @@ } public static void onPlayerDestroyItem(EntityPlayer player, ItemStack stack) -@@ -182,29 +308,63 @@ +@@ -182,29 +307,63 @@ return MinecraftForge.EVENT_BUS.post(new EntityStruckByLightningEvent(entity, bolt)); } @@ -262,7 +261,7 @@ public static void onStartEntityTracking(Entity entity, EntityPlayer player) { -@@ -290,4 +450,4 @@ +@@ -290,4 +449,4 @@ { MinecraftForge.EVENT_BUS.post(new PotionBrewEvent.Post(brewingItemStacks)); }