ElytraF5 & more · Guide développeur
Intégration pratique

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 absenteEnregistrement 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 validationcurrentChoice() retourne l’identifiant exact d’un choix et ne dépend pas d’un état non initialisé.
Icône noire/rose ou absenteTexture PNG 16 × 16, située sous assets/<namespace>/textures/gui/..., avec l’Identifier correspondant.
Écran enfant ne revient pas aux réglagesConservez le Screen parent fourni et restaurez-le lors de la fermeture.