>> La recherche se fait sur tous les élements du jeu Minecraft <<

Minecraft Java 1.13, puis 1.14

Le 08/10/2017 à 4h29

De retour de ses vacances, Dinnerbone s'est remis au travail concernant la refonte des commandes dans le jeu. Cette semaine il a été confronté à un difficile dilemme: doit-on réécrire les commandes serveurs ?


Les commandes serveurs
Les commandes serveurs ne sont pas les commande les plus connu des joueurs, bien qu'elle soit quotidiennement utilisé par tous bons administrateurs de serveur, il s'agit de:
  • /save-all
  • /save-on
  • /save-off
  • /ban
  • /pardon
  • /banip
  • /unbanip
Les 3 premières commandes (/save-*) permettent de gérer l'enregistrement de la map sur le disque dur:
  • /save-all permet de lancer manuellement un enregistrement des dernières modifications (pratique pour enregistrer le monde avant de lancer une commande qui risque de faire crash le jeu par exemple)
  • /save-on et /save-off permettent d'activer ou de désactiver l'enregistrement automatique de la map. L'enregistrement créant des lags, il est parfois intéressant sur les serveurs multijoueurs de la désactiver (avec le risque de tout perdre en cas de crash du jeu). Il est aussi possible de le désactiver pour gérer les sauvegardes via des plugins serveurs.
Les 4 autres commandes permettent de gérer les bannissements (ban UUID et ban IP): /ban et /pardon permettent de bannir/débannir un joueur par son ID unique, et /banip et /unbanip permettent de bannir/débannir une adresse IP. Ces commandes sont relativement peut utilisé par les serveurs multijoueurs, les administrateurs préférant l'utilisation de plugins bien plus performant. Cependant elles restent utiles pour les parties sur des petits serveurs improvisés entre amis, ou sur des serveurs vanilla (sans plugin).

Toutes ces commandes sont aussi vieille que le jeu, elles datent des versions alpha de Minecraft, et n'ont que très peut évolué avec le temps. On remarque une certaine incohérance dans leur nom: pourquoi avoir /banip et /unbanip, et pas /ban et /unban ? Très peut de personnes connaissent la commande /pardon, qui aurait du plus logiquement s'appeler /unban. De la même façon, pourquoi avoir fait 3 comamndes de sauvegarde ? Pourquoi "/save-all" et pas plus simplement "/save" ? Pour toutes ces raisons Dinnerbone envisage de renommé toutes ces commandes, pour les rendre plus intuitive, ainsi:
  • /pardon deviendrait /unban
  • /save-all deviendrait /save
  • /save-on deviendrait /save enable
  • /save-off devientrait /save disable
  • etc.
Mais... tout n'est pas si simple.
Je vous ai donné des exemples d'utilisations manuelles de ces commandes, mais en réalités ces commandes sont surtout utilisées par des bots d'administrations, ou via des consoles d'administrations (par exemple MCMyAdmin ou les consoles fournit par les hébergeurs spécialisés). En un click sur un bouton sur les interfaces d'administrations et la commande est automatiquement envoyée au serveur. Cela a toujours bien fonctionné car ces commandes n'ont jamais changé depuis des années, mais si Dinnerbone change la syntaxe de ces commandes tous les robots, tout les scripts, toutes les consoles d'administrations seront cassé ! C'est donc une petite modification en apparence, mais très lourde de conséquence.

Pour s'aider à prendre la meilleur décision, Dinnerbone a lancé un sondage sur twitter pour avoir l'avis de la communauté, dont voici les résultats (sur 4657 votants):
  • 45%: Je m'en fou un peu. Violet.
  • 28%: Réorganise les !
  • 14%: Réorganise les et garde les anciennes
  • 13%: Laisse les tranquilles !
Sans surprise la majorité des joueurs ne s'y intéressent pas, puisqu'elles sont surtout destinés aux serveurs multijoueurs. Mais ensuite la majorité demande du changement, hors, comme le note un administrateur: Les problèmes ne concernent qu'une minorité de personne, les développeurs de scripts, de bot et d'interface d'administrations, même certains administrateurs n'en ont pas conscience, le résultat du sondage ne peut donc pas représenter la réalité de l'ampleur de l'impact qu'une telle modification aurait. Dinnerbone est d'ailleurs bien placé pour le savoir, car en tant que membre fondateur de Bukkit il savait que les petits changements dans une API pouvaient avoir de grande conséquence.

Finalement, la solution mixte ne serait-elle pas le meilleur compromis ? Ou bien une 5ème solutions, proposé par un hébergeur de serveur Minecraft, une solution non proposé dans le sondage par Dinnerbone et pourtant souvent utilisé dans Bukkit: Réorganiser les commandes, mais garder les anciennes actives encore quelques tant, puis les supprimer dans 1 ou 2 versions de Minecraft. Ainsi les développeurs et administrateurs auront le temps de faire évoluer leurs outils. C'était cette même méthode qui avait été utilisé lors de l'introduction des UUID dans Minecraft (identifiant unique des joueurs, un changement technique qui permet aujourd'hui a tout le monde de pouvoir changer de pseudo).

Pour le moment Dinnerbone n'a pas encore annoncé sa décision finale.


Une commande cliente ?
Continuons avec les autres changements probables: l'introduction d'une commande /clear. C'est une commande qui existe déjà, mais qui n'a pas du tout le comportement qu'on pourrait imaginer: Alors qu'il est naturel de taper /clear pour effacer le tchat, malheureusement cette commande sert a quelque chose de bien pire: vider l'inventaire du joueur ! De nombreux joueurs ont déjà eut une désagréable surprise en testant la commande... Pourtant c'est une commande très demandé, Dinnerbone lui même avoue que ça lui a manqué par le passé. Une commande d'autant plus demandé qu'elle existe sur la plupart des shells (Bash sous linux ou Powershell sous windows par exemple), c'est donc une commande bien connu des administrateurs pour vider l'affichage de la console.
Mais il existe déjà une possibilité de vider l'affichage du tchat, mais c'est une méthode loin d'être intuitive: il s'agit du raccourcit clavier F3+D. Si vous ne le connaissiez pas, il fallait d'abord faire "F3" (pour activer le mode debug), puis voir le message indiquant de faire F3+Q pour afficher l'aide:

En faisant F3+Q on découvre, perdu au milieu de raccourcis de debugage, le raccourcit clavier F3+D permettant de vider le tchat. Un raccourcit qui malheureusement vide également l'historique des commandes déjà tapées.

Si Dinnerbone implémente la commande /clear, cela sera la première (et probablement aussi la dernière) commande uniquement active coté client (c'est à dire sans aucune influence ni sur le monde, ni sur les entités, ni sur d'autres joueurs).


Coloration syntaxique
Autre changement, plus visuel cette fois, la coloration syntaxique pour les tags NBT avec la commande /entitydata:

Cela permet de voir beaucoup plus facilement la structure de la balise JSON, c'est un procédé bien connu de tous les développeurs, une aide précieuse. Ici les couleurs utilisées sont:
  • Le cyan pour les noms de tag
  • Le orange pour les valeurs numériques
  • Le vert pour les chaines de caractère (texte)
  • Le rouge pour les types de données (j'y revient tout de suite)
  • Le blanc pour la structure
Vous vous demandez peut être a quoi correspond les lettres en rouge, derrières (presque) chaque nombre en orange ?
Il s'agit d'une information purement technique, permettant de connaitre l'encodage du nombre dans la mémoire de l'ordinateur. En connaissant le mode de stockage ça nous permet de connaitre ses limites (Pour donner un exemple fictif simple, si un nombre était stocké sous la forme de 3 chiffres décimaux, on sait qu'on ne pourra pas mettre la valeur 10000 qui fait 5 chiffres).

On retrouve les symboles suivants:
  • b (Byte, ou Octet en français), nombre entier relatif stocké sur 8bit, valeur entre -128 et +127
  • s (Short), nombre entier relatif stocké sur 16bit, valeur comprise entre -32768 et +32767
  • rien (Entier), nombre entier relatif stocké sur 32bit, valeur comprise entre -231 et +231-1
  • L (Long), nombre entier relatif stocké sur 64bit, valeur comprise entre -263 et +263-1
  • f (Float), nombre décimal à virgule flottante, stocké sur 32bit
  • d (Double), nombre décimal à virgule flottante, stocké sur 64bit
A noter que le type "Byte" est souvent utilisé dans les tags NBT pour définir des valeurs booléennes (2 valeurs possibles uniquement, vrai (1) ou fausse (0)), dans ces cas il ne faudra donc pas donner de valeur autre que 0 et 1.


Bientôt une sortie des snapshots ?
Reste une question que nous nous posons tous: pourra-t-on bientôt tester les nouveautés de cette version 1.13 dans les snapshots ? Pas tout de suite selon Dinnerbone, il faudra encore attendre quelques semaines, sans donner plus de précision. Mais il modère notre enthousiasme en rappelant que la version 1.13 sera une mise à jour technique, avec très peut (pour ne pas dire aucune) nouveauté fonctionnelle: aucun nouveau bloc, aucun nouveau mob, etc.

Pour les vraies nouvelles fonctionnalités il faudra attendre la version 1.14, et bonne nouvelle: une partie de l'équipe de développement de Minecraft Java travaille déjà sur la version 1.14 et ses nouvelles fonctionnalités ! Mais Mojang garde très probablement le secret sur ces nouveautés pour les annoncer en novembre, lors de la Minecon Earth.
Cet article a été publié par Tronics, le 2017-10-08 04:29:43. Source
Validé par  Tronics. Dernière modification par  Tronics le 08/10/2017 à 7:51.
Partager :
Commentaires de la news Minecraft
Minecraft Java 1.13, puis 1.14 :
Tronics (administrateur)
le 08/10/2017 à 05:26
Je suis machiavélique, je vous donne l'info la plus intéressante en dernier, perdu après un long article soporifique extrêmement technique :-( Honte a moi !
franswa (modérateur)
le 08/10/2017 à 07:11
Très bon article, c'est certain qu'il y avait pas mal d'explication à donner vis à vis de tout ça. Je pense que la 1.13 sera la version sacrifiée du jeu, que personne ne jouera dessus, et qui permettra juste aux développeurs de mods, d'outils et de plugins de faire la transition vers la nouvelle codebase de minecraft java, à moins qu'ils se disent que quitte à devoir tout refaire, autant repartir sur minecraft Bedrock.
Sinon, c'est sûrement le titre le moins inspiré que j'ai jamais vu sur ce site (même si celui de la news bedrock qui suivra celle-là est guère mieux).
le 08/10/2017 à 10:51
N’est ce pas possible pour les développeurs d’enlever ces satanées lettres à la fin des valeurs ?
C’est une grosse source d’erreur et de frustration, je pense que leur disparition n’attristera personne :p
le 08/10/2017 à 10:52
Merci pour les explications concernant les lettres après les chiffres ! Il m'est arrivé d'en avoir besoin, sans vraiment comprendre ce que cela voulait dire. Perso je reste impatient d'avoir le nouveau parseur en main !

@franswa De toute façon il fallait la faire, donc oui je pense que peu de joueurs s'y intéresseront. Néanmoins cela concerne aussi les mapmakers, qui pourront utiliser la 1.13 pour mettre à jours les systèmes (ou les migrer en datapacks). Mais bon je pense que du coup je pense que la 1.14 sera garni en conséquence afin de combler le vide de nouveautés type bloc, mob, etc. Pourquoi pas un "boss" dans les maisons hantés, comme certains l'avait spéculé il y a quelques news ?
le 08/10/2017 à 11:48
@mathaym25 : Ça doit être possible de parsé le nombre selon le contexte (et donc le type attendu) directement dans le code, mais là va falloir une release complète pour réalisé ce changement ... (plus perfs qui morfle sévère à la fin)
Moralité de l'histoire, gardons les type dans les Json pour l'instant.. ^^
koeurkoeur (anonyme)
le 08/10/2017 à 13:52
C'est bien beau tout ça mais a quand une mise à jour intéressante
xana-uc (anonyme)
le 08/10/2017 à 13:56
"pourquoi avoir fait 3 comamndes de sauvegarde ?" petite faute mais très bonne article
le 08/10/2017 à 14:43
"Un raccourcit qui malheureusement vide également l'historique des commandes déjà tapées." non. Les commandes et messages tapés restent enregistrés.
Kournin (anonyme)
le 08/10/2017 à 15:03
"cela sera la première (et probablement aussi la dernière) commande uniquement active coté client"
Ce n'est pas ce qu'il a dit.

"It'd be the flrst, and only, clientside command!" Ça serait la première, et la seule, commande client. Il a pas dit "the last"
Tronics (administrateur)
le 08/10/2017 à 15:53
mathaym25 / Yggdrastyle: Il n'est pas obligatoire de taper la lettre, car (heureusement) java est capable de faire une comversion implicite de tous les types de données numérique entre eux, donc même si on tape pas dans le bon type, java fera la conversion tout seul. Ça marche aussi pour la plupart des tags NBT, la lettre est optionnelle, bien que j'ai déjà vu des ca ou ca ne fonctionnait pas (et je ne sais pas pourquoi).

Kournin: Si c'est la seule, c'est aussi la dernière non ? ^^ SInon elle ne serait plus seule

SkytAsul: Soit c'est un changement extremement recent (genre 1.12.2), soit tu te trompes, car j'utilise très souvent le F3+D pour les captures d'écran lors des tests de snapshot, et je suis systématiquement ennuyé par l'historique de mes commandes qui est vidé, je doit bien faire attention de garder mes commandes de coté pour les remettre dans la news, sinon une fois F3+D fait je perd tout.
le 08/10/2017 à 17:12
@Tronics eh bien je viens de refaire le test aujourd'hui même en 1.12. (pas 1.12.x), et mon historique n'est PAS effacé. Après j'utilise Optifine, donc bon, peut-être qu'ils ont rajouté cette fonctionnalité chez Optifine.
Kournin (anonyme)
le 08/10/2017 à 17:33
@Tronincs: non. La seule, ça veut dire la seule. Si on dit "la dernière", ça ferme la porte définitivement. Il faut faire attention à ne pas faire dire aux gens ce qu'ils n'ont pas dit. Surtout quand on traduit.
Tronics (administrateur)
le 08/10/2017 à 19:07
Kournin: Et la seule ça veut dire la seule, donc 1, pas 2 ni 3, 1 seul, donc pas d'autres, donc la dernière ^^ Et tu notera que j'ai ajouté plus de nuance que lui, puisque j'ai ajouté "probablement" ;-)

Sinon tu noteras quand même que l'article n'est pas juste une traduction, mais un article complet, sinon en 5 ligne c'était bouclé. Je sais que c'est la mode en ce moment de pondre des articles rapide qui ne sont que des traductions (quand ce ne sont pas de copier/coller), mais ici j'essaye d'étoffer un peut les informations que j'ai pour le rendre plus complète, plus simple a comprendre et plus agréable à lire.

Il faut aussi comprendre que quand je dis "la derniere", j'entend dernier de la version 1.13 (tout comme le "seul" de Dinnerbone ne concerne que la 1.13), ni moi ni Dinnerbone ne pouvons prédire l'avenir. Mais sur ce point c'est vrai que ca peut porter a confusion, mais puisque je modère via le "probablement" ça reste vrai.
Soon (anonyme)
le 09/10/2017 à 14:58
Moi j'veux des npc guards dans mes villages....
le 09/10/2017 à 15:10
@Tronics Tout a fait, mais comme tu le dis, vu que cela ne marche pas dans certains cas (les testfor si mes souvenirs sont bons), alors il vaut mieux partir du principe que cela ne marche jamais ;)
Je considérerais personnellement que les lettres ne seront plus nécessaires quand ça sera le cas partout.
franswa (modérateur)
le 10/10/2017 à 06:08
@tronics encore un oubli d'appuyer sur publier? Ca commence à faire 3 jours que j'ai une news validée qui attend à être publiée.
Faudrait que FR-minecraft se dote d'un outil de programmation de l'heure de publication des articles, comme ça, si deux bons articles arrivent en même temps, un est publié instantanément et l'autre 24h plus tard.

Vous devez être connecté pour laisser un commentaire.