Créer un serveur Minecraft sur son ordinateur

Qwokky

Poudre à popcorn
5 Janvier 2017
273
50
135
Lévis, Québec
Bonjour/bonsoir,

Ce tutoriel à pour objectif de vous expliquer comment mettre en place un serveur Minecraft sur votre propre ordinateur. Nous ne traiterons que la création et la configuration de ce dernier, sous la forme la plus basique (serveur Minecraft fourni par Mojang).


I. Un peu de théorie :

Avant de rentrer dans le vif du sujet, définissons rapidement ce qu'est un serveur Minecraft : c'est une application (ce qui implique qu'elle a besoin de ressource cpu, d'espace de travail (ram) et de place sur la mémoire de stockage (disque dur)) qui gère la logique de un ou plusieurs mondes Minecraft et va pouvoir accueillir des joueurs (qui seront donc des clients).

On peut alors déduire que :
  • Un serveur Minecraft ne peut pas être disponible si l'ordinateur sur lequel il se trouve est éteint. Donc pour que votre serveur fonctionne, votre pc devra être allumé.
  • Un serveur Minecraft va utiliser une quantité non négligeable de ressource. Il faut donc un pc avec un processeur correcte et de la ram de libre pour faire un serveur sur son pc. À noté que la nécessité en ressource augmente avec le nombre de chunk chargés, le nombre d'entité à gérer et quelques autres facteurs. Un serveur avec deux joueurs ne demandera pas les mêmes ressources qu'un serveur avec cinquante joueurs au même endroit (plus lourd) qui lui même ne demandera pas les mêmes ressources qu'un serveur avec cinquante joueurs éparpillés dans tout le monde (encore plus lourd).
Les principaux désavantages de créer un serveur sur son pc seront donc la nécessité en performance et le fait de devoir laisser allumer son pc si on veut une disponibilité de 24h/24h. Le principale avantage, c'est que cela ne vous coutera rien (hormis l'électricité). D'ailleurs vous pouvez également déduire de ce que j'ai expliqué la raison pour laquelle les hébergeurs Minecraft sont payant : ces serveurs Minecraft fonctionnent sur des ordinateurs spécialement prévu pour fonctionner 24h/24h (des serveurs dédiées) et cela à forcement un cout en électricité, infrastructure, réseau, etc ... Lorsqu'un hébergeur propose des offres Minecraft gratuite, c'est toujours à perte, dans la plupart des cas pour en question de publicité.

Vous vous demandez peut-être si votre ordinateur sera suffisant pour gérer un serveur de x joueurs. La meilleur réponse reste : testez ! En effet la demande en ressource d'un serveur varie énormément en fonction de la répartition des joueurs et dans le cas d'un serveur forge / bukkit / spigot / sponge des plugins ou mods installés ... Et en plus de cette difficulté à estimer les ressources demandés, il est aussi difficile de bien comparer avec les ressources disponibles de votre ordinateur ! En effet les performances d'un processeur ne dépendent pas que de la fréquence (les GHz) et de son nombre de cœur, mais aussi d'une variable bien moins visible qui est l'ipc (instruction par cycle).

Toutefois si vous avez encore un ancien processeur (avant 2010) avec seulement deux cœurs à moins de 2 GHz, je vous préviens tout de suite que votre pc risque d'avoir du mal. De même si vous avez moins de 4 go de ram.


II. Mise en place du serveur :

Maintenant que nous avons vu quelques éléments théoriques, passons à la pratique !
Rendez-vous sur le site de minecraft.net pour télécharger l'application serveur de Minecraft : https://minecraft.net/fr-fr/download/server
Il suffit de cliquer sur le texte vert "minecraft_server.1.11.2.jar" pour lancer le téléchargement du fichier.
Si vous souhaitez télécharger le serveur pour une ancienne version de Minecraft, aucun problème, en observant le lien on constate qu'il y a cette forme :
Code:
https://s3.amazonaws.com/Minecraft.Download/versions/<version de minecraft>/minecraft_server.<version de minecraft>.jar
Il vous suffit donc de remplacer <version de minecraft> par la version voulu.
Exemple avec la version 1.10.2 : https://s3.amazonaws.com/Minecraft.Download/versions/1.10.2/minecraft_server.1.10.2.jar
Les instructions sur le site de minecraft.net nous indique "lancez-le avec la commande suivante :
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui"
Je reconnais que ce n'est pas du tout explicite pour un débutant. On va donc détailler tout ça.
Commencez par créer un dossier pour votre serveur Minecraft, où vous voulez. Par exemple, je vais créer un dossier "serveur minecraft" dans mon dossier Documents. Ensuite déplacez le fichier minecraft_server.<version de minecraft>.jar dans ce dossier :
Voir la pièce jointe 71228
il est possible que le .jar ne s'affiche pas sur votre pc si les extensions connu sont masquées (c'est le cas par défaut sous Windows, cela peut être changé dans les options des dossiers -> affichage). Il est aussi possible que l'icône soit différents en fonction de votre système d'exploitation (Windows / macOS / Linux) et de l'application avec laquelle le type de fichier .jar est associé. Ces différences ne causent aucun problème pour la suite.

Maintenant il va falloir exécuter l'application. La lancer simplement avec Java fonctionnerait, mais les paramètres de mémoires ram seraient insuffisant. D'où la nécessiter de passer par une commande spécifique. Mais taper une commande à chaque fois qu'on veut lancer le serveur, ce n'est pas très pratique. On va donc passer par un petit script. Problème : en fonction de votre système d'exploitation, ce script sera différent. La suite va donc être divisée en trois parties.

Windows :
Ouvrez le bloc note de Windows ou n'importe quel autre éditeur de texte. Ajoutez le texte suivant dedans :
Code:
java -Xmx1024M -Xms256M -jar minecraft_server.<version de minecraft>.jar nogui
pause
Quelques explications :
  • java indique qu'on veut lancer le programme Java. Il faut bien évidement java sur votre système. Le dernier launcher de Mojang télécharge automatiquement sa propre version de Java qui est isolé du reste système et que le serveur ne peut pas utiliser. Si lorsque vous lancerez le script vous avez une erreur "java n'est pas reconnu en tant que commande interne ..." téléchargez et installez Java : https://www.java.com/fr/download/manual.jsp
  • -Xmx et -Xms sont les paramètres de la taille du heap de Java (respectivement maximum et minimum). Le heap de java est un espace en ram dans lequel les objets vont être gardés. 1go devrait être suffisant pour un petit serveur, en revanche si votre serveur fini par crasher avec comme erreur "outofmemoryerror : java heap space" n'hésitez pas à l'augmenter à 2go.
  • -jar indique qu'on veut lancer une archive jar, il est suivi par le nom exacte du fichier à lancer. Donc si vous vous êtes amusé à renommer le fichier banane.jar, il faudra mettre banane.jar. Dans mon cas j'ai laissé le nom par défaut, il faut alors que je mette minecraft_server.1.11.2.jar après le -jar
  • nogui désactive le gui. Vous pouvez retirer ce mot si vous voulez le gui du serveur, mais il fera doublon avec la console.
  • pause (sur une nouvelle ligne) indique à Windows de faire une pause dans le script. Comme ça, si votre serveur crash, le cmd restera ouvert et vous allez pouvoir lire ce qu'il y a écrit dedans. Sans ce mot, le cmd se fermerait sans laisser la possibilité de lire le message d'erreur ...
Cliquez ensuite sur le menu "fichier" -> "enregistrer sous". Choisissez le dossier de votre serveur, mettez comme nom "start.bat" et dans "type" choisissez "tous les fichiers (*.*)" (très important, sinon cela fera un fichier start.bat.txt, ce qui n'est pas voulu) :
Voir la pièce jointe 71229
Vous allez alors obtenir un fichier .bat sur lequel il faudra faire un double clic pour lancer le serveur.

Linux :
Faites un clic droit dans le dossier puis cliquez sur "ouvrir dans un terminal".
Entrez les deux commandes suivantes :
Code:
echo "java -Xmx1024M -Xms256M -jar minecraft_server.<version de minecraft>.jar nogui" > start.sh
Code:
chmod +x start.sh
Pensez à remplacer <version de minecraft> par ce qu'il faut. Ce qui suit -jar doit être le nom exacte du fichier du serveur, donc si vous l'avez renommé pensez à adapter.
-Xmx et -Xms sont les paramètres de la taille du heap de Java (respectivement maximum et minimum). Le heap de java est un espace en ram dans lequel les objets vont être gardés. 1go devrait être suffisant pour un serveur local, en revanche si votre serveur fini par crasher avec comme erreur "outofmemoryerror : java heap space" n'hésitez pas à l'augmenter à 2go.
La première commande va créer le script de démarrage, la deuxième va autoriser son exécution.
Vous pouvez ensuite lancer le serveur en utilisant la commande suivante :
Code:
./start.sh
ou encore :
Code:
bash start.sh
Il faut se trouver dans le dossier du serveur pour que cela fonctionne (donc utiliser cd avant ou passer par l'explorateur de fichier et le menu "ouvrir dans un terminal").

Mac OS :
Ouvrez un éditeur de texte et ajoutez le texte suivant :
Code:
cd "$( dirname "$0" )"
java -Xmx1024M -Xms256M -jar ./minecraft_server.<version de minecraft>.jar nogui
Pensez à remplacer <version de minecraft> par ce qu'il faut.
La première ligne va changer le dossier courant vers celui où le fichier sera exécuté, c'est nécessaire pour que tout se fasse dans le dossier du serveur est pas au mauvais endroit.
  • java indique qu'on veut lancer le programme Java. Il faut bien évidement java sur votre système. Le dernier launcher de Mojang télécharge automatiquement sa propre version de Java qui est isolé du reste système et que le serveur ne peut pas utiliser. Si ce n'est pas déjà fait téléchargez et installez donc Java : https://www.java.com/fr/download/manual.jsp
  • -Xmx et -Xms sont les paramètres de la taille du heap de Java (respectivement maximum et minimum). Le heap de java est un espace en ram dans lequel les objets vont être gardés. 1go devrait être suffisant pour un serveur local, en revanche si votre serveur fini par crasher avec comme erreur "outofmemoryerror : java heap space" n'hésitez pas à l'augmenter à 2go.
  • -jar indique qu'on veut lancer une archive jar, il est suivi par le nom exacte du fichier à lancer.
  • nogui désactive le gui. Vous pouvez retirer ce mot si vous voulez le gui du serveur, mais il fera doublon avec la console.
Enregistrer ensuite le dans le dossier de votre serveur sous le nom "start.command".
Ouvrez ensuite un terminal, tapez s'y :
Code:
chmod +x
ajoutez un espace puis glissez le fichier start.command dans le terminal et enfin cliqué sur entrée.

Pour lancer le serveur, il suffira de double cliqué sur le fichier start.command.


III. Premier démarrage :

Maintenant votre script créé, lancez le serveur :
Voir la pièce jointe 71230 Pas très concluant comme premier démarrage ...

Comme vous pouvez le voir, le serveur s'est coupé ("Stopping server").
Cherchons la cause en remontant les logs de la console. On peut voir juste au dessus le message suivant "You need to agree to the EULA in order to run the server. Go to eula.txt for more info."
Ce qui veut dire : Vous avez besoin d'accepter le CLUF (Contrat de Licence Utilisateur Final) pour lancer le serveur. Allez dans le fichier eula.txt pour plus d'information.

Retournez donc dans le dossier de votre serveur, un nouveau fichier a apparu, nommé eula.txt. Ouvrez-le avec un éditeur de texte, remplacer "false" par "true" puis enregistrez :
Voir la pièce jointe 71231
Vous pouvez maintenant relancer votre serveur, cette fois cela devrait fonctionner. Petite note pour les utilisateurs de Windows, un popup du pare-feu va vous demandez d'autoriser l'application d’accéder au réseau, cliquez donc sur "Autoriser l'accès".
Dans les logs vous devrez voir quelques "java.io.FileNotFoundException", pas de panique, c'est normal pour le premier lancement. Les fichiers en question ont été automatiquement créés juste après que l'erreur se soit affichée.

Lancez maintenant votre jeu (/!\ avec la même version que celle de votre serveur /!\), allez dans le menu serveur et ajouter un serveur (ou utilisé la connexion directe) ayant l'adresse "localhost" ou "127.0.0.1".
Et vous voila sur votre propre serveur !!
Voir la pièce jointe 71232
Pour vous mettre opérateur du serveur, entrez simplement la commande "op" suivi de votre pseudo dans la console du serveur.
Pour arrêter le serveur proprement, entrez la commande "stop" dans la console. La commande "list" vous donne la liste des joueurs connectés. Vous pouvez aussi envoyer un message à tous les joueurs à l'aide de la commande "say" suivi du message en question.
Une liste plus détaillée des commandes est disponible ici : http://minecraft-fr.gamepedia.com/Commandes#Commandes_multijoueur_uniquement


IV. Quelques configurations :

Pour finir ce tutoriel, nous allons nous intéresser aux quelques paramètres disponibles dans le fichier server.properties. Vous pouvez ouvrir ce fichier à l'aide de n'importe quel éditeur de texte.
On y retrouve de nombreux paramètres :
  • max-tick-time est le temps de tick maximum. L'horloge interne de minecraft fonctionne à une vitesse de 20 tick par seconde (TPS). C'est à dire que 20 fois par seconde toutes les fonctions de Minecraft vont être exécuté (l'avancement des fours, l'exécution des ia, actualiser la redstone, le cycle jour/nuit, etc ...). Si votre processeur n'arrive pas à suivre, les tps vont chuter. Si les tps tombe à 10, tout sera deux fois plus lent.
    Ce paramètre sert à forcer le crash du serveur si les tps chute trop (le temps maximum en milliseconde que peut durer un tick. Il peut déranger dans certains cas, il faut mettre la valeur sur 0 pour le désactiver.
  • gamemode est le mode de jeu par défaut (0 par défaut pour le mode survis, 1 pour créatif, 2 pour aventure et 3 pour spectateur. Si vous changez ce paramètre, seul les nouveaux joueurs seront actualisés. Vous pouvoir alors mettre force-gamemode sur true pour actualiser le gamemode de tous les joueurs, y compris les anciens.
  • allow-nether permet d'activer (true) ou désactiver (false) le nether, activé par défaut.
  • player-idle-timeout permet de définir un temps d'inactivé maximum (en seconde). Si un joueur n'est pas actif pendant le temps indiqué il sera déconnecte. 0 par défaut, donc non activé.
  • difficulty est la difficulté du serveur, 1 par défaut. Il faut mettre 0 pour paisible, 1 pour facile, 2 pour moyen et 3 pour difficile.
  • spawn-monsters permet de désactiver le monstre en mettant sur false (true par défaut).
  • spawn-animals permet de désactiver les animaux en mettant sur false (true par défaut).
  • spawn-npcs permet de désactiver les villageois en mettant sur false (true par défaut).
  • pvp permet de désactiver le combat entre joueur en mettant sur false (true par défaut).
  • hardcore permet d'activer le mode hardcore (pas de régénération naturel, banni du serveur lors de la mort) en mettant sur true (false par défaut)
  • announce-player-achievements annonce les succès obtenus par les joueurs dans le chat. À mettre sur false pour désactiver, true par défaut.
  • enable-command-block permet d'activer les blocs de commandes en mettent sur true (false par défaut)
  • max-players défini le nombre maximum de joueur pouvant être connecté simultanément sur le serveur (20 par défaut).
  • max-world-size défini à combien de bloc en partant du spawn se trouve la limite de map (29999984 par défaut).
  • level-name défini le nom du dossier du monde (world par défaut).
  • view-distance défini le nombre de chunk qui vont être chargés dans chaque direction autour des joueurs. Plus cette valeur sera élevée, plus il y aura de chunk chargés autour des joueurs, donc plus la charge sera lourde pour le serveur. Si vous sentez que les tps chutent, n'hésitez pas à réduire cette valeur pour diminuer les ressources dont a besoin le serveur (10 par défaut).
  • resource-pack permet de définir un pack de ressources pour le serveur. Il faut mettre un lien de téléchargement direct (c'est à dire que le téléchargement est directement lancé quand on clic dessus) vers l'archive du pack de ressource (rien par défaut).
  • white-list permet d'activer la liste blanche en mettant sur true. Une fois la liste blanche activée, seul les joueurs inscrit dessus pourront se connecter sur le serveur. Vous pouvez utiliser la commande "whitelist add nomDuJoueur" pour ajouter un joueur à la liste blanche (false par défaut).
  • max-build-height permet de limiter la hauteur maximum (impossible de l'augmenter dû à une limitation du format des mondes de Minecraft). 256 par défaut, ce qui est le maximum.
  • level-seed permet de spécifier un seed pour le serveur, si rien n'est indiqué le serveur générera un seed aléatoire.
  • level-type permet de changer le type du monde en mettant FLAT, LARGEBIOMES ou encore AMPLIFIED (DEFAULT par défaut).
  • motd la description du serveur qui s'affiche sur la liste des serveurs ("A Minecraft Server" par défaut).


V. Pour aller plus loin ...
  • Votre serveur n'est qu'accessible que par vous-même par l'instant. Pas très utile. Suivez ce tutoriel pour savoir comment le rendre accessible par d'autres personnes.
  • Pourquoi pas ajouter des plugins Bukkit à l'aide de Spigot ou Craftbukkit ?
  • Créer un serveur Sponge Forge (avec des mods et des plugins Sponge).
Très bien détaillé ! Gg à toi !