Files
mc/sync-mods.sh
T
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

69 lines
3.8 KiB
Bash
Executable File

# SurviePote — resynchronise les mods binaires (non versionnés, voir .gitignore)
# depuis Prism + Modrinth, vers server/mods/ et atlas/.../fabricmods/required/.
# Usage : ./sync-mods.sh (dans nix-shell de préférence)
set -e
cd "$(dirname "$0")"
PRISM_MODS="$HOME/.local/share/PrismLauncher/instances/26.3/minecraft/mods"
SRV_MODS="server/mods"
ATLAS_MODS="atlas/root/servers/SurviePote-26.3/fabricmods/required"
# Mods à exclure du SERVEUR (client-only vérifiés + mods cassés, voir server/mods/SOURCE.md)
SERVER_EXCLUDE=(
sodium-fabric iris-fabric continuity- dynamic-fps- fast-ip-ping modmenu- morechathistory-
capes- chat_heads- skinlayers3d waveycapes xaerominimap xaeroworldmap
appleskin- vanillarice- ImmersiveOres-26.3 simplebackpacks-
)
# Mods à exclure de l'ATLAS (= clients) : client-only purs + mods cassés
# (simplebackpacks, ImmersiveOres — voir quarantine/README.md).
# spatial-gui : retiré du pack le 20/10/2026 (GUI 3D disgracieuse) — voir server/mods/SOURCE.md.
ATLAS_EXCLUDE=(
sodium-fabric iris-fabric continuity- dynamic-fps- fast-ip-ping modmenu- morechathistory-
capes- chat_heads- skinlayers3d waveycapes xaerominimap xaeroworldmap
appleskin- vanillarice- simplebackpacks- ImmersiveOres-26.3 spatial-gui-
)
excluded() { local f="$1"; shift; for p in "$@"; do [[ "$f" == "$p"* ]] && return 0; done; return 1; }
mkdir -p "$SRV_MODS" "$ATLAS_MODS" server/mods-client-only quarantine
echo "== server/mods (depuis Prism) =="
for jar in "$PRISM_MODS"/*.jar; do
f="$(basename "$jar")"
if excluded "$f" "${SERVER_EXCLUDE[@]}"; then echo " skip $f"; else cp -u "$jar" "$SRV_MODS/"; echo " cp $f"; fi
done
echo "== terrablender (Modrinth, absent de Prism, requis par BOP) =="
TB="TerraBlender-fabric-26.3-26.3.0.0.9.jar"
TB_URL="https://cdn.modrinth.com/data/kkmrDlKT/versions/xirJYe1V/$TB"
[ -f "$SRV_MODS/$TB" ] || curl -sL -o "$SRV_MODS/$TB" "$TB_URL"
file "$SRV_MODS/$TB" | grep -q "Java archive" || { echo "ERREUR: $TB invalide"; exit 1; }
echo "== atlas required (depuis Prism + terrablender) =="
for jar in "$PRISM_MODS"/*.jar "$SRV_MODS/$TB"; do
f="$(basename "$jar")"
if excluded "$f" "${ATLAS_EXCLUDE[@]}"; then echo " skip $f"; else cp -u "$jar" "$ATLAS_MODS/"; echo " cp $f"; fi
done
# Nettoyage : simplebackpacks et ImmersiveOres ne doivent être ni serveur ni atlas
rm -f "$SRV_MODS"/simplebackpacks-*.jar "$ATLAS_MODS"/simplebackpacks-*.jar
rm -f "$SRV_MODS"/ImmersiveOres-*.jar "$ATLAS_MODS"/ImmersiveOres-*.jar server/mods-client-only/ImmersiveOres-*.jar
# spatial-gui : retiré du pack le 20/10/2026 (client-only, jamais sur le serveur).
rm -f "$SRV_MODS"/spatial-gui-*.jar "$ATLAS_MODS"/spatial-gui-*.jar
[ -f quarantine/simplebackpacks-fabric-26.3-5.2.1.jar ] || echo "NOTE: simplebackpacks en quarantaine (voir quarantine/README.md)"
echo "== resourcepack/shader (Prism -> atlas files/) =="
cp -u "$HOME/.local/share/PrismLauncher/instances/26.3/minecraft/resourcepacks/FallPack_26.3_v3.1.zip" "atlas/root/servers/SurviePote-26.3/files/resourcepacks/" 2>/dev/null || true
cp -u "$HOME/.local/share/PrismLauncher/instances/26.3/minecraft/shaderpacks/Revelation-dev.zip" "atlas/root/servers/SurviePote-26.3/files/shaderpacks/" 2>/dev/null || true
echo "== mod maison nosingleplayer (build si besoin) =="
if [ ! -f mods/nosingleplayer/build/libs/nosingleplayer-1.1.4.jar ]; then
(cd mods/nosingleplayer && ./gradlew build 2>&1 | tail -n 2) || echo "BUILD nosingleplayer échoué (réseau/gradle requis)"
fi
cp -u mods/nosingleplayer/build/libs/nosingleplayer-1.1.4.jar "$ATLAS_MODS/" 2>/dev/null || true
rm -f "$ATLAS_MODS"/nosingleplayer-1.1.2.jar "$ATLAS_MODS"/nosingleplayer-1.1.1.jar "$ATLAS_MODS"/nosingleplayer-1.1.0.jar "$ATLAS_MODS"/nosingleplayer-1.0.0.jar
# Note : environment=client (menu titre), inutile côté serveur.
echo "== regen distribution.json =="
(cd atlas && npm run faststart -- generate distro) 2>&1 | tail -n 2
echo OK.