冥河基石

冥河基石

STYGION 拱心石 — 一个通常服务器会运行数十个的模组。

STYGION Keystone

🗝️ STYGION Keystone

通常一个服务器要跑几十个模组,而它只需一个。

Discord、权限组、工单、投票、重启、公告、实体清理、Tab 列表、离线服务器上的真实皮肤——以及一个内置在 jar 中的网页编辑器。 无需向我们注册账号,无需云端,无需开放端口。

它安装在服务端。你的玩家用原版客户端就能加入。 以下所有功能都以此方式运行。如果你也在客户端安装它,聊天会获得颜色和 Discord 表情——这部分是可选的。


⚙️ 它的功能

💬 完善的 Discord 集成

双向聊天,链接可点击。通过游戏内输入验证码进行验证和白名单。角色和封禁保持同步。控制台输出和生命周期消息发送到频道。工单会创建频道、保存记录,并在关闭时归档。

⏰ 服务器运行的时钟

定时重启,可设定固定时间、间隔或延迟,每次重启前都有警告。轮换公告。维护模式。实体清理会保护 Boss、命名生物和已驯服的动物,而不会把它们和掉落的泥土一起扫走。

🏅 玩家靠游玩获得的权限组

可叠加的前缀和后缀,显示在 Tab 列表中,定时晋升,无需任何人登录触发。

🗳️ 投票奖励

支持 NuVotifier v1 和 v2——包括玩家离线时收到的投票,会在下次加入时发放而不是丢失。

🎭 离线模式服务器上的真实皮肤

以及为任何想要自己皮肤的人提供的 /skin <链接>。

🤖 助手

玩家可以在游戏内询问它;服主可以向它询问自己服务器的数据。它从不自行更改任何东西——它提出的建议会留在列表中,直到有人说"执行"或"算了"。支持任何服务商,也可以不用:它只是一个你填入的地址和密钥,留空则永远不会运行。

📊 你的整合包实际开销是多少

这是其他模组都没有的部分。/keystone test 20 会放置二十个测试玩家分散在地图上,测量他们存在时的 tick,并告诉你哪个先撑不住——处理器、收集器、区块加载,还是都没问题。然后它会分析 tick 并列出耗时都花在了哪些模组上。

this machine held all 20 players (20.0 TPS, 47.11 ms at the 95th);
every ten players cost about 8.55 ms a tick; at 20 it was using
47.11 ms of the 50 a tick allows, leaving 2.89

当它询问时选择同意,本次运行数据会加入 stygion.eu/performance 的公开数据——任何人都可以查询某个整合包在类似硬件上的开销,以及哪些 JVM 参数真正能让收集器保持安静。 没有服务器名称,没有地址,没有任何人的名字。


🖥️ 编辑器就在下载包里

在游戏中输入 /keystone panel,点击聊天中的链接。这就是全部的登录过程。页面由你自己的服务器提供,来自同一个 jar,拔掉网线也能用。

里面包含:

🖥️ 控制台 实时显示,有与服务器的回传线路,旁边是聊天
⏱️ 每个时钟 倒计时中,显示每个时钟做了什么以及耗时多久。备份在此列出和恢复
👥 谁在线 权限组、特权,以及"该玩家能否执行此操作",针对真实权限引擎进行检查
📈 这台机器的承载能力 在此启动并在此读取的负载测试
🤖 助手 向它询问你的服务器,它想要更改的任何内容都会等待你说"执行"或"算了"
🔑 API 密钥 创建和撤销,以及每个密钥可以访问的内容
🎛️ 每一项设置 颜色以聊天中实际显示效果预览的色块呈现;权限组以行为单位,显示玩家在每一级所携带的名称;重启时间以时钟呈现——任何涉及生物或物品名称的设置都从你服务器实际加载的内容中搜索,包括你的整个整合包

保存后立即生效并重新读取,无需重启。没有人会被踢出,每一次更改都是一个可以回滚的版本。


🔌 可构建的 API

模组所做的每一件事都可以通过一个本地 HTTP API 在作用域密钥保护下访问,附带一份由模组根据自身路由生成的 OpenAPI 文档——所以它不可能与实际存在的接口不符。有一个事件流,用三行 EventSource 就能监听,keystone-api 已发布供插件使用,完全无依赖:编写一个插件只需在构建文件中加一行,classpath 上不增加任何东西。

它绑定到回环地址,从第一个请求起就需要认证。没有密钥的调用者会被告知路由不存在,与访问一个虚构路径的响应完全相同。


📦 安装

将 jar 放入 mods/。它所需的一切都在其中。

Minecraft 1.21.1 和 26.2
加载器 Fabric 和 NeoForge——四个下载,每个都是同一个模组
Java 1.21.1 用 21,26.2 用 25——即游戏本身所需的版本
端 服务端。原版客户端可以加入。客户端也安装则开启更丰富的聊天
额外要求 无

设置以保留注释的文件形式存放在 config/keystone/。可以手动编辑、从控制台编辑或在编辑器中编辑——三者走同一条路,所以不可能不一致。无法解析的文件会保持其模块关闭并指出出错行,而不是以静默默认值启动。

一切都可以关闭,关闭的模块根本不会被构建:不占内存、不占 CPU、不占表。


🔒 它了解你玩家的哪些信息

没有 IP 地址。不记录、不存储、不发送到任何地方。 地址仅在有人连接期间存在,并会在你服务器自行生成并保存在自己文件夹中的密钥下被转换成一个单向令牌——所以"这是不是上次那台机器"仍然可以回答,而地址本身任何人都无法还原,包括我们在内。

它记录的其他所有内容都是服务器运行所需的信息:名称、玩家 ID、游玩时间、权限组、处罚、工单。在你机器上的一个 SQLite 文件。

所有离开服务器的数据都在此列出,每一项都是你可以清空的设置:

去向 内容 时机
🎮 Mojang 玩家的名称或 ID 仅在离线模式服务器上,用于为其应用真实皮肤,以及检查购买的名称没有被他人使用
💬 Discord 聊天内容,以及头像链接中的玩家名称 仅在你提供 bot token 后
🎨 MineSkin 某人通过 /skin <链接> 链接的图片——仅图片,别无其他 仅在玩家运行该命令时
🤖 助手服务商 问题内容,已事先剥离敏感信息 仅在你填入地址和密钥后
📊 stygion.eu 每天一次五分钟的 tick 计时数据、模组列表以及机器配置——没有服务器名称、没有地址、没有玩家、没有任何类型的 ID,连随机 ID 都没有 默认开启,因为公开数据由此构建。/keystone settings share-live false 可停止;清空 send-to 则停止一切

最后一行是唯一到达我们这里的内容,其中没有任何可以追溯到你的服务器的信息。没有更新检查,没有回传。 关闭它后,在线模式且没有 bot token 和助手密钥的服务器不会联系任何人。


🚧 此版本尚未包含的内容

任务、队伍、领地、基础指令和游戏内界面已设计但尚未编写。它们是接下来的内容,路线图说明了每项的进展状态,而不是承诺日期。


🔗 在哪里提问

由 STYGION 构建。保留所有权利;keystone-api 已发布,以便插件可以针对它编译。