IPLock 是一个专为运行 Paper 1.21.1 的 Minecraft 服务器设计的插件,旨在通过将账户绑定到特定的 IP 地址来增强玩家账户的安全性。该插件限制账户仅能从注册的 IP 地址访问,从而有助于防止账户受损时的未经授权登录。所有消息都可以通过语言文件进行完全自定义,使其适用于具有多种语言偏好的服务器。
插件功能
自动 IP 绑定:
玩家首次登录服务器时,他们的 UUID(唯一标识符)和 IP 地址将自动存储在 ipdata.yml 文件中。
这确保了在无需玩家执行任何操作的情况下进行无缝 IP 注册。
登录时的 IP 验证:
每次玩家登录时,插件会将他们的当前 IP 地址与存储在 ipdata.yml 中的 IP 地址进行比较。
如果 IP 地址不匹配,则拒绝登录,并且玩家将收到自定义的错误消息(默认: "§c您的 IP 地址与此账户的注册 IP 地址不符!")。
这可以防止从未知的设备或网络访问帐户。
IP 解除绑定命令:
该插件提供 /ipdel 命令,仅服务器操作员可以访问。
此命令删除指定玩家的 IP 绑定,允许他们在下一次尝试时从新的 IP 地址登录。
与命令相关的消息(例如,成功、错误或未找到绑定)可以完全自定义。
可定制的消息:
所有插件消息都存储在 lang.yml 文件中,该文件在首次启动时生成在 plugins/IPLock/ 文件夹中。
消息支持 Minecraft 颜色代码 (§) 和占位符(例如,{player} 表示玩家的姓名,{error} 表示错误详细信息)。
可定制消息的示例:
登录错误:"§c您的 IP 地址与此账户的注册 IP 地址不符!"。
成功解除绑定:"§a{player} 的 IP 绑定已移除!"。
命令错误:"§c用法:/ipdel ”。
管理员可以编辑 lang.yml 以修改文本、语言或样式,而无需重建插件。
数据存储:
IP 绑定数据存储在 ipdata.yml 文件中,格式为 UUID: IP。
该文件在玩家登录或使用 /ipdel 命令时自动创建和更新。
YAML 的使用确保了可读性和可靠的数据持久性。
安全性和性能:
该插件使用 UUID 而不是玩家名称来避免因名称更改而引起的问题。
仅在登录时执行 IP 检查,以最大限度地减少服务器负载。
语言文件在启动时加载一次,从而确保操作期间没有性能影响。
用法
对于玩家:
无需执行任何操作——IP 绑定在首次登录时自动发生。
如果玩家的 IP 地址发生更改(例如,由于动态 IP),他们将无法登录,直到操作员使用 /ipdel 删除旧的绑定。
对于管理员:
使用 /ipdel 来重置玩家的 IP 绑定。
在 lang.yml 中自定义消息,以匹配服务器的风格(例如,将其翻译为另一种语言或添加唯一的后缀)。
检查 ipdata.yml 以查看当前的 IP 绑定(对于调试很有用)。
示例工作流程
玩家 Steve 从 IP 192.168.1.1 登录:
插件保存到 ipdata.yml: Steve_UUID: 192.168.1.1。
Steve 尝试从 IP 192.168.1.2 登录:
插件拒绝登录并显示:"§c您的 IP 地址与此账户的注册 IP 地址不符!"。
操作员运行 /ipdel Steve:
插件从 ipdata.yml 中删除绑定并发送:"§aSteve 的 IP 绑定已移除!"。
Steve 再次从新的 IP 地址登录,绑定过程重复。
技术细节
兼容性:Paper 1.21.1。
依赖项:Maven、Paper API(包含在 pom.xml 中)。
插件文件:
IPLock.java — 主代码 (package org.example.iplock.iplock)。
plugin.yml — 插件配置。
ipdata.yml — IP 绑定存储。
lang.yml — 可自定义的消息。
构建:使用 Maven (mvn clean install)。
限制:
每个账户仅支持一个 IP 地址。动态 IP 需要通过 /ipdel 手动解除绑定。
没有内置的重新加载 lang.yml 的支持,而无需服务器重启(如果需要可以添加)。
总结
IPLock 是一个简单有效的工具,可用于保护 Minecraft 服务器上的玩家账户。它结合了自动 IP 绑定、操作员控制的解除绑定以及完全可定制的消息,使其对玩家和管理员都易于使用。该插件非常适合优先考虑账户安全的服务器,其灵活的消息系统允许无缝集成到任何服务器的品牌或语言中。