RE:NODE

Minecraft10 min read

Cobblemon server setup and performance

Run a Cobblemon server on Fabric or NeoForge: dependencies, the main.json settings that matter, spawn and despawn tuning, player data and RAM.

0 readers

A Cobblemon server is a modded Minecraft server running the Cobblemon mod on Fabric or NeoForge, with every player running the same mod version on their client. Current releases target Minecraft 1.21.1; you need Fabric API and Fabric Language Kotlin on Fabric, or Kotlin for Forge on NeoForge, because the mod is written in Kotlin. A small group is comfortable on 4 GB, a modpack built around Cobblemon wants 6 to 8 GB, and the settings that decide performance live in config/cobblemon/main.json - how many Pokemon spawn per chunk, how often spawning runs, how far from players, and when they despawn. Player parties and PCs are saved inside the world folder by default, which makes backups simple and moving players between servers less so.

The general modded-server ground - Java versions, crash reports, client and server mods - is in running a modded server without the crashes. This guide covers what is specific to Cobblemon.

Versions, loaders and dependencies#

Cobblemon's supported loaders have moved over its life, so check the version page before you install anything.

CobblemonMinecraftLoadersExtra dependencies
1.6 and later1.21.1Fabric, NeoForgeFabric API + Fabric Language Kotlin, or Kotlin for Forge
1.5 and earlier1.20.1Fabric, ForgeSame pattern, older versions

Rules that save you a support ticket:

  • Server and clients run the same Cobblemon version, on the same loader. A Fabric client cannot join a NeoForge server.
  • The Kotlin language mod is required on both sides. A missing Kotlin dependency is the most common first-start failure; the log names it.
  • Addons target specific Cobblemon versions. After a Cobblemon update, check each addon before updating the server.

Most groups start from a modpack rather than bare Cobblemon. The official Cobblemon modpack and several community packs add quality-of-life and performance mods and match versions for you. Modpack servers from CurseForge and Modrinth covers turning a pack into a server.

Installing the server#

Fabric is the lighter option and the one most Cobblemon packs use; NeoForge is equally supported. A bare Fabric install:

  1. Download the Fabric server launcher for 1.21.1 and the matching loader version, or run the Fabric installer in server mode.
  2. Put Cobblemon, Fabric API and Fabric Language Kotlin into mods/.
  3. Start once to generate files, accept the EULA, start again.
  4. Stop, edit config/cobblemon/main.json, start again.
bash
$ java -Xms4G -Xmx4G -jar fabric-server-launch.jar nogui

Java 21 is required for 1.21.1. Fabric server performance mods covers Lithium, FerriteCore and the other server-side mods worth adding - they help a Cobblemon server as much as any other. For NeoForge, see NeoForge server setup.

On first start, Cobblemon sets up its battle engine, which runs Pokemon Showdown's battle logic inside the server. If the first battle hangs or errors, check the log for that step; autoUpdateShowdown in main.json controls whether it is refreshed on start.

main.json: the settings that matter#

Cobblemon's server settings are in config/cobblemon/main.json. The file is long and most of it is gameplay balance. The values below are defaults in current releases; some keys were renamed between versions, so read the file your server generated rather than copying this.

config/cobblemon/main.json (excerpt)
{  "maxPokemonLevel": 100,  "shinyRate": 8192.0,  "experienceMultiplier": 2.0,  "enableSpawning": true,  "pokemonPerChunk": 1.0,  "ticksBetweenSpawnAttempts": 20.0,  "maximumSpawnsPerPass": 8,  "minimumSpawningZoneDistanceFromPlayer": 16.0,  "maximumSpawningZoneDistanceFromPlayer": 64.0,  "despawnerNearDistance": 32.0,  "despawnerFarDistance": 96.0,  "despawnerMinAgeTicks": 600,  "despawnerMaxAgeTicks": 3600,  "storageFormat": "nbt",  "pokemonSaveIntervalSeconds": 30,  "playerDamagePokemon": true}
KeyDefaultWhat it does
shinyRate8192One in this many wild Pokemon is shiny. Lower means more shinies
maxPokemonLevel100Level cap
experienceMultiplier2Battle experience scaling
pokemonPerChunk1Density cap for wild spawns around players
ticksBetweenSpawnAttempts20How often spawning runs, in ticks
maximumSpawnsPerPass8Most spawns in one attempt
despawnerNearDistance / FarDistance32 / 96Distances that govern despawning of wild Pokemon
despawnerMinAgeTicks / MaxAgeTicks600 / 3600How old a wild Pokemon must be before it can or must despawn
worldSpawningBlocklistemptyWorlds where Cobblemon spawning is off
storageFormatnbtHow parties and PCs are stored: NBT, JSON or MongoDB
playerDamagePokemontrueWhether players can hit Pokemon

shinyRate is the one players ask about first. Lowering it to 4096 doubles shiny odds; event weekends with a lower rate are a common server feature. Changing it needs a restart.

Spawning, despawning and performance#

Every wild Pokemon is an entity with AI, animation state and collision, and Cobblemon spawns them around every player. That is the main cost of a Cobblemon server, and it scales with players spread across the map rather than with the world's size.

The levers, in order of effect:

  • `pokemonPerChunk`. The density cap. Dropping it from 1.0 to 0.7 cuts wild Pokemon around each player by roughly a third. Encounters become a little less frequent; the server gets noticeably lighter with many players.
  • `ticksBetweenSpawnAttempts`. Raising from 20 (once a second) to 40 halves how often the spawner runs. Spawns still fill up to the cap, just more slowly.
  • Despawn ages. Lowering despawnerMaxAgeTicks from 3600 (three minutes) clears old wild Pokemon sooner. Too low, and players lose a Pokemon they were walking towards.
  • Vanilla spawning. Many Cobblemon servers reduce vanilla animal and monster spawning, since Pokemon fill the world. On a Fabric server that means gamerules or a performance mod setting, not Paper's bukkit.yml.
  • Simulation distance. Wild Pokemon only exist and tick within the area around players. simulation-distance=6 or 8 in server.properties is sensible for a busy server. server.properties explained covers it.

Pokemon that players keep out of their party also cost something. Pastures keep pastured Pokemon roaming as entities; current releases cap them with defaultPasturedPokemonLimit (16 per pasture) and pastureMaxPerChunk. A base with ten pastures is 160 entities with AI whenever its chunks are loaded. Set a per-player pasture expectation if bases start to lag.

Measure as on any server: spark is available for Fabric and NeoForge, and a profile on a Cobblemon server with lag usually shows Pokemon entity ticking and spawning at the top. Reading a spark report explains the views. If the cost is in chunk generation rather than entities, pre-generate - world borders and pre-generation covers Chunky, which has Fabric and NeoForge builds.

PlayersSetupRAM
1-4Cobblemon + performance mods4 GB
4-10Cobblemon modpack (50-150 mods)6 GB
10-20Modpack, mature world, many pastures8 GB+ and more CPU

Spawns, datapacks and customising the Pokedex#

Cobblemon's spawn rules are data, not code. Spawn pools - which Pokemon appear in which biomes, at what levels, at what weight, under what conditions - are JSON files in Cobblemon's data, and a datapack can override or add to them. That is how servers make a rare Pokemon appear only in one biome, remove a species from the wild for an event, or add spawns for addon content.

The exportSpawnConfig option in main.json exports the current spawn data to the config folder so you can read what the defaults are before overriding them. Read the Cobblemon wiki for the current spawn file format; it has changed between versions, and old datapacks need updating along with the mod. Datapacks for servers covers where datapacks go and how they load.

Per-world control is simpler: worldSpawningBlocklist stops Cobblemon spawning in listed worlds, which is useful for a lobby, a build world or a mining dimension.

Player data, storage and backups#

By default (storageFormat: "nbt") Cobblemon saves each player's party and PC as files inside the world folder, separately from vanilla player data. pokemonSaveIntervalSeconds controls how often changes are written.

Consequences:

  • Backing up the world backs up everyone's Pokemon. One backup covers it.
  • Restoring the world rolls back everyone's Pokemon. Restoring last night's backup to fix one griefed base also undoes everyone's catches since then. For single-player rollbacks, restore just that player's Cobblemon files from a backup instead.
  • Moving players between servers means moving their Cobblemon data. A network with several Cobblemon servers sharing parties can use the MongoDB storage option (storageFormat: "mongodb" with mongoDBConnectionString and mongoDBDatabaseName) so all servers read the same storage.

A Pokemon-themed server gets more support requests about lost Pokemon than any other kind of server gets about lost items. Have a policy before launch - what you restore, from what backup, and how often - and keep backups frequent enough to honour it. Backups that actually restore explains why a restore you have tested matters.

Admin commands and permissions#

Cobblemon includes admin commands for giving and spawning Pokemon, and they matter for events, giveaways and fixing support cases.

code
/pokegive <player> <pokemon properties>/pokespawn <pokemon properties>

The properties string describes the Pokemon - species, level, shiny, and other attributes - for example pikachu level=20 shiny=yes. The exact property names are documented on the Cobblemon wiki and grow with each release.

Cobblemon exposes permission nodes for its commands, so on Fabric a permissions mod (LuckPerms has a Fabric build) can grant staff exactly the commands they need. Check the wiki for the node names on your version. Do not hand out operator status to event staff to let them run /pokegive; grant the node instead. LuckPerms covers groups and nodes.

Plugins do not run on a Fabric or NeoForge server. Bukkit-plus-mod hybrid servers exist, and some Cobblemon communities use them, but they break in subtle ways with large mods and are a support burden. If you need plugin-style features - claims, economy, homes - use the mod equivalents.

Running a public Cobblemon server#

A few things specific to Pokemon communities:

  • Trading and scams. Cobblemon's trade screen shows both sides; most "scams" are off-platform deals that went wrong. Write a rule about it.
  • Cloning and dupes. Any duplication bug in a mod becomes a Pokemon dupe. Keep the mod updated and watch the issue tracker.
  • Shiny economies. Shinies become currency. Event shiny-rate changes affect that economy; announce them.
  • Money and the brand. Cobblemon is a fan project; Pokemon is someone else's intellectual property. Selling Pokemon, shinies or Pokemon-themed perks for real money invites trouble from the rights holder as well as the Minecraft rules. Read what you may sell on a Minecraft server before opening a store.

Troubleshooting#

The server will not start and the log mentions Kotlin. The language mod is missing or the wrong version. Fabric needs Fabric Language Kotlin; NeoForge needs Kotlin for Forge. Match the version Cobblemon's release page lists.

Players are kicked with a mod mismatch. Their Cobblemon version, loader or addon list differs from the server. Compare the exact version numbers; launchers that auto-update the client are the usual culprit. Pin the pack version and announce updates before you apply them.

Battles hang or never start. Check the log at startup for errors setting up the battle engine, and around the moment the battle began. Addons that modify battles are frequent suspects after an update; remove them and test.

No Pokemon are spawning. Check enableSpawning is true, that the world is not in worldSpawningBlocklist, and that a datapack has not replaced the spawn pools with something empty or malformed. A broken spawn datapack usually logs a parse error at startup.

Too many Pokemon around bases. That is usually pastures, not wild spawns. Count them with the vanilla selector, for example /execute if entity @e[type=cobblemon:pokemon], while standing at the base, and compare with the same count in the wild.

A player says their Pokemon disappeared. Before restoring anything, check the log for the player's last session - trades, releases and deaths are recorded by most logging setups - and whether the server stopped uncleanly since their last catch. If it did, the loss is the save interval, and the fix for the future is clean stops. If it did not, restore only that player's data from a backup, not the whole world.

Memory climbs over days. Large modded servers do accumulate; a scheduled restart once a day at a quiet hour keeps it flat. Restart schedules that help covers timing and warnings.

On RE:NODE the Minecraft line ships Paper, so a Cobblemon server is your own install: you upload Fabric or NeoForge, the mods and the configs through the file manager or SFTP and set the startup variables. There is no one-click modpack installer. Backup slots on every plan are stored off the machine, can be locked so rotation does not remove them, and restore with a button - which, given how attached players get to their Pokemon, is the feature you will use.

FAQ#

Can players join a Cobblemon server with a vanilla client?

No. Cobblemon adds entities, items and screens, so every player needs the same Cobblemon version and loader as the server, plus the Kotlin dependency. A modpack keeps everyone matched.

How do I change the shiny rate on my Cobblemon server?

Edit shinyRate in config/cobblemon/main.json and restart. It is a one-in-N value, so 4096 doubles the default odds of 8192.

Why is my Cobblemon server lagging with only a few players?

Usually wild spawns spread across several players far apart, or pastures full of Pokemon at bases. Lower pokemonPerChunk, raise ticksBetweenSpawnAttempts, and profile with spark to confirm entity ticking is the cost.

Where are players' Pokemon saved?

Inside the world folder by default, in NBT format, separate from vanilla player data. Backing up the world includes them. MongoDB storage is available for networks that share parties across servers.

Can I use Paper plugins with Cobblemon?

Not on a normal Fabric or NeoForge server. Hybrid servers that load both exist but are unreliable with large mods. Use mod equivalents for claims, homes and economy.


Comments

Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.

0/2000