Update InventoryView when container layout changed

This commit is contained in:
IzzelAliz 2021-02-18 00:40:15 +08:00
parent 41a70332a4
commit 2d6b0d6db2

View File

@ -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();