Contenido generado con IA — puede contener errores.

Referencia

Configuración

config.yml clave por clave, qué guardan messages.yml y scoreboards.yml, los archivos de menú y dónde se configura la base de datos.

Todo se genera en plugins/ExyliaTotemTrainer/ en el primer arranque, con comentarios. Edita los archivos de ahí, nunca las copias del jar. Los tiempos son segundos con decimales salvo que una clave diga ticks; veinte ticks son un segundo. Los colores usan tokens de paleta como {primary} o {success}.

config.yml

plugins/ExyliaTotemTrainer/config.yml
training:
  modes:
    normal:
      display-name: Normal
      totems: 0
      refill: false
      close-inventory: false
      icon: CHEST
      description: One full inventory of totems. When it runs out, you are done.
    infinite:
      display-name: Infinite
      totems: 0
      refill: true
      close-inventory: false
      icon: TOTEM_OF_UNDYING
      description: A full inventory, refilled forever. It ends when you miss one.
    random:
      display-name: Random
      totems: 1
      refill: false
      close-inventory: false
      icon: ENDER_EYE
      description: A single totem, in a different random slot after every pop.
    chaos:
      display-name: Chaos
      totems: 1
      refill: false
      close-inventory: false
      random-interval:
        min-ticks: 10
        max-ticks: 30
      icon: ENDER_PEARL
      description: Random slot and random timing. Nothing is where you left it.
    acceleration:
      display-name: Acceleration
      totems: 3
      refill: false
      close-inventory: false
      speed-up:
        every: 10
        by: 5
        min-ticks: 5
      icon: FIREWORK_ROCKET
      description: Three totems on screen, faster every 10 pops. Find your ceiling.
    blackout:
      display-name: Blackout
      totems: 0
      refill: true
      close-inventory: true
      icon: ENDER_CHEST
      description: A full inventory that slams shut on every pop. Open it again, fast.
  ticks: [25, 20, 15, 10, 5]
  default-ticks: 20
  countdown: 3.0
 
performance:
  defaults:
    perfect: 0.25
    excellent: 0.40
    good: 0.60
    ok: 0.90
  by-ticks:
    "10":
      perfect: 0.15
      excellent: 0.25
      good: 0.35
      ok: 0.45
  by-mode: {}
  points:
    perfect: 100
    excellent: 85
    good: 70
    ok: 50
    slow: 25
  fail-penalty: 15
  full-credit-pops: 20
 
feedback:
  perfect:
    effect:
      action-bar:
        text: "{success}⚡ PERFECT {muted}· {letters}%reaction%s"
        duration: 2.0
        time-style: auto
      sound:
        name: ENTITY_EXPERIENCE_ORB_PICKUP
        volume: 0.8
        pitch: 1.8
        category: MASTER
    chat: "%prefix% {success}Perfect pop! {highlight}%reaction%s"
  # excellent, good, ok y slow tienen la misma forma, con la línea chat vacía.
  fail:
    title:
      text: "{error}&lPOPPED OUT"
      subtitle: "{letters}You did not swap in time"
      fade-in: 0.0
      stay: 2.0
      fade-out: 0.5
      time-style: auto
    sound:
      name: ENTITY_ITEM_BREAK
      volume: 1.0
      pitch: 0.8
      category: MASTER
  countdown:
    title:
      text: "{primary}&l%time%"
      subtitle: "{letters}Press {highlight}E {letters}and swap totems from your inventory"
      fade-in: 0.0
      stay: 1.0
      fade-out: 0.2
      time-style: auto
    action-bar:
      text: "{secondary}Starting in {highlight}%time%s"
      duration: 2.0
      time-style: auto
    sound:
      name: BLOCK_NOTE_BLOCK_HAT
      volume: 1.0
      pitch: 1.4
      category: MASTER
  # match-found, round-won, round-lost, round-draw, match-won, match-lost y
  # training-complete son efectos de la misma forma.
 
match:
  formats: [1, 3, 5, 7]
  default-format: 3
  allow-even-formats: false
  round-delay: 3.0
  result-delay: 5.0
  duel-request-expiry: 30.0
  allowed-commands: [totem, tt, totemtrainer, msg, r, tell, w]
 
leaderboard:
  entries: 10
  cache-seconds: 300
 
history:
  entries: 20
  retention-days: 30
  prune-interval-minutes: 60
 
arena:
  max-matches-per-arena: 0
  return-location: ""
 
debug: false

training

ClavePor defectoQué hace
modesseis modosUn bloque por modo; una clave nueva es un modo nuevo, sin código. La clave es el id del modo que usan comandos, récords, tablas y placeholders. Los menús listan los modos en el orden del archivo. Ver Modos.
modes.<id>.display-nameLo que ven los jugadores. Admite tokens de paleta.
modes.<id>.totemsTótems mantenidos en ranuras aleatorias a la vez; el que explota vuelve en otra ranura. 0 entrega un inventario completo en su lugar.
modes.<id>.refillSolo modos de inventario completo: entregar otro inventario cuando se va el último tótem. false termina la sesión ahí.
modes.<id>.close-inventoryCierra el inventario de golpe tras cada pop, así que hay que volver a abrirlo antes de poder cambiar el siguiente tótem de mano.
modes.<id>.random-intervalausentemin-ticks y max-ticks. Cada intervalo se sortea dentro de la ventana, desplazada para que la velocidad elegida quede en su centro. max-ticks: 0 lo apaga, y el bloque se deja fuera del archivo.
modes.<id>.speed-upausenteevery golpes entre dos aceleraciones, by ticks que se quitan cada vez, min-ticks el suelo. by: 0 o every: 0 lo apaga, y el bloque se deja fuera.
modes.<id>.iconMaterial o cabeza usada en los menús.
modes.<id>.descriptionUna línea mostrada bajo el modo en los menús.
ticks[25, 20, 15, 10, 5]Los intervalos entre golpes que un jugador puede elegir. Cualquier otro valor se rechaza.
default-ticks20El intervalo usado cuando un comando lo omite y la primera vez que un jugador abre un selector.
countdown3.0Segundos antes del primer golpe, en entrenamiento y en cada ronda de duelo. 0 empieza al instante.

performance

ClavePor defectoQué hace
defaults0.25 / 0.40 / 0.60 / 0.90La reacción más lenta, en segundos, que todavía gana perfect, excellent, good y ok. Más lento que ok es slow.
by-ticksbloque "10"Sobrescrituras por intervalo de ticks, con el intervalo como texto por clave. Se mira primero.
by-modevacíoSobrescrituras por id de modo. Se mira después de by-ticks.
points100 / 85 / 70 / 50 / 25Puntos que vale cada calificación en la puntuación de 0 a 100.
fail-penalty15Puntos que se restan a la puntuación por cada fallo.
full-credit-pops20Pops que necesita una sesión para que su puntuación cuente entera; por debajo, la media se escala según lo que faltó. 0 puntúa la media sola.

Ver Calificación para la fórmula.

feedback

Cada entrada es un efecto de ExyliaLib: title, action-bar, boss-bar, sound, particle y firework, todos opcionales. Una subsección que no hace nada se deja fuera del archivo, y quitar una sección deja ese canal en silencio.

ClaveSe dispara cuandoPlaceholders
perfect, excellent, good, ok, slowUn pop ganó esa calificación. Cada una tiene un effect y una línea chat, vacía para ninguna.%grade% (PERFECT…), %reaction% en segundos, %pops%, %streak%
failNo había tótem en la mano cuando llegó un golpe.—
countdownLa cuenta atrás antes del primer golpe; el título y la action bar se refrescan con el tiempo que queda.%time%
match-foundAmbos duelistas llegaron a la arena.—
round-won, round-lostSe decidió una ronda.—
round-drawAmbos lados soltaron el tótem en el mismo tick; la ronda se repite.—
match-won, match-lostSe decidió el duelo.—
training-completeUn modo de inventario completo sin refill usó su último tótem.—

Las claves del efecto son las de ExyliaLib: title { text, subtitle, fade-in, stay, fade-out, time-style }, action-bar { text, duration, time-style }, sound { name, volume, pitch, category }. Ver la página de efectos de la librería para boss-bar, particle y firework.

match

ClavePor defectoQué hace
formats[1, 3, 5, 7]Longitudes de best-of ofrecidas en la pantalla de duelo y aceptadas por /totem duel.
default-format3La longitud usada cuando un comando la omite y la primera vez que un jugador abre el selector.
allow-even-formatsfalseSi las longitudes pares de formats se ofrecen o no.
round-delay3.0Segundos entre el fin de una ronda y la siguiente cuenta atrás.
result-delay5.0Segundos que el resultado se queda en pantalla antes de devolver a los dos jugadores.
duel-request-expiry30.0Segundos que una solicitud sigue abierta. Nunca menos de uno.
allowed-commands[totem, tt, totemtrainer, msg, r, tell, w]Etiquetas de comando que un jugador aún puede ejecutar mientras entrena o está en un duelo. Un prefijo plugin:comando se quita antes de comprobar.

leaderboard

ClavePor defectoQué hace
entries10Filas mostradas por tabla.
cache-seconds300Segundos que se guarda una tabla antes de volver a preguntar a la base de datos. Nunca menos de cinco.

history

ClavePor defectoQué hace
entries20Duelos mostrados a un jugador en /totem history.
retention-days30Los duelos más antiguos que esto se borran. 0 lo guarda todo.
prune-interval-minutes60Cada cuánto corre la limpieza. La primera pasada es un minuto después del arranque.

arena

ClavePor defectoQué hace
max-matches-per-arena0Duelos y sesiones en solitario simultáneos que aloja una arena. 0 es ilimitado.
return-locationvacíoAdónde se envía a un jugador al salir, como world,x,y,z o world,x,y,z,yaw,pitch. Vacío lo devuelve a donde estaba.

debug

false por defecto. true imprime líneas de depuración en la consola.

messages.yml

Cada línea que dice el plugin. %prefix% se expande al valor prefix de la cabecera del archivo, {primary}&lTOTEM &8•&r por defecto. Los colores son tokens de paleta, así que recolorear la red nunca significa editar este archivo; las etiquetas MiniMessage también funcionan, y la solicitud de duelo usa <click> y <hover> para sus botones Accept y Decline.

Una línea puede abrir con una etiqueta de efecto, que nunca llega a la pantalla: [sound:NAME|volume|pitch] reproduce un sonido a quien recibe la línea. Los valores por defecto usan tres de forma consistente: ENTITY_VILLAGER_NO para un rechazo, ENTITY_EXPERIENCE_ORB_PICKUP para algo que funcionó y BLOCK_NOTE_BLOCK_PLING para algo que pide atención.

SecciónContiene
no-permission, player-only, player-not-foundLos tres rechazos de comando.
reloadstarted, done (%steps%, %ms%), failed.
commonbusy, busy-elsewhere (%plugin%), busy-advice (%reason%), not-in-anything, left, command-blocked, y las palabras yes y no.
trainingstarted, stopped, completed, failed (%pops%), unknown-mode, unknown-ticks, y la lista summary, que conoce %mode%, %ticks%, %pops%, %fails%, %best%, %average%, %streak%, %score%, %duration%.
matchstarting, round-start (%round%, %rounds%), round-won, round-lost, round-draw, ready, opponent-ready, no-arena, unknown-format, cancelled, opponent-left, forfeited; la lista round-summary (%round%, %winner%, %pops%, %average%, %best%, %score%, %score_for%, %score_against%) y la lista match-summary (%winner%, %loser%, %score_winner%, %score_loser%, %format%, %mode%, %ticks%, %pops%, %best%, %average%, %duration%).
duelrequest-sent, la lista request-received (%player%, %mode%, %ticks%, %format%, %seconds%), accepted, expired, expired-sent, no-pending, target-busy, target-not-ready (%target%, %reason%), self-duel, denied, denied-by.
adminLo que confirman las pantallas de administración: arena creada, borrada, ya existe, no encontrada, renombrada, spawn puesto, activada, desactivada, duelo cancelado, estadísticas reiniciadas, cancelado.
menuPalabras que los menús necesitan y no son una línea entera: los títulos de victoria y derrota, none (—), loading, los textos de vacío de cada lista, las tres etiquetas de estado, reason-self, reason-busy, set, not-set, y categories.

menu.categories da nombre e icono a las cinco categorías de la tabla:

plugins/ExyliaTotemTrainer/messages.yml
menu:
  categories:
    rating:
      name: Rating
      icon: NETHER_STAR
    best_pops:
      name: Most pops
      icon: TOTEM_OF_UNDYING
    fastest_average:
      name: Fastest average
      icon: CLOCK
    best_streak:
      name: Best streak
      icon: BLAZE_POWDER
    longest_run:
      name: Longest run
      icon: FEATHER

scoreboards.yml

Dos sidebars, training y match, movidos por completo por placeholders. Ver Scoreboard.

Cada pantalla es un archivo YAML bajo menus/:

ArchivoPantalla
main.ymlEl hub que abre /totem.
training.ymlFilas de modo sobre el selector de ticks.
opponents.ymlQuién está conectado y libre para un duelo.
duel.ymlModo, velocidad y formato de una solicitud.
profile.yml, records.yml, history.ymlLos números de un jugador, sus mejores marcas por modo y velocidad, sus duelos recientes.
leaderboard_modes.yml, leaderboard.ymlEl selector de modos y la tabla de un modo.
result.ymlLa pantalla tras un duelo, con el botón de revancha.
admin/main.yml, admin/arenas.yml, admin/arena.yml, admin/duels.yml, admin/players.yml, admin/confirm.ymlLas pantallas de staff.

Los archivos de jugador se copian del jar una vez y luego se dejan en paz, así que tus ediciones sobreviven a una actualización. La carpeta admin/ se reescribe desde el jar en cada arranque, para que un botón añadido en una versión te llegue; nada que debas editar vive ahí.

Un archivo de menú roto no tumba el plugin

Un archivo que no se puede leer se informa en la consola con su ruta y el motivo, y esa única pantalla no abre hasta que se arregle. Todo lo demás sigue funcionando.

El formato es el YAML declarativo de menús de ExyliaLib; ver la página de menús de la librería. Las acciones de clic viven bajo el espacio totemtrainer, por ejemplo totemtrainer:open training.

database.yml

Lo escribe ExyliaLib la primera vez que arranca el plugin: H2 por defecto, con MySQL, MariaDB, PostgreSQL y MongoDB como alternativas. Arenas, perfiles, récords de entrenamiento e historial de duelos viven ahí. Ver la página de base de datos de la librería.

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