Shtreimel – Sable Utility
适用于 NeoForge 1.21.1 上 Sable 与 Create Aeronautics 的服务端管理工具:列出、检查、冻结、归档和移除子级网格;在控制台中提示卡顿嫌疑对象;丰富崩溃报告。
介绍
Shtreimel
为 Sable 和 Create Aeronautics 提供的服务器管理工具包。查找导致卡顿的飞艇、冻结失控的飞艇、撤销意外破坏、查看最后登上某艘船的玩家、追踪某个刚体消失的确切时间,并确认服务器崩溃时有哪些机械结构。
支持 NeoForge 和 Fabric 1.21.1。仅需在专用服务器上安装,无需安装客户端模组。
“Shtreimel”是戴在貂皮衬里上的毛皮帽。它是戴在 Sable 上面的帽子。这个名字是个玩笑;这个模组可不是。
为什么你需要它
你在运行 Sable 或 Create Aeronautics 服务器。迟早会遇到以下情况之一:
- 有人造出了一个占地 50,000 格的巨型机械结构,导致 TPS 暴跌。你不知道它是谁造的、在哪里,也不知道该如何阻止它,除非使用
/stop。 - 有玩家把飞艇开出了生存范围,之后再也没回来。或者飞艇卡在半空中。又或者掉进了虚空。
- 你信任的人对错误的机械结构运行了
/sable remove,而你没有任何办法回滚。 - 有玩家报告说自己的飞艇被拆空、移动或开走了,而你完全不知道当时谁在船上。
- Sable 在两个游戏刻之间移除了一个刚体,但你的日志没有记录原因。
- 服务器崩溃了,崩溃报告只写着“physics tick”,没有其他信息。
Shtreimel 为以上每种情况都提供了相应命令。
功能介绍
查找卡顿来源
当某个维度的物理切片负载过高时,Shtreimel 会对最可能的可疑刚体进行排名,并在服务器控制台打印一行信息,包含位置、玩家设置的名称、UUID、边界框和可疑度评分。
控制台输出示例:
[shtreimel.lag] lag suspect dim=minecraft:overworld ewma=7.43ms max60=18.20ms uuid=8a1f... name="Big Blimp" plot=(10005,10003) center=(124.0,72.5,-88.3) bb=24x10x32 suspect=83
排名会使用可配置的代理指标:体积、占地范围、已加载区块、Sable 动力元件、速度、网络漂移、反作用飞轮、排队中的力、相交实体,以及可选的连接、依赖和票据指标。权重和上限都可以在配置中设置。
如果你的服务器负载比一般情况更高或更低,可以在正常运行几小时后执行 /shtreimel lag autotune,以获取建议阈值,并输出到 <world>/shtreimel/dimension-overrides.json。
你也可以随时查看实时排名:
/shtreimel rank/shtreimel physics-stats/shtreimel list
停止卡顿
/shtreimel freeze <uuid>/shtreimel freeze nearest [radius]/shtreimel freeze connected <uuid>/shtreimel freeze list/shtreimel unfreeze <uuid>/shtreimel unfreeze connected <uuid>
freeze 会将机械结构固定在原地,而不会暂停整个维度的物理模拟。connected 会冻结一个刚体及与其相连的所有刚体。固定状态会在服务器重启后保留,也不会因卸载而消失;冻结状态的父刚体分裂后,其子刚体也会继承冻结状态。unfreeze 会重新唤醒刚体。
/shtreimel delete uuid <uuid> --confirm/shtreimel delete at <x> <y> <z> --confirm/shtreimel delete nearest --confirm
delete 会调用 Sable 自带的移除流程,清理效果与 /sable remove 相同。
撤销你的失误
/shtreimel archive save <uuid> [tag]/shtreimel archive list [uuid] [limit]/shtreimel archive verify <uuid> <archiveId>/shtreimel archive restore <uuid> <archiveId> [keepUuid] [dimension] [at <pos>]/shtreimel archive prune
archive save 会将机械装置的完整方块数据写入磁盘,并附带压缩后大小和 SHA-256 元数据。信任存档前,可以使用 verify 进行检查。restore 可以将其恢复,还可选择保留原 UUID。旧版 0.2/0.3 存档仍可列出和恢复。每个机械装置的撤销记录相互独立。
检查机械装置
/shtreimel info <uuid>
显示姿态、边界框、质量、质心、质量和刚体有效性、反作用轮、排队中的力、网络漂移、连接链和加载依赖项数量、拆分前的父级、冻结状态、上次序列化指针、Sable 2 强制加载票据,以及可配置的加载索引明细。在 Sable 1.2.x 上,票据字段会提示 Sable 2 API 不可用。在游戏中,标题栏包含可点击的 [teleport]、[freeze]、[archive] 按钮。
记录单个刚体的受力情况
/shtreimel forces start <uuid> [seconds]/shtreimel forces show <uuid>/shtreimel forces stop <uuid>
Shtreimel 仅会对你明确选择的刚体启用逐点力记录,且记录时长有限;停止、到期、移除或关闭时都会进行清理。结果会显示力组采样数、点力数量,以及力和扭矩的平均值与最大值。
查找位置
/shtreimel at <x> <y> <z>/shtreimel in <fromPos> <toPos>/shtreimel near [radius]/shtreimel watch <uuid> [seconds]/shtreimel unwatch
at 会指出指定方块位置上是哪台机械装置。in 会列出所有边界框与指定区域相交的机械装置。near 会列出调用者周围的机械装置。watch 会让一名管理人员订阅某台机械装置的实时姿态更新,持续 N 秒(非常适合实时追踪飞艇)。
查看乘员记录
/shtreimel who <uuid>/shtreimel who recent <uuid> [limit]/shtreimel who player <player> [limit]
who 会显示当前位于机械装置内的玩家、正在追踪它的玩家,以及最后一位已知曾在其中的玩家。who recent 会按时间从新到旧列出最近乘坐过的玩家,并显示他们离开的时间以及停留时长。who player 会按时间从新到旧列出某位玩家乘坐过的机械装置,并显示每个刚体最后已知的位置——通常足以找到有人声称丢失的船。
两条历史记录命令都适用于已卸载或已删除的机械装置,也适用于通过名称或 UUID 查询的离线玩家——等报告传到你手上时,这通常就是实际情况。只要身处船体内部就会被计入,不要求站在顶部表面。历史记录会保存到磁盘并在重启后保留;同一玩家反复上下机械装置,也无法挤掉其他人的历史记录。所有数据都有上限,并可在 shtreimel.occupancy 下配置,包括关闭记录的选项。
传送过去
/shtreimel tp <uuid>/shtreimel tp player <playerName> <uuid>/shtreimel tp back
传送到机械装置边界框的顶部。tp back 会将你传回原来的位置。
查看谁做了什么
/shtreimel audit tail [n]/shtreimel audit since 1h/shtreimel audit by Steve/shtreimel audit uuid <uuid>
每条破坏性命令(删除、冻结、归档保存/恢复)都会向 <world>/shtreimel/audit.log 写入一行记录。Tail 会读取当前日志和轮转日志。你可以在游戏内查询它。
在一切消失之前了解发生了什么
/shtreimel history [limit]/shtreimel history <uuid> [limit]
Shtreimel 会为每个 Sable 容器附加一个 SubLevelObserver,并在确切的回调处记录添加和永久移除,早于 Sable 销毁该地块。永久移除会同步到审计日志,附带有效性、姿态、边界、原因,以及(启用时)发起调用的调用帧。该日志在主体卸载后仍然保留,并能捕获在单个 tick 内发生的移除。
更好的崩溃报告
当服务器崩溃时,Shtreimel 会添加一个有界的 -- Shtreimel snapshot -- 块,列出已加载的装置(UUID、名称、位置、包围盒、有效性、票据、拓扑)、各维度的物理计时、最近的生命周期/移除事件、活跃的力配置摘要以及存储指针。NeoForge 使用 CrashReportCallables;Fabric 通过一个软失败友好报告 mixin 使用相同的输出。
在安装了 Create 的 NeoForge 服务器上,崩溃报告还可以指出 ContraptionCollider.collideEntities 内正在处理的装置(Create Aeronautics 飞艇/螺旋桨崩溃)。Create 装置上下文需要 NeoForge;Create 6 和 Aeronautics 在 1.21.1 上为 NeoForge 发布。
运行 /shtreimel debug crash-header 可以在不使服务器崩溃的情况下预览该块。
权限
未安装权限模组时,Shtreimel 使用原版 OP 等级:
- Op 2:只读命令(
list、info、rank、history、who、watch、空间查询、physics-stats、dump、snapshot diff、lag autotune)。 - Op 3:破坏性和改变状态的命令(
delete、freeze、archive save / restore / prune / verify、forces start / stop、audit查询)。 - Op 4:跳过
--confirm令牌。服务器控制台和 RCON 为 op 4。
如果你运行权限模组(LuckPerms、FTB Ranks、Fabric Permissions API 等),命名节点为:
shtreimel.observeshtreimel.profileshtreimel.deleteshtreimel.delete.confirm_bypassshtreimel.audit.read
安装
- 确保你的服务器在
mods/中有 Sable 1.2.1 或更新版本。 - 从 Releases 下载匹配的 jar 并放入同一个
mods/文件夹:- NeoForge 上使用
shtreimel-neoforge-1.21.1-<version>.jar,或 - Fabric 上使用
shtreimel-fabric-1.21.1-<version>.jar。
- NeoForge 上使用
- 启动服务器。配置文件会生成在
<world>/serverconfig/shtreimel-server.toml,编辑文件后会重新加载。现有的 0.3.x 配置、冻结状态、归档、快照和审计日志仍然可读。
就这样。玩家的客户端无需安装任何东西。
兼容性
NeoForge
| 组件 | 所需版本 |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.219 或更高版本 |
| Java | 21 |
| Sable | 1.2.1 至 2.x(>=1.2.1 <3.0.0) |
NeoForge 上的可选项
| 模组 | 提供的功能 |
|---|---|
| Create | 崩溃报告可以注明在 ContraptionCollider.collideEntities 中正在处理的机械装置。可在服务器配置中通过 mixins.createContraptionContextEnabled 开关此功能。 |
| Create Aeronautics | 与 Create 相同的崩溃上下文信息;当航空装置等 Aeronautics 机械装置通过 Create 的碰撞器处理时,也会显示其类型。 |
即使未安装 Create,Shtreimel 的其他所有功能也可在仅安装 Sable 的 NeoForge 服务器上运行。
Fabric
| 组件 | 所需版本 |
|---|---|
| Minecraft | 1.21.1 |
| Fabric 加载器 | 0.16.9 或更高版本 |
| Fabric API | 0.110.0+1.21.1(需要 fabric-command-api-v2 和 fabric-lifecycle-events-v1) |
| Java | 21 |
| Sable | 1.2.1 至 2.x(>=1.2.1 <3.0.0) |
Fabric 上的可选项
| 模组 | 提供的功能 |
|---|---|
| — | 0.5.0 版本没有可选的模组集成功能。所有管理、审计、生命周期、冻结、归档、快照、占用情况和崩溃信息增强功能均已内置。Create 机械装置崩溃上下文功能仅支持 NeoForge,因为 Create 6 和 Create Aeronautics 未发布官方的 1.21.1 Fabric 版本。 |
已打包在 Fabric jar 中
| 组件 | 用途 |
|---|---|
| Fabric Permissions API 0.3.3 | 与 NeoForge 相同的权限节点和原版 op 权限回退机制 |
两个加载器通用说明
- 只安装一个 Shtreimel jar:
shtreimel-neoforge-1.21.1-<version>.jar或shtreimel-fabric-1.21.1-<version>.jar。 - Sable Companion 已随 Sable 一同提供;无需单独安装 Shtreimel。
- 在专用服务器上,玩家无需在客户端安装 Shtreimel。
常见问题
Shtreimel – Sable Utility 支持哪些 Minecraft 版本?
Shtreimel – Sable Utility 支持 Minecraft Java 版 1.21.1,可用的加载器:Fabric / NeoForge。下载时注意选择和你游戏版本一致的文件。
Shtreimel – Sable Utility 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
sauramel 的其他作品
查看全部 →Craft Down Under Client Companion
一个客户端模组,为 CDU 服务器添加多频道聊天功能,支持标签页切换、消息筛选和上下文菜单。
Soulrend Companion
一款以 Soulrend 为主题的多人游戏区域选择器,面向 Craft Down Under,扩展 Quasar Companion,适用于我们的官方托管合作项目。
CraftDownUnder EggHunt Fabric
一个简单的寻蛋游戏模式
Craft Down Under: Beasts and Beyond
以魔法、探索和轻量科技为核心的 1.19.2 整合包,科技内容包括机械动力和沉浸工程
评论
登录后评论和评分