Créer un mod
Générer le paquet depuis Kotlin
Transformer un projet Kotlin en paquet contenant son identité, ses modèles et toutes ses images.
Ce que vous écrivez, ce qui est généré
Prérequis : un projet configuré et au moins un signalModel à assembler, ou un toolMod avec service ou fenêtre. Le plugin appelle createMod pour lire vos déclarations et générer le catalogue. Il ne lance pas le jeu et n’appelle ni rules, ni les services, ni onTick. Gardez createMod et les initialiseurs sans accès au jeu ni écriture de fichiers.
| Source | Rôle et destination |
|---|---|
| mod.json | Identifiant, nom, version, module et compatibilité. Le Hub le lit avant compilation. Le plugin génère nimby.mod.modInfo : utilisez cette identité dans signalMod(modInfo) ou toolMod(modInfo). |
| metadata(author, description, name) | Auteur, description et nom affiché optionnel. name et description acceptent tr ; sans name, le nom provient de modInfo. La version complète, suffixe alpha compris, vient de mod.json. |
| construction(states, name, kind, catalogueName) | Catalogue de textures et entrée du menu de construction. Une déclaration par modèle de signal. |
| assets/ · imgs/ · config/ | Fichiers copiés dans le paquet. assets/closed.svg se déclare closed.svg ; imgs/signals/closed.svg conserve ce chemin. |
| mod.txt · nrf-metadata.json · nrf-mod.ini · project.json | Catalogue du jeu, traductions des métadonnées, manifeste du chargeur et manifeste du Hub. Fichiers générés : ne les éditez pas, la compilation suivante les remplacera. |
import nimby.*
import nimby.mod.modInfo
fun createMod() = signalMod(modInfo) {
metadata(author = "Votre nom", description = "Mes signaux personnalisés.")
signal(firstSignal)
}Paramètres du catalogue
construction(
states = listOf("closed.svg", "open.svg"),
name = "Mon signal",
kind = "path"
)| Paramètre | Utilisation précise |
|---|---|
| states: List<String> | De 1 à 256 images dans leur ordre définitif. Le SDK ne devine pas les chemins retournés par images ou appearance. Déclarez aussi les deux images de chaque clignotement. |
| name: String | Nom dans le menu de construction. Par défaut, le titre du modèle. Accepte un texte ou tr : la génération résout l’anglais puis la langue de repli du JSON. |
| kind: String = "path" | Type natif du signal, écrit dans SignalTemplate. path est utilisé pour nos signaux. Ce champ ne décide ni indication ni vitesse ; un autre type exige de vérifier sa prise en charge dans le jeu. |
| catalogueName: String = name | Nom du jeu de textures dans les choix natifs du jeu ; peut différer du nom du signal constructible. |
| size: Int = 0 · left: Boolean = false | Valeurs initiales proposées à la construction : taille de 0 à 4 et côté gauche si left=true. Pour un modèle de taille 4 à gauche, déclarez ces deux valeurs explicitement. Ce sont des valeurs de catalogue, pas une modification des signaux déjà posés. |
| nameKey / catalogueNameKey: String? | Clés du système de localisation du jeu pour un catalogue existant. Avec tr(...) dans name ou catalogueName, laissez la clé correspondante à null : les deux mécanismes ne se combinent pas pour le même nom. |
Conservez textureSet et l’ordre des states d’un catalogue publié, y compris les anciennes images encore référencées par une sauvegarde. Un changement de fichier à un indice existant change l’apparence correspondante ; réordonner les indices peut attribuer la mauvaise image aux signaux déjà posés.
Compiler et vérifier le résultat
.\gradlew.bat generateDebugGameManifest
.\gradlew.bat windowsTest packageModLe fichier généré se trouve dans build/gradle/generated/game/debug/mod.txt ou release/mod.txt. Le paquet assemblé contient son mod.txt à la racine. Les tests natifs reçoivent aussi le catalogue généré. Un fichier manquant, un chemin hors du paquet, une ressource ambiguë, un catalogue dupliqué ou un ancien assets/mod.txt bloque la compilation.
Avant activation, ouvrez le paquet et contrôlez les chemins d’images, le nom du mod, les modèles et leurs valeurs initiales de côté et de taille. Testez chaque indication, y compris les replis et les deux phases d’un clignotement. Les fichiers générés se reconstruisent depuis Kotlin ; ne les corrigez pas manuellement.