Gradle, traductions et exemples
Compiler contre ElytraF5
La version actuelle configure une publication Maven locale. Dans le projet ElytraF5, exécutez publishToMavenLocal. Dans le projet de votre mod, utilisez le dépôt local et le coordinateur du projet :
repositories {
mavenLocal()
}
dependencies {
modCompileOnly("net.turtle:elytraF5:1.0")
}Déclarez aussi ElytraF5 dans fabric.mod.json. Utilisez suggests si votre mod fonctionne sans cette intégration et désactivez/évitez alors le chargement de ses classes quand ElytraF5 est absent. Utilisez depends si l’intégration est obligatoire.
"suggests": {
"ef5am": "*"
}Les coordonnées suivent maven_group, archives_base_name et mod_version de ce dépôt ; adaptez-les si ces propriétés changent. L’API est cliente, ne mettez pas la dépendance dans du code serveur.
Valeur sauvegardée dans une configuration
Voici le modèle : initialisez la valeur depuis votre configuration, retournez-la dans le getter, et mettez à jour puis sauvegardez la configuration dans le callback.
BooleanSettingOption(
id = "particles",
title = Component.translatable("examplemod.settings.particles"),
description = Component.translatable("examplemod.settings.particles.hint"),
currentValue = { ExampleConfig.particles },
onChanged = { enabled ->
ExampleConfig.particles = enabled
ExampleConfig.save()
}
)Choix à plusieurs valeurs
val modes = listOf(
SettingsChoice("quiet", Component.translatable("examplemod.mode.quiet")),
SettingsChoice("normal", Component.translatable("examplemod.mode.normal")),
SettingsChoice("loud", Component.translatable("examplemod.mode.loud"))
)
ChoiceSettingOption(
id = "sound_mode",
title = Component.translatable("examplemod.settings.sound_mode"),
description = Component.translatable("examplemod.settings.sound_mode.hint"),
choices = modes,
currentChoice = { ExampleConfig.soundMode },
onChanged = { id ->
ExampleConfig.soundMode = id
ExampleConfig.save()
}
)Action qui ouvre un écran
ActionSettingOption(
id = "advanced",
title = Component.translatable("examplemod.settings.advanced"),
description = Component.translatable("examplemod.settings.advanced.hint"),
buttonTitle = Component.translatable("examplemod.settings.open"),
action = { parent ->
Minecraft.getInstance().gui.setScreen(ExampleSettingsScreen(parent))
}
)Dans l’écran enfant, revenez au parent reçu via onClose(). Cela permet de revenir aux réglages ElytraF5 sans perdre le contexte.
Traductions
Déclarez les clés dans les ressources de votre propre mod, par exemple :
assets/examplemod/lang/fr_fr.json
{
"examplemod.settings.visuals": "Visuels",
"examplemod.settings.enabled": "Activer les effets",
"examplemod.settings.enabled.tooltip": "Active les effets visuels du mod."
}Ajoutez aussi en_us.json et toute langue prise en charge. Le texte de catégorie, titres, descriptions et titres de choix sont tous des Component et peuvent utiliser des clés traduisibles.
Diagnostic rapide
| Symptôme | À vérifier |
|---|---|
| Catégorie absente | Enregistrement depuis l’entrypoint client ; ElytraF5 présent ; aucune exception au démarrage. |
| Erreur d’identifiant dupliqué | Chaque catégorie a un namespace propre et chaque option est unique dans sa catégorie. |
| Le choix initial plante la validation | currentChoice() retourne l’identifiant exact d’un choix et ne dépend pas d’un état non initialisé. |
| Icône noire/rose ou absente | Texture PNG 16 × 16, située sous assets/<namespace>/textures/gui/..., avec l’Identifier correspondant. |
| Écran enfant ne revient pas aux réglages | Conservez le Screen parent fourni et restaurez-le lors de la fermeture. |