From d42c242947e6aa87ebf3cfeab4fb216b646cc0c7 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Tue, 11 May 2021 19:03:07 +0200 Subject: [PATCH] GUI#closeForAllViewers --- src/main/java/de/studiocode/invui/gui/GUI.java | 10 ++++++++++ .../java/de/studiocode/invui/gui/impl/IndexedGUI.java | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/de/studiocode/invui/gui/GUI.java b/src/main/java/de/studiocode/invui/gui/GUI.java index 0a738c3..43b5b72 100644 --- a/src/main/java/de/studiocode/invui/gui/GUI.java +++ b/src/main/java/de/studiocode/invui/gui/GUI.java @@ -12,6 +12,7 @@ import de.studiocode.invui.window.Window; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; @@ -267,6 +268,15 @@ public interface GUI extends GUIParent { */ Set findAllCurrentViewers(); + /** + * Closes the open {@link Inventory} for all viewers of {@link Window}s + * where this {@link GUI} is displayed. + * Does not actually call the {@link Window#close(boolean)} method, which will + * be indirectly invoked by the {@link InventoryCloseEvent} if the {@link Window} + * is set to close on that event. + */ + void closeForAllViewers(); + /** * Plays an {@link Animation}. * diff --git a/src/main/java/de/studiocode/invui/gui/impl/IndexedGUI.java b/src/main/java/de/studiocode/invui/gui/impl/IndexedGUI.java index 333af8a..74da14e 100644 --- a/src/main/java/de/studiocode/invui/gui/impl/IndexedGUI.java +++ b/src/main/java/de/studiocode/invui/gui/impl/IndexedGUI.java @@ -288,6 +288,11 @@ abstract class IndexedGUI implements GUI { .collect(Collectors.toSet()); } + @Override + public void closeForAllViewers() { + findAllCurrentViewers().forEach(Player::closeInventory); + } + @Override public void playAnimation(@NotNull Animation animation, @Nullable Predicate filter) { if (animation != null) cancelAnimation();