跳到主要内容

模组开发者手册

BlockOffensive 的源码把 FPSMatch 的通用竞赛框架和 CS 玩法拆开:地图、队伍、回合、房间和基础商店来自 FPSMatch;CSGameMap、C4 目标、死斗计分、比分同步、击杀镜头与客户端 HUD 由 BlockOffensive 扩展。

先认识模块边界​

目标入口
注册或修改回合模式map/CSGameMap、map/CSMapRoundContext、map/CSEliminationRule
添加爆破规则CSBombExplodedRule、CSBombDefusedRule、CompositionC4
扩展死斗CSDeathMatchMap、CSDMScoring、CSDMTeamSemantics
同步比分和设置net/CSScoreboardS2CPacket、CSGameSettingsS2CPacket
绘制 HUD 与旁观client/screen、client/spec、client/BOClientEvent
接入可选模组compat/ 下的独立兼容类

回合与地图生命周期​

不要在客户端推断胜负。服务端地图持有回合上下文、队伍、目标状态和结算原因,客户端只消费同步快照。新规则应接入 FPSMatch 的地图/回合事件,在 start、tick、死亡、目标完成和 reset 时清理自己的状态。

网络与客户端​

为 HUD、商店、旁观和 C4 进度定义明确的 S2C/C2S 包;服务端校验玩家、地图和回合状态,客户端只负责展示和发起意图。断线重连后重新发送完整快照,不要依赖客户端保留旧状态。包含 Minecraft、渲染器或第三方模组类型的代码放在客户端或独立兼容类,避免专用服务端加载失败。

资源与集成​

HUD 资源使用 assets/blockoffensive 命名空间;地图图标、消息和武器数据通过数据包或资源包提供。TaCZ、KubeJS、Physics Mod 等集成只在目标模组存在时实例化,公共规则不要直接引用可选依赖类型。

开发验证​

  • 用一个空地图验证加载、开始、重置和清理。
  • 用两队和最小出生点验证加入、重连、死亡、旁观和回合结算。
  • 在服务端无 Modern UI、无可选枪械模组的情况下启动,确认类加载边界安全。
  • 检查 C4、比分、商店和 HUD 在重新进入地图后都收到新快照。

源码中的测试与 README.md 版本矩阵是 API 兼容性的最终参考。