Skip to content

v4.0.0 软件重构

Compare
Choose a tag to compare
@ApliNi ApliNi released this 14 Feb 05:40
· 44 commits to main since this release

Full Changelog: v3.1.3...v4.0.0

此更新对软件完全重构, 具体内容请查看 自述文件


v4 更新

此版本对插件进行完全重构, 添加新功能并优化性能, 属于不兼容更新.
在发布正式版后, 建议所有服主更新到此版本, 这需要一些时间来重新修改配置

从 v3 导入数据

  1. 在 v3 版本控制台中输入指令: /wl list * ALL
  2. 复制这部分的完整日志内容, 到 IpacWhitelist 插件目录下的 Data.txt (需要自己创建)
  3. 安装 v4 版本, 根据服务器需求修改配置, 比如玩家名称检查正则
  4. 在 v4 版本运行指令 /wl importData
  5. 检查内容是否识别正确

从任何白名单插件导入数据

根据其他插件的账户类型分别复制出白名单中的玩家和黑名单中的玩家.
通过任意高级的文本编辑器在玩家 UUID 或名称前添加指令:

  1. [白名单] 指令格式: /wl add <UUID|NAME>
  2. [黑名单] 指令格式: /wl ban <UUID|NAME>

然后将带有换行的指令复制到控制台, 即可一次性导入完毕

[注意] 对于正版服务器和支持正版以及离线的服务器尽量使用 UUID 而非 NAME

注意

  • 此版本添加了完整的指令补全能力, 当显示 .... 时代表这里支持通过输入的内容进行补全.
    补全内容可以直接在指令中使用, 包括控制台中补全内容带反斜杠的情况
  • 此版本的配置顺序与插件进行数据处理的流程顺序一致
  • 此版本许多功能基于"事件程序", 它将被用于发送消息, 以及调度各种功能. 代替了旧版杂乱的功能配置
    # [事件程序] 以 "on" 开头, "Event" 结尾的配置均可使用此模板
    # kick    = 同步踢出玩家, 并显示消息
    # cmd     = 同步运行控制台命令
    # msg     = 发送消息给这个玩家
    # msgBroadcast = 广播消息给所有玩家
    # msgExclude   = 广播消息给其他所有玩家
    # [变量] 对于操作数据的功能尽量使用 UUID 而非 NAME, 防止因为名称冲突而影响数据
    # %playerUUID%  = 玩家 UUID 36 位字符串
    # %playerName%  = 玩家名称, 区分大小写
  • 此版本改动特别大, 建议不要从旧配置中复制内容到新配置, 因为有很多变量名被修改
  • 此版本准备弃用 Time 为 -1 的功能, 这在旧版本代表永远不会过期或等待玩家加入时进行更新

指令和功能

  • /wl - 显示指令列表
  • /wl reload - 重载插件
  • /wl add <Name|UUID> - 添加到白名单
  • /wl del <Name|UUID> - 从白名单移出
  • /wl ban <Name|UUID> - 封禁一个玩家
  • /wl unban <Name|UUID> - 解除封禁玩家
  • /wl info <Name|UUID> - 显示玩家信息
  • /wl list <Type> - 查询玩家数据
  • /wl clear PLAYER|TYPE <Name|UUID|Type> - 清除数据
  • /wl importData - 导入数据

支持使用 32 或 36 位的 UUID. 我们有完整的指令补全支持!

操作规范

  1. 对于同时支持正版账户和离线账户的服务器, 应始终优先使用 UUID (如果存在), 而非玩家名称.
    并且保持开启插件的防止重复数据功能
  2. 若需要取消一个玩家的白名单, 可以通过 delban 实现, 但这两者有区别:
    1. del 会将账户标签标记为 NOT 这同时代表数据已被删除. 如果不需要删除玩家数据, 请不要使用此方法
    2. ban 操作不会修改账户的数据, 同时会防止其他操作影响账户数据, 适合需要保持玩家数据不被改动的情况
  3. 清理玩家数据功能最好在服务器重启后使用, 有少部分插件只会在服务器关闭时断开与玩家数据文件的连接
  4. ....

错误处理

点击展开这部分内容

解决名称重复问题

这个错误在 v4 版本 (默认配置) 中已被修复, 但可能因为数据导入 / 玩家修改名称, 或其他未知的问题触发了这个检查, 可根据此步骤修复.

玩家名称重复时可通过指令 /wl list NAME_CONFLICT 检查, 输出内容就像这样:

IpacEL > 查询玩家信息[NAME_CONFLICT]:
  - [2024-02-10 10:31:50] {ID: 50, Type: "WHITE", Ban: "NOT", UUID: "aaa", Name: "A", Time: 1707532310}
  - [2024-01-06 19:38:08] {ID: 147, Type: "VISIT", Ban: "NOT", UUID: "bbb", Name: "A", Time: 1704541088}
  - [2024-02-06 18:03:08] {ID: 13, Type: "WHITE", Ban: "NOT", UUID: "ccc", Name: "B", Time: 1707213788}
  - [2024-01-06 19:36:24] {ID: 148, Type: "WHITE", Ban: "NOT", UUID: "ddd", Name: "B", Time: 1704540984}

[其他错误造成的名称重复] 如果同一个玩家 (比如 A) 存在两个 UUID, 并且其中一个为参观账户 VISITNOT, 则数据 147 很可能是一条产生错误的数据, 并且这个 UUID 下没有实际有效的玩家存档.
请手动检查玩家存档是否为空, 然后使用 /wl clear PLAYER bbb 删除这条数据, 并清理产生的存档文件.

[玩家改名造成的名称重复] 如果出现例如玩家 B 的情况, 可能因为两个白名单内的玩家修改过名称, 并且其中一位玩家没有上线过 (玩家 "B" -> "C", 并且玩家 "E" -> "B", 且玩家 C 没有上线过).
这时候需要让玩家 C 上线一次 (这将自动更新玩家名称), 或者手动更新玩家 C 的名称来解决.