Cobblemon est le mod Minecraft qui intègre les Pokémon dans le jeu de manière native, en s'appuyant sur le système de ressources et de datapacks de Minecraft pour offrir une personnalisation maximale. L'un des atouts majeurs de cette approche est la possibilité de modifier entièrement la logique de spawn des Pokémon sans toucher au code source du mod. Grâce à un datapack bien structuré, un administrateur de serveur ou un créateur de modpack peut contrôler précisément quels Pokémon apparaissent, dans quels biomes, à quelles conditions et avec quelle fréquence.
Ce guide technique s'adresse aux administrateurs de serveurs Cobblemon et aux créateurs de modpacks souhaitant maîtriser le système de spawn personnalisé du mod. Nous allons voir ensemble comment structurer un datapack, comprendre le format JSON des fichiers de spawn, et déployer le tout sur un serveur en production.
Pourquoi personnaliser les spawns avec un datapack ?
Par défaut, Cobblemon génère ses propres fichiers de spawn pour toutes les générations de Pokémon (Gen 1 à Gen 9). Ces fichiers définissent les conditions dans lesquelles chaque espèce peut apparaître dans le monde. Cependant, plusieurs situations justifient la création d'un datapack de spawn personnalisé :
- Rééquilibrer la rareté : un Pokémon peut être trop commun ou trop rare dans votre configuration de biomes.
- Ajouter des spawns thématiques : faire apparaître des Pokémon aquatiques uniquement dans des biomes océaniques spécifiques de votre modpack.
- Créer des zones exclusives : réserver certains Pokémon à des dimensions ou structures particulières.
- Supprimer des spawns indésirables : désactiver l'apparition de certaines espèces pour des raisons d'équilibrage.
- Synchroniser avec des mods tiers : intégrer des biomes ajoutés par des mods comme Terralith ou BYG dans la logique de spawn.
Les datapacks Cobblemon sont entièrement compatibles avec le rechargement à chaud via la commande /reload, ce qui facilite le débogage et les ajustements en direct.
Structure d'un datapack Cobblemon
Un datapack Minecraft standard suit une hiérarchie de dossiers précise. Pour Cobblemon, les fichiers de spawn se placent dans un sous-dossier spécifique. Voici la structure minimale à respecter :
mon-datapack/
├── pack.mcmeta
└── data/
└── cobblemon/
└── spawn_pool_world/
├── bulbasaur.json
├── pikachu.json
└── ...
Le fichier pack.mcmeta doit contenir au minimum :
{
"pack": {
"pack_format": 15,
"description": "Spawns personnalisés Cobblemon"
}
}
Adaptez la valeur pack_format à la version de Minecraft que vous utilisez (15 pour 1.20.x, 18 pour 1.21.x). Le dossier spawn_pool_world est le répertoire que Cobblemon surveille pour charger les règles de spawn dans le monde principal. Il existe également spawn_pool_nether et spawn_pool_end pour les dimensions correspondantes.
Anatomie d'un fichier JSON de spawn
Chaque fichier JSON de spawn peut contenir plusieurs entrées pour un même Pokémon ou pour plusieurs espèces. Voici un exemple commenté pour Pikachu :
{
"enabled": true,
"neededInstalledMods": [],
"neededUninstalledMods": [],
"spawns": [
{
"id": "cobblemon:pikachu_forest",
"pokemon": "pikachu",
"type": "land",
"context": "grounded",
"bucket": "uncommon",
"level": "10-25",
"weight": 8.0,
"condition": {
"biomes": [
"#minecraft:is_forest"
],
"timeRange": "any",
"isRaining": false,
"minY": 60,
"maxY": 120
},
"anticondition": {
"structures": ["#minecraft:villages"]
}
}
]
}
Les champs essentiels
- id : identifiant unique de la règle, au format
namespace:nom_descriptif. Il doit être unique dans tout le datapack. - pokemon : nom interne du Pokémon en minuscules, tel qu'il apparaît dans Cobblemon (ex:
bulbasaur,garchomp,iron_bundle). - type : le mode de déplacement du spawn. Valeurs possibles :
land,water,water_surface,underwater,air,lava. - context : contexte supplémentaire. Pour
land, utilisezgrounded. Pour les Pokémon volants, utilisezflying. - bucket : catégorie de rareté. Les valeurs reconnues sont
common,uncommon,rareetultra_rare. - level : plage de niveaux du Pokémon spawné, au format
"min-max". - weight : poids relatif dans le bucket. Plus cette valeur est élevée par rapport aux autres entrées du même bucket, plus le Pokémon est fréquent.
Le bloc condition
Le champ condition est le coeur de la personnalisation. Il accepte de nombreux paramètres :
- biomes : liste de biomes ou de tags de biomes. Les tags commencent par
#(ex:#minecraft:is_ocean,#forge:is_hot, ou des tags de mods comme#terralith:tropical_island). - structures : liste de structures dans lesquelles le spawn est autorisé (ex:
minecraft:stronghold). - timeRange : plage horaire. Valeurs :
any,day,night,dawn,dusk. - minY / maxY : altitude minimale et maximale du spawn.
- minLight / maxLight : niveau de lumière minimal et maximal (0-15).
- isRaining : booléen, true pour restreindre le spawn à la pluie.
- isThundering : booléen, pour les orages uniquement.
- moonPhase : phase de lune (0 = pleine lune, entier 0-7).
- nearbyBlocks : liste de blocs devant être présents à proximité du point de spawn.
Le bloc anticondition
Le champ anticondition fonctionne comme condition mais en négatif : si l'une des conditions de l'anticondition est remplie, le spawn est bloqué. Cela permet par exemple d'empêcher un Pokémon de spawner à l'intérieur d'une structure tout en le laissant spawner dans le biome qui accueille cette structure.
Cas pratiques de personnalisation
Cas 1 : Pokémon exclusif à un biome de mod
Si vous utilisez Terralith, vous pouvez faire apparaître Sneasel uniquement dans le biome terralith:snowy_badlands :
{
"spawns": [
{
"id": "monpack:sneasel_snowy_badlands",
"pokemon": "sneasel",
"type": "land",
"context": "grounded",
"bucket": "rare",
"level": "25-40",
"weight": 5.0,
"condition": {
"biomes": ["terralith:snowy_badlands"]
}
}
]
}
Cas 2 : Spawn nocturne conditionnel
Pour faire apparaître Haunter uniquement la nuit, dans des caves ou zones sombres :
{
"spawns": [
{
"id": "monpack:haunter_cave_night",
"pokemon": "haunter",
"type": "land",
"context": "grounded",
"bucket": "rare",
"level": "20-35",
"weight": 4.0,
"condition": {
"timeRange": "night",
"maxY": 50,
"maxLight": 3
}
}
]
}
Cas 3 : Désactiver un spawn existant
Pour désactiver un spawn natif de Cobblemon, créez un fichier JSON avec "enabled": false et le même identifiant que la règle originale. Cobblemon fusionne les datapacks et les datapacks utilisateur ont la priorité sur les données intégrées :
{
"enabled": false,
"spawns": [
{
"id": "cobblemon:magikarp_river"
}
]
}
Attention : vous devez connaître l'identifiant exact de la règle originale. Ceux-ci sont consultables dans le code source du mod sur le dépôt officiel GitLab de Cobblemon, ou en extrayant le JAR du mod.
Spawns de formes et variantes
Cobblemon supporte les formes Pokémon directement dans les fichiers de spawn. Pour cibler une forme spécifique, ajoutez la forme après le nom du Pokémon :
"pokemon": "rattata form=alolan"
Vous pouvez également ajouter des aspects visuels ou des modificateurs :
"pokemon": "pikachu aspects=[original_cap]"
Les propriétés acceptées dans le champ pokemon suivent la syntaxe des commandes Cobblemon et permettent de préciser genre, niveau, capacités spéciales, ou tout autre attribut reconnu par le mod.
Déploiement sur un serveur
Une fois votre datapack créé et testé en local, le déploiement sur un serveur Cobblemon suit une procédure simple :
- Compresser en ZIP : votre dossier
mon-datapack/doit être compressé enmon-datapack.zip. La racine de l'archive doit contenir directementpack.mcmetaet le dossierdata/. - Placer dans le bon dossier : sur un serveur Minecraft, les datapacks se placent dans
world/datapacks/(ouworld_nether/datapacks/pour le Nether). - Activer le datapack : au premier lancement ou après un
/reload, exécutez/datapack enable "file/mon-datapack.zip"si le datapack n'est pas activé automatiquement. - Recharger les spawns : lancez
/reloadpour que Cobblemon recharge tous les fichiers de spawn. Aucun redémarrage du serveur n'est nécessaire.
Sur des panels comme PteroPilot ou Pterodactyl, vous pouvez uploader le ZIP directement via le gestionnaire de fichiers web ou via SFTP dans le dossier world/datapacks/.
Vérifier le chargement du datapack
Pour confirmer que votre datapack est bien chargé et actif :
- Commande
/datapack list: liste tous les datapacks actifs. Le vôtre doit y apparaître avec son nom. - Logs du serveur : au démarrage ou lors d'un
/reload, Cobblemon affiche des messages indiquant le nombre de règles de spawn chargées. - Commande Cobblemon
/cobblemon spawnpool(si disponible) : permet d'inspecter le pool de spawn actuel à votre position.
Bonnes pratiques et pièges à éviter
Conflits d'identifiants
Deux règles portant le même id se surchargent mutuellement. C'est utile pour désactiver des spawns natifs, mais peut causer des comportements inattendus si deux datapacks de votre serveur définissent accidentellement le même identifiant. Adoptez toujours un namespace unique pour vos identifiants (ex: monserveur:...).
Poids et buckets
Le système de poids fonctionne par bucket, pas globalement. Un Pokémon avec un weight de 100 dans le bucket ultra_rare ne sera pas forcément commun : la probabilité que le bucket ultra_rare soit sélectionné reste faible. Ajustez d'abord le bucket, puis le poids au sein du bucket.
Tags de biomes non reconnus
Si un tag de biome dans votre condition n'existe pas dans votre instance (par exemple, un tag de mod non installé), la règle de spawn peut être ignorée silencieusement ou générer une erreur. Vérifiez toujours que les mods qui définissent les tags que vous utilisez sont bien présents sur le serveur.
Performance
Un grand nombre de règles de spawn complexes peut légèrement affecter les performances du serveur, surtout avec des conditions impliquant des recherches de blocs proches. Limitez l'usage de nearbyBlocks aux cas vraiment nécessaires et testez les performances avec des outils de profiling comme Spark avant de déployer en production.
Aller plus loin
Une fois les bases maîtrisées, vous pouvez explorer des fonctionnalités avancées de Cobblemon comme les spawns conditionnels liés à des événements de jeu, l'intégration avec des plugins serveur via les API Cobblemon, ou la création de Pokémon boss avec des règles de spawn dédiées. Consultez également notre guide sur la configuration complète d'un serveur Cobblemon pour une approche globale de l'administration.
Le système de datapack de Cobblemon est l'un des plus flexibles disponibles parmi les mods Pokémon pour Minecraft. En prenant le temps de comprendre la structure JSON et les paramètres de condition, vous disposez d'un contrôle total sur l'écosystème Pokémon de votre serveur, sans dépendre de mises à jour du mod pour les ajustements d'équilibrage.