# beta.057 — météo quotidienne Sanctuary Branche `codex/daily-weather-beta057`. Contrat avant implémentation : une météo commune par date civile du monde, en réutilisant le fuseau du système Real Time. La météo est indépendante du mode du soleil : `vanilla` rend le cycle à Minecraft ; `realtime` conserve le profil choisi pour la journée. Les profils pluie et orage sont continus ; le profil averses alterne pluie et pauses sèches. Le tirage local est déterministe selon la graine du monde et la date, sans réseau ni géolocalisation. Les proportions de départ configurables sont : 65 % beau temps, 15 % ciel gris, 5 % brouillard, 10 % averses, 3 % pluie continue et 2 % orage continu. Ce sont des probabilités par journée. Les proportions se règlent dans `config/sanctuary/weather.json` ; la prévision déjà enregistrée pour aujourd'hui ne change pas lors d'un rechargement. Les transitions d'intensité, sons, neige par biome et éclairs restent natifs. Le profil averses place une pluie de 35 à 75 minutes dans chaque tranche de 3 heures réelles, avec des pauses sèches. La position de chaque passage est calculée depuis la graine/date/tranche ; une reconnexion ne la déplace pas. Les tranches comptent le temps réellement écoulé depuis le minuit local, y compris lors des journées de 23 ou 25 heures au changement d'heure. Le ciel gris et les averses atténuent les couleurs du ciel et la lumière solaire sans transformer artificiellement l'état sec en pluie. Le brouillard utilise les distances natives (fin atmosphérique 80 blocs, ciel 120, nuages 96) et se compose avec le réglage Vanilla Light. La transition des ambiances prend environ 10 secondes de jeu. Eau, lave, cécité et obscurité gardent leurs attributs natifs. La présentation se branche sur les couches d'environnement de Minecraft : pas de nouvelle passe shader, texture de bruit, reconstruction des chunks ni rechargement des shaders. Les moteurs de shaders externes restent à vérifier. Le serveur transmet le profil aux clients à la connexion et lors de ses changements, y compris le retour à Vanilla. La pluie et l'orage utilisent leurs paquets natifs. Le calcul météo se fait une fois par seconde ; l'écriture du journal n'a lieu qu'au changement de date ou de mode. ## Contrat de sauvegarde et de retour Un fichier additif `data/sanctuary-weather.json`, schéma 1, conserve le mode, la date civile et sa prévision. Il est écrit atomiquement avant toute action météorologique. Aucun ancien schéma ni paramètre de génération n'est modifié. Un document invalide est conservé ; le chargement refuse la prise de contrôle. Le mode quotidien est activé par défaut seulement dans les mondes Sanctuary et Sanctuary Test. Un monde vanilla ordinaire garde son comportement natif. Les jours manqués ne sont pas simulés. La reconnexion et le redémarrage gardent le profil du jour ; un nouveau profil est choisi à minuit dans le fuseau du serveur intégré ou dédié, et non à chaque journée Minecraft. Le cycle aléatoire et l'effacement de la pluie par le sommeil sont suspendus uniquement quand cette météo contrôle le monde. Les règles de jeu sauvegardées ne sont pas modifiées. Le retour à Vanilla reprend les durées natives depuis l'état météo courant, sans conserver une durée de 24 heures en ticks. Sans le mod, Minecraft peut reprendre ses durées usuelles. Les autres systèmes de simulation et les dimensions sans météo restent natifs. ## Commandes et extension future Configuration serveur `config/sanctuary/weather.json` : ```json { "enabled": true, "overcastPercent": 15, "fogPercent": 5, "showersPercent": 10, "rainPercent": 3, "thunderPercent": 2 } ``` Le beau temps représente le reste jusqu'à 100 %. Une somme supérieure à 100 %, un entier négatif ou fractionnaire et un document invalide sont refusés. Les nouveaux poids s'appliquent au prochain jour ; `enabled: false` rend immédiatement la météo au moteur après rechargement. Le retour explicite à Vanilla dans un monde est conservé même après réactivation globale. - `/sanctuary weather` : consulter le mode, la prévision et sa date/fuseau. - `/sanctuary weather realtime` : activer le mode quotidien (opérateur). - `/sanctuary weather vanilla` : reprendre le cycle Minecraft (opérateur). - `/sanctuary weather reload` : recharger les proportions/configuration (opérateur). En Real Time, `/weather` indique comment reprendre le mode Vanilla pour changer la météo librement. Les mutations passent par l'autorité serveur. La Weather TNT qui force ou arrête la pluie appartient au prochain ticket ; aucun nouveau bloc, explosif ni recette n'est ajouté ici. ## Vérifications Le contrôle `weather057Smoke`, intégré à `check`, passe 222 058 assertions : 50 000 tirages quotidiens, proportions, bornes, persistance, rechargement, refus des données invalides, retours de mode et absence de rattrapage hors ligne. Il vérifie aussi les tranches d'averses, leurs pauses sèches, les journées de 23/25 heures et le 29 février. Les proportions observées sont respectivement 32 451 / 7 558 / 2 478 / 4 914 / 1 522 / 1 077 jours pour beau temps / gris / brouillard / averses / pluie / orage. Le client intégré `Weather057ClientChecks` vérifie les six profils natifs, les paquets de pluie/orage et du nouveau profil, le brouillard réellement utilisé par le rendu, l'absence de pluie en gris/brouillard, l'alternance humide et sèche pendant une même journée d'averses, et les passages de date. Les durées aléatoires sont suspendues sans modifier la règle de jeu ; le reset météo utilisé par le sommeil est bloqué en Real Time et disponible en Vanilla. Les commandes, leurs permissions, l'indépendance du soleil, les configurations invalides, les retours Vanilla et les libellés FR/EN sont vérifiés. `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit sur Minecraft 26.3-pre-2 avec Java 25. Les essais natifs utilisent `-PsanctuaryClientTests=true -PsanctuaryWeather057ClientTests=true -PsanctuaryQuickTests=true`. Aucun serveur dédié ni EULA supplémentaire accepté. Les frontières horaires sont simulées avec une horloge injectée dans le monde de test ; plusieurs journées d'hébergement réel ne sont pas revendiquées. Aucun monde personnel, canal public ou instance de jeu n'est modifié. Logs : `build/weather057-check.log`, `build/weather057-client.log`. Captures : `build/weather057-evidence/`. La confirmation d'intégrité des exports est consignée dans `build/weather057-artifact.json`. [Pack normal](../build/Sanctuary-beta.057.mrpack) · [Monde plat rapide](../build/Sanctuary-Test-beta.057.mrpack).