Skip to content

Releases: KokuuWork/deathback

DeathBack v1.1.0 — 只补写 CMI 死亡点

Choose a tag to compare

@Kansamu216 Kansamu216 released this 11 Oct 06:30

变更

插件定位变更:不再提供独立命令,不再接管 /back,改为在死亡时把死亡坐标补写进 CMI,玩家继续用原生的 /back。

核心改动

  • 移除 /deathback 命令,插件只在后台工作,对玩家完全透明
  • 死亡时写入 CMIUser 的两个字段(与 CMI 原生 onPlayerDeath 完全一致):
    • setDeathLoc(new CMILocation(loc)) → 供 /dback
    • setLastTeleportLocation(loc, false) → 供 /back
  • 三重数据源:PlayerDeathEvent → EntityDeathEvent → corpse:corpse 实体生成兜底
  • 同玩家 3 秒防重,避免重复事件把坐标覆盖成重生点
  • Arclight 适配:mod 实体需经 getHandle() 取 NMS 原始实体才能反射到 getCorpseUUID()

根因(字节码级证实)

CMI 的 UserEvents.onPlayerDeath 里,setLastTeleportLocation 存在 cmi.command.back.ondeath 权限门槛。服务器 default 组通常只给了 cmi.command.back,缺这一条 → 唯独「死亡后 /back」失效;而 tp/home/warp 走的是另一条无门槛的链路(teleportBack),所以一直正常。

正统解法同时推荐:lp group default permission set cmi.command.back.ondeath true
本插件是绕过该权限门槛的「保险层」。

兼容性

CMI 9.7.12.3 与 9.8.10.3 的反射接口已逐一反汇编核对,完全一致。

实测

在 Arclight 1.20.1 + CMI 9.8.10.3 的完整副本服务端验证,写入 / 防重 / 事件忽略 / 尸体兜底全部通过。

安装

把 DeathBack-1.1.0.jar 丢进 plugins/,重启即可,无需任何配置或权限。