Window#getPlayerItems

This commit is contained in:
NichtStudioCode 2023-03-25 22:36:35 +01:00
parent 290f9b6ee9
commit 9f44f940e5
3 changed files with 30 additions and 0 deletions

@ -5,6 +5,7 @@ import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import xyz.xenondevs.inventoryaccess.InventoryAccess; import xyz.xenondevs.inventoryaccess.InventoryAccess;
import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; import xyz.xenondevs.inventoryaccess.component.ComponentWrapper;
import xyz.xenondevs.invui.gui.AbstractGui; 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() { private void restorePlayerInventory() {
Inventory inventory = getViewer().getInventory(); Inventory inventory = getViewer().getInventory();
for (int i = 0; i < 36; i++) { for (int i = 0; i < 36; i++) {

@ -6,6 +6,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; import xyz.xenondevs.inventoryaccess.component.ComponentWrapper;
import xyz.xenondevs.invui.gui.AbstractGui; import xyz.xenondevs.invui.gui.AbstractGui;
import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.Gui;
@ -108,6 +109,16 @@ public abstract class AbstractSingleWindow extends AbstractWindow {
return gui; return gui;
} }
@Override
public @Nullable ItemStack @Nullable [] getPlayerItems() {
Player viewer = getCurrentViewer();
if (viewer != null) {
return viewer.getInventory().getContents();
}
return null;
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public abstract static class AbstractBuilder<W extends Window, S extends Builder.Single<W, S>> public abstract static class AbstractBuilder<W extends Window, S extends Builder.Single<W, S>>
extends AbstractWindow.AbstractBuilder<W, S> extends AbstractWindow.AbstractBuilder<W, S>

@ -4,6 +4,7 @@ import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -162,6 +163,16 @@ public interface Window {
*/ */
@NotNull UUID getViewerUUID(); @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. * Replaces the currently registered open handlers with the given list.
* *