Skip to Content
PluginsAquaCoreConfiguration

Configuration

AquaCore generates four kinds of file on first boot.

    • config.yml
    • messages.yml
    • modules.yml
      • welcome.yml
      • vip.yml

Apply changes with /aqua reload. A file with invalid YAML is rejected and the previous values stay loaded.

config.yml

config.yml
settings: # Prefix prepended to every plugin message. prefix: "&#38ecff&lAqua&#0a84ffCore &8» &r" # Language file to load from /lang. Falls back to 'en'. language: en # Check GitHub for new releases on startup. check-updates: true # Print timings for every broadcast into console. debug: false broadcast: # Only console may run /aqua broadcast. console-only: true # Declared argument keys. Anything not listed here is rejected. custom-args: - player - rank - price # Separator inserted between multi-value arguments. separator: "&8, &r" # Text used by /aqua preview for arguments you did not supply. preview-fallback: "&7<none>" # Seconds a sender must wait between broadcasts. 0 disables it. cooldown: 3 heads: # Pixels per head line. 8 is the classic look. resolution: 8 # How long a fetched skin stays cached, in minutes. cache-minutes: 60 # Character used to paint each pixel. symbol: ""
KeyTypeDefaultEffect
settings.prefixstring&#38ecff&lAqua…Prepended to plugin output, not to templates
settings.languagestringenFile loaded from lang/<value>.yml
settings.check-updatesbooleantrueOne HTTPS call on startup, nothing else
settings.debugbooleanfalseVerbose console timings
broadcast.console-onlybooleantrueBlocks players even with the node
broadcast.custom-argslist3 entriesUndeclared args reject the broadcast
broadcast.separatorstring&8, &rUsed for a;b;c values
broadcast.cooldowninteger3Seconds; aquacore.bypass.cooldown ignores it
heads.resolutioninteger88, 16 or 32; higher is slower
heads.cache-minutesinteger600 disables caching

heads.resolution: 32 produces 32 chat lines per head. It looks great in a screenshot and terrible in a live chat. Keep it at 8 unless you know exactly what you are doing.

messages.yml

Every string the plugin can print. Set a value to "" to silence that message entirely.

messages.yml
general: no-permission: "&cYou don't have permission to do that." player-only: "&cThis command can only be executed by a player." console-only: "&cThis command can only be executed from console." reload-success: "&aReloaded &f{files} &afiles in &f{ms}ms&a." reload-failed: "&cReload aborted — &f{file} &cline &f{line}&c: {reason}" broadcast: unknown-template: "&cUnknown template: &f{template}" unknown-argument: "&cArgument does not exist: &f{argument}" missing-argument: "&cMissing required argument: &f{argument}" malformed: "&cMissing '(' or ')' in arguments." cooldown: "&cWait &f{seconds}s &cbefore broadcasting again."
PlaceholderAvailable in
{files}, {ms}general.reload-success
{file}, {line}, {reason}general.reload-failed
{template}broadcast.unknown-template
{argument}broadcast.unknown-argument, broadcast.missing-argument
{seconds}broadcast.cooldown

modules.yml

modules.yml
modules: broadcast: true messages: true placeholders: true heads: false webhook: false metrics: true

See Overview → Modules for what each one provides.

Template files

One file per template, inside templates/. The file name is the template name — vip.yml is fired with /aqua broadcast vip.

templates/welcome.yml
# Optional node required to fire this template. permission: aquacore.template.welcome # Arguments that MUST be supplied or the broadcast is rejected. required-args: - player chat: - "" - " &#38ecff&l{player} &fjoined the server" - " &7Rank: &#0a84ff{rank}" - "" title: enabled: true text: "&#38ecff{player}" subtitle: "&7welcome aboard" fade-in: 10 stay: 40 fade-out: 10 actionbar: enabled: false text: "&7{player} joined" bossbar: enabled: false text: "&#38ecff{player} &fjoined as &#0a84ff{rank}" color: BLUE style: SOLID seconds: 6 sound: enabled: true name: ENTITY_PLAYER_LEVELUP volume: 1.0 pitch: 1.2 head: enabled: false # Chat lines are rendered to the right of the head. lines: - "&#38ecff&l{player}" - "&7Rank: &#0a84ff{rank}" webhook: enabled: false url: "https://discord.com/api/webhooks/…" title: "New rank purchased" description: "**{player}** bought **{rank}** for **{price}**" color: "#38ecff" thumbnail: "https://mc-heads.net/avatar/{player}"

Field reference

SectionKeyTypeNotes
permissionstringOptional. Omit for no restriction
required-argslistMissing one rejects the broadcast
chatlistEmpty strings render as blank lines
titlefade-in / stay / fade-outticks20 ticks = 1 second
bossbarcolorenumPINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE
bossbarstyleenumSOLID, SEGMENTED_6, SEGMENTED_10, SEGMENTED_12, SEGMENTED_20
soundnameenumAny Bukkit Sound constant
soundpitchfloat0.52.0
headlineslistMax 8 lines, matches head height
webhookcolorHEXWith or without the leading #

Never commit a template containing a real webhook.url to a public repository. Discord invalidates leaked webhooks, and anyone who finds it can post to your server’s channel until it is revoked.

A section with enabled: false is skipped entirely — its other keys are not even parsed, so you can leave half-finished configuration in place while you work on it.

Last updated on