Files
mc/server
Anaïs Saraiva 2bb5b30857 nosingleplayer 1.2.0 : textures créées par MC (fix menu noir Windows/NVIDIA)
Le menu titre rendait entièrement noir sur les PC Windows + NVIDIA
(2 postes) : le mod créait sa texture (DynamicTexture) et son sampler
pendant l'extraction du rendu, et blittait une texture hors atlas.

Correctifs :
- la texture est désormais enregistrée via le mécanisme officiel de MC
  (ReloadableTexture + TextureContents) : c'est MC qui crée la texture
  GPU ET le sampler, comme pour ses propres textures. Plus de sampler
  custom, plus d'upload manuel ;
- la création de la texture GPU est déplacée dans TitleScreen.init, donc
  HORS de l'enregistrement des commandes de la frame (le créer pendant
  l'extraction invalide le frame entier sur les backends à command
  encoder => écran noir) ;
- fond réduit de 3840x2400 à 1920x1200 (36 Mo -> 9 Mo de VRAM) ;
- suppression des 6 panorama_*.png embarqués : MC 26.3 n'expose pas les
  ressources des mods au ResourceManager, ils n'ont jamais été rendus
  (vérifié : le panorama vanilla'affiche le stock Mojang) ;
- jar réduit de 3,6 Mo à 871 Ko.

Vérifié par capture d'écran en jeu : menu OK en OpenGL (Mesa/AMD) et en
Vulkan (lavapipe).

atlas : distribution.json regénérée (nosingleplayer 1.2.0, MD5/URL à
jour) ; retrait de spatial-gui du pack (fait par le repo, documenté dans
server/mods/SOURCE.md).
2026-10-20 00:02:04 +02:00
..

SurviePote — Serveur (plug-and-play)

Serveur Minecraft 26.3 + Fabric Loader 0.20.0, pré-configuré en « défauts survie ».

Prérequis

  • Java 21+ (java -version)
  • Port 25565/TCP ouvert/redirigé vers la machine du serveur
  • Adresse publique : mcpv.ihorizon.org

Premier lancement

cd server
echo "eula=true" > eula.txt   # déjà présent (eula=false) : à passer à true
./start.sh                    # installe le runtime automatiquement si absent, puis démarre

(Sous Windows : start.bat, même comportement.)

Le runtime Fabric (jars vanilla/Fabric, libraries/, versions/, .fabric/) n'est pas versionné (voir .gitignore) : il est (re)généré par setup.sh, appelé automatiquement par start.sh s'il manque, ou manuellement :

cd server
nix-shell .. --run 'bash server/setup.sh'   # ou : ./setup.sh (avec Java dans le PATH)

Au premier démarrage, le serveur génère world/, config/, logs/, etc. Pour régénérer le monde (ex. changer de level-type), stoppe le serveur et supprime world/.

Contenu

Fichier Rôle
setup.sh / setup.bat Installe/repare le runtime Fabric (télécharge vanilla + lanceur Fabric)
fabric-server-launch.jar Lanceur Fabric (généré par fabric-installer 1.1.2 — non versionné)
server.jar Serveur Minecraft 26.3 vanilla (téléchargé par l'installeur — non versionné)
fabric-installer.jar Installeur (pour réinstaller/réparer — non versionné)
mods/ 46 mods serveur (copie physique) — voir mods/SOURCE.md
config/ Configs générées au premier lancement (non versionnées)
server.properties Config plug-and-play (survie, normal, 20 joueurs)
eula.txt Passer à eula=true avant de lancer
start.sh / start.bat Scripts de lancement (4 Go RAM, nogui)
ecosystem.config.cjs Config PM2 (démarre le serveur dans le nix-shell, Java 25)

Mods

  • Inclus (46) : gameplay/contenu (Better Combat, BOP, BCLib/Better End, Waystones, Backpacks, Drawers, VeinMiner, Tree Harvester, Jade, JEI, etc.). Détail dans mods/SOURCE.md.
  • Exclus (15, client-only) : sodium, iris, continuity, dynamic-fps, xaerominimap, xaeroworldmap, skinlayers3d, waveycapes, capes, chat_heads, morechathistory, fast-ip-ping, modmenu, appleskin, vanillarice. À garder côté client uniquement.
  • Resourcepacks/shaders : jamais côté serveur.

Config / monde

  • config/ : généré au premier lancement ; dépose ici les customs précis quand ils seront définis.
  • world/ : généré au premier lancement (level-name=world, graine aléatoire, pas de level-seed fixe).
  • level-type=minecraft:normal par défaut ; alternative commentée dans server.properties pour Biomes O' Plenty.

Réseau

  • server-port=25565, online-mode=true, white-list=false.
  • server-ip=10.7.0.2 : le serveur n'écoute que sur l'interface portant cette IP (VPN). Laisser vide = écouter sur toutes les interfaces (0.0.0.0).
  • Ouvre le port 25565/TCP (box/pare-feu) et pointe mcpv.ihorizon.org vers l'IP publique.

PM2 (daemon)

ecosystem.config.cjs lance le serveur dans le nix-shell du repo (shell.nix → jdk25), sans dépendre du Java du système. Les chemins sont résolus depuis le fichier (__dirname) : server/ et la racine du repo.

cd /srv/mc/server
pm2 start ecosystem.config.cjs
pm2 logs surviepote-mc
pm2 restart surviepote-mc
pm2 stop surviepote-mc

pm2 save                      # mémorise la liste des process
sudo pm2 startup systemd -u anais --hp /home/anais   # relance au boot

Équivalent manuel de la commande lancée par PM2 :

cd /srv/mc/server
nix-shell /srv/mc --run "bash /srv/mc/server/start.sh"

PM2 ne relaie pas la console interactive : utilise pm2 logs pour la sortie et pm2 sendSignal/pm2 stop (SIGINT → sauvegarde propre via le shutdown hook Java).