Installation
1. Pre-flight
Make sure these are running before installing AstralChat:
A Redis server reachable by every game server.
A RabbitMQ broker reachable by every game server.
A MariaDB or PostgreSQL database with credentials provisioned for AstralCore.
LuckPerms, CraftEngine, AstralCore, and AstralSync installed on every node that should run AstralChat (all four are hard
depends — the plugin will not enable without them).Optionally LiteBans (
softdepend, used for the mute check in per-channel commands) and a moderation classifier endpoint for auto moderation.
2. Drop the JAR
Copy AstralChat-<version>.jar into the plugins/ directory of each server that should participate in chat. AstralChat reads its enabled server list from config.yml; servers that are not in enabled-groups load the plugin but stay silent — see Configuration.
3. First start
On first start the plugin generates:
The menus/ folder is not generated — MenuContainer only loads what is already there. Create plugins/AstralChat/menus/ and put an ignored-list menu in it, otherwise /ignore with no argument fails with the unexpected-error message.
The database schema is applied automatically — see Database.
4. Configure
config.yml— setenabled-groups, define your channels, tweak the social-spy format. See Configuration and Channels.messages.yml— localise every player-facing string. See Messages.filters.yml— enable filters and set their thresholds. See Filters.groups.yml— list your LuckPerms groups underfree/paid/staffso the%chat_prefix%placeholder can pick the right prefix.tags.yml— define equippable chat tags. See Chat Tags.moderation.yml— point at your classifier, set thresholds, and decide what is recorded. See Auto Moderation. Leaveurlempty to keep the classifier off.
Reload at runtime with /chat reload or /channel reload — no restart required.
Permissions
Command permissions
Node | Command |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
| Required on top of every |
|
|
|
|
|
|
|
|
|
|
Other nodes
Node | Grants |
|---|---|
| Bypass per-channel cooldowns. |
| Skip |
| Cannot be ignored: this player's messages are always delivered, and |
Social spy
/socialspy is gated by the hard-coded astralchat.socialspy node. The social-spy.permission key in config.yml is not read by the current code; only social-spy.bypass-permission (shipped default chat.socialspy.bypass) is, and it marks players who must never be spied on.
Per-channel access
The permission field on a channel definition is the runtime permission node — there is no fixed prefix. The default config.yml uses chat.channel.<name> (e.g. chat.channel.staff), but you can pick any string.
Database schema
AstralChat ships with schema.sql that creates three tables on first start:
Table | Holds |
|---|---|
| One row per ignore relationship. |
| Every stored message — public channel messages ( |
| One row per recorded moderation decision, plus the human labels. Its schema is documented on the Auto Moderation page. |
Per-player chat state (equipped tag, toggles, subscriptions, nickname) is stored as a PlayerChatData AstralSync snapshot, not in these tables.