Developer API

Utiliza la API de Paneles de Comandos para crear GUIs fácilmente para tu plugin o para interactuar con Paneles de Comandos.

Métodos de API

Introducción

Command Panels te permite añadirlo como dependencia para crear GUIs para tu plugin. Usando un Objeto Archivo (Recomendado) o una YamlConfiguration para el panel, puedes guardar un archivo YML dentro de tu plugin y luego usarlo para una GUI. El archivo que sería un archivo YML o el YamlConfiguration necesita seguir la misma sintaxis que cualquier otro panel. Su ubicación para almacenar el panel, sin embargo, no necesita estar en la carpeta de paneles, ya que en su lugar se ubicaría dentro del código de su propio plugin.

Si quisieras utilizar tu propio código cuando se hace clic en un elemento, utilizarías la etiqueta event= como un comando en el YAML del elemento, lo que haría que el elemento activara el evento PanelCommandEvent, lo que significa que sólo tienes que hacer un oyente para ese evento, y luego comprobar para asegurarte de que el mensaje es igual al que utilizaste en el elemento.

//Obtener la API de los paneles
CommandPanelsAPI api = CommandPanels.getAPI();

Después de inicializar la API utilizando la línea de código anterior, tendrá acceso a los siguientes métodos

Método

Devuelve

Descripción

api.isPanelOpen(Player p);

Boolean

Comprueba si un jugador tiene un panel abierto.

api.getOpenPanel(Player p, PanelPosition position);

Panel

Obtiene el objeto Panel de un panel actualmente abierto para un jugador. PanelPosition es Top, Middle, Bottom del área de inventario. (Cofre, Jugador, Hotbar)

api.getPanelsLoaded();

List<Panel>

Obtiene los Paneles cargados en el plugin CommandPanels.

api.addPanel(Panel panel);

-

Añade un panel a los CommandPanels cargados de plugins.

api.makeItem(ConfigurationSection item)

ItemStack

Obtiene la sección de configuración de un ítem, por ejemplo la sección de un ítem en un panel. A continuación, el plugin hará un elemento personalizado y devolverá el ItemStack.

api.removePanel(Panel panel);

-

Elimina un panel de los CommandPanels cargados.

api.hasNormalInventory(Player p);

boolean

Devuelve false si el inventario del jugador tiene un panel y no es el inventario normal.

api.getPanel(String panelName);

Panel

Obtener un panel cargado utilizando el nombre del panel.

Si una ranura de artículo es un artículo fijo

Los Paneles de Comando pueden tener ítems en el inventario en ciertas ranuras que son asignadas para abrir un panel cuando se hace click, no pueden ser movidas. La siguiente función devolverá un ArrayList int de las ranuras que están siendo usadas para Paneles de Comando. 0-8 es para la Hotbar y 9-33 es para dentro del inventario.

CommandPanelsAPI api = CommandPanels.getAPI();
api.getHotbarItems();

Tratamiento de los paneles

Los paneles son objetos que se pueden crear. Una vez creado un panel, se pueden hacer muchas cosas con él.

Creación de un panel

Para crear un panel, obtenga un Archivo o una YamlConfiguración del panel. Se recomienda un archivo, ya que se puede utilizar para añadirlo a los paneles cargados en los paneles de comandos.

File file = new File("panel.yml");
String panelName = "example";
Panel panel = new Panel(file, panelName);

Métodos de panel

Método

Devuelve

Descripción

panel.open(Player p, PanelPosition position);

-

Abrir un panel para el jugador. Asegúrese de que no haya ya un panel abierto. Utilice la posición del panel superior si no hay ya un panel abierto para el jugador.

panel.getHotbarItem(Player p)

ItemStack

Obtener el elemento de la HotBar de los paneles.

panel.hasHotbarItem()

Boolean

Compruebe si el panel tiene un elemento Hotbar.

panel.getInventory()

Inventory

Obtener el panel como inventario plano.

panel.getCustomItem(Player p, String itemName)

ItemStack

Consigue uno de los paneles Artículos personalizados.

panel.getItem(Player p, int slot)

ItemStack

Coge uno de los objetos del interior del panel, según la slot.

Si un jugador tiene un panel abierto

Si desea comprobar si un jugador tiene un panel abierto, primero tendrá que asignarlo a una variable y después podrá utilizar la API. Consulte los siguientes ejemplos.

El ejemplo siguiente devolverá true si un determinado jugador tiene algún panel abierto, en caso contrario, devolverá false.

CommandPanelsAPI api = CommandPanels.getAPI();
api.isPanelOpen(Player p);

El ejemplo de abajo devolverá un objeto panel, puedes ver qué panel tiene abierto el jugador con esto. Te da acceso a ver todo lo que hay dentro del panel, dónde está almacenado e incluso te permite abrir el panel de nuevo.

CommandPanelsAPI api = CommandPanels.getAPI();
api.getPanel(Player p);

Eventos API

PanelOpenedEvent

Este evento es llamado cuando se abre un panel. Abajo hay una clase de ejemplo con el evento dentro de ella. Hay una variedad de funciones que puede utilizar, como cancelar el evento que detendrá la apertura del panel.

public class Utils implements Listener {
    @EventHandler
    public void onPanelOpen(PanelOpenedEvent e){
        //do stuff here
    }

e.getPlayer();Consigue al jugador que ha abierto un panel.

e.getPanelName(); Devuelve el nombre del panel que se está abriendo, en forma de cadena.

e.getPanel.getConfig(); Esto devolverá una ConfigurationSection que contiene la configuración de los paneles. Por ejemplo, si desea obtener el título del panel lo encontraría así:e.getPanel.getConfig().getString("title").

e.isCancelled() es el evento cancelado.

e.setCancelled() Cancela el evento si no quieres que se abra el panel.

PanelClosedEvent

Este evento es llamado cuando un panel es cerrado. Abajo hay una clase de ejemplo con el evento dentro de ella. Hay una variedad de funciones que puede utilizar.

public class Utils implements Listener {
    @EventHandler
    public void onPanelClose(PanelClosedEvent e){
        //do stuff here
    }

e.getPlayer(); Consigue al jugador que ha abierto un panel.

e.getPanelName(); Devuelve el nombre del panel que se está abriendo, en forma de cadena.

e.getPanel.getConfig(); Esto devolverá una ConfigurationSection que contiene la configuración de los paneles. Por ejemplo, si desea obtener el título del panel lo encontraría así:e.getPanel.getConfig().getString("title").

PanelCommandEvent

Este evento se activa si la etiqueta de comandoevent= <mensaje>se utiliza en un panel. A continuación se muestra una clase de ejemplo con el evento dentro de ella. Esto le permitirá ver los argumentos/mensaje que se dejó desde dentro del panel.

public class Utils implements Listener {
    @EventHandler
    public void onPanelCommand(PanelCommandEvent e){
        //do stuff here
    }

e.getPlayer(); Consigue al jugador que ha abierto un panel.

e.getMessage();Devuelve el mensaje que queda después de la etiqueta de comando como una cadena.

Last updated