Skip to content

Instantly share code, notes, and snippets.

@jbott
Created December 7, 2013 21:20
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save jbott/7848922 to your computer and use it in GitHub Desktop.
Save jbott/7848922 to your computer and use it in GitHub Desktop.
Script to update minecraft server to latest version, either snapshot or release
#!/bin/sh
# Can be snapshot or release
DEFAULTREVISION=release
# Pull out latest snapshot version
REVISION=${1-$DEFAULTREVISION}
REGEX="(?<=$REVISION\": \").*?[^\\\\](?=\")"
VERSION=`curl -silent "http://s3.amazonaws.com/Minecraft.Download/versions/versions.json" | grep -Po "$REGEX"`
if [ "$VERSION" = "" ]; then
echo "Invalid Version"; exit
fi
URL="https://s3.amazonaws.com/Minecraft.Download/versions/$VERSION/minecraft_server.$VERSION.jar"
echo "Version: " $VERSION
echo "URL: " $URL
# Download the latest version
curl -O $URL
# Symlink to the server jar
if [ -f "minecraft_server.jar" ]; then
rm minecraft_server.jar
fi
ln -s "minecraft_server.$VERSION.jar" minecraft_server.jar
@xdaytona955
Copy link

xdaytona955 commented Sep 18, 2020

Sadly that script doesn't work anymore, Mojang changed the links and manifest file.

I wrote this simple python script to download the latest jar file (works as of 12/18/20):

import json, requests

manifestUrl = json.loads(requests.get("https://launchermeta.mojang.com/mc/game/version_manifest.json").content)

urls = manifestUrl["versions"]

for url in urls:
        if url["type"] == "release":
                manifestUrl = url["url"]
                break

downloadUrl = json.loads(requests.get(manifestUrl).content)["downloads"]["server"]["url"]

print "Download URL: " + str(downloadUrl)

fileData = requests.get(downloadUrl)

with open("server.jar", "wb") as fileObject:
        fileObject.write(fileData.content)

@Niloc548
Copy link

how do I use this

@TIBTHINK
Copy link

copy the code down into a text doc named
update.py

then run python3 update.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment