🏅 Auto‑Rank
Auto‑Rank promotes players based on playtime and optional custom conditions (mob kills, biome visits, block mining/placing). Each rank can assign a prefix or suffix with full color code & RGB support.
enableRanks: true in general.json. Then customize ranks in ranks.json.
Jump to
⚙️ How it works
- Playtime check — Voidium reads the player’s
PLAY_TIMEstat (ticks → hours) everycheckIntervalMinutes(default 5). - Custom conditions — If a rank definition includes custom conditions, the player must also meet those (tracked via
ProgressTracker). - Highest wins — The rank with the highest
hoursrequirement that the player qualifies for is applied. - Promotion message — When a player reaches a new rank for the first time, they see
promotionMessagein chat. - Display — The rank prefix/suffix appears in the TAB list (if Player List module is enabled) or in the chat display name.
📝 Configuration
File: config/voidium/ranks.json
| Field | Type | Default | Description |
|---|---|---|---|
enableAutoRanks |
boolean | true |
Master switch |
checkIntervalMinutes |
int | 5 |
How often to check playtime (min 1) |
promotionMessage |
string | &aCongratulations! You have earned the rank &b%rank%&a! |
Message on rank up. Placeholders: %rank%, {player}, {hours} |
tooltipPlayed |
string | §7Played: §f%hours%h |
Hover text showing played hours |
tooltipRequired |
string | §7Required: §f%hours%h |
Hover text showing required hours |
ranks |
array | (see below) | List of rank definitions |
Rank definition
Each entry in the ranks array:
{
"type": "PREFIX",
"value": "&6[Veteran] ",
"hours": 100,
"customConditions": []
}
| Field | Description |
|---|---|
type |
"PREFIX" or "SUFFIX" |
value |
The text shown (supports & color codes, &#RRGGBB hex) |
hours |
Minimum playtime hours required |
customConditions |
Optional array of extra requirements |
Default ranks
| Rank | Type | Hours | Display |
|---|---|---|---|
| Member | PREFIX | 10 | &7[Member] |
| Veteran | PREFIX | 100 | &6[Veteran] |
| Star | SUFFIX | 500 | ` &e★` |
🎯 Custom conditions
Custom conditions let you require achievements beyond playtime. Each condition has a type and a count:
{
"type": "PREFIX",
"value": "&c[Hunter] ",
"hours": 50,
"customConditions": [
{ "type": "KILL", "count": 500 }
]
}
Condition types
| Type | Tracks | Example |
|---|---|---|
KILL |
Mob kills (any type) | 500 kills → “Hunter” |
VISIT |
Unique biome visits | 10 biomes → “Explorer” |
BREAK |
Blocks broken (any type) | 1000 blocks → “Miner” |
PLACE |
Blocks placed (any type) | 500 blocks → “Builder” |
Progress is tracked per-player in config/voidium/storage/player_progress.json and persists across restarts.
You can combine multiple conditions on a single rank:
{
"type": "SUFFIX",
"value": " &d♦",
"hours": 200,
"customConditions": [
{ "type": "KILL", "count": 1000 },
{ "type": "VISIT", "count": 15 }
]
}
The player must meet all conditions (AND logic).
💬 Hover tooltips
When a player’s rank prefix or suffix is displayed, hovering over it shows:
- Played hours — formatted via
tooltipPlayed(e.g.Played: 142.5h) - Required hours — formatted via
tooltipRequired(e.g.Required: 100h)
This works in chat and in the TAB player list.
Integration with Player List
When the Player List module is enabled (enablePlayerList: true in general.json), rank prefixes and suffixes are applied via scoreboard teams in TAB. The RankManager defers to PlayerListManager to avoid duplicate display.
When Player List is disabled, ranks are applied directly to the player’s display name in chat.
Related
- Commands —
/voidium statusshows rank info - Player List — TAB integration
- Configuration — all config files