![仅重载数据 [与JEI和KubeJS的紧凑版]](https://cdn8.newbeebox.com/nbbnext/2026/07/27/0f08e1af345c8e7e1d1f9e1b8a7d313b.png)
仅重载数据 [与JEI和KubeJS的紧凑版]
选择性地热重载单个数据包内容类型——配方、进度、标签、战利品、函数以及(实验性)注册表。
⚠️ 警告: 重载某些类型的数据包注册表(data registry)可能导致游戏崩溃或存档损坏。在对陌生的数据包注册表使用
/reloadonly registry前,请务必先备份存档再进行测试。使用风险自负。
Reload Only Data(选择性数据重载)
按类型选择性重载数据包内容——配方 / 进度 / 标签 / 战利品 / 函数,以及(实验性的)注册表——各自独立、按需重载,避免完整 /reload 在大型整合包下的巨大开销。配方重载额外兼容 KubeJS 运行时脚本修改(Forge 侧 6 代 / NeoForge 侧 7 代)。
双加载器构建(Stonecutter):Minecraft 1.20.1 / Forge 与 Minecraft 1.21.1 / NeoForge。项目起点是「只重载配方」,现已泛化为通用的选择性重载框架;
/reloadrecipes作为向后兼容的快捷别名保留。
支持版本
| 加载器 | Minecraft | 加载器版本 | Java | KubeJS(可选) |
|---|---|---|---|---|
| Forge | 1.20.1 | 47.4.4+ | 17 | 6 代 |
| NeoForge | 1.21.1 | 21.1.234+ | 21 | 7 代 |
KubeJS 为可选。 未安装时走原版(Vanilla)策略;安装后自动按平台启用 6/7 代兼容层。
命令
所有命令需 OP(权限等级 2)。统一入口 /reloadonly <target> [arg],并保留 /reloadrecipes 作为 recipes 目标的快捷别名。
| 命令 | 内容 | 客户端同步 |
|---|---|---|
/reloadrecipes |
配方(含 KubeJS) | 是 —— 配方 + 配方书 |
/reloadonly recipes |
配方(含 KubeJS) | 是 |
/reloadonly advancements |
进度 | 是 —— 重建 + 每玩家重算 |
/reloadonly tags <registry> |
某 registry 的标签(如 minecraft:item) |
是 |
/reloadonly loot |
战利品表 + 谓词 + 物品修饰器 | 否 —— 纯服务端 |
/reloadonly functions |
函数(.mcfunction) |
否 —— 纯服务端 |
/reloadonly registry <key> [confirm] |
单个数据包注册表(实验性) | 需重新连接 |
<target> 与参数均带 Brigadier 动态补全。未知或不支持的目标会明确拒绝(不伪装成功)。反馈支持中英双语(en_us / zh_cn),形如「已重载 N 条配方,耗时 T 毫秒」。
JEI / REI / EMI 自动刷新: recipes 与 tags 目标会下发同步包,触发配方查看器自动重载。
注册表热重载(新特性 · 实验性)
/reloadonly registry <registryKey> [confirm] 就地热重载单个数据包注册表:更新现有注册表对象与其 Holder(而非替换),因此在世界加载时缓存了旧 Holder 的消费方(如伤害来源 DamageSources)会立即看到新值,且完全不触碰世界存档。
- 仅限「叶子型」注册表 —— 运行时查询型,如
damage_type、enchantment(1.21+)、trim_pattern、trim_material、banner_pattern等。 - 生成固化型注册表列入黑名单 ——
worldgen/*(生物群系、结构、密度函数、噪声设置……)与dimension_type一律拒绝,因为其新值无法追溯改变已固化到现有区块的旧数据。 - 客户端需重新连接 —— 客户端注册表仅在加入时同步。命令会先警告并要求末尾加
confirm;重载后会提示玩家重连才能看到变化。
兼容性
以下 KubeJS / JEI 说明仅针对 recipes 目标——recipes 是唯一走 KubeJS 兼容的目标;advancements / tags / loot / functions 均走原版逻辑。
- 原版 / 纯 JSON 配方(原版、mod jar 内置、世界数据包):完整重载,含 Create / Mekanism 等的自定义 RecipeType(类型在启动期注册、不受影响)。
- KubeJS:命令会先复现 KubeJS 的脚本重载步骤再触发 apply,故脚本配方自动介入——Forge 用 KubeJS 6,NeoForge 用 KubeJS 7。兼容层异常时自动回落原版策略并告警。
- JEI / REI / EMI:
/reloadrecipes会同时下发 tags 与 recipes 两个同步包,使配方查看器自动刷新(JEI 需在同一周期内同时观察到TagsUpdatedEvent与RecipesUpdatedEvent)。额外的 tags 包内容不变、无磁盘 IO,仅用于触发查看器刷新。
限制
- 标签单独重载不刷新下游:
/reloadonly tags <registry>只重绑该 registry 的标签;改了 item/block/fluid 标签后需接着执行/reloadrecipes才能让配方跟随。 - functions 不连带
#function标签:如同时改了函数标签,需另行重载。 - KubeJS 仅覆盖 recipes:其余目标的 KubeJS 脚本修改本 mod 不生效(走原版逻辑)。
- 不覆盖 CraftTweaker 等 mod:它们通过
AddReloadListenerEvent注册独立监听器——请用其自带重载或完整/reload。 - 注册表热重载为实验性:仅叶子型、黑名单守卫、需重连。在 NeoForge + KubeJS 7 上,运行时新建的全新命名空间可能读不到(KubeJS 7 文件包命名空间索引在启动时固化);修改已有命名空间正常。
依赖
- 必需:Forge 47+(Minecraft 1.20.1)或 NeoForge 21.1+(Minecraft 1.21.1)。
- 可选:KubeJS(Forge 6 代 / NeoForge 7 代)—— 启用运行时脚本配方重载;任何原版内容都不需要它。
作者:Tonywww
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。