5.9 KiB
5.9 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_URLdoit finir par/: c'est le préfixe des URLs dansdistribution.json. En dev, passer àhttp://localhost:8080/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_FOLDERvide = 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 parcp, pas de symlink). fabricmods/required/(31) : tous les mods sauf 15 client-only purs (même logique queserver/) : 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 namespacesrequired/optionalon/optionaloff) — contrairement àFabricModStructure(cfToggleableModule.struct.ts). Les modulesFilesont donc toujours requis. Le choix user « optionnels ON » n'est pas exprimable en natif : les mettre enfabricmods/optionaloncasserait le typage (Type.FabricMod, pas deartifact.path). → FallPack + Revelation sont enfiles/resourcepacks/etfiles/shaderpacks/(chemins relatifs préservés dansartifact.path, URLs sous.../files/...). Pour du vrai optionnel, il faudrait patcher Nebula (rendreMiscFileStructuretoggleable) ou gérer ça côté launcher.
5. Servir via HTTP
Le web root = atlas/root/ (les URLs sont relatives à BASE_URL).
- Dev :
cd atlas/root && python3 -m http.server 8080(+.env→BASE_URL=http://localhost:8080/, régénérer). - Prod (TNDev) : servir
atlas/root/depuis la racinehttps://mcpv.ihorizon.org/(nginxrootou copie du contenu), de sorte quehttps://mcpv.ihorizon.org/distribution.jsonréponde.
6. TODO restants
- Discord Rich Presence :
root/meta/distrometa.json→discord.clientIdvide (+smallImageText/Keyvides) — mettre le vrai clientId ou supprimer l'objet. - RSS :
root/meta/distrometa.json→rssvide — mettre l'URL du flux ou laisser vide. - Discord serveur : placeholder
SurviePote / seal-circledansservermeta.json— validerlargeImageKey(asset du portail Discord). - Icône :
SurviePote-26.3.png= copie delauncher/build/icon.png(143 K) ; le champicondeservermeta.jsongarde le texte d'aide (URL invalide), Nebula utilise donc le PNG (voirServer.struct.ts: fallback fichier). Remplacer par une vraie icône si besoin. BASE_URLfinale : vérifierhttps://mcpv.ihorizon.org/+ déploiement du contenu deroot/à 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.gitignoresi besoin.