@@ -27,11 +27,11 @@ import com.lambda.event.events.UpdateManagerEvent
2727import com.lambda.event.listener.SafeListener.Companion.listen
2828import com.lambda.interaction.managers.Logger
2929import com.lambda.interaction.managers.Manager
30+ import com.lambda.interaction.managers.interacting.InteractManager
3031import com.lambda.interaction.managers.inventory.InventoryManager.actions
3132import com.lambda.interaction.managers.inventory.InventoryManager.activeRequest
3233import com.lambda.interaction.managers.inventory.InventoryManager.alteredSlots
3334import com.lambda.interaction.managers.inventory.InventoryManager.processActiveRequest
34- import com.lambda.interaction.managers.interacting.InteractManager
3535import com.lambda.module.hud.ManagerDebugLoggers.inventoryManagerLogger
3636import com.lambda.threading.runSafe
3737import com.lambda.util.collections.LimitedDecayQueue
@@ -61,9 +61,9 @@ object InventoryManager : Manager<InventoryRequest>(
6161 private var alteredSlots = LimitedDecayQueue <InventoryChange >(Int .MAX_VALUE , DEFAULT .desyncTimeout * 50L )
6262 private var alteredPlayerSlots = LimitedDecayQueue <InventoryChange >(Int .MAX_VALUE , DEFAULT .desyncTimeout * 50L )
6363
64- private var screenHandler: ScreenHandler ? = null
64+ var screenHandler: ScreenHandler ? = null
6565 set(value) {
66- if (value != null && field?.syncId != value.syncId ) {
66+ if (value != null ) {
6767 alteredSlots.clear()
6868 slots = getStacks(value.slots)
6969 }
@@ -248,9 +248,17 @@ object InventoryManager : Manager<InventoryRequest>(
248248 }
249249 }
250250
251- if (! matches) player.playerScreenHandler.setStackInSlot(packet.slot, packet.revision, itemStack)
251+ player.playerScreenHandler.setStackInSlot(
252+ packet.slot,
253+ packet.revision,
254+ if (! matches) itemStack else player.playerScreenHandler.getSlot(packet.slot).stack
255+ )
252256 } else if (packet.syncId == player.currentScreenHandler.syncId && (packet.syncId != 0 || ! bl))
253- if (! matches) player.currentScreenHandler.setStackInSlot(packet.slot, packet.revision, itemStack)
257+ player.currentScreenHandler.setStackInSlot(
258+ packet.slot,
259+ packet.revision,
260+ if (! matches) itemStack else player.playerScreenHandler.getSlot(packet.slot).stack
261+ )
254262
255263 if (mc.currentScreen is CreativeInventoryScreen ) {
256264 player.playerScreenHandler.setReceivedStack(packet.slot, itemStack)
0 commit comments