Minecraft Wiki
S'inscrire
Advertisement

Le format de niveau Classique est utilisé par toutes les versions de Minecraft Classique. Il est comprimé avec Gzip et contient un court en-tête suivi d'objets Java sérialisés. Les niveaux solo ont l'extension ".mine", alors que les niveaux utilisés par la version serveur Créatif Classique sont nommés "server_level.dat". Le fichier peut être dupliqué pour sauvegarder le contenu du monde, ce qui améliore la protection contre les vandales ou permet d'utiliser le fichier pour éditer la carte en sécurité.

Puisque le format de ces niveaux dépend de la façon dont Java sérialise les objets, la façon la plus simple de travailler avec lui est de passer par le serveur Classique lui-même, que vous pouvez télécharger ici. Cet exemple de code est fourni pour montrer comment construire un éditeur sur le fichier minecraft-server.jar.

Format de fichier[]

Quand il est décompressé, le format de fichier se présente comme suit :

Position Taille (octets) Nom Description
0 4 ID magique Un ID magique est un nombre constant utilisé pour identifier le format de fichier de Minecraft. Actuellement, il vaut 0x271bb788.
4 1 Numéro de version Le numéro de version représente le format actuel utilisé pour sauvegarder le niveau. Actuellement, il vaut 2.
5 Variable La classe Java com.mojang.minecraft.level.Level sérialisée Plus d'informations sur le format de sérialisation utilisé par Java sont disponibles dans le manuel, cependant, la façon la plus simple d'éditer le fichier est d'utiliser les classes fournies ici avec le fichier minecraft-server.jar officiel.

Accéder au tableau de blocs[]

La plus intéressante partie d'un niveau est le tableau de blocs. Chaque octet de ce tableau définit un type de bloc à l'endroit correspondant dans le monde. Il y a généralement deux façons d'accéder au tableau de blocs :

Vous pouvez désérialiser le fichier .dat compressé directement dans l'instance d'un objet Niveau dans Java. Vous aurez ainsi accès à l'instance de l'objet Niveau exactement de la même façon que le serveur Minecraft y a accès. Cela vous permettrait de poser des blocs, de définir les dimensions du monde, de déplacer le point d'apparition et d'autres aspects de la carte en appelant directement les méthodes sur l'objet Niveau instancié. Il n'est pas nécessaire de décompresser manuellement avant le chargement, puisque Java peut compresser et décompresser les fichiers .gzip à la volée. Pour recharger le fichier de données dans une instance de la classe Niveau, il vous faudrait la définition de cette classe. Elle est incluse dans le fichier minecraft-server.jar. Un exemple est disponible ici.

Il est également possible de lire et de modifier les données de la cartes en accédant directement au tableau d'octets brut dans le fichier de données. Pour faire cela, il faut le décompresser, changer les octets où le tableau d'octets est stocké, puis recompresser le fichier. Puisque vous éditez le fichier brut, il est nécessaire de ne pas toucher aux 344 (14E en hexadécimal) premiers octets. Les 256x256x64 octets suivants concernent le tableau de blocs. De plus, il est également possible de modifier la position du point d'apparition si vous savez où chercher : il y a 3 entiers à partir de l'octet 284, et réécrire les 12 octets à partir de celui-ci (ce qui correspond à 3 entiers) vous permettra de modifier les coordonnées du point d'apparition.

(Attention : Ces informations risquent de ne plus être valables au fil des changements dans Java)

Advertisement