Skip to content

AetherSky Storage

LocoShailo edited this page Nov 7, 2026 · 1 revision

Storage & Performance

SQLite (default)

No setup needed. Data is stored in plugins/AetherSky/islands.db. SQLite runs in WAL mode with a single connection, which is the safest setup for one server.

MySQL / MariaDB

storage:
  type: MYSQL
  mysql:
    host: localhost
    port: 3306
    database: aethersky
    username: aethersky
    password: 'change-me'
    properties: 'useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf8'
    pool-size: 8
  1. Create the database first (CREATE DATABASE aethersky;) and a user with full rights on it.
  2. Set type: MYSQL and restart the server. The tables are created automatically.

Switching between SQLite and MySQL does not copy existing data. The grid counter in aether_islands/aethersky-grid.properties makes sure new islands are never placed on top of the old ones, but old islands are not available in the new database.

Tables

Table Contents
aether_islands One row per island: owner, mode, grid cell, centre, phase & progress, total breaks, XP, level, spawn, upgrades, settings.
aether_members Island members and their role.
aether_inventories The inactive Normal/Island inventory, ender chest and XP of each player.
aether_meta Internal values (grid counter, grid spacing).

How saving works

  • All islands are loaded into memory asynchronously at startup. Until that finishes, /is answers Island data is still loading.
  • Island lookups (protection, OneBlock, border) are in-memory hash lookups, so they cost practically nothing.
  • Every database query runs on one dedicated database thread through a HikariCP connection pool, never on the main thread. Writes for the same island are always applied in order.
  • Important changes (create, delete, members, upgrades, settings, phase changes) are saved immediately. Frequent changes (block counters, XP) are saved every autosave-seconds and on shutdown.
  • Inventory profiles are loaded during the async login phase, so swapping inventories costs no database time.

Performance notes

  • The void world generator skips every vanilla generation step, so new chunks are almost free.
  • Island creation loads the chunks asynchronously; a delete wipes the island area spread over several ticks (max. 6000 blocks per tick).
  • The personal world border is only recalculated when a player crosses into another grid cell, teleports or levels up.

Backups

Back up these together:

  • plugins/AetherSky/ (config, phases and islands.db), or your MySQL database
  • the aether_islands/ world folder (includes aethersky-grid.properties)

Clone this wiki locally