介绍
SimpleLogin
SimpleLogin 是一个 Forge 模组,旨在保护离线模式下的服务器。
简介
SimpleLogin 类似于 Bukkit 上的一些认证插件,比如 AuthMe:该模组会在玩家登录时校验其密码。
不过,两者也有一些不同之处:密码不是通过命令输入的,而是存储在客户端的一个特定文件中,并在玩家加入时自动发送到服务器,因此玩家不必每次都输入密码。此外,客户端会在首次启动时让你选择一个密码,所以在大多数情况下,玩家甚至不需要做任何事情。
安装
将 simplelogin-xxx.jar 放入服务端和客户端的 mods 目录中。
快速开始
如果你不太在意,就不需要配置任何东西。
玩家的密码不需要手动输入,客户端会生成一个随机 UUID 作为密码,并将其保存在 .minecraft/.sl_password 中,在加入时发送到服务器。
服务器会在玩家首次加入时记住其密码,之后玩家再次加入时,服务器会检查密码是否与第一次的匹配。
常见问题
我的密码安全吗?
当然安全,密码在客户端使用 SHA256 进行哈希,在服务端存储前使用 BCrypt 进行哈希。不过,密码在客户端是以未加密的形式存储的,所以与他人共享客户端时,请注意不要复制 .minecraft/.sl_password 文件。
如果我想更换客户端该怎么办?
你应该备份你的 minecraft/.sl_password 文件,并将其复制到新的客户端中。
存储提供器
在服务端存储用户数据有多种方式,每种方式各有优缺点。Simple Login 提供了一个抽象层,以支持不同的存储实现。每种实现被称为一个“存储提供器”。
每个存储提供器都有其唯一的资源位置(例如 simplelogin:file)来标识自身。
Simple Login 本身提供了两种存储提供器:file 和 sqlite。
文件存储提供器
ResourceLocation:simplelogin:file
文件存储提供器是存储提供器接口最简单的实现,它将所有用户数据以 JSON 格式存储在 world/sl_entries.dat 中。
SQLite 存储提供器
ResourceLocation:simplelogin:sqlite
SQLite 存储提供器可能比文件提供器更高效,但它需要一个 SQLite JDBC 连接器,该连接器大约有 6 MB,我决定不将其打包进 Simple Login。因此,如果你想使用此提供器,你需要自行安装一个 JDBC 连接器。最简单的方法是下载它,然后将 org/sqlite 和 META-INF/services 目录复制到 Simple Login 模组的 jar 中。
自定义存储提供器
如果你熟悉 Java 和 Forge 模组,这不会很难。
你需要实现 top.seraphjack.simplelogin.server.storage.StorageProvider 接口,并在服务器启动前通过调用 top.seraphjack.simplelogin.server.SLRegistries.STORAGE_PROVIDERS::register 注册你自己的提供器。
Simple Login 插件
Simple Login 插件(简称插件)是对 Simple Login 处理玩家加入、登录和离开服务器方式的扩展。
就像存储提供器一样,每个插件都有其唯一的资源位置来标识自身。
Simple Login 的一些关键功能也以内置插件的形式实现,以下是它们的列表。
AutoSave
ResourceLocation:simplelogin:autosave
此插件将每五分钟触发存储提供器保存所有数据。
此插件默认启用。
ProtectCoord
ResourceLocation:simplelogin:protect_coord
此插件会在玩家离开服务器前将其传送回出生点,并在成功登录后将其传送回来,从而防止未经授权的登录尝试可能造成的位置泄露。
此插件默认禁用,因为其行为在游玩大型整合包时会导致一些问题。
ResendRequest
ResourceLocation:simplelogin:resend_request
如果由于某些错误导致客户端之前的登录数据包无法到达服务器,此插件将每五秒请求客户端登录一次。
此插件默认启用。
RestrictGameType
ResourceLocation:simplelogin:restrict_game_type
此插件会在玩家离开或加入服务器时将其游戏模式更改为旁观模式,并在成功登录后将其游戏模式更改为默认游戏模式(存储在存储提供器中)。
此插件默认启用。
RestrictMovement
ResourceLocation:simplelogin:restrict_movement
此插件会阻止玩家在登录前移动。
此插件默认启用。
Timeout
ResourceLocation:simplelogin:timeout
此插件会在一段时间后踢出尚未通过身份验证的玩家(默认为 600 秒,可在 Simple Login 的配置文件中修改,路径为 <server>/<world>/serverconfig/simplelogin-server.toml)。
超时值过去为 60 秒,但由于大型整合包导致登录时的同步耗时超过一分钟的问题,现已增加到 600 秒。
此插件默认启用。
命令
所有命令均支持自动补全。
-
/simplelogin unregister <PlayerName>
- 注销该玩家
-
/simplelogin save
- 保存所有玩家条目
-
/simplelogin setDefaultGameType <PlayerName> <GameType>
- 配置玩家登录后的游戏模式
-
/simplelogin about
- 显示版本信息
-
/simplelogin plugin available
- 显示可用插件列表
-
/simplelogin plugin loaded
- 显示已加载插件列表
-
/simplelogin plugin load <ResourceLocation>
- 加载指定的插件
-
/simplelogin plugin unload <ResourceLocation>
- 卸载指定的插件
-
/sl_change_password <NewPassword>
- 将密码更改为 NewPassword
- 出于安全考虑,此命令在客户端侧实现
配置
服务器配置
-
secs:整数
- 等待玩家通过身份验证的时间,如果在此时间后仍未成功通过身份验证,玩家将被断开连接。
- 默认 600 秒。
- 过去为 60 秒,但由于大型整合包的超时问题已增加到 10 分钟。
-
plugins:字符串数组
- 默认加载的插件。
-
commandNames:字符串数组
- 允许玩家在登录前执行的命令。
- 请注意,你需要指定完整命令且不带开头的
/,例如give @p minecraft:apple 16
-
storageProvider:字符串
- 要使用的存储提供程序。
-
defaultGameType: Integer
- 新注册用户的默认游戏模式。
- 0、1、2、3 分别代表生存、创造、冒险和旁观者模式。
常见问题
Simple Login 支持哪些 Minecraft 版本?
Simple Login 支持 Minecraft Java 版 1.10.2–1.20.1,共 18 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
Simple Login 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
评论
登录后评论和评分