Running a server
Troubleshooting
Start here every time: /chorus status. Most of what gets reported as a bug is one of its
lines saying something the owner did not expect.
For a bug report, /chorus debug prints everything worth pasting in one block.
The plugin will not start#
| The console says | What it means |
|---|---|
| Something about downloading a library | The first start needs internet to fetch HikariCP and the database drivers into the server's libraries/ folder. Start it once on a machine with internet and copy that folder across. |
| An SQL error at startup | The database is unreachable, or the credentials are wrong. Check the storage section. |
| "This is Folia, but its schedulers could not be reached" | The jar is older than the Folia build it is running on. Update the plugin. It refuses to start on purpose — see Folia. |
| Nothing at all, and no commands work | Another plugin failed before this one and took the server's plugin loading with it. Read further up the log. |
A command says "unknown command"#
- Its module is switched off — check
enabled: trueat the top of that module's file. - You are using an alias that another plugin already owns. Try the real name.
aliases.ymlwas changed without a restart. Aliases need one.
A command that is switched off with enabled: false answers rather than being unknown, so
"unknown command" is always one of the three above.
A command says the player is not allowed#
/commands run as that player lists everything they may actually use. If it is missing
there, the permission is not reaching them.
Common causes:
- The permission is on the group but the player is not in it.
- A parent group sets it to
false, which beats an inheritedtrue. - Aiming at somebody else needs
.others, which is a separate node. - A numbered node was given as a wildcard:
chorus.home.limit.*carries no number and cannot raise the cap. See Permissions.
A change to a config file did nothing#
Did you run /chorus reload? |
Files are read at startup and on reload only. |
Was it the storage section? |
Needs a full restart. |
Was it aliases.yml? |
Needs a full restart. |
| Did you add or remove a custom command? | Needs a full restart. |
| Is the YAML valid? | A file that will not parse is reported in the console and the old values stay. |
The most common YAML mistake here is worlds: [ !event ] — a bare ! at the start of a value
is a type tag, so it has to be worlds: [ '!event' ].
Prices are not being charged#
economy.enabledisfalse.economy.providerisvaultand there is no Vault installed — every price is then ignored rather than refusing the command.- The player holds
chorus.bypass.price. - The command did not actually succeed. Prices are charged on success only, which includes a teleport that was cancelled during its warmup.
/chorus status says which economy is in use.
Money is wrong after installing another economy plugin#
provider: auto hands over to any economy plugin that registers with Vault. If two sets of
balances now exist, that is what happened.
Set provider: self to keep using the built-in ledger whatever else is installed, or
provider: vault to commit to the other one.
Teleports land players in a wall, or refuse to land them#
teleport:
safe-landing: true
safe-landing-radius: 5On, it looks for somewhere to stand. Turn it off if your warps are deliberately in mid-air — otherwise it will try to helpfully move a player who was supposed to fall.
A warmup never finishes#
cancel-on-move cancels on any movement, including the small one from a player nudging the
mouse on some clients. Either raise the tolerance by lowering warmup-seconds, or grant
chorus.teleport.instant to the ranks that should not wait.
Taking damage cancels it too, which on a server with mobs at spawn is often the real cause.
A chest shop will not be made#
Nothing happens on writing [Shop] |
shops.chest.enabled is false, or the player lacks chorus.shops.chest.create. |
| It says the limit is reached | shops.chest.default-limit, raised per rank with chorus.shops.chest.limit.<n>. |
| It refuses the price | shops.chest.max-price. |
| The sign is on the wrong block | It has to be a chest, trapped chest or barrel. |
The floating item above a shop is missing#
shops.chest.displayisfalse.- The chunk is not loaded. They go with the chunk and come back with it, by design.
They are never written to the world file, so one can never be left behind by a crash — if you are seeing leftovers, they are not from this plugin.
A sign says the wrong thing#
Chest shop signs rewrite themselves the next time their chunk loads. Fly away and come back.
/restore says nothing is there#
backups.enabledisfalse.- The moment you are looking for is switched off in
backups.on. - It is older than
backups.keep-days, or pastbackups.keep-per-player.
An imported shop trades the wrong way round#
Check the signs: one that sold should read Selling, one that bought Buying. If they are
inverted, say so — it is a mapping in the importer and not something a config can fix.
The update check says nothing#
That is the designed behaviour when anything goes wrong: a site that is down, a renamed project, or no internet all end with no answer and no line in the console.
An empty updates.project switches the check off deliberately. /chorus status says what the
last check found.
The server is lagging and this plugin is suspected#
/tps and /chorus debug first.
Every database query in this plugin runs off the main thread, so a slow database shows as slow commands, not as a slow server. If the server itself is stuttering, the usual suspects are the ones that touch many entities at once:
/sweepof a whole world on a very large worldworld.auto-sweepwithtarget: allrather thandropsutility.invsee.refresh-ticksset very low, with many windows open
On Folia the sweep is already spread across regions — see Folia.
Something else#
/chorus debug, the console log from startup, and what you actually did before it happened.
Those three are what makes a report answerable.
