153 lines
8.5 KiB
Markdown
153 lines
8.5 KiB
Markdown
# GEM-01 — Gemmes, argile et découvertes — beta.126
|
||
|
||
Contrat du 17 septembre 2026, branche `codex/gems-beta126`, Minecraft 26.3.
|
||
|
||
Deux gemmes natives complètent l'émeraude : `sanctuary:ruby` et
|
||
`sanctuary:sapphire`. Chaque famille comprend un bloc de stockage, un minerai
|
||
ordinaire et un minerai des abîmes. Les huit PNG du créateur sont copiés à
|
||
l'identique ; leurs empreintes figurent dans `tools/gems-textures-beta126.json`.
|
||
Les noms des fichiers français `saphir` sont associés aux identifiants anglais
|
||
stables `sapphire`, sans modifier les pixels. Les deux items utilisent les fichiers de remplacement
|
||
`Desktop/ruby.png` et `Desktop/saphir.png` fournis en fin de livraison.
|
||
|
||
L'ordre créatif est émeraude, rubis, saphir : ingrédients, blocs de stockage,
|
||
minerais ordinaires et minerais des abîmes dans leurs onglets natifs respectifs.
|
||
Minage à la pioche de fer ou mieux, résistance et expérience comme l'émeraude,
|
||
Fortune, Toucher de soie, cuisson/four à fusion et conversion 9 gemmes ↔ 1 bloc.
|
||
Les blocs peuvent former un socle de balise et les gemmes servir de paiement.
|
||
Les recettes rejoignent la collection actuelle de l'émeraude, sans ajouter de
|
||
transactions de villageois. Libellés français et anglais, tags communs `c:`.
|
||
|
||
## Génération procédurale et contrat de compatibilité
|
||
|
||
Profil initial **gemmes 1 / beta.126** : quatre tentatives par chunk et par
|
||
gemme, filons natifs de taille 3, hauteur uniforme Y0–256, probabilité de rejet
|
||
au contact de l'air de 0,25. Ces nombres sont un réglage initial à équilibrer
|
||
lors de la future refonte ; aucun quota de gemmes par chunk n'est garanti.
|
||
Les variantes ordinaires remplacent les roches du tag vanilla
|
||
`stone_ore_replaceables`, les variantes des abîmes celles de
|
||
`deepslate_ore_replaceables`.
|
||
|
||
Les fichiers `worldgen/feature/ore_<gemme>.json`,
|
||
`worldgen/placed_feature/ore_<gemme>.json` et les tags de biomes
|
||
`has_ore/<gemme>` séparent les cibles, la forme, la fréquence, la hauteur et
|
||
les régions. Un datapack peut les remplacer sans recompiler le mod. Le code
|
||
réutilise `OreFeature` et le hasard natif issu de la graine ; il limite ces
|
||
filons aux mondes utilisant `SanctuaryChunkGenerator`. Les biomes vanilla
|
||
partagés avec Sanctuary restent compatibles sans ajouter les gemmes aux
|
||
mondes vanilla, au Nether ou à l'End.
|
||
|
||
Cette évolution additive est autorisée pour les **nouveaux chunks uniquement**.
|
||
Aucun remplissage rétrospectif, aucune régénération, aucun remplacement de chunk
|
||
sauvegardé ni activation d'expansion. Les codecs du relief, les dimensions et
|
||
le format des sauvegardes restent inchangés. Les filons suivent les protections
|
||
existantes de la décoration native. Les anciens profils expérimentaux précédant
|
||
le générateur Sanctuary unifié ne sont pas étendus.
|
||
|
||
## Argile spéciale dans le Clay Workshop
|
||
|
||
Le bloc d'argile vanilla conserve les couleurs échantillonnées sur le modèle
|
||
original, animal découvert ou import GLB. Les argiles colorées et les autres
|
||
blocs continuent à transférer leur palette de texture. Une même règle est
|
||
appliquée à l'aperçu client et au résultat serveur. Le changement de matériau
|
||
invalide le résultat même si les deux palettes sont identiques. Le texte de
|
||
l'atelier explique l'exception en français et en anglais.
|
||
|
||
Une sculpture coûte toujours un bloc ; aucune recette, découverte, donnée de
|
||
sculpture déjà fabriquée ni règle de placement n'est modifiée.
|
||
|
||
## Commande de découverte commune
|
||
|
||
`/sanctuary discovery all` découvre tous les blocs, objets et espèces enregistrés.
|
||
Les variantes `blocks all`, `items all` et `mobs all` ciblent une catégorie ;
|
||
`block <identifiant>`, `item <identifiant>` et `mob <identifiant>` ciblent une
|
||
entrée avec la complétion native. Un sélecteur de joueurs en fin de commande
|
||
est facultatif ; sans cible, elle s'applique au joueur qui l'exécute.
|
||
|
||
Exemples :
|
||
|
||
```mcfunction
|
||
/sanctuary discovery all
|
||
/sanctuary discovery mobs all
|
||
/sanctuary discovery block minecraft:stone
|
||
/sanctuary discovery item minecraft:diamond
|
||
/sanctuary discovery mob minecraft:cow
|
||
/sanctuary discovery all @a
|
||
```
|
||
|
||
La permission suit « Autoriser les commandes » en solo et les droits opérateur
|
||
sur serveur. La console doit préciser la cible. Les identifiants invalides,
|
||
l'air et les types d'entités sans espèce découvrable sont refusés.
|
||
|
||
Les blocs passent par le registre de découvertes et son événement existant ;
|
||
les objets passent par `RecipeService.discover`. Les collections et recettes
|
||
sont ensuite recalculées normalement. Les espèces rejoignent `seen_mobs`,
|
||
la même donnée que l'observation naturelle, consommée par les familiers,
|
||
le Métabli et le Clay Workshop. Il n'existe aucun drapeau de déblocage parallèle.
|
||
Les catalogues déjà ouverts sont à rouvrir après la commande.
|
||
|
||
La commande conserve les quantités possédées et les compteurs de combat,
|
||
minage, pose et fabrication. Elle ne donne pas d'objets, n'achète pas les skills
|
||
et n'attribue pas d'advancements. Les recettes réservées aux opérateurs gardent
|
||
leurs règles. Les historiques personnels sont enrichis sans changer leur
|
||
schéma ; la commande refuse les données illisibles plutôt que les remplacer.
|
||
|
||
## Vérifications
|
||
|
||
Client natif Minecraft 26.3 / Java 25, `Gems126ClientChecks`, réussi en
|
||
1 min 08 s. Les mondes sont jetables, sans sauvegarde personnelle ouverte :
|
||
|
||
- Les huit items et six blocs sont présents, avec les huit textures exactes.
|
||
Quatre groupes créatifs respectent émeraude → rubis → saphir, sans doublons.
|
||
- Douze recettes natives, découverte du bloc de stockage, outil fer minimum,
|
||
Fortune III, Toucher de soie et balises passent les contrôles serveur.
|
||
- Graine **126**, profil gemmes 1, 81 chunks autour de l'origine : 7 rubis dans
|
||
la pierre et 8 dans la roche des abîmes ; 15 saphirs dans la pierre et 10 dans
|
||
la roche des abîmes. La génération est refusée dans le monde plat vanilla.
|
||
Les minerais persistent à la reconnexion, et un minerai retiré ne réapparaît pas.
|
||
- L'argile conserve exactement les couleurs des voxels d'une vache et d'un GLB
|
||
texturé. Bois et argile colorée transfèrent toujours leur palette. Le retour
|
||
à l'argile, l'égalité aperçu/résultat et le coût d'un bloc en survie sont vérifiés.
|
||
- La commande native respecte « Autoriser les commandes », accepte une cible
|
||
et la console, refuse les identifiants invalides et permet une espèce, un
|
||
bloc, un objet, toutes les espèces ou tout le contenu. Les recettes liées
|
||
sont recalculées. La répétition est idempotente et les découvertes survivent
|
||
à la reconnexion sans inventer de compteurs de combat ou de possession.
|
||
|
||
Logs et captures dans `build/gems126-client.log` et
|
||
`mods/sanctuary/build/run/clientGameTest/screenshots/`. Le GameTest dédié
|
||
reste exclu conformément au refus antérieur de son EULA. Le build complet et
|
||
les archives sont vérifiés séparément avant publication.
|
||
|
||
|
||
Build final `./gradlew check build assemblePack assembleTestPack
|
||
-x :sanctuary:runGameTest` réussi en **2 min 10 s**, 126 tâches. Les contrôles
|
||
natifs de gameplay précèdent uniquement le remplacement final des deux PNG
|
||
d'items ; les huit fichiers livrés sont vérifiés à l'octet près contre les
|
||
sources, tous en 16 × 16. Les JAR de sources correspondent aux sources courantes.
|
||
L'audit entre les binaires beta.125 et beta.126 ne trouve que les 112 entrées
|
||
de production prévues. Les archives normal/Test contiennent le même mod et
|
||
le template reproduit exactement ses ressources exportables.
|
||
|
||
| Artefact | SHA-256 |
|
||
| --- | --- |
|
||
| `Sanctuary-beta.126.mrpack` | `716221ce24549781ab91f5437ad2310497b198a4b61c43c40c67a27984365ae5` |
|
||
| `Sanctuary-Test-beta.126.mrpack` | `bbf22d7dd72e6746538b4ec28686f699225d4a59372304e5db42140a80e88bd1` |
|
||
| `sanctuary-beta.126.jar` | `85dbe1b41d98751029bb62e87d259522f8609758896c797b1e02fa7656ec0342` |
|
||
|
||
## Publication et synchronisation
|
||
|
||
[Release beta.126](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.126)
|
||
publiée depuis `99860af312a1737d938812f3515fcc4acb4291b2` ; artefacts
|
||
immuables retéléchargés et vérifiés. Canal packwiz : `31749b95d21ce5bced6b9e5759499da6f8a67e6e`.
|
||
Deux synchronisations isolées, puis deux synchronisations de l'instance existante
|
||
**Sanctuary Beta** ont réussi. Un seul JAR Sanctuary beta.126, correspondant
|
||
à l'empreinte ci-dessus. Les **923 fichiers personnels** suivis sont conservés,
|
||
sauvegardes restées fermées ; copie préalable dans
|
||
`sanctuary-backups/before-beta.126/`.
|
||
|
||
Packs normal/Test et template copiés et vérifiés dans
|
||
`sanctuary-beta/build/`. Reçus locaux : `build/gems126-artifact.json`,
|
||
`build/gems126-isolated.json`, `build/gems126-prism.json` et
|
||
`build/gems126-publication.log`.
|