From 128141a99d5f9efe44b82575947aab970d15e4a0 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 20 Jul 2022 17:22:38 +0200 Subject: [PATCH] [ci skip] Fix Item pickup not being cancellable on Forge (#301) --- .../architectury/event/forge/EventHandlerImplCommon.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java b/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java index 511b03a6..891a3514 100644 --- a/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java +++ b/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java @@ -296,7 +296,14 @@ public class EventHandlerImplCommon { @SubscribeEvent(priority = EventPriority.HIGH) public static void event(EntityItemPickupEvent event) { - PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getPlayer(), event.getItem(), event.getItem().getItem()); + // note: this event is weird, cancel is equivalent to denying the pickup, + // and setting the result to ALLOW will pick it up without adding it to the player's inventory + var result = PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getPlayer(), event.getItem(), event.getItem().getItem()); + if (result.isFalse()) { + event.setCanceled(true); + } else if (result.isTrue()) { + event.setResult(Event.Result.ALLOW); + } } @SubscribeEvent(priority = EventPriority.HIGH)