Skip to content

兼容与架构

BlockZ 的难点不在单个功能,而在多个系统同时工作时仍要保持一致性:UI 要兼容外部菜单,背包要兼容外部装备槽,第一人称要兼容枪械渲染,配置还要兼容联机同步。

核心架构模块

  • init:注册物品、菜单、实体、效果与声音。
  • menu:承载 DayZInventoryMenu 等核心库存逻辑。
  • client.gui:承载 DayZ HUD、库存界面与容器界面渲染。
  • network:负责配置快照、姿态、背包与状态同步。
  • mixin:用于接入原版渲染、相机、菜单与玩家行为链路。
  • compat:用于承接 Curios、TaCZ 等外部模组联动。

Curios 兼容

Curios 为 BlockZ 提供了可扩展装备槽的标准接口层。

  • 接入方式:BlockZ 会收集额外 Curios 槽位引用,并在打开 DayZ 菜单时同步到客户端,从而在 DayZ 风格装备区中以统一布局呈现。
  • 为什么重要:其他模组新增的装备槽,不必强迫玩家回到原版 UI 才能使用,而能继续保留 BlockZ 的统一交互体验。
  • 分组与图标:当前额外槽支持按分组布局、折叠与图标读取。这让装备系统不是简单堆更多格子,而是更接近真正的装备面板设计。
  • 维护重点:继续做 Curios 适配时,优先保持服务端与客户端槽顺序一致,避免点击错位和同步错位。

TaCZ 兼容

TaCZ 是 BlockZ 当前最重要的战斗向联动对象之一。

  • 弹药兼容:BlockZ 已在玩家库存能力聚合与枪械换弹链路层面处理 TaCZ 弹药扫描,使其能识别 BlockZ 的嵌套存储与装备容器结构。
  • 第一人称渲染兼容:对 TaCZ 枪械采用单独的第一人称兼容模式,避免身体手臂、原版手臂和枪模之间发生重叠或错误覆盖。
  • 趴下与姿态兼容:趴下状态会同步到 TaCZ 的对应状态层,使枪械与玩家姿态能共享同一战术语义,而不是各自为政。
  • 兼容重点:TaCZ 的换弹、第一人称渲染和姿态切换分布在不同调用链上,所以兼容不能只停留在物品判断层。

Thirst 与状态扩展

BlockZ HUD 已具备对口渴能力的兼容读取逻辑,使生存状态栏可以继续扩展到更完整的生理维度。这类兼容价值在于:让玩家在一个 HUD 中理解全部核心状态,而不是被多个模组 UI 分裂体验。

GeckoLib 与实体表现

自定义丧尸与尸体实体依赖 GeckoLib 渲染和模型结构,这为后续继续扩展实体动作、死亡表现和特种感染体留出了空间。

UI 接管策略

  • 现有原则:BlockZ 并不尝试接管所有打开的菜单,而是对已知安全的原版容器做 DayZ 风格换皮,对模组菜单和服务器插件菜单尽量保留原链路。
  • 这样做的原因:盲目接管菜单会破坏原模组的点击链路、窗口 ID 逻辑或服务器插件事件。对多人服务器来说,这类问题比“界面不够统一”严重得多。
  • 维护建议:后续新增容器兼容时,优先走白名单 + 原逻辑保底路线,未知菜单默认放行更安全。

服务端权威同步

  • 配置快照:通过专门网络包在登录、重载和跟踪事件中把服务端关键配置同步给客户端,让 HUD、容量、镜头与状态系统在联机下使用同一套参数源。
  • 状态缓存清理:客户端退出服务器时会清理同步缓存,避免跨服残留。

BlockZ Wiki · Built with VitePress