aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2024-07-22 21:56:36 +0900
committershedaniel <daniel@shedaniel.me>2024-07-22 21:56:36 +0900
commit6da90a5afb428fdb218820a9cfbd0e423bc2558f (patch)
tree515b11c0106da375f13391aa3715a56a147404f0 /api
parent81e9c38c8390196b25843d3f3949b5d52477b3a8 (diff)
parente80ca84f1affb91d2388ddb298bfc6b141828cad (diff)
downloadRoughlyEnoughItems-6da90a5afb428fdb218820a9cfbd0e423bc2558f.tar.gz
RoughlyEnoughItems-6da90a5afb428fdb218820a9cfbd0e423bc2558f.tar.bz2
RoughlyEnoughItems-6da90a5afb428fdb218820a9cfbd0e423bc2558f.zip
Merge remote-tracking branch 'refs/remotes/origin/9.x-1.19' into 11.x-1.19.4
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java11
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessor.java8
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/VanillaSlotAccessor.java11
5 files changed, 35 insertions, 1 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java
index 82071f4c6..afc71033e 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java
@@ -44,6 +44,10 @@ public interface InputCleanHandler<T extends AbstractContainerMenu, D extends Di
static <T extends AbstractContainerMenu> void returnSlotsToPlayerInventory(MenuInfoContext<T, ?, ?> context, DumpHandler<T, ?> dumpHandler, SlotAccessor slotAccessor) {
ItemStack stackToReturn = slotAccessor.getItemStack();
if (!stackToReturn.isEmpty()) {
+ if (!slotAccessor.allowModification(context.getPlayerEntity())) {
+ error("rei.rei.no.slot.in.inv");
+ }
+
for (; !(stackToReturn = slotAccessor.getItemStack()).isEmpty(); slotAccessor.takeStack(1)) {
ItemStack stackToInsert = stackToReturn.copy();
stackToInsert.setCount(1);
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java
index 9f1fe8593..776f34498 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java
@@ -36,7 +36,7 @@ public interface DumpHandler<T extends AbstractContainerMenu, D extends Display>
static SlotAccessor getOccupiedSlotWithRoomForStack(ItemStack stack, Iterable<SlotAccessor> inventoryStacks) {
for (SlotAccessor inventoryStack : inventoryStacks) {
- if (canStackAddMore(inventoryStack.getItemStack(), stack)) {
+ if (canStackAddMore(inventoryStack.getItemStack(), stack) && inventoryStack.canPlace(stack)) {
return inventoryStack;
}
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java
index b2ff12a3e..467c4b06e 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java
@@ -24,6 +24,7 @@
package me.shedaniel.rei.api.common.transfer.info.stack;
import net.minecraft.world.Container;
+import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
/**
@@ -53,4 +54,14 @@ public class ContainerSlotAccessor implements SlotAccessor {
public ItemStack takeStack(int amount) {
return this.container.removeItem(index, amount);
}
+
+ @Override
+ public boolean allowModification(Player player) {
+ return canPlace(getItemStack());
+ }
+
+ @Override
+ public boolean canPlace(ItemStack stack) {
+ return this.container.canPlaceItem(index, stack);
+ }
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessor.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessor.java
index 79513fe40..f2dd1c4e5 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessor.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessor.java
@@ -41,6 +41,14 @@ public interface SlotAccessor {
ItemStack takeStack(int amount);
+ default boolean allowModification(Player player) {
+ return true;
+ }
+
+ default boolean canPlace(ItemStack stack) {
+ return true;
+ }
+
static SlotAccessor fromSlot(Slot slot) {
return new VanillaSlotAccessor(slot);
}
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 6e3c97134..579716dea 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
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.common.transfer.info.stack;
+import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
@@ -54,4 +55,14 @@ public class VanillaSlotAccessor implements SlotAccessor {
public Slot getSlot() {
return slot;
}
+
+ @Override
+ public boolean allowModification(Player player) {
+ return slot.allowModification(player);
+ }
+
+ @Override
+ public boolean canPlace(ItemStack stack) {
+ return slot.mayPlace(stack);
+ }
}