Skip to content

Instantly share code, notes, and snippets.

@mpontillo
Last active March 4, 2020 17:45
Show Gist options
  • Save mpontillo/351e07cab8d5a2313f895ba72bd15a42 to your computer and use it in GitHub Desktop.
Save mpontillo/351e07cab8d5a2313f895ba72bd15a42 to your computer and use it in GitHub Desktop.
bash script to grab the latest Minecraft server jars
#!/bin/bash -e
mkdir -p ~/var/lib/mc
MC_VERSIONS_CACHE="$HOME/var/lib/mc/version_manifest.json"
RELEASE_JSON="$HOME/var/lib/mc/_release.json"
SNAPSHOT_JSON="$HOME/var/lib/mc/_snapshot.json"
curl -sS https://launchermeta.mojang.com/mc/game/version_manifest.json > $MC_VERSIONS_CACHE
# cat $MC_VERSIONS_CACHE | jq
LATEST_SNAPSHOT=$(cat $MC_VERSIONS_CACHE | jq -r '{latest: .latest.snapshot} | .[]')
LATEST_RELEASE=$(cat $MC_VERSIONS_CACHE | jq -r '{latest: .latest.release} | .[]')
echo ""
echo "Latest snapshot: $LATEST_SNAPSHOT"
cat $MC_VERSIONS_CACHE | jq "{versions: .versions} | .[] | .[] | select(.id == \"$LATEST_SNAPSHOT\")"
echo ""
echo ""
echo "Latest version: $LATEST_RELEASE"
cat $MC_VERSIONS_CACHE | jq "{versions: .versions} | .[] | .[] | select(.id == \"$LATEST_RELEASE\")"
echo ""
SNAPSHOT_URL="$(cat $MC_VERSIONS_CACHE | jq -r "{versions: .versions} | .[] | .[] | select(.id == \"$LATEST_SNAPSHOT\") | {url: .url} | .[]")"
echo "Snapshot URL: $SNAPSHOT_URL"
RELEASE_URL="$(cat $MC_VERSIONS_CACHE | jq -r "{versions: .versions} | .[] | .[] | select(.id == \"$LATEST_RELEASE\") | {url: .url} | .[]")"
echo "Release URL: $RELEASE_URL"
curl -sS "$SNAPSHOT_URL" > "$SNAPSHOT_JSON"
curl -sS "$RELEASE_URL" > "$RELEASE_JSON"
SNAPSHOT_SERVER_JAR_URL="$(cat $SNAPSHOT_JSON | jq -r '{url: .downloads.server.url} | .[]')"
RELEASE_SERVER_JAR_URL="$(cat $RELEASE_JSON | jq -r '{url: .downloads.server.url} | .[]')"
echo ""
echo "Snapshot .jar URL: $SNAPSHOT_SERVER_JAR_URL"
echo "Release .jar URL: $RELEASE_SERVER_JAR_URL"
LOCAL_RELEASE_JAR="$HOME/var/lib/mc/minecraft_server.$LATEST_RELEASE.jar"
LOCAL_SNAPSHOT_JAR="$HOME/var/lib/mc/minecraft_server.$LATEST_SNAPSHOT.jar"
echo ""
if [ ! -f "$LOCAL_RELEASE_JAR" ]; then
curl -sS "$RELEASE_SERVER_JAR_URL" -o "$LOCAL_RELEASE_JAR"
fi
echo "Release .jar: $LOCAL_RELEASE_JAR"
if [ ! -f "$LOCAL_SNAPSHOT_JAR" ]; then
curl -sS "$SNAPSHOT_SERVER_JAR_URL" -o "$LOCAL_SNAPSHOT_JAR"
fi
echo "Snapshot .jar: $LOCAL_SNAPSHOT_JAR"
ln -sf minecraft_server.$LATEST_RELEASE.jar $HOME/var/lib/mc/release.jar
ln -sf minecraft_server.$LATEST_SNAPSHOT.jar $HOME/var/lib/mc/snapshot.jar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment