Retour aux projets

Minecraft Mod Dependencies

Terminé
2026

Description

Dans le cadre du développement d'un modpack pour Minecraft, je suis confronté à la gestion complexe des dépendances entre les mods. Il arrive notamment que des dépendances persistent après la suppression d'un mod, ou que des conflits surviennent entre différentes versions. Pour résoudre ces problèmes, j'ai créé un outil en Python capable d'identifier, d'analyser et de visualiser l'ensemble des relations de dépendance entre les mods utilisés.

L'outil propose plusieurs modes de visualisation : un graphe interactif généré avec PyVis Network pour explorer visuellement les connexions entre mods, une arborescence dans la console grâce à la bibliothèque Rich, et une interface web locale avec serveur HTTP intégré facilitant la recherche de dépendances par nom de mod. Un système de détection des dépendances orphelines permet d'identifier les mods qui ne sont plus nécessaires après une suppression.

Les données sont récupérées via l'API CurseForge et organisées dans des fichiers structurés par version de Minecraft et type de mod loader (Forge, Fabric, etc.). Un mécanisme de résolution slug/nom a été développé pour contourner les limitations de l'API, qui nécessite un slug là où les utilisateurs manipulent des noms de mods. La résolution s'appuie sur la version de Minecraft et le type de mod loader pour réduire les résultats et identifier le bon mod.

Le projet est actuellement fonctionnel et utilisé quotidiennement pour la maintenance du modpack. À terme, l'objectif est d'ajouter un support pour d'autres sources de mods (Modrinth) et d'enrichir l'interface web avec des recommandations de résolution de conflits.

Défis & Solutions

Défi

La principale difficulté à laquelle j’ai été confronté concerne l’API de CurseForge, qui ne permet pas d’obtenir les informations d’un mod à partir de son nom. Il faut en effet utiliser son “slug”, ce qui pose problème puisque celui-ci ne correspond pas toujours au nom du mod.

Solution trouvée

Pour contourner cette contrainte, j’ai développé un script supplémentaire destiné à retrouver le slug à partir du nom du mod, de la version de Minecraft et du type de mod loader utilisé. Grâce à ces paramètres, je peux réduire les résultats à une sélection restreinte de mods, affichée dans la console avec les informations essentielles. Il me suffit ensuite d’identifier le bon mod, de copier son slug et de récupérer ses dépendances.

Compétences acquises

  • Développement d'outils en Python (architecture modulaire)
  • Intégration d'API REST (CurseForge API)
  • Visualisation de données (graphes interactifs avec PyVis)
  • Interface utilisateur en console (bibliothèque Rich)
  • Développement d'interface web (serveur HTTP intégré)
  • Contournement de contraintes d'API (résolution slug/nom)
  • Travail en autonomie sur un outil utilitaire

Aperçu

Capture d'écran 1
Capture d'écran 2
Capture d'écran 2