- 版权类型
- 原创
- 插件中文名称
- 幸运服务器工具
- 插件英文名称
- luckyservertool
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- Purpur
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
- 1.20
# LuckyServerTool 使用说明书
## 插件信息
- **插件名称**: luckyservertool
- **适用版本**: Minecraft 1.21.11 PaperMC
- **当前版本**: 2.3.1
- **描述**: 一个功能强大的服务器管理插件,提供多种服务器管理指令
- **备用指令**: 所有 `/server` 指令均可使用 `/byserver` 作为替代,例如:`/byserver stop 1`
## 权限说明
- 所有指令需要 `luckyservertool.admin` 权限,默认 OP 拥有此权限
## 指令列表
### 1. 服务器关闭指令
**指令**: `/server stop <分钟>`
**功能**: 延迟关闭服务器,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器关闭倒计时,精确到秒
- 示例: `/server stop 5` - 5分钟后关闭服务器
### 2. 带原因的服务器关闭指令
**指令**: `/server stopyy <分钟> <原因>`
**功能**: 延迟关闭服务器,左侧计分板和 ActionBar 显示倒计时和关闭原因
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- `<原因>`: 服务器关闭的原因,支持中文
- 计分板显示: 服务器关闭倒计时,精确到秒,并显示关闭原因
- ActionBar 显示: 更加醒目的倒计时和原因显示
- 显示格式: ★★★★★ 服务器关闭 ★★★★★ 倒计时: 01:00 【原因: 维护升级】 请做好准备!!!
- 示例: `/server stopyy 1 维护升级` - 1分钟后关闭服务器,原因是维护升级
### 3. 踢出所有玩家指令
**指令**: `/server kickall <分钟>`
**功能**: 延迟踢出所有玩家,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器将在 X分/X秒后释放资源,会踢出所有玩家
- 示例: `/server kickall 3` - 3分钟后踢出所有玩家
### 3. 发送消息给所有玩家
**指令**: `/server tell <内容>`
**功能**: 给所有在线玩家发送服务器消息
- `<内容>`: 要发送的消息内容
- 消息格式: `[服务器] 内容`
- 示例: `/server tell 服务器即将维护`
### 4. 发送消息给指定玩家
**指令**: `/server tell <玩家名称> <内容>`
**功能**: 给指定在线玩家发送服务器消息
- `<玩家名称>`: 目标玩家的游戏名称
- `<内容>`: 要发送的消息内容
- 消息格式: `[服务器] 内容`
- 示例: `/server tell Steve 欢迎回来`
### 5. 取消服务器关闭
**指令**: `/server unstop`
**功能**: 取消正在进行的服务器关闭倒计时
- 仅在服务器处于关闭倒计时状态时有效
- 示例: `/server unstop`
### 6. 取消带原因的服务器关闭
**指令**: `/server unstopyy`
**功能**: 取消正在进行的带原因的服务器关闭倒计时
- 仅在服务器处于带原因的关闭倒计时状态时有效
- 示例: `/server unstopyy`
### 7. 取消踢出所有玩家指令
**指令**: `/server unkick`
**功能**: 取消正在进行的踢出所有玩家倒计时
- 仅在服务器处于踢出所有玩家倒计时状态时有效
- 示例: `/server unkick`
### 7. 服务器重启指令
**指令**: `/server rest <分钟>`
**功能**: 延迟重启服务器,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器重启倒计时,精确到秒
- 示例: `/server rest 10` - 10分钟后重启服务器
### 8. 取消服务器重启
**指令**: `/server unrest`
**功能**: 取消正在进行的服务器重启倒计时
- 仅在服务器处于重启倒计时状态时有效
- 示例: `/server unrest`
### 9. 服务器自毁指令(危险)
**指令**: `/server goodbye <分钟>`
**功能**: 延迟自毁服务器,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器自毁倒计时,精确到秒
- **危险操作**: 破坏服务器关键配置文件和存档(如果配置允许)
- **注意**: 自毁操作不可逆,不会创建任何备份文件!
- 恢复方法: 删除损坏的配置文件,从外部备份源获取正确的配置文件
- 示例: `/server goodbye 5` - 5分钟后自毁服务器
### 10. 取消服务器自毁
**指令**: `/server ungoodbye`
**功能**: 取消正在进行的服务器自毁倒计时
- 仅在服务器处于自毁倒计时状态时有效
- 示例: `/server ungoodbye`
### 11. 配置重载指令
**指令**: `/server config <分钟>`
**功能**: 延迟重载插件配置文件,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 插件配置重载倒计时,精确到秒
- 示例: `/server config 1` - 1分钟后重载配置文件
### 12. 取消配置重载
**指令**: `/server unconfig`
**功能**: 取消正在进行的配置重载倒计时
- 仅在服务器处于配置重载倒计时状态时有效
- 示例: `/server unconfig`
### 13. 世界自毁指令(危险)
**指令**: `/server worldgoodbye <分钟>`
**功能**: 延迟进行世界自毁,持续天降TNT
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 世界自毁倒计时,精确到秒
- **危险操作**: 持续在所有世界中生成TNT,破坏地形
- 示例: `/server worldgoodbye 5` - 5分钟后开始世界自毁
### 14. 取消世界自毁
**指令**: `/server unworldgoodbye`
**功能**: 取消正在进行的世界自毁倒计时
- 仅在服务器处于世界自毁倒计时状态时有效
- 示例: `/server unworldgoodbye`
### 15. 杀死所有实体指令(危险)
**指令**: `/server kill@e <分钟>`
**功能**: 延迟杀死所有实体(除玩家和经验球外)
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 杀死所有实体倒计时,精确到秒
- 示例: `/server kill@e 2` - 2分钟后杀死所有实体
### 16. 取消杀死实体
**指令**: `/server unkill@e`
**功能**: 取消正在进行的杀死实体倒计时
- 仅在服务器处于杀死实体倒计时状态时有效
- 示例: `/server unkill@e`
### 17. 清空所有玩家背包指令(危险)
**指令**: `/server clear <分钟>`
**功能**: 延迟清空所有玩家的背包
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 清空所有玩家背包倒计时,精确到秒
- 示例: `/server clear 1` - 1分钟后清空所有玩家背包
### 18. 取消清空背包
**指令**: `/server unclear`
**功能**: 取消正在进行的清空背包倒计时
- 仅在服务器处于清空背包倒计时状态时有效
- 示例: `/server unclear`
### 19. 杀死所有玩家指令(危险)
**指令**: `/server kill@a <分钟>`
**功能**: 延迟杀死所有玩家
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 杀死所有玩家倒计时,精确到秒
- 示例: `/server kill@a 3` - 3分钟后杀死所有玩家
### 20. 取消杀死玩家
**指令**: `/server unkill@a`
**功能**: 取消正在进行的杀死玩家倒计时
- 仅在服务器处于杀死玩家倒计时状态时有效
- 示例: `/server unkill@a`
### 21. 清除所有掉落物指令
**指令**: `/server qc <分钟>`
**功能**: 延迟清除所有掉落物
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 清除所有掉落物倒计时,精确到秒
- 示例: `/server qc 1` - 1分钟后清除所有掉落物
### 22. 取消清除掉落物
**指令**: `/server unqc`
**功能**: 取消正在进行的清除掉落物倒计时
- 仅在服务器处于清除掉落物倒计时状态时有效
- 示例: `/server unqc`
### 23. 世界重置指令(危险)
**指令**: `/server sjcq <分钟>`
**功能**: 延迟重置整个世界,包括清除所有玩家数据
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 世界重置倒计时,精确到秒
- **危险操作**: 重置整个世界、清除所有玩家数据、踢出所有玩家
- **重置机制**: 根据当前种子重新生成世界,服务器不关闭
- **玩家限制**: 重置期间玩家无法加入
- **注意**: 此操作不可逆,不会创建任何备份!
- 示例: `/server sjcq 5` - 5分钟后重置世界
### 24. 取消世界重置
**指令**: `/server unsjqc`
**功能**: 取消正在进行的世界重置倒计时
- 仅在服务器处于世界重置倒计时状态时有效
- 示例: `/server unsjqc`
### 25. 玩家加入关闭指令(危险)
**指令**: `/server bye <分钟>`
**功能**: 延迟踢出所有玩家并禁止新玩家加入
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 玩家加入关闭倒计时,精确到秒
- **执行效果**: 倒计时结束后踢出所有玩家,禁止新玩家加入,重启服务器后仍有效
- **配置持久化**: 将bye模式状态写入配置文件
- **注意**: 需要自毁权限组才能执行
- 示例: `/server bye 5` - 5分钟后关闭玩家加入
### 26. 取消玩家加入关闭
**指令**: `/server unbye`
**功能**: 取消正在进行的玩家加入关闭倒计时或关闭bye模式
- 可以取消倒计时或直接关闭bye模式
- 会更新配置文件,移除bye模式状态
- 示例: `/server unbye`
### 27. 白名单踢出指令
**指令**: `/server whitkick <分钟>`
**功能**: 倒计时结束后踢出所有不在白名单里面的玩家
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 白名单踢出倒计时,精确到秒
- **使用条件**: 仅在 white&black=1 且 usewhite&blackserver=false 时有效
- **权限要求**: 需要自毁权限组
- 示例: `/server whitkick 1` - 1分钟后踢出所有不在白名单的玩家
### 28. 取消白名单踢出
**指令**: `/server unwhitekick`
**功能**: 取消正在进行的白名单踢出倒计时
- 仅在服务器处于白名单踢出倒计时状态时有效
- 示例: `/server unwhitekick`
### 29. 黑名单踢出指令
**指令**: `/server blackkick <分钟>`
**功能**: 倒计时结束后踢出所有在黑名单里面的玩家
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 黑名单踢出倒计时,精确到秒
- **使用条件**: 仅在 white&black=2 且 usewhite&blackserver=false 时有效
- **权限要求**: 需要自毁权限组
- 示例: `/server blackkick 1` - 1分钟后踢出所有在黑名单的玩家
### 30. 取消黑名单踢出
**指令**: `/server unblackkick`
**功能**: 取消正在进行的黑名单踢出倒计时
- 仅在服务器处于黑名单踢出倒计时状态时有效
- 示例: `/server unblackkick`
### 31. 确认操作
**指令**: `/server confirm`
**功能**: 确认执行危险操作
- 仅在收到确认请求后有效,30秒内未确认自动取消
- 用于确认执行:goodbye、worldgoodbye、kill@e、clear、kill@a、sjcq、bye、whitkick、blackkick 等危险指令
- 示例: `/server confirm`
### 32. 取消操作
**指令**: `/server cancel`
**功能**: 取消待确认的危险操作
- 仅在收到确认请求后有效,30秒内未取消自动过期
- 示例: `/server cancel`
## 计分板样式
- **位置**: 玩家屏幕左侧(ActionBar + 玩家列表)
- **样式**: 华丽、醒目,包含金色边框、红色标题、黄色时间、绿色提示
- **内容**: 显示标题、倒计时(分:秒格式)和提示信息
## 配置文件说明
### 配置文件路径
- `plugins/LuckyServerTool/config.yml`
### 主要配置项
#### 基本配置
```yaml
# 配置文件版本,用于检测配置文件是否正确
config-version: 1.0
# 插件启用状态
enabled: true
```
#### 重启命令配置
```yaml
# 服务器重启命令(可选)
restart-command: "restart"
```
#### 计分板显示设置
```yaml
# 计分板显示设置
scoreboard:
# 显示位置:player_list(玩家列表)、sidebar(右侧)、below_name(玩家名称下方)
display-slot: "player_list"
# 是否启用ActionBar显示
action-bar-enabled: true
```
#### 倒计时设置
```yaml
# 倒计时设置
countdown:
# 倒计时更新间隔(秒)
update-interval: 1
# 是否显示毫秒(仅在ActionBar中)
show-milliseconds: false
```
#### 权限设置
```yaml
# 权限设置
permissions:
# 管理员权限节点
admin: "luckyservertool.admin"
# 普通玩家权限节点
user: "luckyservertool.user"
```
#### 自毁设置
```yaml
# 自毁设置
destroy:
# 允许执行自毁指令的玩家列表(需要同时拥有管理员权限)
allowed-players:
- "Steve"
- "Admin"
# 是否允许自毁存档
destroy-worlds: true
# 是否备份存档(如果允许自毁存档)
backup-worlds: false
```
#### 白名单和黑名单设置
```yaml
# 白名单/黑名单模式:0=关闭, 1=白名单, 2=黑名单
white&black: 0
# 是否强制控制服务器级别的白名单/黑名单
usewhite&blackserver: false
# 白名单时间范围(仅在white&black=1且usewhite&blackserver=false时生效)
# 格式:HH:MM-HH:MM
whitetime: "13:00-20:00"
# 黑名单时间范围(仅在white&black=2且usewhite&blackserver=false时生效)
# 格式:HH:MM-HH:MM
blacktime: "13:00-20:00"
# bye模式状态(由插件自动管理,请勿手动修改)
bye-mode: false
```
#### 玩家在线时间系统设置
```yaml
# 是否启用玩家在线时间系统
# true: 启用,强制white&black=0,按时间范围控制玩家加入
# false: 关闭
usetime: false
```
## 确认系统说明
### 危险操作确认机制
- **触发条件**:执行危险指令(goodbye、worldgoodbye、kill@e、clear、kill@a)时,系统会自动发送确认请求
- **确认方式**:
1. **聊天按钮确认**:在聊天框中显示可点击的 `[确认执行]` 和 `[取消操作]` 按钮
2. **命令确认**:输入 `/server confirm` 确认执行,输入 `/server cancel` 取消操作
- **确认时效**:所有确认请求有效期为 30 秒,超时自动取消
- **确认消息样式**:
```
★ 确认操作 ★
你即将执行危险操作:goodbye
参数:[5]
此操作将无法撤销!
请在30秒内点击下方按钮确认或取消:
[确认执行] [取消操作]
```
## 自毁功能详解
### 自毁权限控制
- 只有配置文件中 `destroy.allowed-players` 列表中的玩家才能执行自毁指令
- 玩家还需要同时拥有管理员权限
- 非玩家(如控制台)无法执行自毁指令
### 自毁内容
- **服务器核心配置文件**:
- `server.properties` - 服务器核心配置
- `bukkit.yml` - Bukkit 基础配置
- `paper.yml` - Paper 特定配置
- `spigot.yml` - Spigot 配置
- `eula.txt` - EULA 协议文件
- **插件配置文件**:
- 本插件的 `config.yml`
- 所有其他插件的 `config.yml`(如果存在)
- **存档文件**(如果配置允许):
- 世界文件 `level.dat`
- 区域文件 `region/*.mca`(前10个文件)
- 数据包文件 `datapacks/*/pack.mcmeta`
### 自毁恢复
- **注意**:自毁操作不可逆,**不会创建任何备份文件**!
- 恢复方法:
1. 删除所有损坏的配置文件(`*.yml`, `server.properties`, `eula.txt`)
2. 重新创建或从其他备份源获取正确的配置文件
3. 如需恢复存档,只能使用外部备份源
4. 重新启动服务器
## 配置重载功能详解
### 配置重载流程
- 执行指令后,显示与其他指令相同的华丽计分板
- 倒计时结束后:
- 调用 `reloadConfig()` 重新加载配置文件
- 验证新配置的有效性
- 记录配置重载的结果到日志
- 通知所有玩家配置重载的结果
- 配置重载失败时,会使用原有配置继续运行
### 配置重载结果通知
- **成功**:所有玩家会收到成功通知
- **失败**:所有玩家会收到失败通知,服务器使用原有配置继续运行
- **错误**:所有玩家会收到错误通知,服务器使用原有配置继续运行
## 白名单和黑名单功能详解
### 配置文件说明
#### 白名单文件
- **路径**:`plugins/LuckyServerTool/white.yml`
- **格式**:
```yaml
players:
- "Steve"
- "Admin"
```
- **说明**:列出允许加入服务器或在特定时间加入的玩家名称
#### 黑名单文件
- **路径**:`plugins/LuckyServerTool/black.yml`
- **格式**:
```yaml
players:
- "Griefer"
- "Hacker"
```
- **说明**:列出禁止加入服务器或在特定时间加入的玩家名称
### 功能机制
#### 模式说明
- **模式值**:`white&black` 配置项控制模式
- `0`:关闭白名单/黑名单功能
- `1`:白名单模式
- `2`:黑名单模式
#### 服务器控制模式
- **启用条件**:`usewhite&blackserver=true`
- **白名单模式**:只有白名单中的玩家可以加入服务器
- **黑名单模式**:黑名单外的玩家可以加入服务器
#### 时间控制模式
- **启用条件**:`usewhite&blackserver=false`
- **白名单模式**:
- 白名单内的玩家:随时可以加入
- 白名单外的玩家:仅在 `whitetime` 范围外可以加入
- **黑名单模式**:
- 黑名单外的玩家:随时可以加入
- 黑名单内的玩家:仅在 `blacktime` 范围外可以加入
#### 时间格式
- **格式**:`HH:MM-HH:MM`(24小时制)
- **示例**:`13:00-20:00`(下午1点到晚上8点)
- **说明**:在该时间范围内,符合条件的玩家将被禁止加入
### 踢出指令
#### 白名单踢出
- **触发条件**:`white&black=1` 且 `usewhite&blackserver=false`
- **执行效果**:倒计时结束后踢出所有不在白名单中的玩家
- **指令**:`/server whitkick <分钟>`
#### 黑名单踢出
- **触发条件**:`white&black=2` 且 `usewhite&blackserver=false`
- **执行效果**:倒计时结束后踢出所有在黑名单中的玩家
- **指令**:`/server blackkick <分钟>`
## 玩家在线时间系统详解
### 配置文件说明
#### 玩家在线时间配置文件
- **路径**:`plugins/LuckyServerTool/usetime.yml`
- **格式**:
```yaml
# 玩家在线时间配置文件
# 格式:players列表,每个元素为 "玩家名称-时间段"(24小时制,格式:HH:MM-HH:MM)
players:
# 示例:
- "玩家1-20:00-23:00"
- "玩家2-08:00-12:00"
```
- **说明**:
- 每个条目包含玩家名称和允许的在线时间范围
- 时间段格式:`HH:MM-HH:MM`(24小时制)
- 开始时间必须早于结束时间,否则配置无效
### 功能机制
#### 启用条件
- 在主配置文件中设置 `usetime: true`
- 启用后,**强制将白名单/黑名单模式设置为0**
- 自动更新主配置文件,确保 `white&black=0`
#### 玩家加入规则
1. **配置存在检查**:
- 只有在 `usetime.yml` 中配置了时间范围的玩家才能加入服务器
- 不在配置中的玩家无法加入
2. **时间范围检查**:
- 玩家只能在配置的有效时间范围内加入服务器
- 当前时间不在允许范围内时,玩家无法加入
- 时间范围格式必须有效(开始时间 < 结束时间)
3. **在线玩家检查**:
- 启用定时检查任务,每分钟检查一次所有在线玩家
- 发现超时玩家立即踢出
- 踢出原因:"当前时间不在你的允许范围内,已被踢出!"
#### 时间格式验证
- 系统会自动验证每个玩家的时间范围格式
- 无效格式(如 `20:00-18:00`)会被跳过并记录错误日志
- 错误日志示例:"玩家 玩家1 的时间范围格式错误:20:00-18:00,跳过该玩家"
### 功能影响
- **精确控制**:可以精确控制每个玩家的在线时间
- **自动管理**:无需人工干预,系统自动检查和踢出超时玩家
- **配置灵活**:支持为不同玩家设置不同的时间范围
- **日志记录**:所有相关操作都会记录到服务器日志
## 世界自毁功能详解
### 世界自毁机制
- **触发方式**:执行 `/server worldgoodbye <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,开始在所有世界中持续生成TNT
- TNT生成频率:每0.25秒在所有世界中生成10个TNT
- TNT生成范围:所有世界的±1000方块范围内
- TNT生成高度:在最高方块上方20格处生成,自然下落爆炸
- **持续时间**:持续运行直到服务器关闭或手动干预
### 世界自毁影响
- **地形破坏**:持续的TNT爆炸会严重破坏地形
- **性能影响**:大量TNT生成和爆炸可能会导致服务器卡顿
- **玩家安全**:玩家可能会受到TNT爆炸伤害
## 杀死实体功能详解
### 杀死实体机制
- **触发方式**:执行 `/server kill@e <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,立即杀死所有实体(除玩家和经验球外)
- 影响范围:服务器中所有世界
- **杀死的实体类型**:
- 怪物(僵尸、骷髅、苦力怕等)
- 动物(牛、羊、猪等)
- 水生生物(鱼、海豚等)
- 飞行生物(鸟、蝙蝠等)
- 掉落的物品
- 矿车、船等实体
- 末影水晶、信标等方块实体
- **保留的实体**:
- 玩家
- 经验球
### 杀死实体影响
- **游戏平衡**:可能会破坏游戏内的生态平衡
- **资源影响**:所有掉落的物品都会被清除
- **性能提升**:减少实体数量可以提高服务器性能
## 清空背包功能详解
### 清空背包机制
- **触发方式**:执行 `/server clear <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,立即清空所有在线玩家的背包
- 影响范围:所有在线玩家
- 清空内容:
- 主手和副手物品
- 背包所有格子
- 装备栏所有物品
- 末影箱内容**不会**被清空
### 清空背包影响
- **玩家体验**:可能会导致玩家丢失重要物品
- **公平性**:对所有玩家一视同仁
- **资源重置**:可以用于服务器活动后的资源重置
## 杀死玩家功能详解
### 杀死玩家机制
- **触发方式**:执行 `/server kill@a <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,立即杀死所有在线玩家
- 影响范围:所有在线玩家
- 死亡效果:
- 玩家死亡并掉落所有物品
- 玩家在出生点复活
- 经验值会掉落
### 杀死玩家影响
- **玩家体验**:可能会导致玩家丢失物品和经验
- **游戏进度**:可能会影响玩家的游戏进度
- **活动用途**:可以用于PvP活动或游戏事件
## 清除掉落物功能详解
### 清除掉落物机制
- **触发方式**:执行 `/server qc <分钟>` 后触发(无需确认)
- **执行效果**:
- 倒计时结束后,立即清除所有世界中的掉落物
- 影响范围:服务器中所有世界
- 清除的物品:地面上所有掉落的物品实体
### 清除掉落物影响
- **性能提升**:减少掉落物数量可以提高服务器性能
- **资源管理**:可以防止地面物品堆积
- **游戏体验**:不会影响玩家的背包物品
## 安装方法
1. 将插件 JAR 文件放入服务器的 `plugins` 文件夹
2. 重启服务器
3. 插件自动加载,生成配置文件
4. 根据需要修改 `plugins/LuckyServerTool/config.yml` 配置文件
5. 重启服务器或使用 `/server config 0` 立即重载配置
## 注意事项
1. 所有延迟指令的时间单位均为分钟
2. 危险指令(goodbye、worldgoodbye、kill@e、clear、kill@a、sjcq、bye、whitkick、blackkick)需要二次确认才能执行
3. 自毁指令 `goodbye` 和世界重置指令 `sjcq` 是不可逆操作,**不会创建任何备份文件**
4. 世界自毁指令 `worldgoodbye` 会造成严重的地形破坏和性能影响
5. 世界重置指令 `sjcq` 会根据当前种子重新生成世界,服务器不关闭,重置期间玩家无法加入
6. 玩家加入关闭指令 `bye` 会禁止所有玩家加入,重启服务器后仍有效
7. 白名单和黑名单功能通过配置文件 `white.yml` 和 `black.yml` 管理
8. 白名单/黑名单模式由 `white&black` 配置项控制,0=关闭,1=白名单,2=黑名单
9. `usewhite&blackserver` 配置项控制是否强制服务器级别的白名单/黑名单
10. 时间范围格式为 `HH:MM-HH:MM`,仅在非服务器控制模式下生效
11. 所有指令仅 OP 或拥有对应权限的玩家可以使用
12. 配置重载不会影响正在运行的任务
13. 确认操作有效期为30秒,超时自动取消
14. 非玩家(控制台)无法执行危险指令
15. 玩家在线时间系统启用后,会强制将白名单/黑名单模式设置为0
16. 玩家在线时间系统通过 `usetime.yml` 配置,格式为 `"玩家名称-时间段"`
17. 玩家在线时间系统会每分钟检查一次所有在线玩家,超时立即踢出
18. 玩家在线时间配置中的时间段必须有效(开始时间 < 结束时间)
## 更新日志
- **版本 1.0.0**: 初始版本,包含所有基本功能
- 服务器关闭、重启、踢出玩家
- 消息发送功能
- 自毁功能
- 配置文件管理
- 配置重载功能
- **版本 1.1.0**: 新增功能和优化
- 新增世界自毁指令 `worldgoodbye`,持续天降TNT
- 新增实体管理指令:`kill@e`(杀死所有实体)
- 新增玩家管理指令:`clear`(清空背包)、`kill@a`(杀死玩家)
- 新增掉落物管理指令:`qc`(清除掉落物)
- 新增危险操作确认系统,支持聊天按钮点击确认
- 移除自毁功能的备份机制,确保操作不可逆
- 优化计分板显示,使用ActionBar+玩家列表双位置显示
- 增强自毁功能,破坏更多关键文件
- 优化代码结构,提高插件性能
- **版本 1.2.0**: 新增世界重置功能
- 新增世界重置指令 `sjcq <分钟>`,支持延迟重置整个世界
- 新增取消世界重置指令 `unsjqc`
- 世界重置功能包括:踢出所有玩家、清除所有玩家数据、根据当前种子重新生成世界
- 世界重置期间禁止玩家加入,服务器不关闭
- 世界重置操作加入危险操作确认系统
- 优化指令权限检查和日志记录
- **版本 1.3.0**: 新增玩家加入关闭功能
- 新增玩家加入关闭指令 `bye <分钟>`,支持延迟踢出所有玩家并禁止新玩家加入
- 新增取消玩家加入关闭指令 `unbye`
- bye模式状态持久化到配置文件,重启服务器后仍有效
- 玩家加入事件监听,禁止玩家在bye模式下加入
- bye指令加入危险操作确认系统
- 需要自毁权限组才能执行
- **版本 1.4.0**: 新增白名单和黑名单功能
- 新增白名单配置文件 `white.yml` 和黑名单配置文件 `black.yml`
- 支持三种模式:关闭(0)、白名单(1)、黑名单(2)
- 支持服务器控制模式和时间控制模式
- 新增白名单踢出指令 `whitkick <分钟>`,支持延迟踢出不在白名单的玩家
- 新增取消白名单踢出指令 `unwhitekick`
- 新增黑名单踢出指令 `blackkick <分钟>`,支持延迟踢出在黑名单的玩家
- 新增取消黑名单踢出指令 `unblackkick`
- 支持时间范围限制,格式为 `HH:MM-HH:MM`
- 新增指令加入危险操作确认系统
- **版本 1.5.0**: 新增玩家在线时间系统
- 新增玩家在线时间配置文件 `usetime.yml`
- 支持为每个玩家配置允许的在线时间范围
- 新增配置项 `usetime`,控制是否启用玩家在线时间系统
- 启用后强制将白名单/黑名单模式设置为0
- 支持自动验证时间范围格式
- 实现在线玩家定时检查,每分钟踢出超时玩家
- 支持列表格式配置:`"玩家名称-时间段"`
- 只有配置了时间范围的玩家才能加入服务器
- 玩家只能在允许的时间范围内在线
- 自动记录错误日志,跳过无效配置
- **版本 2.3.1**: 新增带原因的关闭指令和备用指令
- 新增带原因的服务器关闭指令 `stopyy <分钟> <原因>`
- 新增取消带原因的服务器关闭指令 `unstopyy`
- 优化倒计时显示效果,使其更加醒目,显示关闭原因
- 显示格式:★★★★★ 服务器关闭 ★★★★★ 倒计时: 01:00 【原因: 维护升级】 请做好准备!!!
- 新增备用指令 `/byserver`,所有 `/server` 指令均可使用 `/byserver` 作为替代
- 修复了指令提示信息,确保使用正确的指令名称
- 升级了插件版本号到 2.3.1
## 插件信息
- **插件名称**: luckyservertool
- **适用版本**: Minecraft 1.21.11 PaperMC
- **当前版本**: 2.3.1
- **描述**: 一个功能强大的服务器管理插件,提供多种服务器管理指令
- **备用指令**: 所有 `/server` 指令均可使用 `/byserver` 作为替代,例如:`/byserver stop 1`
## 权限说明
- 所有指令需要 `luckyservertool.admin` 权限,默认 OP 拥有此权限
## 指令列表
### 1. 服务器关闭指令
**指令**: `/server stop <分钟>`
**功能**: 延迟关闭服务器,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器关闭倒计时,精确到秒
- 示例: `/server stop 5` - 5分钟后关闭服务器
### 2. 带原因的服务器关闭指令
**指令**: `/server stopyy <分钟> <原因>`
**功能**: 延迟关闭服务器,左侧计分板和 ActionBar 显示倒计时和关闭原因
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- `<原因>`: 服务器关闭的原因,支持中文
- 计分板显示: 服务器关闭倒计时,精确到秒,并显示关闭原因
- ActionBar 显示: 更加醒目的倒计时和原因显示
- 显示格式: ★★★★★ 服务器关闭 ★★★★★ 倒计时: 01:00 【原因: 维护升级】 请做好准备!!!
- 示例: `/server stopyy 1 维护升级` - 1分钟后关闭服务器,原因是维护升级
### 3. 踢出所有玩家指令
**指令**: `/server kickall <分钟>`
**功能**: 延迟踢出所有玩家,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器将在 X分/X秒后释放资源,会踢出所有玩家
- 示例: `/server kickall 3` - 3分钟后踢出所有玩家
### 3. 发送消息给所有玩家
**指令**: `/server tell <内容>`
**功能**: 给所有在线玩家发送服务器消息
- `<内容>`: 要发送的消息内容
- 消息格式: `[服务器] 内容`
- 示例: `/server tell 服务器即将维护`
### 4. 发送消息给指定玩家
**指令**: `/server tell <玩家名称> <内容>`
**功能**: 给指定在线玩家发送服务器消息
- `<玩家名称>`: 目标玩家的游戏名称
- `<内容>`: 要发送的消息内容
- 消息格式: `[服务器] 内容`
- 示例: `/server tell Steve 欢迎回来`
### 5. 取消服务器关闭
**指令**: `/server unstop`
**功能**: 取消正在进行的服务器关闭倒计时
- 仅在服务器处于关闭倒计时状态时有效
- 示例: `/server unstop`
### 6. 取消带原因的服务器关闭
**指令**: `/server unstopyy`
**功能**: 取消正在进行的带原因的服务器关闭倒计时
- 仅在服务器处于带原因的关闭倒计时状态时有效
- 示例: `/server unstopyy`
### 7. 取消踢出所有玩家指令
**指令**: `/server unkick`
**功能**: 取消正在进行的踢出所有玩家倒计时
- 仅在服务器处于踢出所有玩家倒计时状态时有效
- 示例: `/server unkick`
### 7. 服务器重启指令
**指令**: `/server rest <分钟>`
**功能**: 延迟重启服务器,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器重启倒计时,精确到秒
- 示例: `/server rest 10` - 10分钟后重启服务器
### 8. 取消服务器重启
**指令**: `/server unrest`
**功能**: 取消正在进行的服务器重启倒计时
- 仅在服务器处于重启倒计时状态时有效
- 示例: `/server unrest`
### 9. 服务器自毁指令(危险)
**指令**: `/server goodbye <分钟>`
**功能**: 延迟自毁服务器,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 服务器自毁倒计时,精确到秒
- **危险操作**: 破坏服务器关键配置文件和存档(如果配置允许)
- **注意**: 自毁操作不可逆,不会创建任何备份文件!
- 恢复方法: 删除损坏的配置文件,从外部备份源获取正确的配置文件
- 示例: `/server goodbye 5` - 5分钟后自毁服务器
### 10. 取消服务器自毁
**指令**: `/server ungoodbye`
**功能**: 取消正在进行的服务器自毁倒计时
- 仅在服务器处于自毁倒计时状态时有效
- 示例: `/server ungoodbye`
### 11. 配置重载指令
**指令**: `/server config <分钟>`
**功能**: 延迟重载插件配置文件,左侧计分板显示倒计时
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 插件配置重载倒计时,精确到秒
- 示例: `/server config 1` - 1分钟后重载配置文件
### 12. 取消配置重载
**指令**: `/server unconfig`
**功能**: 取消正在进行的配置重载倒计时
- 仅在服务器处于配置重载倒计时状态时有效
- 示例: `/server unconfig`
### 13. 世界自毁指令(危险)
**指令**: `/server worldgoodbye <分钟>`
**功能**: 延迟进行世界自毁,持续天降TNT
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 世界自毁倒计时,精确到秒
- **危险操作**: 持续在所有世界中生成TNT,破坏地形
- 示例: `/server worldgoodbye 5` - 5分钟后开始世界自毁
### 14. 取消世界自毁
**指令**: `/server unworldgoodbye`
**功能**: 取消正在进行的世界自毁倒计时
- 仅在服务器处于世界自毁倒计时状态时有效
- 示例: `/server unworldgoodbye`
### 15. 杀死所有实体指令(危险)
**指令**: `/server kill@e <分钟>`
**功能**: 延迟杀死所有实体(除玩家和经验球外)
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 杀死所有实体倒计时,精确到秒
- 示例: `/server kill@e 2` - 2分钟后杀死所有实体
### 16. 取消杀死实体
**指令**: `/server unkill@e`
**功能**: 取消正在进行的杀死实体倒计时
- 仅在服务器处于杀死实体倒计时状态时有效
- 示例: `/server unkill@e`
### 17. 清空所有玩家背包指令(危险)
**指令**: `/server clear <分钟>`
**功能**: 延迟清空所有玩家的背包
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 清空所有玩家背包倒计时,精确到秒
- 示例: `/server clear 1` - 1分钟后清空所有玩家背包
### 18. 取消清空背包
**指令**: `/server unclear`
**功能**: 取消正在进行的清空背包倒计时
- 仅在服务器处于清空背包倒计时状态时有效
- 示例: `/server unclear`
### 19. 杀死所有玩家指令(危险)
**指令**: `/server kill@a <分钟>`
**功能**: 延迟杀死所有玩家
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 杀死所有玩家倒计时,精确到秒
- 示例: `/server kill@a 3` - 3分钟后杀死所有玩家
### 20. 取消杀死玩家
**指令**: `/server unkill@a`
**功能**: 取消正在进行的杀死玩家倒计时
- 仅在服务器处于杀死玩家倒计时状态时有效
- 示例: `/server unkill@a`
### 21. 清除所有掉落物指令
**指令**: `/server qc <分钟>`
**功能**: 延迟清除所有掉落物
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 清除所有掉落物倒计时,精确到秒
- 示例: `/server qc 1` - 1分钟后清除所有掉落物
### 22. 取消清除掉落物
**指令**: `/server unqc`
**功能**: 取消正在进行的清除掉落物倒计时
- 仅在服务器处于清除掉落物倒计时状态时有效
- 示例: `/server unqc`
### 23. 世界重置指令(危险)
**指令**: `/server sjcq <分钟>`
**功能**: 延迟重置整个世界,包括清除所有玩家数据
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 世界重置倒计时,精确到秒
- **危险操作**: 重置整个世界、清除所有玩家数据、踢出所有玩家
- **重置机制**: 根据当前种子重新生成世界,服务器不关闭
- **玩家限制**: 重置期间玩家无法加入
- **注意**: 此操作不可逆,不会创建任何备份!
- 示例: `/server sjcq 5` - 5分钟后重置世界
### 24. 取消世界重置
**指令**: `/server unsjqc`
**功能**: 取消正在进行的世界重置倒计时
- 仅在服务器处于世界重置倒计时状态时有效
- 示例: `/server unsjqc`
### 25. 玩家加入关闭指令(危险)
**指令**: `/server bye <分钟>`
**功能**: 延迟踢出所有玩家并禁止新玩家加入
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 玩家加入关闭倒计时,精确到秒
- **执行效果**: 倒计时结束后踢出所有玩家,禁止新玩家加入,重启服务器后仍有效
- **配置持久化**: 将bye模式状态写入配置文件
- **注意**: 需要自毁权限组才能执行
- 示例: `/server bye 5` - 5分钟后关闭玩家加入
### 26. 取消玩家加入关闭
**指令**: `/server unbye`
**功能**: 取消正在进行的玩家加入关闭倒计时或关闭bye模式
- 可以取消倒计时或直接关闭bye模式
- 会更新配置文件,移除bye模式状态
- 示例: `/server unbye`
### 27. 白名单踢出指令
**指令**: `/server whitkick <分钟>`
**功能**: 倒计时结束后踢出所有不在白名单里面的玩家
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 白名单踢出倒计时,精确到秒
- **使用条件**: 仅在 white&black=1 且 usewhite&blackserver=false 时有效
- **权限要求**: 需要自毁权限组
- 示例: `/server whitkick 1` - 1分钟后踢出所有不在白名单的玩家
### 28. 取消白名单踢出
**指令**: `/server unwhitekick`
**功能**: 取消正在进行的白名单踢出倒计时
- 仅在服务器处于白名单踢出倒计时状态时有效
- 示例: `/server unwhitekick`
### 29. 黑名单踢出指令
**指令**: `/server blackkick <分钟>`
**功能**: 倒计时结束后踢出所有在黑名单里面的玩家
- `<分钟>`: 延迟时间,单位为分钟(0 表示立即执行)
- 计分板显示: 黑名单踢出倒计时,精确到秒
- **使用条件**: 仅在 white&black=2 且 usewhite&blackserver=false 时有效
- **权限要求**: 需要自毁权限组
- 示例: `/server blackkick 1` - 1分钟后踢出所有在黑名单的玩家
### 30. 取消黑名单踢出
**指令**: `/server unblackkick`
**功能**: 取消正在进行的黑名单踢出倒计时
- 仅在服务器处于黑名单踢出倒计时状态时有效
- 示例: `/server unblackkick`
### 31. 确认操作
**指令**: `/server confirm`
**功能**: 确认执行危险操作
- 仅在收到确认请求后有效,30秒内未确认自动取消
- 用于确认执行:goodbye、worldgoodbye、kill@e、clear、kill@a、sjcq、bye、whitkick、blackkick 等危险指令
- 示例: `/server confirm`
### 32. 取消操作
**指令**: `/server cancel`
**功能**: 取消待确认的危险操作
- 仅在收到确认请求后有效,30秒内未取消自动过期
- 示例: `/server cancel`
## 计分板样式
- **位置**: 玩家屏幕左侧(ActionBar + 玩家列表)
- **样式**: 华丽、醒目,包含金色边框、红色标题、黄色时间、绿色提示
- **内容**: 显示标题、倒计时(分:秒格式)和提示信息
## 配置文件说明
### 配置文件路径
- `plugins/LuckyServerTool/config.yml`
### 主要配置项
#### 基本配置
```yaml
# 配置文件版本,用于检测配置文件是否正确
config-version: 1.0
# 插件启用状态
enabled: true
```
#### 重启命令配置
```yaml
# 服务器重启命令(可选)
restart-command: "restart"
```
#### 计分板显示设置
```yaml
# 计分板显示设置
scoreboard:
# 显示位置:player_list(玩家列表)、sidebar(右侧)、below_name(玩家名称下方)
display-slot: "player_list"
# 是否启用ActionBar显示
action-bar-enabled: true
```
#### 倒计时设置
```yaml
# 倒计时设置
countdown:
# 倒计时更新间隔(秒)
update-interval: 1
# 是否显示毫秒(仅在ActionBar中)
show-milliseconds: false
```
#### 权限设置
```yaml
# 权限设置
permissions:
# 管理员权限节点
admin: "luckyservertool.admin"
# 普通玩家权限节点
user: "luckyservertool.user"
```
#### 自毁设置
```yaml
# 自毁设置
destroy:
# 允许执行自毁指令的玩家列表(需要同时拥有管理员权限)
allowed-players:
- "Steve"
- "Admin"
# 是否允许自毁存档
destroy-worlds: true
# 是否备份存档(如果允许自毁存档)
backup-worlds: false
```
#### 白名单和黑名单设置
```yaml
# 白名单/黑名单模式:0=关闭, 1=白名单, 2=黑名单
white&black: 0
# 是否强制控制服务器级别的白名单/黑名单
usewhite&blackserver: false
# 白名单时间范围(仅在white&black=1且usewhite&blackserver=false时生效)
# 格式:HH:MM-HH:MM
whitetime: "13:00-20:00"
# 黑名单时间范围(仅在white&black=2且usewhite&blackserver=false时生效)
# 格式:HH:MM-HH:MM
blacktime: "13:00-20:00"
# bye模式状态(由插件自动管理,请勿手动修改)
bye-mode: false
```
#### 玩家在线时间系统设置
```yaml
# 是否启用玩家在线时间系统
# true: 启用,强制white&black=0,按时间范围控制玩家加入
# false: 关闭
usetime: false
```
## 确认系统说明
### 危险操作确认机制
- **触发条件**:执行危险指令(goodbye、worldgoodbye、kill@e、clear、kill@a)时,系统会自动发送确认请求
- **确认方式**:
1. **聊天按钮确认**:在聊天框中显示可点击的 `[确认执行]` 和 `[取消操作]` 按钮
2. **命令确认**:输入 `/server confirm` 确认执行,输入 `/server cancel` 取消操作
- **确认时效**:所有确认请求有效期为 30 秒,超时自动取消
- **确认消息样式**:
```
★ 确认操作 ★
你即将执行危险操作:goodbye
参数:[5]
此操作将无法撤销!
请在30秒内点击下方按钮确认或取消:
[确认执行] [取消操作]
```
## 自毁功能详解
### 自毁权限控制
- 只有配置文件中 `destroy.allowed-players` 列表中的玩家才能执行自毁指令
- 玩家还需要同时拥有管理员权限
- 非玩家(如控制台)无法执行自毁指令
### 自毁内容
- **服务器核心配置文件**:
- `server.properties` - 服务器核心配置
- `bukkit.yml` - Bukkit 基础配置
- `paper.yml` - Paper 特定配置
- `spigot.yml` - Spigot 配置
- `eula.txt` - EULA 协议文件
- **插件配置文件**:
- 本插件的 `config.yml`
- 所有其他插件的 `config.yml`(如果存在)
- **存档文件**(如果配置允许):
- 世界文件 `level.dat`
- 区域文件 `region/*.mca`(前10个文件)
- 数据包文件 `datapacks/*/pack.mcmeta`
### 自毁恢复
- **注意**:自毁操作不可逆,**不会创建任何备份文件**!
- 恢复方法:
1. 删除所有损坏的配置文件(`*.yml`, `server.properties`, `eula.txt`)
2. 重新创建或从其他备份源获取正确的配置文件
3. 如需恢复存档,只能使用外部备份源
4. 重新启动服务器
## 配置重载功能详解
### 配置重载流程
- 执行指令后,显示与其他指令相同的华丽计分板
- 倒计时结束后:
- 调用 `reloadConfig()` 重新加载配置文件
- 验证新配置的有效性
- 记录配置重载的结果到日志
- 通知所有玩家配置重载的结果
- 配置重载失败时,会使用原有配置继续运行
### 配置重载结果通知
- **成功**:所有玩家会收到成功通知
- **失败**:所有玩家会收到失败通知,服务器使用原有配置继续运行
- **错误**:所有玩家会收到错误通知,服务器使用原有配置继续运行
## 白名单和黑名单功能详解
### 配置文件说明
#### 白名单文件
- **路径**:`plugins/LuckyServerTool/white.yml`
- **格式**:
```yaml
players:
- "Steve"
- "Admin"
```
- **说明**:列出允许加入服务器或在特定时间加入的玩家名称
#### 黑名单文件
- **路径**:`plugins/LuckyServerTool/black.yml`
- **格式**:
```yaml
players:
- "Griefer"
- "Hacker"
```
- **说明**:列出禁止加入服务器或在特定时间加入的玩家名称
### 功能机制
#### 模式说明
- **模式值**:`white&black` 配置项控制模式
- `0`:关闭白名单/黑名单功能
- `1`:白名单模式
- `2`:黑名单模式
#### 服务器控制模式
- **启用条件**:`usewhite&blackserver=true`
- **白名单模式**:只有白名单中的玩家可以加入服务器
- **黑名单模式**:黑名单外的玩家可以加入服务器
#### 时间控制模式
- **启用条件**:`usewhite&blackserver=false`
- **白名单模式**:
- 白名单内的玩家:随时可以加入
- 白名单外的玩家:仅在 `whitetime` 范围外可以加入
- **黑名单模式**:
- 黑名单外的玩家:随时可以加入
- 黑名单内的玩家:仅在 `blacktime` 范围外可以加入
#### 时间格式
- **格式**:`HH:MM-HH:MM`(24小时制)
- **示例**:`13:00-20:00`(下午1点到晚上8点)
- **说明**:在该时间范围内,符合条件的玩家将被禁止加入
### 踢出指令
#### 白名单踢出
- **触发条件**:`white&black=1` 且 `usewhite&blackserver=false`
- **执行效果**:倒计时结束后踢出所有不在白名单中的玩家
- **指令**:`/server whitkick <分钟>`
#### 黑名单踢出
- **触发条件**:`white&black=2` 且 `usewhite&blackserver=false`
- **执行效果**:倒计时结束后踢出所有在黑名单中的玩家
- **指令**:`/server blackkick <分钟>`
## 玩家在线时间系统详解
### 配置文件说明
#### 玩家在线时间配置文件
- **路径**:`plugins/LuckyServerTool/usetime.yml`
- **格式**:
```yaml
# 玩家在线时间配置文件
# 格式:players列表,每个元素为 "玩家名称-时间段"(24小时制,格式:HH:MM-HH:MM)
players:
# 示例:
- "玩家1-20:00-23:00"
- "玩家2-08:00-12:00"
```
- **说明**:
- 每个条目包含玩家名称和允许的在线时间范围
- 时间段格式:`HH:MM-HH:MM`(24小时制)
- 开始时间必须早于结束时间,否则配置无效
### 功能机制
#### 启用条件
- 在主配置文件中设置 `usetime: true`
- 启用后,**强制将白名单/黑名单模式设置为0**
- 自动更新主配置文件,确保 `white&black=0`
#### 玩家加入规则
1. **配置存在检查**:
- 只有在 `usetime.yml` 中配置了时间范围的玩家才能加入服务器
- 不在配置中的玩家无法加入
2. **时间范围检查**:
- 玩家只能在配置的有效时间范围内加入服务器
- 当前时间不在允许范围内时,玩家无法加入
- 时间范围格式必须有效(开始时间 < 结束时间)
3. **在线玩家检查**:
- 启用定时检查任务,每分钟检查一次所有在线玩家
- 发现超时玩家立即踢出
- 踢出原因:"当前时间不在你的允许范围内,已被踢出!"
#### 时间格式验证
- 系统会自动验证每个玩家的时间范围格式
- 无效格式(如 `20:00-18:00`)会被跳过并记录错误日志
- 错误日志示例:"玩家 玩家1 的时间范围格式错误:20:00-18:00,跳过该玩家"
### 功能影响
- **精确控制**:可以精确控制每个玩家的在线时间
- **自动管理**:无需人工干预,系统自动检查和踢出超时玩家
- **配置灵活**:支持为不同玩家设置不同的时间范围
- **日志记录**:所有相关操作都会记录到服务器日志
## 世界自毁功能详解
### 世界自毁机制
- **触发方式**:执行 `/server worldgoodbye <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,开始在所有世界中持续生成TNT
- TNT生成频率:每0.25秒在所有世界中生成10个TNT
- TNT生成范围:所有世界的±1000方块范围内
- TNT生成高度:在最高方块上方20格处生成,自然下落爆炸
- **持续时间**:持续运行直到服务器关闭或手动干预
### 世界自毁影响
- **地形破坏**:持续的TNT爆炸会严重破坏地形
- **性能影响**:大量TNT生成和爆炸可能会导致服务器卡顿
- **玩家安全**:玩家可能会受到TNT爆炸伤害
## 杀死实体功能详解
### 杀死实体机制
- **触发方式**:执行 `/server kill@e <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,立即杀死所有实体(除玩家和经验球外)
- 影响范围:服务器中所有世界
- **杀死的实体类型**:
- 怪物(僵尸、骷髅、苦力怕等)
- 动物(牛、羊、猪等)
- 水生生物(鱼、海豚等)
- 飞行生物(鸟、蝙蝠等)
- 掉落的物品
- 矿车、船等实体
- 末影水晶、信标等方块实体
- **保留的实体**:
- 玩家
- 经验球
### 杀死实体影响
- **游戏平衡**:可能会破坏游戏内的生态平衡
- **资源影响**:所有掉落的物品都会被清除
- **性能提升**:减少实体数量可以提高服务器性能
## 清空背包功能详解
### 清空背包机制
- **触发方式**:执行 `/server clear <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,立即清空所有在线玩家的背包
- 影响范围:所有在线玩家
- 清空内容:
- 主手和副手物品
- 背包所有格子
- 装备栏所有物品
- 末影箱内容**不会**被清空
### 清空背包影响
- **玩家体验**:可能会导致玩家丢失重要物品
- **公平性**:对所有玩家一视同仁
- **资源重置**:可以用于服务器活动后的资源重置
## 杀死玩家功能详解
### 杀死玩家机制
- **触发方式**:执行 `/server kill@a <分钟>` 并确认后触发
- **执行效果**:
- 倒计时结束后,立即杀死所有在线玩家
- 影响范围:所有在线玩家
- 死亡效果:
- 玩家死亡并掉落所有物品
- 玩家在出生点复活
- 经验值会掉落
### 杀死玩家影响
- **玩家体验**:可能会导致玩家丢失物品和经验
- **游戏进度**:可能会影响玩家的游戏进度
- **活动用途**:可以用于PvP活动或游戏事件
## 清除掉落物功能详解
### 清除掉落物机制
- **触发方式**:执行 `/server qc <分钟>` 后触发(无需确认)
- **执行效果**:
- 倒计时结束后,立即清除所有世界中的掉落物
- 影响范围:服务器中所有世界
- 清除的物品:地面上所有掉落的物品实体
### 清除掉落物影响
- **性能提升**:减少掉落物数量可以提高服务器性能
- **资源管理**:可以防止地面物品堆积
- **游戏体验**:不会影响玩家的背包物品
## 安装方法
1. 将插件 JAR 文件放入服务器的 `plugins` 文件夹
2. 重启服务器
3. 插件自动加载,生成配置文件
4. 根据需要修改 `plugins/LuckyServerTool/config.yml` 配置文件
5. 重启服务器或使用 `/server config 0` 立即重载配置
## 注意事项
1. 所有延迟指令的时间单位均为分钟
2. 危险指令(goodbye、worldgoodbye、kill@e、clear、kill@a、sjcq、bye、whitkick、blackkick)需要二次确认才能执行
3. 自毁指令 `goodbye` 和世界重置指令 `sjcq` 是不可逆操作,**不会创建任何备份文件**
4. 世界自毁指令 `worldgoodbye` 会造成严重的地形破坏和性能影响
5. 世界重置指令 `sjcq` 会根据当前种子重新生成世界,服务器不关闭,重置期间玩家无法加入
6. 玩家加入关闭指令 `bye` 会禁止所有玩家加入,重启服务器后仍有效
7. 白名单和黑名单功能通过配置文件 `white.yml` 和 `black.yml` 管理
8. 白名单/黑名单模式由 `white&black` 配置项控制,0=关闭,1=白名单,2=黑名单
9. `usewhite&blackserver` 配置项控制是否强制服务器级别的白名单/黑名单
10. 时间范围格式为 `HH:MM-HH:MM`,仅在非服务器控制模式下生效
11. 所有指令仅 OP 或拥有对应权限的玩家可以使用
12. 配置重载不会影响正在运行的任务
13. 确认操作有效期为30秒,超时自动取消
14. 非玩家(控制台)无法执行危险指令
15. 玩家在线时间系统启用后,会强制将白名单/黑名单模式设置为0
16. 玩家在线时间系统通过 `usetime.yml` 配置,格式为 `"玩家名称-时间段"`
17. 玩家在线时间系统会每分钟检查一次所有在线玩家,超时立即踢出
18. 玩家在线时间配置中的时间段必须有效(开始时间 < 结束时间)
## 更新日志
- **版本 1.0.0**: 初始版本,包含所有基本功能
- 服务器关闭、重启、踢出玩家
- 消息发送功能
- 自毁功能
- 配置文件管理
- 配置重载功能
- **版本 1.1.0**: 新增功能和优化
- 新增世界自毁指令 `worldgoodbye`,持续天降TNT
- 新增实体管理指令:`kill@e`(杀死所有实体)
- 新增玩家管理指令:`clear`(清空背包)、`kill@a`(杀死玩家)
- 新增掉落物管理指令:`qc`(清除掉落物)
- 新增危险操作确认系统,支持聊天按钮点击确认
- 移除自毁功能的备份机制,确保操作不可逆
- 优化计分板显示,使用ActionBar+玩家列表双位置显示
- 增强自毁功能,破坏更多关键文件
- 优化代码结构,提高插件性能
- **版本 1.2.0**: 新增世界重置功能
- 新增世界重置指令 `sjcq <分钟>`,支持延迟重置整个世界
- 新增取消世界重置指令 `unsjqc`
- 世界重置功能包括:踢出所有玩家、清除所有玩家数据、根据当前种子重新生成世界
- 世界重置期间禁止玩家加入,服务器不关闭
- 世界重置操作加入危险操作确认系统
- 优化指令权限检查和日志记录
- **版本 1.3.0**: 新增玩家加入关闭功能
- 新增玩家加入关闭指令 `bye <分钟>`,支持延迟踢出所有玩家并禁止新玩家加入
- 新增取消玩家加入关闭指令 `unbye`
- bye模式状态持久化到配置文件,重启服务器后仍有效
- 玩家加入事件监听,禁止玩家在bye模式下加入
- bye指令加入危险操作确认系统
- 需要自毁权限组才能执行
- **版本 1.4.0**: 新增白名单和黑名单功能
- 新增白名单配置文件 `white.yml` 和黑名单配置文件 `black.yml`
- 支持三种模式:关闭(0)、白名单(1)、黑名单(2)
- 支持服务器控制模式和时间控制模式
- 新增白名单踢出指令 `whitkick <分钟>`,支持延迟踢出不在白名单的玩家
- 新增取消白名单踢出指令 `unwhitekick`
- 新增黑名单踢出指令 `blackkick <分钟>`,支持延迟踢出在黑名单的玩家
- 新增取消黑名单踢出指令 `unblackkick`
- 支持时间范围限制,格式为 `HH:MM-HH:MM`
- 新增指令加入危险操作确认系统
- **版本 1.5.0**: 新增玩家在线时间系统
- 新增玩家在线时间配置文件 `usetime.yml`
- 支持为每个玩家配置允许的在线时间范围
- 新增配置项 `usetime`,控制是否启用玩家在线时间系统
- 启用后强制将白名单/黑名单模式设置为0
- 支持自动验证时间范围格式
- 实现在线玩家定时检查,每分钟踢出超时玩家
- 支持列表格式配置:`"玩家名称-时间段"`
- 只有配置了时间范围的玩家才能加入服务器
- 玩家只能在允许的时间范围内在线
- 自动记录错误日志,跳过无效配置
- **版本 2.3.1**: 新增带原因的关闭指令和备用指令
- 新增带原因的服务器关闭指令 `stopyy <分钟> <原因>`
- 新增取消带原因的服务器关闭指令 `unstopyy`
- 优化倒计时显示效果,使其更加醒目,显示关闭原因
- 显示格式:★★★★★ 服务器关闭 ★★★★★ 倒计时: 01:00 【原因: 维护升级】 请做好准备!!!
- 新增备用指令 `/byserver`,所有 `/server` 指令均可使用 `/byserver` 作为替代
- 修复了指令提示信息,确保使用正确的指令名称
- 升级了插件版本号到 2.3.1