diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-07-22 22:02:36 +0900 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-07-22 22:02:36 +0900 |
| commit | 77ffdeae699ea1cdf232e66e70f6246be5dd1a7b (patch) | |
| tree | b452f1cbbecdff7f087a0b6b05bf2ef94bee1e93 /api | |
| parent | ee6aa88ada9e4d1034cb754a8997f8a0996e9cab (diff) | |
| parent | 6da90a5afb428fdb218820a9cfbd0e423bc2558f (diff) | |
| download | RoughlyEnoughItems-77ffdeae699ea1cdf232e66e70f6246be5dd1a7b.tar.gz RoughlyEnoughItems-77ffdeae699ea1cdf232e66e70f6246be5dd1a7b.tar.bz2 RoughlyEnoughItems-77ffdeae699ea1cdf232e66e70f6246be5dd1a7b.zip | |
Merge remote-tracking branch 'origin/11.x-1.19.4' into 12.x-1.20
Diffstat (limited to 'api')
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); + } } |
