Record Sanctuary sources through beta.060 and Git validation
Build Sanctuary / build (push) Canceled after 0s
Build Sanctuary / build (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# PROG-02A — Minage et vein mining — beta.008
|
||||
|
||||
Branche : `codex/progression-vein-mining`. Ticket implémenté et export local
|
||||
vérifié le 13 septembre 2026. Cible inchangée : Minecraft 26.3-pre-2 / Fabric.
|
||||
|
||||
## Contrat préalable de données
|
||||
|
||||
La progression personnelle passe au schéma 3 en ajoutant `mining`, entier
|
||||
de 0 à 7. Les schémas 1 (beta.003/004) et 2 (beta.005–007) sont lus selon
|
||||
leurs champs stricts, puis reçoivent `mining: 0`. Le schéma 1 reçoit aussi
|
||||
`atlas: false` selon son contrat antérieur. Aucun rang existant, achat, date
|
||||
ou coût historique n'est modifié. La migration ne crée pas d'achat fictif.
|
||||
|
||||
L'historique accepte sept achats `mining` supplémentaires, soit 30 événements
|
||||
au maximum. Chaque rang doit toujours correspondre à son nombre exact d'achats.
|
||||
À la restauration du joueur, la représentation canonique est réattachée au
|
||||
même champ persistant `sanctuary:progression` et enregistrée avec sa prochaine
|
||||
sauvegarde Minecraft. La migration est idempotente. Une donnée invalide refuse
|
||||
la restauration au lieu de réinitialiser la progression.
|
||||
|
||||
Les profils d'habitants, couleurs, Atlas, Demeure, XP non dépensée et fichiers
|
||||
de configuration existants sont conservés. `statCosts` finance aussi Minage :
|
||||
par défaut 1, 2, 4, 8, 16, 32 puis 64 niveaux. La configuration reste au schéma 2.
|
||||
Le paquet de progression conserve son identifiant et transporte le nouveau
|
||||
JSON ; le client et le serveur doivent utiliser beta.008 ensemble. Les anciennes
|
||||
versions ne lisent pas le schéma 3 : un retour arrière exige une sauvegarde
|
||||
antérieure des données de joueur. Aucun monde personnel n'est ouvert ici.
|
||||
|
||||
La mort ordinaire et la reconnexion conservent Minage comme les autres rangs.
|
||||
Aucun New Game+ ou reset n'est activé dans ce ticket. La génération, les chunks,
|
||||
les expansions et les identifiants existants restent inchangés.
|
||||
|
||||
## Fonctionnement implémenté
|
||||
|
||||
- Rangs 0–7, plafonds de 1 / 4 / 8 / 16 / 32 / 64 / 128 / 256 blocs.
|
||||
Le rang 0 garde le geste de minage individuel.
|
||||
- Courbe d'essai : vitesse Minecraft au départ, puis 115, 130, 145, 160, 175,
|
||||
187,5 et 200 %. Le modificateur natif `BLOCK_BREAK_SPEED` compose avec les
|
||||
outils, enchantements, effets et autres mods ; leurs modificateurs restent
|
||||
présents. La courbe historique 25–100 % n'est pas appliquée par défaut.
|
||||
- Blocs identiques reliés par les faces, dans une limite de sept blocs sur
|
||||
chaque axe autour de la cible. Coffres et autres blocs à entité, blocs
|
||||
indestructibles et chunks absents sont exclus. Aucun chunk n'est chargé
|
||||
pour trouver une veine.
|
||||
- Touche configurable maintenue et clic gauche ; aperçu avant de commencer,
|
||||
taille ajustable dans les rangs achetés. B reste le Blocodex.
|
||||
- Par défaut **R maintenu** affiche la veine ; **R + clic gauche maintenus**
|
||||
la minent. **R + molette** choisit un palier inférieur parmi les rangs acquis
|
||||
sans changer de case de barre rapide. Le prochain rang se voit dans l'infobulle
|
||||
de la compétence ; la touche affichée suit son réglage dans les contrôles.
|
||||
- Le serveur recalcule la sélection, vérifie l'origine visée, les permissions,
|
||||
l'outil, les états de blocs et la durée. Relâcher, changer d'outil, s'éloigner,
|
||||
mourir ou se déconnecter interrompt l'action.
|
||||
- La destruction passe par Minecraft pour les objets, l'XP, la durabilité,
|
||||
la faim, les enchantements, les statistiques et les événements de mods.
|
||||
L'aperçu et les actions refusées ne créditent aucune activité.
|
||||
|
||||
La durée de chaque bloc est cumulée avant la casse du groupe, puis les blocs
|
||||
sont détruits par lots d'au plus 16 par tick. Les états et permissions sont
|
||||
revérifiés ; une modification concurrente annule les travaux devenus obsolètes.
|
||||
Un outil remplacé, même par un exemplaire identique, ne reprend pas une charge.
|
||||
La rupture de l'outil arrête les blocs restants. Chaque geste a un identifiant
|
||||
éphémère et des maintiens espacés de cinq ticks ; sans maintien pendant plus de
|
||||
12 ticks, il expire. Un geste terminé ou refusé ne redémarre pas sur son maintien.
|
||||
Le passage au geste groupé annule aussi le minage individuel différé de Minecraft.
|
||||
|
||||
Les sons et particules de casse du groupe remplacent uniquement l'événement
|
||||
audiovisuel natif de ces blocs, pour ne pas jouer 256 sons simultanés. Les
|
||||
événements de jeu, callbacks de protection, statistiques, objets et XP suivent
|
||||
toujours la destruction Minecraft. Le créatif garde ses règles natives sans loot
|
||||
ni usure ; être opérateur en survie n'accorde aucune de ces exemptions.
|
||||
|
||||
Références GPL-3.0-or-later en lecture seule : `../26.2/sanctuary`, sélection
|
||||
`SanctuaryVeinSelection`, session `SanctuaryMiningSession`, limites communes
|
||||
et aperçu `SanctuarySelectionPreviewRenderer`. Le port est compilé et testé sur
|
||||
les API exactes de 26.3-pre-2 : attribut natif de vitesse synchronisé, nouvelle
|
||||
signature d'animation d'attaque, paquet de geste et rendu des contours par Gizmos.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- Compilation et contrôles de contrat `progression003Smoke` / `atlas005Smoke`
|
||||
réussis. Les anciennes données, leurs achats et configurations sont relus,
|
||||
et la migration Minage est contrôlée avec ses rangs, son plafond et ses refus.
|
||||
- Parcours client natif :
|
||||
`./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryProgressionClientTests=true`,
|
||||
réussi en **2 min 15 s**. Deux achats par clic réel, aperçu de huit puis quatre
|
||||
blocs, molette native sans changement d'outil, annulation, second geste avec
|
||||
huit casses et huit usages d'outil, reconfiguration de R vers G, interruption
|
||||
par B, mort et reprise des cinq achats sont vérifiés. La matrice de GUI et
|
||||
le parcours Atlas précédents restent inclus. Captures inspectées et conservées
|
||||
dans `build/beta008-preview/` ; journal `build/beta008-client-retry.log`.
|
||||
- Un premier client a été arrêté avant le lancement des tests, bloqué dans
|
||||
`SDL_GL_SwapWindow` pendant le chargement initial. Le nouvel essai a désactivé
|
||||
la VSync dans les options de développement uniquement ; cette option a été
|
||||
remise à sa valeur précédente après le succès. Aucun réglage de ce diagnostic
|
||||
n'est distribué. Pile native : `build/beta008-client-threads.txt`.
|
||||
- Le premier essai serveur a détecté deux erreurs de montage des tests : la
|
||||
contribution Demeure devait être additionnée sur les chunks traversés, et
|
||||
l'avance simulée d'un joueur faisait avancer les autres tests asynchrones.
|
||||
La simulation est maintenant isolée par joueur ; le scénario à deux mineurs
|
||||
les fait avancer alternativement. Le scénario créatif a aussi été corrigé :
|
||||
le joueur simulé doit être créé dans ce mode, car le mock Minecraft conserve
|
||||
le mode fourni à sa création malgré un appel ultérieur à `setGameMode`.
|
||||
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=progression,map,demeure,mining`
|
||||
réussi en **4 min 4 s**, dont **18 tests serveur natifs obligatoires réussis**.
|
||||
Les dix scénarios Minage couvrent les achats, limites, protections Fabric,
|
||||
annulations, interruptions, deux mineurs concurrents, expiration du maintien,
|
||||
blocs instantanés, créatif, usure, mauvais outil, Toucher de soie et Fortune.
|
||||
Ils vérifient aussi les crédits Blocodex/Demeure, statistiques, faim et XP
|
||||
issus des destructions natives. Les contrôles purs du dépôt sont inclus.
|
||||
Journal : `build/beta008-delivery-final.log`.
|
||||
|
||||
Les deux assertions worldgen générales connues en beta.003/005 ne sont pas
|
||||
revendiquées corrigées par ce ticket ; la sélection de tests serveur ci-dessus
|
||||
reste ciblée sur progression, carte, Demeure et Minage.
|
||||
|
||||
## Artefact local
|
||||
|
||||
- [Sanctuary-beta.008.mrpack](../build/Sanctuary-beta.008.mrpack), **2 331 912 octets**.
|
||||
- SHA-256 : `760176daa164fd28ece77008dc0442cfc5539c997f9a9696ea2cea6edf21bcf3`.
|
||||
- Reçu : `build/mining008-artifact.json` ; somme séparée :
|
||||
`build/Sanctuary-beta.008.mrpack.sha256`.
|
||||
- Export packwiz vérifié : CRC, manifeste et versions internes, identité du JAR
|
||||
construit et du JAR Demeure embarqué, classes et mixins Minage, traductions
|
||||
FR/EN, six icônes originales, index et dépendance Fabric API exacts, absence
|
||||
de classes de test. Les exports beta.003 à beta.007 sont restés identiques.
|
||||
|
||||
Cet export n'a pas été publié sur le canal packwiz ni installé dans une instance
|
||||
personnelle. Les mondes utilisés pour les vérifications sont ceux du développement.
|
||||
Reference in New Issue
Block a user