27 votes

Existe-t-il un moyen d'obtenir le dernier jar du serveur via une URL qui ne change pas ?

J'écris un script bash pour gérer une installation de serveur vanilla sur mon eeePC. Pour l'instant, j'ai utilisé http://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar pour obtenir le jar de minecraft_server. Il semble que seule la version 1.5.2 du serveur soit récupérée au lieu de la version 1.6.2.

Avez-vous une idée de la façon dont je peux obtenir la dernière version stable via une url similaire ?

1voto

Spongman Points 111

Voici mon horrible version sed.

moins correcte que la version de Jason, ci-dessus. mais moins de dépendances.

#!/bin/bash

wget -qN  https://launchermeta.mojang.com/mc/game/version_manifest.json
MCVER=`sed -n -e '/\"latest\"/,/}/ s/.*\"snapshot\": \"\([^\"]*\)\".*/\1/p' < version_manifest.json`

wget -N https://s3.amazonaws.com/Minecraft.Download/versions/$MCVER/minecraft_server.$MCVER.jar

1voto

ysimonson Points 575

Pour ceux qui envisagent de le faire, j'ai également trouvé une solution en utilisant grep au lieu de sed pour extraire la version en utilisant ce qui suit :

grep -oP "\"release\":\"\K\d{1,2}\.\d{1,2}\.\d{1,2}" version_manifest.json

Le fichier est tiré des exemples ci-dessus.

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

Personnellement, j'ai trouvé la commande grep ci-dessus un peu plus propre.

1voto

rych Points 555

Le script bash suivant utilise jq & curl pour :

  • télécharger le fichier des versions du manifeste
  • extraire l'url du dernier manifeste
  • télécharger le dernier manifeste
  • extraire l'url du jar du serveur
  • télécharger le server.jar à minecraft_server.$version.jar
  • relier symboliquement server.jar a minecraft_server.$version.jar

Utilisez-le en combinaison avec un script de démarrage de Minecraft qui utilise la fonction server.jar lien symbolique.

#!/usr/bin/env bash
#
set -o errexit

declare -r version_manifest_url="\
https://launchermeta.mojang.com/mc/game/version_manifest.json"
declare -r tmp="/tmp/version_manifest.json"

# Find download URL of latest release.
latest_version=$(curl -Ss -o "$tmp" "$version_manifest_url" \
    && jq .latest.release -r "$tmp")
latest_manifest_url=$(cat "$tmp" | jq -r ".versions[] \
    | select(contains({type: \"release\", id: \"$latest_version\"})) \
    | .url")

# Only download latest version if target filename does not exist.
declare -r manifest="/tmp/manifest.$latest_version.json"
curl -Ss -o "$manifest" "$latest_manifest_url"

declare -r jar_url=$(jq -r ".downloads.server.url" "$manifest")

echo "latest version: $latest_version"
echo "manifest url: $latest_manifest_url"
echo "download url: $jar_url"

declare -r jar="minecraft_server.$latest_version.jar"
curl -Ss -o "$jar" "$jar_url"

# Symbolically server.jar link to the latest version.
declare -r symlink="server.jar"
rm -f "$symlink"
ln -s "$jar" "$symlink"

1voto

Vincent Le Dû Points 11

Mon 50ct à ce vieux fil. Mon objectif :

  • éviter les dépendances
  • rester simple

Mes 3 lignes pour télécharger le dernier snapshot :

#!/bin/bash
MC_VERSION_URLS=$(curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json | python -c 'import json,sys,base64;obj=json.load(sys.stdin); print obj["versions"][0]["url"]') 

MC_LATEST_SNAPSHOT=$(curl -s $MC_VERSION_URLS | python -c 'import json,sys,base64;obj=json.load(sys.stdin); print obj["downloads"]["server"]["url"]')                         

wget $MC_LATEST_SNAPSHOT

0voto

Louhbo Points 1

C'est mon coup d'essai.

#!/bin/bash

#Clean up old files

rm /minecraft/temp/*

# Get the version_manifest file from Mojang

wget -P /minecraft/temp https://launchermeta.mojang.com/mc/game/version_manifest.json

#Parse the version and version.json files into variables

URL=$(jq -r '.versions[0].url' /minecraft/temp/version_manifest.json)
VER=$(jq -r '.versions[0].id' /minecraft/temp/version_manifest.json)

#Get the version specific json file to parse

wget -P /minecraft/temp "$URL"

#Add .json on the end of the version to use to parse the json file

VER2="$VER.json"

#Parse the version.json file to get server download url

SERVERURL=$(jq -r '.downloads.server.url' /minecraft/temp/$VER2)

#Download the server.jar file

wget -P /minecraft/temp $SERVERURL

#Backup the old minecraft_server.jar file

mv /minecraft/minecraft_server.jar /minecraft/minecraft_server.jar.old

#Move the downloaded server file to the minecraft_server.jar file in minecraft directory

mv /minecraft/temp/server.jar /minecraft/minecraft_server.jar

echo "Minecraft Upgraded to version $VER"

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X