diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-07-22 21:16:27 +0900 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-07-22 21:16:27 +0900 |
| commit | d5427ca36ff2c9e9db85603120c988c5a02de6e4 (patch) | |
| tree | 3aeb1c9562829ec381026665c8f8cd3047429d8d /runtime/src/main/java/me/shedaniel | |
| parent | b171391cedbf0a0ac820dff075495c9a07045760 (diff) | |
| download | RoughlyEnoughItems-7.x-1.18.tar.gz RoughlyEnoughItems-7.x-1.18.tar.bz2 RoughlyEnoughItems-7.x-1.18.zip | |
Check slots before modification7.x-1.18
Diffstat (limited to 'runtime/src/main/java/me/shedaniel')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java index bb195a8f5..f8cf3a2ec 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java @@ -128,6 +128,10 @@ public class InputSlotCrafter<T extends AbstractContainerMenu, C extends Contain } takenStack.setCount(1); + if (!slot.canPlace(takenStack)) { + return; + } + if (slot.getItemStack().isEmpty()) { slot.setItemStack(takenStack); } else { @@ -161,13 +165,22 @@ public class InputSlotCrafter<T extends AbstractContainerMenu, C extends Contain @Nullable public SlotAccessor takeInventoryStack(ItemStack itemStack) { + boolean rejectedModification = false; for (SlotAccessor inventoryStack : inventoryStacks) { ItemStack itemStack1 = inventoryStack.getItemStack(); if (!itemStack1.isEmpty() && areItemsEqual(itemStack, itemStack1) && !itemStack1.isDamaged() && !itemStack1.isEnchanted() && !itemStack1.hasCustomHoverName()) { - return inventoryStack; + if (!inventoryStack.allowModification(player)) { + rejectedModification = true; + } else { + return inventoryStack; + } } } + if (rejectedModification) { + throw new IllegalStateException("Unable to take item from inventory due to slot not allowing modification! Item requested: " + itemStack); + } + return null; } |
