Cobblemon XP Overhaul
Introduction: Présentation
Un système d'XP unifié et configurable pour les joueurs et leurs Pokémon : captures, combats et entraînement.
À quoi sert le mod ?
Cobblemon XP Overhaul réunit la progression XP dans un même système, avec des récompenses configurables et des mécanismes d'entraînement.
- XP du joueur après les captures et les victoires contre des Pokémon sauvages, des dresseurs PNJ ou d'autres joueurs.
- XP Pokémon lors des captures et des K.O. en combat de dresseur.
- Interactions configurables entre Exp All et Multi Exp.
- Bonus Œuf Chance, première capture, captures répétées, Shiny, Alpha et Pokémon rares.
- Fiole d'XP permettant de stocker une partie des récompenses du mod pour entraîner un Pokémon.
- Aperçu d'un transfert avec Shift + clic droit (v2.1).
- Diagnostic administrateur avec
/cxpo xp explain [player](v2.1). - Wiki anglais et français et traductions en jeu enrichies.
Prérequis
| Composant | Version |
|---|---|
| Minecraft | 1.21.1 |
| Cobblemon XP Overhaul | Documentation v2.1 |
| Cobblemon | 1.8.2 minimum, inférieur à 1.9.0 |
| OS Cobblemon Library | 1.3.0 minimum — obligatoire |
| Fabric | Fabric Loader 0.17.2+, Fabric API, Fabric Language Kotlin, Cloth Config |
| NeoForge | 21.1.182+, Cloth Config pour l'interface cliente |
| Java | 21 |
Fonctionnement de l'XP
- Capturer ou combattre — un événement génère une récompense.
- Calculer — les niveaux, bonus et réglages déterminent l'XP.
- Répartir — une fraction de l'XP du joueur peut rejoindre la fiole.
- Entraîner — utiliser la fiole sur un Pokémon possédé, après aperçu si besoin.
L'Exp All des captures est désactivé par défaut. La fiole ne collecte pas l'XP vanilla. Voir la progression, la fiole d'XP et les commandes.
Installation et prérequis
Bien démarrer: Installation
Cobblemon XP Overhaul ajoute des récompenses d'expérience configurables pour les captures et les combats, ainsi qu'une fiole d'XP pour entraîner les Pokémon.
Versions prises en charge
| Composant | Version |
|---|---|
| Minecraft | 1.21.1 |
| Cobblemon XP Overhaul | 2.1 |
| Cobblemon | 1.8.2 minimum et strictement inférieure à 1.9.0, sur Minecraft 1.21.1 |
| Mod loader | Fabric ou NeoForge |
| OS Cobblemon Library | 1.3.0+, obligatoire |
| Java | 21 |
Fabric
Installer la version Fabric du mod avec Fabric Loader 0.17.2+, Fabric API, Fabric Language Kotlin 1.13.6+, Cobblemon 1.8.2+ (avant 1.9), OS Cobblemon Library 1.3.0+ et Cloth Config 15.0.140+. Mod Menu est facultatif.
NeoForge
Installer la version NeoForge du mod avec NeoForge 21.1.182+, Cobblemon 1.8.2+ (avant 1.9), OS Cobblemon Library 1.3.0+ et Cloth Config 15.0.140+ sur les clients utilisant l'interface de configuration. La compilation utilise Kotlin for Forge. Ne mélangez pas les fichiers Fabric et NeoForge.
Mise en place
- Préparer Minecraft 1.21.1 avec le loader choisi et Cobblemon.
- Télécharger la version correspondante sur CurseForge.
- Placer le JAR et ses dépendances, notamment OS Cobblemon Library, dans
mods. En multijoueur, serveur et clients doivent utiliser la variante adaptée. - Démarrer le jeu ou serveur pour générer
config/cobblemon_xp_overhaul/. - Capturer un Pokémon, puis remporter un combat pour vérifier les récompenses.
Pour obtenir un aperçu de transfert sans consommation, faire Shift + clic droit sur un Pokémon invoqué avec la fiole équipée en main. Lire la progression, la fiole d'XP et la configuration.
Progression et expérience
Récompenses: Progression XP
Les récompenses XP du joueur (barre d'expérience Minecraft) et XP des Pokémon sont gérées indépendamment.
Captures et XP du joueur
Capturer un Pokémon peut rapporter de l'XP selon une valeur de base, son niveau, un multiplicateur global et des bonus. Valeurs initiales : baseXp=4 et levelMultiplier=0.2.
Les modificateurs de capture couvrent :
- Première capture d'une espèce ou captures répétées
- Pokémon Shiny, Alpha et formes spéciales
- Pokémon légendaires, fabuleux et Ultra-Chimères
- Œuf Chance lorsque ce bonus est actif
L'historique des espèces est conservé par joueur. Les multiplicateurs Shiny et Alpha valent 1.0 par défaut : aucune augmentation sans personnalisation.
Combats et XP du joueur
Les victoires contre les Pokémon sauvages, dresseurs PNJ et en PvP disposent chacune d'un profil : activation, XP de base, coefficient de niveau et multiplicateur global. Un niveau minimum des Pokémon vaincus peut filtrer les récompenses.
Par défaut, les victoires causées par une capture sauvage sont exclues du calcul de récompense de combat afin d'éviter un double gain.
Captures et XP des Pokémon
Les Pokémon éligibles de l'équipe peuvent obtenir de l'XP suivant leur rôle :
- Participants :
participantMultiplier(défaut 1.0). - Porteurs d'un Multi Exp avec Exp All désactivé :
expShareMultiplier(défaut 0.5). - Bénéficiaires de l'Exp All :
expAllMultiplier(défaut 0.35).
pokemon.capture.expAllEnabled est false par défaut. Un porteur du Multi Exp peut bénéficier d'un bonus optionnel de 10 % lorsque l'Exp All est actif. Le Pokémon capturé peut aussi être éligible si allowCapturedPokemonWithExpAll est activé.
Combats contre des dresseurs
L'XP des Pokémon éligibles est distribuée après chaque K.O. en combat de dresseur, sans attendre une victoire finale. Les récompenses déjà gagnées peuvent donc être conservées même en cas de défaite ultérieure.
Œuf Chance
Pour l'XP du joueur, la détection dépend des réglages d'inventaire et d'objets tenus par l'équipe. Pour l'XP de capture des Pokémon, l'Œuf Chance tenu par chaque bénéficiaire est examiné individuellement. Multiplicateur par défaut : 1.5.
Examiner un calcul d'XP du joueur (v2.1)
Les opérateurs peuvent utiliser /cxpo xp explain ou /cxpo xp explain <player> pour afficher le dernier calcul d'XP du joueur, les bonus appliqués et la répartition entre joueur et fiole. Les traces ne sont conservées que pendant la session serveur. Voir les commandes.
Consultez la référence de configuration.
Fiole d'XP
Entraînement: Fiole d'XP
La XP Flask (cobblemon_xp_overhaul:xp_flask) stocke une partie de l'XP du joueur accordée par XP Overhaul pour la convertir ensuite en XP Pokémon.
Recette
| Éclat d'améthyste | Fiole d'expérience | Éclat d'améthyste |
| Bonbon Exp. L | Multi Exp | Bonbon Exp. L |
| Lapis-lazuli | Fiole d'expérience | Lapis-lazuli |
La recette 3 × 3 est ajoutée au démarrage du serveur.
Charger et utiliser la fiole
- Garder la fiole dans l'inventaire ou l'équiper dans le slot facultatif Accessories
xp_flask. - Recevoir une récompense d'XP du joueur lors d'une capture ou victoire admissible.
- Une fraction alimente la fiole si le système est activé, le reste rejoint la barre d'expérience Minecraft.
- Faire un clic droit avec la fiole remplie sur son propre Pokémon invoqué.
Nouveauté v2.1 : maintenez Shift (accroupi) puis faites un clic droit sur votre Pokémon invoqué avec la fiole pour prévisualiser le transfert dans le chat. Cet aperçu montre l'XP Pokémon prévue, le coût en XP stockée, le solde restant et le niveau estimé, ou indique pourquoi le transfert est impossible. Il ne consomme aucune XP et ne modifie pas le Pokémon. Le clic droit normal applique le transfert.
Une utilisation ne donne au maximum que l'XP nécessaire pour atteindre le niveau suivant, avant le traitement des événements Cobblemon. Le solde reste dans la fiole. Son infobulle affiche la quantité d'XP Pokémon convertible disponible.
Conversion par défaut
| Paramètre | Défaut | Effet |
|---|---|---|
coreCaptureRatio | 0.25 | Redirige 25 % de l'XP admissible (arrondi inférieur) |
transferMultiplier | 40.0 | Coefficient de conversion |
transferEfficiency | 0.9 | Efficacité |
enabled | true | Activation |
Le facteur de conversion effectif est 40 × 0.9 = 36 XP Pokémon par point d'XP stocké, avant les arrondis et la limitation au niveau suivant.
Accessories et messages
Avec Accessories, la fiole équipée est recherchée avant celles de l'inventaire. Sans ce mod, l'inventaire fonctionne normalement.
trainerXpCore.messageMode accepte ACTION_BAR, CHAT et DISABLED. Le paramètre showTrainerXpCoreMessages peut également masquer les messages.
L'aperçu est une estimation : le transfert est recalculé au moment de son application. Voir les commandes et l'API.
Guide de configuration
Administration: Configuration
Le mod crée deux fichiers JSON dans config/cobblemon_xp_overhaul/ :
| Fichier | Usage |
|---|---|
cobblemon_xp_overhaul-server.json | XP des captures et combats, Œuf Chance, fiole d'XP |
cobblemon_xp_overhaul-common.json | Messages, file d'attente Action Bar, débogage |
Modifier les réglages
- Démarrer une fois le jeu ou serveur pour générer les fichiers.
- Faire une sauvegarde des deux JSON.
- Modifier les clés voulues. JSON n'autorise ni commentaires ni virgules finales.
- Exécuter
/cxpo reloadavec une permission de niveau 2. - Tester en jeu.
Une interface cliente Cloth Config est également prévue. En multijoueur, les réglages d'équilibrage doivent être faits dans les fichiers du serveur.
Exemple : activer Exp All
Modifier la propriété pokemon.capture.expAllEnabled :
"pokemon": {
"capture": {
"expAllEnabled": true,
"expAllMultiplier": 0.35,
"expShareBonusWithExpAllEnabled": false
}
}
Il s'agit d'un extrait de l'arborescence, pas d'un fichier JSON complet.
Exemple : XP de capture
"player": {
"capture": {
"baseXp": 4,
"levelMultiplier": 0.2,
"globalMultiplier": 1.0
}
}
Les paramètres invalides sont normalisés et certains anciens noms sont migrés au rechargement. En cas de JSON mal formé, des valeurs par défaut peuvent être rétablies : gardez une sauvegarde.
Pour diagnostiquer une formule d'XP du joueur en v2.1, utilisez /cxpo xp explain [player] avec les droits opérateur. Aucun nouveau paramètre JSON n'est nécessaire.
Consultez la référence des paramètres.
Référence complète des paramètres
Référence JSON: Paramètres
Les tableaux recensent les clés JSON et valeurs par défaut de la v2.1 dans config/cobblemon_xp_overhaul/.
Paramètres serveur
Fichier : cobblemon_xp_overhaul-server.json
player.capture
| Clé JSON | Par défaut |
|---|---|
enabled | true |
baseXp | 4 |
levelMultiplier | 0.2 |
globalMultiplier | 1 |
luckyEggMultiplier | 1.5 |
minimumLevelForRewards.enabled | false |
minimumLevelForRewards.level | 20 |
player.battle
| Clé JSON | Par défaut |
|---|---|
luckyEggMultiplier | 1.5 |
skipWildCaptureVictories | true |
minimumLevelForRewards.enabled | false |
minimumLevelForRewards.level | 20 |
player.battle.wild
| Clé JSON | Par défaut |
|---|---|
enabled | true |
baseXp | 4 |
levelMultiplier | 0.17 |
globalMultiplier | 1 |
player.battle.trainer
| Clé JSON | Par défaut |
|---|---|
enabled | true |
baseXp | 5 |
levelMultiplier | 0.19 |
globalMultiplier | 1 |
player.battle.pvp
| Clé JSON | Par défaut |
|---|---|
enabled | true |
baseXp | 6 |
levelMultiplier | 0.21 |
globalMultiplier | 1 |
pokemon.capture
| Clé JSON | Par défaut |
|---|---|
enabled | true |
baseXp | 24 |
levelMultiplier | 1.25 |
globalMultiplier | 1 |
participantMultiplier | 1 |
expShareMultiplier | 0.5 |
expAllMultiplier | 0.35 |
expAllEnabled | false |
expShareBonusWithExpAllEnabled | false |
allowCapturedPokemonWithExpAll | true |
luckyEggMultiplier | 1.5 |
luckyEgg
| Clé JSON | Par défaut |
|---|---|
enabled | true |
checkPlayerInventory | true |
checkPartyHeldItemsForPlayerXp | true |
checkPokemonHeldItems | true |
trainerXpCore
| Clé JSON | Par défaut |
|---|---|
enabled | true |
coreCaptureRatio | 0.25 |
transferMultiplier | 40 |
transferEfficiency | 0.9 |
showTrainerXpCoreMessages | true |
messageMode | "ACTION_BAR" |
player.capture.bonuses
| Clé JSON | Par défaut |
|---|---|
firstSpeciesBonusEnabled | true |
firstSpeciesMultiplier | 1.5 |
repeatedSpeciesModifierEnabled | true |
repeatedSpeciesMultiplier | 0.75 |
repeatedSpeciesThreshold | 1 |
shinyMultiplier | 1 |
alphaMultiplier | 1 |
legendaryMultiplier | 1.2 |
mythicalMultiplier | 1.2 |
ultraBeastMultiplier | 1.2 |
specialFormMultiplier | 1 |
pokemon.capture.bonuses
| Clé JSON | Par défaut |
|---|---|
firstSpeciesBonusEnabled | true |
firstSpeciesMultiplier | 1.5 |
repeatedSpeciesModifierEnabled | true |
repeatedSpeciesMultiplier | 0.75 |
repeatedSpeciesThreshold | 1 |
shinyMultiplier | 1 |
alphaMultiplier | 1 |
legendaryMultiplier | 1.2 |
mythicalMultiplier | 1.2 |
ultraBeastMultiplier | 1.2 |
specialFormMultiplier | 1 |
Paramètres communs
Fichier : cobblemon_xp_overhaul-common.json
messages.actionBar
| Clé JSON | Par défaut |
|---|---|
showPlayerCapture | true |
showPlayerBattle | true |
showPokemonCapture | true |
showPokemonBattle | true |
showCategoryLabels | false |
queueEnabled | true |
queueSpacingTicks | 30 |
debug
| Clé JSON | Par défaut |
|---|---|
enabled | false |
logToConsole | true |
sendToPlayer | false |
Validation et migration
- Les XP négatives et la plupart des coefficients négatifs sont ramenés à zéro.
luckyEggMultiplierne descend pas sous1.0, etcoreCaptureRatioreste entre0et1.queueSpacingTicks,repeatedSpeciesThresholdet le niveau minimum restent supérieurs ou égaux à1.trainerXpCore.messageModeaccepteACTION_BAR,CHATouDISABLED.- Les anciennes sections racines
playerCapture,playerBattleetpokemonCapturesont migrées vers la structure actuelle.
Pour modifier ces valeurs, consultez le guide de configuration.
Commandes et permissions
Administration: Commandes
Toutes les commandes exigent la permission 2, généralement réservée aux opérateurs.
| Commande | Effet |
|---|---|
/cxpo reload | Recharge les deux fichiers de configuration |
/cxpo flask get | Affiche l'XP stockée dans la première fiole utilisable |
/cxpo flask set <amount> | Définit une valeur d'XP stockée positive ou nulle |
/cxpo flask add <amount> | Ajoute une valeur signée, sans descendre sous zéro |
/cxpo xp explain | Explique le dernier calcul enregistré d'XP du joueur (capture ou victoire) |
/cxpo xp explain <player> | Explique le dernier calcul d'XP du joueur enregistré pour le joueur en ligne ciblé |
L'alias complet /cobblemonxpoverhaul accepte les mêmes sous-commandes.
/cxpo reload
/cxpo flask get
/cxpo flask set 250
/cxpo flask add -50
/cxpo xp explain
/cxpo xp explain Steve
Détail des calculs XP (v2.1)
xp explain affiche le dernier calcul d'XP du joueur de la session serveur : source (capture, combat sauvage, dresseur ou PvP), niveaux concernés, XP de base, calcul par niveau, multiplicateurs appliqués, XP totale, XP reçue et XP redirigée vers la fiole. Les gains nuls et certaines captures ignorées sont également expliqués lorsqu'une trace existe.
Les traces sont conservées uniquement durant la session serveur, avec un maximum de 256 joueurs suivis en mémoire. Ce n'est ni un historique persistant, ni un outil de détail de l'XP individuelle des Pokémon. En l'absence de trace, la commande le signale.
L'argument facultatif <player> permet d'inspecter un joueur en ligne. Depuis la console, il faut indiquer un joueur, car la version sans argument nécessite une entité joueur.
La fiole du slot facultatif Accessories est prioritaire sur les fioles de l'inventaire.
Voir la configuration et la fiole d'XP.
Compatibilité
Prérequis: Compatibilité
Versions et loaders
Le code cible Minecraft 1.21.1, Cobblemon 1.8.2 minimum et strictement inférieur à 1.9.0, Fabric et NeoForge. Vérifiez toujours la version exacte du fichier à installer.
Fabric : Fabric Loader 0.17.2+, Fabric API, Fabric Language Kotlin 1.13.6+, Cloth Config 15.0.140+, OS Cobblemon Library 1.3.0+ et Cobblemon 1.8.2 à 1.8.x.
NeoForge : NeoForge 21.1.182+, Cobblemon 1.8.2 à 1.8.x, OS Cobblemon Library 1.3.0+, Cloth Config 15.0.140+ pour les clients utilisant l'interface de configuration. La compilation utilise Kotlin for Forge.
OS Cobblemon Library est obligatoire sur les deux loaders : le mod utilise son accès au stockage d'équipe Pokémon.
Ces exigences sont issues des métadonnées du mod et ne garantissent pas que toutes les versions ultérieures ont été testées.
Langues disponibles en jeu
La version 2.1 enrichit les traductions intégrées au mod. Le site de documentation est disponible en anglais et en français.
Intégrations facultatives
| Mod | Fonctionnement |
|---|---|
| Accessories | Slot de fiole xp_flask, avec repli vers l'inventaire |
| Mod Menu | Accès facultatif au menu de configuration Fabric |
| Radical Cobblemon Trainers (RCT) | Compatibilité conditionnelle des limites de niveau si son API attendue est disponible |
Le module RCT est recherché sans dépendance obligatoire. Si l'API attendue n'est pas accessible, son intégration ne s'active pas.
Multijoueur et limites
Les récompenses et l'API de fiole sont gérées côté serveur. Serveur et clients doivent utiliser les versions compatibles. L'équilibrage se règle sur le serveur.
La fiole ne collecte que les récompenses d'XP du joueur générées par XP Overhaul. Son utilisation normale est limitée au prochain niveau Pokémon avant les événements Cobblemon. Shift + clic droit prévisualise le transfert sans retirer d'XP. L'Exp All est désactivé par défaut.
Voir la FAQ et l'installation.
FAQ et dépannage
Dépannage: FAQ
Pourquoi ma fiole reste-t-elle vide ?
Elle collecte uniquement l'XP du joueur donnée par XP Overhaul, pas celle du minage ou des créatures vanilla. Gardez-la dans l'inventaire ou dans le slot Accessories compatible, puis vérifiez trainerXpCore.enabled=true et coreCaptureRatio>0.
Pourquoi toute mon équipe ne reçoit-elle pas d'XP ?
Vérifiez pokemon.capture.enabled, la participation, le Multi Exp et expAllEnabled (désactivé par défaut). Les règles normales de Cobblemon s'appliquent aussi.
Pourquoi les captures Shiny ou Alpha ne donnent-elles pas plus d'XP ?
Les multiplicateurs shinyMultiplier et alphaMultiplier valent tous deux 1.0 par défaut.
Pourquoi la commande reload ne fonctionne-t-elle pas ?
/cxpo reload nécessite la permission 2.
Peut-on vérifier un transfert avant de l'effectuer ?
Oui, depuis la v2.1. Maintenez Shift (accroupi) et faites un clic droit avec la fiole sur votre Pokémon invoqué pour afficher un aperçu dans le chat sans dépenser d'XP. Un clic droit normal applique le transfert.
Comment consulter le détail d'un gain d'XP ?
Avec la permission 2, /cxpo xp explain [player] affiche le dernier calcul d'XP du joueur enregistré dans la session serveur. Il ne détaille pas l'XP des Pokémon et ne conserve pas l'historique après redémarrage.
Pourquoi reste-t-il de l'XP dans la fiole ?
Chaque usage est plafonné à l'XP requise pour atteindre le prochain niveau, avant les événements Cobblemon.
Pourquoi mes réglages reviennent-ils aux valeurs par défaut ?
Un JSON invalide peut déclencher l'application de valeurs sécurisées. Consultez les logs et restaurez une sauvegarde. debug.enabled peut aider au diagnostic.
Peut-on utiliser la fiole avec les Pokémon du PC ?
Une autre extension peut employer l'API de fiole sur les objets Pokémon serveur du PC ou de l'équipe. Cela n'ajoute pas, à lui seul, de bouton à l'interface PC.
Où sont les fichiers de configuration ?
Dans config/cobblemon_xp_overhaul/, sous forme de deux JSON. Voir la configuration.
API développeur : XP Flask
Intégration: API développeur
La version 2.1 propose une API côté serveur pour prévisualiser puis appliquer la conversion de la fiole à un objet Pokémon Cobblemon, provenant notamment de l'équipe ou du PC.
Exemple Java
import com.cobblemon.mod.common.pokemon.Pokemon;
import net.levelscraft7.cobblemonxpoverhaul.api.XpFlaskApi;
import net.levelscraft7.cobblemonxpoverhaul.api.XpFlaskPreview;
import net.levelscraft7.cobblemonxpoverhaul.api.XpFlaskResult;
import net.minecraft.server.level.ServerPlayer;
XpFlaskPreview preview = XpFlaskApi.preview(player, pokemon);
if (preview.canApply()) {
XpFlaskResult result = XpFlaskApi.apply(player, pokemon);
if (result.success()) {
// Actualiser l'interface du mod appelant.
}
}
Aperçu côté joueur (v2.1) : Shift + clic droit avec la fiole sur son Pokémon invoqué affiche une estimation dans le chat. L'API ci-dessous permet les intégrations serveur dans d'autres mods.
preview ne modifie rien. apply recherche à nouveau la fiole et recalcule le coût. Les quantités d'XP et niveaux transmis par un client ne doivent pas être considérés comme fiables.
Détection facultative
Identifiant du mod : cobblemon_xp_overhaul.
- Fabric :
FabricLoader.getInstance().isModLoaded("cobblemon_xp_overhaul") - NeoForge :
ModList.get().isLoaded("cobblemon_xp_overhaul")
Contrat et restrictions
Appeler les méthodes avec un ServerPlayer et un Pokemon faisant autorité sur le serveur. La fiole Accessories équipée est vérifiée en priorité, suivie de l'inventaire. L'XP stockée utilise la donnée personnalisée StoredTrainerXp. Un appel accorde au maximum l'XP nécessaire jusqu'au prochain niveau, avant les événements Cobblemon.
XpFlaskPreview:status,storedTrainerXp,availablePokemonXp,requiredPokemonXp,trainerXpCost,pokemonXpToGrant,currentLevel,resultingLevel. MéthodescanApply()etwillLevelUp().XpFlaskResult:status,consumedTrainerXp,grantedPokemonXp,previousLevel,resultingLevel,storedTrainerXpBefore,storedTrainerXpAfter. Méthodesuccess().XpFlaskStatus:SUCCESS,FEATURE_DISABLED,INVALID_PLAYER,INVALID_POKEMON,NO_FLASK_FOUND,EMPTY_FLASK,MAX_LEVEL,INSUFFICIENT_XP,NO_XP_REQUIRED,APPLICATION_FAILED.
Pour traduire le résultat, utiliser XpFlaskStatus.translationKey(). Voir les commandes.