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)