Contenido generado con IA — puede contener errores.

Interfaces

Ajustes en el juego

Cambia los ajustes y catálogos de cada plugin desde un menú con /exylialib config, sin código en el plugin.

/exylialib config abre los ajustes de cada plugin de Exylia como pantallas, dibujadas a partir de los mismos records que edita el editor web. El plugin no escribe código de menú. Solo jugadores: a la consola se la remite a /exylialib editor.

Los plugins diseñan primero sus propias pantallas de ajustes

Desde 1.555.0 el hub de admin de un plugin lleva páginas de ajustes que diseña él mismo: solo lo que un admin ajusta de verdad, agrupado por finalidad, con cada tarjeta explicando qué hace el valor. El árbol de abajo dibuja todas las claves de todos los archivos en el orden del archivo, así que queda tras /exylialib config como herramienta avanzada, y abrirlo desde el hub de un plugin con ConfigMenus.of(...) está obsoleto.

ComandoAbre
/exylialib configLos plugins con ajustes.
/exylialib config <plugin>Los ajustes de un plugin: su único archivo directamente, o la lista de sus archivos.

Hacer clic requiere exylialib.config (op por defecto).

Las pantallas

  1. Plugins: un libro por plugin, marcado Problemas cuando sus archivos tienen alguno.
  2. Archivos de un plugin: una tarjeta por archivo de ajustes y de contenido. Se salta con un solo archivo.
  3. Páginas de un archivo: una tarjeta por página, con sus primeros cuatro valores en vivo. Se salta con una sola página.
  4. Una página: un botón por clave; una sección anidada es un botón que abre su propia página.

Sin anotaciones, un archivo se agrupa como está escrito: las claves de la raíz en una tarjeta General, cada sección en su propia tarjeta, cada mapa o lista de entradas en una tarjeta que abre la lista.

Qué archivos

Todo archivo de ajustes de un plugin de Exylia activo que no sea una traducción, no lo cubra un sujeto del editor web y el plugin no haya excluido. Los mensajes y menús no se muestran. Los catálogos de contenido que un plugin registra con WebEditor.of(plugin).yaml(id, ruta) van después, cada uno con su propio comprobador, que solo rechaza lo que el plugin no cargaría.

Tus propias pantallas de ajustes

ConfigEdits (net.exylia.lib.config, desde 1.555.0) es la fontanería; el plugin escribe la pantalla (un menú de admin normal) y decide qué lleva. Cada tarjeta la escribe el plugin con lo que hace el valor; la librería escribe el resto en el idioma del servidor: el valor actual, el de por defecto y las líneas de clic.

ConfigEdits fees = ConfigEdits.of(plugin, AuctionHouseDefaults::file);
 
// cada clave editable como valor vivo, como %ah_settings_listing_fee_percent%
menus.open(admin, "menus/admin/settings_ah", fees.placeholders("ah_"));
 
// una acción para todas las tarjetas
actions.registerSync("setting", "myplugin.admin.settings", (ctx, args) -> {
    fees.card(ctx.player(), args.string(1, ""), ctx.get(UiKeys.CLICK).orElse(null), () -> reopen(ctx.player()));
    return ActionResult.success();
});
LlamadaHace
ConfigEdits.of(plugin, file)Las ediciones de un archivo de Configs.define. El archivo se lee en cada llamada, así que sigue a un reload.
value(key) / live(key)El valor de una clave como lo muestran las pantallas, con color (Activado, 48h, dinero en su moneda, porcentaje). live es una lambda para el contexto de un menú.
defaultValue(key)El valor que da el constructor sin argumentos del record (1.562.0).
hint(key)Las líneas de clic traducidas de la tarjeta, con el clic de reinicio mientras el valor difiera del de por defecto (1.562.0).
placeholders(prefix)Cada clave editable como valor vivo: prefix más la clave con . y - como _, y el mismo nombre con _default y _click. placeholders(prefix, keys) (1.573.0) lo limita a algunas claves, ya que cada valor se lee en cada redibujado.
card(viewer, key, click, back)El único manejador de clic que necesita toda tarjeta (1.562.0): Mayús + clic derecho reinicia, un número o cantidad se escribe con el valor actual (10k, 2.5M), un interruptor se invierte, una opción avanza, y un tiempo, texto, objeto, moneda o lista de objetos se pregunta.
reset(viewer, key), tone(tone)Devuelven una clave a su valor por defecto; cambian el color de las líneas de clic (1.562.0).

Cada cambio se comprueba contra @Menu.Range, AtLeast y AtMost, se escribe con ConfigFile.set (se conservan comentarios y orden) y lo sigue el Reloads del plugin.

Las anotaciones del record deciden cómo se lee un valor (1.562.0):

  • @Menu.Format(value = MONEY, currency = "currency") muestra la cantidad en la moneda que nombra la clave hermana.
  • @Menu.Currency en una clave de texto abre una elección entre las monedas del servidor.
  • @Menu.Material en una List<String> pide añadir un objeto (el selector de iconos), quitar uno o editar como texto.

Qué va en una pantalla de ajustes y qué se queda en el archivo:

  • En el juego: lo que un admin cambia con el servidor en marcha: tasas, impuestos, límites, precios, duraciones, interruptores, objetos bloqueados, monedas, interruptores de módulo.
  • En el archivo: base de datos y red, intervalos, sonidos, depuración, umbrales antiabuso, números de diseño.
  • Forma: una tarjeta del hub de admin abre un hub de ajustes con una tarjeta por módulo, cada una con una subpágina de tarjetas escritas a mano. Los interruptores de módulo se aplican en el siguiente reinicio, y el hub dice cuántos cambios esperan (PluginModules.pendingRestart()).

tools/settings-cards/settings_cards.py, del repositorio, convierte una especificación corta (clave, etiqueta, icono, dos o tres líneas) en el YAML en inglés de un hub y sus páginas, listo para traducir.

El árbol genérico, para desarrolladores

Un plugin puede añadir un botón Ajustes a su propio hub de admin y dejar ATRÁS apuntando a él:

ConfigMenus.of(plugin)
        .permission("myplugin.admin")   // puede editar sus archivos, además de exylialib.config
        .back(hub::open)
        .open(player);

Las anotaciones opcionales Menu en el record dan etiquetas, rangos y formatos. La lista de todos los plugins siempre requiere exylialib.config.

ConfigMenus.of(plugin).permission(p).back(b).file(name).open(viewer) abre un archivo de ajustes directamente, por el nombre pasado a Configs.define (como modules/hotbar/config). Ese archivo es entonces la pantalla superior: ATRÁS ejecuta back(...) y el botón dice Pantalla anterior. Un nombre que el plugin no definió, o cuyo módulo está apagado, abre los ajustes del plugin como si no se hubiera pedido ningún archivo.

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