package net.knarcraft.minigames.gui; import net.knarcraft.knargui.AbstractGUI; import net.knarcraft.knargui.GUIAction; import net.knarcraft.knargui.item.GUIItemFactory; import net.knarcraft.knargui.item.PlayerHeadGUIItemFactory; import net.knarcraft.minigames.MiniGames; import net.knarcraft.minigames.arena.ArenaPlayerRegistry; import net.knarcraft.minigames.arena.ArenaSession; import net.knarcraft.minigames.arena.PlayerVisibilityManager; import net.md_5.bungee.api.ChatColor; import org.bukkit.Material; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import java.util.ArrayList; import java.util.List; /** * A generic GUI for all arenas */ public abstract class ArenaGUI extends AbstractGUI { /** * Instantiates a new arena gui * * @param inventorySize
The size of the GUI's inventory
* @param inventoryNameThe name of the inventory
*/ public ArenaGUI(int inventorySize, String inventoryName) { super(inventorySize, inventoryName, null); } /** * Gets an item describing a retry arena action * * @returnAn arena restart item
*/ protected ItemStack getRestartItem() { PlayerHeadGUIItemFactory restartItemFactory = new PlayerHeadGUIItemFactory(); restartItemFactory.useSkin("e23b225ed0443c4eec7cf30a034490485904e6eb3d53ef2ab9e39c73bdf22c30"); ListA player toggle item
*/ protected ItemStack getTogglePlayersItemDisabled() { GUIItemFactory togglePlayersItemFactory = new GUIItemFactory(Material.PLAYER_HEAD); ListA player toggle item
*/ protected ItemStack getTogglePlayersItemEnabled() { PlayerHeadGUIItemFactory togglePlayersItemFactory = new PlayerHeadGUIItemFactory(); togglePlayersItemFactory.useSkin("c10591e6909e6a281b371836e462d67a2c78fa0952e910f32b41a26c48c1757c"); ListA leave item
*/ protected ItemStack getLeaveItem() { GUIItemFactory leaveItemFactory = new GUIItemFactory(Material.BARRIER); ListAn arraylist with one blank line
*/ protected ListThe inventory slot the action should be added to
* @param actionThe action to register
*/ protected void setAnyClickAction(int inventorySlot, GUIAction action) { setClickAction(inventorySlot, ClickType.LEFT, action); setClickAction(inventorySlot, ClickType.RIGHT, action); } /** * Gets the action to run when triggering the leave item * * @returnThe leave action
*/ public static GUIAction getLeaveAction() { return (player) -> { ArenaSession session = MiniGames.getInstance().getSession(player.getUniqueId()); if (session != null) { session.triggerQuit(false, true); } }; } /** * Gets the action to run when triggering the restart action * * @returnThe action for triggering a session restart
*/ public static GUIAction getRestartAction() { return (player -> { ArenaSession session = MiniGames.getInstance().getSession(player.getUniqueId()); if (session != null) { session.reset(); } }); } /** * Gets the action to run when triggering the toggle players action * * @param playerRegistryThe registry containing relevant players
* @returnThe action for triggering player visibility
*/ public GUIAction getTogglePlayersAction(ArenaPlayerRegistry> playerRegistry) { return (player) -> { PlayerVisibilityManager visibilityManager = MiniGames.getInstance().getPlayerVisibilityManager(); visibilityManager.toggleHidePlayers(playerRegistry, player); if (MiniGames.getInstance().getPlayerVisibilityManager().isHidingPlayers(player)) { setItem(0, getTogglePlayersItemEnabled()); } else { setItem(0, getTogglePlayersItemDisabled()); } }; } }