Installation
1. Pre-flight
Ensure these are reachable from every node:
A MariaDB or PostgreSQL instance with credentials provisioned for AstralCore.
Redis (any 6+ build).
RabbitMQ.
AstralCore, AstralSync, and AstralChat installed and configured.
2. Drop the JAR
Copy AstralTown-<version>.jar into plugins/ on every server that should host towns. AstralTown reads its enabled server list from servers.yml.
3. First start
On first start the plugin generates:
The database schema (12 tables) is applied automatically on the first connection:
Table | Purpose |
|---|---|
| One row per town (name, owner, spawn, MOTD). |
| Town membership rows. |
| Town and subzone roles. |
| Many-to-many between roles and |
| One row per claimed chunk. |
| Cuboid regions. |
| Subzone membership. |
| Subzone-scoped roles. |
| Per-subzone |
| Pending invitations with expiry. |
| Banned-from-town records. |
| Warp definitions. |
| Per-warp visit tracking. |
| Audit log with typed JSON payloads. |
Per-player state (selected town, chat toggle, favourite warps, member-notification toggle) is stored as the TownPlayerData AstralSync snapshot, not in these tables.
4. Configure
Walk through the configuration files in this order:
servers.yml— list the groups where AstralTown is active.config.yml— name length / pattern, claim limits, claim cost formula, wilderness rules, per-permission town quotas. See Configuration.roles.yml— seed roles every new town gets. See Roles.permissions.ymlandsettings.yml— UI icons for the permission/setting menus.messages.yml— localise the 193 strings. See Messages.menus/— every screen players see is an AstralCore menu; tweak freely.
Reload at runtime with /town reload or the relevant subcommand — restart only when changing the database, Redis, or RabbitMQ.
Permissions
There is no fixed astraltown.* permission tree because every action is gated by the town's role-based PermissionType. The two operational permissions you may want to grant explicitly:
Node | Scope |
|---|---|
| Bypass town role checks (staff). |
| Town-creation quotas (see |
See PermissionType in Roles for the full role-based permission catalogue.