Note : si vous l’avez ratée, n’hésitez pas à lire la note d’information sur le changement de nom du projet https://www.mist-breaker.net/changement-de-nom.
Cette semaine, j’ai entrepris une tâche chronophage mais nécessaire : récupérer la map de Mist Breaker qui a été construite en 1.12, et la convertir en 1.13. Et, avec forge dans son état actuel, cela a nécessité le développement d’un mini outil personnalisé.
Première étape : l’exportation des données
Tout d’abord, il a fallu enregistrer les données du monde 1.12 dans un format custom facilement lisible en toute circonstance. Le but était de faire ça très rapidement, ce qui a eu pour résultat de transformer un monde Minecraft qui à la base ne faisait que 500Mo en... 150Go en 37790 fichiers (un par chunk). Oui, vous avez bien lu.
Quoi qu’il en soit, c’était une étape facile et rapide, il suffisait de parcourir tous les chunks générés et d’enregistrer pour chacun un fichier contenant blocs et entités.
Deuxième étape : l’importation des données
Ensuite, j’ai dû recréer le monde en 1.13 à partir de toutes ces données. Là, c’était une autre affaire : les données enregistrées correspondaient à un monde 1.12, il fallait donc prendre en compte tous les changements que Mojang avait effectué sur les blocs.
Dans un premier temps, j’ai codé un système qui demandait à chaque fois qu’un bloc inconnu était rencontré de rentrer le nom du bloc par lequel on le remplacerait. Cela ne fonctionne pas parfaitement, car avec le flattening, certains blocs disparaissent et sont remplacés par d’autres, mais nécessitent également de préciser de nouvelles propriétés pour ne pas perdre l’information (les BlockStates). C’est pour cela que j’ai opté pour une solution bien meilleure.
Cette solution, c’est d’utiliser le code de Mojang : il existe en fait un DataFixer, c’est à dire un algorithme qui sert à convertir des données d’un version à une autre, justement pour le flattening. Et il se trouve que la grande majorité des conversions de blocs à effectuer de la 1.12 à la 1.13 est contenue dans ce DataFixer. J’ai donc bidouillé un peu et ai réussi à l’exploiter !
À partir de là, j’ai décidé de laisser tomber l’importation des entités, qui était bien plus compliquées et difficile. Ce sera bien plus simple de créer à nouveau les item frames et autre armor stands. Pour les PNJs, nous avions de toute façon prévu de tous les passer en revue.
L’essentiel, c’est que tout le travail d’Océane, alias Saphire (anciennement lixlat) et de tous nos autres builders ne soit pas perdu. Et c’est une réussite !
Notes sur la charte graphique et le nouveau design de Mist Breaker
Nous avons défini de nouvelles couleurs, mais la direction artistique manque encore de précisions. Aussi nous n’avons pas encore changé le logo du Discord ni le favicon du site (l’image de l’onglet). Cela sera bien sûr fait un jour, mais ce n’est pas prioritaire.
Le développement continue, je mettrai bientôt en place les serveurs en 1.13 pour pouvoir construire la map, et d’autres news comme celle-ci seront publiées. Vous pourrez voir des mises à jour sur notre avancée en termes de développement, construction de map et l’évolution de notre équipe.
Merci de votre patience,
Arisu