Files
mc/atlas/SURVIEPOTE.md
T

6.2 KiB

SurviePote — Atlas (Nebula) : configuration plug-and-play

Génère root/distribution.json pour le launcher Helios (SurviePote, MC 26.3, Fabric Loader 0.20.0). Le launcher lit la distribution à https://mcpv.ihorizon.org/distribution.json (cf launcher/app/assets/js/distromanager.js).

1. Arborescence root/

atlas/
├── .env                        # ROOT=./root, BASE_URL, JAVA_EXECUTABLE (voir §2)
├── SURVIEPOTE.md               # ce fichier
└── root/                       # web root à servir (TNDev: NE PAS committer les .jar, voir .gitignore)
    ├── distribution.json       # fichier généré, servi à https://mcpv.ihorizon.org/distribution.json
    ├── meta/
    │   └── distrometa.json     # rss + discord client (globaux)
    ├── schemas/                # schémas JSON régénérés par `init root` / `g schemas`
    ├── modpacks/curseforge/    # vide (import CurseForge, inutilisé)
    └── servers/
        └── SurviePote-26.3/
            ├── servermeta.json         # nom, adresse, discord, main/autoconnect
            ├── SurviePote-26.3.png     # icône serveur (copiée de launcher/build/icon.png)
            ├── fabricmods/
            │   ├── required/       # 31 mods partagés (client+serveur), TOUS requis
            │   ├── optionalon/     # vide
            │   └── optionaloff/    # vide
            ├── files/
            │   ├── resourcepacks/FallPack_26.3_v3.1.zip   # module File, chemin préservé
            │   └── shaderpacks/Revelation-dev.zip         # module File, chemin préservé
            └── libraries/      # vide (libs Fabric résolues à la volée via FabricResolver)

2. .env

JAVA_EXECUTABLE=/run/current-system/sw/bin/java
ROOT=./root
BASE_URL=https://mcpv.ihorizon.org/
HELIOS_DATA_FOLDER=
# DEV ALTERNATIVE (décommenter en dev local):
# BASE_URL=http://localhost:8080/
  • BASE_URL doit finir par / : c'est le préfixe des URLs dans distribution.json. Prod : https://git.kisakay.com/k/mc/raw/branch/main/atlas/root/ — tous les artefacts (mods, files, repo Fabric) sont versionnés sur git et servis en raw public, aucun hébergeur de fichiers séparé nécessaire. Voir .env.example. En dev, passer à http://localhost:8931/ puis régénérer (g distro).
  • Écart volontaire : la consigne disait /usr/bin/java, inexistant sur NixOS ; on pointe vers le binaire réel (readlink -f $(which java)).
  • HELIOS_DATA_FOLDER vide = pas de --installLocal (pas de dossier Helios local).

3. Re-générer

cd atlas
npm install                              # une fois (Node 22 requis, testé en 24.14.0 OK)
npm run start -- init root               # (re)crée root/meta, root/schemas, root/servers
npm run faststart -- g server SurviePote 26.3 --fabric 0.20.0   # un seul serveur
# ... peupler fabricmods/ + files/ (voir §4), éditer servermeta.json ...
npm run faststart -- g distro            # (re)génère root/distribution.json

npm run start rebuild avant d'exécuter ; faststart réutilise dist/ (plus rapide). Ne jamais utiliser --installLocal ici (pas de Helios local).

4. Où sont mods / files, tri, choix d'implémentation

  • Source mods : ~/.local/share/PrismLauncher/instances/26.3/minecraft/mods/*.jar (copie physique par cp, pas de symlink).
  • fabricmods/required/ (31) : tous les mods sauf 15 client-only purs (même logique que server/) : sodium, iris, continuity, dynamic-fps, xaerominimap, xaeroworldmap, skinlayers3d, waveycapes, capes, chat_heads, morechathistory, fast-ip-ping, modmenu, appleskin, vanillarice.
  • Tri : Nebula trie les mods par nom de fichier (BaseModStructure.getSpecModel), donc « tri mods auto » = natif, rien à faire.
  • Choix resourcepack/shader : src/structure/spec_model/module/File.struct.ts (MiscFileStructure extends ModuleStructure, scan récursif, pas de namespaces required/optionalon/optionaloff) — contrairement à FabricModStructure (cf ToggleableModule.struct.ts). Les modules File sont donc toujours requis. Le choix user « optionnels ON » n'est pas exprimable en natif : les mettre en fabricmods/optionalon casserait le typage (Type.FabricMod, pas de artifact.path). → FallPack + Revelation sont en files/resourcepacks/ et files/shaderpacks/ (chemins relatifs préservés dans artifact.path, URLs sous .../files/...). Pour du vrai optionnel, il faudrait patcher Nebula (rendre MiscFileStructure toggleable) ou gérer ça côté launcher.

5. Servir via HTTP

Plus besoin d'hébergeur : tout est servi en raw git public (BASE_URL=https://git.kisakay.com/k/mc/raw/branch/main/atlas/root/). distribution.json : https://git.kisakay.com/k/mc/raw/branch/main/atlas/root/distribution.json (valide : parsé avec helios-core, 34 modules, vérifié le 18/10/2026).

  • Dev local : cd atlas/root && python3 -m http.server 8931 (+ .env → BASE_URL=http://localhost:8931/, régénérer, ne pas committer).

6. TODO restants

  • Discord Rich Presence : root/meta/distrometa.json → discord.clientId vide (+ smallImageText/Key vides) — mettre le vrai clientId ou supprimer l'objet.
  • RSS : root/meta/distrometa.json → rss vide — mettre l'URL du flux ou laisser vide.
  • Discord serveur : placeholder SurviePote / seal-circle dans servermeta.json — valider largeImageKey (asset du portail Discord).
  • Icône : SurviePote-26.3.png = copie de launcher/build/icon.png (143 K) ; le champ icon de servermeta.json garde le texte d'aide (URL invalide), Nebula utilise donc le PNG (voir Server.struct.ts : fallback fichier). Remplacer par une vraie icône si besoin.
  • BASE_URL finale : vérifier https://mcpv.ihorizon.org/ + déploiement du contenu de root/ à la racine web, puis tester le launcher en prod.
  • Client-only exclus (sodium, iris, xaero…) : si les clients doivent les recevoir via le launcher, les ajouter en fabricmods/optionalon/ (actuellement exclus, logique serveur).
  • Ne pas committer les binaires (root/servers/**, root/distribution.json à décider) — ajouter au .gitignore si besoin.