Content generated with AI — it may contain mistakes.

Configuring

Modes

The six shipped modes, the four choices each one is made of, and how to write a seventh.

A mode is not a name the code knows. It is a set of choices under training.modes in config.yml: how totems are handed out, whether the interval between hits is drawn from a window, whether the inventory is shut after every pop, and whether it speeds up as the session goes on. The six shipped modes are those choices and nothing else, which makes them the reference for any mode you add.

The four choices

KeyWhat it decides
totems, refillHow the inventory is stocked. totems above zero keeps that many totems in random slots; 0 hands out a full inventory, and refill says whether it is handed out again when it runs out.
close-inventoryThe inventory screen is slammed shut after every pop, so it has to be opened again before the next totem can be swapped in.
random-intervalEvery interval is drawn from a window between min-ticks and max-ticks instead of kept fixed.
speed-upEvery every hits the interval loses by ticks, never going below min-ticks.
Two optional blocks

random-interval and speed-up are left out of the file when they do nothing — a window with max-ticks: 0, a speed-up with by: 0 or every: 0. Add either block to any mode, or both: a mode that both drifts and accelerates is a block away.

The shipped modes

Modetotemsrefillclose-inventoryrandom-intervalspeed-up
normal0nono——
infinite0yesno——
random1—no——
chaos1—no10..30—
acceleration3—no—−5 every 10, down to 5
blackout0yesyes——

As written in the generated file:

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

How each choice behaves

Stocked: totems above zero

The mode keeps exactly that many totems in the 36 slots of the main inventory, each in an empty slot drawn at random. The slot being held is never used: a totem landing there would already be in the hand, and the reaction would be zero. One tick after a pop the inventory is topped back up to the configured count, so a stocked mode never runs out — it ends only when the player misses.

Full inventory: totems: 0

All 36 slots are filled at the start, the off hand stays empty and the held slot is set to the first hotbar slot, so the player already holds the totem the first hit pops. When the last totem is gone:

  • refill: true fills every slot but the held one again, and the session goes on until a miss.
  • refill: false completes the session there. The player sees the training-complete effect and the summary; in a duel, both sides finishing this way decides the round on their numbers (see Duels).

Inventory shut on every pop

close-inventory: true shuts the inventory screen the moment a totem pops. Anything held on the cursor is cleared as it closes, so no totem is left on the floor; the inventory has just been refilled anyway. Opening the screen again is part of the drill, and the reaction is still measured from the hit to the next totem reaching a hand, so the time it takes counts. blackout is that choice on top of a refilled full inventory.

Random interval

Every interval is drawn from min-ticks..max-ticks, shifted so the speed the player picked sits at the centre of the window. chaos is 10..30: on a 25-tick session it draws from 15..35, on a 10-tick session from 1..20, since the window never goes below one tick. That shift is what keeps a picked speed meaning the same thing in every mode.

Speed-up

After every every hits the interval loses by ticks, never below min-ticks:

interval = max(min-ticks, ticks − floor(hits / every) × by)

acceleration at 20 ticks runs at 20 for the first ten hits, then 15, then 10, then 5, and stays at 5. The interval placeholder, %exyliatotemtrainer_interval%, and the sidebar follow the current interval.

The two blocks compose: with both, the window follows the sped-up interval. The draws come from a random stream seeded per session, so both sides of a duel are dealt the same sequence of intervals.

Adding a mode

A new key under modes is a new mode. Nothing else is needed: menus, records, leaderboards and placeholders are keyed by the mode id.

plugins/ExyliaTotemTrainer/config.yml
training:
  modes:
    storm:
      display-name: Storm
      totems: 2
      refill: false
      random-interval:
        min-ticks: 8
        max-ticks: 24
      speed-up:
        every: 8
        by: 2
        min-ticks: 4
      icon: LIGHTNING_ROD
      description: Two totems, drifting timing, and it only gets faster.
KeyWhat it is
The key itself (storm)The mode id: what /totem train storm takes, what records and leaderboards are filed under, and what %exyliatotemtrainer_top_storm_rating_1% names.
display-nameWhat players read in menus, messages and the sidebar. Palette tokens allowed.
iconThe menu row's item: a material name, or a head written the way the menu files write one (playerhead-<name>, basehead-<base64>).
descriptionOne line shown under the mode in menus.

Menus list modes in the order the file does. The rule line under each mode — "One totem, random slot", "Full inventory, refilled", "10-30 ticks", "Inventory shuts on every pop", "-5 ticks every 10, down to 5" — is built from the numbers, so a mode you invent describes itself.

Renaming a mode id

Records and leaderboards are keyed by the id. A renamed key starts empty, and the old rows stay in the database under the old id. Rename the display-name instead when only the wording has to change.

Speeds and countdown

KeyDefaultWhat it does
training.ticks[25, 20, 15, 10, 5]The intervals a player may pick, in ticks. Anything else is refused, on the command too.
training.default-ticks20The interval used by /totem train <mode> without a number, and the picker's first selection. Keep it in the list above.
training.countdown3.0Seconds before the first hit, in training and before every duel round. 0 starts at once.

The picker remembers the speed each player last chose. If that speed is later removed from training.ticks, the default applies instead.

Something missing on this page? Tell us on Discord