air / minecraft-tools

Tools for server and Realms admins

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simple and scriptable tools for Minecraft server admins. Read my blog post for the full story.

Download your world from Realms

$ source login.sh EMAIL PASSWORD
$ realms-download.sh

This downloads the latest backup of your currently active world to world.tar.gz. No local install of Minecraft is needed. You're now free to run Overviewer or whatever you want.

You'll need

You need httpie and jq, so sudo apt-get install httpie jq if needed.

Validate your current access token

When you login, your access token is displayed and stored in the environment variable access_token. The token means you don't have to keep logging in (and risk rate-limiting), but eventually it expires. You can validate your access token at any time with

$ validate.sh $access_token

Understanding logins

We run the login script with source to set three environment variables for the other tools to pick up:

  • access_token, e.g. 14fc1a392727462fa35e0d82e138aef1
  • name, e.g. notch
  • id, e.g. 069a79f444e94726a5befca90e38aaf5

If you're interested in player UUIDs check out https://mcuuid.net.

Rate limiting

If you made too many authentication requests recently, a valid login will be rejected as invalid - the error looks like an incorrect password. If in doubt, wait 15 minutes.

Notice, as long as validate.sh $access_token shows your token is valid, you don't need to authenticate again.

Download an older backup

Pass the backup number 1-4, e.g. realms-download.sh 2 downloads the second backup in the list. Default is 1.

Limitations

  • Only the currently active world is available.
  • Only the four most recent backups are available for download.

Why did I make this?

As an admin I want small, simple tools that are easy to understand and adapt for my purposes.

There are amazing tools out there like yggdrasil, but they carry a ton of baggage (i.e. 67 npm packages).

The point of REST APIs is to be simple and accessible without advanced tools. For these scripts you just need httpie and jq, which deserve a place in your toolbox.

Understanding Realms

The backups listed in the game client are the only backups that exist. The 'download latest' button just selects the one at the top - #1, as indexed by the API - downloads it and extracts into your $HOME/.minecraft/saves with the correct world name.

You can see the same backup list in raw JSON with GET ${realms_server}/worlds/${world_id}/backups.

Service availability

I've seen the Realms API throw 503s - with the response Retry again later - on retrieving the download link for a world. Keep retrying until it works.

Timestamps

Each backup has a timestamp. When you download a world, check the timestamp on level.dat - this should match what's shown in the game client.

If you 'download latest' from the game,, what ends up in your saves directory is not identical to what you get direct from the API. I believe the game client processes the world files somehow, since many of their timestamps are set to now.

About

Tools for server and Realms admins


Languages

Language:Shell 94.9%Language:Python 5.1%