
低TPS防护
一款可配置的服务器端看门狗,用于检测因丢弃低价值方块而导致的TPS下降,在聊天中宣布倒计时,并在不接触生物的情况下清除它们。
低 TPS 守护
一个服务端看门狗,仅在掉落的垃圾方块确实是卡顿原因时,才清除它们。
大多数清理卡顿的模组会按照固定时间清理实体,无论服务器是否需要。低 TPS 守护仅在两个条件同时满足时行动:TPS 确实很低,且实体分析证明堆积的低价值掉落方块是原因。如果卡顿源于其他任何因素,此模组将完全保持沉默。
工作原理
1. 根据服务器游戏刻之间的墙钟时间测量真实 TPS,使用 5 秒滚动窗口。
2. 等待持续下降。TPS 必须连续 10 秒低于阈值(默认 15),因此由区块生成或世界保存导致的单次刻尖峰将被忽略。
3. 分析实体。对每个已加载实体进行一次遍历,统计掉落低价值方块的数量与总实体数。仅当至少 500 个且占所有已加载实体的至少 35% 时,才会开始清理。
4. 否则保持安静。如果掉落方块不是原因,则不会向聊天栏写入任何信息,模组在再次检查前会退避。无刷屏。
5. 先警告,再清除。一条信息会发送到聊天栏,经过 5 秒倒计时后,掉落物被移除,清除操作分摊到多个游戏刻中,从而清理本身永远不会引发尖峰。
输出示例:
[低 TPS 守护] TPS 降至 9.4(阈值 15.0),原因是 4213 个掉落方块。将在 5 秒后清除它们。
[低 TPS 守护] 已移除 4213 个掉落方块。(minecraft:cobblestone x3120, minecraft:stone x901, minecraft:dirt x192)
将被移除的内容
仅这些类型的掉落物,且仅当它们位于地面上时:
- 石头
- 圆石
- 下界岩
- 深板岩
- 圆石深板岩
- 泥土
此列表完全可配置,并接受来自其他模组的物品。相同类型的下落方块实体可选择性包含。在铁砧中重命名过的物品始终会被跳过。
绝不会触碰:怪物、动物、村民、玩家、经验球、矿车、船、物品展示框、盔甲架,或任何不在列表中的物品。实体类型会在删除的确切时刻再次检查,因此不可能移除任何其他东西。
性能
在 Minecraft 中移除一个实体是在其 16x16x16 区块段内进行线性搜索,这意味着在单刻中删除一个巨大的堆积物本身就是一个卡顿尖峰:一个在单个区块段中堆叠 32,000 个物品的基准测试大约需要 100 毫秒。低 TPS 守护将移除操作分摊到多个游戏刻中(默认每刻 500 个),使每个游戏刻保持在低毫秒范围内。扫描不会复制实体列表,并且仅在已检测到持续的 TPS 下降时运行,而非每个游戏刻。
命令
/lowtps status - 所有人都可使用。显示当前 TPS、毫秒/刻、实体数量,以及当前是否会触发清理。
/lowtps clear - 仅限管理员。立即执行一次清理。
/lowtps cancel - 仅限管理员。取消已计划的清理。
配置
config/low_tps_mod.toml 在首次启动时创建,并在您编辑时自动重新加载,无需重启。每个参数都可配置:
- TPS 阈值以及下降必须持续的时长
- TPS 检查的频率
- 检测阈值:掉落方块的最小数量及其占所有实体的最小比例
- 警告延迟、清理之间的冷却时间,以及当卡顿由其他原因引起时的单独冷却时间
- 启动宽限期
- 物品列表,是否包含下落方块,是否保护重命名物品
- 每刻可移除的实体数量
- 每条聊天信息,包括颜色代码和占位符,如 {tps}、{count} 和 {delay}
安装
仅限服务端。将 jar 文件放入服务器的 mods 文件夹。客户端无需安装此模组,原版客户端可以正常连接。
需要适用于 Minecraft 1.21.1 的 NeoForge。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。