Skip to content

BloodMagic ​

34 merged pull requests.

New Features ​

  • #143 Updated ShapedBloodOrbRecipe and ShapelessBloodOrbRecipe to accept int values for orb levels. Migrated existing recipes in AlchemicalWizardry and ItemIncense to use integers. Updated Gradle daemon JVM settings. - @koolkrafter5
    • Added: Integer orb level support in crafting recipes
  • #133 Updated dependencies to include EID support, modified AlchemicalWizardry.java to initialize EID integration, and enhanced NewPacketHandler and RitualEffectBiomeChanger for EID tooltip registration. - @tiffit
    • Added: EID mod dependency, EID tooltip integration
  • #125 Added GT ore detection support to RitualEffectMagnetic.java; updated Gradle daemon configuration and wrapper. - @SHARKY-au
    • Added: GT ore support in Ritual of Magnetism
  • #124 Enhanced ItemAttunedCrystal and ItemDestinationClearer with additional UI controls, added BlockReagentConduit support, and updated TEReagentConduit logic with new interaction modes. - @ReignOfFROZE
    • Added: reset/clear controls for router attuning, improved pairing management, new item descriptions
  • #115 Bound Pickaxe now calls getDropsFortune() on GT ores to properly calculate fortune-based drops. Added GTNHLib as direct dependency and bumped GT version for getDropsFortune() method support. - @Miklebe
    • Added: Fortune support for GT ores
  • #112 Modified recipe definitions in AlchemicalWizardry.java to use ShapedOrbRecipe format instead of hardcoded tier checks. - @koolkrafter5
    • Added: Shaped Orb Recipe support
  • #109 Modified BlockAlchemicCalcinator and TEAlchemicCalcinator to add input validation, orb binding, and stack-based inventory interaction. - @koolkrafter5
    • Added: automatic blood orb binding on placement, slot-specific item validation, full stack extraction from player hand

New Content ​

  • #104 Created IMCForNEI.java handler to register NEI information pages and added English localizations for documented mechanics. - @koolkrafter5
    • Added: NEI information pages for altar progression, ritual documentation, sacrifice mechanics help, shard and orb system explanation, incense and reagent guides

Changes ​

  • #142 Updated NEIBloodOrbShapedHandler and NEIBloodOrbShapelessHandler to set stack size to 0 for display. - @koolkrafter5
  • #120 Modified CostInfo.java to use localization keys and added English translation for meteor cost label. - @Ranzuu
    • Added: localization for meteor cost display
  • #118 Modified GUI classes and NEICalcinatorHandler to use localized strings instead of hardcoded text; added translations to lang files. - @Ranzuu
    • Added: localization keys for GUI titles, NEI calcinator value labels
  • #110 Simplified ItemAlchemyBase, ActivationCrystal, and potion item tooltips by removing the shift-hint text and associated localization strings. - @koolkrafter5
    • Removed: shift-for-recipe tooltip text, tooltip localization keys

Balance ​

  • #138 Updated radius constant in RitualEffectMagnetic from 32 to 34. - @Sanduhr32
  • #111 Modified BoundArmour.java to grant Hazmat Protection, balancing it against similar-tier equipment like NanoSuit. - @Worive
    • Added: Hazmat Protection to bound and omega armor

Bug Fixes ​

  • #147 Fixed damage interval calculation in AlchemicalWizardryEventHooks by swapping division operands (amplifier / 20 instead of 20 / amplifier) and ensuring correct handling of unsigned byte values. - @Angry3vilbot
    • Fixed: ArithmeticException with high-level Drowning effects, Crash on amplifier 255 due to signed byte interpretation
    • Migration: If an entity with a high Drowning effect level exists in your world, this fix will prevent the crash on load; no action needed.
    • Closes GTNH#26399
  • #144 Updated version checking logic in AlchemicalWizardry, BoundPickaxe, RitualEffectMagnetic, and Meteor to handle multiple GT mod variants correctly. - @felixfour
    • Fixed: Loader check for multiple GT versions
  • #141 Moved weakness effect application from Item.hitEntity (LivingDropsEvent) to LivingHurtEvent in AlchemicalWizardryEventHooks, ensuring the debuff is active before loot generation. Removed duplicate event handler. - @koolkrafter5
    • Added: Weakness effect application in LivingHurtEvent
    • Removed: ModLivingDropsEvent, EnergySword.hitEntity weakness logic
    • Fixed: Bound Blade not dropping blood shards on one-hit kills
  • #137 Added a null check and default value (1.0) for getOrbMultiplier() in TEAltar to prevent division by zero when the multiplier unexpectedly returns 0. - @HectorHW
    • Fixed: ArithmeticException when using comparator on Blood Altar, World crash on join due to comparator state
    • Migration: If your world has become unloadable due to this crash, the fix will allow you to rejoin; no further action needed.
    • Closes GTNH#25627
  • #136 Added Int3Adapter for custom JSON reading/writer in BuildingSchematic to handle Int3 field serialization, and uncommented debug code in DemonBuilding and TEDemonPortal (creative-mode only). - @koolkrafter5
    • Added: Int3Adapter for Int3 field handling
    • Fixed: Demon city buildings not loading from config
  • #135 Updated BoundPickaxe, BoundAxe, BoundShovel, and DigAreaEffect to properly check if actions can be performed on blocks before applying effects, and verify block hardness correctly for modded blocks. - @Algent
    • Fixed: Bound Pickaxe ignoring claims, Bound tools unable to mine modded blocks, Soul Soil mining from Et Futurum Requiem
    • Closes GTNH#21821
  • #131 Removed premature AI task initialization in EntityBoulderFist, EntitySmallEarthGolem, and EntityWingedFireDemon before entityTasksField is initialized by parent constructor. - @Alexdoru
    • Removed: early setCombatTask() calls
    • Fixed: NPE in entity init, CombatAI initialization order
  • #126 Added new maxEssence NBT field to LifeEssenceNetwork and updated SoulNetworkHandler to persist orb capacity losslessly; deprecated tier-based capacity lookups. - @Florexiz
    • Added: maxEssence NBT storage, SoulNetworkHandler capacity API
    • Fixed: Eldritch orb LP display, modded orb capacity tracking
    • Closes GTNH#23209
  • #121 Removed artificial damage from SigilLava.java to make it non-consumable in recipes like Water Sigil, and removed unused Zenscript dependency. - @kopatych3348
    • Removed: self-damage on Lava Sigil, Zenscript dependency
    • Fixed: Lava Sigil crafting consistency, damaged sigil creation bug
  • #113 Corrected discount calculation logic in BoundArmour.java to recognize and apply modded T6 orb discounts. - @koolkrafter5
    • Fixed: T6 and modded orb discount application
  • #105 Added scrolling support to NEIAlchemyRecipeHandler and NEICalcinatorHandler, removed double-checked locking anti-pattern, improved state isolation in CachedReagentInfo, and removed problematic color caching. - @koolkrafter5
    • Removed: unsafe double-checked locking, dynamic color caching
    • Fixed: state leakage in CachedReagentInfo, empty belljar recipe lookup, blood orb scrolling in alchemy handler

Performance ​

  • #146 Cached the result of Enum.values() calls in ItemIncense that were executing 500+ times during testing. - @boubou19
  • #134 Moved permission checks in BoundAxe, BoundPickaxe, BoundShovel, and DigAreaEffect to execute after other validation checks, minimizing the cost of permission checks in the hot path. - @koolkrafter5
  • #130 Moved packet handler initialization from server thread to client thread startup in AlchemicalWizardry.java and NewPacketHandler.java, preventing thread-local references from holding server instances. - @Alexdoru
    • Removed: KeyBindings.java entry point
    • Fixed: memory leak in nethandler

Internal / Refactor ​

  • #127 Consolidated demon entity and projectile inheritance patterns, removed unused classes/methods, applied modern Java syntax (switch expressions, final fields), added block permission validation in bound tools, and automated code fixes. - @koolkrafter5
    • Added: block breaking permission checks in bound tools
    • Removed: unused classes, decade-old commented code, duplicate logic
  • #102 Swapped dependency version in dependencies.gradle and updated Meteor.java to use the new ore natural API for meteor composition. - @RecursivePineapple

Documentation ​

  • #119 Fixed typos and grammar in lang files and related source comments across achievements, items, and book content. - @Yoshy2002
    • Fixed: grammar and spelling errors

Chores ​

  • #140 Added default-meteor-reagents.yml and default-meteors.yml workflows and reorganized meteor config files with updated README. - @koolkrafter5
    • Added: default-meteor-reagents.yml workflow, default-meteors.yml workflow, raw/meteor-reagents/, raw/meteors/README
    • Fixed: Meteor configuration documentation
  • #139 Added compress.py script and demon-buildings.yml workflow to automatically manage building JSON files and their zip archive. - @koolkrafter5
    • Added: compress.py, demon-buildings.yml workflow, raw/buildings/*.json files
  • #122 Updated dependency versions in dependencies.gradle, gradle.properties, and wrapper configuration. - @UltraProdigy

Contributors ​

Everyone who authored, reviewed or co-authored a change on this page, with how many of them:

@koolkrafter5 (23), @UltraProdigy (11), @Dream-Master (6), @Algent (4), @boubou19 (3), @Alexdoru (2), @Nikolay-Sitnikov (2), @Ranzuu (2), @slprime (2), @Yoshy2002 (2), @Angry3vilbot (1), @Balor64 (1), @Caedis (1), @danyadev (1), @Ethryan (1), @felixfour (1), @Florexiz (1), @Guvante (1), @HectorHW (1), @jordanamr (1), @kopatych3348 (1), @MalTeeez (1), @Miklebe (1), @Pxx500 (1), @RecursivePineapple (1), @ReignOfFROZE (1), @Sanduhr32 (1), @SHARKY-au (1), @StaffiX (1), @tiffit (1), @Worive (1)