Repository navigation
Fowl Play
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.
Two controls for Fowl Play 1.1.2+1.20.1-forge (mod id fowlplay): flocking headings are computed in primitive arithmetic, and birds only pick flight targets in chunks that are already loaded. The second one deliberately changes behaviour (a bird retries later instead of loading a chunk); its section explains it. Every 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 |
|---|---|---|---|---|---|
fowlplay_air_targets_loaded_only |
Fowl Play 1.1.2+1.20.1-forge | BOTH | 1.0.13 | change | 3,394 → 18.8 µs per target search |
fowlplay_flock_vectors |
Fowl Play 1.1.2+1.20.1-forge | BOTH | 1.0.1 | opt | 94–99 % less allocation per heading |
Since: 1.0.1 · Scripts (1.0.19 and earlier): bons_and_furious-GuidedFlocking.js, bons_and_furious-LeaderlessFlocking.js
Patched: aqario.fowlplay.common.entity.ai.brain.behaviour.GuidedFlocking.getHeading and LeaderlessFlocking.getHeading
Mixins (since 1.0.20): GuidedFlockingMixin, LeaderlessFlockingMixin
What upstream did. Both flocking behaviours accumulated a bird's heading through chains of temporary Vec3 objects, several per neighbour, every AI tick.
What the patch does. Accumulates the same arithmetic in primitive doubles, preserving the negate-then-add order, the float reciprocals, the square-root comparison, the getter calls and the six random draws.
What stays the same. AI scheduling, flock caps, spawn settings and every returned heading: all 14,000 headings, 42,000 raw double components and 14,000 subsequent RNG states matched the original bytecode.
Measured. 680–6,680 → 40 B per heading for 7, 24 and 64 neighbours (94–99 % less allocation).
Since: 1.0.13 · Kind: deliberate behaviour change · Script (1.0.19 and earlier): furious13-fowlplay.js
Patched: aqario.fowlplay.common.util.TargetingUtil (the flight-target search tryFindAir)
Mixin (since 1.0.20): TargetingUtilMixin
What upstream did. A flying bird picking a random flight target read the target column (height map plus three block checks) with chunk loading. A target outside the loaded area therefore stalled the server thread until that chunk had been generated. In the normal-play spark that motivated this, birds were 8.7 % of the server thread and 4.6 % of it was waiting on chunk generation.
What the patch does. A target whose chunk is not already loaded is treated as unusable, so the bird simply retries later. Only the flight-target search changed; the water, ground, perch and non-air searches share the pattern but were not measured as a problem and are unchanged. The patch inserts instructions rather than rewriting the method, so Fowl Play's lambdas are untouched.
Deliberate difference. Birds no longer choose flight targets in unloaded chunks. In practice they stay within the loaded area around players, which is where they could be seen anyway.
Measured (full-pack world A/B). 3,394 → 18.8 µs per target search; 400 searches loaded 29 → 0 chunks.
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