跳到正文

血魔法

Blood Magic [Unofficial Port]
作者:Olexandre

此版本是Blood Magic从Minecraft 1.20.1到Minecraft 1.21.1使用NeoForge的非官方社区移植版。这不是Blood Magic的官方发布,与原始Blood Magic开发者无关联,也不受其官方支持。

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

Blood Magic 3.4.0-46-alpha

Minecraft 1.21.1 非官方移植版

⚠️ 非官方移植版 — Alpha / 开发中

此版本是社区将 Blood Magic 从 Minecraft 1.20.1 非官方移植到 Minecraft 1.21.1 的版本,使用 NeoForge。

许可与署名

本项目是Blood Magic 到 Minecraft 1.21.1 的非官方移植版。

原版 Blood Magic 项目由WayofTime 和 Blood Magic 贡献者创建。

原项目:
https://github.com/WayofTime

此移植版基于原版 Blood Magic 源代码,并对其进行了修改。

Blood Magic 采用知识共享署名 4.0 国际许可协议(CC BY 4.0)授权,本移植版也采用相同许可协议发布。

本项目并非官方版本,也不隶属于原版 Blood Magic 开发者,亦未获得其官方支持。

此移植版的改动包括适配 Minecraft 1.21.1 和 NeoForge、API 迁移、兼容性修复、配方与数据生成变更、网络通信变更、数据组件迁移,以及多项玩法修复。

许可协议:
https://creativecommons.org/licenses/by/4.0/

此移植版已达到可游玩且稳定性显著提升的状态,但仍在开发中。部分功能、联动和边缘情况仍需进一步测试与修复。


主要移植改动

Minecraft 1.21.1 / NeoForge 迁移

  • 将 Blood Magic 1.20.1 代码库移植到Minecraft 1.21.1

  • 将项目迁移至现代NeoForge 1.21.1 API

  • 更新注册表处理逻辑,以适配新版 NeoForge 系统

  • 更新 Forge 时代的弃用代码,并移除若干过时的兼容层

  • 将多个系统迁移至 Minecraft 1.21 的数据组件架构

  • 更新物品、方块、配方、附魔、战利品和注册表 API

  • 清理模组元数据和 NeoForge 依赖声明


网络通信

  • 将旧版网络通信实现替换为完善的基于 NeoForge 载荷的网络通信系统

  • 更新客户端/服务器数据包注册

  • 重构 Minecraft 1.21.1 的网络兼容代码

  • 验证载荷在专用服务器和客户端上的加载情况


涂药

涂药系统经过了大量改进。

  • 将涂药物品属性处理迁移至DataComponents.ATTRIBUTE_MODIFIERS

  • 应用涂药时,现在会保留物品已有的属性修饰符

  • 需要时,现在可以正确移除涂药修饰符

  • 重构与采集相关的涂药处理逻辑

  • 更新涂药的耐久度消耗时机

  • 恢复通过现代 NeoForgeBlockDropsEvent

  • 改进与 Minecraft 1.21 采集流程的兼容性

战利品相关涂药

已恢复并适配:

  • 时运

  • 精准采集

  • 抢夺

  • 烧炼

  • 虚空

时运、精准采集和抢夺现在使用 Minecraft 1.21 的附魔与注册表系统,而不再使用已移除的 1.20.1 行为。

Blood Magic 在内部重新生成战利品表时,也保留了防递归保护。


血之宝珠配方材料

自定义血之宝珠配方材料已完成全面迁移。

  • IngredientBloodOrb现在使用 NeoForge 现代化的ICustomIngredient系统

  • 已添加正确的 IngredientType 注册

  • 已保留血珠等级匹配行为

  • 保留通用 IBloodOrb 支持,以兼容其他血珠实现

  • 该材料现已重新包含在运行时构建中


配方与配方序列化

血魔法的大部分自定义配方基础设施已迁移至 Minecraft 1.21.1。

  • 更新了血魔法自定义配方构建器

  • 已将配方提供器迁移至新的 RecipeOutput API

  • 已更新材料序列化,改用现代 Ingredient.CODEC

  • 已重构旧版血魔法配方序列化器

  • 已为兼容性配方编解码器添加运行时解码支持

  • 已更新配方生成逻辑,以适配新的 1.21.1 数据包格式

  • 已修复生成的配方使用过时路径或格式的问题

  • 已修复服务器与客户端之间的配方同步兼容性问题

近期修复

已修复:

Failed to encode packet 'clientbound/minecraft:update_recipes'

问题源于 RecipeAnointmentApply,当时 JSON 编解码器和网络编解码器使用的配方实例不兼容。

此问题已在当前构建中修正。


战利品系统

血魔法的自定义战利品基础设施已重新启用并完成迁移。

自定义战利品函数

已移植至 Minecraft 1.21 的 MapCodec 系统:

  • set_will_range

  • set_will_fraction

  • set_living_upgrade

自定义战利品条目

  • 已迁移 bloodmagic:loot_table

  • 已恢复对外部/原版战利品表的解析

  • 已更新战利品表引用,改用现代 ResourceKey<LootTable> 处理方式

  • 已重新启用此前被排除的血魔法战利品包

  • 已将随机处理更新为 Minecraft 的 RandomSource

全局战利品修饰器

  • 已将全局战利品修饰器数据迁移至:

data/neoforge/loot_modifiers

  • 已移除过时的旧版路径

  • 已验证全局战利品修饰器可在服务器上加载


数据生成

血魔法的数据生成系统进行了重大迁移与清理。

  • 已重新启用此前禁用的数据生成源

  • 已将提供器迁移至 Minecraft 1.21.1 API

  • 已更新方块/物品标签

  • 已更新配方提供器

  • 已更新战利品表提供器

  • 已更新精灵图源生成

  • 已更新附魔注册表查询

  • 已更新药水/效果处理

  • 已更新 DeferredHolder 泛型

  • 已更新战利品表,改用 ResourceKeys

  • 已将条件配方更新为现代 NeoForge 条件格式

  • 已更新生成的数据包文件夹结构

数据包路径迁移

旧版路径已迁移至 Minecraft 1.21 格式,包括:

data/bloodmagic/recipes/
→
data/bloodmagic/recipe/

以及以下项目对应的现代路径:

  • 配方

  • 进度

  • 战利品表

  • 标签

通用标签

旧版 Forge 标签已逐步迁移至现代 c: 通用标签命名空间(适用时)。

当前状态

runData 现已成功完成。


NBT / 数据组件

血魔法中的一些旧系统仍然直接依赖可变 ItemStack NBT。

这些内容已适配 Minecraft 1.21 的数据组件系统。

  • 改进 Blood MagicNBTHelper

  • 添加了更安全的 CustomData 处理

  • 修复了空 NBT 复合标签可能消失的问题

  • 恢复了 Living Armor / Living Container 代码所需的行为

  • 减少了由旧版 getTag().put(...) 假设导致的潜在 NullPointerException


Demon Will

  • 恢复了客户端的 will_type 物品属性

  • 添加了以下检测:

    • 腐蚀

    • 破坏

    • 复仇

    • 坚定

这恢复了 Demon Will 相关模型和物品所需的行为。


霜行符印

霜行符印已恢复。

Minecraft 1.21 中已不再支持旧的直接 FrostWalkerEnchantment 调用,因此该符印已适配现代附魔效果系统。

符印激活时,现在会触发现代版 Frost Walker 位置效果。


Bleeding Edge 唱片

Bleeding Edge唱片已迁移至 Minecraft 1.21 的全新唱片机系统。

  • 添加了正确的 jukebox_song注册表条目

  • 添加了现代唱片机可播放物品组件

  • 保留了原始音频

  • 保留了原始比较器输出

  • 保留了原始曲目时长


炼金反应室

改进了炼金反应室端口。

  • 恢复了重命名后放置的物品所带的自定义名称

  • 添加了自定义名称的保存与加载

  • 将自定义名称存储迁移至 Minecraft 1.21 的组件/NBT API

  • 方块菜单和显示名称现在会使用自定义名称


Modopedia

在 1.21.1 移植版本中,已用 Modopedia 替代旧版 Patchouli 前置库。

  • 添加了基础的 Modopedia 兼容支持

  • 添加了 Blood Magic 书籍条目

  • 添加了所需的文本格式化器

  • 更新了指南书配方

  • 更新模组元数据,使其依赖 Modopedia 而非 Patchouli

  • 从分发的 jar 中移除了过时的 Patchouli 前置库

重要

完整的原版 Patchouli 书籍尚未全部转换当前的 Modopedia 集成为指南奠定了基础,但可能仍需迁移更多书籍内容和模板。


元数据与打包

  • 修复了移植版本中残留的过时 Forge 元数据

  • 已将项目迁移至neoforge.mods.toml

  • 修复了 NeoForge 版本范围声明

  • 添加了正确的 Modopedia 前置库

  • 移除了一个被意外打包的过时 mods.toml Forge 文件

  • 修复了 Gradle 资源占位符展开

  • 清理了最终 jar 中旧版数据包/资源路径


当前验证状态

当前移植版本已通过以下开发测试:

  • compileJava — 通过

  • runData — 通过

  • 数据生成 — 已处理 2685 个文件

  • 专用服务器启动 — 通过

  • 已加载 2079 个配方

  • 已加载 1693 个进度

  • 服务器运行至 Done

  • 客户端模组加载 — 通过

  • 客户端资源重载 — 通过

  • 纹理图集 — 通过

  • NeoForge 载荷加载 — 正常

  • Gradle 干净构建 — 正常

当前开发版 jar:

bloodmagic-3.4.0-46-alpha.jar


已知问题 / 待完成工作

此移植版尚未视为完成。

尽管编译、数据生成、服务器启动和客户端资源加载均已正常运行,但 Blood Magic 是一个大型模组,目前还没有对所有机制完成全面的游戏内回归测试。

待完成的工作包括:

  • 对 Blood Magic 的所有系统进行完整的游戏测试

  • 进一步测试仪式和复杂的多方块结构

  • 进一步测试活体盔甲及其升级交互

  • 在实际游戏中进一步测试所有附魔

  • 进一步测试自定义配方和配方同步

  • 进一步进行多人游戏及客户端与服务器之间的测试

  • 将原有的 Patchouli 文档完整转换为 Modopedia 文档

  • 仍需验证或进一步处理的可选模组集成

  • Agricraft 相关兼容性

  • Mystical Agriculture 相关兼容性

  • 尚未经过完整验证的其他第三方兼容模块

  • 与原版 1.20.1 相比可能存在的视觉、渲染或行为差异

最近修复的配方同步问题仍需进一步进行实际测试,包括进入世界以及客户端连接服务器的情况。

Modopedia、Curios、NeoForge、原版渲染或光影仍可能产生一些不影响使用的开发警告。


重要提示

这是一个实验性的非官方移植版。

使用前请备份你的地图。

目前请勿假定它与现有的 Blood Magic 地图、附属模组或整合包完全兼容。

欢迎提交 Bug 报告,尤其是附带以下信息的报告:

  • latest.log

  • 崩溃报告

  • NeoForge 版本

  • 已安装的模组列表

  • 问题复现步骤

本移植版的目标是尽可能恢复Blood Magic 在 Minecraft 1.21.1 上的 1.20.1 原有行为,同时逐步将过时的 Forge/Minecraft 系统替换为现代 NeoForge 对应方案。

在此移植版达到完全稳定之前,仍需进行更多修复、兼容性处理和游戏测试。

常见问题

血魔法 支持哪些 Minecraft 版本?

血魔法 支持 Minecraft Java 版 1.21.1,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

血魔法 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

Olexandre 的其他作品

查看全部 →