波次防守

波次防守

一款多功能的PvE与PvP引擎,包含波次防御、可自定义商店及三种竞技游戏模式,专为Minecraft设计。

Wave Defense 模组

安装

  1. 安装 Forge 1.20.1(推荐 47.2.0+)。
  2. 将构建好的 wavedefense-0.2.55.jar 复制到 mods/ 文件夹。
  3. 可选:安装 Mine and Slash(mmorpg 模组,v6.1.0+)以解锁每个位置的生物等级 / 经验 / 抗性设置。
  4. 启动客户端或专用服务器。

按键绑定

按键 功能
V 打开 Wave Defense 主菜单
B 直接打开商店
G 离开当前位置

主要特性

PvE 波次防守

  • 可配置的位置,包含玩家出生点、可选散布半径和生物出生点。
  • 可配置的波次,包含生物类型、数量、装备、效果、生成几率与规模调整。
  • 可配置第一波之前以及后续波次之间的延迟。
  • 积分系统,涵盖击杀、起始积分、购买、出售、奖励和完成加成。
  • 进出时背包的备份与恢复。
  • 起始物品与完成奖励。
  • 全局商店模式或基于积分的商店模式。
  • 带有事件触发器的战利品生成点。
  • 可选的自动激活区域,包含倒计时和粒子效果。
  • 可选的位置边界,具有计时器、伤害、传送回起点或立即投降模式。
  • 可选的惩罚波次传送门系统。
  • 用于显示波次、计时器、生物数量、玩家和积分的 TextDisplay 信息面板。
  • 当最后一名玩家在波次中途离开时,有 30 秒宽限期 —— 若有人重新加入则波次继续。

Mine and Slash 兼容性(可选)

当安装了 Mine and Slash(mmorpg 模组,v6.1.0+)时,每个 PvE 位置在位置编辑器的“特殊”选项卡中会获得额外的逐位置设置:

设置 效果
生物等级 设置该位置生成的每个生物的 MnS 等级
经验掉落加成 % 为每个生成的生物添加一个百分比 bonus_exp 修正器
火焰抗性 添加一个平坦的 fire_resist 修正器
水系抗性 添加一个平坦的 water_resist 修正器
闪电抗性 添加一个平坦的 lightning_resist 修正器
混沌抗性 添加一个平坦的 chaos_resist 修正器
物理抗性 添加一个平坦的 physical_resist 修正器

所有值默认为 0(不覆盖 —— MnS 使用其自身默认值)。 当未安装 Mine and Slash 时,此部分将完全隐藏。

PvP 模式

PvP 位置使用团队出生点和逐位置的 PvP 设置。

支持的子模式:

  • 标准模式:团队回合,包含购买阶段、倒计时、战斗阶段、胜/负积分和回合数。
  • 死亡竞赛:比赛期间可重生,达到击杀目标即获胜。
  • 大逃杀:随机分配出生点、缩小的边界、边界粒子效果以及最后存活者获胜的流程。

PvP 设置包括:

  • 团队出生点,带有可选的出生半径;
  • 最小玩家数;
  • 友军伤害;
  • 团队自动平衡;
  • 等待效果;
  • 起始积分;
  • 击杀积分与死亡惩罚;
  • 回合开始延迟;
  • 回合开始/胜利/失败积分;
  • 死亡竞赛击杀目标;
  • 大逃杀的边界半径、缩小间隔、粒子效果和边界伤害。

管理员编辑器

该模组设计为通过游戏内 GUI 界面进行配置:

  • 位置编辑器;
  • PvP 位置编辑器;
  • 波次列表编辑器;
  • 波次生物编辑器;
  • 波次触发器编辑器;
  • 生物选择;
  • 起始物品;
  • 完成奖励;
  • 商店编辑器;
  • 商店物品编辑器;
  • 商店可用性触发器编辑器;
  • 商店积分编辑器;
  • 战利品生成编辑器;
  • 导入/导出界面;
  • HUD 编辑器。
  • 玩家 PvP 团队选择界面。

0.2.43+ 版本的当前 UI 方向:

  • 减少冗长无结构的表单;
  • 对“基础”、“出生点”、“波次”、“商店”、“战利品”、“边界”、“传送门”、“HUD”和“PvP”进行分组分区;
  • 所有大型界面保持一致滚动行为;
  • 避免点击隐藏的已滚动出可视区域的组件;
  • 改善玩家商店浏览体验,支持列表和瓦片/网格模式;
  • 使有用的 PvE 位置设置和 PvP 位置设置保持一致;
  • 更清晰的 PvP 团队选择界面,为拥有多个团队的位置提供可滚动卡片。

商店系统

商店支持:

  • 每个商店条目可包含多个物品堆叠;
  • 购买和出售价格;
  • 分类;
  • 出售检查的可选 NBT 匹配;
  • 可用性触发器;
  • 全局商店物品;
  • 逐积分商店物品;
  • 通过 NBT 文件导入/导出。

面向玩家的界面:

  • 瓦片/网格视图,带有物品图标、紧凑价格、分类筛选和明确的购买/出售操作;
  • 经典列表视图仍可在同一商店界面中使用。

触发器系统

触发器用于波次、战利品、商店和位置事件。

示例:

  • 波次事件:WAVE_START、WAVE_END、WAVE_N、WAVE_COMPLETE;
  • 计时器:TIMER_60、TIMER_120、TIMER_300、TIMER_CUSTOM;
  • 生物事件:MOB_KILL、MOBS_KILLED_N、MOBS_REMAINING_LOW;
  • 玩家事件:PLAYER_JOIN、PLAYER_DEATH、PLAYER_ENTER_ZONE、PLAYER_HAS_ITEM;
  • PvP 事件:ROUND_START、ROUND_END、BUY_PHASE、MATCH_START、MATCH_END、TEAM_WIPE、KILL_STREAK_3;
  • 商店事件:SHOP_LOCATION_START、SHOP_WAVE_START、SHOP_WAVE_N、SHOP_PLAYER_HAS_ITEM。

命令

命令 描述
/wavedefense 主命令
/wd 别名
/wavedefense kick <players> 强制将玩家移出位置
/wavedefense tp <location> <players> 将玩家传送至位置
/wavedefense menu <player> [admin] 为玩家打开菜单
/wavedefense reload 重新加载已保存的位置数据

配置

游戏内(推荐)

打开 Mods 菜单 → 选择 Wave Defense → 点击 Config。 一个五选项卡的 GUI 涵盖了所有设置,无需手动编辑任何文件:

选项卡 设置
常规 HUD 叠加层、默认波次时间、UI 提示、大厅计时器、位置游戏模式
PvP 隐藏敌方名牌、默认回合数、默认购买时间
生物与商店 生物装备开关、护甲掉落几率、商店分类、商店快捷键
限制 最大生物类型数、波次数、出生点数、商店物品数、战利品生成数(1–9999)
调试 管理员调试消息、服务器日志详细程度

更改会在点击 保存并关闭 时立即写入磁盘。

文件(手动)

通用配置文件:

config/wavedefense-common.toml

Wave Defense — 模组详细描述


1. 总体概念

Wave Defense 是一个适用于 Minecraft 1.20.1 Forge 服务器的竞技场引擎。服务器管理员创建“位置”——具有独立规则的隔离竞技场。每个位置可以是 PvE(生物波次)或 PvP(团队战斗)。玩家通过菜单(V)进入位置,进行一场游戏,然后退出——所有配置均通过 GUI 完成,无需编辑文件。


2. 位置类型

2.1 PvE — “波次防守”

玩家抵御敌人生物波次。每波之后有暂停,然后继续下一波。目标是生存过所有已配置的波次。

主要循环:

进入 → 大厅(计时器) → 波次 1 → 暂停 → 波次 2 → … → 波次 N → 胜利

一场游戏中会发生什么:

  • 玩家被传送到位置的出生点
  • 应用起始装备(如果已配置)
  • 发放起始积分
  • 大厅计时器开始(通常 5 秒,等待加入)
  • 一波接一波地生成带有已配置装备、效果和几率的生物
  • 击杀生物 → 玩家获得积分;波次结束 → 波次奖励
  • 通过所有波次 → 胜利界面 → 发放奖励 → 传送回出口

2.2 PvP — “团队战斗”

玩家被分配到团队并进行竞技。有 5 种子模式:

子模式 说明
标准模式 回合制:购买阶段 → 倒计时 → 战斗。赢得更多回合的团队获胜
死亡竞赛 无限重生,最先达到 N 次击杀者获胜
大逃杀 各自为战 / 团队作战;场地边界缩小,最后存活的玩家 / 团队获胜
占领点 团队占领并保持多个点;点被控制时持续得分
山丘之王 规则相同,但只有一个争议点

3. 玩家所见与所为

3.1 进入位置

  1. 按下 V → 打开 PlayerMenuScreen
  2. 查看所有开放位置的列表,带有 [PvE] / [PvP] 标记
  3. 点击位置:
    • PvE → 立即加入
    • PvP → 首先打开团队选择界面(PvpTeamSelectScreen)
  4. 被传送到出生点,获得起始装备和积分
  5. 大厅计时器开始(如果有其他玩家,计时器已在运行 — 玩家可看到剩余时间)

3.2 PvE 游戏期间

  • HUD(右上角)显示:
    • 位置名称
    • 波次数:波次 3 / 10
    • 生物数量:随数量减少由绿 → 黄 → 红
    • 距下一波的时间,带进度条
    • 玩家积分
    • 团队成员列表
  • 商店(按键 B):花费积分购买物品;物品可用性取决于触发器(例如,“仅在第 3 波之后”)
  • 退出(按键 L):自愿投降 — 背包恢复到进入前状态,战利品获取根据设置
  • 死亡时:恢复(取决于位置的 keepInventory 设置)
  • 如果最后一名玩家在波次中途退出 → 30 秒等待暂停(宽限期);如果有人返回,游戏继续

3.3 PvP 游戏期间

通用:

  • HUD 显示:当前阶段(BUY / ACTIVE / WAITING)、回合比分、计时器、积分
  • 敌方玩家昵称已隐藏(通过 Minecraft Scoreboard API 和渲染钩子实现)

标准 / 死亡竞赛 / 大逃杀:

  • BUY 阶段:获得回合积分,商店开放
  • COUNTDOWN:3-2-1 倒计时
  • ACTIVE:战斗;每次击杀 = 积分;每次死亡 = 积分惩罚
  • 淘汰(大逃杀)或团队被歼灭(标准模式)= 回合结束
  • 回合结果 + 新积分 → 下一回合或比赛结束

占领点 / 山丘之王:

  • 地图上存在可占领的点(以粒子标记)
  • 进入点半径 → 开始占领(HUD 中显示进度条)
  • 如果双方团队都在点上 → 占领被冻结(争议状态)
  • 被占领的点每秒为团队提供积分
  • 右侧 HUD:点列表,显示所有者、进度条、积分计数器和回合计时器
  • 胜利条件:团队先达到 scoreToWin,或计时器结束时得分最高

3.4 排行榜

  • 玩家主菜单中的 🏆 排行榜 按钮(仅在位置外可见)
  • 打开 LeaderboardScreen:
    • 位置选择(可滚动按钮行)
    • 模式选项卡:PvE | 标准 | 死亡竞赛 | 大逃杀 | 占领点 | 山丘之王
    • 前十名表格:# | 玩家 | 积分 | <附加指标> | 时间 | 日期
    • PvE:积分 + 波次;PvP:积分 + 击杀

4. 管理员配置内容

4.1 打开管理员菜单

  • 按下 V(菜单键)→ 看到管理员按钮(需要操作员等级 2)
  • 或使用命令 /wavedefense menu <player> admin

4.2 AdminMenuScreen — 位置管理

  • 名称输入框(仅限 a-z、0-9、-、_)
  • 按钮:创建、编辑、删除(双击)、导入 / 导出
  • 所有位置的可滚动列表

4.3 LocationEditorScreen — PvE 位置(选项卡)

“基础”选项卡

参数 描述
名称 唯一标识符
玩家出生点 X Y Z + 📌 按钮(获取当前坐标)
出生散布半径 0 = 精确出生;> 0 = 在出生点周围随机半径内
保留背包 如果关闭 — 玩家背包将被保存并恢复
强制游戏模式 进入时设为生存模式,离开时恢复原模式
起始物品 编辑进入时发放的物品列表
完成奖励 给予满足条件玩家的物品 / 积分

“波次”选项卡

波次列表。每波包含:

参数 值
生物列表 生物类型、数量、每波增长、生成几率、击杀积分
生物装备 头盔、胸甲、护腿、靴子、主手、副手
生物效果 列表:效果:等级:持续时间
生成半径 特定于该类型,或使用位置默认值
波次出生点 指定 X Y Z,替代通用出生点
波次奖励 通过奖励积分、玩家药水效果、带占位符的命令
激活触发器 波次不按顺序激活,而是通过事件(PLAYER_JOIN、TIMER_60、MOBS_KILLED_N 等)
触发器起始波 触发器激活所需的最小波数
触发器冷却 秒 / 波次 / 一次性

“商店”选项卡

参数 描述
模式 GLOBAL(单一商店)或 POINT(多个商店点)
商品列表 单个条目最多 4 种物品,购买/出售价格
商品分类 ALL / WEAPON / ARMOR / CONSUMABLE / OTHER
可用性触发器 商品仅在事件后可用(例如,第 5 波)
NBT 匹配 仅允许出售具有精确 NBT 的物品
商店点 POINT 模式:坐标、访问半径、自己的商品列表

“特殊”选项卡(边界)

参数 描述
启用边界 启用地界
边界半径 1–9999 格
越界后果 TIMER_SURRENDER / DAMAGE / TELEPORT_BACK / INSTANT_SURRENDER
投降计时器 强制投降前的秒数(适用于 TIMER_SURRENDER)
边界伤害 每秒伤害(适用于 DAMAGE)
边界粒子 类型、数量、粒子墙高度

“特殊”选项卡(自动区域)

参数 描述
启用自动激活 区域自动开始游戏
区域中心 X Y Z 或出生点
区域半径 5–9999 格
激活时间 开始前的倒计时秒数(0 = 立即)
开始后开放 开始后新玩家可以进入的秒数
区域粒子 类型、数量、速度、间隔

“特殊”选项卡(传送门)

参数 描述
启用传送门 启用传送门系统
惩罚波次 -1 = 按顺序;0+ = 列表中的特定波次
传送门计时器 消失前秒数(未进入则触发惩罚)
通过后消失 惩罚波次完成后传送门是否消失
重生计时器 传送门之间的最短 30 秒
开始后开放 生成后玩家可以进入的秒数
退出时保留战利品 玩家从传送门退出时保留物品

“特殊”选项卡(信息面板)

游戏中的 TextDisplay 实体:

  • 出生点面板:在玩家出生点 — 显示波次、生物数、计时器、玩家数量、大厅计时器、第一波
  • 生物生成面板:在每个生物出生点 — 波次、计时器、生物数量
  • 每个面板:Y 轴偏移、文本缩放、行可见性开关

“Mine & Slash”选项卡(如果安装了 mmorpg v6.1.0+)

参数 效果
生物等级 每个生成生物的 MnS 等级
经验掉落加成 % bonus_exp PERCENT 修正器
火焰 / 水系 / 闪电 / 混沌 / 物理抗性 相应抗性的 FLAT 修正器

4.4 PvpLocationEditorScreen — PvP 位置(选项卡)

“通用”选项卡

参数 描述
团队出生点 X Y Z、团队名称、散布半径
最少玩家数 低于 N 名玩家时比赛不开始
友军伤害 团队成员之间的伤害
自动平衡 玩家在团队间均匀分配
等待效果 等待时获得缓慢+失明效果或旁观者模式
起始积分 进入时积分

“规则”选项卡(按子模式)

标准模式:

参数 描述
回合数 比赛中的总回合数
购买时间 BUY 阶段持续时间(秒)
回合开始延迟 ACTIVE 前的倒计时
回合胜利积分 获胜团队的奖励
失败积分 (惩罚或 0)
击杀 / 死亡积分 个人积分

死亡竞赛:

参数 描述
胜利击杀数 首个达到 N 次击杀的团队 / 玩家获胜
购买时间 类似标准模式

大逃杀:

参数 描述
边界半径 初始半径(最小 10 格)
缩小间隔 每 N 秒半径减少 1 格
边界粒子类型 周边的效果类型
粒子数量 墙的密度
边界伤害 边界外每秒伤害

占领点 / 山丘之王:

参数 描述
胜利积分 首个达到 N 积分的团队获胜(先到先得分模式)
每秒积分 每个点每秒提供的积分
回合时长 秒数(用于计时器模式)
胜利模式 先到先得分 或 计时器结束时分数最高

“占领点”选项卡(仅限占领点 / 山丘之王)

点列表及每一点编辑器:

参数 值
点名 显示在 HUD 和聊天中(最多 20 个字符)
位置 X Y Z 或 📌
占领半径 1–30 格
占领时间 1–120 秒以夺取该点
粒子类型 预设:smoke / flame / end_rod / witch / portal / snow / squid_ink
粒子数量 点周围的粒子环

4.5 管理员命令

命令 操作
/wavedefense 或 /wd 主命令
/wd tp <location> <players> 将玩家传送到位置
/wd kick <players> 强制将玩家移出位置
/wd menu <player> [admin] 为玩家打开菜单(或管理菜单)
/wd reload 从磁盘重新加载位置数据

5. 机制详细描述

5.1 触发器系统

触发器用于波次、战利品和商店。可以设定 AND 条件(两个触发器必须同时满足)、冷却时间和一次性。

可用触发器:

类别 触发器
玩家 JOIN、DEATH、ENTER_ZONE、OPEN_CHEST、OPEN_DOOR、LOW_HEALTH、FULL_INVENTORY、HAS_ITEM(自定义 ID)、HAS_DIAMOND/IRON/SWORD
计时器 TIMER_60、TIMER_120、TIMER_300、TIMER_CUSTOM(任意秒数)
波次 WAVE_START、WAVE_END、WAVE_N(特定波次)、WAVE_COMPLETE、WAVES_SURVIVED_5/10/20/N
生物 MOB_KILL、MOBS_KILLED_10/50/100/N、HALF_MOBS_DEAD、MOBS_REMAINING_LOW
PvP ROUND_START、ROUND_END、BUY_PHASE、TEAM_WIPE、KILL_STREAK_3、MATCH_START、MATCH_END
位置 LOCATION_START、LOCATION_END
商店 SHOP_LOCATION_START、SHOP_WAVE_START、SHOP_WAVE_N、SHOP_PLAYER_HAS_ITEM

5.2 积分系统

  • 积分是内部货币,与玩家等级无关
  • 获得途径:击杀生物、击杀玩家(PvP)、完成波次、赢得回合
  • 扣除途径:死亡惩罚(PvP)
  • 花费途径:商店
  • 完成奖励:将特定物品发放给积分 ≥ N 的玩家

5.3 排行榜

数据存储于 <world>/data/wavedefense_leaderboards.dat。

模式 主要分数 次要分数
PvE 获得积分 通过的波次
PvP 标准 / 死亡竞赛 / 大逃杀 积分 击杀
PvP 占领点 / 山丘之王 目标积分 击杀

每个位置每个模式的前十名。原子写入(.tmp → 重命名)。

5.4 背包备份

进入时(如果 keepInventory = false):

  • 完整背包(27 个槽位 + 护甲 + 副手)保存至 NBT
  • 玩家获得起始物品
  • 退出时(胜利 / 投降)— 背包精确恢复:槽位、护甲、副手、效果

5.5 难度动态调整(自动缩放器)

  • 按位置跟踪胜负统计
  • 如果玩家持续获胜 → 生物数量乘数增加
  • 如果持续失败 → 减少
  • 数据在服务器重启间保留

6. 位置配置示例

名称 模式 特点
新手竞技场 PvE 3 波、弱僵尸、无边界、全局商店
终局堡垒 PvE 20 波、每波带有 KILL_STREAK_3 触发器以生成奖励生物、边界伤害、第 10 波传送门
自动区域 PvE 当玩家靠近 10 格内时自动开始游戏,无大厅计时器
山丘之王·阿琳娜 PvP 山丘之王 中心一个点、300 积分胜利、5 分钟计时器、end_rod 粒子
五点占领 PvP 占领点 地图上 5 个点、200 积分胜利、争议冻结
大逃杀 PvP 大逃杀 20 个出生点、边界从 100 格缩小到 10 格、每秒 2 点伤害
PvP 死亡竞赛 PvP 死亡竞赛 无回合、30 次击杀获胜、每 3 分钟购买阶段
MnS 突袭 PvE 50 级生物、增加火焰抗性、200% 经验加成、仅限 MnS 玩家

7. 网络架构(概述)

  • 协议 v8,约 34 种数据包类型
  • 所有管理数据包在服务器端检查 hasPermissions(2)
  • 导出文件列表(RequestWaveExportListPacket)— 仅限操作员权限
  • SyncCtpStatePacket 每 20 刻(1 秒)发送一次,用于占领点 / 山丘之王 HUD
  • SyncPlayerDataPacket — 玩家状态、计时器、积分
  • SyncPvpStatePacket — PvP 阶段、比分、计时器

8. 本地化

8 种语言:EN · UK · DE · FR · ES · PL · PT-BR · ZH-CN