Badges update automatically and link to the mod page on MineUniverse.
⚠️ UNOFFICIAL PORT — ALPHA / WORK IN PROGRESS
This release is an unofficial community port of Blood Magic from Minecraft 1.20.1 to Minecraft 1.21.1 using NeoForge.
This project is an unofficial port of Blood Magic to Minecraft 1.21.1.
The original Blood Magic project was created by WayofTime and the Blood Magic contributors.
Original project:
https://github.com/WayofTime/BloodMagic
This port is based on and modifies the original Blood Magic source code.
Blood Magic is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) license, and this port is distributed under the same license.
This project is not an official release and is not affiliated with or officially supported by the original Blood Magic developers.
Changes made in this port include adaptations required for Minecraft 1.21.1 and NeoForge, API migrations, compatibility fixes, recipe/datagen changes, networking changes, Data Component migration, and various gameplay fixes.
License:
https://creativecommons.org/licenses/by/4.0/
The port has reached a playable and much more stable state, but it is still under development. Some features, integrations and edge cases still require additional testing and fixes.
Ported the Blood Magic 1.20.1 codebase to Minecraft 1.21.1
Migrated the project to the modern NeoForge 1.21.1 APIs
Updated registry handling for the new NeoForge system
Updated deprecated Forge-era code and removed several obsolete compatibility layers
Migrated multiple systems to the Minecraft 1.21 Data Components architecture
Updated item, block, recipe, enchantment, loot and registry APIs
Cleaned up the mod metadata and NeoForge dependency declarations
Replaced the old networking implementation with a proper NeoForge payload-based networking system
Updated client/server packet registration
Reworked network compatibility code for Minecraft 1.21.1
Validated payload loading on both dedicated server and client
The Anointment system received a significant amount of work.
Migrated Anointment item attribute handling to DataComponents.ATTRIBUTE_MODIFIERS
Existing item modifiers are now preserved when an Anointment is applied
Anointment modifiers can be correctly removed again when required
Reworked harvest-related Anointment handling
Updated Anointment durability consumption timing
Restored XP modification through the modern NeoForge BlockDropsEvent
Improved compatibility with the Minecraft 1.21 harvesting pipeline
Restored and adapted:
Fortune
Silk Touch
Looting
Smelting
Voiding
Fortune, Silk Touch and Looting now use the Minecraft 1.21 enchantment/registry systems instead of the removed 1.20.1 behaviour.
Anti-recursion protection was also preserved when Blood Magic regenerates loot tables internally.
The custom Blood Orb recipe ingredient has been fully migrated.
IngredientBloodOrb now uses NeoForge's modern ICustomIngredient system
Added proper IngredientType registration
Blood Orb tier matching behaviour has been preserved
Generic IBloodOrb support has been retained for compatibility with additional Blood Orb implementations
The ingredient is now included in the runtime build again
Large parts of Blood Magic's custom recipe infrastructure were migrated to Minecraft 1.21.1.
Updated custom Blood Magic recipe builders
Migrated recipe providers to the new RecipeOutput API
Updated ingredient serialization to use the modern Ingredient.CODEC
Reworked legacy Blood Magic recipe serializers
Added runtime decoding support to the compatibility recipe codec
Updated recipe generation for the new 1.21.1 datapack format
Fixed generated recipes using outdated paths or formats
Fixed recipe synchronization compatibility between server and client
Fixed:
Failed to encode packet 'clientbound/minecraft:update_recipes'
The problem originated from RecipeAnointmentApply, where the JSON codec and network codec were not using compatible recipe instances.
This has been corrected in the current build.
Blood Magic's custom loot infrastructure has been re-enabled and migrated.
Ported to the Minecraft 1.21 MapCodec system:
set_will_range
set_will_fraction
set_living_upgrade
Migrated bloodmagic:loot_table
Restored resolution of external/vanilla loot tables
Updated loot table references to use modern ResourceKey<LootTable> handling
Re-enabled the previously excluded Blood Magic loot package
Updated random handling to Minecraft's RandomSource
Migrated Global Loot Modifier data to:
data/neoforge/loot_modifiers
Removed obsolete legacy paths
Validated Global Loot Modifier loading on the server
The Blood Magic datagen system received a major migration and cleanup.
Re-enabled the previously disabled datagen source
Migrated providers to Minecraft 1.21.1 APIs
Updated block/item tags
Updated recipe providers
Updated loot table providers
Updated sprite source generation
Updated enchantment registry lookups
Updated potion/effect handling
Updated DeferredHolder generics
Updated loot tables to use ResourceKeys
Updated conditional recipes to the modern NeoForge condition format
Updated generated datapack folder structure
Legacy paths were migrated to the Minecraft 1.21 format, including:
data/bloodmagic/recipes/
→data/bloodmagic/recipe/
and the corresponding modern paths for:
recipes
advancements
loot tables
tags
Legacy Forge tags were migrated toward the modern c: common tag namespace where appropriate.
runData now completes successfully.
Several old Blood Magic systems still expected mutable ItemStack NBT directly.
These have been adapted to Minecraft 1.21's Data Components system.
Improved Blood Magic NBTHelper
Added safer CustomData handling
Fixed cases where empty NBT compounds could disappear
Restored behaviour expected by Living Armor / Living Container code
Reduced possible NullPointerExceptions caused by old getTag().put(...) assumptions
Restored the client-side will_type item property
Added detection for:
Corrosive
Destructive
Vengeful
Steadfast
This restores behaviour expected by Demon Will-related models and items.
The Frost Sigil has been restored.
The old direct FrostWalkerEnchantment call no longer exists in Minecraft 1.21, so the Sigil has been adapted to the modern enchantment effect system.
It now triggers the modern Frost Walker location effect while the Sigil is active.
The Bleeding Edge record has been migrated to Minecraft 1.21's new jukebox system.
Added a proper jukebox_song registry entry
Added the modern jukebox playable item component
Preserved the original audio
Preserved the original comparator output
Preserved the original track duration
Improved the Alchemical Reaction Chamber port.
Restored custom names from renamed placed items
Added custom name saving/loading
Migrated custom name storage to the Minecraft 1.21 component/NBT APIs
Custom names are now used by the block's menu/display name
The old Patchouli dependency has been replaced with Modopedia for the 1.21.1 port.
Added basic Modopedia compatibility
Added a Blood Magic book entry
Added required text formatters
Updated the guide book recipe
Updated mod metadata to depend on Modopedia instead of Patchouli
Removed the obsolete Patchouli dependency from the distributed jar
The complete original Patchouli book has not yet been fully converted.
The current Modopedia integration provides the foundation for the guide, but additional book content/templates may still need to be migrated.
Fixed outdated Forge metadata remaining in the port
Migrated the project to neoforge.mods.toml
Fixed NeoForge version range declarations
Added the correct Modopedia dependency
Removed an obsolete mods.toml Forge file that was being accidentally packaged
Fixed Gradle resource placeholder expansion
Cleaned legacy datapack/resource paths from the final jar
The current port has passed the following development tests:
compileJava — OK
runData — OK
Datagen — 2685 files processed
Dedicated server startup — OK
2079 recipes loaded
1693 advancements loaded
Server reaches Done
Client mod loading — OK
Client resource reload — OK
Texture atlases — OK
NeoForge payload loading — OK
Clean Gradle build — OK
Current development jar:
bloodmagic-3.4.0-46-alpha.jar
This port is NOT considered finished.
Even though compilation, datagen, server startup and client resource loading are working, Blood Magic is a large mod and not every mechanic has received complete in-game regression testing yet.
Remaining areas include:
Full gameplay testing of all Blood Magic systems
Additional testing of rituals and complex multiblock behaviour
Additional testing of Living Armor and upgrade interactions
Additional testing of all Anointments in real gameplay
Additional testing of custom recipes and recipe synchronization
Additional multiplayer/client-server testing
Full conversion of the original Patchouli documentation to Modopedia
Optional mod integrations still requiring verification or additional work
Agricraft-related compatibility
Mystical Agriculture-related compatibility
Other third-party compatibility modules that have not yet been fully validated
Possible visual, rendering or behaviour differences compared with the original 1.20.1 version
The recent recipe synchronization fix also requires additional real-world testing when entering worlds and connecting clients to servers.
Some non-blocking development warnings may still appear from Modopedia, Curios, NeoForge, vanilla rendering or shaders.
This is an experimental, unofficial port.
Back up your worlds before using it.
Do not assume complete compatibility with existing Blood Magic worlds, addons or modpacks yet.
Bug reports are useful, especially when accompanied by:
latest.log
crash reports
NeoForge version
installed mod list
steps to reproduce the issue
The objective of this port is to restore as much of the original Blood Magic 1.20.1 behaviour as possible on Minecraft 1.21.1, while progressively replacing obsolete Forge/Minecraft systems with their modern NeoForge equivalents.
More fixes, compatibility work and gameplay testing are still required before this port can be considered fully stable.