GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine Möglichkeit, die neueste Server-JAR-Datei über eine URL zu erhalten, die sich nicht ändert?

Vollständige Anleitung

Ich habe den Launcher kürzlich aus genau diesem Grund dekompiliert, um automatische Updates für meinen Server-Wrapper mit ihrer neuen Namenskonvention zu verwalten.

Ich habe die Datei gefunden, die sie verwenden, um herauszufinden, was die aktuelle Version ist, und die URL dazu:

https://launchermeta.mojang.com/mc/game/version_manifest.json

Diese Datei enthält Folgendes (Stand dieser Antwort):

"latest": {
    "snapshot": "1.9-pre3",
    "release": "1.8.9"
},
"versions": [
    {
        "id": "1.13.1",
        "type": "release",
        "url": "https://launchermeta.mojang.com/v1/packages/c0f1e6239a16681ffbfa68fc469038643304d5a9/1.13.1.json",
        "time": "2018-08-30T09:49:34+00:00",
        "releaseTime": "2018-08-22T14:03:42+00:00"
    },
    ...
]

Diese Datei hat auch ein "Versions"-Array. Durchlaufen Sie diese, um die gesuchte Version in id zu finden aufstellen. Es ist normalerweise auch der erste Eintrag in diesem Array, also könnten Sie es versions[0] adressieren . Schnapp dir die url Wert und rufen Sie die Datei ab, die den folgenden nützlichen Schlüssel enthält:

"downloads": {
    "client": {
        "sha1": "8de235e5ec3a7fce168056ea395d21cbdec18d7c",
        "size": 16088559,
        "url": "https://launcher.mojang.com/v1/objects/8de235e5ec3a7fce168056ea395d21cbdec18d7c/client.jar"
    },
    "server": {
        "sha1": "fe123682e9cb30031eae351764f653500b7396c9",
        "size": 33832589,
        "url": "https://launcher.mojang.com/v1/objects/fe123682e9cb30031eae351764f653500b7396c9/server.jar"
    }
},

Daher ist die benötigte URL in downloads.server.url enthalten .

Zusammenfassung

  • GET https://launchermeta.mojang.com/mc/game/version_manifest.json
  • GET versions[0].url
  • GET downloads.server.url

Veraltete Anleitung - nur für die Nachwelt

Die Sie dann verwenden können, um die neueste Version für Release und Snapshots mit diesem Schema zu extrapolieren:

https://s3.amazonaws.com/Minecraft.Download/versions/" + Ver + "/minecraft_server." + Ver + ".jar

Mit dieser Methode müssen Sie nicht jedes Mal die JAR-/EXE-Datei herunterladen, sondern nur die JSON-Datei, und wenn sie sich geändert hat, können Sie die entsprechende JAR-Datei abrufen.


Sie können jsawk verwenden um die neueste JAR-Versionsnummer aus der JSON-Version von Minecraft abzurufen:

#!/bin/bash
VER=`curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json | jsawk -n 'out(this.latest.release)'`
wget https://s3.amazonaws.com/Minecraft.Download/versions/$VER/minecraft_server.$VER.jar

Benötigt:

  • jsawk
  • SpiderMonkey

Ich werfe sogar meinen Hut in den Ring! Sehr ähnlich wie oben, mit ein paar Extras.

#!/bin/bash

tmpfile=/tmp/minecrafttempfile.tmp
downloadurl="https://minecraft.net/download"
serverurl=""
loc=$([[ -n $1 ]] && echo $1 || echo "/tmp/minecraft_server.jar")

if [[ -a $loc ]]; then
        echo "$loc exists -- moving to ${loc}.old"
        mv $loc ${loc}.old
fi

echo "Grabbing minecraft download page..."

curl $downloadurl > $tmpfile

echo "Getting download URL for minecraft server..."

serverurl=`egrep -io 'https.*versions\/(.*)\/minecraft_server.\1.jar' $tmpfile`

echo "URL = "$serverurl

echo "Downloading server jar..."

wget -q -O $loc $serverurl

https://github.com/cptskyhawk/LinuxMinecraftTools


Linux
  1. UTF-8 durchgängig

  2. Gibt es eine Möglichkeit, mv dazu zu bringen, das Verzeichnis zu erstellen, in das verschoben werden soll, wenn es nicht existiert?

  3. Gibt es eine Möglichkeit, den aktuellen rpath unter Linux zu überprüfen?

  4. Gibt es in Bash eine Möglichkeit, die letzte Standardausgabe zu echoen/zu drucken? Gibt es eine Variable, der stdout zugewiesen ist?

  5. Linux - Gibt es eine Möglichkeit, die Geschwindigkeit Ihres Speichers per Software zu ermitteln?

So richten Sie schnell einen KVM-Server ein

Ändern Sie die Standardportnummer des SSH-Servers

So ändern Sie den Server-Hostnamen in Ubuntu

HTTP vs. HTTPS:Was ist der Unterschied?

Wie ändere ich die Zeitzone auf Ubuntu 18.04 Server?

Gibt es eine schnelle Möglichkeit, die allerletzte Datei in einem großen TAR zu erhalten?