Running a server

Importing from another plugin

Two importers: EssentialsX for player data, QuickShop for chest shops.

Both follow the same three rules.

  1. Nothing in the other plugin's folder is touched. Every file and every database is opened for reading. If you change your mind, putting the old plugin back is all it takes.
  2. Nothing already in Chorus is overwritten. Anything that is already here is counted as left alone. Add overwrite after run for the other behaviour.
  3. It can be run without doing anything. Without run it reads everything and reports exactly what a real run would write, down to the count.

Coming from EssentialsX#

/chorus import essentials          read everything, write nothing
/chorus import essentials run      do it
/chorus import essentials run overwrite

Brings across:

Homes Every home of every player
Balances Into the built-in ledger
Warps Position, name
Mail Unread letters
Nicknames
First and last seen
Addresses
Sell prices From worth.yml

The check pass prints something like:

» CHORUSCORE « Found 1,284 players. Nothing was written.
▪ Homes 2,930 ▪ Balances 1,284 ▪ Warps 41
▪ Mail 88 ▪ Nicknames 173 ▪ Prices 96
▪ Left alone because Chorus already had them » 3

A file it cannot read is reported by name and skipped; the rest still come across.

Kits are deliberately not imported#

Essentials writes them as its own item strings, and a kit that came across half right is worse than one that never came across at all — nobody checks a kit until a player complains about what was in it.

Build those in /kitedit, which takes a few minutes and gives you claim actions and requirements along the way. See Kits.

After the real run#

Restart the server. The balances and the warps are read into memory when the plugin starts, so that is when the imported ones appear.

Then take EssentialsX out. Leaving both installed means two plugins answering /home.

Coming from QuickShop#

/chorus import quickshop           read everything, write nothing
/chorus import quickshop run       do it
/chorus import quickshop run overwrite

Brings every player shop across: where it is, who owns it, what it sells, at what price, which way round the trade goes, and whether it is unlimited.

A server with four thousand player shops cannot change chest shop plugins at all without this.

» CHORUSCORE « Would bring across 3,914 shops from H2. Nothing was written.
▪ Read 3,940 ▪ Already here 12 ▪ Unreadable 14

Where the shops are found#

QuickShop's own config.yml says whether it keeps them in MySQL or in a file beside itself, and this reads that rather than guessing.

Storage Supported
MySQL / MariaDB Yes, with the driver this plugin already loads
H2 Yes, if the server has an H2 driver. Recent QuickShop-Hikari uses this by default
SQLite Yes, older QuickShop

If the H2 driver is missing the import says so by name instead of failing with something unreadable. Pointing QuickShop at MySQL first is the way through.

The folder is found as QuickShop-Hikari, QuickShopHikari or QuickShop, in that order.

A row that cannot be read is skipped, never guessed at#

An owner that is not a readable id, or an item the running version no longer understands, would otherwise become a shop selling the wrong thing for somebody else — which is worse than a shop that did not come across.

Each one is counted and reported with enough of the row to find it:

The item of the shop at world -1082,68,771 could not be read

The signs rewrite themselves#

An imported shop still has QuickShop's sign on it until the chunk is loaded again, at which point Chorus writes its own four lines.

That happens for every shop, not just imported ones, so a sign another plugin or a rollback left saying the wrong thing heals itself too.

After the real run#

Restart the server — the shops are read into memory at startup — and only then take QuickShop out.

Check the direction#

Once the shops are in, look at a few signs. A shop that sold should read Selling, and one that bought should read Buying. It is a ten-second check and worth doing before players start trading, because a shop running the wrong way round is the kind of thing nobody notices until somebody has made a lot of money out of it.

Importing into a server that is already running#

Both check passes are safe on a live server: they read and write nothing.

The real run writes into the Chorus database, which is fine while players are on, but the imported data does not appear until the restart. Doing it during a quiet hour and restarting straight afterwards is the tidy way.

What is not imported#

From Essentials Why
Kits See above
Jails, bans, mutes Not in this plugin. Use a moderation plugin
Signs in the world A [Warp] sign keeps working; the rest are another plugin's
Per-player settings like /socialspy state Trivially reset in game

Ban and mute data belongs to whatever moderation plugin you run, which is deliberately not this one. See Home.