Placeholders¶
Quick Start: Connect your other plugins.
JManhunt provides built-in PlaceholderAPI identifiers. All
placeholders must be used with the prefix %jmanhunt_<placeholder>%
(e.g. %jmanhunt_career_kills%, %jmanhunt_live_phase_0%).
Career, current-match, compass, and ranked viewer keys resolve
for the viewer PlaceholderAPI passes; match, lobby, live,
leaderboard, player-lookup, global, playlist, and the ranked
season and leaderboard keys work player-less (they resolve for
console and sign lines too).
Trailing-id keys take the match id (%jmanhunt_match_winner_7%), the
lobby id (%jmanhunt_live_phase_0%), a playlist id
(%jmanhunt_playlist_queued_standard-1v1%, lowercase), or a match id
plus a uuid or player name
(%jmanhunt_match_player_kills_7_Steve%, names match
case-insensitively). Leaderboard cells take a rank
(%jmanhunt_top_kills_1_name%, ranks start at 1), and player
lookups take a uuid or player name
(%jmanhunt_player_kills_Steve%). Ranked season keys take a
season number (%jmanhunt_ranked_season_1%) and the ranked board
takes a rank (%jmanhunt_ranked_top_1%, names at
%jmanhunt_ranked_top_1_name%, ranks start at 1).
When a lobby runs sub-lobbies, the first sub-lobby with a
running game answers the live keys.
Every value reads from memory: unknown match ids resolve empty and
warm the history cache in the background, so a second read finds
them. Outside a match, current-match numbers resolve -1 and texts
resolve empty; scores shown through placeholders never go below 0.
Leaderboards refresh when a match ends (career only changes there),
so holograms never trigger database reads; kdr boards only rank
players with enough matches played
(statistics.leaderboards.min-matches, default 3). Keys marked
free resolve in both editions; unmarked keys resolve empty in
the free edition.
Career¶
The viewer's lifetime totals, kept in the statistics database across restarts. KDR is kills over deaths (2dp); win rate is wins over matches as a bare percent (1dp, no sign so values stay PAPI-safe).
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_career_score% free |
LONG | Career total match score. |
%jmanhunt_career_score_as_hunter% |
LONG | Career match score earned as a hunter. |
%jmanhunt_career_score_as_runner% |
LONG | Career match score earned as a runner. |
%jmanhunt_career_mvps% free |
INTEGER | Career MVP awards. |
%jmanhunt_career_mvps_as_hunter% |
INTEGER | Career MVP awards earned as a hunter. |
%jmanhunt_career_mvps_as_runner% |
INTEGER | Career MVP awards earned as a runner. |
%jmanhunt_career_kills% free |
INTEGER | Career kills. |
%jmanhunt_career_kills_as_hunter% |
INTEGER | Career kills while a hunter. |
%jmanhunt_career_kills_as_runner% |
INTEGER | Career kills while a runner. |
%jmanhunt_career_deaths% free |
INTEGER | Career deaths. |
%jmanhunt_career_deaths_as_hunter% |
INTEGER | Career deaths while a hunter. |
%jmanhunt_career_deaths_as_runner% |
INTEGER | Career deaths while a runner. |
%jmanhunt_career_kdr% free |
DECIMAL | Career kills over deaths, 2dp. |
%jmanhunt_career_kdr_as_hunter% |
DECIMAL | Career hunter kills over deaths, 2dp. |
%jmanhunt_career_kdr_as_runner% |
DECIMAL | Career runner kills over deaths, 2dp. |
%jmanhunt_career_final_kills% |
INTEGER | Career final kills. |
%jmanhunt_career_damage% |
DECIMAL | Career damage dealt in hearts. |
%jmanhunt_career_wins% free |
INTEGER | Career wins. |
%jmanhunt_career_wins_as_hunter% |
INTEGER | Career wins as a hunter. |
%jmanhunt_career_wins_as_runner% |
INTEGER | Career wins as a runner. |
%jmanhunt_career_matches% free |
INTEGER | Career matches played as a participant. |
%jmanhunt_career_matches_as_hunter% |
INTEGER | Career matches played as a hunter. |
%jmanhunt_career_matches_as_runner% |
INTEGER | Career matches played as a runner. |
%jmanhunt_career_playtime% free |
LONG | Career playtime in milliseconds. |
%jmanhunt_career_playtime_as_hunter% |
LONG | Career hunter playtime in milliseconds. |
%jmanhunt_career_playtime_as_runner% |
LONG | Career runner playtime in milliseconds. |
%jmanhunt_career_playtime_formatted% free |
TEXT | Career playtime formatted as days, hours, minutes, seconds. |
%jmanhunt_career_playtime_formatted_as_hunter% |
TEXT | Career hunter playtime formatted as days, hours, minutes, seconds. |
%jmanhunt_career_playtime_formatted_as_runner% |
TEXT | Career runner playtime formatted as days, hours, minutes, seconds. |
%jmanhunt_career_win_streak% |
INTEGER | Career current win streak. |
%jmanhunt_career_best_win_streak% |
INTEGER | Career best win streak. |
%jmanhunt_career_win_rate% free |
DECIMAL | Career wins over matches as a percent, 1dp. |
%jmanhunt_career_win_rate_as_hunter% |
DECIMAL | Career hunter wins over hunter matches as a percent, 1dp. |
%jmanhunt_career_win_rate_as_runner% |
DECIMAL | Career runner wins over runner matches as a percent, 1dp. |
%jmanhunt_career_role% free |
TEXT | Player's current role with its configured color. |
%jmanhunt_career_cosmetics_owned% |
INTEGER | Cosmetics the viewer owns, ranks and admin included. |
%jmanhunt_career_cosmetics_obtainable% |
INTEGER | Cosmetics the viewer may unlock with their permissions. |
%jmanhunt_career_xp% |
TEXT | Viewer's lifetime XP, crunched and grouped with the suffix. |
%jmanhunt_career_xp_level% |
INTEGER | Viewer's XP level. |
%jmanhunt_career_xp_to_next% |
TEXT | XP still needed for the next level, formatted with the suffix. |
%jmanhunt_career_rank_score% |
INTEGER | Viewer's rank on the match-score leaderboard, -1 when unranked. |
%jmanhunt_career_rank_kills% |
INTEGER | Viewer's rank on the kills leaderboard, -1 when unranked. |
%jmanhunt_career_rank_wins% |
INTEGER | Viewer's rank on the wins leaderboard, -1 when unranked. |
%jmanhunt_career_rank_playtime% |
INTEGER | Viewer's rank on the playtime leaderboard, -1 when unranked. |
%jmanhunt_career_last_match_id% free |
LONG | Viewer's most recent match id, 0 when they never played. |
%jmanhunt_career_damage_taken% |
DECIMAL | Career damage taken in hearts. |
%jmanhunt_career_damage_as_hunter% |
DECIMAL | Career damage dealt as a hunter in hearts. |
%jmanhunt_career_damage_as_runner% |
DECIMAL | Career damage dealt as a runner in hearts. |
%jmanhunt_career_final_kills_as_hunter% |
INTEGER | Career final kills while a hunter. |
%jmanhunt_career_final_kills_as_runner% |
INTEGER | Career final kills while a runner. |
Current Match¶
The viewer's live match. Numbers resolve -1 outside a match,
texts resolve empty. match_mvp names the live score leader during
the match and the official MVP once the match finalizes; winner and
leaders stay empty until the match ends.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_match_score% free |
INTEGER | Viewer's live match score, at minimum 0, -1 outside a match. |
%jmanhunt_match_kills% free |
INTEGER | Viewer's kills this match, -1 outside a match. |
%jmanhunt_match_deaths% free |
INTEGER | Viewer's deaths this match, -1 outside a match. |
%jmanhunt_match_kdr% free |
DECIMAL | Viewer's kills over deaths this match, 2dp. |
%jmanhunt_match_damage% |
DECIMAL | Viewer's damage dealt this match in hearts. |
%jmanhunt_match_damage_taken% |
DECIMAL | Viewer's damage taken this match in hearts. |
%jmanhunt_match_role% free |
TEXT | Viewer's match role with its configured color. |
%jmanhunt_match_id% free |
LONG | Viewer's match id, -1 outside a match. |
%jmanhunt_match_duration% free |
LONG | Running match duration in milliseconds. |
%jmanhunt_match_duration_formatted% free |
TEXT | Running match duration, formatted. |
%jmanhunt_match_mvp% free |
TEXT | Current score leader during the match, the official MVP once finalized. |
%jmanhunt_match_mvp_score% |
INTEGER | Current top score during the match, the MVP score once finalized. |
%jmanhunt_match_winner% free |
TEXT | Winning team once decided, empty before that. |
%jmanhunt_match_leader_hunter% free |
TEXT | Hunter leader once finalized, empty before that. |
%jmanhunt_match_leader_runner% free |
TEXT | Runner leader once finalized, empty before that. |
%jmanhunt_match_players% free |
INTEGER | Live participants in the viewer's match. |
%jmanhunt_match_hunters% free |
INTEGER | Live hunters in the viewer's match. |
%jmanhunt_match_runners% free |
INTEGER | Live runners in the viewer's match. |
%jmanhunt_match_spectators% |
INTEGER | Online spectators assigned to the match. |
%jmanhunt_match_hunter_score% |
INTEGER | Live hunter match score in the viewer's match, -1 outside a match. |
%jmanhunt_match_runner_score% |
INTEGER | Live runner match score in the viewer's match, -1 outside a match. |
%jmanhunt_match_hunter_kills% |
INTEGER | Live hunter kills in the viewer's match, -1 outside a match. |
%jmanhunt_match_runner_kills% |
INTEGER | Live runner kills in the viewer's match, -1 outside a match. |
%jmanhunt_match_composition% |
TEXT | Live composition as AvB, the viewer's team first, empty outside a match. |
%jmanhunt_match_composition_runners% |
INTEGER | Live runners in the viewer's match, -1 outside a match. |
%jmanhunt_match_composition_hunters% |
INTEGER | Live hunters in the viewer's match, -1 outside a match. |
%jmanhunt_match_playlist% free |
TEXT | Viewer's queued or live playlist id, empty when neither. |
%jmanhunt_match_playlist_name% free |
TEXT | Viewer's queued or live playlist display name in their language, the id when unnamed, empty when neither. |
%jmanhunt_match_eliminations% free |
INTEGER | Viewer's final kills this match, -1 outside a match. |
%jmanhunt_match_elo_change_win% |
TEXT | Cached ranked win delta for the live match, sign-prefixed and colored, 0 outside ranked. |
%jmanhunt_match_elo_change_lose% |
TEXT | Cached ranked loss delta for the live match, sign-prefixed and colored, 0 outside ranked. |
%jmanhunt_match_mode% |
TEXT | Viewer's match mode in their language (Classic or Ranked), empty outside a match. |
Compass¶
The viewer's tracking compass, as of its last render. Distance is
the same whole meters the actionbar shows, with no suffix; target
fields stay empty unless the needle tracks a live player
(TRACKING) or a last-seen location (LAST_SEEN). Outside a match,
or before the first render, distance resolves -1, flags resolve
false, state resolves NO_TARGET, and the rest resolve empty.
Reason ids come from the signal interference options
(light-level, underground, underwater, altitude, weather,
biome, moved, line-of-sight, line-of-sight-hidden,
invisible, low-health, hungry, low-exp-level); a reasonless
cache signal reports an empty reason and side. Modifiers read these
through <placeholder:compass_distance> and friends.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_compass_distance% free |
INTEGER | Viewer's compass distance in whole meters, no suffix, -1 when not tracking. |
%jmanhunt_compass_target% free |
TEXT | Viewer's tracked compass target name, empty when not tracking. |
%jmanhunt_compass_locked% free |
TEXT | Whether the viewer's compass keeps a manual lock: true or false. |
%jmanhunt_compass_bad_signal% free |
TEXT | Whether the viewer's last compass render was a bad signal: true or false. |
%jmanhunt_compass_state% |
TEXT | Viewer's compass state: TRACKING, LAST_SEEN, NEARBY, TOO_FAR, BAD_SIGNAL, or NO_TARGET. |
%jmanhunt_compass_last_seen% |
TEXT | Whether the viewer's compass tracks a last-seen location: true or false. |
%jmanhunt_compass_teammate_mode% |
TEXT | Whether the viewer tracks teammates instead of enemies: true or false. |
%jmanhunt_compass_bad_signal_reason% |
TEXT | Viewer's last compass interference reason id, empty on a good signal. |
%jmanhunt_compass_bad_signal_side% |
TEXT | Failing side of the viewer's last bad signal: SELF or TARGET, empty on a good signal. |
%jmanhunt_compass_target_uuid% |
TEXT | Viewer's tracked compass target uuid, empty when not tracking. |
%jmanhunt_compass_target_role% |
TEXT | Viewer's tracked compass side with its configured color. |
Match By Id¶
One stored match, addressed by match id. Works player-less. The spectator peak is the highest that roster reached during the match; role counts read through the composition keys instead.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_match_winner_<id>% |
TEXT | Winning team of the match, empty when none. |
%jmanhunt_match_end_reason_<id>% |
TEXT | How the match ended: FINISHED or the cancel reason. |
%jmanhunt_match_duration_<id>% |
LONG | Match duration in milliseconds. |
%jmanhunt_match_mvp_<id>% |
TEXT | MVP name, empty when no MVP was picked. |
%jmanhunt_match_mvp_score_<id>% |
INTEGER | MVP score, -1 when no MVP was picked. |
%jmanhunt_match_score_<id>% |
LONG | Combined match score of every participant. |
%jmanhunt_match_kills_<id>% |
INTEGER | Total kills in the match. |
%jmanhunt_match_hunter_kills_<id>% |
INTEGER | Kills by hunters in the match. |
%jmanhunt_match_runner_kills_<id>% |
INTEGER | Kills by runners in the match. |
%jmanhunt_match_deaths_<id>% |
INTEGER | Total deaths in the match. |
%jmanhunt_match_hunter_deaths_<id>% |
INTEGER | Deaths by hunters in the match. |
%jmanhunt_match_runner_deaths_<id>% |
INTEGER | Deaths by runners in the match. |
%jmanhunt_match_leader_hunter_<id>% |
TEXT | Hunter leader name, empty when none was picked. |
%jmanhunt_match_leader_runner_<id>% |
TEXT | Runner leader name, empty when none was picked. |
%jmanhunt_match_peak_spectators_<id>% |
INTEGER | Highest spectator count reached in the match. |
%jmanhunt_match_composition_<id>% |
TEXT | Stored match composition as runners-vs-hunters. |
%jmanhunt_match_composition_runners_<id>% |
INTEGER | Runner count in the stored match. |
%jmanhunt_match_composition_hunters_<id>% |
INTEGER | Hunter count in the stored match. |
%jmanhunt_match_playlist_<id>% free |
TEXT | Playlist id that started the match, empty when none. |
%jmanhunt_match_modifiers_<id>% |
INTEGER | Enabled modifiers when the match ended. |
%jmanhunt_match_lobby_<id>% |
INTEGER | Lobby id the match ran in. |
One participant's row, addressed by match id plus uuid or player name:
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_match_player_score_<id>_<who>% |
INTEGER | One player's match score. |
%jmanhunt_match_player_kills_<id>_<who>% |
INTEGER | One player's match kills. |
%jmanhunt_match_player_deaths_<id>_<who>% |
INTEGER | One player's match deaths. |
%jmanhunt_match_player_kdr_<id>_<who>% |
DECIMAL | One player's match kills over deaths, 2dp. |
%jmanhunt_match_player_role_<id>_<who>% |
TEXT | One player's match role with its configured color. |
%jmanhunt_match_player_damage_<id>_<who>% |
DECIMAL | One player's match damage dealt in hearts. |
%jmanhunt_match_player_is_mvp_<id>_<who>% |
TEXT | Whether the player was the match MVP: true or false. |
Lobby And Live¶
Per-lobby aggregates plus the lobby's live match, addressed by lobby
id. Works player-less. Live counts fall back to 0 when idle,
missing times to -1, and phase to LOBBY.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_lobby_name_<id>% free |
TEXT | Display name of the lobby in the viewer's language, or Lobby N when unset. |
%jmanhunt_lobby_players_<id>% |
INTEGER | Players in the lobby plus in its matches, combined. |
%jmanhunt_lobby_match_players_<id>% |
INTEGER | Players currently playing matches inside the lobby. |
%jmanhunt_lobby_score_<id>% |
LONG | Lobby lifetime match score. |
%jmanhunt_lobby_matches_<id>% |
LONG | Recorded matches for the lobby. |
%jmanhunt_lobby_sessions_started_<id>% |
INTEGER | Sessions started for the lobby since restart. |
%jmanhunt_lobby_current_matches_<id>% |
INTEGER | Running matches for the lobby. |
%jmanhunt_lobby_last_match_id_<id>% free |
LONG | Most recent match id in the lobby, 0 when none. |
%jmanhunt_live_duration_<id>% free |
LONG | Running match duration in milliseconds, -1 when idle. |
%jmanhunt_live_hunters_<id>% free |
INTEGER | Live hunters in the lobby's match. |
%jmanhunt_live_runners_<id>% free |
INTEGER | Live runners in the lobby's match. |
%jmanhunt_live_players_<id>% free |
INTEGER | Live participants in the lobby's match. |
%jmanhunt_live_spectators_<id>% free |
INTEGER | Online spectators assigned to the match. |
%jmanhunt_live_phase_<id>% free |
TEXT | Lobby match phase: LOBBY, PRESTART, IN_PROGRESS, or ENDED (names configurable in placeholders.yml). |
%jmanhunt_live_modifiers_<id>% |
TEXT | Lobby overrides when present, else globals, as an mh-status style Oxford list. |
%jmanhunt_live_modifier_<n>_<id>% |
TEXT | Nth match-broadcast line of the lobby's effective mods (1-based, no limit), --- when absent. |
%jmanhunt_live_modifier_flat_<n>_<id>% paid |
TEXT | Nth match-broadcast line with presets flattened to their member mods (1-based, no limit), --- when absent. |
%jmanhunt_live_modline_<id>_<mod>% paid |
TEXT | Match-broadcast line for one mod or preset id in the lobby, --- when it broadcasts nothing there. |
%jmanhunt_live_time_remaining_<id>% |
LONG | Survive clock left in milliseconds, -1 when none runs. |
%jmanhunt_live_time_remaining_formatted_<id>% |
TEXT | Survive clock left, formatted; -1 when none runs. |
%jmanhunt_live_hunter_kills_<id>% |
INTEGER | Live hunter kills in the lobby's match, -1 when idle. |
%jmanhunt_live_runner_kills_<id>% |
INTEGER | Live runner kills in the lobby's match, -1 when idle. |
Playlists¶
Queue headcounts per playlist id, across every lobby. Works
player-less. Unknown ids read zero (IDLE for the state word).
Appending a lobby id scopes a metric to one lobby's queues
(%jmanhunt_playlist_matches_standard-1v1_0%).
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_playlist_players_<id>% |
INTEGER | Players affiliated with the playlist: queued plus starting plus in matches. |
%jmanhunt_playlist_match_players_<id>% |
INTEGER | Players currently playing the playlist's running matches. |
%jmanhunt_playlist_queued_<id>% |
INTEGER | Players queued in the playlist's open and counting-down instances. |
%jmanhunt_playlist_needed_<id>% |
INTEGER | Players still needed to fill the playlist's open instances, or the full total when none are open. |
%jmanhunt_playlist_quickmatch_<id>% |
TEXT | Playlist queue state: IDLE, OPEN, COUNTDOWN, or RUNNING. |
%jmanhunt_playlist_max_<id>% paid |
INTEGER | Queue max for the playlist: the rising shown max for tournaments, the configured max otherwise. |
%jmanhunt_playlist_matches_<id>% paid |
LONG | Matches started on the playlist since restart, across every lobby. |
%jmanhunt_playlist_composition_<id>% free |
TEXT | Playlist composition as runners-vs-hunters, empty when unknown. |
%jmanhunt_playlist_composition_runners_<id>% free |
INTEGER | Playlist runner team size, 0 when unknown. |
%jmanhunt_playlist_composition_hunters_<id>% free |
INTEGER | Playlist hunter team size, 0 when unknown. |
%jmanhunt_playlist_required_<id>% free |
INTEGER | Playlist composition total: runners plus hunters, 0 when unknown. |
%jmanhunt_playlist_players_<id>_<lobby>% paid |
INTEGER | Players affiliated with the playlist in one lobby: queued plus starting plus in matches. |
%jmanhunt_playlist_match_players_<id>_<lobby>% paid |
INTEGER | Players currently playing the playlist's running matches in one lobby. |
%jmanhunt_playlist_queued_<id>_<lobby>% paid |
INTEGER | Players queued in the playlist's open and counting-down instances in one lobby. |
%jmanhunt_playlist_needed_<id>_<lobby>% paid |
INTEGER | Players still needed to fill the playlist's open instances in one lobby, or the full total when none are open. |
%jmanhunt_playlist_quickmatch_<id>_<lobby>% paid |
TEXT | Playlist queue state in one lobby: IDLE, OPEN, COUNTDOWN, or RUNNING. |
%jmanhunt_playlist_matches_<id>_<lobby>% paid |
LONG | Matches started on the playlist in one lobby since restart. |
%jmanhunt_playlist_max_<id>_<lobby>% paid |
INTEGER | Queue max for the playlist in one lobby: the rising shown max for tournaments, the configured max otherwise. |
Quickmatch¶
The viewer's live queue attempt, backing the looking-for-match sidebar. Both keys read empty without a viewer, outside a queue attempt, and on free.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_quickmatch_elapsed% paid |
TEXT | Viewer's queue-attempt age, formatted, empty when not queued. |
%jmanhunt_quickmatch_mode% paid |
TEXT | Viewer's queue-attempt target: playlist name, Classic, or Ranked. |
Tournaments¶
Mode-agnostic tournament keys: the same rows work for Best-of, brackets, and round-robin. See Tournaments. Viewer keys need a viewer; outside a live tournament the score and unit keys read empty.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_tournament_score% paid |
INTEGER | Viewer's score in their live tournament: series wins (Best-of), points (round-robin), or wins (brackets). |
%jmanhunt_tournament_score_<who>% paid |
INTEGER | One player's score in their live tournament, by name or uuid. |
%jmanhunt_tournament_max_score% paid |
INTEGER | Theoretical maximum for the viewer's live tournament: first-to-N (Best-of), full-points table (round-robin), or wins needed for the title (brackets). |
%jmanhunt_tournament_queue_unit% paid |
INTEGER | Recommended player multiple of the viewer's live tournament playlist. |
%jmanhunt_tournament_id% paid |
INTEGER | Viewer's live tournament id, empty when none. |
%jmanhunt_tournament_state% paid |
TEXT | Viewer's live tournament state: REGISTERING or IN_PROGRESS. |
%jmanhunt_tournament_round% paid |
TEXT | Viewer's live bracket round name (Final, Semifinal, Quarterfinal, else Round N), empty outside brackets. |
%jmanhunt_tournament_remaining% paid |
INTEGER | Players still in the viewer's live tournament. |
%jmanhunt_tournament_standing% paid |
INTEGER | Viewer's live round-robin table position, empty outside round-robin. |
%jmanhunt_tournament_leader% paid |
TEXT | Live tournament leader: the table top (round-robin) or the highest cumulative match score (brackets), empty when none. |
%jmanhunt_tournament_record% paid |
TEXT | Viewer's run record as W-L, widening to W-D-L when the run holds a draw. |
%jmanhunt_tournament_pool% paid |
TEXT | Viewer's banked gains (brackets) or running total (round-robin), sign-prefixed, +0 before any result. |
Ranked¶
Season elo, ranks, counts, the season leaderboard, and leave
penalties. Viewer keys need a viewer; the season number and the
board work player-less. Missing rows read --- (counts read
0); the rank name shows Unranked during placement.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_ranked_elo% |
INTEGER | Viewer's current season elo, --- when never played. |
%jmanhunt_ranked_rank% |
TEXT | Viewer's current rank name, Unranked during placement. |
%jmanhunt_ranked_rank_color% paid |
TEXT | Leading color tag of the viewer's current rank name. |
%jmanhunt_ranked_best% |
INTEGER | Viewer's best season elo across seasons, --- when never played. |
%jmanhunt_ranked_season% |
INTEGER | Current ranked season number, 0 before the first season. |
%jmanhunt_ranked_season_<n>% |
INTEGER | Viewer's elo in season n, --- when never played. |
%jmanhunt_ranked_matches% |
INTEGER | Viewer's ranked matches this season. |
%jmanhunt_ranked_matches_<n>% |
INTEGER | Viewer's ranked matches in season n. |
%jmanhunt_ranked_matches_most% |
INTEGER | Viewer's most ranked matches in any one season. |
%jmanhunt_ranked_standing% |
INTEGER | Viewer's season board position, --- when never played. |
%jmanhunt_ranked_top_<n>% |
INTEGER | The nth highest current season elo, --- past the board. |
%jmanhunt_ranked_top_<n>_name% |
TEXT | Display name holding the nth highest current season elo, --- past the board. |
%jmanhunt_ranked_top_<n>_rank% |
TEXT | Rank name holding the nth highest current season elo, --- past the board. |
%jmanhunt_ranked_season_matches% |
INTEGER | Ranked matches played in the current season, 0 before the first season. |
%jmanhunt_ranked_season_ends_in% |
TEXT | Time left in the current season, --- when no season runs. |
%jmanhunt_ranked_penalty_strikes% |
INTEGER | Viewer's ranked leave-penalty strikes inside the window, 0 when none. |
%jmanhunt_ranked_penalty_expires% |
LONG | Viewer's ranked queue cooldown expiry in epoch millis, empty when none runs. |
%jmanhunt_ranked_peak% |
INTEGER | Viewer's highest elo this season, --- when never played. |
%jmanhunt_ranked_peak_<n>% |
INTEGER | Viewer's highest elo in season n, --- when never played. |
%jmanhunt_ranked_rank_for_<elo>% |
TEXT | Rank name for a given elo number (input below the smallest reads the smallest rank), empty when unparseable. |
%jmanhunt_ranked_last_change% |
TEXT | Viewer's last ranked elo change, sign-prefixed and colored, 0 when none. |
%jmanhunt_ranked_last_match_id% |
LONG | Viewer's last ranked match id, 0 when none. |
Leaderboards¶
Best-first career boards, addressed by rank. Works player-less, so
holograms and scoreboards read them directly. Every board ships a
total plus hunter and runner splits (win streak ranks the best
streak; streaks are role-agnostic, so the splits rank the same
best). Boards refresh when a match ends; kdr boards only rank
players with enough matches played
(statistics.leaderboards.min-matches).
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_top_score_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_score_<rank>_value% |
LONG | Value at rank |
%jmanhunt_top_score_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_score_as_hunter_<rank>_value% |
LONG | Value at rank |
%jmanhunt_top_score_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_score_as_runner_<rank>_value% |
LONG | Value at rank |
%jmanhunt_top_kills_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_kills_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_kills_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_kills_as_hunter_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_kills_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_kills_as_runner_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_wins_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_wins_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_wins_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_wins_as_hunter_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_wins_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_wins_as_runner_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_mvps_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_mvps_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_mvps_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_mvps_as_hunter_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_mvps_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_mvps_as_runner_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_kdr_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_kdr_<rank>_value% |
DECIMAL | Value at rank |
%jmanhunt_top_kdr_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_kdr_as_hunter_<rank>_value% |
DECIMAL | Value at rank |
%jmanhunt_top_kdr_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_kdr_as_runner_<rank>_value% |
DECIMAL | Value at rank |
%jmanhunt_top_win_streak_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_win_streak_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_win_streak_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_win_streak_as_hunter_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_win_streak_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_win_streak_as_runner_<rank>_value% |
INTEGER | Value at rank |
%jmanhunt_top_playtime_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_playtime_<rank>_value% |
TEXT | Value at rank |
%jmanhunt_top_playtime_as_hunter_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_playtime_as_hunter_<rank>_value% |
TEXT | Value at rank |
%jmanhunt_top_playtime_as_runner_<rank>_name% |
TEXT | Name at rank |
%jmanhunt_top_playtime_as_runner_<rank>_value% |
TEXT | Value at rank |
Timed periods¶
Append _monthly or _weekly to any leaderboard cell above (except the
win streak boards), to any numeric career_* viewer key with a per-match
fold behind it, or to any career_rank_* viewer rank to read the current
calendar period instead of alltime. Weeks start Sunday at server-local
midnight; months start on the first. Only finished matches fold (cancelled
games never count), a match lands in the period it ended in, and periods
before this build hold no data. Role, cosmetics, XP, pointers, streaks, and
role-split deaths stay alltime. Timed boards rank everyone with no
minimum-matches filter, and timed keys keep their bare key's edition.
Examples: %jmanhunt_top_kills_1_value_monthly%,
%jmanhunt_top_playtime_1_value_weekly%, %jmanhunt_career_kills_monthly%,
%jmanhunt_career_rank_playtime_weekly%.
Player Lookup¶
Career totals for one player, addressed by uuid or player name (names match case-insensitively). Works player-less; offline players resolve from their last folded totals.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_player_score_<who>% |
LONG | Career match score for one player; who takes a uuid or a player name. |
%jmanhunt_player_kills_<who>% |
INTEGER | Career kills for one player. |
%jmanhunt_player_deaths_<who>% |
INTEGER | Career deaths for one player. |
%jmanhunt_player_kdr_<who>% |
DECIMAL | Career kills over deaths for one player, 2dp. |
%jmanhunt_player_wins_<who>% |
INTEGER | Career wins for one player. |
%jmanhunt_player_matches_<who>% |
INTEGER | Career matches for one player. |
%jmanhunt_player_win_rate_<who>% |
DECIMAL | Career wins over matches for one player as a percent, 1dp. |
%jmanhunt_player_mvps_<who>% |
INTEGER | Career MVP awards for one player. |
%jmanhunt_player_playtime_formatted_<who>% |
TEXT | Career playtime for one player formatted as days, hours, minutes, seconds. |
%jmanhunt_player_last_match_id_<who>% free |
LONG | One player's most recent match id, 0 when they never played. |
One player's live match, addressed by uuid or player name. Works
player-less. Composition puts the followed player's team first; splits
and the live id read -1 outside a match.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_player_match_composition_<who>% |
TEXT | One player's live match composition, their team first, empty outside a match. |
%jmanhunt_player_match_composition_runners_<who>% |
INTEGER | Runner count in one player's live match, -1 outside a match. |
%jmanhunt_player_match_composition_hunters_<who>% |
INTEGER | Hunter count in one player's live match, -1 outside a match. |
%jmanhunt_player_match_playlist_<who>% free |
TEXT | One player's queued or live playlist id, empty when neither. |
%jmanhunt_player_match_id_<who>% free |
LONG | One player's live match id, -1 when not in a match. |
General¶
Utilities unrelated to the engine. Date and time follow the parsing
language: each language carries its own date format and timezone (see
the general lang section), falling back to the server timezone and
then to UTC.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_general_date% free |
TEXT | Current date in the viewer's language format and zone. |
%jmanhunt_general_time% free |
TEXT | Current time as HH:mm (24 hour clock) in the viewer's language zone. |
%jmanhunt_general_ping% free |
INTEGER | Viewer's ping in milliseconds, empty without a viewer. |
%jmanhunt_general_name% free |
TEXT | Viewer's player name, empty without a viewer. |
Global¶
Server-wide lifetime aggregates. Works player-less.
| Placeholder | Type | Description |
|---|---|---|
%jmanhunt_global_score% free |
LONG | Server-wide lifetime match score. |
%jmanhunt_global_score_as_hunter% |
LONG | Server-wide match score earned by hunters. |
%jmanhunt_global_score_as_runner% |
LONG | Server-wide match score earned by runners. |
%jmanhunt_global_mvps% free |
INTEGER | Server-wide MVP awards. |
%jmanhunt_global_mvps_as_hunter% |
INTEGER | Server-wide MVP awards earned by hunters. |
%jmanhunt_global_mvps_as_runner% |
INTEGER | Server-wide MVP awards earned by runners. |
%jmanhunt_global_matches% free |
LONG | Server-wide recorded matches. |
%jmanhunt_global_kills% free |
INTEGER | Server-wide kills. |
%jmanhunt_global_kills_as_hunter% |
INTEGER | Server-wide kills by hunters. |
%jmanhunt_global_kills_as_runner% |
INTEGER | Server-wide kills by runners. |
%jmanhunt_global_deaths% free |
INTEGER | Server-wide deaths. |
%jmanhunt_global_deaths_as_hunter% |
INTEGER | Server-wide deaths by hunters. |
%jmanhunt_global_deaths_as_runner% |
INTEGER | Server-wide deaths by runners. |
%jmanhunt_global_wins% free |
INTEGER | Server-wide matches won. |
%jmanhunt_global_wins_as_hunter% |
INTEGER | Server-wide matches won by hunters. |
%jmanhunt_global_wins_as_runner% |
INTEGER | Server-wide matches won by runners. |
%jmanhunt_global_playtime% |
LONG | Server-wide playtime in milliseconds. |
%jmanhunt_global_playtime_formatted% |
TEXT | Server-wide playtime formatted as days, hours, minutes, seconds. |
%jmanhunt_global_damage% |
DECIMAL | Server-wide damage dealt in hearts. |
%jmanhunt_global_last_match_id% free |
LONG | Most recent match id on the server, 0 when none. |
%jmanhunt_global_cosmetics_total% |
INTEGER | Loaded cosmetics across every category. |
Migrating From The Old Keys¶
The previous scheme (total_*, game_*, sessions_*) was removed
with no backward compatibility: old keys resolve unknown now. Career
keys moved under career_* (%jmanhunt_total_kills% is
%jmanhunt_career_kills%), live lobby keys moved under live_*
(%jmanhunt_game_phase_0% is %jmanhunt_live_phase_0%), and the old
per-session keys moved under match_*
(%jmanhunt_game_kills_this_session% is
%jmanhunt_match_kills%). Note the KDR fix: the old ratio divided
kills by sessions, the new one divides by deaths.
Configuration¶
Each placeholder can be individually enabled or disabled and formatted in
placeholders.yml:
placeholders:
career_kills:
enabled: true
format: "{value}"
lobby_score_<id>:
enabled: true
format: "{value}"
Trailing-id families share one entry per pattern (lobby_score_<id>
covers every lobby). The {value} placeholder is replaced with the
built-in value. Formatting uses MiniMessage (classic & codes convert
automatically).
Nested Placeholders¶
Formats may nest placeholders inside other placeholders with brace
spans: {match_composition_{career_last_match_id}} reads the
composition of the viewer's last match. Spans resolve innermost
outward through the engine first (with or without the jmanhunt_
prefix), then through PlaceholderAPI for outside-plugin tokens when
it is hooked up, repeating until nothing is left to parse. A token
whose value is another placeholder keeps resolving: if
custom_plugin_placeholder returns {player_match_id_Steve}, then
{match_composition_{custom_plugin_placeholder}} lands on Steve's
match composition in three passes.
Resolution caps at 15 passes (an engine-internal limit against self-returning placeholders looping forever). Text still unresolved after the final pass stays as is and logs a warning. The free edition runs one pass only: nested input stays literal and logs an upsell for the advanced parser.
Percent spans (%token%) resolve strictly through
PlaceholderAPI, never through the engine, alternating with brace
spans inside the same pass loop. This is how values from other
plugins parse: a LuckPerms prefix returning
%jmanhunt_ranked_rank% resolves like any PlaceholderAPI text.
Percent spans PlaceholderAPI cannot resolve stay literal and
silent, matching PlaceholderAPI semantics.