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 d4f553a8..3d0b8f83 100644 --- a/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java +++ b/forge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java @@ -295,7 +295,14 @@ public class EventHandlerImplCommon { @SubscribeEvent(priority = EventPriority.HIGH) public static void event(EntityItemPickupEvent event) { - PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getEntity(), 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.getEntity(), event.getItem(), event.getItem().getItem()); + if (result.isFalse()) { + event.setCanceled(true); + } else if (result.isTrue()) { + event.setResult(Event.Result.ALLOW); + } } @SubscribeEvent(priority = EventPriority.HIGH)