- 版权类型
- 原创
- 插件中文名称
- 逸云签到插件
- 插件英文名称
- YiyunSignIn
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- Folia
- Purpur
- Leaves
- 其他核心
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
[MD]
# 🎯 YiyunSignIn 逸云签到

**不只是签到,更是一套玩家活跃引擎。**
面向 Paper 1.21+ 的现代多系统签到插件,原生兼容 Folia。
月签、周签、限时活动与新手七日可同时运行,GUI、条件和奖励全部通过 YAML 配置。
---
## ✨ 核心亮点
| 特性 | 说明 |
| :---: | --- |
| **一服多套签到** | 月签、自然周签、限时循环活动、新手七日互不干扰,每套系统拥有独立配置、GUI、奖励和权限 |
| **奖励自由组合** | 内置 **10 种奖励动作** 和 **13 种条件**,可实现 VIP 分级、节日奖励、周末双倍、在线时长门槛、前三名奖励等玩法 |
| **补签安全机制** | 包含 `CONTINUOUS` 条件的连续签到奖励默认不会被补签触发,避免重复领取里程碑奖励 |
| **奖励可靠追溯** | 记录待发、已发和失败状态;发放失败后可查看记录并按原始内容重试 |
| **离线领奖支持** | 支持奖励排队、上线自动领取、失败重试和过期清理,每种动作均可单独选择离线策略 |
| **高性能设计** | 数据库 IO 使用 JDK 21 虚拟线程,签到记录和玩家进度在同一事务内原子写入 |
| **完整管理工具** | 提供玩家数据面板、排行榜、数据库备份与导出、补签卡管理、全息榜和 LiteSignIn 数据迁移 |
---
## 🎮 四种签到系统
| 类型 | 周期规则 | 典型用途 |
| --- | --- | --- |
| `MONTHLY` | 按自然月生成日历,可查看历史月份 | 每日签到 |
| `WEEKLY` | ISO 8601 自然周,周一至周日 | 每周任务 |
| `SINGLE_CYCLE_WEEKLY` | 自定义 7 天周期,可限制日期和轮数 | 限时活动 |
| `ONE_TIME_WEEKLY` | 一次性 7 天进度,完成后永久结束 | 新手七日 |
> 💡 插件默认提供月签、周签和新手七日三套示例,复制配置即可继续扩展更多签到入口。
---
## 📦 环境要求
| 项目 | 要求 |
| --- | --- |
| **服务端** | Paper 1.21.x,兼容 Folia、Luminol 等高版本分支 |
| **Java** | JDK 21 |
| **数据库** | SQLite(默认)或 MySQL |
| **强制前置** | 无 |
### 可选软依赖
- **PlaceholderAPI** — 在计分板、聊天、菜单等位置读取签到数据
- **CraftEngine** — 在 GUI 或奖励中使用 CraftEngine 自定义物品
- **DecentHolograms** — 创建自动刷新的全息签到排行榜
> ⚠️ 首次启动时,Paper 会根据 `plugin.yml` 自动下载数据库驱动、连接池和配置解析库,请确保服务器能够访问依赖仓库。
---
## 🚀 快速开始
### 安装步骤
1. 将 `YiyunSignIn-1.0.0.jar` 放入服务器的 `plugins/` 目录
2. 使用 JDK 21 启动或重启服务器
3. 玩家输入 `/yiyunsignin gui` 打开签到菜单
4. 管理员输入 `/yiyunsignin admin` 打开管理面板
5. 修改配置后执行 `/yiyunsignin reload`
### 目录结构
首次运行后主要文件如下:
```text
plugins/YiyunSignIn/
├─ config.yml # 基础设置、数据库与签到系统
├─ messages.yml # 中英文消息
├─ gui/ # 各签到系统的菜单布局
├─ rewards/ # 各签到系统的条件与奖励
└─ data/yiyunsignin.db # 默认 SQLite 数据库
```
---
## ⚙️ 配置签到系统
在 `config.yml` 的 `sign-in-systems` 下添加一个条目:
```yaml
sign-in-systems:
monthly-signin:
enabled: true
type: MONTHLY
display-name: "<gold><bold>每月签到</bold></gold>"
slot: 1
# permission: "yiyunsignin.system.monthly"
retro:
enabled: true
cost-per-day: 1
card-type: "default"
cooldown-seconds: 0
max-per-cycle: 0
```
相同的系统 ID 会关联以下配置文件:
```text
config.yml: sign-in-systems.monthly-signin
gui/monthly-signin.yml
rewards/monthly-signin.yml
```
> 💡 管理员可以通过可选的 `permission` 字段限制某一套签到,例如制作会员专属签到入口。
---
## 🎁 奖励与条件
### 10 种奖励动作
`ITEM` · `CONSOLE_COMMAND` · `PLAYER_COMMAND` · `MESSAGE` · `BROADCAST` · `SOUND` · `TITLE` · `ACTION_BAR` · `CONDITIONAL` · `DELAY`
### 13 种条件
`PERMISSION` · `WORLD` · `ONLINE_TIME` · `PAPI` · `DATE_RANGE` · `DATE_MATCH` · `WEEKDAY` · `TIME_RANGE` · `CONTINUOUS` · `TOTAL_SIGNIN` · `CYCLE_COUNT` · `RETRO_CARDS` · `RANK`
多条件支持 `ALL`、`ANY`、`NONE` 组合;`exclusive-group` 可让同组奖励只触发第一个匹配项,适合处理 VIP 等级互斥。
```yaml
rewards:
weekend-vip:
condition-mode: ALL
conditions:
- type: WEEKDAY
days: "SATURDAY,SUNDAY"
- type: PERMISSION
value: "yiyunsignin.vip"
actions:
- type: CONSOLE_COMMAND
commands: ["give {player} diamond 2"]
- type: MESSAGE
messages: ["&d周末 VIP 额外奖励已发放!"]
```
### 🔒 补签与连续奖励保护
插件默认阻止补签触发任何包含 `CONTINUOUS` 条件的奖励,普通连续里程碑建议使用以下写法:
```yaml
rewards:
streak-7:
skip-on-retro: true
condition:
type: CONTINUOUS
value: 7
operator: "=="
actions:
- type: CONSOLE_COMMAND
commands: ["give {player} diamond 3"]
```
- `skip-on-retro: true` — 明确要求该奖励不在补签时发放
- `operator: "=="` — 只在刚好达到 7 天时触发,避免超过门槛后每天重复发奖
- 即使旧配置没有写 `skip-on-retro`,只要奖励包含 `CONTINUOUS` 条件,也会受到默认保护
只有确实希望"补签凑齐连续天数后也能领奖"时,才在**奖励条目层级**显式开启:
```yaml
allow-continuous-on-retro: true
```
> ⚠️ 这是高级开关。启用后,`CONTINUOUS` 会按补签完成后的连续天数判断;默认值为 `false`。
### 📥 奖励离线策略
每个动作都可以单独设置 `offline-policy`:
| 策略 | 行为 |
| --- | --- |
| `IMMEDIATE` | 立即执行适合离线玩家的动作 |
| `QUEUE` | 暂存,等待玩家上线后发放 |
| `SKIP` | 玩家离线时跳过该动作 |
---
## 💻 命令速查
> 主命令别名:`/yysignin`、`/yysi`、`/yiyun`
### 玩家命令
| 命令 | 说明 | 默认权限 |
| --- | --- | :---: |
| `/yiyunsignin` | 查看按权限生成的帮助 | 所有人 |
| `/yiyunsignin gui [系统]` | 打开签到菜单 | 所有人 |
| `/yiyunsignin click [系统] [玩家]` | 快速签到或代签 | 自签所有人,代签 OP |
| `/yiyunsignin info [玩家]` | 查看签到信息 | 所有人 |
| `/yiyunsignin leaderboard [系统] [页]` | 查看排行榜 | 所有人 |
### 管理命令
| 命令 | 说明 |
| --- | --- |
| `/yiyunsignin reload [系统]` | 重载全部配置或指定系统 |
| `/yiyunsignin save` | 立即保存玩家数据 |
| `/yiyunsignin admin [系统] [玩家]` | 打开可视化管理面板 |
| `/yiyunsignin retro give/take/set …` | 管理补签卡 |
| `/yiyunsignin reward list/retry …` | 查看并重试失败奖励 |
| `/yiyunsignin offline list/deliver/clear/stats` | 管理离线奖励 |
| `/yiyunsignin database backup/rollback/confirm/list/migrate/export` | 数据库维护与迁移 |
| `/yiyunsignin hologram create/remove/list/refresh` | 管理全息排行榜 |
| `/yiyunsignin debug reset/simulate/givecards` | 调试与测试工具 |
> 📖 `yiyunsignin.admin` 是默认仅 OP 拥有的父权限,包含所有管理子权限。完整权限节点和参数说明请查看[详细使用指南](https://docs.qq.com/aio/DVHNNb3RiS3JaQ1pV)。
---
## 🔧 PlaceholderAPI 变量
安装 PlaceholderAPI 后即可直接使用,无需另外下载变量扩展。
### 全局变量
```text
%yiyunsignin_total_signin% 所有系统累计签到次数
%yiyunsignin_total_continuous% 所有系统中的最大连续天数
%yiyunsignin_offline_pending% 待领取离线奖励数
```
### 单系统变量
将下面变量中的 `SYSTEM_ID` 替换为系统 ID,例如 `monthly-signin`:
```text
%yiyunsignin_SYSTEM_ID_signed_today% 今日是否已签到
%yiyunsignin_SYSTEM_ID_continuous% 连续签到天数
%yiyunsignin_SYSTEM_ID_total% 累计签到次数
%yiyunsignin_SYSTEM_ID_cycle_count% 本周期签到次数
%yiyunsignin_SYSTEM_ID_rank% 本周期排名
%yiyunsignin_SYSTEM_ID_retro_cards% 补签卡数量
%yiyunsignin_SYSTEM_ID_last_date% 最后签到日期
```
---
## 🗄️ 数据库与迁移
默认使用 SQLite,适合单服直接开箱运行;多服共享数据时可在 `config.yml` 中切换到 MySQL。两种存储均通过 HikariCP 管理连接,签到记录与进度采用事务写入和幂等去重。
### LiteSignIn 数据迁移
迁移前建议先备份:
```text
/yiyunsignin database backup
/yiyunsignin database migrate monthly-signin
```
> ✅ 迁移会自动处理签到记录和补签卡,坏数据会逐行跳过并统计;重复运行不会重复插入相同记录。
---
## ❓ 常见问题
### 修改 YAML 后为什么没有生效?
保存文件后执行 `/yiyunsignin reload`。如果 YAML 缩进或字段格式错误,请根据控制台日志定位对应文件和行号。
### 补签会不会领取连续 7 天、30 天等奖励?
默认不会。所有包含 `CONTINUOUS` 条件的奖励都具有补签保护;只有配置 `allow-continuous-on-retro: true` 才会显式放行。
### 可以只让 VIP 使用某个签到系统吗?
可以,在该系统配置中添加 `permission: "你的权限节点"`,再通过权限插件授予指定玩家。
### 必须安装 PlaceholderAPI、CraftEngine 或 DecentHolograms 吗?
不需要。它们都是可选软依赖,缺少时只会关闭对应的扩展能力,不影响基础签到功能。
---
## 📚 文档与素材
| 文档 | 说明 |
| --- | --- |
| [📖 详细使用指南](https://docs.qq.com/aio/DVHNNb3RiS3JaQ1pV) | 完整配置、GUI、奖励、条件、API 与实战案例 |
---
## 👤 作者
**CHL_chun**
- QQ:2919089965
- 逸云系列插件交流群:1093090518
[/MD]