From 961461c23c73fda4dfbc82342441320a1f918d32 Mon Sep 17 00:00:00 2001 From: wizjany Date: Tue, 16 May 2023 17:02:19 -0400 Subject: [PATCH] Protect against allay pickups and modification. Closes #1923. --- .../bukkit/listener/EventAbstractionListener.java | 7 +++++++ .../java/com/sk89q/worldguard/bukkit/util/Entities.java | 2 ++ 2 files changed, 9 insertions(+) diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java index 7d96bbef..2882ca25 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java @@ -113,6 +113,7 @@ import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityInteractEvent; +import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.entity.EntityTameEvent; import org.bukkit.event.entity.EntityUnleashEvent; import org.bukkit.event.entity.ExpBottleEvent; @@ -919,6 +920,12 @@ public class EventAbstractionListener extends AbstractListener { pickupDebounce.debounce(event.getPlayer(), item, event, new DestroyEntityEvent(event, create(event.getPlayer()), event.getItem())); } + @EventHandler(ignoreCancelled = true) + public void onEntityPickupItem(EntityPickupItemEvent event) { + Item item = event.getItem(); + pickupDebounce.debounce(event.getEntity(), item, event, new DestroyEntityEvent(event, create(event.getEntity()), event.getItem())); + } + @EventHandler(ignoreCancelled = true) public void onPlayerDropItem(PlayerDropItemEvent event) { Events.fireToCancel(event, new SpawnEntityEvent(event, create(event.getPlayer()), event.getItemDrop())); diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java index 3ebf1a62..a477d52a 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.bukkit.util; +import org.bukkit.entity.Allay; import org.bukkit.entity.Ambient; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Arrow; @@ -218,6 +219,7 @@ public final class Entities { return entity instanceof Hanging || entity instanceof ArmorStand || entity instanceof EnderCrystal + || entity instanceof Allay || entity instanceof Minecart && entity instanceof InventoryHolder; }