# ChallengePlugin
一个全面的 Minecraft 挑战插件,它增加了多个游戏玩法挑战,拥有一个复杂的计时系统和直观的 GUI 管理。
## 概述
ChallengePlugin 通过引入各种游戏玩法限制和修改来改变你的 Minecraft 体验。无论你想要阻止跳跃、随机化方块掉落,还是将地面变成熔岩,这个插件都提供了一个完整的挑战框架,具有持久的数据存储和易于使用的界面。
## 主要功能
### 挑战系统
- **禁止跳跃**: 阻止玩家跳跃
- **随机掉落**: 每个被破坏的方块掉落随机物品,而不是普通掉落
- **禁止自然回复**: 禁用基于饥饿的生命回复
- **禁止回复**: 完全禁用所有形式的生命回复
- **挑战失败即死亡**: 当玩家未能完成任何活跃的挑战时立即杀死玩家
- **地面是熔岩**: 随着时间推移,将玩家下方的方块转换为岩浆和熔岩
### 高级计时系统
- **灵活计时**: 可自定义颜色的倒计时或计时
- **动作栏显示**: 所有玩家的实时计时器可见性
- **挑战集成**: 只有当计时器运行时,挑战才会激活
- **持久存储**: 计时器状态在服务器重启后保存
### 用户界面
- **直观的 GUI 菜单**: 通过物品栏界面轻松管理挑战
- **设置自定义**: 每个挑战的详细配置选项
- **实时更新**: 对所有更改提供即时视觉反馈
- **管理员控制**: 基于权限访问所有功能
### 数据管理
- **YAML 持久化**: 所有设置和进度自动保存
- **世界重置系统**: 带有数据保存选项的完整世界再生
- **备份友好**: 在重置期间可以保留设置
## 安装
1. 下载最新版本
2. 将 JAR 文件放在服务器的 `plugins` 文件夹中
3. 重启你的服务器
4. 将 `challenge.admin` 权限授予管理员
## 指令
### 主指令
- `/menu` - 打开主挑战选择界面
- `/menu reset confirm` - 重置所有挑战和设置
- `/timer start|stop|pause|resume` - 控制计时器功能
- `/timer set <小时> <分钟> <秒>` - 设置特定的计时器值
- `/timer settings` - 打开计时器自定义菜单
- `/resetworld confirm` - 带有服务器重启的完整世界重置
### 实用指令
- `/timer save` - 手动保存当前状态
- `/timer drops check` - 检查方块将掉落什么物品(手持方块)
## 权限
- `challenge.admin` - 访问所有插件指令和菜单 (默认为 op)
## 技术细节
### 性能优化
- 使用并发地图的有效方块转换系统
- 使用挑战状态检查优化事件处理
- 安全清理活跃转换的内存
### 兼容性
- **测试版本**: Minecraft 1.21.4
- **API**: Spigot/Paper 1.21.4
- **Java**: 需要 Java 21 或更高版本
### 地面是熔岩机制
地面是熔岩挑战具有一个复杂的三个阶段转换系统:
1. **阶段 1**: 方块在可配置的延迟后转换为岩浆块
2. **阶段 2**: 岩浆块在额外的延迟后变成熔岩
3. **阶段 3**: 方块在最终延迟后重置为原始状态
每个阶段都会造成不同的伤害量,并向玩家提供视觉反馈。
## 配置
插件会自动创建一个 `data.yml` 文件来存储:
- 活跃的挑战状态
- 计时器配置和当前时间
- 地面是熔岩的计时设置
- 随机掉落种子以保证一致性
设置在服务器重启后保持不变,并且可以在世界重置期间有选择地保留。
## 开发状态
**早期 Beta** - 此插件目前处于早期 Beta 开发阶段。虽然核心功能稳定且经过测试,但某些功能可能会发生变化。请报告任何问题或建议。
### 已知的限制
- 挑战组合可能存在意外的交互
- 方块转换计时中的一些边缘情况
- 在大型多人游戏环境中有限的测试
## 计划功能
- 更多类型的挑战
- 基于团队的挑战模式
- 成就系统
- 增强的 GUI 动画
- 多人游戏特定的优化
## 支持
如有任何错误报告、功能请求或一般支持,请加入 Discord。 请包含你的服务器版本、插件版本,以及任何问题的详细重现步骤。