WorldCannon Configuration
WorldCannon uses one global config file plus one config file per cannon.
File Layout
- Global config:
plugins/FunRTP/config.yml - Per-cannon configs:
plugins/FunRTP/custom/fun_rtps/<id>.yml
The plugin also ships an example cannon package named example_world_cannon. It is disabled by default.
Global Config Structure
The main config is organized under:
runtime.*landing.*messages.*protection.*
Runtime Settings
| Key | Default | Behavior |
|---|---|---|
runtime.scanIntervalTicks | 10 | How often cannons check for nearby players |
runtime.particleIntervalTicks | 15 | How often idle cannon particles render |
Landing Search Settings
| Key | Default | Behavior |
|---|---|---|
landing.searchAttemptsPerTick | 2 | Search attempts per cannon per tick while preloading |
landing.preloadedLocationsPerCannon | 5 | Number of safe destinations the plugin tries to keep queued |
landing.searchTimeoutSeconds | 1000 | Time before a still-searching cannon is marked exhausted |
landing.slowFallingSeconds | 60 | Slow Falling duration after arrival (effect is removed early when the player lands) |
landing.failOpenOnProtectionErrors | false | If a protection API errors, block the landing by default |
Landing Sounds
The following sound keys are configurable:
landing.sounds.levitationStart.soundlanding.sounds.levitationStart.volumelanding.sounds.levitationStart.pitchlanding.sounds.blastOff.soundlanding.sounds.blastOff.volumelanding.sounds.blastOff.pitch
Default sounds are BLOCK_BEACON_ACTIVATE for warmup and ENTITY_GENERIC_EXPLODE for blast-off.
Unsafe Material Lists
WorldCannon rejects candidate landing spots based on two material lists:
landing.unsafeGroundMaterialslanding.unsafeBodyMaterials
Default unsafe ground materials:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
Default unsafe body materials:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
Message Settings
The plugin exposes message and title keys under:
messages.prefixmessages.helpHeadermessages.createdCannonmessages.deletedCannonmessages.movedCannonmessages.targetWorldUpdatedmessages.searchCenterUpdatedmessages.reloadmessages.noPermissionmessages.cannonDisabledmessages.queueCalibrationmessages.noValidLocationYetmessages.noValidLocationFoundmessages.invalidConfigurationmessages.statusLinemessages.probeAllowedmessages.probeBlockedmessages.unknownCommandmessages.titles.launchQueuedTitlemessages.titles.launchQueuedSubtitlemessages.titles.destinationPreviewTitlemessages.titles.destinationPreviewSubtitlemessages.titles.destinationConfirmedTitlemessages.titles.destinationConfirmedSubtitlemessages.titles.arrivalSubtitles
The title keys control the automatic launch and arrival messaging. arrivalSubtitles is a list; the plugin picks one line at random each launch. There is no manual confirmation prompt in the current implementation.
Per-Cannon Config Fields
Each cannon file stores these fields:
| Field | Default | Notes |
|---|---|---|
isEnabled | true for newly created cannons | Disabled cannons do not trigger |
displayName | Sanitized id with underscores turned into spaces | Used in messages and status output |
cannonLocation | Required | Where the cannon trigger exists |
targetWorld | Current world at creation time | Must be loaded at runtime |
searchCenter | Current world spawn at creation time | If unset later, the plugin falls back to the target world's spawn |
triggerRadius | 1.75 | Radius used to detect nearby players |
minSearchRadius | 500 | Minimum landing search distance from the search center |
maxSearchRadius | 5000 | Maximum landing search distance from the search center |
launchWarmupSeconds | 6 | Levitation/countdown time before launch |
verticalBoostTicks | 45 | Ticks of upward velocity before teleport |
verticalBoostVelocity | 1.35 | Upward velocity applied during launch |
enableParticles | true | Controls idle cannon particles |
requiredPermission | blank | Optional extra permission gate for that cannon |
Cannon Creation Defaults
When you run /wc create:
- the cannon id is lowercased and characters other than
a-z,0-9,_, and-are replaced with_ - the display name defaults to the sanitized id with underscores converted to spaces
cannonLocationis set to your current locationtargetWorldis set to your current worldsearchCenteris set to that world's spawn
Runtime Validation Behavior
WorldCannon rejects candidate landing locations when any of these checks fail:
- the target world is unloaded
- the search center is invalid
- the random sample lands outside the world border
- no safe solid surface is found
- the feet or head space is blocked
- the terrain or body blocks match the configured unsafe material lists
- a protection integration blocks the landing
If a cannon cannot find valid locations before landing.searchTimeoutSeconds, it becomes exhausted and starts returning the configured failure message instead of launching players.