Skip to content

Configuration ​

Each half of the plugin has its own config.yml:

HalfWhere the file is
The proxy (Velocity)plugins/appeltools/config.yml
The backend (Paper)plugins/AppelToolsPaper/config.yml

The file is written on the first start, with every key and its default. From then on the plugin reads your file and writes it back on every start. Your own values are never overwritten.

What happens to a key that is missing ​

A key that is not in your file is written into it, with the default that is built into the plugin. The plugin rewrites the whole file on every start: your own values are never overwritten, and every key that the plugin knows is in the file afterwards.

That is what makes a file that was made before a key existed grow. The discord.channels keys of a file that predates the channels show up on the next start — empty, ready to be filled in.

The three sections that the plugin manages itself — modules, server and two-factor — are written back from the running plugin, so a value that the plugin changed itself (a module that was switched off) is in the file too.

WARNING

A key that the plugin does not know is dropped the next time the file is written. A typo in a key name does not sit there unnoticed: the key is gone after the next start.

TIP

A key that you delete on purpose comes back with its default on the next start. Delete the value — set it to false, 0 or "" — if you want it to be off.

The same goes for messages.yml: the sections that the plugin manages are completed on every start, so a message that a newer version added shows up with its default. A key that you delete on purpose stays deleted.

How the keys are named ​

The keys are in lower kebab case, whatever the name of the setting is in the code:

In the codeIn config.yml
Config.Teleport.COOLDOWN_SECONDSteleport.cooldown-seconds
CommonConfig.ServerInfo.RECORD_PLAYER_IPSserver.record-player-ips
Config.Modules.Punishment.IP_BANmodules.punishment-system.ip-ban

Reading it again ​

/atp reload and /atv reload read the file again without restarting the server. The messages file is read again as well.


The proxy: config.yml ​

discord ​

The Discord bot. It is off until you fill in a token.

KeyDefaultWhat it does
discord.token""The token of the bot. Empty means the bot is not started.
discord.activityplay.example.comThe text the bot shows as its activity.
discord.staff-roles[]The roles that are mentioned in the messages of the bot.
discord.admin-roles[]The roles that may run the slash commands of the bot. Empty means nobody may.
discord.channels.staff-notifications""The joins, the leaves, the switches and the vanishments of the staff.
discord.channels.reports""The reports of the players and the notes of the staff.
discord.channels.punishments""The punishments that were given.
discord.channels.log""Missing plugins, the maintenance mode, the restarts, the crashes and the servers that stopped answering.

A channel with an empty id is switched off: nothing is sent into it.

TIP

A file that was made before the channels and the roles existed gets them added on the next start — see what happens to a key that is missing. Fill in the ids of your channels and restart the proxy.

See the Discord page for the whole picture.

chat-filter ​

KeyDefaultWhat it does
chat-filter.enabledtrueThe filter runs at all.
chat-filter.curse-words[]The words that are not allowed in chat.
chat-filter.block-advertisingtrueBlocks the messages that look like an advertisement.

announcements ​

KeyDefaultWhat it does
announcements.enabledtrueNot read by the plugin — the interval below is what decides.
announcements.interval120sThe time between two announcements. 30s, 5m, 1h — all of those work. An interval of 0 switches the announcements off.

modules ​

Every feature sits behind a toggle. Switch a module off and its commands and its listeners disappear; the rest of the plugin keeps working.

KeyDefaultWhat it turns off
modules.appeltools.enabledtrueThe plugin itself.
modules.appeltools.chat-modifiertrueThe chat modifier of the proxy.
modules.broadcast.enabledtrue/broadcast.
modules.maintenance.enabledtrueThe maintenance mode.
modules.maintenance.icontrueThe icon of the maintenance mode in the server list.
modules.maintenance.motdtrueThe maintenance text in the server list.
modules.maintenance.player-list-hovertrueThe maintenance text when you hover a player in the list.
modules.maintenance.versiontrueThe maintenance text in the version line.
modules.message-system.enabledtrueThe private messages.
modules.message-system.ignoretrue/ignore and /unignore.
modules.message-system.spytrue/staffspytoggle.
modules.punishment-system.enabledtrueAll the punishments.
modules.punishment-system.bantrue/ban.
modules.punishment-system.tempbantrue/tempban.
modules.punishment-system.unbantrue/unban.
modules.punishment-system.kicktrue/kick.
modules.punishment-system.ipkicktrue/ipkick.
modules.punishment-system.mutetrue/mute.
modules.punishment-system.tempmutetrue/tempmute.
modules.punishment-system.unmutetrue/unmute.
modules.punishment-system.ipmutetrue/ipmute.
modules.punishment-system.tempipmutetrue/tempipmute.
modules.punishment-system.ipunmutetrue/ipunmute.
modules.punishment-system.ipbantrue/ipban.
modules.punishment-system.tempipbantrue/tempipban.
modules.punishment-system.ipunbantrue/ipunban.
modules.report.enabledtrueThe reports.
modules.restart-server.enabledtrue/restartserver.
modules.rules.enabledtrue/rules.
modules.server-info.enabledtrueThe server information in the server list.
modules.server-info.icontrueThe icon of the server in the server list.
modules.server-info.motdtrueThe text of the server in the server list.
modules.server-info.player-list-hovertrueThe text when you hover a player in the list.
modules.server-info.versiontrueThe text in the version line.
modules.staff.enabledtrueThe staff features of the proxy.
modules.staff.chattrueThe staff chat.
modules.staff.listtrue/stafflist.
modules.staff.version-listtrue/versionlist.
modules.staff.modetrueThe staff mode.
modules.staff.notificationstrueThe staff notifications.
modules.party.enabledtrueThe parties.
modules.friends.enabledtrueThe friends.
modules.plugin-updater.enabledfalseNot read by the plugin — the updater commands are always there.
modules.servers.enabledtrue/servers.

required-plugins ​

A list of plugin names. When one of them is missing, the proxy refuses to start. It is empty by default.

server ​

KeyDefaultWhat it does
server.nameExampleThe name of the server, shown in the messages.
server.ipplay.example.comThe address of the network, used in the messages and in the restart.
server.localenlThe language: en or nl. It decides the words of the durations and the words of "on" and "off". A locale that the plugin does not know falls back to Dutch. It needs a restart.
server.join-message""The message that is broadcast when a player joins. Empty means nothing is said. {SERVER_NAME} and {PLAYER} are filled in.
server.record-player-ipstrueRemembers the address every player joins with. Those addresses are what /alts and /geoip work with.
server.record-private-ipsfalseAlso remembers the addresses that cannot be attributed to a player. Off by default: behind a proxy every player joins with the address of the proxy, and recording it would make every account of the network an alt of every other one. Turn it on for a server that only serves a local network.

database ​

KeyDefaultWhat it does
database.host0.0.0.0The host of the MySQL server.
database.port3306The port.
database.namedatabaseThe name of the database.
database.usernameusernameThe user.
database.passwordpasswordThe password.
database.sslfalseWhether the connection is encrypted.
database.debugfalseNot read by the plugin.

The proxy and every backend point at the same database — that is what makes a ban on one server count on the others.

two-factor ​

KeyDefaultWhat it does
two-factor.enabledtrueThe two-factor is switched on.
two-factor.server-key""The key the secrets of the staff are encrypted with. A dump of the database does not reveal a secret without it. Leave it empty and the proxy writes a random key into the file.
two-factor.trusted-ip-days3How many days an address stays trusted. A trusted address is not asked for a code again as long as it stays the same.

See the two-factor page.

plugins ​

The plugins that the plugin updater watches. It is empty by default and the module is off. See the plugin updater page for the keys each provider needs.


The backend: config.yml ​

economy ​

KeyDefaultWhat it does
economy.start-balance0.0The balance a new account starts with.
economy.transaction-history-days0How long the log of the balance changes is kept, in days. Zero keeps it for ever.

modules ​

KeyDefaultWhat it turns off
modules.root.enabledtrueThe plugin itself.
modules.economy.enabledtrueThe economy.
modules.staff.enabledtrueThe staff tools of the backend.
modules.gamemode.enabledtrueThe gamemodes.
modules.chat-modifier.enabledtrueThe chat modifier of the backend.
modules.speed.enabledtrueThe speed commands.
modules.teleport.enabledtrueThe teleport commands.
modules.home.enabledtrueThe homes.

required-plugins ​

A list of plugin names. When one of them is missing, the backend refuses to start. It is empty by default.

teleport ​

KeyDefaultWhat it does
teleport.cooldown-seconds3The time between two teleports. A player with appeltools.command.teleport.bypasscooldown skips it.
teleport.request-timeout-seconds60How long a teleport request stays open before it expires.

server ​

KeyDefaultWhat it does
server.nameExampleThe name of the server, shown in the messages.
server.ipplay.example.comThe address of the network.
server.localenlThe language: en or nl. It decides the words of the durations and the words of "on" and "off". It needs a restart.
server.record-player-ipstrueRemembers the address every player joins with.
server.record-private-ipsfalseAlso remembers the addresses that cannot be attributed to a player.
server.ipinfo-token""The token of the ipinfo.io account that /geoip uses. Empty means the request is made without a token: the service answers anyway, but the country is then shown as its two-letter code and the rate limit is lower.

database ​

The same keys as on the proxy, and the same database. See above.

two-factor ​

KeyDefaultWhat it does
two-factor.enabledtrueThe backend enforces the two-factor. The proxy owns the state of it.
two-factor.trusted-ip-days3How many days an address stays trusted.

The backend has no server-key: the key lives on the proxy, because that is where the secrets are.

plugins ​

The plugins that the plugin updater watches on this backend. See the plugin updater page.

Built with VitePress.