[MD] ## YuPay 更新说明 · v1.2.2.0-SNAPSHOT --- ### 回调服务器升级 本次更新将插件内置的 HTTP 回调服务器从 JDK 自带的 `com.sun.net.httpserver` 替换为 **Undertow 2.3.18.Final**。 Undertow 是 JBoss / WildFly 项目下的生产级 HTTP 服务器,在企业级 Java 应用中广泛使用。对插件用户而言,主要变化包括: - 回调通知处理不再因服务器繁忙而排队阻塞,微信 / 支付宝的到账通知响应更加及时 - 新增请求体大小限制(默认 64 KB),异常请求将被直接拒绝,不再占用服务器资源 - 新增可选 IP 白名单,配置后可仅允许微信 / 支付宝官方服务器访问回调接口 - 插件停止时,回调服务器会等待正在处理的请求完成后才关闭,不会打断正在到账的订单 --- ### 首次启动说明 Undertow 及其依赖库**不内置在插件 JAR 中**,将在服务器启动时自动从 Maven Central 下载并缓存到 `plugins/YuPay/libs/` 目录。 首次启动时,控制台会输出类似如下日志,属于正常现象: ``` [LibraryLoader] 下载中:undertow-core-2.3.18.Final.jar ← https://repo1.maven.org/maven2/... [LibraryLoader] ✓ 下载完成:undertow-core-2.3.18.Final.jar(xxx KB) [LibraryLoader] ✓ 校验通过(新下载):undertow-core-2.3.18.Final.jar ``` 下载完成后,后续启动将直接使用缓存,无需再次联网。 **注意:首次启动时,服务器需要能够访问 `repo1.maven.org`,请确保服务器网络畅通。** --- ### config.yml 新增配置项 在原有 `callback:` 节点下新增以下可选配置,不配置时使用括号内的默认值: ```yaml callback: port: 8080 host: "0.0.0.0" # 线程模型 io-threads: 2 # IO 线程数,建议不超过 CPU 核心数(默认 2) worker-threads: 8 # 业务处理线程数(默认 8) # 超时(毫秒) read-timeout-ms: 10000 write-timeout-ms: 10000 # 安全 max-body-size: 65536 # 请求体上限,单位字节(默认 64 KB) allowed-ips: [] # IP 白名单,留空不启用 # 调试 access-log: false # 开启后每次回调都会在控制台留下一条记录 # 停止行为 shutdown-grace-ms: 3000 # 优雅关闭等待时间(毫秒) ``` 旧配置文件**无需手动修改**,未填写的字段均使用默认值,插件可直接覆盖更新。 --- ### 其他修复 - **SQLite 数据库下累计赞助档次记录失败的问题**:原代码使用了 MySQL 专属的 `ON DUPLICATE KEY UPDATE` 语法,在 SQLite 中会直接报错,导致档次记录丢失。现已根据数据库类型自动选择正确的语法。 - **支付宝回调缺少 `app_id` 一致性校验**:现已增加校验,确保回调中的 `app_id` 与配置文件中的值一致。 - **微信支付回调新增时间戳防重放检查**:超过 5 分钟的回调请求将被拒绝。 --- 如升级后遇到问题,欢迎加入交流 QQ 群 **1080918424** 反馈。 [/MD]
[MD] ### YuPay 1.2.1 → 1.2.1.1 更新日志 🎉 **更新概述** 本次更新是一次全面的稳定性与维护性升级。我们投入了大量精力,对插件在 1.8 至 1.21 所有主流版本上的所有功能进行了彻底的兼容性测试与修复,确保在不同服务器环境下的稳定运行。同时,我们对核心代码进行了深度重构,并移除了内置依赖库,使插件体积更小、结构更清晰、更易于未来维护。 ✅ **版本兼容性与测试** 1. **全版本兼容性测试** * 对 **1.8.x 至 1.21.x** 所有主要 Minecraft 版本进行了完整的功能回归测试。 * 解决了在不同版本 API 下导致的功能异常、命令报错、UI 显示等问题,确保插件在所有支持版本上行为一致、运行稳定。 * 优化了与不同版本经济插件(Vault)的交互逻辑,消除了潜在的兼容性风险。 🔧 **优化改进** 1. **代码重构** * 对插件核心逻辑进行了全面重构,将功能模块进行更清晰的划分。 * 优化了代码结构,消除了冗余代码,显著提升了代码的可读性和可维护性,为后续功能迭代打下坚实基础。 * 统一了异常处理与日志记录方式,便于问题排查。 2. **体积优化** * **移除了所有内置依赖库**(如 HikariCP 等),改为通过 `lib/` 目录或服务器环境动态加载。 * 此举大幅减小了插件 JAR 文件的体积,并避免了因依赖库版本冲突导致的问题。 3. **配置与文件结构** * 由于依赖库的移除,插件文件结构更精简,仅保留核心功能代码。 🐛 **问题修复** * 修复了部分版本因 API 变动导致的命令补全(TabComplete)功能失效的问题。 * 修复了在某些 1.13+ 版本下,特定功能因 Material 名称变更而无法正常工作的问题。 * 修复了跨版本环境下,物品生成与检测功能可能出现的异常。 📋 **配置变更说明** 本次更新不涉及 `config.yml` 和 `messages.yml` 的配置结构变更。配置文件版本号保持不变。 * **重要提示**:由于移除了内置依赖库,请确保您的服务器已安装并正确配置了插件所需的前置依赖(如 Vault),且依赖库版本与服务器核心兼容。 📖 **更新指南** 1. **备份**:停止服务器,并备份现有的 `plugins/YuPay/` 文件夹。 2. **替换**:删除旧的 `YuPay-1.2.1.jar` 文件,将新的 `YuPay-1.2.1.1.jar` 放入 `plugins/` 目录。 3. **启动**:启动服务器,插件将自动加载新代码。 4. **验证**:启动后,检查控制台日志,确认插件正常加载且无报错信息。建议进入游戏测试核心功能(如 `/pay`)以确保一切正常。 📞 **反馈与支持** 如果在使用新版本过程中遇到任何问题,欢迎加入交流QQ群:1080918424 进行反馈。 版本号:1.2.1.1 发布日期:2026年3月21日 [/MD]
[MD] # YuPay 1.2 → 1.2.1 更新日志 ## 🎉 更新概述 本次更新主要聚焦于**功能增强**和**用户体验优化**,新增了无偿赞助模式、全局黑名单、动态PAPI占位符、配置动态修改等实用功能,同时清理了大量硬编码文本,提升插件可维护性。 --- ## ✨ 新增功能 ### 1. 无偿赞助模式(`-n` 或 `--no-reward` 参数) - 玩家可使用 `/pay 100 -n` 进行无偿赞助 - **特点**:仅记录订单,不发放经济奖励、不触发任何命令奖励 - **用途**:纯支持服务器的玩家,不影响游戏经济平衡 - **订单标识**:无偿赞助订单号以 `FREE_` 开头 ### 2. 全局赞助黑名单 - 支持使用 `all` 关键词禁止/解除所有玩家赞助 - **命令**: - `/yupay ban all [原因]` - 禁止全体赞助 - `/yupay unban all` - 解除全体禁止 - **用途**:紧急情况下快速停止所有赞助活动 ### 3. 动态PAPI占位符 - 新增 `%yupay_top_<rank>_name%` 和 `%yupay_top_<rank>_amount%` 动态占位符 - **兼容格式**: - 新格式:`%yupay_top_1_name%` - 旧格式:`%yupay_top1_name%`(保留兼容) - **新增占位符**: - `%yupay_is_banned%` - 玩家是否被禁止赞助 - `%yupay_total_orders%` - 玩家总订单数 - `%yupay_success_orders%` - 玩家成功订单数 - `%yupay_orders_in_<time>%` - 玩家指定时间内订单数 - `%yupay_success_orders_in_<time>%` - 玩家指定时间内成功订单数 - `%yupay_amount_in_<time>%` - 玩家指定时间内总赞助额 - `%yupay_server_total_orders%` - 服务器总订单数 - `%yupay_server_success_orders%` - 服务器成功订单数 - `%yupay_server_orders_in_<time>%` - 服务器指定时间内订单数 - `%yupay_server_success_orders_in_<time>%` - 服务器指定时间内成功订单数 - `%yupay_server_amount_in_<time>%` - 服务器指定时间内总赞助额 ### 4. 配置动态修改扩展 - 新增 `economy-enabled` 和 `commands-enabled` 配置项 - 支持通过 `/yupay set` 动态修改: - `economy-enabled true/false` - 开关经济系统奖励 - `commands-enabled true/false` - 开关命令奖励 - `min-amount/max-amount/max-daily-amount` - 动态调整金额限制 - 新增 `/yupay config` 命令查看当前配置(管理员) ### 5. 消息系统优化 - 所有硬编码文本已迁移至 `messages.yml` - 新增消息键: - `pay-success-no-reward` - 无偿赞助成功消息 - `config-header/footer/line` - 配置查看界面 - `set-invalid-boolean` - 布尔值输入错误提示 - `ban-usage/unban-usage` - 黑名单命令帮助更新 - 数据库相关日志消息统一使用 `db-*` 前缀 ### 6. 数据库增强 - 新增统计方法: - `getOrderCountByUUID()` - 玩家订单数统计 - `getOrderCountByUUIDInTime()` - 玩家时间段订单数 - `getServerOrderCount()` - 服务器订单数统计 - `getServerOrderCountInTime()` - 服务器时间段订单数 - `getServerAmountInTime()` - 服务器时间段金额统计 --- ## 🔧 优化改进 ### 1. 代码结构优化 - 统一工具类:`QRCodeUtils` 整合二维码生成功能 - 简化 `MessageManager`,整合 `MessageUtils` 方法 - 优化 `PayCommand` 和 `YupayCommand` 的无偿赞助标志处理 ### 2. 版本兼容性 - 配置文件版本升级至 `5` - 消息文件版本升级至 `5` - 移除对 Vault 的硬依赖,改为软依赖(`depend: []`) ### 3. 日志优化 - 数据库操作日志使用统一消息键 - 黑名单操作增加详细日志记录 --- ## 🐛 问题修复 - 修复无偿赞助模式下仍触发奖励的 bug - 修复地图二维码在某些版本下无法正常显示的兼容性问题 - 修复黑名单全局禁止后玩家仍可赞助的问题 --- ## 📋 配置变更说明 ### config.yml 新增配置项 ```yaml economy: # 是否启用经济系统奖励 enabled: true commands: # 是否启用命令奖励 enabled: true ``` ### messages.yml 新增消息键 ```yaml pay-success-no-reward: "&a&l✅ &f赞助成功!您本次选择了无偿赞助,未获得任何奖励。" config-header: "&6&m⎯⎯⎯&r &e&l⚙ YuPay 配置信息 &6&m⎯⎯⎯&r" config-footer: "&6&m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯&r" config-line: "&e{key}&7: &f{value}" set-invalid-boolean: "&c请输入 true 或 false" ``` --- ## 📖 更新指南 ### 自动更新 1. 停止服务器 2. 替换 `YuPay-1.2.1-SNAPSHOT.jar` 3. 启动服务器,插件会自动更新配置文件(保留原有配置) 4. 检查控制台日志确认更新成功 ### 手动更新(如自动更新失败) 1. 备份 `config.yml` 和 `messages.yml` 2. 删除旧配置文件 3. 启动服务器生成新配置 4. 根据备份手动迁移自定义配置 --- ## 📞 反馈与支持 如有任何问题或建议,欢迎加入交流QQ群:**1080918424** --- **版本号**:1.2.1 **发布日期**:2026年3月20日 [/MD]
[MD] # 🎉 YuPay 1.2 更新说明 亲爱的服主,感谢您使用 YuPay!本次更新带来了大量新功能、优化和问题修复,旨在为您提供更强大、更灵活的赞助管理体验。以下是 1.1.1 → 1.2 的详细更新内容。 --- ## ✨ 新增功能 ### 1. 赞助黑名单系统 - 现在可以通过命令禁止某些玩家使用赞助功能,支持填写原因。 - 命令: - `/yupay ban <玩家名> [原因]` – 禁止玩家赞助 - `/yupay unban <玩家名>` – 解除禁止 - 被禁止的玩家尝试使用 `/pay` 时会收到提示,并显示原因(如有)。 - 数据库自动创建 `yu_banned_players` 表,无需手动操作。 ### 2. 货币转换功能 - 管理员可使用 `/yupay convert` 命令在 Vault 货币和 PlayerPoints 点数之间相互转换。 - 转换汇率可在 `config.yml` 中设置(`conversion-rates` 部分)。 - 命令格式:`/yupay convert <玩家> <来源类型(vault/points)> <目标类型(vault/points)> <数量>` ### 3. 赞助金额限制 - 可配置单笔最小/最大赞助金额(`pay.min-amount` / `pay.max-amount`,-1 表示无限制)。 - 可配置单日最大累计赞助金额(`pay.max-daily-amount`),超过后玩家当日无法继续赞助。 - 超出限制时会收到明确提示。 ### 4. 多种二维码输出模式 - 除了原有的可点击链接,现在支持: - **文本二维码**:在聊天框生成字符画二维码,适合无法点击链接的客户端(如基岩版)。可通过 `/pay <金额> text` 使用。 - **地图二维码**:生成一张带有二维码的地图,放入玩家背包(需要安装 ProtocolLib)。可通过 `/pay <金额> map` 使用。 - 可在 `config.yml` 中设置默认模式(`qrcode.default-output-mode`:`link` / `text` / `map`)。 ### 5. 历史订单查询 - 玩家可以使用 `/yupay history [页数]` 查看自己的赞助记录(订单号、金额、状态、时间)。 - 管理员可使用 `/yupay history <玩家名> [页数]` 查看其他玩家的历史。 ### 6. 更多 PAPI 占位符 - `%yupay_has_paid_in_<时间毫秒>%` – 指定时间内是否赞助过(true/false) - `%yupay_recent_amount_gt_<时间毫秒>_<金额>%` – 指定时间内赞助是否超过阈值(true/false) - `%yupay_pay_methods_count%` – 可用支付渠道数量 - `%yupay_pay_methods_list%` – 可用支付渠道名称(逗号分隔) - `%yupay_is_limited%` – 玩家是否因日上限被限制赞助(true/false) - `%yupay_daily_remaining%` – 今日剩余可赞助金额 ### 7. 自定义订单名称 - 现在可以在 `config.yml` 的 `pay.order-subject` 中自定义支付订单的商品名称,支持 `{player}` 和 `{amount}` 变量。 ### 8. 命令别名完全自定义 - 所有命令的别名现在可以在 `config.yml` 的 `commands` 部分完全自定义,不再受 `plugin.yml` 限制。例如可将 `/pay` 改为 `/donate`。 --- ## ⚙️ 配置变更 - **新增配置项**: - `pay.min-amount` – 单笔最小金额(默认 0.01) - `pay.max-amount` – 单笔最大金额(默认 -1) - `pay.max-daily-amount` – 单日最大累计金额(默认 -1) - `pay.order-subject` – 订单名称模板 - `conversion-rates.vault-to-points` / `points-to-vault` – 货币转换汇率 - `qrcode.default-output-mode` – 二维码默认输出模式 - `qrcode.text-qr-size` / `text-black-char` – 文本二维码参数 - `database.mysql.jdbc-params` – 可自定义 MySQL JDBC 参数 - `database.table-names.banned-players` – 黑名单表名(默认 `yu_banned_players`) - **数据库自动更新**:首次启动 1.2 时,会自动创建黑名单表并更新索引。**建议提前备份数据库**,但插件已内置安全更新机制。 --- ## 🔧 命令变更 - **`/yupay` 新增子命令**: - `set <选项> <值>` – 动态修改配置(如默认支付方式、经济类型、汇率) - `ban / unban` – 管理黑名单 - `convert` – 货币转换 - `history` – 历史订单查询 - **`/pay` 命令现在支持第三个参数指定输出模式**: - `/pay 10` – 使用默认模式 - `/pay 10 wechat text` – 指定支付方式为微信,并输出文本二维码 - **所有命令的别名可通过配置文件完全自定义**,详见 `config.yml` 的 `commands` 部分。 --- ## 🔐 权限变更 新增了以下权限节点,可使用 LuckPerms 等插件进行精细控制: | 权限节点 | 说明 | 默认 | |----------|------|------| | `yupay.command.pay` | 允许使用支付命令 | 所有人 | | `yupay.command.top` | 允许查看排行榜 | 所有人 | | `yupay.command.total` | 允许查看赞助总额 | 所有人 | | `yupay.command.history` | 允许查看自己的赞助历史 | 所有人 | | `yupay.reload` | 允许重载配置 | OP | | `yupay.ban` | 允许管理黑名单 | OP | | `yupay.convert` | 允许进行货币转换 | OP | | `yupay.admin` | 包含上述所有 OP 权限 | OP | | `yupay.user` | 包含所有玩家基础权限 | 所有人 | --- ## 📦 依赖变化 - **新增可选依赖**: - `ProtocolLib` – 用于地图二维码功能(如不使用地图模式可忽略) --- ## 🐛 问题修复 - **排行榜显示错误**:玩家改名后排行榜不再出现多个条目,现在按 UUID 分组并取最新玩家名。 - **数据库连接优化**:连接池现在支持 SQLite,并允许自定义 JDBC 参数,提升 MySQL 稳定性。 - **消息文本支持更多占位符**:如 `{command}` 用于动态显示实际命令名,方便自定义别名后帮助信息正确显示。 --- ## ⚠️ 注意事项 1. **更新前请备份您的配置文件**(`config.yml` 和 `messages.yml`),插件会自动保留您修改过的配置项,但以防万一。 2. 如果使用 MySQL,建议先在配置中设置 `jdbc-params` 以确保最佳性能(示例已提供)。 3. 如需使用地图二维码模式,请务必安装 `ProtocolLib`,否则该模式会失效。 4. 文本二维码模式无需额外依赖,但字符画在聊天框中可能因字体问题显示不完美,可调整 `text-qr-size` 和 `text-black-char` 优化。 --- 再次感谢您的支持!如有任何问题或建议,欢迎加入交流QQ群:1080918424 反馈。 祝您的服务器蒸蒸日上! —— YuPay 开发团队 [/MD]
亲爱的服主和玩家朋友们,感谢您使用 YuPay!本次更新(1.1.1)主要针对配置文件管理、日志系统、声音兼容性以及 PlaceholderAPI 进行了优化和增强,让插件的使用体验更加顺畅。以下是详细的更新内容:
新特性与增强
1. 智能配置更新机制(再也不用手动改配置了!)
- 当检测到配置文件版本过低时,插件会自动备份旧配置(如 config.yml.backup_1),然后生成全新的默认配置文件。
- 自动保留您的自定义设置:插件会智能识别新旧配置中都存在的键,只将这些键的值从旧配置迁移到新配置中。这样您之前修改的支付密钥、数据库密码、兑换比例等关键信息都不会丢失,同时又能获得最新的默认配置项。
- 配置文件更新过程完全透明,控制台会输出详细的更新日志。
2. 消息系统增强(告别启动时的错误日志)
- 消息管理器(MessageManager)现在内置了后备默认消息机制。即使在更新配置文件之前,也能从插件 JAR 包内加载默认消息,确保所有日志和提示都能正常显示。
- 启动时不会再出现“消息配置缺失”的重复警告,日志输出更加干净。
3. 声音工具类改进(更稳定的跨版本兼容)
- SoundUtils 改为延迟初始化,在插件完全启动后才进行版本检测,避免了类加载时无法获取插件实例的问题。
- 所有日志输出都改用插件自己的 Logger,并支持通过消息文件自定义,方便您统一管理日志样式。
- 播放失败时会有更友好的错误提示,同时提供后备声音保证功能不受影响。
4. PlaceholderAPI 扩展升级(更多实用占位符)
- 版本号同步:占位符扩展版本现在会与插件主版本保持一致(从 1.0 改为 1.1.1),不再硬编码。
- 新增占位符:
- %yupay_total_all% – 服务器累计总赞助金额(元)
- %yupay_recent_day% – 玩家最近24小时赞助金额
- %yupay_recent_week% – 玩家最近7天赞助金额
- %yupay_recent_month% – 玩家最近30天赞助金额
- 原有的 %yupay_total%、%yupay_rank%、%yupay_top{n}_name%、%yupay_top{n}_amount% 保持稳定,功能不变。
5. 内部代码优化
- 移除了所有硬编码的日志文本,统一通过消息管理器获取,方便多语言支持。
- 优化了命令注册逻辑,确保自定义主名称和别名正常工作。
- 数据库查询相关方法增加了更多异常处理,避免因单个查询失败影响整个插件。
问题修复
- 修复了启动时因消息文件未更新而反复输出“消息配置缺失”的问题。
- 修复了 PlaceholderAPI 扩展版本始终显示为 1.0 的错误。
- 修复了 SoundUtils 在旧版本服务器上可能找不到声音常量的兼容性问题。
- 修复了某些情况下配置文件更新后用户自定义设置被意外覆盖的问题(现已实现智能保留)。
如何更新
- 将新版本的 YuPay.jar 替换服务器 plugins 文件夹中的旧文件。
- 强烈建议:首次启动新版本时,插件会自动备份并更新配置文件。如果您之前修改过配置,更新后请检查 config.yml 和 messages.yml 是否保留了您的自定义值,并确认新版本号(config-version 和 messages-version)已变为 1。
- 如果您启用了 PlaceholderAPI,新的占位符会立即生效,无需额外操作。
如果在使用过程中遇到任何问题,或有新的建议,欢迎加入我们的交流群:1080918424
反馈与支持
[MD] # YuPay 更新日志 ## [1.1] ### ✨ 新特性:动态命令注册 您现在可以通过 `config.yml` 的 `commands.names` 和 `commands.aliases` 自定义所有命令的主名称和别名,无需修改 `plugin.yml`。 - **主名称自定义**:例如将 `/pay` 改为 `/donate`,只需在配置中设置 `pay: "donate"`。 - **别名扩展**:可为每个命令添加多个额外别名,方便玩家记忆和使用。 - **热重载支持**:执行 `/yupay reload` 后,新的命令名称和别名会立即生效,无需重启服务器。 ### ✨ 新特性:配置文件自动更新(多语言支持) 插件现在会在启动时自动检测 `config.yml` 和 `messages.yml` 的版本,并智能合并新增的配置项,**保留您所有的自定义设置**。 - **版本控制**:配置文件顶部新增 `config-version` / `messages-version` 字段,插件根据版本号判断是否需要更新。 - **动态消息**:更新过程中的日志提示已从硬编码改为从 `messages.yml` 读取,您现在可以自由修改这些提示文本,实现多语言适配。 ### 🐛 问题修复 - 修复了重载命令后部分别名未正确刷新的问题,确保动态命令注册的可靠性。 > **升级提示**:本次更新涉及配置文件版本变化,插件首次启动时会自动合并新增项并更新版本号。我们建议您在升级前备份原有的配置文件,以防万一。 感谢您使用 YuPay!如有任何问题或建议,欢迎加入交流QQ群:1080918424。 [/MD]
我们对核心代码进行了彻底的重构,实现了前所未有的向后兼容性飞跃。现在,只需一次下载,即可在《我的世界》从 1.8、1.9、1.10……一直到最新的 1.21 版本中无缝使用。