Files
sanctuary-beta/docs/mining-beta008.md
T
2026-09-15 09:29:11 +02:00

8.2 KiB
Raw Permalink Blame History

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.005007) 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 07, 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 25100 % 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, 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.