aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2024-07-22 21:23:30 +0900
committershedaniel <daniel@shedaniel.me>2024-07-22 22:19:57 +0900
commitc5a04154d45e58893ae14ee3daa52c61562079e9 (patch)
tree93cbe3b3e7a15b079d2ef19828f8ae5b8e574db4 /runtime/src/main/java
parentde36cf8cbce35d6fc5f879651c057fa143e72d89 (diff)
parent559ce07496aac9b974abbc03583bf70e19c862fd (diff)
downloadRoughlyEnoughItems-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.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/NewInputSlotCrafter.java3
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();