Cobblemon KubeJS Bridge
Bring Cobblemon data, events, storage queries, administrative utilities, and
client-side Pokedex displays into KubeJS.
Cobblemon KubeJS Bridge lets modpack developers build custom progression,
quests, rewards, commands, interfaces, battle systems, and server mechanics
using JavaScript.
Features
Cobblemon events
Listen to server-side events such as:
- Pokedex progress changes
- Pokemon scans and captures
- Pokemon sent, recalled, fainted, gained, healed, or released
- Experience gain and level-up
- Evolution completion
- Battle victory and defeat
- Battle escape and forfeit
CobblemonEvents.pokemonCaptured(event => {
event.player.tell(
`You caught ${event.species} at level ${event.level}!`
)
})
Pokedex API
Query a player's Pokedex progress:
- Check whether a species was seen or caught
- Count total seen or caught species
- Count progress by elemental type
- Read individual species progress
var caughtFire = CobblemonJS.pokedex.countCaughtByType(
player,
'fire'
)
Species API
- Validate species IDs
- List implemented species
- Read species types
- Validate elemental types
- Find all species of a type
Both short and namespaced IDs are supported:
CobblemonJS.species.exists('charizard')
CobblemonJS.species.exists('cobblemon:charizard')
Party and PC API
Read safe Pokemon snapshots from a player's party and PC:
- Search Pokemon by UUID
- Count Pokemon by species or type
- Keep party, PC, box, and slot information
- Read level, HP, nature, ability, moves, IVs, EVs, status, held item, and more
var party = CobblemonJS.pokemon.getParty(player)
var pokemon = CobblemonJS.pokemon.getByUuid(player, pokemonUuid)
Administrative utilities
Trusted server scripts can:
- Give a Pokemon to a player
- Heal a player's party
- Spawn a Pokemon near a player
- Spawn a Pokemon at explicit coordinates without assigning an owner
CobblemonJS.admin.givePokemon(
player,
'charizard level=50 shiny=true'
)
CobblemonJS.admin.spawnPokemon(
player.serverLevel,
'rayquaza level=70',
100,
80,
-50
)
Client-side Pokedex synchronization
The server synchronizes a read-only Pokedex cache to the owning client. Client
scripts can use it for live tooltips and other interfaces without requesting
data from the server every frame.
CobblemonClientJS.pokedex.countSeen()
CobblemonClientJS.pokedex.countCaught()
CobblemonClientJS.pokedex.countCaughtByType('fire')
The included examples contain a tested dynamic spyglass tooltip.
Requirements
- Cobblemon
- KubeJS
- Rhino, as required by KubeJS
- Java 21
Install the bridge on both the client and server when using the synchronized
client Pokedex API.
Loader support
NeoForge is currently supported.
Fabric support is not available yet. The Fabric module is only a compile-time
stub and does not expose events, APIs, or client synchronization.
Documentation and examples
The project includes:
- Complete API documentation
- Every function's parameters and return values
- Full event field reference
- Pokemon and move data model reference
- Server and client script examples
- Troubleshooting instructions
Links
Notes
- Pokemon snapshots returned to scripts are read-only.
- Administrative methods mutate gameplay state and should only be exposed
through trusted scripts with appropriate permission checks.
- Pokedex counts represent unique implemented species, not duplicate captures.
- Unknown species, types, malformed UUIDs, and invalid spawn properties produce
descriptive script errors.
- Replacing the mod jar or networking code requires a full restart.