Suite

命令与占位符

LoginView 命令、权限、PlaceholderAPI 占位符与 UI 数据包

命令与占位符

LoginView 模块通过 /axs loginview 子命令提供管理功能,并通过 PlaceholderAPI 暴露账号类型查询占位符。所有命令均需 arcartxsuite.admin 权限。

管理命令

所有命令通过 /axs loginview <action> 调用,需要 arcartxsuite.admin 权限。

命令说明权限
/axs loginview help显示 LoginView 模块命令帮助arcartxsuite.admin
/axs loginview status查看登录模块运行状态arcartxsuite.admin
/axs loginview open <玩家>强制为在线玩家打开登录界面arcartxsuite.admin
/axs loginview migrate-authme [dry-run]从 AuthMe 迁移账户哈希arcartxsuite.admin
/axs loginview migration-commands查看迁移后的安全操作提示arcartxsuite.admin
/axs loginview set-spawn将当前位置设为登录后传送点arcartxsuite.admin
/axs loginview reset-password <玩家> [新密码]重置玩家登录密码(仅 standalone 模式)arcartxsuite.admin

命令详解

/axs loginview status

查看 LoginView 模块的运行状态,包括服务状态、认证模式、存储模式、UI ID、UI 文件、锁定配置、账户数、AuthMe 可用性。

/axs loginview status

输出示例:

◆ ArcartXSuite | LoginView 状态
服务: 运行中
认证模式: standalone
存储: sqlite
UI: AXS:login_view
UI 文件: ui/login_view.yml
锁定: 移动=true, 聊天=true, 命令=true
账户数: 128
AuthMe 可用: false

/axs loginview open

强制为指定在线玩家打开登录界面,适用于玩家 UI 卡住或需要重新认证的场景。

/axs loginview open <玩家>
参数必填说明
玩家目标在线玩家名

示例:

/axs loginview open Steve

/axs loginview migrate-authme

从 AuthMe 数据库导入历史账户哈希到 AXS 独立账户库。仅 auth.mode=standalone 时可用。

/axs loginview migrate-authme [dry-run]
参数必填说明
dry-run预览模式,只扫描不导入

示例:

/axs loginview migrate-authme dry-run    # 预览迁移数量
/axs loginview migrate-authme            # 执行迁移

输出示例:

AuthMe 迁移完成: 扫描 256,可导入 240,跳过 16

迁移流程建议:

  1. 先执行 /axs loginview migrate-authme dry-run 预览数量
  2. 确认无误后执行 /axs loginview migrate-authme
  3. 玩家首次用旧密码登录成功后,可自动重写为 AXS hash
  4. 完成验证后再停用 AuthMe,避免玩家无法登录

/axs loginview migration-commands

查看 AuthMe 迁移后的安全操作步骤提示。

/axs loginview migration-commands

/axs loginview set-spawn

将管理员当前位置设为登录后传送点,自动写入配置文件的 spawn-on-login 节并启用传送。

/axs loginview set-spawn

执行后 spawn-on-login.enabled 自动设为 true,并写入当前世界名、坐标、朝向。若需关闭传送,手动编辑配置将 enabled 设为 false

/axs loginview reset-password

重置指定玩家的登录密码。仅 standalone 模式可用,authme 模式需使用 AuthMe 自带命令。

/axs loginview reset-password <玩家> [新密码]
参数必填说明
玩家目标玩家名
新密码新密码;省略则随机生成(长度 10~64,排除易混淆字符)

示例:

/axs loginview reset-password Steve              # 随机生成密码
/axs loginview reset-password Steve MyNewPass123  # 指定新密码

重置成功后:

  • 立即删除该玩家的持久化 session 与在线认证状态
  • 若玩家在线,会收到提示并被重新弹出登录界面
  • 新密码需符合 min-password-lengthmax-password-length 限制

authme 模式下此命令不可用,请使用 /authme changepassword <玩家> <新密码>

Tab 补全

参数位置补全内容
第 2 参数(action)helpstatusopenmigrate-authmemigration-commandsset-spawnreset-password
第 3 参数(open / reset-password在线玩家名
第 3 参数(migrate-authmedry-run

PlaceholderAPI 占位符

LoginView 注册了标识为 axsloginview 的 PlaceholderAPI 扩展,提供账号类型查询。需安装 PlaceholderAPI 插件。

占位符返回值说明
%axsloginview_account_type%microsoft / littleskin / offline玩家账号类型 ID
%axsloginview_account_type_display%微软正版 / LittleSkin / 离线账号类型中文展示名
%axsloginview_account_type_name%同上account_type_display 的别名
%axsloginview_is_microsoft%true / false是否为微软正版账号
%axsloginview_is_littleskin%true / false是否为 LittleSkin 账号
%axsloginview_is_offline%true / false是否为离线账号
%axsloginview_is_premium%true / false是否为正版账号(微软或 LittleSkin)

账号类型由宿主 AccountTypeService 统一判定,基于玩家名在 Mojang 正版数据库和 authlib-injector 认证服务中的查询结果。占位符查询时若服务未就绪,返回 offline

UI 数据包

LoginView 通过 ArcartX UI(Aria)的 packet-id 通道与客户端通信。服务端发送 initresultclose 三种包,客户端回传 loginregisterchange_passwordbypass_enterbind_coderefresh 六种操作。

服务端 → 客户端

init 包

服务端打开 UI 时发送,携带界面初始化数据,客户端据此渲染对应类型的登录界面。

字段类型说明
packetIdstring客户端回包 ID(AXS_loginview),用于 Packet.send 回传
typestring界面类型:login / register / change / bypass / bypass_unbound
titlestring界面标题文本
modestring认证模式:standalone / authme
registeredboolean玩家是否已注册
premiumBypassboolean是否通过正版验证免登录
qqBoundboolean是否已绑定 QQ
bindPromptList<String>未绑定 QQ 时的提示消息列表
playerNamestring玩家名称
serverNamestring服务器名称
onlineint当前在线人数
maxPlayersint最大玩家数
addressstring服务器 IP 地址
timestring服务器时间字符串(yyyy-MM-dd HH:mm:ss
messagestring初始结果消息
requireTermsboolean是否要求同意服务条款

result 包

操作完成后发送,携带成功/失败消息。

字段类型说明
successboolean操作是否成功
messagestring操作结果消息文本

close 包

登录成功后关闭 UI 时发送。

字段类型说明
messagestring关闭时的结果消息

客户端 → 服务端

客户端通过 Packet.send(packetId, action, ...args) 回传数据,服务端在 handleClientPacket 中处理。

action参数说明
loginpassword, agreed登录:密码 + 是否同意服规
registerpassword, confirmPassword, agreed注册:密码 + 确认密码 + 是否同意服规
change_passwordoldPassword, newPassword, confirmPassword修改密码:旧密码 + 新密码 + 确认密码
bypass_enteragreed免密进入:是否同意服规(正版/LittleSkin 玩家)
bind_codecodeQQ 绑定:输入验证码确认绑定
refresh-刷新:重新打开登录界面

客户端回包由 PacketGuardAPI 在路由层统一安全校验,防止伪造数据包。packet-id 必须与配置中的 ui.packet-id 一致才会被处理。

UI 文件

LoginView 内置两套 UI 风格,通过 ui.ui-file 配置切换:

UI 文件风格说明
login_view.yml紧凑面板居中面板布局,680×360,含登录/注册/改密/免登/绑定/服规全部界面
login_view_menu.yml纯色块主菜单左侧功能栏 + 右侧装饰,430px 侧栏,适合大屏服务器

两套 UI 的 packetHandler 结构一致,均处理 initresultclose 三种服务端包。UI 文件导出到 plugins/ArcartX-Suite/ui/ 目录,可自行修改样式。详见 Icons 指南

修改 UI 文件后无需重启,执行 /axs reload loginview 即可热重载。若需恢复默认 UI,将 ui.overwrite-ui-files 设为 true 后重载。