- 版权类型
- 原创
- 插件中文名称
- 每日奖励
- 插件英文名称
- DailyRewards
- 支持的核心(服务端)
- Paper
- Purpur
- Leaves
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
[MD]
# DailyRewards
DailyRewards 是一个适用于 Paper 服务端的每日在线奖励插件。插件可以根据玩家当天在线时长发放分段奖励,并提供连续登录记录、排行榜、全息榜、GUI 领取和 PlaceholderAPI 占位符等功能。
默认配置可以直接使用;奖励内容、领取方式、GUI、消息文本、排行榜和数据库都可以通过配置文件调整。
注意:仅支持Paper及其下游服务端
## 功能
- 按今日在线时长配置多段奖励,例如 30 秒、1 分钟、30 分钟、1 小时。
- 支持自动发放奖励,也支持玩家通过 GUI 手动领取。
- 支持物品、经验、Vault 经济、指令、音效、消息、药水效果、Title 和烟花奖励。
- 支持连续登录天数记录,以及基于连续登录的奖励倍率。
- 支持总在线、今日在线、连续登录三类排行榜。
- 支持 Paper 原生 TextDisplay 全息榜,也可使用 DecentHolograms。
- 支持 SQLite 和 MySQL 存储。
- 支持 PlaceholderAPI 占位符。
## 基本信息
| 项目 | 内容 |
| --- | --- |
| 插件版本 | 2.0.0 |
| 服务端 | Paper 1.20.4+ |
| Java | 17+ |
| 构建工具 | Maven |
| 主命令 | `/dailyrewards` |
| 命令别名 | `/dr`、`/reward`、`/rewards` |
| 默认存储 | SQLite |
软依赖:
| 插件 | 用途 |
| --- | --- |
| Vault | 发放 `money` 经济奖励 |
| PlaceholderAPI | 提供在线时长、连续登录等占位符 |
| DecentHolograms | 使用 DecentHolograms 作为全息榜后端 |
未安装软依赖时,插件仍可启动;对应功能会自动跳过或不可用。
## 安装
1. 下载或构建插件 JAR。
2. 将 `DailyRewards-2.0.0.jar` 放入服务器的 `plugins/` 目录。
3. 启动服务器,等待插件生成默认配置。
4. 根据需要修改 `plugins/DailyRewards/` 下的配置文件。
5. 执行 `/dr reload` 重载配置。
如果修改了数据库类型、依赖插件或服务端版本,建议重启服务器。
插件生成的主要文件:
| 文件 | 说明 |
| --- | --- |
| `config.yml` | 主配置,包含数据库、在线计时、领取模式、连续登录、排行榜和全息榜设置 |
| `rewards.yml` | 奖励组和在线时长奖励段 |
| `gui.yml` | GUI 标题、槽位、按钮和进度显示 |
| `messages.yml` | 插件消息文本 |
## 快速使用
玩家打开每日奖励菜单:
```text
/dr open
```
管理员常用命令:
```text
/dr reload
/dr top total_time
/dr hologram create total_time
```
默认配置无需修改即可运行。默认数据库文件位于:
```text
plugins/DailyRewards/playerdata.db
```
## 奖励配置
奖励写在 `rewards.yml` 中。`time` 的单位为秒,玩家当天在线时间达到对应值后即可领取该段奖励。
```yaml
group-priority:
- vip
- default
groups:
default:
- time: 60
display-item:
material: COOKIE
name: "<yellow>1分钟奖励</yellow>"
lore:
- "<gray>在线 <yellow>1分钟</yellow> 后可领取</gray>"
rewards:
- type: experience
amount: 10
- type: item
material: APPLE
amount: 3
- type: money
amount: 10.0
- type: command
command: "say %player% 获得了每日奖励"
console: true
```
奖励组通过权限匹配。玩家拥有 `dailyrewards.group.vip`,且 `group-priority` 中包含 `vip` 时,会优先使用 `vip` 组;未匹配到其他组时使用 `default`。
支持的奖励类型:
| 类型 | 别名 | 常用字段 |
| --- | --- | --- |
| `item` | 无 | `material`、`amount`、`name`、`lore` |
| `experience` | `exp`、`xp` | `amount` |
| `money` | `vault`、`eco` | `amount` |
| `command` | `cmd` | `command`、`console` |
| `sound` | 无 | `sound`、`volume`、`pitch` |
| `message` | `msg` | `message`、`actionbar` |
| `potion_effect` | `potion`、`effect` | `effect`、`duration`、`amplifier` |
| `title` | 无 | `title`、`subtitle`、`fade-in`、`stay`、`fade-out` |
| `firework` | `fw` | `power`、`colors`、`fade-colors`、`type`、`flicker`、`trail` |
文本支持 MiniMessage,部分消息也兼容传统 `&` 颜色代码。
## 主配置
常用配置项位于 `config.yml`:
| 配置项 | 默认值 | 说明 |
| --- | --- | --- |
| `reset.hour` / `reset.minute` | `0` / `0` | 每日重置时间,使用服务器本地时间 |
| `tracking.interval` | `60` | 在线时间累加间隔,单位为秒 |
| `mode.auto-grant` | `true` | 达到奖励条件后是否自动发放 |
| `mode.gui-enabled` | `true` | 是否允许玩家使用 GUI |
| `mode.auto-reminder` | `true` | 达到可领取条件时是否提醒 |
| `login.enabled` | `true` | 是否启用连续登录 |
| `login.multiplier` | `0.05` | 连续登录带来的奖励加成倍率 |
| `database.type` | `sqlite` | 可选 `sqlite` 或 `mysql` |
| `storage.save-interval` | `1200` | 自动保存间隔,单位为秒 |
| `leaderboard.default-type` | `total_time` | 默认排行榜类型 |
| `hologram.provider` | `text_display` | 可选 `text_display` 或 `decent_holograms` |
| `placeholder.identifier` | `dailyrewards` | PlaceholderAPI 占位符前缀 |
MySQL 示例:
```yaml
database:
type: mysql
mysql:
host: localhost
port: 3306
database: dailyrewards
user: root
password: ""
```
## 命令
| 命令 | 权限 | 说明 |
| --- | --- | --- |
| `/dr open` | `dailyrewards.use` | 打开奖励 GUI |
| `/dr info [玩家]` | `dailyrewards.info` / `dailyrewards.info.others` | 查看自己或其他玩家的在线与登录统计 |
| `/dr top [类型]` | `dailyrewards.top` | 查看排行榜,类型为 `total_time`、`daily_time`、`login` |
| `/dr update` | `dailyrewards.update` | 立即检查所有在线玩家的奖励状态,并刷新全息榜 |
| `/dr addtime <玩家> <秒数>` | `dailyrewards.addtime` | 为在线玩家增加今日在线时间 |
| `/dr save` | `dailyrewards.save` | 立即保存缓存数据 |
| `/dr reload` | `dailyrewards.reload` | 重载配置、奖励、GUI、消息和全息设置 |
| `/dr reset <玩家>` | `dailyrewards.reset` | 重置在线玩家的今日在线时间 |
| `/dr hologram create [类型]` | `dailyrewards.hologram` | 在当前位置上方创建全息排行榜 |
| `/dr hologram remove <ID>` | `dailyrewards.hologram` | 删除指定全息排行榜,支持输入 ID 前缀 |
| `/dr hologram list` | `dailyrewards.hologram` | 列出所有全息排行榜 |
| `/dr hologram refresh` | `dailyrewards.hologram` | 手动刷新所有全息排行榜 |
| `/dr help` | 无 | 查看帮助 |
全息命令也可以写作 `/dr holo ...` 或 `/dr hd ...`。
## 权限
| 权限节点 | 默认 | 说明 |
| --- | --- | --- |
| `dailyrewards.use` | true | 允许打开 GUI |
| `dailyrewards.info` | true | 允许查看自己的统计 |
| `dailyrewards.info.others` | op | 允许查看其他玩家统计 |
| `dailyrewards.top` | true | 允许查看排行榜 |
| `dailyrewards.update` | op | 允许手动更新奖励状态 |
| `dailyrewards.addtime` | op | 允许手动添加在线时间 |
| `dailyrewards.save` | op | 允许手动保存数据 |
| `dailyrewards.reload` | op | 允许重载配置 |
| `dailyrewards.reset` | op | 允许重置玩家今日在线时间 |
| `dailyrewards.hologram` | op | 允许管理全息排行榜 |
| `dailyrewards.group.<组名>` | false | 使用指定奖励组,例如 `dailyrewards.group.vip` |
## PlaceholderAPI
安装 PlaceholderAPI 后,插件会自动注册占位符。默认前缀为 `dailyrewards`。
| 占位符 | 输出 |
| --- | --- |
| `%dailyrewards_daily_time%` | 今日在线时间,单位为分钟 |
| `%dailyrewards_daily_time_raw%` | 今日在线时间,单位为秒 |
| `%dailyrewards_total_time%` | 总在线时间,单位为分钟 |
| `%dailyrewards_total_time_raw%` | 总在线时间,单位为秒 |
| `%dailyrewards_login_days%` | 当前连续登录天数 |
| `%dailyrewards_claimed%` | 今日已领取奖励段数量 |
| `%dailyrewards_daily_time_hms%` | 今日在线时间,格式为 `HH:MM:SS` |
| `%dailyrewards_total_time_hms%` | 总在线时间,格式为 `HH:MM:SS` |
如需修改占位符前缀:
```yaml
placeholder:
identifier: dr
```
重载后即可使用 `%dr_daily_time%`、`%dr_total_time%` 等占位符。
## 排行榜与全息榜
排行榜类型:
| 类型 | 含义 |
| --- | --- |
| `total_time` | 总在线时长 |
| `daily_time` | 今日在线时长 |
| `login` | 连续登录天数 |
默认全息后端为 Paper 原生 TextDisplay:
```yaml
hologram:
provider: text_display
```
该模式不需要额外插件。
如果需要使用 DecentHolograms:
```yaml
hologram:
provider: decent_holograms
```
切换后执行 `/dr reload`,已有全息榜会按新的配置刷新。
## 数据存储
默认使用 SQLite:
```text
plugins/DailyRewards/playerdata.db
```
```
可以在 `config.yml` 中切换到 MySQL。
[/MD]
图片:
图片: