Interacciones y navegación
Una interacción conecta un clic en una ranura con un comportamiento. Se configura en el objeto, dentro de interactionList.
Añadir una interacción
En un objeto de un layout, añade un elemento a interactionList:
| Campo | Función |
|---|---|
type | El clic: LEFT_CLICK, RIGHT_CLICK, SHIFT_LEFT_CLICK, SHIFT_RIGHT_CLICK, MIDDLE_CLICK, DOUBLE_CLICK, NUMBER_KEY_1 a NUMBER_KEY_9, DROP, DROP_ALL, SWAP_OFFHAND. |
commands | Comandos ejecutados desde la consola. %player% se sustituye por el nombre del jugador y se resuelven los placeholders de PlaceholderAPI. |
triggers | Entradas de TypeWriter que se disparan para el jugador. |
closeMenu | Cierra el menú tras la acción. |
executeReturn | Vuelve a abrir el menú anterior tras la acción. |
El propio objeto también tiene triggers y modifiers. Se disparan con un clic izquierdo o derecho, o cuando coincide una interacción concreta del objeto. Los modifiers cambian hechos, exactamente igual que los modificadores de una acción.
El sonido de clic definido en audio.onClick se reproduce una vez por cada clic que haya hecho algo.
Comandos internos
Un comando que empieza por gui: lo gestiona GUI:
| Comando | Efecto |
|---|---|
gui:close | Cierra el menú. |
gui:back | Vuelve a abrir el menú anterior. |
gui:open <entry_id>, gui:action <entry_id> | Dispara otra entrada, normalmente otra entrada Open GUI. |
gui:view <view_id> | Cambia de vista sin cerrar la ventana. |
gui:page <delta> [layout_id] | Cambia de página en un layout paginado. |
gui:scroll <dx> <dy> [layout_id] | Desplaza un layout desplazable. |
gui:refresh | Vuelve a dibujar el menú. |
gui:sound <sound_key> | Reproduce una clave de sonido como minecraft:ui.button.click. |
Rara vez necesitarás escribir gui:close y gui:back tú mismo: marca closeMenu o executeReturn.
Diálogo de entrada
Si defines input en un objeto, se abre un diálogo de texto al hacer clic en la ranura. El diálogo sustituye a las interacciones de ese clic. Rellena title, placeholder, onInputCommands y onInputTriggers. En onInputCommands, {input} se sustituye por el texto escrito y %player% por el nombre del jugador. El menú se vuelve a dibujar cuando se confirma el diálogo.
La ayuda del campo menciona %value%, pero el código sustituye {input}. Valida lo que escriben los jugadores antes de que llegue a un comando, a una cantidad o a un permiso.
Permisos
viewPermissionoculta la ranura.clickPermissionmantiene la ranura visible y elimina sus interacciones, su entrada y sus disparadores.criteriaañade una condición de TypeWriter.
Usa clickPermission para mostrar un botón bloqueado con un lore explicativo, y viewPermission para ocultarlo. Un valor en blanco no restringe nada.
Botones proporcionados por otras extensiones
Un objeto con buttonType se convierte en un botón etiquetado. Shops y Quest Codex colocan esos marcadores; la otra extensión sustituye entonces las interacciones por las suyas. La etiqueta es buttonPrefix seguido de buttonType (por ejemplo shop_button: y SHOP_ITEM). Si ninguna extensión reclama la etiqueta, el objeto conserva las interacciones que hayas configurado.
Cooldowns y menús en vivo
cooldownTicks bloquea la misma ranura durante ese número de ticks tras un clic. autoRefreshTicks en la entrada Open GUI vuelve a dibujar nombres y lore con sus placeholders actuales cada N ticks; mantenlo en 20 o más en los menús que no necesiten animarse.
Cuando un clic no hace nada
Comprueba por este orden: clickPermission, cooldownTicks, criteria, un input que se apodere del clic y, por último, el prefijo de buttonType. Un comando que necesite un jugador como emisor no funcionará, ya que los comandos se ejecutan desde la consola.