> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://aetherskywarswiki.netlify.app/api/mcp` to find what you need.

# Installation

What the server needs, how to install the plugin, and what appears after the first start.

<img src="/flow-first-start.svg" alt="The first start downloads its libraries and writes every config file" />

## Requirements

Check all of these before you start. The plugin refuses to enable if the first three are not met.

* Minecraft **1.21.11 or newer**, on Spigot, Paper, Purpur, or a fork of those
* **Java 21** or newer
* **WorldEdit** or **FastAsyncWorldEdit** installed and enabled
* Outbound internet access on first start, see [First start needs internet](#first-start-needs-internet)

:::warning
WorldEdit is a hard dependency. Without it the server will not load AetherSkyWars at all.
It is used to paste and copy arena schematics.
:::

:::note
Anything older than 1.21.11 is not supported. If you start the plugin on an older server it
logs the version it found, the version it needs, and shuts itself down. This is deliberate,
not a bug. See [FAQ](/help/faq).
:::

### Optional plugins

None of these are required. Install the ones you want.

| Plugin | What it adds |
| --- | --- |
| PlaceholderAPI | Match counts, player stats, and leaderboard positions in other plugins. See [Placeholders](/reference/placeholders). |
| Vault | Lets AetherSkyWars use your server economy instead of its own coins. See [Configuration](/configuration/configuration). |
| DecentHolograms | Floating leaderboard displays. See [Signs and holograms](/features/signs-and-holograms). |
| Multiverse-Core or My\_Worlds | Stops other world managers fighting over arena worlds. |
| RealRegions | Region handling on arena worlds. |

## Install

Follow these in order.

:::steps
##### Stop the server

Do not drop the jar into a running server. The plugin registers worlds and listeners at
startup and a hot reload will leave you with half loaded arenas.

##### Install WorldEdit

If it is not there yet, put it in `plugins/`.

##### Drop in the AetherSkyWars jar

Put it in `plugins/` next to WorldEdit. Keep the file name the server gave you, there is
nothing to rename.

##### Start the server

Watch the console. See [First start](#first-start) for what you should see.

##### Stop the server again

Once startup finishes cleanly, so you can edit the generated config files. You can also edit
most settings in game later with `/asw settings`.
:::

### First start needs internet

On the very first start the plugin downloads a few libraries it does not ship inside the jar,
and puts them in `plugins/AetherSkyWars/lib`. This keeps the download small.

:::info
The machine needs outbound HTTPS access the first time you run the plugin. On an air-gapped
box, start the plugin once on a machine with internet, then copy the whole
`plugins/AetherSkyWars/lib` folder across.
:::

## First start

A successful startup logs, in roughly this order:

```text
[AetherSkyWars] Runtime libraries ready in 1400ms.       # [1]
[AetherSkyWars] Server version: 1.21.11                  # [2]
[AetherSkyWars] Loaded 6 kits.
[AetherSkyWars] Loaded 0 maps.                           # [3]
[AetherSkyWars] Hooked on PlaceholderAPI!                # [4]
[AetherSkyWars] Vault not found. Local currency will be used.
[AetherSkyWars] Finished loading in 2.1 seconds.
```

1. The library download from above. Only slow the first time.
2. The version check. If this line is followed by a shutdown, your server is too old.
3. Zero maps is correct on a fresh install. You have not built one yet.
4. Hook lines only appear for optional plugins you actually have.

:::details[Startup failed? Open this]
| Message | What it means |
| --- | --- |
| `requires Minecraft 1.21.11 or newer` | Your server is too old. Update the server, there is no compatibility mode. |
| `Unknown/Unsupported API version` | The server is too old to read the plugin at all. Same fix as above. |
| `depend WorldEdit` | WorldEdit is missing or failed to load. Install it, then restart. |
| `No Languages have been detected` | The `languages` folder is empty or every file in it failed to parse. Delete the folder and restart to regenerate it. See [Messages and languages](/configuration/messages-and-languages). |
| `Error while creating Database Manager` | The database settings are wrong or the server is unreachable. Check [Storage](/configuration/storage). |

Still stuck? Bring the full startup log to [Discord](https://discord.arrowtan.cc).
:::

## Anonymous statistics

The plugin reports to ArrowStats, which is how we know which server
versions and setups to keep supporting. A report goes out every 30 minutes on a background
thread and never blocks the server.

What is sent: player and server count, Minecraft version, server software, online mode, plugin
version, Java version, operating system, architecture, and CPU core count. Nothing about your
players, your worlds, or your config. Your location is worked out from the request address on
the server side, the plugin never sends it.

To opt out, set `enabled: false` in `plugins/ArrowStats/config.yml`. That file sits outside the
AetherSkyWars folder because it is shared: turning it off opts the server out of every plugin
that uses ArrowStats, not only this one.

## The plugin folder

After the first start, `plugins/AetherSkyWars` looks like this.

| Path | What it is |
| --- | --- |
| `config.yml` | Main settings: timings, events, coins, toggles. See [Configuration](/configuration/configuration). |
| `items.yml` | Every item in a hotbar or menu, and which slot it sits in. See [Items and slots](/configuration/items-and-slots). |
| `lobby.yml` | Where players land when they leave a match. Written by `/asw setlobby`. |
| `storage.yml` | Database connection. SQLite by default. See [Storage](/configuration/storage). |
| `kits.yml` | Kit definitions, prices, and permissions. See [Kits](/features/kits). |
| `shops.yml` | Cage blocks, win blocks, bow particles, spectator shop. See [Shop and cosmetics](/features/shop-and-cosmetics). |
| `achievements.yml` | Coin payouts for kill, win, and games-played milestones. |
| `tiers/` | The three chest loot tables, one file per tier. See [Chests and loot](/features/chests-and-loot). |
| `maps.yml` | Generated. Every arena you create. Edit through the menus, not by hand. |
| `languages/` | One file per language. Copy one to add your own. |
| `maps/` | Drop arena schematics here. `default` arenas also keep their saved world folder here. |
| `lib/` | Downloaded libraries. Do not edit, safe to delete if you want them re-fetched. |
| `AetherSkyWars.db` | The SQLite database, if you left storage on the default. |

:::danger
Do not hand edit `maps.yml` while the server is running. Arena data is written back on
shutdown and your edits will be overwritten. Use `/asw editmap` and the map menus instead.
:::

## Next steps

1. Set the lobby players return to: stand where you want it and run `/asw setlobby`.
2. Build your first arena: [Creating an arena](/features/creating-an-arena).
3. Give your staff and players the right nodes: [Permissions](/configuration/permissions).
