一个为 Minecraft 1.20.1 Forge 整合包定制的诅咒饰品模组。
玩家将「梦魇之核」佩戴在 Curios 的梦魇槽中,换取 3 个赐福槽,同时承受七重诅咒。核心不再修改任何属性;赐福分为两类:七件压制赐福各压制一项诅咒,多件由梦魇专属材料制作的属性/功能赐福提供额外能力,但不压制诅咒。三个槽位必须在这两类之间取舍。
设计核心:梦核本身不加不减任何属性,只施加七重诅咒。 玩家可以用最多三件赐福压制三项诅咒,或换取属性/功能,其余诅咒继续生效。
0.8.23:赐福槽改为固定 3 个 Curios 槽位(不再动态增加/移除),移除赐福
canEquip的梦核前置检查;Curios 在反序列化时不会再判定赐福无效,死亡/重进不会卸下。未装备梦核时由 tick 检查把赐福退回背包。0.8.22:登录/重生恢复前先调用 Curios
handleInvalidStacks(),把被缓存的无效赐福放回背包后再重新装备。0.8.21:修复旧版槽位修饰残留导致的 6 个赐福槽;装备/登录/重生时会清空赐福槽上的旧修饰,只保留一个 +3 永久修饰。
0.8.20:梦核的赐福槽改为永久 Curios 槽位修饰,在装备时写入持久数据,不再依赖物品动态属性;死亡/重进后槽位不会收缩。
0.8.19:再次修复 keepInventory 死亡后赐福被卸下;赐福槽恢复改为持久槽位修饰,不会在后续 tick 中被 Curios 清掉。
0.8.18:修复退出世界重进后赐福被自动卸下的问题;登录时会恢复 3 个赐福槽并按退出时快照重新装备。
0.8.17:一级赐福可在工作台分解为 4 个梦魇碎片;新增梦魇质(9 碎片合成),在梦魇工坊中作为价值 10 碎片的燃料。
0.8.16:修复死亡开启
keepInventory后重生时赐福被自动卸下的问题;现在会按死亡前快照重新装备梦核与赐福。0.8.15:修复开启
keepInventory时赐福仍会从 Curios 槽掉落的问题。0.8.14:七种压制赐福改为三级饰品;赐福改为逐级晋升;梦魇碎片与材料消耗大幅提高;新增一级/二级赐福与 KubeJS 配方接口。
| 项目 | 版本 |
|---|---|
| Minecraft | 1.20.1 |
| Forge | 47.4.9(建议 47.4.x) |
| Curios | 5.14.1+1.20.1(必需) |
| GeckoLib | 4.8.3+1.20.1(必需,梦魇之眸模型与动画) |
| JEI | 15.20.0+1.20.1(可选,工坊配方查看) |
| KubeJS | 2001.6.5+(可选,配方联动;需 Architectury/Rhino) |
| Java | 17 |
- 将
nightmare_core-1.20.1-0.8.23.jar放入整合包的mods/。 - 确保
curios-forge-5.14.1+1.20.1.jar或更高兼容版本也在mods/。 - 确保
geckolib-forge-1.20.1-4.8.3.jar或更高兼容版本也在mods/。 - 可选:安装 JEI 15.20.0+ 以查看梦魇工坊配方。
- 可选:安装 KubeJS 2001.6.5+(及 Architectury/Rhino)以使用配方联动接口。
- 启动游戏。首次启动会生成
config/nightmare_core-common.toml。
Curios 和 GeckoLib 都是硬前置,未安装时游戏会在加载阶段提示缺少依赖。模组没有把这两个依赖打包进自身 jar。
- 玩家第一次使用床时,在床边掉落一枚「梦魇之核」。梦核不再有合成配方。
- 在 Curios 界面中把核心放入梦魇槽。
- 核心启用 3 个赐福槽,并施加七重诅咒;槽位本身固定存在,未装备核心时赐福会被退回背包。
- 击杀生物或破坏方块,按幸运等级与「猎梦之眼」加成判定梦魇碎片。
- 用碎片制作赐福饰品与特殊道具。
- 生存模式无法主动取下核心;需要先合成并使用有耐久的「余烬之刃」切断联系。
- 装备槽:梦魇槽(
nightmare,1 格)。 - 佩戴时启用 3 个固定的
blessing赐福槽;未佩戴核心时赐福会被退回背包。 - 不修改任何属性:没有最大生命值、攻击伤害、护甲、韧性、移速或攻速修正。
- 只施加七重诅咒;诅咒会实时判断当前佩戴的赐福。
- 工具提示:
- 默认显示七条诅咒名称;
- 已被对应赐福压制时,名称后显示 (已被压制);
- 按住 Shift 显示每条诅咒的简述。
- 生存模式无法主动取下梦魇之核;Curios 的取出/替换会被拒绝。唯一例外是使用有耐久的「余烬之刃」。
- 创造模式可作为管理员逃逸方式直接取下。
- 默认死亡时保留(
keepCoreOnDeath = true)。这是进度钥匙,避免整合包中因意外死亡导致循环中断。 - 佩戴和取下时会有动作栏提示与灵魂粒子;佩戴期间偶尔出现梦魇粒子。
- 梦魇之核没有合成配方,也不再通过配方书解锁。
- 默认配置下,玩家第一次使用床时会在床边掉落 1 枚梦核。
- 每个玩家只触发一次,通过持久化标记记录;如果玩家已经持有梦核,则只记录标记,不会重复掉落。
- 可在配置中关闭:
nightmare_core.giveCoreOnFirstSleep = false。关闭后不会自动给予,也没有替代配方。 - 首次睡觉本身不会立即触发梦魇,因为此时梦核还在地上、尚未佩戴。
七重诅咒在核心佩戴期间同时生效,取下核心后全部停止。每件赐福可以压制一项诅咒,但只有三个赐福槽,因此最多同时压制三项。
以下数值为默认值。第 2、3、4、6、7、8 项诅咒可在
config/nightmare_core-common.toml的curses.*中调整;第 1、5 项没有额外配置。
| # | 诅咒 | 效果 | 压制赐福 |
|---|---|---|---|
| 1 | 睡眠梦魇 | 上床时按概率生成 1–6 只随机梦魇 | 守夜甲壳 |
| 2 | 生命回复上限 | 当前生命最多恢复到上限的 10% + 10% × min(8, 等级/20),最高 90% | 余烬心室 |
| 3 | 伤害衰减 | 对他人伤害 ≤5 点时无效;>5 点时减少 20% | 裂梦之牙 |
| 4 | 出生点限制 | 只有 16 格内存在敌对生物时才能保存出生点 | 坚岩坠饰 |
| 5 | 清醒时双倍受伤 | 不处于睡眠状态时,受到的所有伤害 ×2 | 疾影羽饰 |
| 6 | 黑暗侵蚀 | 亮度 <3 持续 5 秒后,每秒受到最大生命值 20%(向上取整)的伤害,不致死 | 猎梦之眼 |
| 7 | 精神失常 | 连续 7 天不入睡后获得「精神失常」 | 回响铃 |
- 上限比例:
10% + 10% × min(8, floor(经验等级 / 20)),最高 90%。 - 等级 0:10%;等级 20:20%;……等级 160 及以上:90%。
- 按当前最大生命值计算。核心不再改变最大生命值,因此 0 级上限为基础 20 的 10%,即 2 点生命。
- 生命值超过上限时会立即压回;治疗事件也会被截断,不能靠药水绕过。
- 佩戴余烬心室后该诅咒失效;余烬心室不再提供最大生命值加成。
- 只影响玩家对他人造成的伤害;自伤、黑暗侵蚀和诅咒伤害不受影响。
- 原始伤害 ≤5:完全无效。
- 原始伤害 >5:最终伤害为原始的 80%。
- 佩戴裂梦之牙后该诅咒失效。
- 通过床、重生锚保存出生点时,检查目标位置周围 16 格内是否有
Enemy;没有则取消并提示。 - 管理员
/spawnpoint等 forced 设置会绕过限制。 - 佩戴坚岩坠饰后该诅咒失效。
- 玩家醒着时受到的所有伤害 ×2;躺在床上的状态不受影响。
- 佩戴疾影羽饰后该诅咒失效。
- 使用世界环境亮度(天空光 + 方块光)判断,亮度 <3 开始计时。
- 连续 5 秒后,每秒受到
ceil(最大生命值 × 20%)的伤害。 - 伤害不会致死:至少保留 1 点生命值。
- 离开黑暗、佩戴猎梦之眼或取下核心会重置计时。
- 从进入床铺开始计时;连续 7 个游戏日(168000 tick) 未入睡后获得永久「精神失常」效果。
- 移动:客户端每秒有 25% 概率将移动输入反向 1 秒。
- 攻击:20% 概率对自身造成该次攻击 50% 的伤害。
- 入睡或佩戴回响铃会清除效果并重置计时。
只有核心确实位于梦魇槽时才可能触发。判定对象是“每次击杀 / 每个被破坏的方块”,成功一次掉落 1–3 个(可配置)。
最终概率 = 5% + 5% × floor(幸运属性等级) + 5%(佩戴猎梦之眼时)
- 基础概率 5%,每级幸运 +5%,上限 100%。
- 「猎梦之眼」额外提供 5% 加算概率;同种赐福只能佩戴一件,因此最多生效一次。
- 不受抢夺(Looting)影响。
- 不受时运(Fortune)影响。
- 代码不读取
Looting、Fortune或工具附魔。 - 幸运属性来自原版
minecraft:generic.luck(幸运药水等);负幸运可以降低概率,最低为 0。 - 生存模式、非旁观、非假人、非创造模式才触发。
- 击杀需要由玩家造成或玩家发射的弹射物造成;宠物击杀不计数。
- 默认允许被动生物,默认禁止 PvP 击杀(均可配置)。
- 被取消的方块破坏事件不会触发;黑名单标签见下文。
- 9 个梦魇碎片在工作台按 3×3 合成 1 个梦魇质。
- 梦魇质可放入梦魇工坊的燃料槽,每个提供 10 点碎片燃料值。
- 当配方燃料消耗不是 10 的倍数时,多余燃料值会储存在工坊中,供下一次锻造继续使用。
- 工坊被破坏时,未用完的储存燃料会以梦魇碎片形式掉落。
以下 5 件一级赐福可在工作台中分解:
| 一级赐福 | 回收产物 |
|---|---|
| 月华护符 | 4 梦魇碎片 |
| 血月护腕 | 4 梦魇碎片 |
| 暮色护符 | 4 梦魇碎片 |
| 梦沙袋 | 4 梦魇碎片 |
| 荆棘护腕 | 4 梦魇碎片 |
- 使用无序合成,1 件一级赐福 → 4 个梦魇碎片。
- 仅限一级赐福;二级/三级与压制赐福不能回收。
赐福分为两类,都只能放入赐福槽:
- 压制赐福:不提供属性,只压制一项诅咒。
- 属性/功能赐福:不压制诅咒,提供属性与一个功能性效果。
同种赐福只能佩戴一件:正常放入时会被 canEquip 拒绝;通过命令等方式塞入的重复项,会在最多 1 秒内被服务器强制弹出并退回背包。
| 赐福 | 压制诅咒 | 等级 |
|---|---|---|
| 余烬心室 | 生命回复上限 | 三级 |
| 裂梦之牙 | 伤害衰减 | 三级 |
| 守夜甲壳 | 睡眠梦魇 | 三级 |
| 坚岩坠饰 | 出生点限制 | 三级 |
| 疾影羽饰 | 清醒双倍受伤 | 三级 |
| 回响铃 | 精神失常 | 三级 |
| 猎梦之眼 | 黑暗侵蚀 | 三级 |
| 赐福 | 等级 | 属性/功能 |
|---|---|---|
| 月华护符 | 一级 | +1 护甲,+0.005 移动速度 |
| 血月护腕 | 一级 | +1 攻击伤害 |
| 暮色护符 | 一级 | +0.5 护甲 |
| 梦沙袋 | 一级 | +1 幸运 |
| 荆棘护腕 | 一级 | +0.5 攻击伤害 |
| 余烬王冠 | 二级 | +2 护甲,+0.5 护甲韧性;抗火 |
| 潮汐吊坠 | 二级 | +4 最大生命值;水下呼吸 |
| 裂隙之瞳 | 二级 | +0.01 移动速度;夜视 |
| 守夜提灯 | 二级 | +2 护甲;抗性提升 I |
| 空壳护符 | 二级 | +2 攻击伤害,+0.5 击退抗性 |
| 月影斗篷 | 二级 | +2 护甲,+0.01 移动速度;缓降 |
| 血契指环 | 二级 | +4 最大生命值,+1.5 攻击伤害;生命恢复 |
| 深渊王冠 | 三级 | +6 护甲,+3 护甲韧性,+8 最大生命值;抗性提升 I |
| 虚空护手 | 三级 | +5 攻击伤害,+0.8 攻击速度;力量 I |
| 命运骰子 | 三级 | +2 幸运,+0.01 移动速度;20% 闪避,5 秒冷却 |
- 压制赐福不改变面板属性;属性/功能赐福不压制任何诅咒。
- 三个赐福槽可以在两类之间自由混搭。
- 猎梦之眼仍提供 +5% 梦魇碎片概率。
- 七件压制赐福全部为三级饰品,是七种诅咒对应的最终压制件。
- 属性/功能赐福分一至三级;祝福袋只产出一级饰品。
不再存在“三件赐福是否强于核心”的属性审计。现在的平衡点是七项诅咒、二十二件赐福和三个槽位:
- 想安全度过夜晚:带守夜甲壳。
- 想正常回血:带余烬心室。
- 想正常打怪:带裂梦之牙。
- 想保存出生点:带坚岩坠饰。
- 想避免清醒时被秒:带疾影羽饰。
- 想下矿/夜间探索:带猎梦之眼。
- 想长期不睡:带回响铃。
- 想补属性/功能:带余烬王冠、潮汐吊坠、裂隙之瞳、守夜提灯、空壳护符、深渊王冠、虚空护手或命运骰子,但对应诅咒不会因此失效。
未佩戴梦魇之核时:
- 所有赐福饰品无法装备(包括新增强力赐福)。
- 梦魇棱镜、归梦锚等本模组工具无法使用。
- 本模组攻击性内容无法使用。
余烬之刃除外:即使没有佩戴梦核,也可以正常作为武器/物品使用。梦核本身也可以正常拾取和装备。
玩家只能从中选三项,其余诅咒必须用玩法手段承受。
- 揭示周围 24 格内所有敌对生物(实现为
Enemy),使其发光 20 秒。 - 成功发现目标后冷却 60 秒;附近没有目标时只冷却 5 秒。
- 不消耗耐久,可重复使用。
- 合成:2 梦魇碎片 + 2 紫水晶碎片 + 1 玻璃。
- 潜行使用:绑定当前位置(维度 + 坐标 + 朝向)。
- 普通使用:回到绑定位置。
- 只能在同一维度内生效;落点被阻挡时会拒绝传送。
- 每次传送消耗 1 点耐久(共 8 点),并有 10 秒冷却。
- 合成:3 梦魇碎片 + 1 指南针 + 1 黑曜石。
- 生存模式解除梦魇之核的唯一手段。
- 对梦魇之核使用:直接把核心从梦魇槽中切下并放回背包;背包满时掉落在脚下。
- 每次成功使用消耗 64 点耐久,并对使用者造成 6 点魔法伤害;共 512 点耐久,约可切 8 次。没有核心时不消耗。
- 本身可作为武器:基础总伤害 8(略强于钻石剑的 7),攻击速度 1.6,介于钻石与下界合金剑之间;可附魔。
- 合成:3 梦魇碎片 + 1 铁剑 + 1 烈焰粉。
佩戴梦魇之核上床睡觉时,有 10% 概率触发诅咒 1:在床周围生成 1–6 只随机梦魇。只在非和平难度生成,每次上床判定一次;佩戴守夜甲壳时不会生成。
五种梦魇已分别注册为独立实体:
| 实体 ID | 名称 | 机制 | 生成权重 | 当前模型 |
|---|---|---|---|---|
rift_nightmare |
梦魇之眸 | 距离 >4 格时发射慢速无重力弹射物,近距离近战 | 30% | GeckoLib「梦魇之眸」模型 |
ashen_nightmare |
梦魇之颅 | 近战,基础生命 ×1.6,伤害 ×0.7 | 25% | 原版僵尸(占位) |
vigil_nightmare |
梦魇之影 | 近战,移速 ×1.5;无附魔武器伤害 -40% | 20% | 原版僵尸(占位) |
hollow_nightmare |
梦魇之手 | 近战,攻击附加中毒或凋灵 | 20% | 原版僵尸(占位) |
tidal_nightmare |
梦魇之心 | 无法移动;存活时 16 格内其他梦魇免疫伤害 | 5% | 原版僵尸(占位) |
基础属性仍然允许通过 nightmares.* 统一配置;默认值与原版僵尸一致:
- 最大生命值:20。
- 攻击伤害:简单/普通/困难均为 3。
- 移动速度属性:0.23。
- 跟随范围:35。
- 护甲:2。
- 上述生命/伤害/移速倍率会在基础配置之上应用。
- 永久存在、会主动锁定入睡的玩家。
- 击败后清除原版僵尸掉落,必定掉落 1–2 个梦魇碎片 + 1–2 个该类型专属材料,有 5% 概率直接掉落对应的属性/功能赐福,并有 10% 概率额外掉落 1 个祝福袋。
- 梦魇不会触发普通碎片掉落判定,避免双倍掉落。
只有佩戴梦魇之核的玩家会触发梦魇自然生成:
- 仅在夜间、非和平难度、玩家非旁观模式时判定。
- 默认每 **200 tick(10 秒)**判定一次,每次 15% 概率尝试生成。
- 每次触发会随机生成 1–6 只随机梦魇(受附近上限约束)。
- 生成在玩家周围 12–32 格的地表,最多允许附近存在 6 只梦魇。
- 生成时会直接锁定该玩家。
- 玩家未佩戴梦核时不会自然生成。
月相会提高指定梦魇的权重(默认倍率 5.0):
| 月相 | 月相名称 | 提高权重 |
|---|---|---|
| 0 | 满月 | 梦魇之眸 |
| 1 | 亏凸月 | 梦魇之颅 |
| 2 | 下弦月 | 梦魇之影 |
| 3 | 残月 | 梦魇之手 |
| 4 | 新月 | 梦魇之心 |
| 5 | 蛾眉月 | 梦魇之手 |
| 6 | 上弦月 | 梦魇之影 |
| 7 | 盈凸月 | 梦魇之颅 |
0.8.9 中出现的两种碰撞箱不是两个实体:
- 当时
rift_nightmare的实体类型注册尺寸仍是僵尸的0.6×1.95,部分实体没有及时刷新尺寸。 - 0.8.10 把
rift_nightmare的注册尺寸直接改为0.8×0.8,并在构造和每 tick 检查时调用refreshDimensions()。 - 旧存档中的梦魇之眸也会在加载后自动修正为 0.8×0.8×0.8。
梦魇之眸(rift_nightmare)使用重置后的 riven_eyeball 模型:
- 模型:
assets/nightmare_core/geo/nightmare_eye.geo.json(源文件riven_eyeball.geo.json) - 纹理:
assets/nightmare_core/textures/entity/nightmare_eye.png - 动画:
assets/nightmare_core/animations/nightmare_eye.animation.json(源文件riven_eyeball.animation.json) - 模型类:
NightmareEyeGeoModel - 渲染器:
NightmareEyeGeoRenderer - 动画:
glare:远程凝视攻击bite:近战啃咬攻击move:移动与待机循环
- 原始
riven_eyeball.animation.json使用完整键名,已统一规范为 GeckoLib 控制器使用的短名glare/bite/move。 - 使用 GeckoLib 4.8.3 驱动;其余四种梦魇仍使用僵尸模型占位。
- 近距离时梦魇之眸改用近战 AI,并触发
bite;距离较远时触发glare并发射弹射物。 - 0.8.10 已重新复制模型、纹理和动画资源,并通过 GeckoLib
GeoModel+GeoEntityRenderer加载。
- 撕咬动画和音效在攻击开始时触发,实际伤害延后 **10 tick(0.5 秒)**结算,使撕咬动作/声音比命中提前约 0.5 秒。
- 梦魇之眸脱离重力,使用飞行寻路,可以真正上下飞行,而不是固定悬浮在某个高度。
- 无目标时保持在约 1 格高度;锁定目标后会跟随目标高度,在脚下地面上方 0.5–2 格范围内升降。
- 碰撞箱改为 0.8×0.8×0.8 格(宽 0.8、高 0.8、碰撞底面 0.8×0.8)。
- 其余四种梦魇仍保持地面移动。
- 远程攻击不再使用原版箭矢,而是无重力、慢速的梦魇弹射物。
- 纹理:
assets/nightmare_core/textures/entity/nightmare_projectile.png - 默认初速度
0.22格/tick,不会被重力下坠;命中实体或方块后消失,最长存在 200 tick。 - 伤害与初速度分别由
nightmares.eyeProjectileDamage和nightmares.eyeProjectileSpeed配置。 - 默认伤害为
3.0,不再随难度自动变化;需要难度差异时请直接调整配置。
| 音效事件 | 文件 | 触发 |
|---|---|---|
nightmare_eye_glare |
sounds/nightmare_eye_glare.ogg |
远程凝视攻击 |
nightmare_eye_bite |
sounds/nightmare_eye_bite.ogg |
近战啃咬命中 |
nightmare_eye_hurt |
sounds/nightmare_eye_hurt.ogg |
受击 |
nightmare_eye_death |
sounds/nightmare_eye_death.ogg |
死亡 |
nightmare_eye_idle |
sounds/nightmare_eye_idle.ogg |
待机环境音 |
- 原始素材为
凝视攻击.mp3、啃咬攻击.mp3、受击.mp3、死亡.mp3、待机.mp3,已转为单声道 OGG Vorbis。 - 音效字幕位于
zh_cn.json/en_us.json的subtitles.nightmare_core.*。
- 梦魇不再设置自定义名称,也不会渲染名称标签。
- 梦魇的 AI 不会主动把村民或流浪商人设为目标;即使村民进入攻击范围也不会被主动追击。
- 其他目标(玩家、铁傀儡、普通敌对生物等)行为不变。
五种梦魇各自有刷怪蛋,可在创造模式物品栏或 /give 获取:
| 刷怪蛋 | 生成实体 |
|---|---|
| 梦魇之眸刷怪蛋 | rift_nightmare |
| 梦魇之颅刷怪蛋 | ashen_nightmare |
| 梦魇之影刷怪蛋 | vigil_nightmare |
| 梦魇之手刷怪蛋 | hollow_nightmare |
| 梦魇之心刷怪蛋 | tidal_nightmare |
- 梦魇暴露在阳光下(白天 + 能看到天空)时,每秒损失 30% 最大生命值。
- 这是魔法伤害,不受抗火影响;默认为 30%,可通过配置调整。
- 伤害可以致死。梦魇在阴影、夜晚或室内不会受到阳光伤害。
| 梦魇 | 专属材料 | 对应赐福 |
|---|---|---|
| 梦魇之颅 | 灰烬余烬 | 余烬王冠 |
| 梦魇之心 | 潮汐之泪 | 潮汐吊坠 |
| 梦魇之眸 | 裂隙碎片 | 裂隙之瞳 |
| 梦魇之影 | 守夜之眼 | 守夜提灯 |
| 梦魇之手 | 空壳残片 | 空壳护符 |
材料只由对应梦魇掉落,每只必掉 1–2 个;另有 5% 概率直接掉落对应一级赐福。
- 右键使用,消耗 1 个,随机获得一件一级饰品(5 件一级属性饰品:月华护符、血月护腕、暮色护符、梦沙袋、荆棘护腕)。
- 只由梦魇掉落,无合成配方。
- 背包满时奖励会掉落在脚下。
新增工作方块 梦魇工坊(nightmare_core:nightmare_forge),用于锻造全部 22 件饰品。
- 合成:4 梦魇碎片 + 2 裂隙碎片 + 4 石头 + 1 工作台。
- 用镐挖掘,掉落自身。
- 右键打开 GUI:左侧燃料槽、中央 3×3 材料槽、右侧产物槽。
- 燃料槽接受梦魇碎片或梦魇质:碎片 1 点/个,梦魇质 10 点/个。
- 每次锻造按配方的
fragment_cost扣除燃料值;梦魇质多出的部分会留存在工坊中。 - 配方匹配后需要 5 秒完成;完成时消耗材料与对应数量碎片。
- 工作方块会掉落内部物品。
| 等级 | 饰品 | 每次锻造碎片 |
|---|---|---|
| 一级 | 月华护符、血月护腕、暮色护符、梦沙袋、荆棘护腕 | 16 |
| 二级 | 余烬王冠、潮汐吊坠、裂隙之瞳、守夜提灯、空壳护符、月影斗篷、血契指环 | 32 |
| 三级 | 7 件压制赐福(余烬心室、裂梦之牙、疾影羽饰、坚岩坠饰、守夜甲壳、回响铃、猎梦之眼)、深渊王冠、虚空护手、命运骰子 | 64 |
- 所有 22 件饰品都改为工坊配方,旧的普通工作台配方已移除。
- 一级饰品直接锻造;二级配方消耗对应的一级饰品;三级配方消耗对应的二级饰品。
- 七件压制赐福全部是三级,不能再从祝福袋或直接掉落获得。
- 材料仍来自梦魇掉落与对应原版材料;梦魇之核不在此列,仍然没有合成配方。
- 祝福袋只产出 5 件一级饰品,不会直接开出二级/三级饰品。
- 物品提示会显示
一级/二级/三级饰品。
- 可选前置 JEI 15.20.0+。
- 新增 梦魇工坊锻造 分类,显示 3×3 材料、所需梦魇碎片数量和产物。
- 梦魇工坊方块作为该分类的催化剂显示。
- 可选 KubeJS 2001.6.5+(需要 Architectury/Rhino)。
- 已注册
nightmare_core:forging的 KubeJS schema,可这样添加配方:
ServerEvents.recipes(event => {
event.recipes.nightmare_core.forging(
['minecraft:diamond', 'minecraft:nether_star'],
16,
'minecraft:diamond_sword'
)
})无合成配方。 默认在玩家第一次使用床时于床边掉落;可通过 nightmare_core.giveCoreOnFirstSleep 关闭。
22 件饰品现在通过梦魇工坊消耗材料与梦魇碎片锻造;工具(余烬之刃、梦魇棱镜、归梦锚)仍使用普通工作台配方。
路径:config/nightmare_core-common.toml
| 配置项 | 默认 | 说明 |
|---|---|---|
fragment_drops.enableFragmentDrops |
true | 碎片掉落总开关 |
fragment_drops.baseChancePercent |
5.0 | 基础概率(百分比) |
fragment_drops.chancePerLuckLevel |
5.0 | 每级幸运增加的概率 |
fragment_drops.charmBonusPercent |
5.0 | 猎梦之眼额外增加的概率 |
fragment_drops.minFragments |
1 | 单次成功最少数量 |
fragment_drops.maxFragments |
3 | 单次成功最多数量 |
fragment_drops.dropFromMobs |
true | 击杀掉落开关 |
fragment_drops.dropFromBlocks |
true | 破坏方块掉落开关 |
fragment_drops.allowPassiveMobs |
true | 被动生物是否计数 |
fragment_drops.allowPlayerKills |
false | PvP 击杀是否计数 |
nightmare_core.keepCoreOnDeath |
true | 死亡时保留核心 |
nightmare_core.giveCoreOnFirstSleep |
true | 第一次睡觉时在床边给予梦核 |
nightmares.sleepSpawnChancePercent |
10.0 | 佩戴核心入睡时生成梦魇的概率 |
nightmares.blessingBagChancePercent |
10.0 | 梦魇掉落祝福袋的概率 |
nightmares.naturalSpawnEnabled |
true | 是否启用佩戴梦核时的自然生成 |
nightmares.naturalSpawnIntervalTicks |
200 | 自然生成判定间隔 |
nightmares.naturalSpawnChancePercent |
15.0 | 每次判定的生成概率 |
nightmares.naturalSpawnMinDistance |
12.0 | 距玩家最小生成距离 |
nightmares.naturalSpawnMaxDistance |
32.0 | 距玩家最大生成距离 |
nightmares.naturalSpawnMaxNearby |
6 | 附近梦魇数量上限 |
nightmares.moonFavoredMultiplier |
5.0 | 月相指定梦魇的权重倍率 |
每个梦魇在 [nightmares.<id>] 下有独立配置:
| 段 | 生命 | 伤害(简单/普通/困难) | 移速 | 跟随 | 护甲 | 权重 | 阳光伤害 |
|---|---|---|---|---|---|---|---|
nightmares.eye |
20 | 3 / 3 / 3 | 0.23 | 35 | 2 | 30 | 30% |
nightmares.skull |
32 | 2.1 / 2.1 / 2.1 | 0.23 | 35 | 2 | 25 | 30% |
nightmares.shadow |
20 | 3 / 3 / 3 | 0.345 | 35 | 2 | 20 | 30% |
nightmares.heart |
20 | 3 / 3 / 3 | 0.0 | 35 | 2 | 5 | 30% |
nightmares.hand |
20 | 3 / 3 / 3 | 0.23 | 35 | 2 | 20 | 30% |
每个变体共用字段:health、attackDamageEasy、attackDamageNormal、attackDamageHard、movementSpeed、followRange、armor、spawnWeight、sunlightDamagePercent。
额外机制配置:
| 配置项 | 默认 | 说明 |
|---|---|---|
nightmares.eyeRangedDistance |
4.0 | 梦魇之眸远程射击最小距离 |
nightmares.eyeRangedCooldownTicks |
30 | 梦魇之眸远程射击间隔 |
nightmares.eyeProjectileDamage |
3.0 | 梦魇之眸弹射物伤害 |
nightmares.eyeProjectileSpeed |
0.22 | 梦魇之眸弹射物初速度(格/tick) |
nightmares.shadowDamageReductionPercent |
40.0 | 梦魇之影对无附魔武器的减伤 |
nightmares.heartAuraRadius |
16.0 | 梦魇之心保护周围梦魇的半径 |
nightmares.handEffectDurationTicks |
100 | 梦魇之手中毒/凋灵持续时间 |
curses.health_cap.defaultPercent |
10.0 | 第2诅咒:0 级生命回复上限(%) |
curses.health_cap.levelsPerIncrement |
20 | 第2诅咒:每多少级提升一次 |
curses.health_cap.incrementPercent |
10.0 | 第2诅咒:每次提升的上限(%) |
curses.health_cap.maxPercent |
90.0 | 第2诅咒:最高回复上限(%) |
curses.damage.threshold |
5.0 | 第3诅咒:伤害阈值 |
curses.damage.reductionPercent |
20.0 | 第3诅咒:超过阈值后的削减比例(%) |
curses.spawn_point.hostileRadius |
16.0 | 第4诅咒:敌对生物检测范围(格) |
curses.darkness.triggerSeconds |
5.0 | 第6诅咒:低亮度触发时间(秒) |
curses.darkness.damagePercentPerSecond |
20.0 | 第6诅咒:触发后每秒伤害(最大生命值%) |
curses.insanity.days |
7.0 | 第7诅咒:多少天不睡触发精神失常 |
1.1.0 起,TOML 内的描述均使用中文;同时在 zh_cn.json / en_us.json 中提供了 nightmare_core.config.* 翻译键,供配置界面类模组读取。
如果是从旧版本升级,Forge 不一定会重写已有 TOML 的注释。想看到完整中文描述,请先备份并删除旧的 config/nightmare_core-common.toml,让服务器重新生成;这会恢复默认值。
修改配置后重启服务器/客户端。概率和数量会在每次判定时读取。
- 方块:
data/<你的命名空间>/tags/blocks/no_fragment_drops.json,标签 ID 为nightmare_core:no_fragment_drops。 - 实体:
data/<你的命名空间>/tags/entity_types/no_fragment_drops.json,标签 ID 为nightmare_core:no_fragment_drops。
示例:
{
"replace": false,
"values": [
"minecraft:spawner",
"minecraft:reinforced_deepslate"
]
}实体标签默认包含 minecraft:armor_stand。
- 梦魇槽位物品标签:
curios:nightmare。 - 赐福槽位物品标签:
curios:blessing。
如果要让整合包自制的饰品也能放入赐福槽,把物品加入 curios:blessing 标签即可。注意:该物品不会自动获得本模组的赐福数值审计保护。
槽位类型本身不会自动出现在玩家身上。本模组通过 data/nightmare_core/curios/entities/player.json 把 nightmare 和 blessing 绑定到 minecraft:player;如果数据包使用 replace: true 覆盖玩家实体槽位,需要手动保留这两个槽位。
直接在自己的数据包中使用相同路径覆盖 data/nightmare_core/recipes/*.json。如果不想让玩家通过配方书看到,可以同时删除对应的 data/nightmare_core/advancements/recipes/*.json。
# 改成你本机的 JDK 17 路径
$env:JAVA_HOME = 'D:\java\java17'
.\gradlew.bat build产物:build/libs/nightmare_core-1.20.1-0.8.23.jar。
仓库中的 dist/ 已放置构建完成的 jar 和 SHA256SUMS.txt,可以直接分发:
73662ed5617768073aa35d668c54dd68f2b63d52ed93cab95b3c4514c95f87dc nightmare_core-1.20.1-0.8.23.jar
libs/curios-forge-5.14.1+1.20.1.jar、libs/geckolib-forge-1.20.1-4.8.3.jar、libs/jei-1.20.1-forge-15.20.0.130.jar、libs/kubejs-forge-2001.6.5-build.16.jar 和 libs/rhino-forge-2001.2.3-build.10.jar 仅作为本地编译/测试依赖,不会被放进模组 jar,也不会随模组分发。Curios、GeckoLib 为硬前置;JEI 与 KubeJS 为可选前置。
- 在 Forge 47.4.16 专用服务器 + Curios 5.14.1 + GeckoLib 4.8.3 + JEI 15.20.0 + KubeJS 2001.6.5 上完成生产环境加载测试。
- Curios 输出
Loaded 12 curio slots,/curios list确认槽位类型存在:nightmare - nightmare_coreblessing - nightmare_core
- 玩家实体实际槽位:
CuriosApi.getPlayerSlots(overworld)输出[nightmare, blessing],确认不是只有全局槽位类型,而是玩家真的拥有这两个槽位。 - 七重诅咒测试:生命上限在 0 级为
2.0(10%×20),180 级为18.0(90%×20);装备余烬心室后不被压回(20.0)。 - 伤害规则测试:4 点攻击被取消(
lowCanceled=true);10 点攻击变为 8;清醒时 5 点受伤变为 10;装备疾影羽饰后保持 5。 - 精神失常测试:把最后入睡时间回拨后获得效果;装备回响铃后效果被清除;入睡后效果被清除。
- 梦魇实体测试:默认配置下生命
20、简单难度伤害3、移动速度属性0.23、护甲2,与僵尸一致。 - 梦魇专属材料测试:五种实体分别映射到灰烬余烬、潮汐之泪、裂隙碎片、守夜之眼、空壳残片。
- 属性/功能赐福测试:余烬王冠提供 +2 护甲、+0.5 护甲韧性,并正确施加抗火;不压制任何诅咒。
- 阳光测试:白天暴露在天空下时,20 生命的梦魇按每秒 6 点扣血:20 → 14 → 8 → 2 → 死亡;可通过配置调整。
- 刷怪蛋:五种梦魇刷怪蛋已注册并通过服务端加载;物品模型使用原版
template_spawn_egg。 - 模型动画:梦魇之眸已改用 GeckoLib
riven_eyeball模型,动画名为glare/bite/move。 - 弹射物测试:服务端成功召唤
nightmare_core:nightmare_projectile,位置与实体注册正常;无重力与慢速逻辑已接入。 - 弹射物配置:服务端生成
eyeProjectileDamage=3.0与eyeProjectileSpeed=0.22,代码读取正常。 - 音效:五段 MP3 已转成单声道 OGG Vorbis,
sounds.json注册五个音效事件。 - 名称渲染:新生成梦魇无
CustomName,且shouldShowName()返回 false。 - 村民行为:梦魇与村民近距离共处 8 秒后村民仍为 20 生命;
setTarget会拒绝村民/流浪商人。 - 飞行测试:在
y=-59召唤梦魇之眸,无目标时稳定在y≈-59(地面约y=-60,约 1 格高度);锁定目标后可在 0.5–2 格范围内升降。 - 碰撞箱:
getDimensions对梦魇之眸返回0.8×0.8底面、0.8高度;直接创建和自然生成的实测尺寸均为0.8×0.8。 - 模型重置:新的
riven_eyeball.geo.json含 26 根骨骼、1624 个立方体;动画键已统一为glare/bite/move。 - 撕咬时序:动画/音效在攻击开始时触发,伤害在 10 tick 后结算。
- 撕咬修复:动画键与控制器触发名一致,均为短名;避免完整
animation.riven_eyeball.*不匹配导致动画不播放。 - 自然生成测试:未佩戴梦核时
beforeCore=false;佩戴后hasCore=true,100% 判定下成功生成 6 只并达到附近上限。 - 月相权重:满月测试
phaseFavored=0,对应梦魇之眸。 - 旧实体修复:旧存档中的梦魇之眸会在 tick 检测到非 0.8 尺寸时自动
refreshDimensions()。 - 掉落修复测试:用刷怪蛋/召唤生成的梦魇被击杀后掉落 2 个梦魇碎片 + 2 个专属材料,掉落事件正常。
- 梦核依赖测试:赐福
canEquip不再检查梦核;未佩戴梦核时由 tick 检查将赐福退回背包,佩戴后正常保留。 - 变体测试:梦魇之颅 32 生命/2.1 伤害;梦魇之影移速 0.345;梦魇之心移速 0;无附魔铁剑对梦魇之影 10 点伤害降至 6;梦魇之心光环取消周围梦魇伤害。
- 首次睡觉测试:首次触发掉落 1 枚梦核(
first=1),第二次不再掉落(second=1),持久化标记为true。 - 配方检查:当前共 32 个配方:22 个梦魇工坊锻造配方、3 个工具配方、1 个梦魇工坊方块配方、1 个梦魇质配方、5 个一级赐福回收配方。
- 梦魇质燃料测试:2 个梦魇质(20 点)锻造 16 点配方,产物正常生成,燃料槽清空并储存剩余 4 点。
- 逐级晋升:二级配方消耗对应一级饰品,三级配方消耗对应二级饰品;示例:血月护腕 → 余烬王冠 → 深渊王冠。
- 压制赐福三级:七件压制赐福均已改为三级,并通过对应二级饰品晋升。
- KubeJS 联动:服务端加载 KubeJS 插件,测试脚本通过
event.recipes.nightmare_core.forging(...)成功添加 1 条配方,0 失败。 - 祝福袋测试:使用后只从一级饰品池抽取 1 件。
- JEI:编译期接入 JEI 15.20.0;客户端注册梦魇工坊锻造分类与催化剂。
- 群体生成测试:诅咒 1 单次触发实测生成 6 只不同梦魇;自然生成与睡眠遭遇共用
NightmareGroupSpawner。 - keepInventory 修复:所有赐福饰品的 Curios
getDropRule在keepInventory=true时返回ALWAYS_KEEP,不会在死亡时掉落;关闭该规则时保持原版掉落行为。 - 重生恢复:死亡时记录梦核与赐福槽位快照;重生后先补装梦核并恢复 3 个赐福槽,再按快照把赐福重新放回槽位。服务端模拟测试结果为
core=true heart=true crown=true slots=3 inv=0,即梦核与两件赐福均重新装备且背包无残留。 - 登录恢复:退出时把梦核/赐福槽快照写入玩家持久数据;重进后恢复 3 个赐福槽并按快照重新装备。服务端模拟测试结果为
core=true heart=true crown=true slots=3 inv=0。 - 死亡恢复(持久槽位):死亡/重生模拟事件链路后连续调用 5 次 Curios
processSlots,结果仍为core=true heart=true crown=true slots=3 inv=0;槽位修饰使用 permanent,不会被后续槽位刷新清除。 - 固定槽位测试:
writeTag→readTag后梦核仍在、赐福槽为 3,且两件赐福仍装备、背包无残留。 - 旧槽位迁移测试:先人为添加一个旧 +3 修饰,
ensure前为 3 槽,清理并重加后仍为 3 槽,连续两次调用仍为 3,不会叠成 6。 - 完整重进测试:
onLogout → writeTag → readTag → onLogin → tick后为core=true heart=true crown=true slots=3 inv=0。 - 完整死亡测试:
onDeath → readTag → onClone → tick后为core=true heart=true crown=true slots=3 inv=0。 - 固定槽位测试:
writeTag → readTag后为core=true heart=true crown=true slots=3 inv=0,赐福不再被判为无效。 - 0.8.23 打包了上述内容;服务器正常加载,无数据包解析错误。
- 专属配置测试:服务端生成
[nightmares.eye/skull/shadow/heart/hand]五个独立配置段,以及远程距离、减伤、光环半径、效果时长等机制配置。 - 0.8.17 打包了 32 个配方 与 10 个配方进度;服务器正常加载,无数据包解析错误。
- 配置文件已实际生成中文 TOML 注释;逐字节检查为合法 UTF-8。
- 同种赐福唯一性测试:临时假人放入余烬心室后,再尝试放入第二件同名饰品返回
duplicateBlocked=true,放入不同赐福返回differentAllowed=true,且核心展开的赐福槽数量为 3。 - 核心锁定与余烬之刃测试:生存模式下
survivalLocked=true;余烬之刃使用后coreAfterBlade=false、核心回到背包coreInInventory=1、耐久消耗bladeDamage=64。 - 睡眠梦魇测试:调试强制生成成功,默认生命
20、简单难度伤害3、移动速度属性0.23。 - 祝福袋测试:使用后获得 1 件随机基础赐福(
bagBlessingCount=1)。 - 无属性审计:启动日志为
Curses-only balance audit passed: 7 curses, 3 blessing suppression slots.,梦核与赐福均不再注册属性修正。 - 服务器正常进入
Done,无模组加载错误或数据包解析错误。
gradlew runServer 使用的是 ForgeGradle 开发环境;Curios 的发布 jar 带有面向生产环境的 Mixin refmap,直接放进开发运行环境可能触发 MixinInventory 的字段映射错误。这不是本模组的问题,也不影响生产服务器。
推荐用真实 Forge 服务端验证:把构建出的 jar 和 Curios 放进同一个 mods/,启动即可。上面的验证记录就是这样完成的。
梦魇核心.png:核心物品纹理。梦魇残片.png:碎片物品纹理。nightmare.png:梦魇槽空槽图标。赐福槽.png:赐福槽空槽图标。猎梦之眼:新增图标由tools/generate_assets.py生成。余烬之刃:新增图标由tools/generate_assets.py生成。祝福袋:新增图标由tools/generate_assets.py生成。灰烬余烬 / 潮汐之泪 / 裂隙碎片 / 守夜之眼 / 空壳残片:五种梦魇专属材料图标。余烬王冠 / 潮汐吊坠 / 裂隙之瞳 / 守夜提灯 / 空壳护符:五件基础属性/功能赐福图标。深渊王冠 / 虚空护手 / 命运骰子:三件强力数值/机制赐福图标。梦魇:梦魇之眸使用 GeckoLib 模型,其余四种暂时使用原版僵尸模型,后续可分别替换。精神失常:状态效果图标位于assets/nightmare_core/textures/mob_effect/insanity.png。
四张原始图在 design/source/ 中保留;空槽图标为适配 Curios 深色界面做了轻微提亮,其余物品图标由 tools/generate_assets.py 生成。重新生成:
python tools/generate_assets.py
python tools/generate_data.py- 依赖 Curios 的槽位与饰品判定;没有 Curios 时无法运行。
- 只对真实
ServerPlayer生效;假人、创造模式、旁观模式不参与掉落。 - 方块掉落以
BlockEvent.BreakEvent为准,被保护插件取消的破坏不会掉落。 - 如果服务器安装了改变
Attributes.LUCK的模组,概率会按最终幸运属性计算;这是有意的,不属于抢夺/时运。 - 取核心后赐福不会被 Curios 销毁;tick 检查会把它们退回背包。建议在安全位置使用余烬之刃。
- 同种赐福不可重复;通过命令强行放入的重复项会在最多 1 秒内被服务器退回。
- 生存模式无法通过 Curios 界面取下核心;创造模式保留管理员取下途径。
- 睡眠梦魇使用五种独立自定义实体类型;梦魇之眸使用 GeckoLib 模型,其余四种暂时套用原版僵尸模型,其他模组对僵尸的强化/削弱可能同时生效。
- 梦魇默认属性与原版僵尸一致,并全部可在配置中修改;旧的 200 生命/12-18 伤害/0.8 格每秒不再是默认值。
- 梦魇之眸使用 GeckoLib 自定义模型与动画,其余四种仍为僵尸占位模型。
- 梦魇刷怪蛋支持五种实体,可在创造物品栏或
/give中获取。 - 七重诅咒与三赐福槽的取舍是刻意设计的;祝福袋只给随机一级饰品,不保证能拿到想压制的诅咒对应件。
- 生命回复上限按当前最大生命值计算;梦核不再改变最大生命值,0 级上限为基础 20 的 10%(2 点),余烬心室是主要解法。
- 五种梦魇的行为、生命/伤害/移速倍率与生成权重均不同;后续可为各自替换模型。
- 梦核与赐福都不再注册属性修正;旧版“80% 属性上限”机制已完全移除。
- 梦核提示中的「(已被压制)」根据本地玩家当前佩戴的赐福实时计算;在 JEI 等没有玩家上下文的界面中只显示诅咒名称。
- 七件压制赐福只负责压制诅咒;十五件属性/功能赐福只提供属性与效果,不压制诅咒。
- 五种梦魇各自掉落对应专属材料,每只必掉 1–2 个;材料只用于对应赐福配方。
