From 2d6b0d6db28a954ac453c991c998af07110b586a Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Thu, 18 Feb 2021 00:40:15 +0800 Subject: [PATCH] Update InventoryView when container layout changed --- .../mixin/core/inventory/container/ContainerMixin.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/ContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/ContainerMixin.java index 5e3dbd35..20ad1d43 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/ContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/inventory/container/ContainerMixin.java @@ -65,14 +65,23 @@ public abstract class ContainerMixin implements ContainerBridge { public boolean checkReachable = true; private InventoryView bukkitView; + private long bukkitViewHash = 0; public InventoryView getBukkitView() { + if (bukkitViewHash != bukkitViewHash()) { + bukkitView = null; + } if (bukkitView == null) { bukkitView = ArclightContainer.createInvView((Container) (Object) this); + bukkitViewHash = bukkitViewHash(); } return bukkitView; } + private long bukkitViewHash() { + return (((long) this.inventorySlots.size()) << 32) | System.identityHashCode(this.inventorySlots); + } + public void transferTo(Container other, CraftHumanEntity player) { InventoryView source = this.getBukkitView(); InventoryView destination = ((ContainerBridge) other).bridge$getBukkitView();