diff --git a/astro.config.ts b/astro.config.ts index 797cdc5..cab0cc0 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -72,15 +72,10 @@ export default defineConfig({ collapsed: true, items: [ "manual/zh/config/配置列表", - "manual/zh/config/backend-server", - "manual/zh/config/database", - "manual/zh/config/messages", - "manual/zh/config/modules", - "manual/zh/config/misc", - "manual/zh/config/remap", - "manual/zh/config/offline-auth", - "manual/zh/config/offlinematch", + "manual/zh/config/start", + "manual/zh/config/core", "manual/zh/config/yggd-entry", + "manual/zh/config/auth-offline", "manual/zh/config/profile-skin", "manual/zh/config/safe", "manual/zh/config/merge-am", diff --git a/src/content/docs/manual/zh/config/auth-offline.md b/src/content/docs/manual/zh/config/auth-offline.md new file mode 100644 index 0000000..81d8c36 --- /dev/null +++ b/src/content/docs/manual/zh/config/auth-offline.md @@ -0,0 +1,134 @@ +--- +title: auth-offline.conf +--- + +离线登陆验证模块配置文件。在模块`auth-offline`激活时有效。 + +```hocon +# 离线认证主要设置 +main { + # 密码规则 + password { + # 最短密码长度 + min-length=6 + # 最长密码长度 + max-length=64 + # 禁止密码含用户名 + deny-name-in-password=true + } + # 登录保护 + login { + # 输错多少次锁定登录 + max-attempts=5 + # 锁定冷却时间(秒) + block-seconds=300 + } + # 邮箱与找回 + email { + # 启用邮箱命令 + enabled=true + # 恢复码投递模式:LOG 或 SMTP + delivery-mode=LOG + # 恢复码长度 + recovery-code-length=6 + # 恢复码有效期(分钟) + recovery-code-expire-minutes=15 + # 请求恢复邮件冷却(秒) + recovery-cooldown-seconds=120 + # 单个恢复码允许输错次数 + max-code-verify-attempts=3 + # 恢复码校验成功后,允许修改密码的时间窗口(分钟) + reset-password-window-minutes=10 + # 恢复邮件模板与 SMTP 配置 + smtp { + # 邮件显示的服务器名称 + server-name=HyperZoneLogin + # ❇️SMTP 服务器地址 + host="smtp.example.com" + # ❇️SMTP 端口 + port=587 + # 是否启用 SMTP 认证 + auth=true + # ❇️SMTP 用户名 + username="noreply@example.com" + # ❇️SMTP 密码或应用专用密码 + password=change-me + # 是否启用 STARTTLS + start-tls=true + # ❇️是否直接使用 SSL + ssl=false + # 连接超时(毫秒) + connection-timeout-millis=10000 + # 读取超时(毫秒) + read-timeout-millis=10000 + # 写入超时(毫秒) + write-timeout-millis=10000 + # ❇️发件人邮箱 + from-address="noreply@example.com" + # ❇️发件人名称 + from-name=HyperZoneLogin + # ❇️恢复邮件主题,支持占位符:%server%、%player% + recovery-subject="[%server%] 账号密码找回验证码" + # ❇️恢复邮件正文,支持占位符:%server%、%player%、%email%、%code%、%minutes%。使用 \n 表示换行 + recovery-body="你好,%player%。\\n\\n你在 %server% 请求了离线账号密码找回。\\n验证码:%code%\\n有效期:%minutes% 分钟\\n\\n如果不是你本人操作,请忽略这封邮件。" + } + } + # 提示 + prompt { + # 首次进入邮箱找回提示 + show-recovery-hint=true + } + # 会话自动登录 + session { + # 短期会话自动登录 + enabled=false + # 会话有效期(分钟) + expire-minutes=30 + # 会话与玩家 IP 绑定 + bind-ip=true + # 注册成功后立刻签发会话 + issue-on-register=true + } + # ⚠️透传离线 UUID + pass-offline-uuid-to-profile-resolve=true + # TOTP 二步验证 + totp { + # 启用 TOTP(二步验证功能) + enabled=true + # 在验证器 App 中显示的名称 + issuer=HyperZoneLogin + # 待确认 TOTP 密钥的有效期(分钟) + pending-expire-minutes=10 + # 允许 短期会话 跳过二次验证 + allow-session-bypass=false + } +} +# ⚠️玩家正离线形态匹配设置 +match { + # 是否允许进行匹配 + enable=true + # UUID匹配设定 + uuid-match { + # 是否允许全0的UUID(Zalith) 匹配为离线 + zero=true + # 是否允许默认uuid生成方法 匹配为离线 + offline=true + # 关于PCL2启动器匹配的细节设定 + pcl2 { + # PCL2的UUID匹配 + enable=true + # PCL2的UUID进行哈希计算匹配 + hash=true + # PCL2的苗条模型UUID匹配 + slim=true + } + } + # Host匹配设定 + host-match { + start=[ + offline, + o- + ] + } +} +``` diff --git a/src/content/docs/manual/zh/config/core.md b/src/content/docs/manual/zh/config/core.md new file mode 100644 index 0000000..241dc63 --- /dev/null +++ b/src/content/docs/manual/zh/config/core.md @@ -0,0 +1,161 @@ +--- +title: core.conf +--- + +插件核心配置文件,包括数据库、模块、等待区设置、调试输出等配置。 + +```hocon +# 数据库 +database { + # ❇️数据库类型 + # 支持的值: SQLITE, MYSQL, MARIADB + type=SQLITE + # SQLite 数据库配置 + sqlite { + # 数据库文件路径(相对于插件数据目录) + path="data/hyperzone_login.db" + } + # MySQL 数据库配置 + mysql { + # ❇️地址 + host=localhost + # ❇️端口 + port=3306 + # 库名 + database="hyperzone_login" + # ❇️用户名 + username=root + # ❇️密码 + password=password + # ⚠️额外的连接参数 + parameters="useSSL=false&serverTimezone=UTC&characterEncoding=utf8" + # ⚠️JDBC 驱动类(通常不需要修改) + driver-class-name="com.mysql.cj.jdbc.Driver" + } + # MariaDB 数据库配置 + mariadb { + # ❇️地址 + host=localhost + # ❇️端口 + port=3306 + # 库名 + database="hyperzone_login" + # ❇️用户名 + username=root + # ❇️密码 + password=password + # ⚠️额外的连接参数 + parameters="useSSL=false&characterEncoding=utf8" + # ⚠️JDBC 驱动类(通常不需要修改) + driver-class-name="org.mariadb.jdbc.Driver" + } + # ⚠️数据库表前缀(随意修改可能导致无法读取数据) + table-prefix="hz_" + # ⚠️连接池配置(影响数据库连接性能) + pool { + # ⚠️最大连接数 + maximum-pool-size=10 + # ⚠️最小空闲连接数 + minimum-idle=2 + # ⚠️连接超时时间(毫秒) + connection-timeout=30000 + # ⚠️空闲连接超时时间(毫秒) + idle-timeout=600000 + # ⚠️连接最大生命周期(毫秒) + max-lifetime=1800000 + } +} +# UUID映射 +remap { + # ⚠️未开启对应渠道UUID透传时的生成前缀,如果填OfflinePlayer则为行业标准离线生成法 + prefix=HyperZone +} +# 杂项 +misc { + # ⚠️不给服务器发送 CHAT_SESSION_UPDATE包 + kill-chat-session=true +} +# Debug +debug { + # 日志调试开关;建议统一放在此分支下配置 + log { + # 通用 debug 日志 + general=false + # Floodgate / OutPre 预登录链路追踪日志 + out-pre-trace=false + # ProfileSkin 相关调试日志 + profile-skin=false + # 后端等待区兼容链路调试日志 + backend-compat=false + # Netty / GameProfile 重写链路调试日志 + network-rewrite=false + # Yggdrasil 认证链路调试日志 + yggdrasil-auth=false + } + # 慢测试模式相关配置 + slow-test { + # 开启后,外部模块直接调用 overVerify 将被忽略,只有等待区 /over 才会真正完成 overVerify + enabled=false + } +} +# ❇️模块开关 +modules { + # Floodgate 认证;仅在已安装 floodgate 时生效 + auth-floodgate=true + # 离线认证 + auth-offline=true + # Yggdrasil 认证 + auth-yggd=true + # 安全防护 + safe=true + # 皮肤缓存 + profile-skin=true + # 数据迁移 + data-merge=false +} +# 等待区服务器 +v-server { + # 登录服实现模式:backend 或 outpre。推荐 outpre 模式,若有问题请使用backend模式。 + mode=outpre + # ❇️认证完成后默认进入的服务器 + post-auth-default-server=play + # 记住认证时收到的服务器跳转请求 + remember-requested-server-during-auth=true + backend { + # 使用的真实认证等待服 Velocity 服务器名 + fallback-auth-server=lobby + # 等待区 UpsertPlayerInfo/TabList 兼容过滤补偿 + enable-player-info-compensation=true + # 档案补偿同步 + enable-profile-compensation=true + # 在线热改 name(风险较低,默认开启) + enable-name-hot-change=true + # 在线热改 UUID(高风险,默认关闭) + enable-uuid-hot-change=false + } + outpre { + # 认证服的逻辑名,仅用于日志/状态标识;不需要在 Velocity 的 servers 中注册。 + # 如果使用 ViaVersion,你需要在 Velocity 的 servers 中添加注册条目,如 outpre-auth = "127.0.0.1:30066",但不需要将其配置到 try 队列。 + auth-label=outpre-auth + # 认证服的直连 Host + auth-host="127.0.0.1" + # 认证服的直连 Port + auth-port=30066 + # 转接给认证服时,在连接握手中对后端暴露的 Host;留空时使用 authHost + presented-host="" + # 转接给认证服时,在连接握手中对后端暴露的 Port;<=0 时使用 authPort + presented-port=-1 + # 转接给认证服时,在连接握手中对后端暴露的玩家源 IP;留空时使用玩家真实 IP + presented-player-ip="" + } +} +# 消息 +messages { + # 默认语言;当未启用客户端语言检测,或客户端语言没有对应语言文件时使用 + default-locale="zh_cn" + # 消息缺失时的回退语言;建议始终保留 en_us 或 zh_cn 之一 + fallback-locale="en_us" + # 优先尝试读取客户端语言 + use-client-locale=true +} +``` diff --git a/src/content/docs/manual/zh/config/backend-server.mdx b/src/content/docs/manual/zh/config/legacy/backend-server.mdx similarity index 100% rename from src/content/docs/manual/zh/config/backend-server.mdx rename to src/content/docs/manual/zh/config/legacy/backend-server.mdx diff --git a/src/content/docs/manual/zh/config/database.mdx b/src/content/docs/manual/zh/config/legacy/database.mdx similarity index 100% rename from src/content/docs/manual/zh/config/database.mdx rename to src/content/docs/manual/zh/config/legacy/database.mdx diff --git a/src/content/docs/manual/zh/config/merge-am.mdx b/src/content/docs/manual/zh/config/legacy/merge-am.mdx similarity index 100% rename from src/content/docs/manual/zh/config/merge-am.mdx rename to src/content/docs/manual/zh/config/legacy/merge-am.mdx diff --git a/src/content/docs/manual/zh/config/merge-ml.mdx b/src/content/docs/manual/zh/config/legacy/merge-ml.mdx similarity index 100% rename from src/content/docs/manual/zh/config/merge-ml.mdx rename to src/content/docs/manual/zh/config/legacy/merge-ml.mdx diff --git a/src/content/docs/manual/zh/config/messages.mdx b/src/content/docs/manual/zh/config/legacy/messages.mdx similarity index 100% rename from src/content/docs/manual/zh/config/messages.mdx rename to src/content/docs/manual/zh/config/legacy/messages.mdx diff --git a/src/content/docs/manual/zh/config/misc.mdx b/src/content/docs/manual/zh/config/legacy/misc.mdx similarity index 100% rename from src/content/docs/manual/zh/config/misc.mdx rename to src/content/docs/manual/zh/config/legacy/misc.mdx diff --git a/src/content/docs/manual/zh/config/modules.mdx b/src/content/docs/manual/zh/config/legacy/modules.mdx similarity index 100% rename from src/content/docs/manual/zh/config/modules.mdx rename to src/content/docs/manual/zh/config/legacy/modules.mdx diff --git a/src/content/docs/manual/zh/config/offline-auth.mdx b/src/content/docs/manual/zh/config/legacy/offline-auth.mdx similarity index 100% rename from src/content/docs/manual/zh/config/offline-auth.mdx rename to src/content/docs/manual/zh/config/legacy/offline-auth.mdx diff --git a/src/content/docs/manual/zh/config/offlinematch.mdx b/src/content/docs/manual/zh/config/legacy/offlinematch.mdx similarity index 100% rename from src/content/docs/manual/zh/config/offlinematch.mdx rename to src/content/docs/manual/zh/config/legacy/offlinematch.mdx diff --git a/src/content/docs/manual/zh/config/profile-skin.mdx b/src/content/docs/manual/zh/config/legacy/profile-skin.mdx similarity index 100% rename from src/content/docs/manual/zh/config/profile-skin.mdx rename to src/content/docs/manual/zh/config/legacy/profile-skin.mdx diff --git a/src/content/docs/manual/zh/config/remap.mdx b/src/content/docs/manual/zh/config/legacy/remap.mdx similarity index 100% rename from src/content/docs/manual/zh/config/remap.mdx rename to src/content/docs/manual/zh/config/legacy/remap.mdx diff --git a/src/content/docs/manual/zh/config/safe.mdx b/src/content/docs/manual/zh/config/legacy/safe.mdx similarity index 100% rename from src/content/docs/manual/zh/config/safe.mdx rename to src/content/docs/manual/zh/config/legacy/safe.mdx diff --git a/src/content/docs/manual/zh/config/yggd-entry.mdx b/src/content/docs/manual/zh/config/legacy/yggd-entry.mdx similarity index 100% rename from src/content/docs/manual/zh/config/yggd-entry.mdx rename to src/content/docs/manual/zh/config/legacy/yggd-entry.mdx diff --git "a/src/content/docs/manual/zh/config/legacy/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" "b/src/content/docs/manual/zh/config/legacy/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" new file mode 100644 index 0000000..c785097 --- /dev/null +++ "b/src/content/docs/manual/zh/config/legacy/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" @@ -0,0 +1,43 @@ +--- +title: "配置列表(旧)" +--- + +import { FileTree } from "@astrojs/starlight/components"; + +本页面介绍插件所涉及的各种配置文件。 + +:::caution[配置格式已过时!] +此页面所载的配置格式已经过时,仅适用于26.4.5-SNAPSHOT-8fcde1ec及以前版本。 +关于目前正在使用的配置格式,请前往[新版配置列表](/manual/zh/config/配置列表/)页面。 +::: + +:::danger[危险] +**部分配置项会直接影响本插件的关键行为,配置不得当的情况下很可能导致插件无法正常工作乃至崩溃。** +此类配置项已在对应的描述中添加了“⚠️”作为标识。除非你真的知道你在做什么,否则不要改动这些配置项目。 +::: + + + - plugins/hyperzonelogin/ HyperZoneLogin 插件数据目录 + - data/ 数据库目录 + - entry/ Yggdrasil 验证条目目录 + - example/ 示例配置文件目录,不会被插件加载 + - example.conf 示例配置文件 + - elyby.conf Ely.by外置登录支持 + - littleskin.conf Littleskin外置登录支持 + - mojang.conf ⚠️正版登录支持 + - [验证条目配置格式](/manual/zh/config/legacy/yggd-entry) + - libs/ 代码库目录 + - merge/ 数据迁移目录 + - [merge-am.conf](/manual/zh/config/legacy/merge-am) Authme 数据迁移配置 + - [merge-ml.conf](/manual/zh/config/legacy/merge-ml) Multilogin 数据迁移配置 + - [backend-server.conf](/manual/zh/config/legacy/backend-server) 后端服务器配置 + - [database.conf](/manual/zh/config/legacy/database) 数据库配置 + - [messages.conf](/manual/zh/config/legacy/messages) 语言选择配置 + - [misc.conf](/manual/zh/config/legacy/misc) 杂项配置 + - [modules.conf](/manual/zh/config/legacy/modules) 模块配置 + - [offline-auth.conf](/manual/zh/config/legacy/offline-auth) 离线验证模块配置 + - [offlinematch.conf](/manual/zh/config/legacy/oflinematch) 离线玩家匹配配置 + - [profile-skin.conf](/manual/zh/config/legacy/profile-skin) 皮肤缓存与恢复模块配置 + - [remap.conf](/manual/zh/config/legacy/remap) ⚠️UUID重映射配置 + - [safe.conf](/manual/zh/config/legacy/safe) 安全防护模块配置 + diff --git a/src/content/docs/manual/zh/config/merge-am.md b/src/content/docs/manual/zh/config/merge-am.md new file mode 100644 index 0000000..ca75985 --- /dev/null +++ b/src/content/docs/manual/zh/config/merge-am.md @@ -0,0 +1,42 @@ +--- +title: "data-merge/authme.conf" +--- + +Authme 插件数据迁移配置文件。在`data-merge`模块激活时有效。 + +```hocon +# 源数据库配置 +source { + # ❇️源库类型,支持 SQLITE 或 MYSQL + type=SQLITE + # SQLite 配置 + sqlite { + # ⚠️可选:直接指定 JDBC URL。留空时按 path + parameters 生成 + jdbc-url="" + # ❇️SQLite 文件路径(相对于插件数据目录) + path="merge/authme.db" + # ⚠️SQLite JDBC 附加参数 + parameters="" + } + # MySQL 配置 + mysql { + # ❇️MySQL 地址 + host="127.0.0.1" + # ❇️MySQL 端口 + port=3306 + # 数据库名 + database=authme + # ❇️用户名 + username=root + # ❇️密码 + password=password + # ⚠️JDBC 参数 + parameters="useSSL=false&serverTimezone=UTC&characterEncoding=utf8" + } +} +# 源表配置 +tables { + # ⚠️AuthMe 数据表名 + auth-me-table=authme +} +``` diff --git a/src/content/docs/manual/zh/config/merge-ml.md b/src/content/docs/manual/zh/config/merge-ml.md new file mode 100644 index 0000000..9e8fbfd --- /dev/null +++ b/src/content/docs/manual/zh/config/merge-ml.md @@ -0,0 +1,95 @@ +--- +title: "data-merge/multilogin.conf" +--- + +Multilogin 插件数据迁移配置文件。在`data-merge`模块激活时有效。 + +```hocon +# 源数据库配置 +source { + # ❇️源库类型,支持 H2DB 或 MYSQL + type=H2DB + # H2 配置 + h2 { + # ⚠️可选:直接指定 JDBC URL。留空时按 path + parameters 生成 + jdbc-url="" + # ❇️H2 文件路径(相对于插件数据目录) + path="data-merge/multilogin" + # ⚠️H2 JDBC 附加参数 + parameters="MODE=MySQL" + # H2 用户名 + username=root + # H2 密码 + password=root + } + # MySQL 配置 + mysql { + # ❇️MySQL 地址 + host="127.0.0.1" + # ❇️MySQL 端口 + port=3306 + # 数据库名 + database="mixed_login" + # ❇️用户名 + username=root + # ❇️密码 + password=password + # ⚠️JDBC 参数 + parameters="useSSL=false&serverTimezone=UTC&characterEncoding=utf8" + } +} +# 源表名配置 +tables { + # ⚠️旧库 UserDataTableV3 的表名 + user-data-table="multilogin_user_data_v3" + # ⚠️旧库 InGameProfileTableV3 的表名 + in-game-profile-table="multilogin_in_game_profile_v3" +} +# ❇️service_id 到 entryId 的映射,键为旧库的服务 ID,值为新库的服务 ID;未配置时默认使用 ml_{serviceId} +service-id-mapping { + "1"=mojang +} + +``` + +## 服务ID映射配置 + +`service-id-mapping`配置部分将决定 Multilogin 中的旧用户数据与 HyperZoneLogin 中的 Yggdrasil 服务的对应关系。 + +此部分需要按照两个插件的具体配置手动填写键值对,其中键名为 Multilogin 中 Yggdrasil 服务的数字ID,而键值为 HyperZoneLogin 中 Yggdrasil 服务的入口ID。 + +例如,Multilogin 和 HyperzoneLogin 中关于 Littleskin 的条目配置文件分别如下: + +```yaml title=multilogin/services/littleskin.yml +id: 2 # Multilogin 的服务数字ID + +name: 'LittleSkin' +serviceType: BLESSING_SKIN +yggdrasilAuth: + blessingSkin: + apiRoot: 'https://littleskin.cn/api/yggdrasil' +``` + +```hocon title=hyperzonelogin/auth-yggd/littleskin.conf +id=littleskin # Hyperzonelogin 的服务入口ID +name="Little Skin" +yggdrasil { + url="https://littleskin.cn/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{ip}" + pass-yggdrasil-uuid-to-profile-resolve=true + timeout=10000 + retry=0 + retry-delay=0 + proxy { + ... + } +} +``` + +那么你应当在`service-id-mapping`中添加这样一个键值对: + +```hocon title=hyperzonelogin/data-merge/multilogin.conf +... +service-id-mapping { + "2"=littleskin +} +``` diff --git a/src/content/docs/manual/zh/config/profile-skin.md b/src/content/docs/manual/zh/config/profile-skin.md new file mode 100644 index 0000000..596b5a4 --- /dev/null +++ b/src/content/docs/manual/zh/config/profile-skin.md @@ -0,0 +1,33 @@ +--- +title: "profile-skin.conf" +--- + +玩家皮肤缓存模块配置。在模块`profile-skin`激活时有效。 + +```hocon +# 启用本模块 +enabled=true +# 优先缓存并已携带签名的材质 +prefer-upstream-signed-textures=true +# 不修复的入口ID +trusted-signed-texture-entries=[ + mojang +] +# 修复非官方签名 +restore-unsigned-textures=true +# MineSkin 修复配置 +mine-skin { + # 生成方式:URL 或 UPLOAD + method=URL + # 出错时改模式重试 + retry-upload-on-url-read-failure=true + # ⚠️URL 模式接口地址 + url-endpoint="https://api.mineskin.org/generate/url" + # ⚠️上传模式接口地址 + upload-endpoint="https://api.mineskin.org/generate/upload" + # 请求超时时间(毫秒) + timeout-millis=15000 + # HTTP User-Agent + user-agent="HyperZoneLogin/1.0" +} +``` diff --git a/src/content/docs/manual/zh/config/safe.md b/src/content/docs/manual/zh/config/safe.md new file mode 100644 index 0000000..ea9331e --- /dev/null +++ b/src/content/docs/manual/zh/config/safe.md @@ -0,0 +1,77 @@ +--- +title: "safe.conf" +slug: "manual/zh/config/safe" +--- + +基础安全模块(`safe`)的配置。 + +```hocon +# 启用防护 +enable=true +# 全局连接频率限制 +global-rate-limit { + max-attempts=80 + window-seconds=10 +} +# 同 IP 连接频率限制 +ip-rate-limit { + max-attempts=8 + window-seconds=10 +} +# 同 IP 超阈值后的临时冷却 +ip-cooldown { + # 同 IP 临时冷却 + enabled=true + # 在统计窗口内触发多少次限流后,开始临时封禁 + trigger-attempts=3 + # 统计窗口长度(秒) + window-seconds=60 + # 触发后的冷却时长(秒) + cooldown-seconds=300 +} +# 自动高峰防护模式 +strict-mode { + # 自动高峰防护模式 + enabled=true + # 全局连接请求在窗口内达到多少次后进入 严格模式 + trigger-attempts=120 + # 统计窗口(秒) + window-seconds=15 + # 保持时长(秒) + recover-after-seconds=90 + # 全局限流 + global-rate-limit { + max-attempts=30 + window-seconds=10 + } + # 同 IP 限流 + ip-rate-limit { + max-attempts=4 + window-seconds=10 + } +} +# 认证失败联动防护 +auth-failure { + # 统一认证失败联动 + enabled=true + # 同一 IP 在统计窗口内累计多少次认证失败后开始冷却 + trigger-attempts=4 + # 认证失败统计窗口(秒) + window-seconds=300 + # 触发后的冷却时长(秒) + cooldown-seconds=600 +} +# 用户名基础校验 +username { + # 用户名基础校验 + enable=true + # 最短长度 + min-length=3 + # 最长长度 + max-length=16 + # 用户名不包含首尾空白 + deny-leading-or-trailing-whitespace=true + # 允许的用户名正则,默认与 Minecraft 传统用户名规则一致 + pattern="^[A-Za-z0-9_]+$" +} +``` diff --git a/src/content/docs/manual/zh/config/start.md b/src/content/docs/manual/zh/config/start.md new file mode 100644 index 0000000..b440507 --- /dev/null +++ b/src/content/docs/manual/zh/config/start.md @@ -0,0 +1,20 @@ +--- +title: start.conf +--- + +插件首次启动时生成的预备配置文件。 + +:::caution[必须正确配置此文件才能生成后续配置文件。] +HyperzoneLogin 需要根据此配置文件中的语言选项生成后续的配置文件。 +如果不正确设置语言并设置`ready=true`,插件将不会工作。 +::: + +```hocon +# ❇️配置注释语言,影响其他配置文件首次生成时的注释语言。 +language="zh_cn" +# ⚠️配置文件格式,影响其他配置文件的序列化方式。 +# 当前版本仅完整支持 hocon,gson/yaml 为预留选项。 +format=hocon +# ❇️就绪标志,必须为 true 插件才会正常启动。 +ready=false +``` diff --git a/src/content/docs/manual/zh/config/yggd-entry.md b/src/content/docs/manual/zh/config/yggd-entry.md new file mode 100644 index 0000000..fab7dca --- /dev/null +++ b/src/content/docs/manual/zh/config/yggd-entry.md @@ -0,0 +1,43 @@ +--- +title: Yggdrasil 条目配置文件 +--- + +每个 Yggdrasil 服务都需要一个对应的条目配置文件,你需要将它们统一放到插件数据目录的`entry`目录下。注意`example`目录中的配置文件不会被读取。配置文件结构见下。配置在激活`auth-yggd`模块时有效。 + +```hocon +# 入口ID(不区分大小写),用于内部识别 +id=Example +# 别称,用于内容显示 +name=Unnamed +# 验证服务配置 +yggdrasil { + # hasJoined 验证 URL + # 在hasJoined URL后面还需要添加参数 "?username={username}&serverId={serverId}{ip}" 进行验证请求 + # 链接样例参见hyperzonelogin/auth-yggd/littleskin.conf文件 + url="" + # UUID透传 + pass-yggdrasil-uuid-to-profile-resolve=true + # 验证请求超时时间(毫秒) + timeout=10000 + # 重试次数 + retry=0 + # 重试请求延迟(毫秒) + retry-delay=0 + # ⚠️代理设置 + proxy { + # 设置代理类型 + # DIRECT - 直接连接、或没有代理 + # HTTP - 表示高级协议(如HTTP或FTP)的代理 + # SOCKS - 表示一个SOCKS (V4或V5)代理 + type=DIRECT + # 代理服务器地址 + hostname="127.0.0.1" + # 代理服务器端口 + port=1080 + # 代理鉴权用户名,留空则不进行鉴权 + username="" + # 代理鉴权密码 + password="" + } +} +``` diff --git "a/src/content/docs/manual/zh/config/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" "b/src/content/docs/manual/zh/config/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" index fdd9f23..51f2891 100644 --- "a/src/content/docs/manual/zh/config/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" +++ "b/src/content/docs/manual/zh/config/\351\205\215\347\275\256\345\210\227\350\241\250.mdx" @@ -6,33 +6,42 @@ import { FileTree } from "@astrojs/starlight/components"; 本页面介绍插件所涉及的各种配置文件。 -:::danger[危险] +:::note[提示] +**此页面所载的是第2版配置格式,适用于26.4.6-SNAPSHOT-896799ef及以后版本。** +关于之前版本使用的配置格式,请前往[旧版配置列表](/manual/zh/config/legacy/配置列表/)页面。 +::: + +:::tip[图例说明] **部分配置项会直接影响本插件的关键行为,配置不得当的情况下很可能导致插件无法正常工作乃至崩溃。** -此类配置项已在对应的描述中添加了“⚠️”作为标识。除非你真的知道你在做什么,否则不要改动这些配置项目。 +关键配置已使用“❇️”标出,请务必仔细阅读配置说明,并在启动服务器前确认这些配置项是否正确。 +同时,请不要随意改动带有“⚠️”标识的配置项,除非你真的知道你在做什么。 ::: - plugins/hyperzonelogin/ HyperZoneLogin 插件数据目录 - - data/ 数据库目录 - - entry/ Yggdrasil 验证条目目录 + - auth-yggd/ Yggdrasil 验证条目目录 - example/ 示例配置文件目录,不会被插件加载 - example.conf 示例配置文件 - elyby.conf Ely.by外置登录支持 - littleskin.conf Littleskin外置登录支持 - mojang.conf ⚠️正版登录支持 - [验证条目配置格式](/manual/zh/config/yggd-entry) + - data/ 数据库目录 - libs/ 代码库目录 - - merge/ 数据迁移目录 - - [merge-am.conf](/manual/zh/config/merge-am) Authme 数据迁移配置 - - [merge-ml.conf](/manual/zh/config/merge-ml) Multilogin 数据迁移配置 - - [backend-server.conf](/manual/zh/config/backend-server) 后端服务器配置 - - [database.conf](/manual/zh/config/database) 数据库配置 - - [messages.conf](/manual/zh/config/messages) 语言选择配置 - - [misc.conf](/manual/zh/config/misc) 杂项配置 - - [modules.conf](/manual/zh/config/modules) 模块配置 - - [offline-auth.conf](/manual/zh/config/offline-auth) 离线验证模块配置 - - [offlinematch.conf](/manual/zh/config/oflinematch) 离线玩家匹配配置 + - messages/ 语言文件目录。每个目录下都会包含英文(en_us.conf)、俄文(ru_ru.conf)、中文(zh_cn.conf)三个语言的配置文件。根目录下为核心插件的语言文件。 + - auth-offline/ 离线登录模块语言文件 + - auth-yggd/ Yggdrasil验证模块语言文件 + - profile-skin/ 皮肤缓存模块语言文件 + - safe/ 安全防护模块语言文件 + - en_us.conf + - ru_ru.conf + - zh_cn.conf + - data-merge/ 数据迁移目录 + - [authme.conf](/manual/zh/config/merge-am) Authme 数据迁移配置 + - [multilogin.conf](/manual/zh/config/merge-ml) Multilogin 数据迁移配置 + - [auth-offline.conf](/manual/zh/config/auth-offline) 离线验证模块配置 + - [core.conf](/manual/zh/config/core) 插件核心配置 - [profile-skin.conf](/manual/zh/config/profile-skin) 皮肤缓存与恢复模块配置 - - [remap.conf](/manual/zh/config/remap) ⚠️UUID重映射配置 - [safe.conf](/manual/zh/config/safe) 安全防护模块配置 + - [start.conf](/manual/zh/config/start) 首次启动配置。插件首次安装时只会生成此文件,必须正确配置此文件后才会生成其他配置。 diff --git "a/src/content/docs/manual/zh/\345\237\272\347\241\200\345\256\211\350\243\205.md" "b/src/content/docs/manual/zh/\345\237\272\347\241\200\345\256\211\350\243\205.md" index 361a3d5..2de0cce 100644 --- "a/src/content/docs/manual/zh/\345\237\272\347\241\200\345\256\211\350\243\205.md" +++ "b/src/content/docs/manual/zh/\345\237\272\347\241\200\345\256\211\350\243\205.md" @@ -8,15 +8,14 @@ HyperZoneLogin 目前主要以单文件 JAR 包分发,运作时使用内置的 ## 安装前准备 -如[`快速上手`](快速上手.md)中所述,HyperZoneLogin 需要: +HyperZoneLogin 需要: -* 一个真实的后端服务器,或者利用 LimboAPI 作为认证等待区; * 一个游戏后端作为认证成功后跳转的服务器; * 将整个群组服网络配置为使用`modern`转发模式。 在安装 HyperZoneLogin 之前,请务必按照前述章节的指引完成 Velocity 与后端服的基础配置。 -此外,你还需要阅读[`模块介绍`](模块介绍.md)页面,确认你所需要激活的模块。 +此外,你还需要阅读[`模块介绍`](/manual/zh/模块介绍/)页面,确认你所需要激活的模块。 ## 安装步骤 @@ -24,8 +23,10 @@ HyperZoneLogin 目前主要以单文件 JAR 包分发,运作时使用内置的 2. 从 [Github Release](https://github.com/HyperZoneLogin/HyperzoneLogin/releases) 下载所需的插件文件; 3. 将插件放入 Velocity 的 `plugins/` 目录; 4. 重启 Velocity,让插件下载所需的依赖并生成配置文件; -5. 按照[`配置索引`](/manual/zh/config/配置列表)中的说明正确配置[`backend-server.conf`](/manual/zh/config/backend-server),并在[`modules.conf`](/manual/zh/config/modules)中激活你所需的模块; -6. 再次重启 Velocity,让插件配置生效。 +5. 在[`start.conf`](/manual/zh/config/start)中设置好语言,并设置`ready=true`; +6. 重启 Velocity; +7. 按照[`配置索引`](/manual/zh/config/配置列表)中的说明正确配置[`core.conf`](/manual/zh/config/core)中的`module`、`v-server`、和`database`字段; +8. 再次重启 Velocity,让插件配置生效。 ## 安装后检验 @@ -33,8 +34,8 @@ HyperZoneLogin 目前主要以单文件 JAR 包分发,运作时使用内置的 1. 玩家不能直接连接后端服务器,只能从 Velocity 反代理端连接; 2. 玩家先进入等待区,此时玩家名称为`HZLxxxxxx`(后接随机数字); -3. 正版玩家或外置登录玩家应自动完成认证过程,离线玩家会被提示需要使用`/register`或`/login`命令进行注册或登录; +3. 正版玩家、外置登录玩家或基岩版玩家应自动完成认证过程,离线玩家会被提示需要使用`/register`或`/login`命令进行注册或登录; 4. 认证通过后,玩家应当自动跳转到正式游戏服务器,并恢复原有名称; 5. 整个过程中 Velocity 控制台没有输出明显的错误。 -如果出现了异常,请参考[`常见问题`](常见问题.md)排查,或者按照[`问题反馈`](问题反馈.md)中的说明求助。 +如果出现了异常,请参考[`常见问题`](/manual/zh/常见问题/)排查,或者按照[`问题反馈`](/manual/zh/问题反馈/)中的说明求助。 diff --git "a/src/content/docs/manual/zh/\345\270\270\350\247\201\351\227\256\351\242\230.md" "b/src/content/docs/manual/zh/\345\270\270\350\247\201\351\227\256\351\242\230.md" index 63ea14b..5a9b49d 100644 --- "a/src/content/docs/manual/zh/\345\270\270\350\247\201\351\227\256\351\242\230.md" +++ "b/src/content/docs/manual/zh/\345\270\270\350\247\201\351\227\256\351\242\230.md" @@ -2,7 +2,7 @@ title: "常见问题" --- -本章用于集中整理在部署和使用 HyperZoneLogin 时较常遇到的问题。遇到异常时,建议先对照本章判断问题属于哪一类,再结合 [`配置索引`](/manual/zh/config/配置列表) 和 [`问题反馈`](./问题反馈.md) 继续排查或整理反馈材料。 +本章用于集中整理在部署和使用 HyperZoneLogin 时较常遇到的问题。遇到异常时,建议先对照本章判断问题属于哪一类,再结合 [`配置索引`](/manual/zh/config/配置列表) 和 [`问题反馈`](/manual/zh/问题反馈) 继续排查或整理反馈材料。 ## 加入游戏后提示“登录失败:无效会话(请尝试重启游戏及启动器)” diff --git "a/src/content/docs/manual/zh/\345\277\253\351\200\237\344\270\212\346\211\213.md" "b/src/content/docs/manual/zh/\345\277\253\351\200\237\344\270\212\346\211\213.md" index d2f4579..dcb3606 100644 --- "a/src/content/docs/manual/zh/\345\277\253\351\200\237\344\270\212\346\211\213.md" +++ "b/src/content/docs/manual/zh/\345\277\253\351\200\237\344\270\212\346\211\213.md" @@ -4,36 +4,46 @@ title: "快速上手" 如果你现在的目标是:**先把 HyperZoneLogin 跑起来,再逐步细化配置**,请先按本章完成一套最小可用部署。 -本文档展示了一个完整示例思路:**Velocity 代理 + 真实等待后端 + 真实游戏后端**。这也是当前更稳妥、排障成本更低的入门方式。 +本文档展示了一个完整示例思路:**Velocity 代理 + Outpre等待后端 + 真实游戏后端**。这也是当前更稳妥、排障成本更低的入门方式。 ## 前置条件 开始前请先确认: - [ ] 你已经准备好一台 Velocity 代理; -- [ ] 你至少准备了两个后端服:一个等待后端、一个正式游戏后端; +- [ ] 你至少准备好了一个正式游戏后端; - [ ] 你打算让玩家通过代理地址进入,而不是直连后端; -- [ ] 你已经看过 [`服务器基础配置`](./服务器基础配置.md),或者熟悉 Velocity 的`modern`转发配置方法。 - - 尤其是 `modern forwarding`、`forwarding.secret`、后端 `online-mode` 这些基础项,**本章不会重复展开配置片段**。如果这里还没有配置好,请先回到 [`服务器基础配置`](./服务器基础配置.md)。 +- [ ] 你已经看过 [`服务器基础配置`](/manual/zh/服务器基础配置/),或者熟悉 Velocity 的`modern`转发配置方法。 + - 尤其是 `modern forwarding`、`forwarding.secret`、后端 `online-mode` 这些基础项,**本章不会重复展开配置片段**。如果这里还没有配置好,请先回到 [`服务器基础配置`](/manual/zh/服务器基础配置/)。 ## 安装方式 1. 下载 HyperZoneLogin 的发行 jar; 2. 把 jar 放进 Velocity 的 `plugins/`目录中; -3. 在`velocity.toml`中正确配置等待后端服和正式游戏后端服的ID和IP地址; -4. 启动一次 Velocity,让 `plugins/hyperzonelogin/` 配置目录自动生成; -5. 按照下方说明修改 [`backend-server.conf`](/manual/zh/config/backend-server) 配置: - -```hocon title=backend-server.conf -# 等待后端服在velocity.toml里面设置的ID -fallback-auth-server=lobby -# 正式游戏后端服在velocity.toml里面设置的ID -post-auth-default-server=play -# 在真实服务器认证等待区内,如果玩家尝试前往其他服务器,是否记住新的目标并在认证成功后自动连接 -remember-requested-server-during-auth=true +3. 在`velocity.toml`中正确配置正式游戏后端服的ID和IP地址; +4. 启动一次 Velocity,让插件生成初始配置文件; +5. 按照下方说明修改 [`start.conf`](/manual/zh/config/start) 配置: + +```hocon title=start.conf +# 配置注释语言,影响其他配置文件首次生成时的注释语言。使用中文请设置为"zh_cn"。 +language="zh_cn" +# 配置文件格式,影响其他配置文件的序列化方式。建议保持hocon不变。 +format=hocon +# 确认上述配置完成之后,将本字段改为true。 +ready=true ``` -6. 再检查你的 Velocity 服务器和后端服是否都已启动。 +6. 再次重启Velocity,让插件生成完整配置。 +7. 按照下方说明修改 [`core.conf`](/manual/zh/config/core) 配置: + +``` hocon title=core.conf +v-server { + # 认证完成后默认进入的服务器。将其改为你在velocity.toml中设置的游戏后端服ID。 + post-auth-default-server=play +} +``` + +8. 最后再次重启Velocity,并确保游戏后端服也已经运行。 ## 检验方式 @@ -41,28 +51,20 @@ remember-requested-server-during-auth=true 如果链路正常,应该会观察到以下现象: -1. 玩家先进入等待后端; -2. 在等待后端里看到的玩家名表现为 `HZLxxxxxx`(`xxxxxx` 为一串随机数字); +1. 玩家先进入Outpre等待区; +2. 在Outpre等待区里看到的玩家名表现为 `HZLxxxxxx`(`xxxxxx` 为一串随机数字); 3. 认证完成并进入正式游戏后端后,玩家名恢复为正常玩家名称。 如果没有出现上述现象,优先回查以下内容: -- [`服务器基础配置`](./服务器基础配置.md):确认 `modern forwarding` 与后端代理设置; +- [`服务器基础配置`](/manual/zh/服务器基础配置/):确认 `modern forwarding` 与后端代理设置; - [`velocity.toml`](https://docs.papermc.io/velocity/configuration/):确认后端服务器名与 `try` 顺序; -- [`backend-server.conf`](/manual/zh/config/backend-server):确认等待后端与正式游戏后端名称填写正确。 - -## 为什么不优先考虑 LimboAPI - -虽然某些部署会考虑把 `limboapi` 作为认证等待区方案,但对于“先跑通”的目标来说,不建议把它当成第一选择。 - -原因很简单:**首次使用时更强调稳定、可观察、容易排障。**相比之下,直接准备一个真实后端等待区服务器,通常更容易验证链路是否正常。 - -如果你后续确实要研究该方案,建议在已经跑通真实子服方案后再单独测试。 +- [`core.conf`](/manual/zh/config/core):确认正式游戏后端名称填写正确。 ## 继续阅读 当你已经完成本文内容后,建议继续按下面顺序阅读: -1. [`模块介绍`](./模块介绍.md):确定你到底需要哪些模块; -2. [`基础安装`](./基础安装.md):了解更完整的安装与首次启动检查项; +1. [`模块介绍`](/manual/zh/模块介绍/):确定你到底需要哪些模块; +2. [`基础安装`](/manual/zh/基础安装/):了解更完整的安装与首次启动检查项; 3. [`配置索引`](/manual/zh/config/配置列表):调整配置,以接入自己的皮肤站、自定义 Entry、调整数据库或离线识别策略等。 diff --git "a/src/content/docs/manual/zh/\346\234\215\345\212\241\345\231\250\345\237\272\347\241\200\351\205\215\347\275\256.md" "b/src/content/docs/manual/zh/\346\234\215\345\212\241\345\231\250\345\237\272\347\241\200\351\205\215\347\275\256.md" index 420cc07..29bb48f 100644 --- "a/src/content/docs/manual/zh/\346\234\215\345\212\241\345\231\250\345\237\272\347\241\200\351\205\215\347\275\256.md" +++ "b/src/content/docs/manual/zh/\346\234\215\345\212\241\345\231\250\345\237\272\347\241\200\351\205\215\347\275\256.md" @@ -84,5 +84,4 @@ proxies: - [ ] 已完成 Velocity 与后端服的基础联通; - [ ] `velocity.toml` 使用 `modern` 转发; - [ ] 后端的`modern`转发已正确配置,`online-mode=false`和`bungeecord=false`均已设置正确; -- [ ] 玩家无法绕过代理直连后端; -- [ ] 你知道认证等待区准备放在哪个后端服务器上。 +- [ ] 玩家无法绕过代理直连后端。 diff --git "a/src/content/docs/manual/zh/\346\246\202\350\246\201.md" "b/src/content/docs/manual/zh/\346\246\202\350\246\201.md" index 31c8e66..cf68f81 100644 --- "a/src/content/docs/manual/zh/\346\246\202\350\246\201.md" +++ "b/src/content/docs/manual/zh/\346\246\202\350\246\201.md" @@ -29,11 +29,11 @@ title: "概要" 建议按以下顺序阅读: -1. 如果你想先把环境快速跑通,先看 [`快速上手`](./快速上手.md); -2. 再看 [`服务器基础配置`](./服务器基础配置.md),确认代理服基础环境正确; -3. 然后阅读 [`模块介绍`](./模块介绍.md),决定你需要启用哪些模块; -4. 接着查看 [`基础安装`](./基础安装.md),完成更完整的最小部署; +1. 如果你想先把环境快速跑通,先看 [`快速上手`](/manual/zh/快速上手/); +2. 再看 [`服务器基础配置`](/manual/zh/服务器基础配置/),确认代理服基础环境正确; +3. 然后阅读 [`模块介绍`](/manual/zh/模块介绍/),决定你需要启用哪些模块; +4. 接着查看 [`基础安装`](/manual/zh/基础安装/),完成更完整的最小部署; 5. 需要继续微调时,再参考 [`配置索引`](/manual/zh/config/配置列表); -6. 遇到问题时,可查阅 [`常见问题`](./常见问题.md) 并按 [`问题反馈`](./问题反馈.md) 整理反馈材料。 +6. 遇到问题时,可查阅 [`常见问题`](/manual/zh/常见问题/) 并按 [`问题反馈`](/manual/zh/问题反馈/) 整理反馈材料。 如果你当前还没有完成 Velocity 与后端服的基础转发配置,请不要急着安装本项目。对代理服登录框架来说,**基础网络与转发配置是前置条件,不是可选项**。 diff --git "a/src/content/docs/manual/zh/\346\250\241\345\235\227\344\273\213\347\273\215.md" "b/src/content/docs/manual/zh/\346\250\241\345\235\227\344\273\213\347\273\215.md" index aabc9ba..5b69652 100644 --- "a/src/content/docs/manual/zh/\346\250\241\345\235\227\344\273\213\347\273\215.md" +++ "b/src/content/docs/manual/zh/\346\250\241\345\235\227\344\273\213\347\273\215.md" @@ -2,7 +2,7 @@ title: "模块介绍" --- -**HyperZoneLogin** 由核心模块与多个子模块组成,打包在同一个jar文件中,由`modules.conf`控制是否激活。并不是所有模块都激活,正确做法是根据你的登录方案与迁移需求选择组合。 +**HyperZoneLogin** 由核心模块与多个子模块组成,打包在同一个jar文件中,由`core.conf`中的`modules`部分控制是否激活。并不是所有模块都激活,正确做法是根据你的登录方案与迁移需求选择组合。 ## 模块总览 @@ -11,6 +11,7 @@ title: "模块介绍" | Velocity | - | 主插件 / 核心运行时,负责 Profile、数据库、命令与模块注册 | - | | Yggdrasil验证 | `auth-yggd` | 提供 Mojang / 第三方 Yggdrasil 在线验证能力 | 正版登录/外置登录 | | 离线登陆验证 | `auth-offline` | 提供本地 / 离线账号注册、登录、绑定、改密等能力 | 离线登录 | +| Floodgate登陆验证 | `auth-floodgate` | 提供利用 Floodgate 认证基岩版玩家的能力 | 基岩版玩家登录 | | 数据迁移 | `data-merge` | 从 AuthMe 或 MultiLogin 迁移数据 | 只在迁移时需要 | | 皮肤恢复 | `profile-skin` | 在认证链路中提取、修复、缓存并应用皮肤属性 | 有皮肤需求 | | 安全防护 | `safe` | 简易的反假人功能 | 无其他反假人插件时 | @@ -22,37 +23,47 @@ title: "模块介绍" 如果你希望只允许 Mojang 正版和第三方外置登录玩家进入,不提供离线本地账号注册,且希望围绕 Yggdrasil 档案做统一管理: -请**激活`auth-yggd`模块** ,无需激活`auth-offline`模块。如果需要恢复玩家皮肤,亦可激活`profile-skin`模块。 +请**激活`auth-yggd`模块** ,无需激活`auth-offline`模块。如果需要缓存玩家皮肤,亦可激活`profile-skin`模块。 对应的配置文件样例如下: -```hocon -auth-offline=false -auth-yggd=true -data-merge=false -profile-skin=true -safe=true +```hocon title=core.conf +modules { + auth-floodgate=false + auth-offline=false + auth-yggd=true + safe=true + profile-skin=true + data-merge=false +} ``` ### 2. 正版登录+外置登录+离线玩家密码登录 如果你的服务器既要接收离线玩家,又要兼容正版和第三方外置登录玩家: -请**激活`auth-yggd`模块和`auth-offline`模块** 。如果需要恢复玩家皮肤,亦可激活`profile-skin`模块。 +请**激活`auth-yggd`模块和`auth-offline`模块** 。如果需要缓存玩家皮肤,亦可激活`profile-skin`模块。 对应的配置文件样例如下: -```hocon -auth-offline=true -auth-yggd=true -data-merge=false -profile-skin=true -safe=true +```hocon title=core.conf +modules { + auth-floodgate=false + auth-offline=true + auth-yggd=true + safe=true + profile-skin=true + data-merge=false +} ``` -### 3. 需要从Authme或Multilogin迁移 +### 3. 基岩版玩家支持 -如果你的服务器之前在使用上述插件,并希望将数据迁移到本插件,在前文所述的基础上还需要 **激活`data-merge`模块** 。具体操作参见[`迁移数据`](迁移数据.md)。 +如果你的服务器还希望支持基岩版玩家进入,请在前文所述的基础上进一步 **激活`auth-floodgate`模块** ,同时需要在 Velocity 服务器安装 Geyser 和 Floodgate 插件。 + +### 4. 需要从Authme或Multilogin迁移 + +如果你的服务器之前在使用上述插件,并希望将数据迁移到本插件,在前文所述的基础上还需要 **激活`data-merge`模块** 。具体操作参见[`迁移数据`](/manual/zh/迁移数据/)。 `data-merge`模块仅在进行数据迁移时才需要,数据正确迁移后即可禁用或移除。 @@ -63,8 +74,9 @@ safe=true 1. **先装核心主插件**; 2. 需要在线验证,就激活 `auth-yggd`; 3. 需要离线本地账号,就激活 `auth-offline`; -4. 需要迁移历史数据,才暂时激活 `data-merge`; -5. 需要皮肤修复与缓存,再激活 `profile-skin`; -6. 没有额外的反假人插件,并且有反假人的需求,才激活 `safe`。 +4. 需要支持基岩版玩家,就激活 `auth-floodgate`,并安装 Geyser 和 Floodgate; +5. 需要迁移历史数据,才暂时激活 `data-merge`; +6. 需要皮肤修复与缓存,再激活 `profile-skin`; +7. 没有额外的反假人插件,并且有反假人的需求,才激活 `safe`。 这样选出来的组合,通常就是最接近实际需求的最小集。 diff --git "a/src/content/docs/manual/zh/\350\277\201\347\247\273\346\225\260\346\215\256.md" "b/src/content/docs/manual/zh/\350\277\201\347\247\273\346\225\260\346\215\256.md" index 906d05e..5d63d68 100644 --- "a/src/content/docs/manual/zh/\350\277\201\347\247\273\346\225\260\346\215\256.md" +++ "b/src/content/docs/manual/zh/\350\277\201\347\247\273\346\225\260\346\215\256.md" @@ -6,10 +6,12 @@ title: 迁移数据 ## 迁移步骤 -首先,请在`modules.conf`配置中激活`data-merge`模块。 +首先,请在`core.conf`配置中激活`data-merge`模块。 -```hocon -data-merge=true +```hocon title=core.conf +modules { + data-merge=true +} ``` 然后重启服务器一次,令模块生成对应的配置文件。你需要按照下方指引修改配置文件中的字段,使插件能够正确获取原有数据库中的信息。 @@ -20,10 +22,15 @@ data-merge=true ## Multilogin 迁移配置 -Multilogin 数据迁移的配置文件为`/plugins/hyperzonelogin/merge`目录下的`merge-ml.conf`文件。你需要注意修改以下配置: +Multilogin 数据迁移的配置文件为`/plugins/hyperzonelogin/data-merge`目录下的`multilogin.conf`文件。 + +在此之前,你需要先按照 Multilogin 中的原有配置,**为每个 Yggdrasil 登录服务创建好[条目配置文件](/manual/zh/config/yggd-entry/)** 。 + +之后,你需要注意修改以下配置: - `source.type`:Multilogin 插件数据库的类型。请根据你原先的配置选择 `H2DB` 或 `MYSQL` 。 - `tables.user-data-table`和`tables.in-game-profile-table`:**默认配置下勿动。** 如果你修改过 Multilogin 配置中的数据表前缀(`tablePrefix`),请将最开头的`multilogin`更改为你设定的前缀,其余部分勿动。 +- `service-id-mapping`:参照[配置页面说明](/manual/zh/config/merge-ml#服务id映射配置)修改。 如果你原先使用 H2DB 数据库,你还需要调整以下配置: @@ -41,7 +48,7 @@ Multilogin 数据迁移的配置文件为`/plugins/hyperzonelogin/merge`目录 ## Authme 迁移配置 -Authme 数据迁移的配置文件为`/plugins/hyperzonelogin/merge`目录下的`merge-am.conf`文件。你需要注意修改以下配置: +Authme 数据迁移的配置文件为`/plugins/hyperzonelogin/data-merge`目录下的`authme.conf`文件。你需要注意修改以下配置: - `source.type`:Authme 插件数据库的类型。请根据你原先的配置选择 `SQLITE` 或 `MYSQL` 。 diff --git "a/src/content/docs/manual/zh/\351\234\200\350\246\201\350\241\245\345\205\205.md" "b/src/content/docs/manual/zh/\351\234\200\350\246\201\350\241\245\345\205\205.md" index baa13fa..4ca3caa 100644 --- "a/src/content/docs/manual/zh/\351\234\200\350\246\201\350\241\245\345\205\205.md" +++ "b/src/content/docs/manual/zh/\351\234\200\350\246\201\350\241\245\345\205\205.md" @@ -131,7 +131,7 @@ slug: "manual/todo-list" ### FAQ 持续补充 -当前用户手册已经新增 [`常见问题`](./常见问题.md) 作为基础 FAQ 章节,但它仍然只覆盖了第一批可以明确确认的高频场景。后续仍建议继续补充下面这类问题: +当前用户手册已经新增 [$1](/manual/zh/$2/) 作为基础 FAQ 章节,但它仍然只覆盖了第一批可以明确确认的高频场景。后续仍建议继续补充下面这类问题: - [ ] 我到底该装哪几个模块? - [ ] 为什么玩家认证成功后没有自动进目标服?