CradleMC官方WIKI

适用源码:fd73c2ee0dac31c7b7a96560623207e15046cd1c。本页描述当前实现,默认配置不等于实服配置。

入口与角色

玩家输入 /war 打开战争大厅。根命令权限 flrv.war.use 默认开放,不包含 flrv.war.admin;管理员开战、list、stop 命令保留并单独校验管理员权限。

大厅提供“发起战争”“宣战申请”“当前战争”“谈判与组织协议”“战争历史”。普通居民可查看本镇参战战况与相关历史;组织宣战、接受申请和协议签署要求当前镇长或国王。管理员可以查看全部申请和历史,但不能代替双方签署。

图形化宣战

流程:选择自己代表的组织 → 选择对方 → 选择战争方案 → 核对完整规则 → 发出申请 → 对方接受 → 检查双方设施 → 开战。

declaration.require-both-sides=true 会禁止管理员旧命令直接开战,要求改走申请;request-expire-seconds 默认 300,范围 1~604800。

战况与积分板

战况展示双方比分、剩余时间、设施控制方、争夺/占领进度与坐标。设施条目仅展示位置,不提供传送,不绕过战时传送规则。

积分与战争进度不占用 ActionBar。参战居民在领地之外也能看到右侧计分板:绿色己方、红色敌方,显示双方总分及击杀/占领/持续控制得分、目标分、剩余时间与控制设施数量。计分板通过独立的 Mojang 映射 26.2 数据包适配器实现,不调用 Folia 不支持的 Bukkit 独立计分板接口;服务器版本不兼容时记录明确错误,不退回 ActionBar。

设施面板每行一个 Towny 城镇,己方绿色、敌方红色,右侧显示该城镇的设施。每行最多八个设施,每页五行,可翻页,兼容国家战多城镇及盟友;每两秒在原箱子内更新,不重复打开窗口。

启用占领时,设施上方显示控制方、挑战方、进度条、占领秒数、半径与奖励。双方同时在范围内暂停占领和持续计分;无人时未完成进度回退,守方返回会清除未完成进度。同一阵营首次完成该设施占领才获得占领奖励;控制原属敌方的设施后,每完整一分钟获得持续控制分。

击杀归属在真实伤害事件中记录,要求双方为敌军、双方位于参战领地,并遵守重复目标计分冷却(默认 300 秒);创造/旁观不计分。

组织协议与历史

/war agreements 打开协议箱子大厅,包含发起协议、协议与谈判记录、组织协议仓库和操作说明;/treaty 和 /treaty list 是兼容入口。详见组织协议。

war_history 保存本版本运行后的战争结果、双方组织、参战城镇、比分、胜负/取消和起止时间;历史页面按组织权限过滤。历史保存失败时本次运行保留记录并后台重试,不会凭空补出此前版本未保存的战争历史。

数据与恢复

宣战申请保存在 war_invitations。待确认申请重启后在原期限内保留;开战检查中的申请重启后标记失败,不自动重新开战。战斗会话不跨停服续跑。战前领地快照与战后恢复保存在 war_terrain_plots、war_terrain_batches,恢复完成前不能再次开战。

来源

docs/war-lobby.md、docs/war-architecture.md;代码根 folia_plugin/src/main/java/com/flrv/:ui/war/WarLobby.java、logic/war/service/、logic/war/score/PacketWarSidebar.java、infrastructure/persistence/war/。