# 定时动作
一个强大的 Spigot/Paper Minecraft 插件,允许服务器管理员使用 Minecraft 时间和现实时间来安排和执行命令,并在特定间隔内运行。
## 功能
### 核心功能
- **双时间模式**: 根据以下任一条件安排操作:
- Minecraft 天(游戏时间)
- 现实时间(秒、分钟、小时、天)
- **命令执行**: 在计划触发时运行任何服务器命令
- **PlaceholderAPI 集成**: 命令和消息中完全支持占位符
- **多个计划**: 使用不同的时间配置无限数量的单独计划
- **广播消息**: 计划触发时可选的广播消息
- **控制台日志**: 可配置的计划触发日志记录
### 管理员命令
- `/timedactions reload` - 重新加载配置并重新启动所有计划
- `/timedactions list` - 显示所有配置的计划及其状态
- `/timedactions trigger ` - 手动触发一个特定的计划
### 权限
- `timedactions.admin` - 访问所有管理员命令 (默认: op)
## 配置
### 示例 config.yml
```yaml
# TimedActions 配置
schedules:
borderShrink:
mode: minecraft_days # minecraft_days 或 real_time
interval: 5 # 5 minecraft 天
commands:
- "worldborder set 5000"
- "say The world border is now %worldborder_size%!"
broadcast: "&c世界边框每 5 天缩小一次!当前大小: %worldborder_size%"
console-log: true
giveDiamonds:
mode: real_time # real_time 模式
interval: 1h # 1 小时 (支持: s, m, h, d 分别代表秒、分钟、小时、天)
commands:
- "give %player_name% diamond 1"
- "eco give %player_name% 100" # Vault 集成
broadcast: "&b%player_name% 收到了一颗钻石和 $100!"
console-log: true
rankUp:
mode: real_time
interval: 7d # 7 天
commands:
- "lp user %player_name% parent add veteran"
broadcast: "&6%player_name% 在 7 天后晋升为 Veteran!"
console-log: true
# 全局设置
settings:
# 是否启用 PlaceholderAPI 支持
placeholder-api: true
# 所有广播消息的前缀
broadcast-prefix: "&8[&6TimedActions&8]&r "
# 是否将所有计划触发记录到控制台
global-console-log: true
```
### 计划配置
每个计划支持以下选项:
- **name**: 计划的唯一标识符
- **mode**: `minecraft_days` 或 `real_time`
- **interval**:
- 对于 `minecraft_days`:Minecraft 天数
- 对于 `real_time`:时间,带有后缀(s=秒,m=分钟,h=小时,d=天)
- **commands**: 要执行的命令列表(支持占位符)
- **broadcast**: 可选的广播给所有玩家的消息(支持占位符)
- **console-log**: 布尔值,是否将此计划的执行记录到控制台
### 时间间隔
实时的间隔支持:
- `30s` - 30 秒
- `5m` - 5 分钟
- `2h` - 2 小时
- `1d` - 1 天
- `7d` - 7 天
## 插件集成
### PlaceholderAPI
在以下内容中完全支持所有 PlaceholderAPI 占位符:
- 命令
- 广播消息
- 内置占位符,例如 `%player_name%`
### 常见插件示例
#### WorldBorder 集成
```yaml
schedules:
borderShrink:
mode: minecraft_days
interval: 5
commands:
- "worldborder set 5000"
broadcast: "&c世界边框已经缩小!"
```
#### Vault 经济集成
```yaml
schedules:
dailyReward:
mode: real_time
interval: 1d
commands:
- "eco give %player_name% 100"
broadcast: "&a%player_name% 收到每日 $100 奖励!"
```
#### LuckPerms 集成
```yaml
schedules:
weeklyPromotion:
mode: real_time
interval: 7d
commands:
- "lp user %player_name% parent add veteran"
broadcast: "&6%player_name% 已晋升为 Veteran!"
```
## 依赖
### 必需
- **BlueSlimeCore** - 核心 API 框架 -
### 可选 (软依赖)
- **PlaceholderAPI** - 用于命令和消息中的占位符支持
- **Vault** - 用于经济命令集成
- **LuckPerms** - 用于权限管理命令
- **WorldBorder** - 用于世界边框操作命令
## 安装
1. 下载插件 JAR 文件
2. 将其放在服务器的 `plugins` 文件夹中
3. 确保已安装 BlueSlimeCore
4. 重新启动服务器
5. 在 `plugins/TimedActions/config.yml` 中配置计划
6. 使用 `/timedactions reload` 应用更改
## API 信息
- **Minecraft 版本**: 1.13+
- **服务器软件**: Spigot, Paper 或兼容的分支
- **Java 版本**: 8+
## 命令摘要
| 命令 | 权限 | 描述 |
|---|---|---|
| `/timedactions reload` | `timedactions.admin` | 重新加载配置并重新启动计划 |
| `/timedactions list` | `timedactions.admin` | 列出所有配置的计划 |
| `/timedactions trigger ` | `timedactions.admin` | 手动触发一个计划 |
## 支持
此插件旨在具有可扩展性和可维护性。未来的功能可能包括:
- 计划的随机延迟
- 每个世界的计划配置
- 基于权限的计划触发
- 高级基于条件的调度
- 用于计划管理的 Web 界面
## 许可证
详情请参阅 LICENSE 文件。