Files
mc/atlas/SURVIEPOTE.md

116 lines
6.2 KiB
Markdown

# 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`
```properties
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
```bash
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.