Files
logan 611a1a5952 docs: client-perf analysis, bench harness and work journal
Everything the next agent needs to run the Phase 2 optimisation loop on a
machine that can launch the client:

- analysis/client-perf/: LEVERS (ranked levers + corrections), BENCH-MATRIX
  (world, scenes, config IDs, blocks B0-B14 with decision rules),
  PLAYER-TUNING, SPAWN-TUNING, research briefs, the jar scanner and its
  output, observed default configs, and proposed-configs/ (build.py
  generates tiers and bench variants and fails on unknown keys;
  apply_variant.py applies a variant and merges options.txt).
- analysis/client-perf/bench/onion-bench/: bench-world datapack (scene
  teleports, Create grid, mob pen, sound storm, 120 s teleport tour).
- analysis/audit/: the static recipe/dependency audit, including gen_fixes.py,
  which generates the shipped Paxi datapack and was never tracked.
- phase0/: per-machine measurement harness (Steam Deck, 7700K/1060,
  6700K/1080 Ti).
- .pi/journal.md: running work log; read it first.

All of it is packwizignored, so nothing here ships to players.
2026-10-14 18:15:32 -04:00

21 KiB
Raw Permalink Blame History

Research: Client-side performance sweep — content/mob mods (Onion MC, 1.21.1 / NeoForge 21.1.251)

Scope: client-side only (frame time, client tick, RAM/VRAM, startup). All pinned versions are 1.21.1 NeoForge. Every claim is tagged VERIFIED (primary source directly states it), DOCUMENTED (official changelog/wiki/README), COMMUNITY (user reports, issue trackers, forums), or INFERENCE (my reasoning from the sources).

Summary

The content/mob mods are individually cheap, but the stack has three real client-side risk patterns: (1) entity-count inflation — Alex's Mobs (unofficial port), Fowlplay and Critters and Companions all have open reports of over-spawning, which directly increases client render + tick work; (2) animation cost multipliers — Fresh Animations / EMF-ETF make every animated modded mob far more expensive to render, and EMF has a documented blow-up with many mobs on screen; (3) a handful of specific offenders (Ars Nouveau brand-new mirrorweave/SkyWeave rendering, Apotheosis loot beams, Citadel entity tracking) that are either already fixed in the pinned versions or have config levers. Most mods in this list have no known client perf issues at all.


Per-mod table

Legend for cost type: frame = render-thread cost; c-tick = client tick; RAM/VRAM; startup; none-known.

Mod (pinned) What it does Client cost type Known perf issues (URL + fixed?) Perf-relevant config levers (exact keys only if seen) Judgement
Alex's Mobs unofficial port 1.22.17 85+ animated new mobs frame, c-tick, RAM (models/textures) • Raguto port #62 "tons of monsters constantly spawn when mod is enabled" ramps up vanilla monster spawns → more entities to render — OPEN on 1.21.1 (#62) COMMUNITY
• Original mod reputation: "notoriously bad for performance… noticeable increase in lag caused by all the spawning" (Reddit) COMMUNITY
• Over-spawning lobsters/catfish/flyfish/terrapins breaking beds/boats (SteamPunk #83) COMMUNITY
• Fabric port: vertex explosions/tearing with Sodium+Iris shaders, all shaderpacks (Alexs-Mobs-Fabric #121, Sep 2026, OPEN, Fabric build not our port) COMMUNITY
• Leafcutter-ant tick lag was server-side TPS (#382)
Per-mob spawn probability lives in the alexsmobs config folder (Fandom Configuration page, per-mob spawn probabilities) DOCUMENTED — exact keys not read (page returned 403). tune — keep, but cap spawn rates
Citadel port 2.7.6 (Alex's Mobs lib) Shared models/AI/entity-data library frame, RAM • "Alex's Mobs X Citadel: Slow Chunk loading" — chunk-generation lag; user reports setting Citadel's track entities option to false helped slightly (Citadel #156, closed "completed" 2025-06-25, still reported persisting Dec 2024) COMMUNITY
• Historic memory leak 609 MB (registeredEntityData / WeakIdentityHashMap), 1.16.3, (Citadel #12) — very old, assumed long fixed COMMUNITY
Issue cites citadel-common.toml entity-tracking toggle (exact key not verified — do not invent) keep
Mowzie's Mobs 1.8.2 Boss-tier animated enemies (GeckoLib) frame • #30 "Performance issues, outdated file structures" on 1.21.1 / NeoForge 21.1.219 / MM 1.8.1 — spark showed mowziesmobs structure processing; owner: "I believe I have fixed the issue… next mod patch" (#30, closed 2026-03-13); our 1.8.2 presumably contains it INFERENCE
• Elokosa leap checks tick cost (#38, #59) — server/tick side COMMUNITY
• Old Frostmaw FPS drop (Crackpack-3 #101, 1.12-era) COMMUNITY
none known keep
Adorable Hamster Pets 3.7.0 Tiny animated pet hamsters (genetics/NBT heavy) frame, c-tick, RAM/NBT • 3.6.1 changelog: "Resolved… pathfinding and AI issues where tamed hamsters following the player would sometimes experience server-tick lag spikes… with a lot of hamsters [following] at once" — fixed in 3.6.1, therefore present in 3.7.0 DOCUMENTED (Modrinth)
• 3.6.0: moved genome tracking to IntArray NBT "without lagging the player entity" DOCUMENTED
"Wander Mode" radius; a config fallback for auto-guidebook delivery (changelogs) — exact keys not read keep
Doggy Talents Next 1.19.1 Skill-tree/accessory overhaul of vanilla wolves frame (custom dog models/skins) No dedicated client-FPS issue found. Related: CarryOn #684 progressive instability/stall (CarryOn #684) COMMUNITY. Wiki: creative dog beds "randomly generated to a certain limit… to avoid performance issues" (FAQ) DOCUMENTED Skin enable/disable per client (CurseForge file notes) DOCUMENTED keep
Better Dogs X DTN 1.2.2 Replaces DTN dog models/skins frame (slightly heavier models) No perf issue found (Modrinth) none known keep
Icy's Better Horses 2.1.0.1 Horse AI/progression/traversal tweaks none-known No perf issue. One client crash with another mod (#31, Fabric 1.20.1, fixed in next jar) — not perf (#31) COMMUNITY none known keep
Friends&Foes 4.0.27 Mob-vote mobs (Copper Golem, Crab, Glare, Moobloom, Iceologer, Rascal, Tuff Golem, Wildfire…) + structures frame (few new mobs), worldgen No known client perf issues found. Tracked issues are crashes/compat (e.g. startup MixinExtrasBootstrap crash #418) COMMUNITY YACL-based config exists (mod requires YetAnotherConfigLib — Modrinth dependency listing) DOCUMENTED; no perf keys read keep
Flowery Mooblooms (F&F addon) One moobloom variant per flower frame (variant count) No perf issue found (repo) none known keep
Critters and Companions Vanilla-style animals (otters, dragonflies, ferrets…) frame + entity count, c-tick • #91: lag from otters/dragonflies; no config file; "dragonflies… fly out of range and become unloaded… chunks full to the gills with dragonflies". Dev: dragonfly spawn weight reduced + Fabric config / Forge datapack override added, Jul 2025 (#91, closed) COMMUNITY
• Community: "always made servers… laggy… loading new chunks cause a lot of stuttering and CPU usage" (Reddit) COMMUNITY
No TOML keys; spawns are data-file driven → override via datapack (dev statement in #91) tune via datapack, else candidate-remove
Fowlplay 1.2.3 Birds with realistic flight, natural spawning c-tick, frame (entity count), RAM • #214 ducks/birds spawn non-stop near rivers/oceans; F3 spawn cap "right under 400"; "almost 200 birds sitting in a single area" even after minimising group spawns — OPEN, 1.21.1 NeoForge (#214) COMMUNITY
• #196 BirdEntity/GullEntity recalculate paths every tick (PathFinder.findPath() per tick) — server-side but scales badly (#196, open, 1.20.1 Forge) COMMUNITY
• #213 hawk AI crash with c2me async chunkloading (#213) COMMUNITY
Custom mob category; group-spawn settings exist (referenced in #214); no TOML keys read tune (spawns) or candidate-remove if bird spam appears
Wings of Fire 1.0 6 phoenix breeds as summoned mounts frame (only while summoned) No known client perf issues found (Modrinth) DOCUMENTED none known keep
Tiny Dragons (rpg_companions_tiny_dragons) Tameable tiny dragon companions frame No known client perf issues found. MCreator-generated mod (MCreator page) — MCreator mods are typically less optimised INFERENCE none known keep (low priority)
Mermod 3.3.2 Necklace → mermaid transformation/tail rendering frame (player model when transformed) No known client perf issues found — GitHub issue search for lag OR fps OR performance OR memory returned 0 results (issues) VERIFIED none known keep
Artifacts 13.2.5 Curio-slot utility trinkets none-known (light client-tick) No known client perf issues found. Old spawn-rate complaint about Mimics (#3) COMMUNITY none known keep
Ars Nouveau 5.13.1 Magic/spell system; client-side spell entities, particles, own skybox-style shaders frame (particles/projectiles/shader blocks), c-tick, RAM • SkyWeave/mirrorweave FPS drops (77→19 fps) — fixed by commit 640db2d / PR #1714, Mar 2025 (#1221) → already fixed in 5.13.1 (fix predates 5.9.1) VERIFIED
• Agronomic Sourcelink + AE2 growth acceleration spawns excessive visual entities → client <20 fps (#1904, 5.9.1, closed 2026-06-08) COMMUNITY
• Storage Lectern massive client lag sorting 500+ Apotheosis-affixed items (#1274, 1.19.2/3.23.0) COMMUNITY
• Planarium + Mekanism pipes → 1 fps (#2108) COMMUNITY
• Sylph particle spawner FPS tank (Optifine-era, fixed) (#379) COMMUNITY
• A widely-reported "Ars projectiles drop FPS" case was traced to Xaero's Minimap (Reddit) COMMUNITY
• Maintainer notes block-entity lookalike blocks (mirrorweave) "will always be more laggy than a normal static block"; recommends EntityCulling (#1221 comment) VERIFIED
none verified for particle budget keep; watch the storage-lectern/automation entity-spam cases
Apotheosis 8.8.0 Affix items, gems, bosses/elites, loot beams frame (loot-beam effects, boss glow), RAM • #1191 perf issue (ShieldBreaker repeated capability comparisons) — fixed in 7.3.2 (cf0e2e8), so not present in 8.8.0 (#1191, changelog 7.3.2) DOCUMENTED
• Boss glow is cheap (glow duration 2 min, 20 s boss cooldown) DOCUMENTED
• Affix loot-beam in-world effects were added in 8.3.0 and are render-thread cost DOCUMENTED
Changelog 8.3.0: "These loot effects can be disabled in the config file" (exact key not read) keep; disable loot beams if chasing frame time
Too Many Bows ~38 bows with unique projectile effects frame (only when firing) No known client perf issues found. v2.1.0 changelog: "Updates: Logic and performance of bows" (CurseForge file) DOCUMENTED /tmb reload bows for registered bow settings (wiki) DOCUMENTED keep
Dungeon's Delight 1.5.1 Farmer's Delight addon — cook/eat monsters none-known No known client perf issues found. 1.5.1 changelog is a compatibility/one-bug fix for FD 1.3.4 (Modrinth 1.5.1) DOCUMENTED. The task's "29 vanilla mixins" claim could not be verified — no source read (UNVERIFIED) none known keep
Fisherman's Haven Fishing overhaul (rods, traps, bait, custom mobs, deco) none-known No known client perf issues found (Modrinth) none known keep
Aquaculture 2 Fishing expansion (30+ fish, rods) none-known • Loot-table calc lag (#113) was server-side, fixed in Aquaculture 2.1.0 for MC 1.16.3 — long since fixed, not applicable to your 1.21.1 build (#113) DOCUMENTED
• Optifine bobber-render crash (Optifine #3538) — irrelevant on Sodium COMMUNITY
none known keep

Cross-cutting (apply to the whole content/mob set)

  • Fresh Animations + EMF/ETF is the single biggest animation multiplier. EMF alone is not the problem, but stacking Fresh Animations with many mobs on screen is: a benchmarked case went 165→40 fps (30 mobs, shaders on) and 400+→30-40 fps with 50 cows (EMF #443) COMMUNITY. Maintainer: "you aren't going to be easily pushing past 200 fps with Fresh Animations on ever". Mitigation is config, not removal: EMF added an "Animation LOD distance" setting (skips animation frames beyond a distance) and a "Retain LOD at low fps" setting (EMF changelog 1.3) DOCUMENTED. Every animated content mod below multiplies this cost, so the animation settings should be tuned before removing content mods.
  • Entity-count inflation is the recurring theme. Alex's Mobs port (#62), Fowlplay (#214) and Critters and Companions (#91) all have open/community over-spawn reports on or near 1.21.1. More entities = more render-list entries, more client-tick AI interpolation, more packet traffic. This is arguably the highest-leverage fix for the fleet, and it is all server-side spawn tuning rather than mod removal.
  • EntityCulling is recommended by Ars Nouveau's author for the mirrorweave/SkyWeave block-entity case specifically (#1221) — you already ship EntityCulling 1.11.2, so that's covered VERIFIED.
  • Sodium/Iris + animated modded mobs is a known fragile combination. Aside from the Fabric Alex's Mobs vertex-explosion report (#121), the EMF #443 reports are all on the Sodium/Iris/Embeddium/Oculus stack. Worth a visual + frame-time check with shaders on vs off once benchmarking starts COMMUNITY.
  • Most mods in this sweep are clean. Mermod, Wings of Fire, Tiny Dragons, Icy's Better Horses, Friends&Foes (+Flowery Mooblooms), Artifacts, Doggy Talents Next, Better Dogs, Too Many Bows, Dungeon's Delight, Fisherman's Haven, Aquaculture 2 have no known client perf issues found relevant to the pinned versions.

Notable (the 3–5 that matter most)

  1. Alex's Mobs unofficial port is the top entity-count risk. Raguto's 1.21.1 port has an open issue that it "ramps up vanilla monster spawn rates like crazy" (#62), on top of the mod's long-standing over-spawning reputation and Citadel's chunk-loading lag (Citadel #156). This is a tune-spawns lever, and per-mob spawn probabilities are exposed in the alexsmobs config folder (DOCUMENTED via Fandom Configuration, not read directly).
  2. Fowlplay's bird spawning is un-bounded in practice. #214 (open, 1.21.1 NeoForge) reports up to ~400 birds / ~200 in one area even after reducing group spawns, and #196 shows flight entities recompute pathfinding every tick. Even though the tick cost is server-side, hundreds of visible birds is a direct client frame + RAM cost, and this is the mod most likely to need spawn tuning or removal.
  3. Fresh Animations + EMF with many mobs is the largest measured FPS multiplier. EMF #443 shows 4–8× FPS loss with 30–50 mobs on screen on the Sodium/Iris stack. Fixing this (EMF "Animation LOD distance" / "Retain LOD at low fps") is cheaper than removing content mods, and it compounds with every animated mob mod above.
  4. Ars Nouveau is mostly fine at 5.13.1, but has two known client hitches. The mirrorweave/SkyWeave rendering FPS bug is already fixed (PR #1714, Mar 2025, well before 5.13.1), but the Storage Lectern sorting Apotheosis-affixed items (#1274, large client lag) and Agronomic Sourcelink entity spam (#1904, <20 fps) remain behaviour that a busy server can hit. Note it also flags EntityCulling as the mitigation — which you already run.
  5. Critters and Companions has no config file — spawns are data-file driven, so the only lever is a datapack override (#91). If chunk-loading stutter or dragonfly pile-ups show up in profiling, that's the fix (or removal), not a TOML tweak.

Sources

Kept:

Dropped:

  • SteamPunk #83, Reddit r/feedthebeast Alex's Mobs threads — used only as corroboration for the over-spawn theme; individual player reports not weighted as fact.
  • AlexsCaves #168 / #616 (Ray Cat FPS drop) — different mod (Alex's Caves), not in this pack.
  • Optifine #3538 (Aquaculture bobber) — Optifine-specific, not applicable to Sodium.
  • Crackpack-3 #101 (Frostmaw FPS) — 1.12-era, not applicable to 1.21.1.
  • Various "performance mods" listicles/SEO pages — no primary evidence.
  • Alex's Mobs Fandom Configuration page — returned HTTP 403; could not read exact config keys.