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

11 KiB
Raw Permalink Blame History

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. 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 publie des versions 26.2, sans release annoncée pour la cible exacte du dépôt.
  • Source 26.3
    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.
  • Recherche Minecraft Schematics.
  • 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 :

./gradlew :sanctuary:runClientGameTest \
  -PsanctuaryClientTests=true -PsanctuaryPlans072ClientTests=true \
  -PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true

Commande de contrôle et d'assemblage finale :

./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 9 534 082 ccadfa614595f4409cb8eab9c795f112e65854c8e84864c8a8fb67dbc2de450e
Monde plat rapide 9 553 013 cb1786ffbf0290fc2cc5437647423e96abee8bca7737537aecbb12de98aee811
Mod Sanctuary 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.