Skip to main content

CannonRTP Messages and Titles

All player-facing strings live in plugins/CannonRTP/messages.yml and are fully overridable. Every value supports MagmaCore gradients (<gradient:#start:#end>...</gradient>), MiniMessage tags, and legacy & color codes. The $prefix placeholder in any message is replaced with the configured prefix value.

Release 1 ships English-only; the language key in config.yml exists so future translation packs can target it.

Prefix and Help Header​

KeyPlaceholdersDefaultDescription
prefix--<gradient:#ff9a3d:#ffd166>CannonRTP</gradient> &8|Prefix injected into every message via $prefix
helpHeader$prefix$prefix &fCannonRTP commands:Greeting line printed at the top of /cannonrtp, /wc help, and /wc list / /wc status

Chat Messages​

KeyPlaceholdersDescription
createdCannon$prefix, $cannon, $id, $pathSent after /wc create succeeds
placedCannon$prefix, $cannonSent after /wc place succeeds
removedCannon$prefix, $cannonSent after /wc remove succeeds
deletedCannon$prefix, $cannonSent after /wc delete succeeds
targetWorldUpdated$prefix, $cannon, $worldSent after /wc target succeeds
searchCenterUpdated$prefix, $cannonSent after /wc center succeeds
reload$prefix, $countSent after cannon-editing commands rebuild the placements. /wc reload performs a full plugin reload and uses the shared MagmaCore completion message instead.
noPermission$prefix, $cannonSent when a player walks into a cannon they lack requiredPermission for (throttled to once every 3 seconds per player per cannon)
launchCooldown$prefix, $cannon, $seconds, $unitSent when a player enters any cannon before their accepted-launch cooldown expires. $seconds is rounded up; $unit is second or seconds. Notifications are throttled to once every 3 seconds per player per cannon.
cannonDisabled$prefix, $cannonReserved. Disabled cannons are excluded from the tick loop entirely, so the current build never sends this message -- the key is written to messages.yml but nothing reads it.
queueCalibration$prefix, $cannon, $queued, $target, $attemptsSent while a cannon is still preloading and a player walks in. In this message $target is chargedLocationsPerCannon; $attempts is the remaining search-attempt budget before the cannon exhausts
noValidLocationYet$prefix, $cannonFallback for a cannon whose queue is empty at the moment of launch. The current build checks the queue first and sends queueCalibration or noValidLocationFound instead, so this message is not normally shown.
noValidLocationFound$prefix, $cannon, $reasonSent when a player enters a cannon whose queue is empty after it gave up searching (it exhausted searchTimeoutAttempts, or a protection integration failed to load). $reason lists rejection categories encountered during that search window, without counts or frequency ranking.
invalidConfiguration$prefix, $cannon, $reasonSent when a configuration error is detected (e.g. unloaded target world)
statusLine$prefix, $cannon, $status, $queued, $target, $reasonLine format used for each row of /wc list and /wc status. In this message $target is preloadedLocationsPerCannon (the full reserve target, not the charged threshold)
probeAllowed$prefixSent by /wc probe when the protection integrations allow the location; this command does not test terrain or API listeners
probeBlocked$prefix, $plugin, $reasonSent by /wc probe when the location is blocked
unknownCommand$prefixReserved. Unrecognized subcommands are handled by the shared MagmaCore command manager, so the current build never sends this message -- the key is written to messages.yml but nothing reads it.

invalidConfiguration doubles as the generic admin error line: it is also what /wc list / /wc status send when no cannons are placed, and what /wc create, /wc place, /wc remove, /wc delete, /wc target and /wc center send when an id or world cannot be resolved, when /wc create is given an id that already exists, or when a cannon file cannot be saved or deleted.

Status Labels​

The status words used by the floating cannon label, /wc list, and the $status placeholder are configurable.

KeyDefaultShown when
statusLabels.readyReadyThe queue meets chargedLocationsPerCannon; a launch can use a queued destination even below this display threshold
statusLabels.chargingChargingThe cannon is still finding its first safe destination
statusLabels.maintainingMaintainingThe cannon is replenishing its destination reserve
statusLabels.exhaustedExhaustedThe search failure limit was reached before the queue met the charged threshold; any queued destinations remain usable
statusLabels.disabledDisabledThe cannon is disabled in its config. Appears only in /wc list and /wc status, because disabled cannons spawn no floating label.
statusLabels.invalidInvalidReserved; not rendered. An unavailable target world resets the search to SEARCHING and removes destinations for that world. An empty queue displays Charging; $reason reports the unavailable world.

These are raw strings, so gradients and color codes work here too. Whatever you set becomes the $status value in statusLine.

Title Pools​

Several title slots in the launch sequence are configured as a list rather than a single string. Each launch, CannonRTP picks one entry at random from the list. This keeps repeated launches from feeling identical.

KeyPlaceholdersPhaseDescription
titles.launchQueuedTitles$cannonstart of SEARCHINGPool of title strings shown when a launch starts
titles.launchQueuedSubtitles$cannonstart of SEARCHINGPool of subtitles paired with the launch start title
titles.destinationPreviewTitles--SEARCHINGPool of titles shown while randomized coordinates flicker by. One entry is picked when the phase begins and held for the whole phase.
titles.destinationPreviewSubtitle$x, $y, $zSEARCHING (every tick)Single subtitle string showing the flickering randomized coordinates
titles.destinationConfirmedTitles$x, $y, $z, $worldstart of FIRINGPool of titles shown the moment the true destination is locked in
titles.destinationConfirmedSubtitle$x, $y, $z, $worldstart of FIRINGSingle subtitle showing the real destination
titles.arrivalTitles$x, $y, $z, $worldTELEPORTINGPool of titles shown right after the airdrop teleport
titles.arrivalSubtitles$x, $y, $z, $worldTELEPORTINGPool of subtitles shown alongside the arrival title

Placeholders are substituted into the title and its subtitle from the same set, so any placeholder listed for one half of a pair also works in the other. The exception is destinationPreviewTitles: the chosen entry is formatted once when the phase begins, so $x, $y and $z do not resolve there. $prefix resolves everywhere, though it is rarely wanted inside a title.

If a pool is set to an empty list, CannonRTP uses the first entry of its built-in default instead.

Single vs. pool

destinationPreviewSubtitle and destinationConfirmedSubtitle are single strings because they contain dynamic coordinates that must always be rendered. The other title and subtitle slots are pools, and one entry is picked at random from each per launch.

Default Title Pools​

The defaults shipped in messages.yml:

launchQueuedTitles -- Launching, Ignition, Liftoff (orange-gold gradient)

launchQueuedSubtitles -- $cannon (warm gold)

destinationPreviewTitles -- Calibrating, Scanning, Targeting (orange-gold)

destinationConfirmedTitles -- Locked, Set, Engaged (green)

arrivalTitles -- Arrived, Touchdown, Airborne (cool white)

arrivalSubtitles -- Good luck., Stick the landing., Eyes up. Ground soon., Wind check complete. Good luck., Drop zone acquired. Good luck.

Placeholder Reference​

PlaceholderResolved to
$prefixThe value of messages.yml -> prefix
$cannonThe cannon's displayName. In deletedCannon and in most admin-command errors sent through invalidConfiguration, it is the id you typed instead.
$idThe cannon's config id (sanitized lowercase)
$pathAbsolute path to the freshly created cannon config file (only in createdCannon)
$worldTarget world name
$countNumber of cannon placements loaded after the rebuild (one per cannonLocations entry across all cannon files, disabled cannons included)
$queuedCurrent queue size for a cannon
$targetContext-dependent: chargedLocationsPerCannon in queueCalibration, preloadedLocationsPerCannon in statusLine. Both keys live in landing.yml.
$attemptsRemaining search attempts before the cannon exhausts
$secondsRounded-up remaining launch cooldown
$unitsecond or seconds, matching $seconds
$statusThe matching statusLabels.* value -- by default Ready, Charging, Maintaining, Exhausted, or Disabled
$reasonHuman-readable detail of a status or failure
$pluginThe name of the protection plugin that blocked a location
$x, $y, $zCoordinates (one decimal place)

Localization Note​

Every key listed above runs through MagmaCore's color/gradient processor before being shown to the player. Translation packs targeting language in config.yml will be wired in through the same translatable() hook (currently a passthrough in Release 1).