Les pull requests, signalements de bugs et toutes autres formes de contribution sont les bienvenues et encouragées !
Ce guide a pour but de donner des normes pour ce projet afin de rendre le code plus lisible, maintenable et simple à faire évoluer.
Ce projet est une librairie graphique pour Minecraft (Forge/Fabric). Il est donc essentiel que le code soit propre, documenté et respecte des conventions strictes pour garantir la compatibilité avec les futurs mods.
Merci de lire notre Code de conduite avant toute contribution.
Soyons respectueux et constructifs dans nos échanges.
Avant de contribuer, assurez-vous d'avoir :
- Minecraft Fabric version correspondante installée.
- Java 21 ou plus récent.
- Gradle correctement configuré (
gradlew builddoit fonctionner). - Vérifié que le projet compile et s’exécute avant vos modifications.
Pour tester vos changements :
- Placez la librairie compilée dans un dossier
mods/d’une instance Minecraft dédiée au test. - Vérifiez que vos ajouts n’introduisent pas de crashs ni de régressions visuelles (ex. pas de HUD cassé ni de shader qui clignote).
Avant d’ouvrir une issue :
- Cherchez un doublon. Si un problème existe déjà, utilisez un 👍 ou ajoutez des informations utiles.
- Assurez-vous d’avoir testé sur la dernière version du mod.
- Remplissez le template d’issue complet.
Un bon rapport de bug contient :
- Version exacte de Minecraft et de Forge/Fabric.
- Capture d’écran ou vidéo si le bug est graphique (ex. shader qui rend mal le flou).
- Log complet si un crash survient.
- Étapes pour reproduire le bug.
Exemple :
Version: Minecraft 1.20.1 - Forge 47.2.0
Bug: Le HUD transparent disparaît après un redimensionnement d’écran.
Étapes :
Ouvrir un menu utilisant la librairie.
Redimensionner la fenêtre Minecraft.
Le HUD devient invisible jusqu'à relog.
Log: https://pastebin.com/xxxx
- Forkez le projet et clonez votre fork.
- Ne travaillez jamais sur la branche
main! Créez une branche spécifique :
git checkout -b feat/add-rounded-button- Nommez vos branches clairement :
feat/add-[nom],fix/fix-[nom],docs/update-readme.
Plus d'information ici -> Comment nommer ses branches et ses commits ?
✅ À faire :
- Une PR = un changement unique (ex. ajout d’un shader OU correction d’un widget, pas les deux).
- Testez toujours vos changements en jeu avant de soumettre.
- Ajoutez des commentaires Javadoc sur toutes nouvelles méthodes publiques.
- Respectez les conventions du style de code (voir plus bas).
❌ À ne pas faire :
- Ne reformatez pas tout un fichier pour corriger une ligne.
- Ne modifiez pas des parties sans rapport avec votre PR.
- N’envoyez pas de PR partiellement terminée.
-
✅ Ajout d’un nouveau composant graphique :
"Ajoute un bouton arrondi avec animation de survol"
→ Fichier modifié :RoundedButtonWidget.java. -
✅ Correction d’un shader :
"Corrige l’artefact visuel du flou sur les HUD transparents"
→ Fichiers modifiés :blur.frag,BlurProgram.java. -
✅ Amélioration de performance :
"Optimise le rendu des bordures 1px des fenêtres".
Suivez ce guide et utilisez ce format :
[TAG] Sujet du commit (max 50 caractères)
Description complète (wrap à 72 caractères). Expliquez ce qui a été
modifié et pourquoi. Ajoutez des références aux issues si possible.
Résout: #123
Voir aussi: #456
Exemples :
[FEAT] Ajoute un widget de slider arrondi
Ce widget permet aux développeurs de mods de créer des sliders avec des
bords arrondis et des animations fluides. Testé sur Forge 1.20.1.
Résout: #34
[BUG] Corrige le clignotement du shader de flou
Le shader BLUR causait un clignotement lors des changements rapides de
résolution. La mise à jour synchronise correctement le RenderTarget.
- Examinez le code, pas l’auteur.
- Donnez des critiques constructives, proposez des alternatives si besoin.
- Avant d’approuver, assurez-vous que :
- Le code compile sans erreur (
gradlew build). - Les nouveaux ajouts fonctionnent en jeu.
- Le code compile sans erreur (
Respectez les conventions officielles Java (Oracle Code Conventions).
| Élément | Règle | Exemple |
|---|---|---|
| Packages | minuscules, pas d’underscore | com.mylib.render.blur |
| Classes | PascalCase |
BlurProgram, RoundedButtonWidget |
| Méthodes | camelCase, commence par un verbe |
renderBlur(), initShader() |
| Variables | camelCase, noms explicites |
int widgetWidth, ShaderInstance blurShader |
| Constantes | UPPER_SNAKE_CASE |
static final int MAX_RADIUS = 10; |
- Testez sur différentes résolutions et interfaces Minecraft (GUI scale 2, 3…).
- Vérifiez la compatibilité avec d’autres mods graphiques (Optifine, Iris, etc.) si possible.
- Ajoutez des logs clairs uniquement en mode debug.
Toutes les contributions sont sous licence GPL-3.0, comme le reste du projet.