BloodMagic
36 merged pull requests.
New Features
- #133 Adds a compileOnly dependency on EndlessIDs and an isEndlessIdsLoaded flag. RitualEffectBiomeChanger and the Gaia biome change packet handler use ChunkBiomeHook short biome arrays when EndlessIDs is loaded, and the packet biome field is now an int. - @tiffit
- Added: EndlessIDs compatibility for biome changer ritual
- #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
- #143 ShapedBloodOrbRecipe and ShapelessBloodOrbRecipe now accept Integer ingredients as the orb level (switch pattern matching). AlchemicalWizardry and ItemIncense recipes were migrated from orb ItemStacks to ints; also a gtnhsettingsconvention bump to 2.0.29 and a regenerated daemon JVM properties file. - @koolkrafter5
- Added: int orb level ingredient in blood orb recipes
- #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
- #102 Meteor.setGTOresNaturalIfNeeded now uses OreManager.getOreInfo, sets isNatural, and re-places the block via the ore adapter instead of setting mNatural on TileEntityOres. Bumps GT5-Unofficial, NEI, Botania and Chisel dev dependencies; depends on GT5-Unofficial PR 3662. - @RecursivePineapple
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
- #152 Added the missing negation on IBindable.checkAndSetItemOwner in 10 methods: SpellTeleport (4), SpellWateryGrave (4) and SpellLightningBolt (ranged and melee). The inverted check made them return early for the bound owner. - @micvog
- Fixed: Teleport, Watery Grave and Lightning Bolt spells never casting
- #151 HomSpellRegistry.getSpellForItemStack no longer requires the focus item to be an ItemBlock, and just compares the items. The ItemBlock check was left over from a simplification in #127. - @micvog
- Fixed: item foci not recognised by the spell table
- Closes GTNH#27043
- #147 Fixed a division-by-zero exception in the damage interval calculation by setting 1 as the minimum amplifier value. Also fixed a separate division-by-zero exception when the amplifier is set to 255, caused by the value being interpreted as a signed byte on every other tick. - @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 the weakness application from EnergySword.hitEntity to a LivingHurtEvent handler in AlchemicalWizardryEventHooks, which fires before drops are gathered. Merged the LivingDropsEvent handler from ModLivingDropsEvent into the same class and deleted the old one. - @koolkrafter5
- Fixed: Bound Blade not dropping Weak Blood Shards on one-hit kills
- #137 TEAltar constructor now initialises orbCapacityMultiplier to 1 instead of leaving it at 0, so the comparator logic added in PR 99 no longer divides by zero. - @HectorHW
- Fixed: Crash with division by zero when using a comparator on a Blood Altar
- Closes GTNH#25627
- #136 Adds Int3Adapter, a Gson TypeAdapter using the xCoord, yCoord and zCoord names, registered in TEDemonPortal.loadBuildingList and TESchematicSaver. BuildingSchematic gains door position and tier fields read by Gson, and DemonBuilding uses them. TEDemonPortal.rightClickBlock is re-enabled for creative players. - @koolkrafter5
- Added: creative-only demon portal debug right-click
- Fixed: demon city buildings not loading from schematic configs
- #135 Replaced BoundPickaxe.checkPermissions with isBreakDenied, which calls ForgeHooks.onBlockBreakEvent for EntityPlayerMP. Bound Axe, Pickaxe and Shovel now also check ForgeHooks.isToolEffective alongside the strength check; DigAreaEffect uses the new method. - @Algent
- Fixed: Bound Pickaxe ignoring claims, Bound Shovel not mining Soul Soil from Et Futurum Requiem, Bound tools not checking if they are effective on modded blocks
- Closes GTNH#21821
- #131 Removed the setCombatTask() call from entityInit() in EntityBoulderFist, EntitySmallEarthGolem and EntityWingedFireDemon. It ran during the Entity constructor, before the AI task list existed, and threw an NPE. - @Alexdoru
- Fixed: NullPointerException when spawning Boulder Fist, Small Earth Golem and Winged Fire Demon
- #130 NewPacketHandler held a reference to the thread it was first initialised on, which could be the server thread. It is now initialised from preInit through a new NewPacketHandler.init() call on the client thread. The unused KeyBindings class was deleted. - @Alexdoru
- Removed: unused KeyBindings class
- Fixed: server memory leak from the packet handler
- #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 SigilLava.getContainerItem now returns the input stack unchanged instead of a copy damaged by getEnergyUsed(). Also removes the ZenScript compileOnly dependency from dependencies.gradle. - @kopatych3348
- Removed: ZenScript compile dependency
- Fixed: Lava Sigil being damaged when used in crafting
- #113 BoundArmour.getUpgradeCostMultiplier now checks for IBloodOrb and switches on getOrbLevel (1 to 0.75, 2 to 0.50, 3 to 0.25, 4-6 to 0, else 1) instead of comparing against specific orb items. - @koolkrafter5
- Fixed: tier 6 and modded orbs giving no discount to Bound Armor effects
- #105 NEIAlchemyRecipeHandler and NEICalcinatorHandler now use PositionedStack with permutations for orbs. CachedReagentInfo caches text and widths and no longer caches colour. NEIConfig drops double-checked locking for synchronized methods, and Reagent.equals is removed. - @koolkrafter5
- Fixed: blood orbs not scrolling in alchemy and calcinator NEI handlers, state leaking in the calcinator NEI handler, recipe lookup for empty bell jars
Performance
- #146 Added a static VALUES array to ItemIncense.EnumIncense and used it in getEnumForIndex instead of calling values(). - @boubou19
- #134 In BoundAxe, BoundPickaxe, BoundShovel and DigAreaEffect, the checkPermissions call moved to the end of the skip conditions, so it only runs for blocks that pass the hardness, mineability and tool-effectiveness checks. - @koolkrafter5
- Fixed: lag from permission checks on bound tools
Internal / Refactor
- #127 Large cleanup across about 400 files: automated fixes, renames, final fields, modern switch syntax, and removal of dead and commented-out code. Demon entities and projectiles now inherit shared logic, and bound tools call a permission check. - @koolkrafter5
- Added: block breaking permission check on bound tools
- Removed: unused classes and methods
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 Adds raw/meteors and raw/meteor-reagents sources with READMEs and two workflows that run compress.py to rebuild meteors.zip and reagents.zip. The contents of the default configs are unchanged. - @koolkrafter5
- Fixed: mistakes in the meteor config docs
- #139 Adds raw/buildings/*.json, a compress.py script and a GitHub workflow that rebuilds buildings.zip and opens a PR on changes to those files. - @koolkrafter5
- #122 Updates gtnhsettingsconvention to 2.0.23, the Gradle wrapper, and dependency versions (waila, NEI, GTNHLib, GT5-Unofficial, Botania, ForestryMC, Chisel, StructureLib). Switches enableModernJavaSyntax to jabel. - @UltraProdigy
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@koolkrafter5 (25), @UltraProdigy (11), @Dream-Master (6), @Algent (4), @boubou19 (3), @Alexdoru (2), @micvog (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)