Contenido generado con IA — puede contener errores.

Referencia

Menús

Las ciento dieciocho pantallas, qué carpeta conserva tus cambios y cómo, el esquema de archivo y las acciones que puedes enlazar en otro sitio.

Vienen ciento dieciocho archivos de menú, en dos sitios que se comportan de forma completamente distinta.

CarpetaArchivosComportamiento
modules/<id>/menus/, y menus/currency_select.yml69Se escriben si faltan y después se mantienen al día sin deshacer tus cambios. Tuyos.
menus/admin/49La carpeta entera se borra y se vuelve a extraer del jar en cada arranque, cada /sc reload y cada /exylialib reload.
Casi todos los archivos de `menus/admin/` dicen ser tuyos, y ninguno lo es

Treinta y cuatro de esos cuarenta y nueve empiezan con una cabecera que dice que el archivo es tuyo, que se escribe una vez y nunca se sobrescribe. Otros doce dicen DO NOT EDIT — REGENERATED ON EVERY STARTUP, que es cierto salvo que también pasa en cada recarga; las tres pantallas de salas de duelo no llevan cabecera. Diga lo que diga la cabecera, lo que edites bajo menus/admin/ se destruye en silencio en el siguiente reinicio o recarga.

Las excepciones en el otro sentido son modules/warps/menus/warp_setup.yml y las cinco pantallas de administración de protecciones de modules/protections/menus/: editores de administración que viven fuera de menus/admin/ y por tanto se conservan como cualquier otro menú tuyo.

Un archivo malformado se nombra en el log y se deja sin registrar, en vez de cargarse vacío en silencio.

Cómo se mantienen al día tus menús

Cada carpeta de menús tuyos se refresca al arrancar y en cada recarga, antes de leer los menús. Para cada archivo el plugin compara tres cosas: lo que hay en disco, lo que viene esta vez y los valores por defecto que tenías la última vez, que guarda en .defaults/files/ dentro de la carpeta del plugin.

  • Un archivo que falta se escribe.
  • Una clave que añade una versión se escribe en tu archivo al momento, comentarios incluidos. Nadie puede haber elegido algo que todavía no existía.
  • Un valor por defecto que cambia en una clave que nunca tocaste no se aplica. Espera en /exylialib updates, donde lo aplicas o te quedas con lo que tienes.
  • Lo que hayas cambiado o borrado no se toca nunca.

En un servidor que ya tenía los archivos antes de que existiera este seguimiento, cada valor que hay en disco cuenta como tuyo, y una clave que falta en un archivo se ofrece en /exylialib updates en vez de escribirse — puede ser una que borraste tú. Un archivo que no se puede leer se deja como está y se avisa.

Archivos que declaran una versión

Las veintiuna pantallas de protecciones y modules/player-settings/menus/settings.yml llevan menu-version: 4. Cuando una versión trae un número mayor que el del archivo en disco (un archivo sin la clave cuenta como 0), el archivo se sustituye entero, con tus cambios, y el anterior se guarda al lado como <nombre>.yml.v<versión anterior>. Eso queda para un cambio de diseño que un archivo viejo no puede aguantar.

Borrar un menú ya no devuelve el de por defecto

Una vez que el plugin ha instalado un archivo, si ese archivo desaparece cuenta como borrado por ti, y no se vuelve a escribir. El menú entonces no se registra: el log nombra el archivo que no se pudo leer, y lo que abre esa pantalla no hace nada. Para recuperar el archivo que viene con el plugin, borra también su copia en .defaults/files/ — la misma ruta, .defaults/files/modules/homes/menus/homes.yml para modules/homes/menus/homes.yml — y recarga.

Las cabeceras de modules/crates/menus/history.yml, modules/crates/menus/preview.yml, las tres pantallas de modules/economy/menus/ y menus/currency_select.yml siguen diciendo que se escriben una vez y nunca se sobrescriben. Tus cambios se conservan, pero las claves que añade una versión se escriben en ellos como se explica arriba.

La ventana de intercambio, modules/trade/window.yml, no es un archivo de menú — sus ranuras las fija el plugin — pero se mantiene al día de la misma forma. Consulta Intercambio y baúles.

Los menús de jugador

Estos son los que merece la pena estilizar.

MenúLo abre
homes/homes/home, /homes
homes/home_editUn home de esa lista
warps/warp_list/warp
rtp/rtp/rtp sin mundo
near/near_list/near, con display-mode: UI
tpa/tpa_confirmEnviar un /tpa con la confirmación activada
kits/list/kit
kits/preview/kit preview, /kitadmin preview
kits/containerUna shulker o un bundle dentro de la vista previa de un kit
rewards/list/rewards
rewards/preview/rewards preview, /rewardsadmin preview, una recompensa de esa lista
crates/preview/crates, /crates preview, clic derecho en un bloque de caja
crates/history/crates history
bounties/bounty_list/bounty
bounties/bounty_contributionsUna cabeza de esa lista
bounties/bounty_place_confirm/bounty place
graves/graves/graves
rankup/rankup/rankup
playtime-rewards/playtime-rewards/playtime
farming/farming/farming
stats/statsLa acción stats_open (/stats nunca se registra — ver Combate)
stats/stats-leaderboardUna fila de stat de esa pantalla
missions/missions/missions
seasons/seasons/seasons
seasons/season_boardUna temporada de esa lista
votes/vote/vote
boosters/boosters/boosters
economy/wallet/wallet, /economy wallet
economy/top/baltop, /economy top
economy/history/economy history
shop/shop/shop
shop/category/shop <categoría>, una categoría de la tienda
shop/amountUn producto de una categoría
market/market/market
market/my_listings/market mine
market/previewUn anuncio
market/confirmComprar un anuncio
auctions/auctions/auction
auctions/my_auctions/auction mine
auctions/bidUna subasta de la lista
orders/orders/orders
orders/my_orders/orders mine
orders/fillUn pedido del tablón
vaults/vaults/vault sin número
afk-zones/afkzone_preview/afkzone preview <id>
player-settings/settings/settings
protections/list/protections
protections/logs/protections logs
protections/manageUna protección de esa lista
protections/shop, members, roles, permissions, bans, market, subregions, subregion, rent, warps, warp, perks, mergeBotones de las pantallas de protecciones
menus/currency_selectCualquier pantalla que tenga que preguntar la moneda — anunciar en el mercado, empezar una subasta, poner un pedido

Las pantallas de protecciones se explican en Protecciones.

Las pantallas de administración

Cuarenta y nueve archivos en menus/admin/, un flujo por módulo, alcanzables desde el comando de administración de ese módulo: minas con sus niveles, composición y cadenas de desgaste; cajas con sus premios, animación y pity; plantillas de cofre y cofres colocados; spawners de objetos y sus posiciones; zonas de power-up, sus entradas y sus posiciones; zonas de regeneración y su rejilla de flags; salas de duelo y sus flags; portales; plataformas de salto; zonas AFK; warps; kits; recompensas; recompensas por cabeza; categorías y productos de la tienda; monedas y los ajustes de economía; y actualizaciones de objetos.

Funcionan, y no deberías editarlas. El plugin sustituye la carpeta desde el jar para que un botón añadido en una versión llegue a servidores que ya la tienen.

Fuera de esa carpeta, modules/warps/menus/warp_setup.yml es el editor de warps, y modules/protections/menus/ guarda las pantallas de administración de protecciones — admin, admin_protection, tiers, tier y cleanup, a las que se llega desde /protections admin. Esas seis se conservan como cualquier menú tuyo. Consulta Administrar protecciones.

El esquema de archivo

Un archivo de menú es:

title: "…"
size: 54
type: PAGINATION
open_sounds: ["UI_BUTTON_CLICK|1.0|1.0"]
click_sounds: []
refresh: { mode: SMART, interval: 40 }
filler:
  global: { material: GRAY_STAINED_GLASS_PANE, name: " " }
  pagination: { material: BARRIER, name: "Nada aquí" }
pagination:
  slots: '10-16,19-25,28-34'
  item_template: { material: "%icon%", name: "%name%", lore: [], actions: ["survivalcore:…"] }
  navigation:
    previous: { slot: 45, material: ARROW }
    next:     { slot: 53, material: ARROW }
items:
  close: { slot: 49, material: BARRIER, name: "Cerrar", actions: ["survivalcore:close_menu"] }
ClaveQué hace
sizeSiempre size, nunca rows
typeDecorativo. Un menú pagina porque tiene un bloque pagination:, no por esto
refresh{mode: ON_CLICK, click_delay: 4} o {mode: SMART, interval: N}
filler.globalEl fondo
filler.custom.<nombre>Un segundo relleno con sus propios slots
filler.paginationLo que se dibuja cuando la lista está vacía
pagination.slots'0-35', o un conjunto de rangos separados por comas
sectionsGrupos de ranuras con nombre, con sus propias plantillas y navegación. Los usan la vista previa de kit y su pantalla de contenedor, la vista previa de recompensa, la tienda y sus categorías, y la vista previa del mercado
animationcenter_out
menu-versionSolo en los archivos que declaran una; ver arriba. No la toques

Plantillas de estado

Una lista paginada puede dibujar una fila distinta según su estado. modules/kits/menus/list.yml tiene cuatro — item_template, cooldown_template, used_template, locked_template — y la sección de reclamo de la vista previa de kit tiene seis.

Acciones

La clave es siempre actions:, una lista de cadenas. El tipo de clic es un prefijo dentro de la cadena:

actions:
  - "left: survivalcore:mine_edit %mine_id%"
  - "right: survivalcore:mine_delete %mine_id%"
  - "shift_left: survivalcore:mine_set_weight %mine_id%"

left:, right:, middle:, shift_left:, shift_right: y drop: son los prefijos; sin prefijo vale cualquier clic. survivalcore:<nombre> es una de las trescientas treinta y siete acciones de este plugin; close, previous_page y next_page son de ExyliaLib.

Materiales

Un material de Bukkit, un placeholder (%kit_icon%), basehead-<base64>, playerhead-%name% o playerhead:%name%. Las dos formas de cabeza se usan en los archivos que vienen.

Acciones que merece la pena enlazar en otro sitio

El plugin registra 337 acciones bajo el espacio survivalcore:, y funcionan desde cualquier menú de ExyliaLib de cualquier plugin: un selector de hub, un NPC, un objeto de hotbar. Cada una no hace nada mientras su módulo está apagado. Las que más merece la pena conocer:

AcciónQué abre
survivalcore:homes_openLos homes del jugador
survivalcore:warp_open_listLa lista de warps
survivalcore:kit_open_listLa lista de kits
survivalcore:reward_open_listLa lista de recompensas
survivalcore:crate_open_listLa lista de cajas
survivalcore:rankup_openLa escalera de rangos
survivalcore:stats_openEl perfil de estadísticas del jugador
survivalcore:missions_openLas misiones
survivalcore:seasons_openLa lista de temporadas
survivalcore:votes_openLa pantalla de votos
survivalcore:boosters_openLos potenciadores del jugador
survivalcore:shop_openLa tienda
survivalcore:market_openEl mercado
survivalcore:auctions_openLa casa de subastas
survivalcore:orders_openEl tablón de pedidos
survivalcore:vaults_openLa lista de baúles del jugador
survivalcore:graves_openLas tumbas del jugador
survivalcore:protections_openLas protecciones del jugador
survivalcore:settings_openLa pantalla de preferencias
survivalcore:close_menuCerrar
Una acción de administración sigue comprobando su nodo

Cada acción que cambia estado de administración vuelve a comprobar el permiso de su módulo dentro del manejador. Poner un botón de administración en un menú de jugador no le da acceso a nadie: solo le da un botón que se niega.

Dos acciones registradas no tienen botón en ningún sitio

survivalcore:spawner_import_from_chest y survivalcore:lc_import_from_chest implementan un flujo completo de "haz clic en un cofre para importar su contenido como tabla de loot", y ningún menú que viene llama a ninguna de las dos. Enlazarla en tu propio menú es la única forma de alcanzarla.

¿Falta algo en esta página? Dínoslo en Discord