diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-07-22 21:23:30 +0900 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-07-22 22:19:57 +0900 |
| commit | c5a04154d45e58893ae14ee3daa52c61562079e9 (patch) | |
| tree | 93cbe3b3e7a15b079d2ef19828f8ae5b8e574db4 /runtime/src/main/java | |
| parent | de36cf8cbce35d6fc5f879651c057fa143e72d89 (diff) | |
| parent | 559ce07496aac9b974abbc03583bf70e19c862fd (diff) | |
| download | RoughlyEnoughItems-c5a04154d45e58893ae14ee3daa52c61562079e9.tar.gz RoughlyEnoughItems-c5a04154d45e58893ae14ee3daa52c61562079e9.tar.bz2 RoughlyEnoughItems-c5a04154d45e58893ae14ee3daa52c61562079e9.zip | |
Merge remote-tracking branch 'refs/remotes/origin/14.x-1.20.4' into 15.x-1.20.5
# Conflicts:
# runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java
Diffstat (limited to 'runtime/src/main/java')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/InputSlotCrafter.java | 15 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/NewInputSlotCrafter.java | 3 |
2 files changed, 17 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 07a2db41d..19557779c 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 @@ -118,6 +118,10 @@ public abstract class InputSlotCrafter<T extends AbstractContainerMenu, C extend } takenStack.setCount(1); + if (!slot.canPlace(takenStack)) { + return; + } + if (slot.getItemStack().isEmpty()) { slot.setItemStack(takenStack); } else { @@ -149,13 +153,22 @@ public abstract class InputSlotCrafter<T extends AbstractContainerMenu, C extend @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.has(DataComponents.CUSTOM_NAME)) { - 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; } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/NewInputSlotCrafter.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/NewInputSlotCrafter.java index a7965324f..653e52d48 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/NewInputSlotCrafter.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/NewInputSlotCrafter.java @@ -77,6 +77,9 @@ public class NewInputSlotCrafter<T extends AbstractContainerMenu, C extends Cont protected void cleanInputs() { for (SlotAccessor slot : getInputSlots()) { ItemStack stackToReturn = slot.getItemStack(); + if (!slot.allowModification(player)) { + throw new IllegalStateException("Slot " + slot + " is not modifiable!"); + } if (!stackToReturn.isEmpty()) { for (; !(stackToReturn = slot.getItemStack()).isEmpty(); slot.takeStack(1)) { ItemStack stackToInsert = stackToReturn.copy(); |
