bte_optimization_fixes-1.28.0.jar
Curse Maven Snippet
What's new
Add playbench gameplay benchmark and cut per-tick costs found with it
/bteopt playbench [seconds] runs a repeatable gameplay test meant for a new
world with a fixed seed, run right after spawning in the Lobby. Five phases
with the player standing still and always facing the same way: lobby,
Overworld at noon and at midnight from the first dry land around
(1000, 1000), a fixed mob horde there (config/bteopt_playbench_mobs.txt)
and the Nether from (300, 300). Each phase waits for the surrounding
chunks, settles 10 s and measures server tick times, client frame times and
FPS (mean, p95/p99, 1% low), GC passes and time, peak heap, entities, nearby
mobs and loaded chunks. Daylight and weather cycles and mob griefing are
off during the run. The player stays in survival so mobs still attack it,
but is invulnerable, has its attacks and death cancelled, and gets its
test effects re-applied every second (BTE Mobs removes Resistance when
leaving the Lobby). The sampling profiler also records the render thread,
tagging each sample with its phase. Writes logs/bteopt_playbench_<date>.txt
and restores game rules, time, game mode, abilities, position and effects.
Debug tool only.
Fixes for what it found (server tick, same results as before):
- Dynamic Trees: BasicBranchBlock.getShape rebuilt the branch shape with
Shapes.or on every entity collision (~7% of the tick, plus ~4% in
Lithium merging it). BranchShapeCacheMixin reuses the shape for each
combination of branch radius and side connection radii.
- Dungeons Gear: the leg enchantments (Chilling, Gravity Pulse, Snowball,
Melee Aura, Burning, Life Steal Aura, Speed Aura) looked up their level
on every living entity every tick; they are skipped for entities with
nothing equipped, where the level is always 0. Cowardice is untouched.
- Dragon Enchants: same for its 4 tick enchantments.
- Mutant More: mutationCloudForMob searched for mutation clouds around every
living entity every tick and frame; MutationCloudTracker tracks the
clouds per level and the search is skipped when there are none.
Playbench, same settings, before -> after: Overworld 12.7-12.9 -> 8.5-9.2
ms per tick, horde 10.9 -> 7.5, Nether 13.7 -> 10.4, Lobby 8.9 -> 4.6.
This mod has no additional files

