Privacy and license check
What leaves your server
At each server start, AdminControl makes one HTTPS request to the seller's site to download the list of revoked copies (for example copies leaked from a buyer who had their payment reversed). The request carries:
| Header | What it is |
|---|---|
X-AC-Protocol |
Version of this request format. |
X-AC-User |
Your BuiltByBit user number (written into the jar you downloaded). |
X-AC-Resource |
The BuiltByBit resource number of AdminControl. |
X-AC-Nonce |
The number of your download. |
X-AC-Server |
A random id of your server folder (plugins/AdminControl/server-id). |
X-AC-Version |
The AdminControl version. |
X-AC-Platform |
The server software and version, for example Paper 1.21.4. |
User-Agent |
AdminControl/ and the version. |
A Velocity proxy with AdminControl makes the same request when it starts, with Velocity and its version as the
platform; its id and saved list are in plugins/admincontrol/ on the proxy.
Nothing else is sent: no players, no chat, no panel accounts, no configuration, no statistics. The seller's site sees the address your server connects from, like any website does. Apart from the optional requests below, the panel contacts no one; your data stays in your database.
Optional features you set up yourself send data where you point them: the Discord webhook sends the events you choose to your Discord, and player heads are downloaded from Mojang's skin servers.
With DiscordSRV, the notifications you route to its channels are sent by DiscordSRV's bot to your Discord. The ID and name of the Discord account a player linked in DiscordSRV are stored in your database and shown in the panel to those who may see IP addresses. A Discord user whose linked account is muted or banned gets a private message from the bot with the punishment's reason and end when their message is held.
With CoreProtect, the panel reads a player's CoreProtect entries from CoreProtect itself when someone opens their
CoreProtect tab (in a network, a page from another server passes through AdminControl's database and is removed as
soon as it is read) and shows them to those who may see players
(players.view); chat and commands from CoreProtect only to those who may read the chat log (chat.view). Rollbacks
and restores are stored with who asked for them and how they ended on each server.
With EssentialsX, a player's Essentials nickname, jail (its name and end) and AFK state are stored in your database
and shown in the panel to those who may see players (players.view).
For Bedrock players (Geyser and Floodgate), whose skins Mojang does not have, the server asks GeyserMC's API
(https://api.geysermc.org) for the skin when the panel first shows their head, so GeyserMC sees the server's
address. The request carries the player's Xbox user id; the answer is a texture on Mojang's skin servers. A skin
GeyserMC does not have is asked for again after 24 hours; when GeyserMC cannot be reached or refuses (a rate limit),
or the texture does not load, after 5 minutes. These waits are kept in memory only: after a restart the first head
shown asks again. The option is on by default, also after an update. Set bedrock.geysermc-skins: false in
config.yml to send nothing: Bedrock players then get the default head.
When there is no internet
The check waits at most 2 seconds. Without an answer, AdminControl uses the last list it saved
(plugins/AdminControl/license-cache.json), and without one it simply starts. A running server is never stopped by
the check.
A revoked copy
A copy on the list does not start: the console says it was revoked and where to buy a license. If you think your
copy was revoked by mistake, contact the seller with your BuiltByBit user name; /ac version shows the user number
of your copy.
Your data
Everything AdminControl stores (players, punishments, chat, the audit log, statistics) is in your database. How long chat, private messages, the audit log and statistics are kept is set in Settings → Server → Data retention, and so is how long players' addresses, game sessions and former names are kept (Player addresses, sessions and former names, 365 days by default, 30 at least): after it they are removed, and a player not seen for that long keeps no address at all (an IP ban of them is then refused). The chat copied into a report goes with the chat log once the report is closed. Players and their punishments themselves stay. Private messages are logged only while Settings → General → Log private messages is on.