File Details
Iron's Botany 1.7.2 (Forge 1.20.1)
- R
- May 15, 2026
- 501.02 KB
- 1.2K
- 1.20.1
- Forge
File Name
ironsbotany-1.7.2.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
[1.7.2] - 2026-05-15
- Removed duplicate "Chronicle of the Green Mage 1st Edition" book.
1.7.1 left Patchouli's auto-generated
patchouli:guide_bookinstance alongside the IB-registeredironsbotany:botanical_grimoireitem, so the player saw two near-identical books. Added Botania-styledont_generate_book: true+custom_book_item: "ironsbotany:botanical_grimoire"tobook.json, suppressing the auto-spawn and binding the pre-existing IB item as the canonical book item.
[1.7.1] - 2026-05-15
Post-1.7.0 bug patch driven by launch-log analysis on the user's CurseForge instance plus two reported gameplay defects. Every issue resolved here was either blocking a feature shipped by 1.7.0 or visible in the log.
Critical fixes
- Patchouli book ("Chronicle of the Green Mage") now loads. 1.7.0 left
use_resource_packimplicitly false and kept all book content underdata/, but Patchouli 1.20+ removed that mode and now requires content underassets/. Setuse_resource_pack: trueinbook.json; moved all 27 content files (5 categories + 22 entries) fromdata/ironsbotany/patchouli_books/botanical_grimoire/en_us/toassets/ironsbotany/patchouli_books/botanical_grimoire/en_us/.BotanicalGrimoireItem.use()already called the right API; once the book loads, right-clicking the Chronicle now opens the book. - Spell scroll recipes (9 files) now craft. The earlier recipes used
irons_spellbooks:scroll_forgeas a recipe TYPE, but ISS 3.15.2's scroll_forge is only a BLOCK with hardcoded Java logic — there has never been a JSON recipe type by that name. Added a newIBSpellScrollRecipe(custom CustomRecipe) registered asironsbotany:ib_spell_scroll, taking an ink + focus ingredient pair and producing anirons_spellbooks:scrollcarrying anISpellContainerbound to the configured IB spell at level 1. Rewrote all 9 scroll recipe JSONs against the new schema. - Petal Apothecary recipes (3 files) now load.
spell_petal,botanical_focus, andbotanical_ringall omitted Botania's requiredreagentfield, so deserialization threw "Item cannot be null". Added"reagent": { "tag": "botania:seed_apothecary_reagent" }to each. - Runic Altar
botanical_grimoireand Elven Tradeorb_of_terran_mightnow load. They referencedirons_spellbooks:wisdom_orbandirons_spellbooks:upgrade_orb_legendary, neither of which exists in ISS 3.15.2. Swapped tominecraft:enchanted_bookandirons_spellbooks:nature_upgrade_orbrespectively. - Botanical Focus Siphon Mode is now actually toggleable. Curios was
intercepting every right-click in hand to auto-equip, so
Item.use()(the siphon toggle) never fired. OverrodecanEquipFromUse()to return true only when the player is sneaking; regular right-click passes through touse()and toggles siphon mode. Tooltip updated: "Right-click in hand to toggle Siphon Mode" + new line "Sneak + right-click to equip to Curios slot".
Polish
- Sounds.json now loads. All four IB sound events
(
mana_conversion,botanical_cast,flower_bloom,spark_summon) used vanilla path-style references (e.g.minecraft:block/beacon/power_select) that Minecraft tried to resolve as a file path. Switched to"type": "event"references with dotted event names. - Pool Attunement Charm now has a texture. 1.7.0 shipped the model
JSON but no PNG. Placeholder texture copied from
botanical_focus.png; a bespoke art pass is deferred to 1.7.2. mods.tomlForge update-check no longer fails. Removed theupdateJSONURLline; the old URL pointed at a GitHub releases page which returns HTML, not the JSON Forge expects.- Particle atlas added.
assets/ironsbotany/atlases/particles.jsonregisters a directory source for the existing 12 particle PNGs. May or may not silence the "Missing particle sprites" warning depending on atlas-build ordering; particle rendering itself was unaffected.
Not in scope (other-mod issues seen in the log)
- ISS shipping
minecraft:set_written_book_pages(a 1.21 loot function) in a 1.20.1 loot table — surfaces as a parse error forirons_spellbooks:chests/citadel/citadel_tomes. - ISS's
template_open_spell_book_modelmissing reference. - The
global_config.json"outside namespaced directory" warning fires from ISS scanning, with no IB file involved (confirmed).
[1.7.0] - 2026-05-14
A full stabilization, architecture, and integration release built end-to-end against the 1.7.0 audit. Five phases, each shipped as a discrete commit.
Phase 1 — Stabilization (P0)
- Aggregated Botania mana drain fixed —
ManaHelper.requestManaFromAllSourceswas returning true only when a single stack could satisfy the full request, so spells failed under split-mana setups. Replaced with a two-pass aggregated transaction that sums across all mana items, accessories, and (if enabled) nearby pools, then drains in the same order. Public API (hasBotaniaMana,drainBotaniaMana) is unchanged. - Casting channels registered —
CastingChannelRegistryhad three implementations and a lookup site inAbstractBotanicalSpell, but no call toregisterItemChannelanywhere. AddedCastingChannelRegistration(mirroringCatalystRegistration) wired from common setup, binding Livingwood/Dreamwood/TerraRod profiles to the corresponding IB items and Botania's Terra Truncator if present. - Progression flags wired to real gameplay —
UnifiedAdvancementSystemwas writingTIER4_UNLOCKED,DUAL_SCHOOL_UNLOCKED, andOVERCHARGE_UNLOCKEDto player NBT but nothing read them. AddedProgressionGatesreader-side helpers and wired:TIER4_UNLOCKED→ filters LEGENDARY-tier catalysts fromSpellCatalystRegistry.getActiveCatalysts.DUAL_SCHOOL_UNLOCKED→ required byAlfheimScrollCrafting.markAlfheimScroll; falls back to single-school when locked.OVERCHARGE_UNLOCKED→ +5% Nature spell damage at cast time, and required for binding the new Pool Attunement Charm.
IBRegistryHealthChecklogs catalyst/aura/channel counts after common setup. In dev environments, throws when any registry is empty; in production it warns.
Phase 2 — Architecture Cleanup
- Datagen pipeline scaffolded —
runDatarun config inbuild.gradleenabled; newdata/IBDataGeneratorsubscribes toGatherDataEvent.runDatarequires deobfuscated dependencies that the project ships as obfuscatedcompileOnlyjars, so the four GLM JSONs are hand-authored from the same Java provider source for 1.7.0. The provider class is retained for future regeneration once deobf coordinates are available. - Global Loot Modifiers replace
LootTableInjector— CustomAddPoolModifiercodec registered viaIBLootModifiers; six modifier JSONs underdata/ironsbotany/loot_modifiers/target the four vanilla chests (village houses ×3, mineshaft, stronghold library, end city). Pack authors can disable any specific injection by overriding the JSON;ENABLE_VANILLA_LOOT_INJECTIONremains the runtime master toggle. - NBT keys centralized —
ArmorSetBonusHandler.LAST_SHIELD_TIME_KEYmoved toDataKeys.MANA_SHIELD_COOLDOWN. All player-persistent NBT keys now flow throughDataKeys. - Custom attribute retired —
IBAttributes.MANA_EFFICIENCYhad zero consumers. Class deleted; corresponding lang key removed from all 23 locale files. - Cross-mod IDs moved to config — Three Botania advancement IDs
hardcoded in
UnifiedAdvancementSystemmigrated toProgressionConfig(server config). Pack authors can retarget gates when upstream renames an advancement; missing IDs warn at startup but never throw.
Phase 3 — Core Integration Enhancements
- Botania-native recipe paths — 17 new recipe JSONs across four
Botania recipe types replace 17 vanilla shaped/shapeless crafting JSONs:
- Petal Apothecary —
spell_petal,botanical_focus,botanical_ring. - Mana Infusion —
mana_infused_essence. - Runic Altar —
botanical_crystal,botanical_grimoire,mana_conduit,spell_reservoir,livingwood_staff, all fourmanasteel_wizard_*pieces. - Elven Trade —
dreamwood_scepter,gaia_spirit_wand,orb_of_terran_might. Entry-tier consumables (orb_of_flora/pool/bursting, all spell scrolls, bulk variants, rune_scroll_fusion) keep their vanilla crafting paths.
- Petal Apothecary —
NearbyManaPoolCache+NearbyIBBlockCache— Per-player cube-scan caches with 40-tick TTL and 4-block movement invalidation.ManaHelper. simulatePoolsand the client HUD proximity pulse both swapped from per-callBlockPos.betweenClosedwalks to cached lookups.BotanicalManaPaymentservice — Single static entry point centralises the fiveManaUnificationModebranches that previously lived inline inAbstractBotanicalSpell.onCast. Mana payment now flows through one authoritative path.
Phase 4 — Content Expansion
Audit-prescribed defaults: Runic Catalysis ON, Pool Attunement ON, Corporea Reagent Recall OFF, Elven Bloom Scrolls OFF.
- Runic Catalysis (tag-driven catalysts) — New
TemplatedCatalystEffecthandles modifier-only catalysts as a generic data class.CatalystDataLoader(SimpleJsonResourceReloadListener) loads fromdata/ironsbotany/catalysts/*.jsonon reload. Schema supports per-school filtering, four tiers, and five modifier multipliers. Existing Java catalyst classes remain for complex behaviours (mob effects, custom data, conditional damage); the JSON system is additive. - Pool Attunement Charm — New curio
ironsbotany:pool_attunement_charm. Right-click on a Mana Pool binds it (requiresOVERCHARGE_UNLOCKED). Worn charms supply Botania mana to Nature-school spells only, gated byPOOL_ATTUNEMENT_RANGE(default 64 blocks) andPOOL_ATTUNEMENT_BANDWIDTH(default 50,000 mana/cast). Wired intoBotanicalManaPaymentvia newManaHelper.{has,drain}BotaniaMana-with-bound-pool entry points; the Nature-only filter is implicit because no other caller reaches that path. - Corporea Reagent Recall (default OFF) —
ENABLE_CORPOREA_LOGISTICSflipped to false. Scope tightened inSpellCircleReagentSystem: now requiresAbstractBotanicalSpell.isRitualGrade()to return true. OnlyGaiaWrathSpellandManaRebirthSpellcurrently qualify. - Elven Bloom Scrolls (default OFF) — New
ENABLE_ELVEN_BLOOM_SCROLLSconfig plusDataKeys.ELVEN_BLOOM.ElvenBloomScrollHandlerlistens toPlayerEvent.ItemCraftedEvent: if a rune-enhanced scroll is crafted within 8 blocks of an Alfheim Portal block, the scroll's NBT is flagged.AbstractBotanicalSpell.onCastchecks main/offhand for the flag and applies +15% damage and -10% cooldown — a sidegrade endgame reward gated entirely behind real Botania late-game.
Phase 5 — Polish
- New Patchouli entries: Pool Attunement Charm, Runic Catalysis,
Elven Bloom Scrolls, Datapack Overview (
advanced_systems). - README and CurseForge description updated to mark each feature as default-on / default-off / experimental.
ENABLE_CORPOREA_LOGISTICSdefault flipped (see Phase 4.3).
Known limitations
./gradlew runDatacurrently fails becauselibs/ships obfuscated production jars (compileOnly). The hand-authored JSONs match the Java provider source bit-for-bit and are the source of truth until deobf coordinates land.SpellManaNetworkIntegrationremains mostly stubbed (only water-fill is functional) — audit-acknowledged, deferred to a future release.- ISS 3.15.2 upgrade-orb registry schema not independently verified against developer docs.
- JEI plugin not added — Rune-Scroll Fusion uses Forge's
CustomRecipewhich JEI auto-handles via the default crafting category; Elven Bloom Scrolls modify an existing recipe's output NBT rather than creating a separate recipe type, so no dedicated category is required.

