Disaster 灾难玩法
概述
Disaster 是一个基于 Bukkit/Spigot 的 Minecraft 灾难小游戏插件。玩家需要在随机发生的各种灾难中生存下来,游戏提供了房间系统、多种灾难类型、物品系统和多语言支持等功能。
核心特性
- 房间系统:支持多房间创建、加入、退出,自动管理游戏生命周期
- 灾难系统:包含 30+ 种随机灾难事件,分为主要灾难和次要灾难
- 物品系统:特殊物品和装备生成,帮助玩家在灾难中生存
- 命令系统:完整的游戏管理命令,支持权限控制
- 多语言系统:支持中文、英文等多种语言
- 事件监听:处理玩家交互、游戏保护、聊天等事件
系统架构
┌─────────────────────────────────────────────────────────┐
│ disaster (主类) │
├─────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ RoomManager │ │ DisasterMgr │ │ ItemManager │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────▼───────┐ ┌──────▼───────┐ ┌──────▼───────┐ │
│ │ Room │ │ Disaster │ │ Items │ │
│ │ (房间实例) │ │ (灾难基类) │ │ (物品系统) │ │
│ └──────────────┘ └──────┬───────┘ └──────────────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ Disaster │ │
│ │ Types (30+) │ │
│ └──────────────┘ │
├─────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ CommandMgr │ │ LangManager │ │ Listeners │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘文档目录
| 文档 | 描述 |
|---|---|
| 房间系统 | 房间创建、管理、玩家加入/退出、游戏流程控制 |
| 灾难系统 | 灾难基类、灾难管理器、30+ 种灾难类型详解 |
| 物品系统 | 物品生成、特殊道具、装备掉落机制 |
| 命令系统 | 命令注册、权限管理、子命令实现 |
| 多语言系统 | 语言文件加载、文本翻译、占位符替换 |
| 事件监听系统 | 游戏事件、玩家交互、保护机制 |
快速开始
游戏流程
- 创建房间:玩家使用
/disaster create或/disaster join加入游戏 - 等待阶段:房间等待足够玩家加入,显示 ActionBar 信息
- 倒计时:达到最小玩家数后开始倒计时(默认 30 秒)
- 游戏开始:
- 随机分配出生点
- 关闭自然生命恢复
- 开始灾难倒计时(默认 12 秒)
- 灾难爆发:
- 随机选择主要灾难(100% 概率)
- 30% 概率追加次要灾难
- 每隔一定时间(默认 60 秒)触发新灾难
- 游戏结束:
- 时间结束(默认 3 分钟)
- 或所有玩家被淘汰
- 判定胜利者并发放奖励
配置参数
yaml
# 游戏配置
minPlayers: 1 # 最小玩家数
maxPlayers: 16 # 最大玩家数
countdownTime: 30 # 倒计时时间(秒)
gameTime: 180 # 游戏时间(秒,默认 3 分钟)
disasterCountdownTime: 12 # 灾难爆发倒计时(秒)
disasterInterval: 60 # 灾难间隔时间(秒)
# 房间配置
room-prefix: "disaster-" # 房间世界前缀
Language: "en_us" # 默认语言技术栈
- 平台:Bukkit/Spigot 1.20+
- 语言:Java 21
- 构建工具:Gradle
- 依赖:
- Easy4Form(表单库)
- Bukkit API
- Spigot API