WhitelistByTime

将玩家添加到白名单,可以设定为临时或永久。

资源图片
## 链接 [SpigotMC](https://www.spigotmc.org/resources/whitelistbytime-1-21-4.98946/) - 下载超过 5200 次 (2025年10月4日).\ [Modrinth](https://modrinth.com/plugin/whitelistbytime) - 下载 250 次 (2025年10月4日).\ [GitHub](https://github.com/NightMirror21/WhitelistByTime) - 9星 (2025年10月4日)。 ## 简介 这是一个 Minecraft 服务器插件。它允许你为玩家添加时间或永久白名单。 **该插件已为 Paper 1.20.x-1.21.x 开发和测试。 它还支持 Folia 和 Paper 的分支版本。** ## 功能 - 完全**可定制**。 - 支持 [**MiniMessage**](https://docs.advntr.dev/minimessage/format.html)。 - 兼容**任何 SQL 数据库**。 - **区分大小写**的昵称支持。 - 玩家**冻结**功能。 - PlaceholderAPI (**PAPI**) 支持。 - **轻量级**:对**主线程**的影响最小。 - **多服务器**支持:利用**SQL 事务**。 - **安全**:代码通过**自动化测试**得到广泛覆盖。 ## 指令和权限 | 指令 | 权限 | |--------------------------------------------------------|-------------------------| | /whitelist add [昵称] (时间) | wlbytime.add | | /whitelist remove [昵称] | wlbytime.remove | | /whitelist check [昵称] | wlbytime.check | | /whitelist checkme | wlbytime.checkme | | /whitelist time set/add/remove [昵称] [时间] | wlbytime.time | | /whitelist getall (页码) | wlbytime.getall | | /whitelist freeze [昵称] [时间] | wlbytime.freeze | | /whitelist unfreeze [昵称] | wlbytime.unfreeze| | /whitelist reload | wlbytime.reload | **权限可以在 `commands.yml` 配置文件中进行配置!** ### 注意事项: - `[昵称]` - 必需参数。 - `(页码)` - 列表页码;如果未指定,默认为 1。 - `(时间)` - 玩家将被白名单的时间长度。 示例:`2d 3h 10m`。 留空以永久白名单。 ## 占位符 所有输出消息都可以在配置文件中进行自定义。 - `%wlbytime_in_whitelist%` - 指示玩家是否在白名单中。 - `%wlbytime_time_left%` - 白名单中剩余的时间。 ## 常见问题解答 1. **为什么插件文件大小很大?** 它包括 ORMLite (数据库)、Caffeine (缓存)、bStats (指标) 和 Elytrium-Serializer (配置处理) 等库。 2. **我遇到问题或有建议,在哪里报告?** 在这个存储库中打开一个问题,并提供详细的描述。 任何反馈都是受欢迎的! 3. **是否会支持 BungeeCord/Velocity?** 不,该插件正在专门为 Paper 和 Folia 开发。 ## 配置文件 ### `settings.yml` ```yaml #玩家加入服务器时,自动取消冻结玩家时间,如果他们被冻结 unfreeze-time-on-player-join: false #启用过期监控器,它会检查玩家的过期状态 expire-monitor-enabled: true #过期监控器检查玩家并从数据库中删除他们的间隔(毫秒) expire-monitor-interval-ms: 1000 #启用上次加入监控器,它会检查玩家的上次加入时间戳 last-join-monitor-enabled: false #玩家上次加入和当前时间之间的阈值(秒)。 如果超过,玩家将被监控器删除 last-join-expiration-threshold-seconds: 2678400 #上次加入监控器检查玩家并删除他们的间隔(毫秒) last-join-monitor-interval-ms: 3600000 #启用区分大小写的昵称检查 nickname-case-sensitive: true #当玩家时间过期时,将其从服务器中踢出 kick-player-on-time-expire: true #提醒玩家他们在白名单中还有多少时间。 如果玩家被永久白名单或冻结,则此功能不起作用。 notify-players-how-much-left: false #插件向玩家发送提醒多少次的时间间隔(毫秒) notify-player-monitor-interval-ms: 1000 #时间剩余阈值(秒)。 #如果玩家到白名单过期剩余时间少于此时间, #插件将开始向他们发送提醒。 示例:3600 = 提醒剩余时间小于 1 小时。 notify-player-time-left-threshold-seconds: 5 #表示年份时间单位的符号 year-time-units: - "y" #表示月份时间单位的符号 month-time-units: - "mo" #表示周时间单位的符号 week-time-units: - "w" #表示天时间单位的符号 day-time-units: - "d" #表示小时时间单位的符号 hour-time-units: - "h" #表示分钟时间单位的符号 minute-time-units: - "m" #表示秒时间单位的符号 second-time-units: - "s" ``` ### `database.yml` ```yaml #'sqlite' or 'mysql' type: "sqlite" #如果不是 sqlite 或 h2 address: "localhost:3030" name: "wlbytime" #连接参数 params: - "autoReconnect=true" #使用用户名和密码 use-user-and-password: false user: "user" password: "qwerty123" ``` ### `placeholders.yml` ```yaml placeholders-enabled: false #%wlbytime_in_whitelist% - 在白名单中或被冻结 in-whitelist-true: "✔" in-whitelist-false: "✖" frozen: "❄️" #%wlbytime_time_left% - 白名单中剩余时间 forever: "∞" time-left: "%time%" time-left-with-freeze: "❄️%time%❄️" ``` ### `messages.yml` ```yaml not-permission: "您没有权限!" incorrect-arguments: "参数不正确" you-not-in-whitelist-or-frozen-kick: "抱歉,您不在白名单中或被冻结" player-removed-from-whitelist: "%nickname% 成功从白名单中移除" player-already-in-whitelist: "%nickname% 已经在白名单中" player-not-in-whitelist: "%nickname% 不在白名单中" check-me-not-in-whitelist: "您不在白名单中" check-me-frozen: "您被冻结了 %time%" #针对带时间的命令 successfully-added-for-time: "%nickname% 添加到白名单,时长为 %time%" check-still-in-whitelist-for-time: "%nickname% 仍然在白名单中,时长为 %time%" check-me-still-in-whitelist-for-time: "您将永久保留在白名单中,时长为 %time%" #针对不带时间的命令 successfully-added: "%nickname% 添加到白名单,永久有效" check-still-in-whitelist: "%nickname% 永久在白名单中" check-me-still-in-whitelist-forever: "您已永久白名单" list-header: "> 白名单:" list-element: "| %nickname% [%time-or-status%]" list-empty: "白名单为空" list-footer: "第 %page% 页 / 共 %max-page% 页 (显示另一页,请运行 /whitelist getall )" page-not-exists: "第 %page% 页不存在,最大页码为 %max-page%" #每页显示的记录数 entries-for-page: 10 #列表中的 '%time-or-status%' forever: "永久" frozen: "冻结 %time%" active: "活跃 %time%" expired: "过期" set-time: "现在 %nickname% 的白名单时长为 %time%" add-time: "为 %nickname% 添加 %time%" remove-time: "从 %nickname% 移除 %time%" cant-add-time-cause-player-is-forever: "无法添加时间,因为 %nickname% 是永久的" cant-remove-time-cause-player-is-forever: "无法添加时间,因为 %nickname% 是永久的" time-is-incorrect: "时间不正确" cant-add-time: "无法添加时间" cant-remove-time: "无法移除时间" player-frozen: "玩家 %nickname% 被冻结 %time%" player-already-frozen: "玩家 %nickname% 已经冻结" player-expired: "玩家 %nickname% 已过期" cant-freeze-cause-player-is-forever: "无法冻结,因为 %nickname% 是永久的" player-unfrozen: "玩家 %nickname% 已取消冻结" player-not-frozen: "玩家 %nickname% 未被冻结" player-freeze-expired: "%nickname% 的冻结已过期" plugin-successfully-reloaded: "插件已成功重新加载" plugin-reloaded-with-errors: "插件已重新加载,但出现错误" time-left-in-whitelist-notify: "白名单中剩余 %time%" help: - "> WhitelistByTime - 帮助" - "| /whitelist add [昵称] (时间)" - "| /whitelist remove [昵称]" - "| /whitelist check [昵称]" - "| /whitelist checkme" - "| /whitelist getall" - "| /whitelist reload" - "| /whitelist freeze [昵称] [时间]" - "| /whitelist time set/add/remove [昵称] [时间]" - "| (时间) - 玩家将被添加到白名单的时间长度" - "| 示例: 2d 3h 10m" - "| 如果你想永久白名单,则留空此值" ``` ### `commands.yml` ```yaml #白名单子命令的权限 add-permission: "wlbytime.add" check-permission: "wlbytime.check" check-me-permission: "wlbytime.checkme" freeze-permission: "wlbytime.freeze" unfreeze-permission: "wlbytime.unfreeze" get-all-permission: "wlbytime.getall" remove-permission: "wlbytime.remove" time-permission: "wlbytime.time" reload-permission: "wlbytime.reload" ``` ## 统计 ![BStats](https://bstats.org/signatures/bukkit/WhitelistByTime.svg) *统计数据通过 bstats 指标获得。*