Repository navigation
Occult
Minecraft 1.20.1 / Forge: this page documents that build and its measurements. For the separate 205-control Minecraft 1.21.1 port, see Minecraft 1.21.1 NeoForge.
One control for Occult 1.0.0 Alpha 5 (mod id occult): its bed scan runs only on the server and only in loaded chunks, and draws its 1-in-1000 roll before it reads any block. This deliberately changes when the work happens; the section explains it. The switch checks the code it would change against the tested build; another build is left untouched with one WARN line (see How the patches are applied).
| Key | Target | Side | Since | Kind | Result |
|---|---|---|---|---|---|
occult_bed_scan_guard |
Occult 1.0.0 (Alpha 5) | BOTH | 1.0.2 (1.0.10) | change | 3,071 → ~3 block reads per player tick |
Since: 1.0.2, server path revised in 1.0.10 · Kind: deliberate behaviour change · Script (1.0.19 and earlier): bons_and_furious-TendrilsBedProcedure.js
Patched: occult.procedures.TendrilsBedProcedure.execute (Occult 1.0.0 Alpha 5)
Mixin (since 1.0.20): TendrilsBedProcedureMixin
What upstream did. On every player tick, on the client as well as the server, the procedure scanned the 3,071 positions of a 19×19×19 sphere around the player and read each block through LevelAccessor.getBlockState. On the server that read loads, and if necessary generates, any chunk that is not ready, so a player standing next to unfinished terrain parked the server thread until the chunk had been generated. A normal-play spark caught the server path parked in chunk generation for 152 s of a 12.8-minute profile (100 % of one minute, 92 % of the next).
What the patch does.
- Since 1.0.2: returns before the scan unless the level is a
ServerLevel(the client scan was pure waste), and references vanilla'sminecraft:bedstag directly instead of allocating a tag identifier per position. - Since 1.0.10: takes the procedure's independent
Math.random() < 0.001draw before reading anything, and reads the block throughServerChunkCache.getChunkNow, skipping a position whose chunk is not already loaded instead of loading or generating it.
What stays the same. A position still spawns Tendrils when it holds a bed, its block light is 6 or less and its 1-in-1,000 draw succeeds, with the same spawn reason, position and zero motion, so the chance per dark bed block per tick is unchanged; tag membership still follows reloads.
Deliberate differences (1.0.10). Math.random() is drawn for every position of the sphere (about 3,071 draws per player tick instead of one per dark bed block; Math.random is the JVM-wide generator, not a world or entity random, so nothing else's sequence changes), and a position in a chunk that is not loaded is skipped for that tick instead of forcing the chunk to load.
Measured. 1.0.2: removes all 3,071 block reads per client invocation; across 96 server scenarios the original and patched code produced identical ordered queries, spawns, RNG draws and motion (579 assertions). 1.0.10: server block reads fall from 3,071 to about 3 per player tick, and no chunk is ever loaded by the scan.
Bons and Furious is licensed GPL-3.0-only with upstream notices retained. Target mod names identify compatibility targets and do not imply endorsement; their code, assets and licenses remain their authors' property. All measurements on this wiki are focused method, phase or reproduction measurements from the pack the mod was built for, taken on the historical build named in each entry; they are not whole-game FPS or TPS promises and are not additive.
Bons and Furious
Minecraft 1.20.1 / Forge 1.0.38
- Home
- Installation and configuration
- How the patches are applied
- All controls
- Measurements and caveats
- Whole-modpack benchmark
- Troubleshooting and log messages
- Generation context fixes
- Version history
Compatibility
- Compatibility
- Known conflicts and workarounds
- Tested mod list
- Redundant mods
- Compatibility and target versions
Controls by mod
- Minecraft (69)
- Forge (7)
- Ad Astra (1)
- Alex's Caves (5)
- Alex's Mobs (3)
- Almost Unified (1)
- AmbientSounds (3)
- Aquaculture (1)
- Architectury API (1)
- Ars Nouveau (2)
- Artifacts (1)
- Better Combat (1)
- Bosses of Mass Destruction (1)
- Butterflies (1)
- ChunkSending (1)
- CIT Reforged (1)
- Citadel (2)
- CoFH Core (1)
- Colorwheel (1)
- Cooking for Blockheads (1)
- Create (4)
- Critters and Companions (1)
- Cryptic Foes (2)
- Cucumber (1)
- Curios API (6)
- Distant Horizons (19)
- Dungeons Delight (1)
- Dynamic Trees (2)
- ElysiumAPI (1)
- Embeddium (14)
- Entity Model Features (7)
- Entity Texture Features (1)
- EntityCulling (1)
- FancyMenu (1)
- Farmer's Delight (2)
- FD Bosses (2)
- Fowl Play (2)
- Fusion (2)
- GeckoLib (5)
- Goblins Tyranny (2)
- Hostile Villages (2)
- Ice and Fire (6)
- ImmediatelyFast (3)
- Immersive Engineering (1)
- Jaden's Nether Expansion (2)
- JEI (7)
- Kiwi (1)
- L2 Library (2)
- L_Ender's Cataclysm (12)
- Legendary Monsters (1)
- Lionfish API (4)
- Mekanism (2)
- ModernFix (4)
- Mowzie's Mobs (1)
- Mutant Monsters (1)
- Nether Depths Upgrade (1)
- Occult (1)
- Oculus (14)
- Oh The Biomes We've Gone (1)
- Particular (1)
- Pehkui (1)
- Pipez (2)
- Placebo (1)
- Presence Footsteps (1)
- Radium Re-Reforged (8)
- Rats (1)
- Regions Unexplored (1)
- Relics (2)
- Ribbits (1)
- Ryoamic Lights (2)
- Sake's Structures (1)
- Scorched (1)
- Scuba Gear (1)
- Simply Swords (1)
- SlashBlade: Resharped (1)
- Slice & Dice (1)
- Spawn (4)
- Storage Drawers (2)
- Structure Gel API (1)
- Structurify (3)
- TaCZ (3)
- TerraBlender (2)
- Terramity (1)
- Under the Moon (1)
- Valkyrien Skies (15)
- XercaPaint (1)
- Trackwork model repair
- Living Engineering (moved out in 1.0.20)
Links