From 8662470339d0f386e2098ae040c737ffb7df221d Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:29:12 +0100 Subject: [PATCH] Packing irl - Default packager unwrapping behaviour uses more robust insertion method when not in a simulation #7426 --- build.gradle | 2 ++ gradle.properties | 2 +- .../impl/unpacking/DefaultUnpackingHandler.java | 17 +++++++++++------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 289731505d..1f683374bb 100644 --- a/build.gradle +++ b/build.gradle @@ -234,6 +234,8 @@ dependencies { // modRuntimeOnly("curse.maven:windsweptmod-636321:4817132") // modRuntimeOnly("curse.maven:good-ending-690161:4363719") // modRuntimeOnly("curse.maven:inventory-sorter-240633:5979609") + // modRuntimeOnly("curse.maven:sophisticated-storage-619320:6217888") + // modRuntimeOnly("curse.maven:sophisticated-core-618298:6266807") // https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497 // Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings diff --git a/gradle.properties b/gradle.properties index 3ac7480fdb..3dc0afba54 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,7 +23,7 @@ flywheel_minecraft_version = 1.20.1 flywheel_version = 1.0.1 vanillin_version = 1.0.0-beta-217 jei_minecraft_version = 1.20.1 -jei_version = 15.19.0.85 +jei_version = 15.19.5.99 curios_minecraft_version = 1.20.1 curios_version = 5.3.1 ponder_version = 1.0.45 diff --git a/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java b/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java index 6b67362dda..9db761cea1 100644 --- a/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java +++ b/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java @@ -30,12 +30,20 @@ public boolean unpack(Level level, BlockPos pos, BlockState state, Direction sid IItemHandler targetInv = targetBE.getCapability(ForgeCapabilities.ITEM_HANDLER, side).resolve().orElse(null); if (targetInv == null) return false; + + if (!simulate) { + /* + * Some mods do not support slot-by-slot precision during simulate = false. + * Faulty interactions may lead to voiding of items, but the simulate pass should + * already have correctly identified there to be enough space for everything. + */ + for (ItemStack itemStack : items) + ItemHandlerHelper.insertItemStacked(targetInv, itemStack.copy(), false); + return true; + } for (int slot = 0; slot < targetInv.getSlots(); slot++) { ItemStack itemInSlot = targetInv.getStackInSlot(slot); - if (!simulate) - itemInSlot = itemInSlot.copy(); - int itemsAddedToSlot = 0; for (int boxSlot = 0; boxSlot < items.size(); boxSlot++) { @@ -56,9 +64,6 @@ public boolean unpack(Level level, BlockPos pos, BlockState state, Direction sid items.set(boxSlot, ItemStack.EMPTY); itemInSlot = toInsert; - if (!simulate) - itemInSlot = itemInSlot.copy(); - targetInv.insertItem(slot, toInsert, simulate); continue; }