PlaceholderAPI
collector-placeholder · version 0.6.0 · registers as placeholder · CI 2026-09-25
PlaceholderAPI — the last-resort connector.
Nine plugins hook into it on this server. This one exposes any of their placeholders as a metric, which covers in one go every plugin that will never have a module of its own. It's also the only connector that doesn't measure anything itself: it relays.
Hence three guards, none of them optional.
A whitelist, empty by default. This module does nothing until someone has written what they want. Exposing "every placeholder" makes no sense: there are hundreds, most of which render text.
Only what is numeric gets published, and what isn't is reported once then ignored. A placeholder renders a string; betting that it converts means silently publishing
NaNfor a misspelled name.Resolved with no player.
setPlaceholders(null, …)yields the global value. Per-player placeholders would reopen the door to cardinality, and for those a dedicated module exists — that's the whole point of this architecture.
On Folia the collection runs on the global region: placeholders that read global state work, those that read a world, a chunk or an entity are refused by Folia and rejected once, like a misspelt name.
Every placeholder is one series of a single metric, labelled by its name: %plan_players_online_total% becomes mc_placeholder_value{placeholder="plan_players_online_total"}. The placeholder domain says where the value comes from, which is exactly what you want to know about a relayed number.
Install
Put vania-metrics-collector-placeholder-0.6.0.jar in the plugins folder, next to the core and to PlaceholderAPI, then restart. The collector depends on both: without PlaceholderAPI it stays disabled, and the core keeps running.
- Target plugin: PlaceholderAPI 2.12.3 — latest for Minecraft 1.21.11: 2.12.3
- Built against: core v0.6.0
- Download: vania-metrics-collector-placeholder-0.6.0.jar, with its SHA-512, from the v0.6.0 release
- Collects: in the background, every 30 s — reading the plugin's state never blocks a scrape
- Tested on: Java 21
- Latest CI: success · 2026-09-25 11:38 UTC · commit
fd22254· run
Platforms
| Platform | Target plugin | Collector | Latest CI |
|---|---|---|---|
| Paper | yes | Passed | paper ✓ |
| Purpur | yes | Passed | purpur ✓ |
| Folia | yes | Passed | folia ✓ |
| Spigot | yes | Passed | spigot ✓ |
| CraftBukkit | yes | Passed | bukkit ✓ |
| Sponge | no | n/a | — |
| Velocity | no | n/a | — |
| BungeeCord | no | n/a | — |
| Waterfall | no | n/a | — |
| Geyser | no | n/a | — |
See the compatibility matrix for every collector at once.
Metrics
mc_placeholder_value
gauge placeholder
Value of a placeholder, relayed as-is. Only what converts to a number is published — the rest is reported once then ignored.
Configuration
In metrics.properties, or as environment variables. See Configuration.
| Key | Default | Environment variable |
|---|---|---|
collector.placeholder | true | VANIA_METRICS_COLLECTOR_PLACEHOLDER |
collector.placeholder.interval | 30 | VANIA_METRICS_COLLECTOR_PLACEHOLDER_INTERVAL |
collector.placeholder.list | empty | VANIA_METRICS_COLLECTOR_PLACEHOLDER_LIST |