Skip to content

Playlists

Quick Start: Host a tournament.

  • Playlists live in advanced/playlists.yml and generate with six defaults: standard and ranked 1v1, 2v2, and 4v4.
  • Each id carries a GUI icon, a physical pad block, a mode (STANDARD or RANKED), and a composition with both team sizes (minimum 1 each). Bad materials and modes warn and fall back; blank ids are skipped.
  • /manhunt reload re-reads the file: new joins see new definitions while running instances finish on theirs.

Quick Start (5 minutes)

  1. Set multilobbies.use-pads to true so the physical pads work.
  2. Keep three standard playlists (standard-1v1, standard-2v2, standard-4v4); give each its own pad block.
  3. Place those three blocks as pads in the lobby.
  4. Run /manhunt reload and open the browser from the toolbar.

That is a working queue: pads join, the browser lists, Any fills whatever is closest, and matches start on full plus the countdown. Add the ranked trio when you want the ladder too: Set up ranked play walks the setup, and the tuning below takes it from there.

Global ids and lobby overrides

  • multilobbies.playlists holds the global ids every lobby shares. A lobby adds its own ids through multilobbies.playlists.<id> dotted overrides in its lobby config; globals resolve first in file order, then lobby-owned ids in override order.
  • A lobby id that shadows a global id resolves to the global definition and logs one SEVERE per lobby plus id per load on first join-or-leave use, so rename one side to silence it.

Queue behavior (multilobbies)

Key Default Meaning
use-pads false Physical playlist pads join queues. Playlists stay available through the browser either way.
countdown 10 Seconds after an instance fills, cancellable like standard AutoStart.
reminder-interval 120 Seconds between players-still-needed prompts to queued players.
broadcast-interval 90 Seconds between server-wide playlist-needs-players broadcasts.
hide-queued-rankeds true Obfuscate names in ranked join/leave queue messages.

Quick Match (quickmatch)

Key Default Meaning
enabled true Master switch for both categories.
timeout 600 Seconds before a queue attempt leaves with the timeout message.
rejoin-delay 3 Seconds between leaving a match and the next resolve.
skip-duration 15 Seconds a double-shifted match or playlist stays out of candidates.
expand-after 20 Seconds before Any-mode opens a fresh queue of the best fit. Burned once a player double-shifts out of it.
global-search.enabled true Consider other lobbies once the delay passes.
global-search.after 60 Seconds before other lobbies join the candidate set. Specific playlists always search globally; Any-mode attaches or migrates only to closer fits.

Standard queues assign sides by role weight (LuckPerms jmh-role-weight meta pulling toward each player's Role Preference); ranked queues assign uniform and ignore weights. See LuckPerms.

Ranked (ranked)

Key Default Meaning
enabled true Master switch for the ranked category and its gates; turning it off stops every ranked queue and cancels running ranked matches at once.
season-length-days 90 Days per season. Season 1 starts when ranked is first enabled (logged with its timestamp); rollover archives every rating into history and resets the live ladder to start-elo. Past seasons stay readable for history and placeholders.
start-mode START_ELO START_ELO grants start-elo at once; PLACEMENT_MATCHES hides the number until placement ends.
start-elo 300 Internal elo for players with no ranked games this season.
placement-matches 3 Games hiding the number as Unranked in placement mode (1-20); the engine still uses it.
decisive-ladder true Clamp gains so rank boundaries cross only on exact decisive matches.
show-elo-in-tab true Mirror season elo into the vanilla tab-list number slot (Unranked shows 0).
ranks [0, 500, 700, 1000, 1400, 1800, 2300] Rank thresholds, strictly increasing; the last met rank wins. Names and colors live in the ranked.ranks lang section.
show-elo-suffix true Append the elo suffix to ranked display names.
elo-suffix " <gray>[{rank}<gray>]<white>" Suffix format; {rank} is the colored rank name.
gap-scale 750 Elo gap scaling the skill term (100-2000).
gap-strength 1.0 Skill-gap weight, 0-1 (0 disables it).
size-strength 0.5 Team-size weight correction, 0-1 (0 disables it).
auto-weights true Tune runner/hunter base weights from finished ranked matches.
auto-weights-min-games 10 Finished ranked matches before the tuner engages.
auto-weights-window 200 Matches kept for the tuner; oldest entries delete past this.
auto-weights-half-life 50 Matches for a stored result's recency weight to halve.
matchmaking.elo-range-steps [100, 150, 200, 300, 450, 700, 1000, -1] Party-to-match average window per step; -1 is unlimited.
matchmaking.elo-range-interval 75 Seconds per step.
round-robin-elo-scale auto Tournament round-robin per-match delta scale, 0.01-1.0; auto normalizes a perfect run to about one bracket title of the same size.

A playlist can also run as a tournament: Best-of, brackets, round-robin, or bracketed Best-of-N with a pooled ranked ledger. See the tournament keys on the playlist itself.

Ladder math

Rule Behaviour
K32 moves Decided matches move every member K32. Base chances come from the size-shaped weights (runners win 1 in 3 at even sides); skill-gap odds scale with the team average gap; draws split the point; ratings floor at zero.
Decisive ladder Gains stop one below the next rank and losses stop on the rank floor unless the match starts exactly one point away.
Persistence The ladder lives in the jmanhunt_elo table on the stats database. Disabling statistics unwires it: gates read start-elo and standings read empty until statistics return.

Match flow

  • Admins flip the switch live with /manhunt ranked <enable|disable|status> (Commands).
  • Lobbies pick a side with lobby-mode in settings/world-engine/lobby-config.yml: CLASSIC serves the standard playlists, RANKED serves ranked ones only (anything else reads as classic), and ranked lobbies show a Ranked tag on their switcher entry.
  • Every ranked participant sees a RANKED INFO block at match start: a decisive line when one point decides their rank, plus the Change bullet with the predicted loss, current elo, and predicted gain (PROMOTION or DEMOTION on decisive elos).
  • At match end each member gets exactly one feedback message plus one anvil cue 0.2 seconds out: gains landing one below the next rank and losses landing on the floor announce the decisive next match, everything else reports the plain change. The end bullets detail the new elo with the next threshold, plus the promotion or demotion line when the rank changed. All strings live under ranked in the lang files; the cues are the game.ranked-* sounds. While the cinematic tail counts 3-2-1, ranked viewers see the same Change line as the number subtitle.

Auto-weights tuner

  • Refits the runner weight per playlist from finished ranked matches: recent results weigh most (halving every auto-weights-half-life matches), samples recorded under a different mods fingerprint count fifth, and the fitted weight only engages past auto-weights-min-games sampled matches.
  • Samples survive seasons and clear only through /manhunt ranked resetweights <playlist> or the Ranked weights panel (/manhunt playlists weights), which reports each playlist's sampled games, fitted weight, and confidence.

Parties (parties)

Key Default Meaning
max-size 4 Largest party, leader included.
ranked-rank-limit true When true, every member must sit within one rank step of the leader to queue ranked.
  • Parties persist across relogs and disband when the last member leaves. The leader queues the whole party at once: members are pulled to the leader's lobby, every member must be online and queueable, and parties that fit no side are refused up front instead of searching silently.
  • Leaving, kicking, disconnecting, or stepping off mid-queue evicts just that member; joining a party is refused while either side holds a queue attempt. See Commands for the /manhunt party verbs.

Browser (browser)

  • standard-icon (IRON_SWORD) and ranked-icon (GOLDEN_AXE) dress the two category buttons; the Any entries and playlist buttons take their icons and pad blocks from advanced.lobbies.role-pads.blocks.quickmatch-standard (WHITE_CONCRETE) and quickmatch-ranked (ORANGE_CONCRETE), overridable per lobby. Malformed values warn once and fall back to the defaults.

Admin

  • /manhunt playlists opens the scrolling admin list; the trailing stick drafts a new playlist through the id and pad block dialogs, click entries to edit, and every save writes advanced/playlists.yml at once. See Commands for the editor layout.
  • Per-playlist headcounts ride the playlist placeholders; per-playlist names and descriptions live under multilobbies.playlists.<id> in the messages files.
  • The per-playlist mode flips in the admin GUI mode field or with /manhunt playlists mode <id> <ranked|standard>. The master switch is CLI-only (/manhunt ranked enable|disable) because disabling cancels live ranked matches at once; tuning constants (seasons, ranks, strengths, auto-weights, matchmaking) live in advanced/playlists.yml and re-read on /manhunt reload.