Updating new stuff

Updating MCL is quite easy due to git and database migrations.

To be able to rollback easily, backup the sqlite files in vendor/data/ and note the current commit message which you can get with the !version command.

Ingame

  • As a normal user I would suggest to restart MCL after updating by passing the optional "exit" argument.
  • It might not be necessary but it depends on the changes made to the code.
  • This will restart your minecraft server as well!
  • Automatic restarting will only work in daemon mode (aka. started in background).
  • Unstaged changes in the local git repository might prevent git from pulling the current code. MCL will NOT recognize this and you will have to update manually.
  1. Ingame update is available via !mclupdate [exit] (i) command.

  2. The output in the chat will show you something like this:

    [MCL] Updating MCL...
    [MCL] git was: old commit message
    [MCL] git now: new commit message
    [MCL] Restarting...

Command line

This step is universal for all platforms. You just need to adjust the paths accordingly.

cd ~/mcl
git pull
bundle install

Don't forget to restart MCL.


Config update

It should happen very rarely but when the config version changes you will have to update your config file manually.
MCL will refuse to launch with an outdated config and if running in the background will retry infinitely.


Resolving merge conflicts

If you change code in MCL (this does not apply for additional custom handlers) merge conflicts may arise on pulling the latest changes. I highly recommend a git GUI and a code editor to fix these. It's not that hard!

I can't explain git in a few sentences but this video here shows how to resolve conflicts. Note that the first part of the video is just about provoking a conflict, that's my job ;)


Rolling back

MCL updates may break custom handlers you use or cause other problems. To rollback search for the commit message in the history you were running on and copy the full SHA identifier.

Then run the following command in your MCL directory.

git reset --hard <SHA identifier>

Since buildin handlers or the MCL core may have migrated the database to a new format you should restore the sqlite files which you hopefully backed up.