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
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: falsetraining
| Clave | Por defecto | Qué hace |
|---|---|---|
modes | seis modos | Un 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-name | Lo que ven los jugadores. Admite tokens de paleta. | |
modes.<id>.totems | Tó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>.refill | Solo modos de inventario completo: entregar otro inventario cuando se va el último tótem. false termina la sesión ahí. | |
modes.<id>.close-inventory | Cierra 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-interval | ausente | min-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-up | ausente | every 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>.icon | Material o cabeza usada en los menús. | |
modes.<id>.description | Una 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-ticks | 20 | El intervalo usado cuando un comando lo omite y la primera vez que un jugador abre un selector. |
countdown | 3.0 | Segundos antes del primer golpe, en entrenamiento y en cada ronda de duelo. 0 empieza al instante. |
performance
| Clave | Por defecto | Qué hace |
|---|---|---|
defaults | 0.25 / 0.40 / 0.60 / 0.90 | La reacción más lenta, en segundos, que todavía gana perfect, excellent, good y ok. Más lento que ok es slow. |
by-ticks | bloque "10" | Sobrescrituras por intervalo de ticks, con el intervalo como texto por clave. Se mira primero. |
by-mode | vacío | Sobrescrituras por id de modo. Se mira después de by-ticks. |
points | 100 / 85 / 70 / 50 / 25 | Puntos que vale cada calificación en la puntuación de 0 a 100. |
fail-penalty | 15 | Puntos que se restan a la puntuación por cada fallo. |
full-credit-pops | 20 | Pops 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.
| Clave | Se dispara cuando | Placeholders |
|---|---|---|
perfect, excellent, good, ok, slow | Un 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% |
fail | No había tótem en la mano cuando llegó un golpe. | — |
countdown | La cuenta atrás antes del primer golpe; el título y la action bar se refrescan con el tiempo que queda. | %time% |
match-found | Ambos duelistas llegaron a la arena. | — |
round-won, round-lost | Se decidió una ronda. | — |
round-draw | Ambos lados soltaron el tótem en el mismo tick; la ronda se repite. | — |
match-won, match-lost | Se decidió el duelo. | — |
training-complete | Un 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
| Clave | Por defecto | Qué hace |
|---|---|---|
formats | [1, 3, 5, 7] | Longitudes de best-of ofrecidas en la pantalla de duelo y aceptadas por /totem duel. |
default-format | 3 | La longitud usada cuando un comando la omite y la primera vez que un jugador abre el selector. |
allow-even-formats | false | Si las longitudes pares de formats se ofrecen o no. |
round-delay | 3.0 | Segundos entre el fin de una ronda y la siguiente cuenta atrás. |
result-delay | 5.0 | Segundos que el resultado se queda en pantalla antes de devolver a los dos jugadores. |
duel-request-expiry | 30.0 | Segundos 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
| Clave | Por defecto | Qué hace |
|---|---|---|
entries | 10 | Filas mostradas por tabla. |
cache-seconds | 300 | Segundos que se guarda una tabla antes de volver a preguntar a la base de datos. Nunca menos de cinco. |
history
| Clave | Por defecto | Qué hace |
|---|---|---|
entries | 20 | Duelos mostrados a un jugador en /totem history. |
retention-days | 30 | Los duelos más antiguos que esto se borran. 0 lo guarda todo. |
prune-interval-minutes | 60 | Cada cuánto corre la limpieza. La primera pasada es un minuto después del arranque. |
arena
| Clave | Por defecto | Qué hace |
|---|---|---|
max-matches-per-arena | 0 | Duelos y sesiones en solitario simultáneos que aloja una arena. 0 es ilimitado. |
return-location | vacío | Adó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ón | Contiene |
|---|---|
no-permission, player-only, player-not-found | Los tres rechazos de comando. |
reload | started, done (%steps%, %ms%), failed. |
common | busy, busy-elsewhere (%plugin%), busy-advice (%reason%), not-in-anything, left, command-blocked, y las palabras yes y no. |
training | started, stopped, completed, failed (%pops%), unknown-mode, unknown-ticks, y la lista summary, que conoce %mode%, %ticks%, %pops%, %fails%, %best%, %average%, %streak%, %score%, %duration%. |
match | starting, 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%). |
duel | request-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. |
admin | Lo 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. |
menu | Palabras 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:
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: FEATHERscoreboards.yml
Dos sidebars, training y match, movidos por completo por placeholders. Ver
Scoreboard.
menus/
Cada pantalla es un archivo YAML bajo menus/:
| Archivo | Pantalla |
|---|---|
main.yml | El hub que abre /totem. |
training.yml | Filas de modo sobre el selector de ticks. |
opponents.yml | Quién está conectado y libre para un duelo. |
duel.yml | Modo, velocidad y formato de una solicitud. |
profile.yml, records.yml, history.yml | Los números de un jugador, sus mejores marcas por modo y velocidad, sus duelos recientes. |
leaderboard_modes.yml, leaderboard.yml | El selector de modos y la tabla de un modo. |
result.yml | La 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.yml | Las 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 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