Unofficial site, not affiliated with modrinth.com.What is this?
Моды/CobblemonOptimizer
CobblemonOptimizer

CobblemonOptimizer

CobbleOptimizer is a server-side Fabric mod that reduces lag caused by Cobblemon's Pokemon entities.

9.3K
21

CobblemonOptimizer 4.4.0

release12 мая 2026 г.

CobbleOptimizer 4.4.0 — Release Notes

New optimization: Berry ticker backport (Cobblemon 1.8 → 1.7.3)

Added a new patch that eliminates the per-tick BlockEntityTicker overhead from BerryBlock, ported from how Cobblemon 1.8 handles berry growth.

What it does

  • Cancels the original BerryBlock.getTicker() registration (no more per-tick callback on every loaded berry tree).
  • Adds hasRandomTicks / randomTick / scheduledTick overrides that drive berry growth via vanilla random ticking instead, with delta-time compensation so average maturation time stays identical to vanilla Cobblemon.
  • Mature berries (age = 5) and rooted berries don't tick at all → zero per-tick cost.

Performance

  • Before: every loaded BerryBlockEntity ran a callback 20×/s → linear cost scaling with the number of loaded berry trees.
  • After: each berry block is visited on average ~once per 68 s (at randomTickSpeed=3), with the elapsed game-time subtracted in one batch from stageTimer.
  • On servers with large berry farms, this removes a constant per-tick overhead proportional to the farm size.

Configuration

  • Config key: patches.berry_ticker_optimization
  • Default: true (enabled out of the box for new installs; existing config files preserve their previous values).
  • To disable: edit cobbleoptimizer.toml or run /cobbleoptimizer set patches.berry_ticker_optimization false and reload.

CobblemonOptimizer 4.4.0

release12 мая 2026 г.

CobbleOptimizer 4.4.0 — Release Notes

New optimization: Berry ticker backport (Cobblemon 1.8 → 1.7.3)

Added a new patch that eliminates the per-tick BlockEntityTicker overhead from BerryBlock, ported from how Cobblemon 1.8 handles berry growth.

What it does

  • Cancels the original BerryBlock.getTicker() registration (no more per-tick callback on every loaded berry tree).
  • Adds hasRandomTicks / randomTick / scheduledTick overrides that drive berry growth via vanilla random ticking instead, with delta-time compensation so average maturation time stays identical to vanilla Cobblemon.
  • Mature berries (age = 5) and rooted berries don't tick at all → zero per-tick cost.

Performance

  • Before: every loaded BerryBlockEntity ran a callback 20×/s → linear cost scaling with the number of loaded berry trees.
  • After: each berry block is visited on average ~once per 68 s (at randomTickSpeed=3), with the elapsed game-time subtracted in one batch from stageTimer.
  • On servers with large berry farms, this removes a constant per-tick overhead proportional to the farm size.

Configuration

  • Config key: patches.berry_ticker_optimization
  • Default: true (enabled out of the box for new installs; existing config files preserve their previous values).
  • To disable: edit cobbleoptimizer.toml or run /cobbleoptimizer set patches.berry_ticker_optimization false and reload.

CobblemonOptimizer 4.3.3

release5 мая 2026 г.

Changes — v4.3.3

  1. Removed console log spam

The Batch despawn: removed X (Y aged out) [Skitty x6, Bramblin x4, ...] log line was being printed on every sweep cycle (every ~10 seconds when entities were despawned). It's now gone. Internal counters (lastDespawnCount, lastAgeDespawnCount) are still updated and remain visible via the /cobbleoptimizer status
command — only the log noise was removed.

  1. TPS-gated sweep

Previously the batch despawn ran on a fixed timer (every check_interval_ticks, default 200 ticks = 10s) regardless of server health. Now it only runs when TPS drops below a configurable threshold.

New config field: batch_despawn.tps_threshold (default 18.0).

  • TPS ≥ 18.0 → no despawn sweep (server is healthy, no need)
  • TPS < 18.0 → sweep runs at the normal interval

This brings batch despawn in line with the other features (tick_throttle, ai_freeze), which already use the same TPS-gating pattern.

  1. Emergency override preserved

The forceNextSweep() flag (used by the Emergency Manager when TPS drops below emergency.tps_threshold, default 12.0) bypasses both the interval check and the new TPS gate. So even if you set batch_despawn.tps_threshold to something low like 14.0, an emergency at TPS 11 will still force an immediate sweep.

Files changed (mirrored on Fabric + NeoForge)

  • CobbleOptimizerConfig.kt — added tpsThreshold: Double = 18.0 to BatchDespawnConfig
  • BatchDespawnManager.kt — added TPS gate, removed log line, removed dead species-counting code
  • ConfigManager.kt — TOML parse/write, key list, and setValue support for the new field
  • ConfigValidator.kt — validates tps_threshold in range 1.0..20.0
  • gradle.properties — version bumped 4.3.2 → 4.3.3

How to tune

/cobbleoptimizer config set batch_despawn.tps_threshold 17.0 # stricter (only at 17 TPS) /cobbleoptimizer config set batch_despawn.tps_threshold 19.5 # more aggressive /cobbleoptimizer config set batch_despawn.tps_threshold 20.0 # effectively "always on" (old behavior)

The change is backwards-compatible: existing cobbleoptimizer.toml files without the new key fall back to the default 18.0 and the key is written on the next save.

CobblemonOptimizer 4.3.3

release5 мая 2026 г.

Changes — v4.3.3

  1. Removed console log spam

The Batch despawn: removed X (Y aged out) [Skitty x6, Bramblin x4, ...] log line was being printed on every sweep cycle (every ~10 seconds when entities were despawned). It's now gone. Internal counters (lastDespawnCount, lastAgeDespawnCount) are still updated and remain visible via the /cobbleoptimizer status
command — only the log noise was removed.

  1. TPS-gated sweep

Previously the batch despawn ran on a fixed timer (every check_interval_ticks, default 200 ticks = 10s) regardless of server health. Now it only runs when TPS drops below a configurable threshold.

New config field: batch_despawn.tps_threshold (default 18.0).

  • TPS ≥ 18.0 → no despawn sweep (server is healthy, no need)
  • TPS < 18.0 → sweep runs at the normal interval

This brings batch despawn in line with the other features (tick_throttle, ai_freeze), which already use the same TPS-gating pattern.

  1. Emergency override preserved

The forceNextSweep() flag (used by the Emergency Manager when TPS drops below emergency.tps_threshold, default 12.0) bypasses both the interval check and the new TPS gate. So even if you set batch_despawn.tps_threshold to something low like 14.0, an emergency at TPS 11 will still force an immediate sweep.

Files changed (mirrored on Fabric + NeoForge)

  • CobbleOptimizerConfig.kt — added tpsThreshold: Double = 18.0 to BatchDespawnConfig
  • BatchDespawnManager.kt — added TPS gate, removed log line, removed dead species-counting code
  • ConfigManager.kt — TOML parse/write, key list, and setValue support for the new field
  • ConfigValidator.kt — validates tps_threshold in range 1.0..20.0
  • gradle.properties — version bumped 4.3.2 → 4.3.3

How to tune

/cobbleoptimizer config set batch_despawn.tps_threshold 17.0 # stricter (only at 17 TPS) /cobbleoptimizer config set batch_despawn.tps_threshold 19.5 # more aggressive /cobbleoptimizer config set batch_despawn.tps_threshold 20.0 # effectively "always on" (old behavior)

The change is backwards-compatible: existing cobbleoptimizer.toml files without the new key fall back to the default 18.0 and the key is written on the next save.

CobblemonOptimizer 4.3.2

release2 мая 2026 г.

CobbleOptimizer 4.3.2 — Patch Notes

Fixed: ghost Pokémon after batch despawn

Sometimes when the mod cleaned up extra wild Pokémon to keep TPS healthy, you'd still see them standing around on your screen — they couldn't be interacted with, didn't move, and only disappeared after relogging or moving far away.

This happened because the server removed the Pokémon, but in some cases forgot to tell your client about it. Now the server sends an explicit "remove this entity" message to every player who could see the Pokémon, right at the moment it gets despawned. No more invisible-to-the-server ghosts cluttering your view.

Совместимость

Minecraft: Java Edition

26.1.x1.21.x

Платформы

Поддерживаемые окружения

Сервер

Детали

Лицензия:MIT
Опубликован:3 месяца назад
Обновлён:1 день назад
Главная