Skip to content

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 on the match score leaderboard, empty past the last entry.
%jmanhunt_top_score_<rank>_value% LONG Value at rank on the match score leaderboard, empty past the last entry.
%jmanhunt_top_score_as_hunter_<rank>_name% TEXT Name at rank on the hunter match score leaderboard, empty past the last entry.
%jmanhunt_top_score_as_hunter_<rank>_value% LONG Value at rank on the hunter match score leaderboard, empty past the last entry.
%jmanhunt_top_score_as_runner_<rank>_name% TEXT Name at rank on the runner match score leaderboard, empty past the last entry.
%jmanhunt_top_score_as_runner_<rank>_value% LONG Value at rank on the runner match score leaderboard, empty past the last entry.
%jmanhunt_top_kills_<rank>_name% TEXT Name at rank on the kills leaderboard, empty past the last entry.
%jmanhunt_top_kills_<rank>_value% INTEGER Value at rank on the kills leaderboard, empty past the last entry.
%jmanhunt_top_kills_as_hunter_<rank>_name% TEXT Name at rank on the hunter kills leaderboard, empty past the last entry.
%jmanhunt_top_kills_as_hunter_<rank>_value% INTEGER Value at rank on the hunter kills leaderboard, empty past the last entry.
%jmanhunt_top_kills_as_runner_<rank>_name% TEXT Name at rank on the runner kills leaderboard, empty past the last entry.
%jmanhunt_top_kills_as_runner_<rank>_value% INTEGER Value at rank on the runner kills leaderboard, empty past the last entry.
%jmanhunt_top_wins_<rank>_name% TEXT Name at rank on the wins leaderboard, empty past the last entry.
%jmanhunt_top_wins_<rank>_value% INTEGER Value at rank on the wins leaderboard, empty past the last entry.
%jmanhunt_top_wins_as_hunter_<rank>_name% TEXT Name at rank on the hunter wins leaderboard, empty past the last entry.
%jmanhunt_top_wins_as_hunter_<rank>_value% INTEGER Value at rank on the hunter wins leaderboard, empty past the last entry.
%jmanhunt_top_wins_as_runner_<rank>_name% TEXT Name at rank on the runner wins leaderboard, empty past the last entry.
%jmanhunt_top_wins_as_runner_<rank>_value% INTEGER Value at rank on the runner wins leaderboard, empty past the last entry.
%jmanhunt_top_mvps_<rank>_name% TEXT Name at rank on the MVP awards leaderboard, empty past the last entry.
%jmanhunt_top_mvps_<rank>_value% INTEGER Value at rank on the MVP awards leaderboard, empty past the last entry.
%jmanhunt_top_mvps_as_hunter_<rank>_name% TEXT Name at rank on the hunter MVP awards leaderboard, empty past the last entry.
%jmanhunt_top_mvps_as_hunter_<rank>_value% INTEGER Value at rank on the hunter MVP awards leaderboard, empty past the last entry.
%jmanhunt_top_mvps_as_runner_<rank>_name% TEXT Name at rank on the runner MVP awards leaderboard, empty past the last entry.
%jmanhunt_top_mvps_as_runner_<rank>_value% INTEGER Value at rank on the runner MVP awards leaderboard, empty past the last entry.
%jmanhunt_top_kdr_<rank>_name% TEXT Name at rank on the kdr leaderboard, empty past the last entry.
%jmanhunt_top_kdr_<rank>_value% DECIMAL Value at rank on the kdr leaderboard, empty past the last entry.
%jmanhunt_top_kdr_as_hunter_<rank>_name% TEXT Name at rank on the hunter kdr leaderboard, empty past the last entry.
%jmanhunt_top_kdr_as_hunter_<rank>_value% DECIMAL Value at rank on the hunter kdr leaderboard, empty past the last entry.
%jmanhunt_top_kdr_as_runner_<rank>_name% TEXT Name at rank on the runner kdr leaderboard, empty past the last entry.
%jmanhunt_top_kdr_as_runner_<rank>_value% DECIMAL Value at rank on the runner kdr leaderboard, empty past the last entry.
%jmanhunt_top_win_streak_<rank>_name% TEXT Name at rank on the best win streak leaderboard, empty past the last entry.
%jmanhunt_top_win_streak_<rank>_value% INTEGER Value at rank on the best win streak leaderboard, empty past the last entry.
%jmanhunt_top_win_streak_as_hunter_<rank>_name% TEXT Name at rank on the best win streak leaderboard, empty past the last entry.
%jmanhunt_top_win_streak_as_hunter_<rank>_value% INTEGER Value at rank on the best win streak leaderboard, empty past the last entry.
%jmanhunt_top_win_streak_as_runner_<rank>_name% TEXT Name at rank on the best win streak leaderboard, empty past the last entry.
%jmanhunt_top_win_streak_as_runner_<rank>_value% INTEGER Value at rank on the best win streak leaderboard, empty past the last entry.
%jmanhunt_top_playtime_<rank>_name% TEXT Name at rank on the playtime leaderboard, empty past the last entry.
%jmanhunt_top_playtime_<rank>_value% TEXT Value at rank on the playtime leaderboard, formatted, empty past the last entry.
%jmanhunt_top_playtime_as_hunter_<rank>_name% TEXT Name at rank on the hunter playtime leaderboard, empty past the last entry.
%jmanhunt_top_playtime_as_hunter_<rank>_value% TEXT Value at rank on the hunter playtime leaderboard, formatted, empty past the last entry.
%jmanhunt_top_playtime_as_runner_<rank>_name% TEXT Name at rank on the runner playtime leaderboard, empty past the last entry.
%jmanhunt_top_playtime_as_runner_<rank>_value% TEXT Value at rank on the runner playtime leaderboard, formatted, empty past the last entry.

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.