hTops
PlaceholderAPI-Based Leaderboards with Signs, Skin Displays and Database Storage
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
hTops is a leaderboard plugin that creates tops from PlaceholderAPI values.
You can create leaderboards from numeric placeholders, refresh them automatically, show entries through PlaceholderAPI, attach tops to signs and create skin-based displays for specific leaderboard positions.
The plugin stores leaderboard data in a database and supports SQLite, MySQL, MariaDB and H2.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Main Features
- Create leaderboards from PlaceholderAPI placeholders.
- Automatic leaderboard refresh.
- Configurable refresh interval.
- Support for offline player entries.
- Player exclusion by permission.
- Player exclusion by nickname list.
- SQLite, MySQL, MariaDB and H2 support.
- PlaceholderAPI output for top positions.
- PlaceholderAPI output for current player position.
- Sign displays for leaderboards.
- Automatic sign binding through a configured tag.
- Skin-head / skin-stand displays for leaderboard positions.
- Armor stand editor menu.
- Configurable default sign format.
- Configurable default skin stand options.
- Display list and display removal commands.
- Warning system for suspicious formatted placeholders.
- Runtime cache clearing with confirmation.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How It Works
A leaderboard is created from a PlaceholderAPI placeholder.
Example:
Code (Text):
/htops create balance %vault_eco_balance% 10
The plugin reads the placeholder value for players, parses it as a numeric value and builds a sorted leaderboard.
After the leaderboard is created, it can be used in PlaceholderAPI, signs and skin displays.
────────────────────────────────────────
Placeholder Validation
hTops includes checks for placeholders that may return formatted or non-numeric values.
For example, placeholders ending with suffixes such as
fixed,
format,
formatted,
rounded,
short or
compact can be marked as suspicious during leaderboard creation.
This helps prevent creating a leaderboard from a value that cannot be sorted correctly.
If you are sure that the placeholder is correct, the plugin can ask for confirmation before creating the top.
────────────────────────────────────────
Automatic Refresh
Leaderboards are refreshed automatically.
Default refresh setting:
Code (Text):
settings:
leaderboards:
refreshSeconds: 300
includeOfflinePlayers: true
The refresh interval controls how often the plugin updates leaderboard values.
If
includeOfflinePlayers is enabled, saved offline players can remain in the tops.
────────────────────────────────────────
Excluded Players
Players can be excluded from leaderboard updates.
Supported exclusion methods:
- permission-based exclusion
- nickname list exclusion
Default settings:
Code (Text):
settings:
excluded:
permission: true
players: []
Players with
htops.excluded are not updated in tops when permission exclusion is enabled.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Displays
hTops supports multiple display types for created leaderboards.
Supported display types:
- sign display
- skin-head / skin-stand display
Display bindings can be listed and removed through commands.
────────────────────────────────────────
Sign Displays
A leaderboard can be attached to a sign with:
Code (Text):
/htops addsign <id>
The player must look at a sign while using the command.
Signs can also use the default sign tag:
Default sign lines:
Code (Text):
{title}
#1 %htops_{board}_1%
#2 %htops_{board}_2%
#3 %htops_{board}_3%
Sign settings are stored in:
Code (Text):
plugins/hTops/sign.yml
────────────────────────────────────────
Skin Displays
hTops can create skin-based displays for specific leaderboard positions.
Command format:
Code (Text):
/htops npc add <id>_<position>
/htops npc remove <id>_<position>
Example:
Code (Text):
/htops npc add balance_1
This creates a display for the first position of the
balance leaderboard.
Skin display settings are stored in:
Code (Text):
plugins/hTops/npc.yml
────────────────────────────────────────
Armor Stand Editor
Skin displays can be edited through an armor stand editor menu.
The editor allows adjusting:
- offset X, Y and Z
- yaw and pitch
- visibility
- arms
- gravity
- base plate
- small mode
- equipment slots
- body part poses
This makes it possible to place and style leaderboard skin displays directly in-game.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Database
hTops stores leaderboard data, cached placeholder output and display bindings in a database.
Supported database types:
Default database configuration:
Code (Text):
settings:
database:
type: "SQLITE"
host: "127.0.0.1"
port: 3306
name: "htops"
username: "root"
password: ""
file: "htops.db"
pool:
maximumPoolSize: 10
minimumIdle: 2
connectionTimeoutMs: 10000
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PlaceholderAPI
hTops registers placeholders with the identifier:
Basic top placeholder format:
Code (Text):
%htops_<board>_<position>%
Examples:
Code (Text):
%htops_balance_1%
%htops_balance_2%
%htops_balance_3%
By default, this returns the player name at the selected position.
────────────────────────────────────────
Entry Values
You can request different values from a leaderboard entry.
Code (Text):
%htops_<board>_<position>_name%
%htops_<board>_<position>_value%
%htops_<board>_<position>_uuid%
Examples:
Code (Text):
%htops_balance_1_name%
%htops_balance_1_value%
%htops_balance_1_uuid%
────────────────────────────────────────
Player Position
You can get the current player's position in a leaderboard:
Code (Text):
%htops_<board>_position%
Example:
Code (Text):
%htops_balance_position%
If the player is not found in the leaderboard, the placeholder returns
-.
────────────────────────────────────────
Custom Output Placeholder
The placeholder system can also request another PlaceholderAPI value for the player stored in the leaderboard entry.
Example format:
Code (Text):
%htops_<board>_<position>_{some_placeholder}%
This can be used to show additional information for the player in a specific top position.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Commands
Code (Text):
/htops
/htops create <id> <placeholder> <size>
/htops delete <id>
/htops size <id> <size>
/htops placeholder <id> <placeholder>
/htops addsign <id>
/htops npc add <id>_<position>
/htops npc remove <id>_<position>
/htops removedisplay <displayId>
/htops update
/htops reload
/htops list
/htops clear
Command Description
Code (Text):
/htops create <id> <placeholder> <size> - create a leaderboard
/htops delete <id> - delete a leaderboard
/htops size <id> <size> - change leaderboard size
/htops placeholder <id> <placeholder> - change source placeholder
/htops addsign <id> - bind a sign display
/htops npc add <id>_<position> - create a skin display
/htops npc remove <id>_<position> - remove a skin display
/htops removedisplay <displayId> - remove a display by ID
/htops update - manually refresh tops
/htops reload - reload configuration
/htops list - list tops and displays
/htops clear - clear runtime data and displays
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Permissions
Code (Text):
htops.admin - access to hTops administrative commands
htops.armorstand - access to armor stand editing
htops.excluded - excludes player from leaderboard updates when enabled
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Requirements
- Java 17 or newer.
- Minecraft 1.16 or newer.
- Spigot / Paper / compatible server core.
- PlaceholderAPI.
Important: PlaceholderAPI is required.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Installation
- Install PlaceholderAPI.
- Place hTops.jar into the plugins folder.
- Start or restart the server.
- Open the generated configuration files.
- Configure the database if needed.
- Create your first leaderboard with /htops create.
- Use placeholders, signs or skin displays to show the top.
Configuration files:
Code (Text):
plugins/hTops/config.yml
plugins/hTops/sign.yml
plugins/hTops/npc.yml
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Notes
- Source placeholders should return numeric values.
- Formatted values can be rejected or require confirmation.
- The plugin can keep offline players in leaderboards.
- Sign displays and skin displays are stored separately from leaderboard definitions.
- The clear command requires confirmation within 15 seconds.
- Armor stand display editing is controlled by a separate permission.