Astral Realms Documentation Help

config.yml Reference

plugins/AstralChat/config.yml controls which servers are in scope, the global broadcast and private-message formats, the social-spy display, and the channel registry.

The other files in the data folder have their own pages: messages.yml, filters.yml, moderation.yml, tags.yml, and groups.yml (see %chat_prefix%).

Default file

enabled-groups: - "spawn" - "build" - "resource" formats: broadcast: "<newline><#cc2626><bold>[Annonce] <#ff3030>%message%<newline>" private-messages: "<hover:show_text:'<#a2d2ff>Clique pour répondre à <#26d971>%sender_name%'><click:suggest_command:'/m %sender_name%'><#93cc89>%sender_name% <gray>›<reset> <#93cc89>%target_name%<gray>:<reset> <#b8ffab><chat>" social-spy: format: "<gray>[[<#cccc88><bold>Spy</bold></#cccc88>]</gray> <#cccc88>%sender% <gray>›<reset> <#cccc88>%recipient%<gray>:<reset> <#ffffaa>%message%" permission: "chat.socialspy" bypass-permission: "chat.socialspy.bypass" channels: global: name: "global" default: true format: "%chat_prefix%%chat_equippedTag_component% <#bababa>%displayName%<gray>:<reset> <#e9e9e9>%message%" filtered: true cooldown: "0s" auto-subscribe: true

Top-level fields

Field

Type

Description

enabled-groups

List<String>

Server group names where AstralChat is active. Servers in other groups load the plugin but do not handle chat. The check uses the group value from AstralCore's ServerInformation.

formats

Object

Global MiniMessage formats — see below.

social-spy

Object

Social-spy configuration — see below.

channels

Map<String, ChatChannel>

Channel registry. The map key is internal; the channel's runtime identifier is the name field. Exactly one channel must have default: true — the plugin resolves it at load and throws if none is set.

disable-all-chat-channels

boolean

Absent/false by default; not in the shipped file. See below.

formats

Field

Type

Description

broadcast

MiniMessage

Output of /broadcast. Use %message% for the broadcast body.

private-messages

MiniMessage

Output of /msg and /reply. Variables: %sender_name%, %target_name%, <chat>.

The private-message format is rendered for both sender and recipient — the same component is sent to each side. Use MiniMessage <hover> and <click> to expose actions (the shipped format suggests /m <sender> on click).

social-spy

Field

Type

Description

format

MiniMessage

Output for spy receivers. Variables: %sender%, %recipient%, %message%.

permission

String

Not read by the current code. /socialspy is gated by the hard-coded astralchat.socialspy node, and spy output goes to whoever has the toggle on. Keep the key for documentation, but changing it changes nothing.

bypass-permission

String

Players with this node are never spied on, regardless of their conversations. This one is read.

channels

See Channels for the full schema and per-field behaviour.

disable-all-chat-channels

disable-all-chat-channels: true

A kill switch for the channel system on this server. When on, AstralChat:

  • registers none of the per-channel commands (/chatstaff, /chatcommerce, …);

  • registers neither DefaultChannelChatListener, ChannelListener nor FiltersListener, so vanilla chat is left completely alone;

  • ignores incoming cross-server chat packets instead of printing them locally.

Everything else — private messages, ignores, tags, nicknames, mentions, the actions, the placeholders and the shared services — keeps working. Use it on a server that needs the plugin's API and its private messages but must not take over chat.

It is independent of enabled-groups: a server outside the enabled groups still registers the listeners, they just return early.

Reloading

/channel reload and /chat reload both call loadConfiguration(), re-reading config.yml, groups.yml, moderation.yml, filters.yml, tags.yml, messages.yml and the menus. Channel pause state survives — it lives in ChannelService and Redis, not in the YAML.

Two things a reload does not redo: the per-channel commands, which are registered once at enable, and the listener registration, so adding a channel with a command: or flipping disable-all-chat-channels needs a restart.

Last modified: 03 September 2026