Skip to content

Mcayear/OfflineLogin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OfflineLogin

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 转 Name)

如果您的服务器一开始开启了正版验证(基于 UUID 存储玩家背包及状态),而后安装本插件并关闭了正版验证,可以通过以下步骤进行数据迁移:

  1. 确保服务器正在运行且只有管理员在线。
  2. 执行管理员指令:/offline convertuuid
  3. 插件将会自动执行以下操作:
    • 将当前的 nukkit.yml 中的 save-player-data-by-uuid 状态修改为 false
    • 备份 players/ 目录至 players_backup/
    • 读取所有 UUID.dat 格式的数据,提取其中的玩家名,并将其重命名为小写的 <玩家名>.dat
    • 清理旧的 UUID.dat 文件。
    • 自动关闭服务器以应用更改。
  4. 确认服务端无异常后重新启动服务器即可。

开发信息

  • 适用服务端:Nukkit-MOT
  • API版本:1.0.14
  • 开发者:mcayear

About

OfflineLogin project repository

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages