Référence
Projet Gradle et paquet Native
Contrat public du plugin fr.nimbyrails.mod : kit, identité, manifeste, ressources, tâches et sorties.
Sélection du kit et du plugin
Cette page s’adresse aux projets Kotlin/Native de mods et d’outils en jeu. Pour une application Kotlin/JVM, suivez le guide de connexion. Le plugin fr.nimbyrails.mod est fourni par gradle-repository dans le kit ; settings.gradle.kts sélectionne la version gradlePluginVersion de sdk.json.
| Entrée | Contrat |
|---|---|
| nrfSdkDir | Propriété Gradle prioritaire, chemin du dossier extrait contenant sdk.json. Un chemin relatif est résolu depuis le projet. |
| NRF_KOTLIN_SDK | Variable d’environnement utilisée lorsque nrfSdkDir est absent. |
| sdk.json | Décrit le kit choisi. Le plugin contrôle les fichiers requis, le format, Kotlin, sa propre version, la plage SDK et les binaires de jeu déclarés. |
| fr.nimbyrails.mod | Applique la configuration Kotlin et fournit les dépendances de compilation. Le kit Windows crée la cible windows et les tâches windowsTest. |
Champs de mod.json
| Champ | Type et valeur acceptée | Signification |
|---|---|---|
| id | Chaîne : lettre minuscule initiale, puis minuscules, chiffres ou tirets ; 1 à 64 caractères. | Identité du projet pour le Hub. |
| name | Chaîne non vide après retrait des espaces de bord. | Nom lisible et titre de modInfo. |
| modId | Chaîne de 1 à 70 lettres, chiffres, tirets ou underscores. | Identité de dossier et préfixe du paquet. |
| module | Chaîne de 1 à 100 caractères ; lettre initiale, puis lettres, chiffres, tirets ou underscores. Sans extension. | Base du nom des fichiers du mod. |
| version | X.Y.Z, X.Y.Z-alpha.N ou X.Y.Z-beta.N ; nombres sans zéro initial, X/Y/Z de 0 à 9999, N de 1 à 999999999. | Version propre au mod ; alpha, beta ou stable déterminent aussi son canal. |
| language | "kotlin-native" | Langage attendu par ce plugin. |
| sdkMin · sdkMaxExclusive | Versions au même format, avec sdkMin strictement inférieur à sdkMaxExclusive. | Intervalle accepté : borne basse incluse, borne haute exclue. |
| gameSha256 | Liste non vide de chaînes hexadécimales SHA-256 à 64 caractères. | Chaque binaire de jeu déclaré doit être pris en charge par le kit. |
À numéros X.Y.Z égaux, alpha précède beta, puis la version stable ; les numéros de préversion sont comparés numériquement. Déclarez les compatibilités que vous avez vérifiées. Ces contrôles de construction ne remplacent pas un essai en partie.
createMod et l’identité générée
package nimby.mod
// createMod() assembles your signalMod or toolMod declaration.
// modInfo is supplied by the plugin from mod.json.Fournissez createMod() dans le package nimby.mod. Pour un signal, le résultat est un SignallingMod construit avec signalMod(modInfo) ; un outil utilise toolMod et son contrat dédié. Le plugin génère modInfo depuis id et name : gardez cette source d’identité unique.
La génération du catalogue évalue la déclaration hors jeu. createMod et ses initialisations doivent donc décrire le mod sans accéder à une partie ni imprimer de texte sur la sortie standard. Placez les interactions avec le jeu dans les callbacks prévus et les messages de diagnostic dans les fonctions de journalisation.
Fichiers inclus dans le paquet
| Source | Destination ou rôle |
|---|---|
| src/main/kotlin/ | Sources compilées ; elles ne sont pas copiées telles quelles dans la distribution. |
| src/test/kotlin/ | Tests exécutés par les tâches de test, sans inclusion dans le paquet. |
| assets/ | Contenu à la racine du paquet, sauf mod.txt et nrf-mod.ini qui sont générés. |
| imgs/ · config/ · docs/ | Dossiers facultatifs conservés sous le même nom. |
| README.md · LICENSE · LICENSE.txt | Fichiers facultatifs copiés à la racine. |
| licenses/ | Notices du mod dans licenses/mod ; celles du SDK sont ajoutées dans licenses/sdk. |
Sous Windows, le paquet contient les fichiers <module>.dll et <module>Kotlin.dll. Distribuez le dossier complet avec ses ressources et licences. Les composants SDK utilisés pour vérifier le paquet ne deviennent pas des fichiers à ajouter manuellement à votre mod.
Choisir la tâche Gradle
| Tâche | Résultat sous Windows |
|---|---|
| windowsTest | Exécute les tests Kotlin ; rapports dans build/gradle/reports/tests/. |
| generateModIdentity | Génère modInfo depuis mod.json ; appelée automatiquement lors des compilations nécessaires. |
| generateDebugGameManifest · generateReleaseGameManifest | Évalue la déclaration compilée et génère mod.txt et nrf-metadata.json pour la variante choisie. |
| generateModManifest | Génère nrf-mod.ini pour le paquet. |
| assembleDebugMod · assembleReleaseMod | Assemble dans build/gradle/mod/debug ou release. Cette étape seule n’exécute pas toute la recette. |
| verifyNativeMod | Assemble la variante Release et vérifie son cycle de vie sans jeu. |
| modArchive | Assemble Release, dépend des tests et de verifyNativeMod, puis produit le ZIP. |
| hubManifest | Construit le ZIP et génère les deux descripteurs avec taille et empreinte réelles. |
| packageMod | Point d’entrée de distribution : dépend de hubManifest. |
| build | Assemblages, vérifications, tests et distribution. |
| clean | Supprime les résultats du build dans build/gradle ; ne désinstalle pas le profil du jeu. |
.\gradlew.bat windowsTest assembleReleaseMod verifyNativeMod
.\gradlew.bat packageModLes tâches dépendantes peuvent être UP-TO-DATE si leurs entrées n’ont pas changé. Le ZIP se trouve dans build/gradle/distributions, porte le nom <modId>-<version>-windows-x64.zip et contient un dossier racine <modId>-<version>.
Descripteur local et URL de publication
hubManifest écrit project.json et project-windows-x64.json. Leur url désigne par défaut le nom local du ZIP. Leur taille et leur SHA-256 sont calculés à partir du fichier produit, pas saisis dans mod.json.
L’option Gradle releaseBaseUrl sert au flux de publication des dépôts officiels. Dans cette version du plugin, elle accepte uniquement https://github.com/NimbyRails-France/<id>/releases/download/v<version>, avec id et version de mod.json, et y ajoute le nom du ZIP. Elle prépare une URL ; elle ne publie rien. Pour un autre hébergement, conservez le descripteur local et utilisez le processus de distribution de votre projet.