From 9f44f940e57691d5a78af9f69433cb0b107103bf Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sat, 25 Mar 2023 22:36:35 +0100 Subject: [PATCH] Window#getPlayerItems --- .../xenondevs/invui/window/AbstractDoubleWindow.java | 8 ++++++++ .../xenondevs/invui/window/AbstractSingleWindow.java | 11 +++++++++++ .../main/java/xyz/xenondevs/invui/window/Window.java | 11 +++++++++++ 3 files changed, 30 insertions(+) diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/AbstractDoubleWindow.java b/invui/src/main/java/xyz/xenondevs/invui/window/AbstractDoubleWindow.java index 0b938a0..4fc99bb 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/AbstractDoubleWindow.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/AbstractDoubleWindow.java @@ -5,6 +5,7 @@ import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; import xyz.xenondevs.inventoryaccess.InventoryAccess; import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; import xyz.xenondevs.invui.gui.AbstractGui; @@ -53,6 +54,13 @@ public abstract class AbstractDoubleWindow extends AbstractWindow { } } + @Override + public @Nullable ItemStack @Nullable [] getPlayerItems() { + if (isOpen()) + return playerItems; + return null; + } + private void restorePlayerInventory() { Inventory inventory = getViewer().getInventory(); for (int i = 0; i < 36; i++) { diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/AbstractSingleWindow.java b/invui/src/main/java/xyz/xenondevs/invui/window/AbstractSingleWindow.java index 13509d2..73a8ce2 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/AbstractSingleWindow.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/AbstractSingleWindow.java @@ -6,6 +6,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; import xyz.xenondevs.invui.gui.AbstractGui; import xyz.xenondevs.invui.gui.Gui; @@ -108,6 +109,16 @@ public abstract class AbstractSingleWindow extends AbstractWindow { return gui; } + @Override + public @Nullable ItemStack @Nullable [] getPlayerItems() { + Player viewer = getCurrentViewer(); + if (viewer != null) { + return viewer.getInventory().getContents(); + } + + return null; + } + @SuppressWarnings("unchecked") public abstract static class AbstractBuilder> extends AbstractWindow.AbstractBuilder diff --git a/invui/src/main/java/xyz/xenondevs/invui/window/Window.java b/invui/src/main/java/xyz/xenondevs/invui/window/Window.java index edf7fcd..e468b0e 100644 --- a/invui/src/main/java/xyz/xenondevs/invui/window/Window.java +++ b/invui/src/main/java/xyz/xenondevs/invui/window/Window.java @@ -4,6 +4,7 @@ import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -162,6 +163,16 @@ public interface Window { */ @NotNull UUID getViewerUUID(); + /** + * Gets the contents of the {@link Window#getCurrentViewer() viewer's} inventory. + * This method will always return the actual inventory contents and will not be affected by double windows placing + * gui items in the {@link Player's} inventory. + * + * @return The contents of the {@link Window#getCurrentViewer() viewer's} inventory, + * or null if the {@link Window} {@link Window#isOpen() isn't open}. + */ + @Nullable ItemStack @Nullable[] getPlayerItems(); + /** * Replaces the currently registered open handlers with the given list. *