diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/data/container/click/FastMoveContainerActionTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/data/container/click/FastMoveContainerActionTest.kt index 638079708..04402236f 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/data/container/click/FastMoveContainerActionTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/data/container/click/FastMoveContainerActionTest.kt @@ -97,13 +97,16 @@ class FastMoveContainerActionTest { container.invokeAction(FastMoveContainerAction(0)) assertNull(container.floatingItem) - assertNull(container[0]) - assertEquals(container[54], ItemStack(CoalTest0.item, 64)) - assertEquals(container[55], ItemStack(AppleTestO.item, 61)) - assertEquals(container[56], ItemStack(CoalTest0.item, 64)) - assertEquals(container[57], ItemStack(CoalTest0.item, 64)) - assertEquals(container[58], ItemStack(CoalTest0.item, 64)) - assertEquals(container[62], ItemStack(CoalTest0.item, 4)) + assertEquals( + container.slots, slotsOf( + 54 to ItemStack(CoalTest0.item, 64), + 55 to ItemStack(AppleTestO.item, 61), + 56 to ItemStack(CoalTest0.item, 64), + 57 to ItemStack(CoalTest0.item, 64), + 58 to ItemStack(CoalTest0.item, 64), + 62 to ItemStack(CoalTest0.item, 4), + ) + ) connection.assertOnlyPacket(ContainerClickC2SP(9, container.serverRevision, 0, 1, 0, 0, slotsOf(0 to null, 58 to ItemStack(AppleTestO.item, count = 64), 56 to ItemStack(AppleTestO.item, count = 64), 54 to ItemStack(AppleTestO.item, count = 64), 57 to ItemStack(AppleTestO.item, count = 64), 62 to ItemStack(AppleTestO.item, count = 4)), null)) // TODO: respect order of changes } diff --git a/src/main/java/de/bixilon/minosoft/data/container/click/FastMoveContainerAction.kt b/src/main/java/de/bixilon/minosoft/data/container/click/FastMoveContainerAction.kt index 3f89dcfd4..fd2773614 100644 --- a/src/main/java/de/bixilon/minosoft/data/container/click/FastMoveContainerAction.kt +++ b/src/main/java/de/bixilon/minosoft/data/container/click/FastMoveContainerAction.kt @@ -58,6 +58,7 @@ class FastMoveContainerAction( list += slot } } + val maxStack = source.item.item.maxStackSize val changes: Int2ObjectOpenHashMap = Int2ObjectOpenHashMap() sections@ for (list in targets) { for (slot in list.intIterator()) { @@ -69,7 +70,7 @@ class FastMoveContainerAction( container._set(this.slot, null) break@sections } - val countToPut = source.item._count - (source.item.item.maxStackSize - content.item._count) + val countToPut = if (source.item._count + content.item._count > maxStack) maxStack - content.item._count else source.item._count source.item._count -= countToPut content.item._count += countToPut changes[slot] = content