OfflineLogin 是一个为 Nukkit-MOT 服务器设计的离线登录与账号验证插件,支持基础密码注册以及通过邮箱(Resend API 或标准 SMTP 服务)发送验证码进行注册验证。
- 安全的世界隔离:提供一个专门的
login超平坦世界,在玩家验证身份前取消所有的移动、交互、破坏和聊天等操作,避免对主世界造成影响和背包数据混乱。 - 多种验证模式:
NONE: 仅基础密码验证RESEND: 通过 Resend API 发送邮箱验证码进行注册SMTP: 通过传统 SMTP 服务发送邮箱验证码进行注册
- 数据存储支持:基于 EasySQLX 插件,默认采用 SQLite 存储玩家账号信息,支持扩展到 MySQL。
- 正版数据迁移:内置
/offline convertuuid指令,方便正版服务器转入离线模式时,将基于 UUID 保存的玩家背包数据安全迁移为基于玩家名字保存的数据(包含自动备份机制)。
- EasySQLX:用于处理数据库存储。请务必确保服务器已安装该前置插件。
| 指令 | 描述 | 权限 |
|---|---|---|
/reg <password> <password> |
注册账号 | 默认玩家 |
/login <password> |
登录账号 | 默认玩家 |
/reset <password> |
重置密码 | 默认玩家 |
/offline convertuuid |
将所有基于 UUID 的玩家数据转换为名字保存,适用于正版转盗版 | OP |
config.yml 示例与说明:
# 注册/验证配置
# 可选:
# - NONE:仅密码注册
# - RESEND:通过 Resend 发送邮箱验证码
# - SMTP:通过 SMTP 发送邮箱验证码
active-method: NONE
security-settings:
# 密码最短长度
min-password-length: 6
# 单个 IP 最多可注册的账号数
max-accounts-per-ip: 1
# 以下仅在 RESEND / SMTP 模式下生效
# 验证码位数
code-length: 6
# 验证码有效期(秒)
expire-time: 300
# 发送验证码的冷却时间(秒)
request-cooldown: 60
mail-settings:
# 邮件标题
subject: "欢迎注册 - 您的验证码"
# 邮件内容,{code} 会替换为实际验证码
html-template: "<h1>欢迎!</h1><p>您的注册验证码:<strong>{code}</strong></p><p>请在 5 分钟内完成验证。</p>"
# 只会读取与 active-method 对应的配置
resend:
# Resend API Key
api-key: "<YOUR_RESEND_API_KEY>"
# 发件地址,需为 Resend 已验证域名下的邮箱
from-address: "onboarding@resend.dev"
smtp:
# SMTP 服务器地址
host: "smtp.example.com"
# 端口:465(SSL) / 587(TLS) / 25(无加密)
port: 465
# 加密方式:SSL / TLS / NONE
encryption: "SSL"
# 登录账号
username: "mc-server@example.com"
# 登录密码或应用专用密码
password: "<YOUR_SMTP_PASSWORD>"
# 发件地址,通常与 username 保持一致
from-address: "mc-server@example.com"如果您的服务器一开始开启了正版验证(基于 UUID 存储玩家背包及状态),而后安装本插件并关闭了正版验证,可以通过以下步骤进行数据迁移:
- 确保服务器正在运行且只有管理员在线。
- 执行管理员指令:
/offline convertuuid。 - 插件将会自动执行以下操作:
- 将当前的
nukkit.yml中的save-player-data-by-uuid状态修改为false。 - 备份
players/目录至players_backup/。 - 读取所有
UUID.dat格式的数据,提取其中的玩家名,并将其重命名为小写的<玩家名>.dat。 - 清理旧的
UUID.dat文件。 - 自动关闭服务器以应用更改。
- 将当前的
- 确认服务端无异常后重新启动服务器即可。
- 适用服务端:Nukkit-MOT
- API版本:1.0.14
- 开发者:mcayear