From 8ad4216e185d0d973ab30bd68eabc6215c5a5f6f Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sun, 11 Jun 2017 19:42:01 -0500 Subject: [PATCH] EntityPickupItemEvent (#679) EntityPickupItemEvent --- .../0051-EntityPickupItemEvent.patch | 63 +++++++++++++++++++ .../0211-EntityPickupItemEvent.patch | 42 +++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 Spigot-API-Patches/0051-EntityPickupItemEvent.patch create mode 100644 Spigot-Server-Patches/0211-EntityPickupItemEvent.patch diff --git a/Spigot-API-Patches/0051-EntityPickupItemEvent.patch b/Spigot-API-Patches/0051-EntityPickupItemEvent.patch new file mode 100644 index 0000000000..fa69aadbb8 --- /dev/null +++ b/Spigot-API-Patches/0051-EntityPickupItemEvent.patch @@ -0,0 +1,63 @@ +From a22f01307daf61a282adc1665cffc08e47871490 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Fri, 5 May 2017 01:16:10 -0500 +Subject: [PATCH] EntityPickupItemEvent + + +diff --git a/src/main/java/org/bukkit/event/entity/EntityPickupItemEvent.java b/src/main/java/org/bukkit/event/entity/EntityPickupItemEvent.java +new file mode 100644 +index 00000000..f485f313 +--- /dev/null ++++ b/src/main/java/org/bukkit/event/entity/EntityPickupItemEvent.java +@@ -0,0 +1,46 @@ ++package org.bukkit.event.entity; ++ ++import org.bukkit.entity.Item; ++import org.bukkit.entity.LivingEntity; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++ ++/** ++ * Thrown when an entity picks an item up from the ground ++ */ ++public class EntityPickupItemEvent extends EntityEvent implements Cancellable { ++ private static final HandlerList handlers = new HandlerList(); ++ private final Item item; ++ private boolean cancel = false; ++ ++ public EntityPickupItemEvent(final LivingEntity entity, final Item item) { ++ super(entity); ++ this.item = item; ++ } ++ ++ /** ++ * Gets the Item picked up by the entity. ++ * ++ * @return Item ++ */ ++ public Item getItem() { ++ return item; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancel; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancel = cancel; ++ } ++ ++ @Override ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} +-- +2.11.0 + diff --git a/Spigot-Server-Patches/0211-EntityPickupItemEvent.patch b/Spigot-Server-Patches/0211-EntityPickupItemEvent.patch new file mode 100644 index 0000000000..11e5da3798 --- /dev/null +++ b/Spigot-Server-Patches/0211-EntityPickupItemEvent.patch @@ -0,0 +1,42 @@ +From 8dc26cb4650fa9a4825cc14552845ed6f010ecb3 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Fri, 5 May 2017 01:16:22 -0500 +Subject: [PATCH] EntityPickupItemEvent + + +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java +index 1d26555d..8cc55734 100644 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java ++++ b/src/main/java/net/minecraft/server/EntityInsentient.java +@@ -10,8 +10,11 @@ import java.util.UUID; + import javax.annotation.Nullable; + + // CraftBukkit start ++import org.bukkit.craftbukkit.entity.CraftItem; + import org.bukkit.craftbukkit.event.CraftEventFactory; + import org.bukkit.craftbukkit.entity.CraftLivingEntity; ++import org.bukkit.entity.LivingEntity; ++import org.bukkit.event.entity.EntityPickupItemEvent; + import org.bukkit.event.entity.EntityTargetLivingEntityEvent; + import org.bukkit.event.entity.EntityTargetEvent; + import org.bukkit.event.entity.EntityUnleashEvent; +@@ -558,6 +561,18 @@ public abstract class EntityInsentient extends EntityLiving { + } + + if (flag && this.c(itemstack)) { ++ ++ // Paper Start ++ EntityPickupItemEvent event = new EntityPickupItemEvent((LivingEntity) this.getBukkitEntity(), new CraftItem(this.world.getServer(), entityitem)); ++ this.world.getServer().getPluginManager().callEvent(event); ++ ++ if (event.isCancelled()) { ++ return; ++ } ++ // Paper end ++ + double d0; + + switch (enumitemslot.a()) { +-- +2.11.0 +