logo
0
0
WeChat Login
Forkfrommingpixel.net/war-vs-war, aheadmaster6 commits, behindmaster6 commits

WarvsWar

Version Minecraft Forge TACZ License

与 TACZ 深度集成的 Minecraft 竞技对战系统

支持团队死斗(TDM)与自由乱斗(FFA),提供完整的战备管理、地图投票、复活机制、统计追踪与双 HUD 风格

功能特性快速开始游戏模式配置指南开发文档


功能特性

🎯 核心竞技系统

游戏模式

  • TDM(团队死斗):红蓝对抗,团队协作击杀得分
  • FFA(自由乱斗):所有人互为敌人,个人击杀排名

对局流程

  • 大厅投票系统:实时票数统计、取消投票、强制开始
  • 自动开始机制:满足投票条件自动倒计时
  • 复活倒计时:死亡后观战,倒计时结束自动复活
  • 结算展示:MVP 评选、排行榜、游戏时长统计

战斗机制

  • 可配置玩家最大生命值(20HP~100HP)
  • 友军伤害比例控制(0%~100%)
  • 助攻判定系统(可配置时间窗口)
  • 战备锁定机制:移动或战斗后自动锁定装备

🔫 TACZ 深度集成

虚拟战备系统

  • 自动扫描所有已加载的 TACZ 枪包
  • 动态分类显示(步枪/冲锋枪/狙击枪/霰弹枪等)
  • 支持拖拽滚动与右键快速卸载
  • 多预设方案(3 套可切换配置)

虚拟弹药系统

  • 根据枪械类型自动计算备弹
  • 支持扩容弹匣自动适配
  • 无需在背包中携带弹药物品
  • 可配置各类型枪械的弹匣数量

虚拟改装系统

  • 无需拥有实体配件即可改装
  • 配件配置持久化保存
  • 集成原生 Tooltip 预览枪械数值
  • 战备锁定后禁止改装(竞技平衡)

武器管理

  • 武器携带限制:最多 2 把主武器 + 1 把手枪
  • 可配置死亡掉落行为(主武器/副武器/手枪/近战/投掷物)
  • 战备物品快速消失(默认 15 秒,可配置)
  • 支持 LRTactical 近战与投掷武器(可选依赖)

🎨 双 HUD 风格系统

经典风格(BossBar)

  • 使用原版 BossBar 显示对局信息
  • 兼容性最佳,适合传统玩家
  • 支持 Tab 列表详细统计

现代风格(CS2)

  • 仿 CS2 紧凑透明 HUD
  • 中心时间块 + 分数块 + 目标进度条
  • TDM 模式支持双方头像条或存活摘要
  • 自适应布局,窄屏自动降级
  • 按 Tab 键自动隐藏,不遮挡详细信息
  • 服务端权威数据,客户端平滑倒计时

HUD 特性

  • 实时同步对局状态(Full/Delta 增量更新)
  • 时间紧迫色彩提示(≤30s 黄色,≤10s 红色)
  • 玩家状态叠层(存活/死亡/掉线)
  • 可配置透明度、垂直偏移、服务器名称
  • 支持结算阶段继续显示(可配置)

🗺️ 地图管理系统

地图创建与配置

  • 支持中文地图名称
  • 可视化区域划定(区域魔杖)
  • 自定义地图图标(头颅库)
  • 多队伍出生点配置(红/蓝/FFA/观察者)

地图投票

  • 实时票数统计与广播
  • 支持取消投票
  • 管理员强制指定地图
  • 地图信息查看(区域数量、图标等)

⚙️ 配置系统

Cloth Config 集成

  • 主菜单配置界面(Mods → Config)
  • 游戏内配置界面(/ww config)
  • 分类清晰:对局设置 / 场景与掉落 / 客户端设置
  • 实时生效,无需重启

服务端配置

  • 游戏规则:模式、分数上限、时间限制、友军伤害
  • 对局参数:最大生命值、自然回血、名牌可见性
  • 场景设置:昼夜循环、伪和平模式
  • 掉落配置:各槽位掉落行为、物品消失时间
  • 弹药配置:各类型枪械弹匣数量
  • 复活延迟:可配置 0-60 秒(0 为立即复活)

客户端配置

  • HUD 样式选择(现代/经典)
  • HUD 透明度与垂直偏移
  • 头像显示与存活人数格式
  • 结算阶段 HUD 显示
  • 数据过期超时设置

🛡️ 队伍装备系统

实战装备

  • 为红蓝队配置战斗盔甲
  • 自动装备与卸载
  • 支持自定义盔甲属性

装饰外观(需要 Cosmetic Armor Reworked)

  • 独立的装饰盔甲槽位
  • 可隐藏实战盔甲外观
  • 仅影响视觉,不影响属性

📊 统计与追踪

玩家统计

  • 击杀/死亡/助攻(KDA)
  • 伤害统计
  • MVP 评选(击杀数优先,死亡数次要)

对局总结

  • 游戏时长统计
  • 排行榜展示(前 8 名)
  • 获胜队伍/玩家
  • 大厅展示上局总结

🔧 管理工具

命令系统

  • 完整的帮助系统(/ww help)
  • 游戏控制:开始、停止、强制结束
  • 配置管理:图形界面或命令行
  • 地图管理:创建、删除、配置、查看
  • 工具:区域魔杖、头颅库、队伍装备

保护机制

  • 赛前保护:非游戏状态玩家无敌(可配置)
  • 大厅保护:禁止丢弃物品与放入展示框
  • 伪和平模式:禁止怪物生成 + 饱和效果

快速开始

依赖要求

必需

  • Minecraft 1.20.1
  • Forge 47.2.0+
  • TACZ 1.1.7+(开发环境依赖通常放在 libs/

可选

  • LRTactical:提供近战与投掷武器(服务端与客户端需同时安装)
  • Cosmetic Armor Reworked:启用装饰盔甲功能
  • Cloth Config:提供图形配置界面(强烈推荐)

安装步骤

  1. 安装 Forge 与 TACZ
  2. warvswar-<version>.jar 放入 mods/ 文件夹
  3. 启动游戏(首次启动会生成配置文件)

最小可玩配置

作为服务器管理员(OP),执行以下命令:

# 1. 设置大厅区域(站在大厅中心执行)
/ww setlobby 10

# 2. 创建地图(会打开图标选择界面)
/ww map create 沙漠风暴

# 3. 使用区域魔杖划定出生区域
# 创建地图后会自动获得所有队伍的区域魔杖
# 左键设置点1,右键设置点2并保存区域
# 为红队、蓝队、FFA、观察者分别划定区域

# 4. 完成!玩家现在可以投票并开始游戏

游戏模式

TDM(团队死斗)

规则

  • 红蓝两队对抗
  • 击杀敌方玩家得 1 分
  • 先达到目标分数或时间结束时分数高的队伍获胜

特色

  • 队伍选择界面(大厅物品)
  • 双方头像条实时显示(现代 HUD)
  • 存活人数摘要(窄屏自动降级)
  • 队伍装备配置(实战 + 装饰)

FFA(自由乱斗)

规则

  • 所有人互为敌人
  • 击杀任何玩家得 1 分
  • 先达到目标分数或时间结束时分数最高的玩家获胜

特色

  • 无队伍概念,完全个人竞技
  • 显示领先者与自己的分数
  • 排行榜实时更新

配置指南

服务端配置文件

配置文件位置: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     # 战备界面显示剪影

游戏内配置

图形界面(推荐)

  • 主菜单:Mods → WarvsWar → Config
  • 游戏内:/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 数据链路

  • 客户端定期发送 RequestHudStatePacket
  • 服务端回复 HudStateFullPacket(全量)或 HudStateDeltaPacket(增量)
  • 客户端以 ClientHudState 作为唯一状态源
  • Cs2HudOverlay 仅负责渲染与自适应布局

Mixin 注入层

  • 虚拟背包:拦截枪械改装屏幕
  • 配件卸载拦截:防止玩家刷取配件物品
  • 上下文传递:使用 ThreadLocal 传递 PlayerLoadout

技术文档

开发规范

  1. 任何代码改动必须更新 mod_version 并通过 .\gradlew build
  2. 修改网络包需同步更新 PROTOCOL_VERSION
  3. UI 布局必须基于本地化后的 Component 宽度计算
  4. 修改 zh_cn.json 时必须同步更新 en_us.json
  5. SavedData 修改后必须调用 setDirty()
  6. 核心类需要双语 Javadoc 注释(中文/英文)
  7. 避免使用魔法值,使用常量或枚举替代
  8. 使用并发安全集合防止 ConcurrentModificationException

更新日志

查看完整更新日志:

最新版本 1.2.87(2026-01-29)

新增

  • 完善的命令帮助系统(/ww help/ww help <命令>
  • 详细的命令文档,包含使用示例和权限要求
  • 双语(中文/英文)帮助文本
  • 命令建议功能

变更

  • /ww 不带参数时显示帮助信息
  • 通过分类帮助页面改进命令可发现性

许可证

All Rights Reserved © FIENDLMAO

未经授权,禁止复制、修改或分发本项目代码。


致谢

  • TACZ:提供枪械系统基础
  • LRTactical:近战与投掷武器支持
  • Cosmetic Armor Reworked:装饰盔甲功能
  • Cloth Config:配置界面支持
  • Forge:模组加载器
  • Minecraft:游戏平台

问题反馈项目主页

Made with ❤️ by FIENDLMAO

About

No description, topics, or website provided.
2.14 MiB
0 forks0 stars1 branches0 TagREADMEMIT license
Language
Java98.8%
HTML1.2%