Files
sanctuary-beta/docs/statues-plans-beta072.md
T
2026-09-16 11:41:27 +02:00

193 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PLAN-01 — statues et plans légers — beta.072
Branche `codex/statues-plans-beta072`. Ticket ouvert le 15 septembre 2026.
**Implémenté, essais natifs réussis et archives locales beta.072 vérifiées.**
## Demande et choix retenu
Extraire les modèles et textures réellement utilisés par Minecraft pour créer
des statues en blocs, avec une palette de matériaux choisie par couleur.
Le créateur demande un outil Sanctuary léger qui couvre l'essentiel des plans
partagés en ligne. Il a retenu une implémentation native compatible avec les
fichiers Litematica, sans embarquer Litematica ou MaLiLib.
Parcours : modèle → hauteur et palette → plan → aperçu positionnable et
orientable → placement créatif, ou construction manuelle guidée en survie.
Les plans importés partagent ce dernier parcours. Une bibliothèque locale,
l'export `.litematic`, les couches et le décompte des blocs complètent l'outil.
Le lien de recherche Minecraft Schematics livré en beta.072 est retiré en
[beta.075](plans-library-beta075.md). La bibliothèque utilise les fichiers locaux.
## Utilisation
1. Appuyer sur **K** (raccourci modifiable dans les contrôles).
2. Dans **Statue**, choisir une espèce, ou le mob visé au moment d'ouvrir
l'écran. Régler la hauteur de 4 à 96 blocs et la palette : mélange, béton
ou laine. La géométrie et les textures viennent du rendu natif et des
ressources actives ; les pixels transparents ne deviennent pas des blocs.
3. Dans **Bibliothèque**, charger un fichier local ou le déposer sur l'écran.
Les dossiers `schematics/` et `schematics/sanctuary/` sont consultés.
**Ouvrir le dossier** permet dy déposer des plans ; **Actualiser** relit
les fichiers disponibles.
4. Dans **Construction**, ancrer le plan au point visé, régler ses coordonnées,
tourner de 90°, isoler une couche et consulter les blocs restants.
Les blocs corrects disparaissent de l'aperçu ; les conflits sont rouges.
5. En créatif, **Placer** puis confirmer dans le jeu. En survie, poser les
blocs normalement avec son inventaire ; le compteur suit l'avancement.
**Exporter** écrit un `.litematic` dans `schematics/sanctuary/`, sans écraser
les exports précédents.
L'aperçu est local et se ferme au changement de dimension ou à la déconnexion.
Exporter avant de quitter conserve le plan. Le serveur Sanctuary est requis
pour le collage créatif ; un aperçu seul ne donne aucun droit de placement.
## Compatibilité implémentée
- Minecraft **26.3-pre-2**, Java 25, versions Fabric du dépôt.
- `.litematic` versions 4 à 7 en lecture, version 6 en écriture ; Sponge
`.schem` v2/v3 en lecture ; structures vanilla `.nbt` en lecture. Fichiers
NBT compressés gzip. Les palettes classiques `Name`/`Properties` et les clés
natives 26.3 `id`/`properties` sont lues ; l'export Litematic conserve le
contrat classique, indépendant de la version Minecraft.
- Refus explicite des blocs ou propriétés inconnus, des formats non pris en
charge et des données d'une version Minecraft plus récente. Aucun remplacement
silencieux par de l'air ; aucune migration automatique d'anciens identifiants.
- Les anciennes `.schematic` à identifiants numériques nécessitent une
conversion externe. Ni archive de monde ni ZIP n'est un plan importable.
- Import des blocs uniquement : les inventaires, commandes, entités vivantes,
ticks différés et biomes d'un fichier tiers ne sont pas exécutés/importés.
## Contrat de monde et de sauvegarde
Les plans sont des fichiers clients indépendants ; aucun format de sauvegarde
Sanctuary ni aucune génération n'évolue. Aucun monde personnel n'est ouvert
par le développement. La conversion utilise un modèle de rendu, sans faire
apparaître ni supprimer un mob. Un aperçu ne modifie pas le monde.
Le collage créatif demande une action explicite en jeu. Le serveur vérifie le
mode réel, la taille, la portée, les chunks déjà chargés, la frontière du monde,
les permissions et l'absence de blocs occupés. Un opérateur en survie reste en
survie. Les blocs d'air du plan ne servent jamais à effacer le terrain.
En survie, les poses et la consommation passent par Minecraft normalement.
## Limites de cette livraison
- Les statues sont des enveloppes creuses. Les couleurs sont approchées par
celles des textures moyennes des matériaux ; la forme dépend de la hauteur
choisie. Les effets, étiquettes, laisses et couches d'objets/blocs ne font pas
partie de la capture. Les textures dynamiques absentes des ressources et les
UV d'atlas spéciaux demandent encore un adaptateur.
- L'aperçu utilise des faces colorées et les formes de sélection natives,
sans reproduire toutes les textures et l'éclairage d'un bloc posé. Il dessine
à 96 blocs du joueur et recalcule les blocs restants toutes les dix ticks.
Le traitement des fichiers et la conversion géométrique passent par un
unique fil de travail ; masquer le plan arrête son actualisation périodique.
- Plafonds : 256 blocs par axe, 32 768 blocs non vides, 2 097 152 cellules de
volume ; fichier compressé de 8 Mio et lecture NBT de 32 Mio au maximum.
La capture refuse plus de 16 384 faces et la conversion plus de 8 millions
d'échantillons. Un gros build communautaire peut dépasser ces limites.
- Collage à moins de 192 blocs, dans des chunks chargés. Pas d'effacement,
de remplacement du terrain occupé, de blocs administratifs ou sans objet
associé. Le serveur consulte les permissions et le veto Fabric d'utilisation
des blocs. La physique et les mises à jour des voisins reprennent ensuite.
- Les matériaux comptent des états de blocs. Portes, lits et dalles doubles
peuvent donc demander un nombre d'objets différent du nombre affiché.
- Aucun import d'inventaire, de NBT de bloc ou d'entité ; aucun miroir, collage
avec remplacement, remplissage automatique en survie ou catalogue web intégré.
- Aucun benchmark comparatif avec Litematica n'est revendiqué. La réduction
de périmètre et l'absence de dépendance supplémentaire sont vérifiables ;
elles ne constituent pas une mesure de gain de FPS.
## Sources de compatibilité
Vérifiées le 15 septembre 2026 :
- [Litematica](https://modrinth.com/mod/litematica/versions) publie des versions
26.2, sans release annoncée pour la cible exacte du dépôt.
- [Source 26.3](https://github.com/sakura-ryoko/litematica/tree/101ac3a23649f916cdcf05f30a5036f72706a096)
: cible 26.3-rc-1, rendu encore en chantier. Consultée pour le contrat du
format ; aucun JAR tiers supposé compatible n'est ajouté au pack.
- [Spécification Sponge v3](https://github.com/SpongePowered/Schematic-Specification/blob/master/versions/schematic-3.md).
- [Recherche Minecraft Schematics](https://www.minecraft-schematics.com/search/).
- [Litemapy](https://github.com/SmylerMC/litemapy), utilisé seulement pour écrire
des fixtures synthétiques indépendantes et relire l'export, hors distribution.
## Vérifications
Essais sur macOS, Java 25, Minecraft 26.3-pre-2 et Fabric API 0.160.0+26.3.
Tous les mondes utilisés sont des mondes de développement jetables.
- **Client natif réussi** : les 88 espèces à œuf d'apparition ont fourni leur
géométrie texturée. Un creeper a parcouru les vrais widgets de création,
l'aperçu, les quatre rotations, les matériaux, l'export, la confirmation et
le collage réseau. Le serveur et le client retrouvent les mêmes blocs.
Résultat : **10 × 32 × 15**, **1 542 blocs**, 22 entrées de palette avec l'air.
Seul ce modèle a fait l'objet du parcours complet de statue en jeu ; la
capture des 88 espèces ne vaut pas inspection visuelle de 88 statues.
- **Survie vérifiée** : un paquet de collage envoyé malgré le mode survie est
refusé ; l'interface ne propose pas le collage. Une pose au clic droit natif
consomme un objet et fait avancer le compteur. Interfaces FR/EN capturées ;
les 95 nouvelles clés de traduction sont présentes dans les deux langues.
- **Interopérabilité indépendante** : Litemapy 0.11.0b0 relit le fichier produit
en jeu et retrouve dimensions, états et total de 1 542 blocs. Ses trois
écrivains ont aussi produit les fixtures `.litematic`, Sponge et vanilla
du test serveur. La dépendance Python reste dans un environnement ignoré ;
seuls les petits exemples synthétiques en base64 sont versionnés.
- **Serveur et formats réussis** : les six GameTests du ticket et le test de
contrôle Fabric passent. Ils couvrent l'autorité créatif/survie, le refus
complet sur bloc occupé ou permission refusée, les blocs administratifs,
la portée, les régions négatives, les palettes traversant les mots de 64 bits,
les fichiers indépendants, les entrées invalides, la transparence, les UV et
les rotations.
- **Build et distribution réussis** : `check build assemblePack assembleTestPack`
termine en 3 min 8 s, 130 tâches. Les GameTests sont ciblés sur PLAN-01 dans
le harnais plat ; les contrôles Java/Python généraux restent exécutés. Ce
ciblage ne revendique pas une nouvelle validation de toute la génération.
Un premier lancement avait échoué au démarrage Java du test historique
`lostCityPlanner15Smoke` avec un message JavaFX ; le même test isolé puis
l'ensemble de la commande réussissent sans modification de ce code.
Commande du parcours client :
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryPlans072ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Commande de contrôle et d'assemblage finale :
```sh
./gradlew check build assemblePack assembleTestPack \
-PsanctuaryFocusedTests=plans072 -PsanctuaryAtlasOnly=true \
-PsanctuaryClientTests=true -PsanctuaryPlans072ClientTests=true \
-PsanctuaryQuickTests=true
```
Puis `packwiz modrinth export --output ../Sanctuary-beta.072.mrpack` dans
`build/packwiz/`, et l'équivalent `Sanctuary-Test-beta.072.mrpack` depuis
`build/packwiz-test/`.
Les captures et reçus locaux sont conservés dans
`build/statues-research/evidence/`, `client-tests.log` et `interoperability.json`
du même dossier de recherche. Ils ne sont pas ajoutés au pack.
## Archives locales
Le mod et les manifestes passent à **beta.072** ; les textures restent en
**beta.070**. Les 1 671 classes du JAR correspondent exactement aux classes
compilées, les 758 sources Java à l'archive des sources, et les 150 ressources
graphiques aux fichiers versionnés. Les deux MRpacks contiennent le même JAR
Sanctuary ; seul le profil Test ajoute le module de monde plat. Versions,
index packwiz, empreintes et intégrité ZIP sont vérifiés.
| Artefact | Octets | SHA-256 |
| --- | ---: | --- |
| [Pack normal](../build/Sanctuary-beta.072.mrpack) | 9 534 082 | `ccadfa614595f4409cb8eab9c795f112e65854c8e84864c8a8fb67dbc2de450e` |
| [Monde plat rapide](../build/Sanctuary-Test-beta.072.mrpack) | 9 553 013 | `cb1786ffbf0290fc2cc5437647423e96abee8bca7737537aecbb12de98aee811` |
| [Mod Sanctuary](../mods/sanctuary/build/libs/sanctuary-beta.072.jar) | 10 043 650 | `f324eba7046563e06671c27551497ad6254cac80a27b5adbf3887b20998f0325` |
Reçu : `build/statues-research/artifacts.json`. Les changements déjà présents
des beta.062 à beta.071 sont conservés. Aucun canal public, instance Prism ou
serveur personnel n'est synchronisé par cette préparation locale.