Epic Fight × TacZ 第一人称兼容

Epic Fight × TacZ 第一人称兼容

在安装Epic Fight时,恢复TacZ的第一人称和第三人称枪械动画。仅客户端。

Epic Fight × TacZ 兼容补丁

一款仅客户端的兼容性补丁,用于在安装 Epic Fight 的情况下恢复 TacZ 的枪械动画——包括第一人称(换弹、检视、拔枪)和第三人称(持枪姿态、身体倾斜、腿部姿势)。

本仓库同时维护两个并行版本:

  • 1.21.1 / NeoForge — main 分支。
  • 1.20.1 / Forge — 1201 分支(回溯移植)。

两个版本实现相同的修复逻辑(公共 API 的战斗模式抑制——仅在 HumanoidModel.setupAnim 上进行一次 TAIL 注入);只有加载器和依赖版本有所不同。

TacZ、Epic Fight 和 PlayerAnimator 均为必需依赖。缺少它们时模组将拒绝加载——它本身没有任何独立用途。


简介(CurseForge)

在安装 Epic Fight 时恢复 TacZ 的第一人称和第三人称枪械动画。仅客户端。分别为 1.21.1/NeoForge 和 1.20.1/Forge 提供独立构建。

问题描述

当同时加载 TacZ 和 Epic Fight 时,会出现两个回退问题:

  • 第一人称:Epic Fight 的战斗模式渲染器会在 TacZ 运行其 ItemInHandRenderer 链之前接管玩家的手臂。因此,持枪时的换弹、检视和拔枪动画会无声地消失。
  • 第三人称:即使强制 Epic Fight 进入原版模式,Epic Fight 的 HumanoidModel.setupAnim TAIL 注入仍会在 TacZ 之后运行,导致持枪姿态被清除。玩家会恢复为默认的原版行走动画。

本模组的修复方式

三项独立修复:

  1. 第一人称刻(Tick)补丁。 每个客户端刻,当本地玩家持有 TacZ 枪械(IGun)时,通过 LocalPlayerPatch.toVanillaMode(...) 强制 Epic Fight 回到原版模式。切换为非枪械物品后,战斗模式会立即恢复。
  2. 第三人称 Mixin。 在 HumanoidModel.setupAnim 上以 priority=1500 注入一个 TAIL(确保在 Epic Fight 之后运行),重新调用 TacZ 的 InnerThirdPersonManager.setRotationAnglesHead,恢复持枪姿态。
  3. PlayerAnimator 依赖。 TacZ 的第三人称逻辑只有在 PlayerAnimator 存在于类路径时才会播放全身枪械动画(身体倾斜、腿部姿势、下蹲);否则会静默回退为仅手臂姿态。本模组将 PlayerAnimator 设为必需依赖,以确保视觉效果与独立安装 TacZ 时一致。

无资源替换、无服务端代码、无配置文件。

环境要求

1.21.1 / NeoForge 构建(main 分支)

版本
Minecraft 1.21.1
NeoForge 21.1.228 或更新
TacZ 1.1.0+(非官方 NeoForge 移植版)
Epic Fight 21.0.0+
PlayerAnimator 2.0.0+

1.20.1 / Forge 构建(1201 分支)

版本
Minecraft 1.20.1
Forge 47.4.10 或更新
TacZ 1.1.8(1.20.1 Forge 移植版 — CurseForge / Modrinth)
Epic Fight 20.14.17-mc1.20.1-forge(CurseForge 文件 8049910)
PlayerAnimator 1.0.2-rc1+1.20(CurseForge 文件 4587214)

同一 Minecraft 版本线上 TacZ / Epic Fight / PlayerAnimator 的更新补丁版本在加载时被接受,但只有上列版本经过了各构建的验证。

安装方法

  1. 为你的 Minecraft 版本安装对应的加载器(1.21.1 使用 NeoForge 21.1.228+,或 1.20.1 使用 Forge 47.4.10+)。
  2. 将 TacZ、Epic Fight、PlayerAnimator 和 本模组 JAR 文件(选择与你 Minecraft 版本匹配的那个)放入 mods/ 文件夹。
  3. 启动游戏。装备枪械后,TacZ 动画应能在第一人称和第三人称下正常播放,而 Epic Fight 的战斗姿态在其他情况下照常工作。

本模组仅在客户端运行。在专用服务器上可以安全省略。

已知限制

  • 第一人称仅对本地玩家生效。其他持枪玩家在你的屏幕上仍会以 Epic Fight 的战斗骨架渲染——修复该问题需要改动服务端状态,不在本模组范围内。(第三人称 Mixin 对所有玩家生效。)
  • 补丁依赖于 TacZ(IGun、InnerThirdPersonManager.setRotationAnglesHead)、Epic Fight(LocalPlayerPatch.toVanillaMode、isEpicFightMode、EpicFightCapabilities.getCachedLocalPlayerPatch)的公共 API 签名以及 PlayerAnimator 的模组 ID(playeranimator)。如果这些在未来版本中发生变化,本补丁需要重新构建。

源码 / 问题反馈

许可证

MIT — 随意使用,无任何担保。

致谢

  • TacZ 团队开发了原版枪械模组,以及 1.20.1 Forge 维护者和非官方 1.21.1 NeoForge 移植者使其在多个版本中延续。
  • Yesman / Epic Fight 团队开发了战斗模组。
  • KosmX 开发了 PlayerAnimator,没有它,TacZ 的第三人称枪械动画将回退为仅手臂姿态。

本项目与 TacZ、Epic Fight 或 PlayerAnimator 无任何关联。