Instructions complètes
J'ai récemment décompilé le lanceur pour cette raison, afin de gérer les mises à jour automatiques de mon wrapper de serveur avec leur nouvelle convention de nommage.
J'ai trouvé le fichier qu'ils utilisent pour déterminer la version actuelle et son URL :
https://launchermeta.mojang.com/mc/game/version_manifest.json
Ce fichier comprend les éléments suivants (à partir de cette réponse) :
"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"
},
...
]
Ce fichier a également un tableau "versions". Faites une boucle pour trouver la version que vous recherchez dans le id
champ. C'est aussi généralement la première entrée de ce tableau, vous pouvez donc l'adresser versions[0]
. Prenez le url
value et récupérez ce fichier qui contient la clé utile suivante :
"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"
}
},
Par conséquent, l'URL dont vous avez besoin est contenue dans downloads.server.url
.
Résumé
GET
https://launchermeta.mojang.com/mc/game/version_manifest.jsonGET
versions[0].url
GET
downloads.server.url
Instructions obsolètes - pour la postérité uniquement
Que vous pouvez ensuite utiliser pour extrapoler la dernière version pour la version et les instantanés en utilisant ce schéma :
https://s3.amazonaws.com/Minecraft.Download/versions/" + Ver + "/minecraft_server." + Ver + ".jar
En utilisant cette méthode, vous n'avez pas besoin de télécharger le fichier jar/exe à chaque fois, juste le fichier json, puis s'il est modifié, vous pouvez récupérer le fichier jar approprié.
Vous pouvez utiliser jsawk
pour extraire le dernier numéro de version jar de la version JSON de Minecraft :
#!/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
Nécessite :
- jsawk
- SpiderMonkey
Je vais même jeter mon chapeau dans le ring ! Très similaire à ci-dessus, avec quelques 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