From 763e560135a991aaf2c3d33ad58216d09e98f23a Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 2 Sep 2019 13:17:54 +1000 Subject: [PATCH] SPIGOT-5294: Cancelled EntityPickupItemEvent and PlayerPickupItemEvent alter on-ground stacks --- nms-patches/EntityItem.patch | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nms-patches/EntityItem.patch b/nms-patches/EntityItem.patch index 3fbfdd7d49..555a8fabd8 100644 --- a/nms-patches/EntityItem.patch +++ b/nms-patches/EntityItem.patch @@ -97,7 +97,7 @@ this.velocityChanged(); this.f = (int) ((float) this.f - f); if (this.f <= 0) { -@@ -267,6 +289,38 @@ +@@ -267,6 +289,40 @@ Item item = itemstack.getItem(); int i = itemstack.getCount(); @@ -112,6 +112,7 @@ + playerEvent.setCancelled(!entityhuman.canPickUpLoot); + this.world.getServer().getPluginManager().callEvent(playerEvent); + if (playerEvent.isCancelled()) { ++ itemstack.setCount(i); // SPIGOT-5294 - restore count + return; + } + @@ -120,10 +121,11 @@ + entityEvent.setCancelled(!entityhuman.canPickUpLoot); + this.world.getServer().getPluginManager().callEvent(entityEvent); + if (entityEvent.isCancelled()) { ++ itemstack.setCount(i); // SPIGOT-5294 - restore count + return; + } + -+ itemstack.setCount(canHold + remaining); ++ itemstack.setCount(canHold + remaining); // = i + + // Possibly < 0; fix here so we do not have to modify code below + this.pickupDelay = 0; @@ -136,7 +138,7 @@ if (this.pickupDelay == 0 && (this.owner == null || 6000 - this.age <= 200 || this.owner.equals(entityhuman.getUniqueID())) && entityhuman.inventory.pickup(itemstack)) { entityhuman.receive(this, i); if (itemstack.isEmpty()) { -@@ -309,7 +363,9 @@ +@@ -309,7 +365,9 @@ } public void setItemStack(ItemStack itemstack) {