Placeholders
AstralDungeons registers two placeholder namespaces with AstralCore, one per module. dungeons is a live, in-progress run reader registered globally on the dungeon (Paper) server; data is the claimed-run reader exposed only inside the bridge's reward-claim flow. For the placeholder syntax itself (%namespace_key%, %outer_{inner}%) see Placeholders.
dungeons_* (dungeon server, global)
DungeonsPlaceholders is a ComplexPlaceholder (namespace dungeons) registered once, globally, into RootPlaceholderContainer from the Paper module's onEnable. See the two-module architecture — this namespace only exists on dungeon servers, not on the bridge. Because PlaceholderContainer.placeholder(namespace) falls back to the root container for any namespace it doesn't hold locally, %dungeons_*% resolves from any placeholder container built on that server once a Player context is attached to it — including the ad-hoc containers MobListener and PlayerListener build via AstralPaperAPI.createPlaceholderContainer(player) (loot-item display text, the player-death message). It isn't wired into any shipped default — messages.yml's player-death, won, and lost strings don't reference it — but it's available wherever a config value accepts a placeholder for that player.
Placeholder | Type | Description |
|---|---|---|
| double | The resolving player's live, unclaimed run experience. Reads |
Any sub-key other than experience — including none at all, i.e. bare %dungeons% — resolves to null.
data_* (bridge, reward-claim actions only)
DungeonPlayerData is itself a ComplexPlaceholder (namespace data), but it is never registered into RootPlaceholderContainer — %data_experience% is not a globally available placeholder anywhere on the network. Instead, PlayerDataService#claimRewards (bridge module) builds a one-off PlaceholderContainer for the returning player (AstralPaperAPI.createPlaceholderContainer(player)), registers the just-claimed DungeonPlayerData instance into it, and runs the bridge's reward-actions action list (see Configuration) against that container. The placeholder is therefore scoped to that single action run — it only resolves inside reward-actions entries, nowhere else. See Reward carry-over and Loot & Rewards.
Placeholder | Type | Description |
|---|---|---|
| double | The accumulated experience the player earned across their dungeon run, read from the |
As with dungeons_experience, any other sub-key (or none) resolves to null. The commands collection also carried by the same DungeonPlayerData (queued commands accumulated from item pickups in the dungeon) is not exposed as a placeholder — claimRewards dispatches those separately from console, after the reward actions run, with %player_name% substituted into each command string.