From 31ec100806ac5a3b4c0d1a7fe3057e6ca0c37796 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sun, 25 Apr 2021 17:23:30 +0200 Subject: [PATCH] Remove Window from list in VirtualInventory when closed --- .../de/studiocode/invui/window/impl/BaseWindow.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java b/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java index 18aff00..fe8a6f3 100644 --- a/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java @@ -168,9 +168,13 @@ public abstract class BaseWindow implements Window { Arrays.stream(elementsDisplayed) .filter(Objects::nonNull) .map(SlotElement::getHoldingElement) - .filter(element -> element instanceof ItemSlotElement) - .map(element -> ((ItemSlotElement) element).getItem()) - .forEach(item -> item.removeWindow(this)); + .forEach(slotElement -> { + if (slotElement instanceof ItemSlotElement) { + ((ItemSlotElement) slotElement).getItem().removeWindow(this); + } else if (slotElement instanceof VISlotElement) { + ((VISlotElement) slotElement).getVirtualInventory().removeWindow(this); + } + }); Arrays.stream(getGuis()) .forEach(gui -> gui.removeParent(this));