AtlasSpigot 26.2 - build 26 (16 patches + low-spec profile)
Rebuilt jar with six more patch groups — sixteen total (build 25 had thirteen) — plus a new low-spec profile for small machines.
New patches
All on per-tick or per-spawn paths:
EntityInsideBlockEventacross 24 byte-identical sites — bubble columns, cobwebs, berry bushes, fire, portals, pressure plates. Each built aCraftBlockand an event every tick an entity stays inside one.EntityEffectTickEvent— fires on every effect application tick for every entity carrying an effect, building a CraftEntity handle and converting the potion type each time.ServerTickStartEvent/ServerTickEndEvent— two allocations every tick, forever.PreCreatureSpawnEvent,PreSpawnerSpawnEvent,PhantomPreSpawnEvent— two or three Craft conversions plus an event per spawn attempt.
Worth noting: Leaf already guards the hottest PreCreatureSpawnEvent site itself, in NaturalSpawner, with the comment "Skip PreCreatureSpawnEvent if no listeners." Upstream arriving at the same technique independently is decent evidence the pattern is sound. These are the sites they didn't cover.
New: AtlasSpigot-26.2-lowspec.zip
A complete config set for roughly 3GB RAM, an older CPU already near 100% thread usage, ~10GB disk, and a heavy plugin count.
It isn't the main config nudged — it trades visible world and mob density for tick time throughout: view-distance 3, simulation-distance 2, entity broadcast 25%, monster cap 15, activation ranges 8–12, monsters despawning at 16/32, chunk load and send rates capped, max-joins-per-tick back to 1, saving spread thinner with sync-chunk-writes=false.
Two deliberate differences from the main config:
hopper.disable-move-event is OFF in the low-spec profile. It's the biggest single win available, but it stops InventoryMoveItemEvent firing — and on a 45-plugin server the odds something depends on it are high. A fast server that breaks your shop isn't faster.
The heap is 1600M, not 3G. Metaspace (which grows with plugin count), thread stacks, Netty direct buffers and the JIT code cache all live outside the heap. -Xmx3G on a 3GB box gives you a server the kernel kills, not a bigger one. G1HeapRegionSize drops to 4M so G1 still gets a sensible region count at that size.
density-function-compiler appeared as a new setting and looks made for a CPU-bound machine — it compiles worldgen density functions to JVM bytecode. It stays off: Leaf marks the module @Experimental, which is a hard no here regardless of how good the win looks.
Verified
Main config: boots clean, zero errors. Low-spec profile: boots at 1600M in 29.9s with zero errors, and every changed file returns byte-identical after the server writes it.
Not measured
No performance figures are claimed. 26.2 was benchmarked against Paper and the result was too noisy to publish — see results-26.2.txt. The low-spec profile is built from settings whose behaviour is understood and documented, not from a measured result on your hardware.