与 TACZ 深度集成的 Minecraft 竞技对战系统
支持团队死斗(TDM)与自由乱斗(FFA),提供完整的战备管理、地图投票、复活机制、统计追踪与双 HUD 风格
游戏模式
对局流程
战斗机制
虚拟战备系统
虚拟弹药系统
虚拟改装系统
武器管理
经典风格(BossBar)
现代风格(CS2)
HUD 特性
地图创建与配置
地图投票
Cloth Config 集成
服务端配置
客户端配置
实战装备
装饰外观(需要 Cosmetic Armor Reworked)
玩家统计
对局总结
命令系统
保护机制
必需
libs/)可选
warvswar-<version>.jar 放入 mods/ 文件夹作为服务器管理员(OP),执行以下命令:
# 1. 设置大厅区域(站在大厅中心执行)
/ww setlobby 10
# 2. 创建地图(会打开图标选择界面)
/ww map create 沙漠风暴
# 3. 使用区域魔杖划定出生区域
# 创建地图后会自动获得所有队伍的区域魔杖
# 左键设置点1,右键设置点2并保存区域
# 为红队、蓝队、FFA、观察者分别划定区域
# 4. 完成!玩家现在可以投票并开始游戏
规则
特色
规则
特色
配置文件位置:config/warvswar-server.toml
游戏规则
defaultGameMode = "TDM" # 游戏模式:TDM / FFA
defaultScoreLimit = 30 # 分数上限:1-1000
defaultTimeLimit = 600 # 时间限制(秒):60-7200
defaultFriendlyFire = 0.0 # 友军伤害比例:0.0-1.0
playerMaxHealth = 20.0 # 玩家最大生命值:1.0-1024.0
naturalRegen = false # 自然回血
nameTagVisibility = "HIDE_FOR_OTHER_TEAMS" # 名牌可见性
场景设置
daylightMode = "CYCLE" # 昼夜模式:CYCLE / LOCK_DAY / LOCK_NIGHT
dayTimeTicks = 6000 # 白天时间刻(LOCK_DAY 时生效)
nightTimeTicks = 18000 # 夜晚时间刻(LOCK_NIGHT 时生效)
pseudoPeaceful = true # 伪和平模式
对局参数
autoStart = true # 自动开始
pregameProtection = true # 赛前保护
weaponLimit = true # 武器携带限制
assistWindow = 20 # 助攻判定窗口(秒)
loadoutDropDespawnTime = 300 # 战备物品消失时间(ticks)
respawnDelay = 5 # 复活延迟时间(秒)
掉落配置
dropPrimary = true # 掉落主武器
dropSecondary = true # 掉落副武器
dropPistol = true # 掉落手枪
dropMelee = false # 掉落近战
dropThrowable = false # 掉落投掷物
弹药配置
[magazines]
pistol = 3 # 手枪弹匣数
rifle = 4 # 步枪弹匣数
smg = 4 # 冲锋枪弹匣数
sniper = 3 # 狙击枪弹匣数
shotgun = 5 # 霰弹枪弹匣数
mg = 4 # 机枪弹匣数
rpg = 6 # 火箭筒弹匣数
other = 3 # 其他类型弹匣数
配置文件位置:config/warvswar-client.toml
HUD 设置
[client]
hudStyle = "CS2" # HUD 样式:BOSSBAR / CS2
hudOpacity = 0.9 # HUD 透明度:0.0-1.0
hudShowAvatars = true # 显示头像条(TDM)
hudAliveSummaryFormat = "RATIO" # 存活人数格式:X / RATIO
hudShowEndingHud = true # 结算阶段显示 HUD
hudStaleTimeout = 5 # 数据过期超时(秒)
hudOffsetY = 0 # HUD 垂直偏移(像素)
hudServerName = "WAR VS WAR" # 服务器名称
loadoutShowSilhouette = true # 战备界面显示剪影
图形界面(推荐)
/ww config命令行
# 查看当前配置
/ww config gamemode # 查看游戏模式
/ww config scorelimit # 查看分数上限
/ww config timelimit # 查看时间限制
# 修改配置
/ww config gamemode TDM # 设置为团队死斗
/ww config scorelimit 50 # 设置分数上限为 50
/ww config timelimit 900 # 设置时间限制为 15 分钟
/ww config friendlyfire 0.5 # 设置友军伤害为 50%
/ww config playerhealth 40.0 # 设置最大生命值为 40
/ww config respawndelay 10 # 设置复活延迟为 10 秒
# 重置配置
/ww config reset # 重置为默认值
/ww config reset all # 完全重置(包括大厅区域等)
/ww start # 打开地图选择界面
/ww start <地图ID> # 直接开始指定地图
/ww stop # 停止游戏(触发结算)
/ww map list # 列出所有地图
/ww map create <ID> # 创建地图(打开图标选择)
/ww map create <ID> <图标> # 创建地图并指定图标
/ww map delete <ID> # 删除地图
/ww map info <ID> # 查看地图信息
/ww map seticon <ID> # 设置地图图标(打开选择界面)
/ww map seticon <ID> <图标> # 直接设置地图图标
/ww map wand <ID> <队伍> # 获取区域魔杖
/ww setlobby <半径> # 设置大厅区域
/ww skull # 打开头颅图标库
/ww teamgear # 打开队伍装备配置
/ww cos # 同 teamgear(快捷命令)
/ww help # 显示命令分类
/ww help <命令> # 显示命令详细帮助
# 开发构建
.\gradlew build
# 发行构建(包含混淆)
.\gradlew clean build reobfJar
输出文件:build/libs/warvswar-{mod_version}.jar
src/main/java/com/warvswar/ ├── client/ # 客户端代码 │ ├── event/ # 客户端事件处理 │ │ ├── ClientHudEventHandler.java # HUD 事件驱动 │ │ └── ClientTooltipHandler.java # Tooltip 处理 │ ├── gui/ # 客户端 GUI │ │ └── LoadoutScreen.java # 战备界面 │ ├── hud/ # CS2 HUD 系统 │ │ ├── ClientHudRuntime.java # HUD 运行时 │ │ ├── ClientHudState.java # HUD 状态管理 │ │ ├── ClientSkinCache.java # 皮肤缓存 │ │ ├── Cs2HudOverlay.java # HUD 渲染 │ │ ├── Cs2HudOverlayRegistrar.java # HUD 注册 │ │ └── ModernScoreboardOverlay.java # 现代计分板 │ ├── ClientConfigHandler.java # 客户端配置处理 │ ├── ClientLoadoutData.java # 客户端战备数据 │ ├── ClientLoadoutManager.java # 战备管理器 │ ├── ClientSetup.java # 客户端初始化 │ └── ModConfigGui.java # 配置 GUI ├── common/ # 通用代码 │ ├── command/ # 命令系统 │ │ ├── MapIdArgumentType.java # 地图 ID 参数类型 │ │ ├── MapIdArgumentTypeInfo.java # 参数类型信息 │ │ └── ModCommands.java # 命令注册 │ ├── compat/ # 兼容层 │ │ ├── cosmetic/ # Cosmetic Armor 兼容 │ │ ├── CosmeticArmorCompat.java # 装饰盔甲兼容 │ │ └── LrTacticalCompat.java # LRTactical 兼容 │ ├── config/ # 配置系统 │ │ ├── ClientConfig.java # 客户端配置 │ │ └── ServerConfig.java # 服务端配置 │ ├── event/ # 事件处理 │ │ └── CommonEventHandler.java # 通用事件处理 │ ├── game/ # 游戏核心 │ │ ├── mode/ # 游戏模式 │ │ │ ├── FFAGameMode.java # FFA 模式 │ │ │ └── TDMGameMode.java # TDM 模式 │ │ ├── stats/ # 统计系统 │ │ │ ├── LastGameSummary.java # 上局总结 │ │ │ └── PlayerGameStats.java # 玩家统计 │ │ ├── GameManager.java # 游戏管理器 │ │ ├── GameState.java # 游戏状态 │ │ ├── GameTeam.java # 游戏队伍 │ │ ├── IGameMode.java # 游戏模式接口 │ │ ├── ResourceCleanupHelper.java # 资源清理 │ │ ├── SpawnRecord.java # 出生记录 │ │ └── WarConfig.java # 游戏配置 │ ├── gui/ # 服务端 GUI │ │ ├── BaseChestMenu.java # 基础箱子菜单 │ │ ├── ForceStartMapMenu.java # 强制开始菜单 │ │ ├── LoadoutMenu.java # 战备菜单 │ │ ├── MapIconMenu.java # 地图图标菜单 │ │ ├── SkullMenu.java # 头颅菜单 │ │ ├── TeamEquipmentMenu.java # 队伍装备菜单 │ │ ├── TeamMenu.java # 队伍选择菜单 │ │ └── VoteMenu.java # 投票菜单 │ ├── hud/ # HUD 数据模型 │ │ ├── HudEntry.java # HUD 条目 │ │ ├── HudMode.java # HUD 模式 │ │ ├── HudStyle.java # HUD 样式 │ │ └── HudSummary.java # HUD 摘要 │ ├── item/ # 物品 │ │ ├── InteractiveItem.java # 交互物品 │ │ └── RegionWandItem.java # 区域魔杖 │ ├── manager/ # 管理器 │ │ └── PlayerLoadout.java # 玩家战备 │ ├── map/ # 地图系统 │ │ ├── GameMap.java # 游戏地图 │ │ ├── GameRegion.java # 游戏区域 │ │ └── MapManager.java # 地图管理器 │ ├── network/ # 网络系统 │ │ ├── config/ # 配置网络包 │ │ ├── packet/ # 数据包 │ │ │ ├── hud/ # HUD 数据包 │ │ │ └── loadout/ # 战备数据包 │ │ └── PacketHandler.java # 包处理器 │ ├── player/ # 玩家系统 │ │ └── ClassManager.java # 职业管理器 │ ├── registry/ # 注册表 │ │ ├── ModCommandArgumentTypes.java # 命令参数类型 │ │ ├── ModItems.java # 物品注册 │ │ └── ModRegistries.java # 注册表 │ └── util/ # 工具类 │ ├── AttachmentHelper.java # 配件助手 │ ├── ItemLoreUtils.java # 物品描述工具 │ ├── ItemUtils.java # 物品工具 │ ├── MapUtils.java # 地图工具 │ ├── ScoreboardHelper.java # 计分板助手 │ ├── SkullHelper.java # 头颅助手 │ ├── SpawnUtils.java # 出生工具 │ ├── VirtualInventory.java # 虚拟背包 │ └── WandUtils.java # 魔杖工具 ├── mixin/ # Mixin 注入 │ ├── accessor/ # 访问器 │ └── tacz/ # TACZ 注入 │ ├── ClientMessageRefitGunMixin.java │ ├── ClientMessageUnloadAttachmentMixin.java │ └── GunRefitScreenMixin.java └── WarvsWar.java # 模组入口 src/main/resources/ ├── assets/warvswar/ │ ├── lang/ # 语言文件 │ │ ├── en_us.json # 英文 │ │ └── zh_cn.json # 中文 │ ├── models/ # 模型 │ └── textures/ # 材质 └── META-INF/ └── mods.toml # 模组元数据
游戏状态机
WAITING(大厅投票) ↓ STARTING(倒计时) ↓ INGAME(对局进行) ↓ ENDING(结算展示) ↓ WAITING(返回大厅)
职责边界
GameManager:服务端权威游戏逻辑与状态机WarConfig:服务端配置持久化(SavedData)MapManager:地图与区域数据持久化ClassManager:玩家战备/配件配置持久化ClientLoadoutManager:客户端战备数据管理HUD 数据链路
RequestHudStatePacketHudStateFullPacket(全量)或 HudStateDeltaPacket(增量)ClientHudState 作为唯一状态源Cs2HudOverlay 仅负责渲染与自适应布局Mixin 注入层
ThreadLocal 传递 PlayerLoadoutmod_version 并通过 .\gradlew buildPROTOCOL_VERSIONComponent 宽度计算zh_cn.json 时必须同步更新 en_us.jsonsetDirty()ConcurrentModificationException查看完整更新日志:
新增
/ww help 和 /ww help <命令>)变更
/ww 不带参数时显示帮助信息All Rights Reserved © FIENDLMAO
未经授权,禁止复制、修改或分发本项目代码。