死而复生

死而复生

ReviveByDeath是一个将致命时刻转变为电影式死亡回放的模组。

ReviveByDeath(死亡回放)

ReviveByDeath 是一个 Minecraft 1.21.1 模组(现已支持 Fabric、Forge 和 Neoforge),它将原本突然出现的死亡界面替换为一段充满戏剧性的电影回放序列。当玩家遭受致命伤害并满足条件时,时间会倒流,播放自定义过场动画,并将玩家安全传送回其最新的安全检查点。

该模组从零开始设计,旨在平衡生存游戏、多人服务器和硬核整合包,提供逐渐升级的消耗成本以及视觉化的时间裂隙效果。

过场动画

特性

  • 死亡回放:用自定义序列中断致命伤害,渲染客户端过场动画覆盖层并静音环境音效。
  • 自动检查点追踪器:持续检查并保存每个玩家的安全位置。
  • 手动床检查点:在白天或夜晚右键点击床,可立即注册一个安全检查点。
  • 死亡回放护甲附魔:一个面向生存模式的附魔,用于触发回放。
  • 多种激活模式:支持 enchantment(附魔)、totem(图腾)、both(两者)和 always(始终)模式,以适应各种玩法。
  • 逐渐升级的 XP 等级消耗:通过增加 XP 等级消耗来惩罚连续回放,在睡觉或正常死亡后重置。
  • 玩家幻影:在死亡点生成一个装备玩家护甲和武器的自定义僵尸(掉落率为 0%,以防止物品复制)。
  • 维度裂隙:返回时在玩家周围地面生成装饰性裂纹,随死亡次数增加而扩大,并自动恢复为原有方块,且不会破坏玩家建筑。
  • 复活后保护:返回后提供临时无敌,以防止立即死亡循环。

详细说明

1. 检查点系统

服务器会在后台自动追踪和更新每个玩家的最新安全检查点。

检查点保存条件:

仅当玩家满足以下条件时,位置才会被保存为检查点:

  • 存活且在地面上。
  • 不在熔岩、火焰或虚空中。
  • 站在坚固、实心、非液体的方块上。
  • 位于开阔空间(脚部和头部方块必须无障碍物)。

保存触发条件:

  • 自动:服务器按可配置间隔(默认为:如果已有检查点,每 5 分钟/6000 tick;如果正在寻找第一个安全检查点,则每 0.5 秒/10 tick)进行检测。
  • 手动(床):随时右键点击任何床,会立即尝试在玩家安全位置保存一个手动检查点,并显示一条确认消息。

2. 激活模式

模组的行为取决于 config/revivebydeath.json 中配置的 activationMode(激活模式):

  • enchantment(附魔):需至少装备一件带有 死亡回放 附魔的护甲。
  • totem(图腾):主手或副手需持有不死图腾。
  • both(两者):允许通过死亡回放护甲或图腾来触发回放。模组会先检查护甲:如果玩家穿着附魔护甲但经验等级不足,则自动降级为消耗图腾。
  • always(始终):死亡时始终激活回放,无需物品或附魔,但会消耗经验。适合创造模式展示或测试。

3. 死亡回放附魔

  • 类型:1级护甲附魔。
  • 进阶:标记为 non_treasure(非宝藏)和 tradeable(可交易)
  • 使用:只需一件已装备的护甲拥有此附魔即可激活回放。

4. XP 消耗升序

为了平衡回放的安全性,基于经验的模式(enchantment 和 always)会向玩家收取经验等级。

  • 消耗公式:等级消耗随每次成功回放而增长。默认从 6 级开始,并根据使用次数升级: $$\text{XP 等级消耗} = (\text{minimXpLevelCost} + \text{使用次数} \times \text{xpLevelCostIncrease}) \times \text{xpLevelCostMultiplier}^{\text{使用次数}}$$
  • 豁免:如果玩家缺乏所需经验等级,回放失败,他们将正常死亡。
  • 重置:累计回放次数在以下情况重置回最小值:
    • 玩家在床上睡觉(如果启用了 resetCostOnSleep)。
    • 玩家遭受普通原版死亡(如果启用了 resetCostOnDeath)。
    • 管理员执行 /revivebydeath reset_cost 命令。

5. 玩家幻影

当触发回放时,会在死亡坐标处生成一个僵尸:

  • 装备:复制玩家在死亡时手持/穿戴的护甲和手持物品。
  • 属性:被赋予永久的速度 II 和力量 I 效果,以及持续 10 秒的发光效果。
  • 平衡性:装备掉落率设为 0.0F(0%),以防止玩家通过击杀自己的幻影来复制装备。幻影不会保留玩家经验。

6. 维度裂隙

当玩家传送回检查点时,时间线上会出现裂隙,使其周围的地板方块开裂。

方块映射:

为防止玩家获得稀有资源或经验农场(例如,来自哭泣的黑曜石或 Sculk),裂隙使用安全的、装饰性且生存价值极低的方块:

  • 石砖 -> 裂纹石砖
  • 深板岩砖 -> 裂纹深板岩砖
  • 深板岩瓦 -> 裂纹深板岩瓦
  • 下界砖块 -> 裂纹下界砖块
  • 磨制黑石砖 -> 裂纹磨制黑石砖
  • 原木/木板 -> 玄武岩(烧焦的原木外观)
  • 石头/圆石 -> 凝灰岩
  • 草方块/菌丝/泥土 -> 粗泥
  • 沙子 -> 沙砾
  • 其他 -> 凝灰岩

配置参考

配置文件位于服务器/客户端的 config/revivebydeath.json:

键 默认值 描述
activationMode "enchantment" 触发回放的条件:"enchantment"、"totem"、"both" 或 "always"。
replaceVanillaTotem true 若为 true,将原版不死图腾机制替换为电影式回放。
consumeTotem true 触发回放时是否消耗不死图腾。
enchantmentArmorDamage 35 对带有死亡回放附魔的护甲造成的耐久度伤害值。
useXpCost true 若为 true,对非图腾回放应用递增的 XP 等级消耗。
minimumXpLevelCost 6 第一次回放的基础 XP 等级消耗。
xpLevelCostIncrease 2 每次回放后等级消耗的线性增加值。
xpLevelCostMultiplier 1.18 每次回放后等级消耗的指数倍增器。
resetCostOnSleep true 若为 true,在床上睡觉会将回放计数和消耗重置为最小值。
resetCostOnDeath true 若为 true,遭受普通原版死亡会将回放计数和消耗重置为最小值。
enableCutscene true 切换客户端电影式回放覆盖层和视觉延迟。
cutsceneIntroFadeTicks 4 序列开始时屏幕淡出为红/黑色所需的 tick 数。
cutsceneTicks 32 核心 PNG 过场动画循环的持续时间。
cutsceneFrames 50 自定义 PNG 覆盖层序列的总帧数。
returnEffectTicks 14 返回检查点后覆盖层淡出的持续时间。
postReviveInvulnerabilityTicks 60 返回后的无敌持续时间(单位:tick,20 tick = 1 秒)。
checkpointInitialCheckTicks 10 寻找玩家第一个检查点时的检测频率(单位:tick)。
checkpointRecheckTicks 6000 更新现有检查点时的检测频率(单位:tick)。
spawnPastShadow true 切换是否在死亡点生成装备玩家装备的僵尸。
createDimensionalRift true 切换检查点周围的地面开裂和复原效果。

命令

玩家命令

  • /revivebydeath status:显示玩家当前的检查点坐标、激活维度以及下次回放的 XP 等级消耗。
  • /revivebydeath log on:启用调试消息,显示回放失败的原因(例如,地面不安全、无检查点、经验不足)。
  • /revivebydeath log off:禁用调试消息。

管理员命令(权限等级 2)

  • /revivebydeath mode <always|totem|enchantment|both>:动态覆盖激活模式。
  • /revivebydeath cutscene <on|off>:全局切换过场动画播放。
  • /revivebydeath give_book:给予执行命令的玩家一本带有死亡回放附魔的附魔书。
  • /revivebydeath reset_cost [player]:重置目标玩家的回放计数和 XP 消耗。

模组验证与安装

ReviveByDeath 经过完全验证,并打包适用于 Minecraft 1.21.1 的 Fabric 和 Forge 加载器。它必须安装在客户端和服务器端,以确保过场动画同步、覆盖层、自定义音效和事件处理正常。