nineMinecraft is a joke site.
nineMinecraft is in no way affiliated with Modrinth or 9minecraft. (And frankly, who wants to be affiliated with the latter?)
IpacWhitelist

IpacWhitelist

Plugin

Ipac 服务器的白名单插件. 拥有参观账户, 功能限制, 广播消息等功能

Server Management

980 downloads
4 followers
Filter loader...
Filter versions...
Filter channels...

What's Changed

Full Changelog: https://github.com/ApliNi/IpacWhitelist/compare/v4.1.2...v4.1.3-rc3

错误修复

  • 修复参观账户功能无法禁用

新增功能

  • [未测试] 允许特定 IP 绕过白名单检查

配置更新

whitelist:

  # 允许这些玩家加入游戏, 不参与白名单检查
  # 与 AutoWL 不同的是, 通过这些方法加入的玩家不会被记入白名单, 也不参与白名单配置中的其他检查
  bypass:
    enable: false
    bypassMaxPlayersLimit: false  # 同时绕过最大玩家数限制
    # 通过 IP 检查玩家
    ipList: [ ]
    #  - '^/127\.0\.0\.1$'
    #  - '^/0:0:0:0:0:0:0:1$'


  # 从这里开始, 接下来的操作涉及数据库查询与更新

  • 默认关闭 AuthMe 自动注册

What's Changed

Full Changelog: https://github.com/ApliNi/IpacWhitelist/compare/v4.0.1...v4.1.2

新增功能

配置改动和更新

[!] 由于配置改动过多, 更新到此版本时建议重新生成配置文件

whitelist:

  # 简易的 ip 黑名单. 在这里添加正则表达式, 匹配的ip不允许加入服务器 (也不允许使用参观账户
  # 使用 /wl reload 重载配置即可应用
  # IP 地址格式: ipv4: "/127.0.0.1", ipv6: "/0:0:0:0:0:0:0:1" 没有方括号
  ipBlacklist: [ ]
  #  - '^/192\.168\.100\..+$'
  #  - '^/fe80::1234:.+$'

  # 限定玩家只能通过以下地址连接服务器
  addressConfig:
    enable: false
    list: [ ]
    #  - '^0:0:0:0:0:0:0:0:25565$'
    kickMsg: '§6IpacEL §f> §b此地址不可用'

  # 根据玩家登录来源自动添加到白名单, 这仅适用于新玩家
  AutoWL:
    enable: false

    # 通过 Geyser 插件检查, 如果没有安装此插件, 则设置为 NOT
    onGeyserPlayer: WHITE   # 将所有新的基岩版玩家添加到白名单

    # 通过 MojangApi **粗略**地检查是否为正版账户 https://api.mojang.com/users/profiles/minecraft/<playerName>
    onPremiumPlayer: WHITE  # 将所有新的正版账户添加到白名单
    onPremiumPlayerErrMsg: '§6IpacEL §f> §b无法连接身份验证服务器, 请稍后重试'

    # 不属于以上任何一类玩家
    onOtherPlayer: NOT      # 不处理其他玩家

  # 参观账户
  VISIT:

    # 限定参观模式可使用的地址
    addressConfig:
      enable: false
      list: [ ]
      kickMsg: '§6IpacEL §f> §b您不在白名单中'

  # 白名单中的玩家
  WHITE:

    # 距离上一次上线超过此时间就踢出, 如果需要取消可以修改为较大的数值
    timeOut: 18394560 # 7个月
    timeOutMsg: '§6IpacEL §f> §a太久没有上线? 请联系管理员恢复'


command:

  add:
    isExist: '  - §a%playerName%§f[§7%playerUUID%§f] §b已在白名单中, 已更新时间记录'
    # 尝试记录最后一个操作者的信息
    logger_sender:
      enable: false
      isPlayer: '%playerName%[%playerUUID%]'
      isOther:  '[控制台]'

  info:
    finish: >
      §f  - §a%playerName%§f[§7%playerUUID%§f]: [§bID: §6%id%§f]
          - §bTYPE: §6%type%
          - §bBAN: §6%ban%
          - §bTIME: §6%time%
    config: '    - §bDATA: §6%key% §f-> §a%var%'


# API 相关配置
api:
  PlaceholderAPI:
    iwl_player_type: {}
    iwl_player_type_name:
      NOT: '不存在'
      VISIT: '参观账户'
      WHITE: '白名单'
      VISIT_CONVERT: '白名单 (正在转换)'
      BAN: '已封禁'

What's Changed

Full Changelog: https://github.com/ApliNi/IpacWhitelist/compare/v4.0.1...4.1.1-rc5

注意! 这是一个测试版本, 其中有些功能并没有得到足够的测试以保证稳定性

新增功能

配置改动和更新

[!] 由于配置改动过多, 更新到此版本时建议重新生成配置文件

whitelist:

  # 简易的 ip 黑名单. 在这里添加正则表达式, 匹配的ip不允许加入服务器 (也不允许使用参观账户
  # 使用 /wl reload 重载配置即可应用
  # IP 地址格式: ipv4: "/127.0.0.1", ipv6: "/0:0:0:0:0:0:0:1" 没有方括号
  ipBlacklist: [ ]
  #  - '^/192\.168\.100\..+$'
  #  - '^/fe80::1234:.+$'

  # 限定玩家只能通过以下地址连接服务器
  addressConfig:
    enable: false
    list: [ ]
    #  - '^0:0:0:0:0:0:0:0:25565$'
    kickMsg: '§6IpacEL §f> §b此地址不可用'

  # 根据玩家登录来源自动添加到白名单, 这仅适用于新玩家
  AutoWL:
    enable: false

    # 通过 Geyser 插件检查, 如果没有安装此插件, 则设置为 NOT
    onGeyserPlayer: WHITE   # 将所有新的基岩版玩家添加到白名单

    # 通过 MojangApi **粗略**地检查是否为正版账户 https://api.mojang.com/users/profiles/minecraft/<playerName>
    onPremiumPlayer: WHITE  # 将所有新的正版账户添加到白名单
    onPremiumPlayerErrMsg: '§6IpacEL §f> §b无法连接身份验证服务器, 请稍后重试'

    # 不属于以上任何一类玩家
    onOtherPlayer: NOT      # 不处理其他玩家

  # 参观账户
  VISIT:

    # 限定参观模式可使用的地址
    addressConfig:
      enable: false
      list: [ ]
      kickMsg: '§6IpacEL §f> §b您不在白名单中'

  # 白名单中的玩家
  WHITE:

    # 距离上一次上线超过此时间就踢出, 如果需要取消可以修改为较大的数值
    timeOut: 18394560 # 7个月
    timeOutMsg: '§6IpacEL §f> §a太久没有上线? 请联系管理员恢复'


command:

  add:
    isExist: '  - §a%playerName%§f[§7%playerUUID%§f] §b已在白名单中, 已更新时间记录'
    # 尝试记录最后一个操作者的信息
    logger_sender:
      enable: false
      isPlayer: '%playerName%[%playerUUID%]'
      isOther:  '[控制台]'

  info:
    finish: >
      §f  - §a%playerName%§f[§7%playerUUID%§f]: [§bID: §6%id%§f]
          - §bTYPE: §6%type%
          - §bBAN: §6%ban%
          - §bTIME: §6%time%
    config: '    - §bDATA: §6%key% §f-> §a%var%'


# API 相关配置
api:
  PlaceholderAPI:
    iwl_player_type: {}
    iwl_player_type_name:
      NOT: '不存在'
      VISIT: '参观账户'
      WHITE: '白名单'
      VISIT_CONVERT: '白名单 (正在转换)'
      BAN: '已封禁'

Full Changelog: https://github.com/ApliNi/IpacWhitelist/compare/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 的名称来解决.

What's Changed

New Contributors

Full Changelog: https://github.com/ApliNi/IpacWhitelist/commits/v3.1.3

本次更新存在配置改动

visit.AuthMe.ignoreFirstAutoLogin: true # 如果参观账户第一次加入服务器, 则不运行自动登录. 如果启用 AuthMe 的 "注册后无需再次登录" 则需要同时启用它

更新内容

  • 添加 visit.AuthMe.ignoreFirstAutoLogin 配置
  • 修复某些情况下没有自动 注册/登录 参观账户的 bug

下载地址: https://modrinth.com/plugin/ipacwhitelist

在删除数据前后添加日志标记

@ApliNi ApliNi committed 1 minute ago 修改默认配置

@ApliNi ApliNi committed 6 minutes ago v3.1.2

@ApliNi ApliNi committed 9 minutes ago 一些改进, 和调整数据清理指令

@ApliNi ApliNi committed 10 minutes ago

添加用于删除玩家数据的指令和配置

更新到此版本需要手动更新或重建数据库

许多更新和错误修复

许多功能更新和改进

重构, 并添加了许多功能. 更新到此版本需要重建配置和数据库

External resources


Project members

ApliNi

Owner


Technical information

License
GPL-3.0-only
Project ID