Corestone

Install and first start

Install

  1. Stop the server.
  2. Put AdminControl.jar in the plugins/ folder.
  3. Start the server. On the first start with this version the server downloads the text library AdminControl lists (Adventure) from Maven Central into its libraries/ folder, so it needs internet access then; Paper, Purpur and Folia keep using their own copy, Spigot uses the downloaded one. AdminControl creates plugins/AdminControl/ with config.yml, messages_en.yml, messages_pl.yml and, with the default SQLite database, data.db.

The panel listens on port 8080 of all addresses by default (web.host, web.port in config.yml). On a hosting panel, use a port your host gives you.

Plain HTTP is not encrypted. Opened straight on its port, the panel speaks plain HTTP: anyone on the same network (public Wi-Fi, a shared host) can read your password and take over your signed-in session. Before you use the panel from outside your machine, put it behind HTTPS (Panel over HTTPS, or a tunnel such as Cloudflare Tunnel). If you cannot, at least limit it to your own addresses with the IP whitelist and never sign in over public Wi-Fi.

Create the Owner account

With no Owner account yet, the console prints a link valid for 30 minutes:

<public-url or http://host:port><base-path>setup/<token>
  1. Open it in your browser.
  2. Choose a user name and a password (at least 10 characters, not a common password).
  3. Scan the QR code with an authenticator app (Google Authenticator, Authy, 2FAS, ...) and type its code.
  4. The panel shows 10 backup codes once. Keep them somewhere safe: each one signs you in once without the app.

After a restart without an Owner, the console prints a new link; the old one stops working.

Lost access

  • Lost the authenticator app, still have backup codes: sign in with a backup code, then set up the app again in Settings → My account.
  • Lost both: run /ac resetowner in the server console (not in game, not from the panel console, not over RCON). It prints a new setup link. The current Owner accounts are turned off only when the new account finishes its 2FA setup.
  • Locked out by the IP whitelist: run /ac whitelist off in the server console.

On Folia

Everything works as on Paper. Two things differ because Folia ticks each region of the world on its own thread:

  • Dashboard TPS: the TPS tile shows the weakest region that has a player in it (with no one online: the global region), and says so under the number. MSPT shows "–": Folia does not report it per region.
  • Panel console: commands run on Folia's global region. Vanilla commands that act on entities somewhere else in the world may be refused by Folia itself.

On Spigot

Everything works as on Paper, with these differences:

  • First start: Spigot has no Adventure, the text library AdminControl uses, so on the first start the server downloads it from Maven Central into its libraries/ folder (the libraries list of the plugin). The server needs internet access then; without it AdminControl does not load (see Troubleshooting). Paper, Purpur and Folia download the same files but keep using their own Adventure.
  • Dashboard: TPS comes from AdminControl's own tick counter (the last minute). MSPT shows "–": Spigot does not report how long a tick takes.
  • Behind Velocity: Spigot has no modern forwarding. Use bungeecord: true in spigot.yml, Velocity's bungeeguard forwarding mode and BungeeGuard on the server (see Velocity network).

A libraries/ folder copied from another server is trusted as it is. Check every file in the table against these SHA-256 sums, the same files as on Maven Central, before you start the server with them:

File SHA-256
adventure-api-4.21.0.jar 64a765760401e78d433a87dbd4cda57016b303853c6fd1dc97087b5a3aa68133
adventure-key-4.21.0.jar 6a9398c9d402089f9da060a56b45cae7d58cbf199371a6d8ec1a26d8f94cc6bb
adventure-nbt-4.21.0.jar af6ec05f168294a2e688bb3c5211b123bd0d4d78791e24bb7f1139ad98b5eb35
adventure-text-minimessage-4.21.0.jar 51cb4878851b72633bea1d1b5b24e8de34614bc928ae8a1dba96b638e9a4e8c4
adventure-text-serializer-plain-4.21.0.jar 129d69888bb93fe96f512f1e581a1d36f0288361b85e8ec804fd6eecbcef312e
adventure-text-serializer-legacy-4.21.0.jar 9ac1b99f828458e19008f675781a0e8c8517cdfa22a1fc5bb87a7bf69554c35c
adventure-text-serializer-gson-4.21.0.jar 39b51cfa9a04df6e1d2f431d26a697ed619623696cdeb1c00a1afd347c5ce084
adventure-text-serializer-gson-legacy-impl-4.21.0.jar 682f5c59d853f24a40eb89afe4b92b83aa7f67cc85feb4d281c1b42e55b29f30
adventure-text-serializer-json-4.21.0.jar 928717b2dc7645ab616617c0bd55e80a9c0358762b590a0d3c0bbe302b2e5481
adventure-text-serializer-json-legacy-impl-4.21.0.jar ccc0ac5c8052a350bfcaba67ca4d37c7214be5a1f8d92caae38c1cad6cf8bf55
adventure-text-serializer-commons-4.21.0.jar 2eeb26605c723a57e5b63d24c2dd64182153a1486ca8e9f30bcba42d207f2c2a
adventure-text-serializer-bungeecord-4.4.1.jar e1bc376c6dc7a2100016015735ce4ccc534d2b26bf5ab82aac751c5032056c39
adventure-platform-bukkit-4.4.1.jar cdcb3a66abbf9e393614db5deb27f841117c5b5b7ef52753a2c846fd46c9cdf1
adventure-platform-api-4.4.1.jar ec604628c2b7c165ea74c1fcb3a2d0f03359c2c77a14960e3a0bc2e379670ac2
adventure-platform-facet-4.4.1.jar 20f8e6db34d722a4acccbedcc9b6c02e8ee6b3cab9350b06ab3d1c0b0b8b454f
adventure-platform-viaversion-4.4.1.jar df463083060a51403df0cfe3e08e3c8890103bfc707e9235f6279e87c619753f
examination-api-1.3.0.jar c9237ffecb05428f6eff86216246ac70ce0b47b04c08ea7ca35020fde57f8492
examination-string-1.3.0.jar 7d01fc25a4bb3af0e1662685455f4541fbf4626216ea5846e455c1491e156b8c
option-1.1.0.jar 97b69b4b17dfe02217c9131ad342564cbc9aebd04c75eb689639b5f78fd4b11c
gson-2.8.0.jar c6221763bd79c4f1c3dc7f750b5f29a0bb38b367b81314c4f71896e340c40825
annotations-26.0.2.jar 2037be378980d3ba9333e97955f3b2cde392aa124d04ca73ce2eee6657199297
jspecify-1.0.0.jar 1fad6e6be7557781e4d33729d49ae1cdc8fdda6fe477bb0cc68ce351eafdfbab
auto-service-annotations-1.1.1.jar 16a76dd00a2650568447f5d6e3a9e2c809d9a42367d56b45215cfb89731f4d24

Behind a Velocity proxy

Put the same jar on the proxy too and give everything one MySQL or MariaDB database: see Velocity network. Behind BungeeCord or Waterfall: see BungeeCord network.

Update

Stop the server, replace the jar, start the server. The database is updated on start; your settings and data stay. After an update that adds a library, the first start downloads it from Maven Central (see "Install" above). Keep a copy of plugins/AdminControl/ before big updates.