diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/VanillaSlotAccessor.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/VanillaSlotAccessor.java index 579716dea..4498e3a5a 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/VanillaSlotAccessor.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/VanillaSlotAccessor.java @@ -55,12 +55,19 @@ public ItemStack takeStack(int amount) { public Slot getSlot() { return slot; } - + + /** + * Since NeoForge implemented slots may not pick up & take when it's empty, although the slot is still modifiable. + * A {@link VanillaSlotAccessor#canPlace(ItemStack)} check is performed later on, so this should not cause illegal modification theoretically. + * + * @see SlotItemHandler::mayPlace, + * SlotItemHandler::mayPickup + */ @Override public boolean allowModification(Player player) { - return slot.allowModification(player); + return !slot.hasItem() || slot.allowModification(player); } - + @Override public boolean canPlace(ItemStack stack) { return slot.mayPlace(stack);