Pourquoi je n'arrive pas à utiliser mon schématique de Schématica avec WorldEdit ?
Afin de pouvoir comprendre cela, il faut commencer par comprendre le fonctionnement des schématiques. Un schématique n'est ni plus ni moins qu'un fichier qui associe à des coordonnées x, y et z, un bloc du jeu. Les schématiques 1.6.4 de WorldEdit et de Schématica se basent sur la spécification V1. Il s'agit d'une spécification, c'est à dire un ensemble de règles, non officiel utilisé par de nombreux logiciel comme McEdit, WorldEdit et Schematica (pour les versions 1.6.4)
Structure d'un schématique v1
- Width (Largeur): Il s'agit de la largeur du schématique sur l'axe x
- Height (Hauteur): Il s'agit de la hauteur du schématique sur l'axe y
- Length (Longueur): Il s'agit de la longueur du schématique sur l'axe z
- Data: Il s'agit des metadata du blocs. Par exemple, les buches de bois de la jungle ont pour id 5:3, sa métadonnée est 3
- TileEntities: Les TilesEntities permettent de sauvegarder l'état d'un bloc, par exemple les items d'un coffre. Celles-ci sont ainsi stockées dans ce champ.
- Extra data: Ce champ n'existe pas vraiment, mais il représente les différents champs non essentiels à l'utilisation d'un schématique. Il y a par exemple le champ "Icon" qui permet de définir l'item afficher dans la liste des schématique Schématica ou le champ "WEOriginX" qui est utiliser par WorldEdit
Jusqu'à là, tout est compatible entre WorldEdit et Schématica. Le problème arrive avec les champs "Blocks" et "AddBlocks". En effet, en suivant la spécificaton, le champ "Blocks" est une liste d'id de blocs. Chaque id est enregistré sur un octet non signé (8 bits). Cela signifie donc que les id possibles sont entre 0 et 255. Or, comme vous le savez surement, sur NationsGlory, de nombreux blocs ont des id supérieurs à 255 comme par exemple la repair machine avec un id de 3575:0.
Afin de pouvoir tout de même les enregistrer, l'astuce est d'enregistrer une partie de l'id du bloc dans le champ "AddBlocks". Prenons l'exemple de l'id 3575:0 (une repair machine).
Par ailleurs, l'id d'enregistrement maximale des blocs sur Minecraft 1.6.4 étant 4095, ce qui correspond à 0000 1111 1111 1111, une astuce est utilisé afin de réduire le poids des schématiques. C'est ici que les 2 fichiers schématiques vont diverger. En effet, le champ "AddBlocks" ne nécessitant pas plus de 4 bits par blocs (les premiers zéro étant inutile), les blocs sont regroupés 2 par 2 mais, WorldEdit et Schématica ne les regroupent pas de la même façon
On voit ici le problème qui rend incompatible les schématiques Schématica avec ceux de WorldEdit. Cela est dû à l'inversion entre les id pair et impair lors du regroupement. Pour résoudre ce problème, il faut donc inverser les id pair et impair lors de l'enregistrement des blocs dans le champ "AddBlocks". C'est ce qui est réalisé par cette feature de Yoxo.