0.1.0
Compatibility
Required content
Changes
Cobblemon NPCs
A Fabric mod for Minecraft 1.21.1 that adds a configurable Cobblemon trainer NPC management system. Create custom trainer NPCs with custom teams, dialogue, rewards, and cooldowns.
Features
- Configurable Trainers: Define trainers via YAML configuration with custom names, dialogue, Pokémon teams, and rewards
- Trainer Spawning: Spawn trainer NPCs in-game using commands
- Battle System: Interact with trainers to initiate Pokémon battles using Cobblemon's battle system
- Rewards System: Configure item rewards and command execution upon defeating trainers
- Cooldown System: Set per-trainer cooldowns to prevent repeated battles
- Custom Skins: Apply custom player skins to trainer NPCs
- NPC Protection: Trainers are invulnerable, persistent, and protected from damage/death
Requirements
- Minecraft 1.21.1
- Fabric Loader 0.16.10+
- Fabric API 0.116.5+
- Cobblemon 1.7.0+
- Java 21+
Installation
- Download the latest release JAR file
- Place it in your server's
modsdirectory - Restart your server
- The configuration file will be generated at
config/cobblemonnpcs/trainers.yml
Configuration
The mod generates a default configuration file at config/cobblemonnpcs/trainers.yml. Edit this file to define your trainers:
trainers:
- trainer_id: "electric_master"
trainer_name: "Sora"
battle_dialogue: "Think you can withstand pure voltage?"
defeat_dialogue: "You really overpowered me!"
cooldown_hours: 12
skin: "Sora"
pokemon_team:
- species: "cobblemon:raichu"
level: 55
- species: "cobblemon:jolteon"
level: 54
rewards:
items:
- item: "minecraft:diamond"
count: 2
commands:
- "say {player} conquered {trainer}"
Configuration Fields
- trainer_id: Unique identifier for the trainer (lowercase, no spaces)
- trainer_name: Display name shown above the NPC
- battle_dialogue: Dialogue shown when interacting with the trainer
- defeat_dialogue: Message sent to player upon defeating the trainer
- cooldown_hours: Hours before a player can battle this trainer again (default: 12)
- skin: Optional Minecraft username to use as the NPC's skin
- pokemon_team: List of Pokémon species and levels
- species: Pokémon species ID (e.g.,
cobblemon:pikachuorpikachu) - level: Pokémon level (default: 5)
- species: Pokémon species ID (e.g.,
- rewards: Rewards given upon victory
- items: List of items to give
- item: Item ID (e.g.,
minecraft:diamond) - count: Number of items (default: 1)
- item: Item ID (e.g.,
- commands: List of commands to execute (supports
{player}and{trainer}placeholders)
- items: List of items to give
Commands
All commands require OP level 2 (or equivalent permission).
/spawntrainer <trainer_id>
Spawns a trainer NPC at your location.
Example:
/spawntrainer electric_master
/trainerskin <trainer_id> <skin_name>
Updates the skin for all existing instances of a trainer. Use default, clear, off, or none to remove the custom skin.
Examples:
/trainerskin electric_master Notch
/trainerskin electric_master clear
/trainerconfig reload
Reloads the trainer configuration from trainers.yml without restarting the server.
Usage
- Configure Trainers: Edit
config/cobblemonnpcs/trainers.ymlto define your trainers - Reload Config: Run
/trainerconfig reloadto load your changes - Spawn Trainers: Use
/spawntrainer <trainer_id>to spawn trainers in-game - Interact: Right-click on a trainer NPC to open the battle dialogue
- Battle: Select "Battle!" to start a Pokémon battle
- Rewards: Upon victory, players receive configured rewards and must wait for the cooldown before battling again
Building
To build from source:
./gradlew build
The compiled JAR will be in build/libs/.
Technical Details
- Mod ID:
cobblemonnpcs - Environment: Server-side only
- Dependencies: Fabric Loader, Fabric API, Cobblemon
- Configuration: YAML-based via SnakeYAML
- NPC Tracking: Maintains UUID-based tracking of spawned trainer NPCs
- Cooldown Storage: Per-player, per-trainer cooldown tracking
License
All Rights Reserved - PlayerGames LLC
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Vp8Qj4qr:47RbrHPS"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Vp8Qj4qr:47RbrHPS"
}


