Ice and Fire - Ultimate Optimization  (Minecraft 1.21.1 / NeoForge build)
Copyright (C) 2026 anderlyer

This mod is a derivative work of Ice And Fire Community Edition. It alters Ice And Fire's own
classes at load time through SpongePowered Mixin. No Ice And Fire code, assets, textures, data or
other files are copied into this jar: the jar contains only this mod's own classes plus its
resources, and the injections are applied by the Mixin runtime to the Ice And Fire classes the
player already has installed.


Upstream work
=============

Ice And Fire Community Edition
  https://github.com/IAFEnvoy/IceAndFire-CE
  Copyright (C) 2024 IAFEnvoy
  Licensed under the GNU Lesser General Public License, Version 3 (LGPL-3.0).

  Verified rather than assumed: the LICENSE file at the root of the IceAndFire-CE repository is
  the GNU Lesser General Public License, Version 3 text, and the mod's own META-INF/neoforge.mods.toml
  declares license = "LGPL-3.0". The declaration and the file agree.

  Ice And Fire Community Edition describes itself as "an unofficial fork of Ice And Fire" that
  "contains optimizations, new content and rewrites". Its package root is com.iafenvoy.iceandfire,
  which is why no injection point from the 1.20.1 build of this mod carries over verbatim: the
  1.21.1 line is a different codebase with a different package layout. Every injection in this
  build was re-derived from the 1.21.1 bytecode.

  (The original Ice And Fire by AlexModGuy / Alexthe666 is also LGPL-3.0. The Community Edition
  notes in its readme that it keeps "all the things from original mod except myrmex series".)


Runtime dependencies, not touched
=================================

Ice And Fire Community Edition requires Uranus, Jupiter and Geckolib at runtime. This mod's code
does not reference any class outside com.iafenvoy.iceandfire.*, and injects into none of them.
They are named here only because the mod metadata lists Ice And Fire as a dependency, which in
turn pulls them in.


Why this mod is distributed under GPL-3.0
=========================================

LGPL-3.0 section 2(b) allows a modified version of the Library to be conveyed "under the GNU
GPL, with none of the additional permissions of this License applicable to that copy".

Because this mod injects into Ice And Fire's classes, it is a modified version of that Library
rather than an independent Application using the Library's interface. It is therefore conveyed
here under the GNU General Public License, version 3. The full text is in the LICENSE file
beside this one.


What this mod changes (1.21.1 build)
====================================

Every change is a throttle, a de-duplication, or a cache in front of work Ice And Fire already
does; none of them adds, removes or reworks content. Each is an independent switch in
config/iceandfireultimateoptimization-common.toml and every switch restores stock behaviour exactly.

  Dragon Forge
    DragonForgeInputBlockEntity.lureDragons     - 100x100x100 entity scan, throttled to an interval
    DragonForgeBlockEntity.assembled            - four multiblock walks per tick, de-duplicated

  Dragon breath
    IafDragonDestructionManager.destroyAreaBreath  - optional per-tick ceiling (off by default)

  Dragon flight
    DragonUtils.getBlockInView                  - wander target cached for a few ticks
    DragonUtils.getWaterBlockInView            - wander target cached for a few ticks

  Creature AI
    DragonAIMateGoal.getNearbyMate             - 180-block inflated entity query, cached
    HippogryphAIMateGoal.getNearbyMate         - 8-block inflated entity query, cached
    DeathWormAIFindSandTargetGoal.findSandTarget - up to 51x51x51 block scan, cached
    SirenAIFindWaterTargetGoal.findWaterTarget - 11x11x11 block scan, cached
    CockatriceEntity.getFriendsCount           - entity query per tick, throttled
    MultipartPartEntity.collideWithNearbyEntities - AABB + entity query + stream, throttled


Differences from the 1.20.1 build of this mod
=============================================

Six optimizations in the 1.20.1 build have no target here and were dropped rather than ported:

  Pathfinding thread pool   The raycoms pathfinding system the 1.20.1 build patched is absent
                            from the 1.21.1 line; nothing in entity/** submits to a thread pool.
  Myrmex (four of them)     The Myrmex series is not present in the Community Edition.
  Mob-griefing cache        Upstream itself changed ForgeEventFactory.getMobGriefingEvent to a
                            single GameRules read per call, so the lookup this cache existed to
                            de-duplicate no longer happens per block. Nothing left to fix.

Only DragonUtils.getWaterBlockInView was re-checked by hand: the 1.20.1 build cached it because
it was a ten-iteration loop, and the 1.21.1 bytecode still contains four backward jumps, so the
cache is kept.
