无滴答

无滴答

用于大型模组服务器的服务端实体刻优化器。通过白名单、领地保护、诊断和可选物品优化,减少远距离实体刻的无谓消耗。

优化

NoTick

NoTick 是一款为大型模组化 Minecraft 服务器构建的服务端实体 tick 优化器。

大型整合包可能会浪费大量 CPU 时间在 tick 那些没有玩家能看到、够到、攻击、拾取或交互的生物、物品和其他实体上。NoTick 通过跳过高可优化的远处实体 tick 来削减这些后台工作,同时保护重要的游戏玩法。

目标很简单:减少被浪费的模拟,把更多 tick 预算留给玩家实际在使用的服务器部分。

服务器影响仪表盘

NoTick 统计项 值
必需依赖 Fabric 构建需要 Fabric API
支持的构建目标 6
可选的领地集成 FTB Chunks + Open Parties and Claims
管理员命令 5
主要优化目标 远处未被使用的实体 tick
安全控制 白名单、维度、袭击、领地、活跃区块

Tick 节省示例

NoTick 的节省量随符合条件的远处实体数量而扩展。如果某个实体在玩家范围之外,且不受白名单、领地、袭击规则或活跃区块保护机制保护,它的正常实体 tick 就可以被跳过。

符合条件的远处实体 每服务器 tick 跳过的 tick 调用 20 TPS 下每秒跳过的 tick 调用
100 最多 100 最多 2,000
500 最多 500 最多 10,000
1,000 最多 1,000 最多 20,000
2,500 最多 2,500 最多 50,000

这些不是虚假的基准测试声明。它们展示了该优化背后的数学原理:符合条件的远处实体 tick 越少,服务器承担的后台实体工作就越少。

哪些内容保持活跃

玩家与附近的游戏内容      [ACTIVE]    始终正常 tick
白名单实体/模组          [ACTIVE]    由配置保护
被领地声明的基地与农场    [ACTIVE]    受 FTB Chunks 或 OPAC 保护
袭击敏感实体             [ACTIVE]    受袭击规则保护
远处未被使用的生物/实体   [OPTIMIZE]  在安全超出范围时跳过
远处掉落的物品           [OPTIONAL]  可配置的基于概率的 tick

决策流程

实体 tick 开始
  -> 是玩家?                        正常 tick
  -> 被配置禁用?                    正常 tick
  -> 在白名单实体或模组中?            正常 tick
  -> 在玩家附近?                    正常 tick
  -> 在活跃或被领地声明的区块中?       正常 tick
  -> 受袭击保护?                    正常 tick
  -> 符合条件的远处实体?              跳过 tick

为什么服务器使用 NoTick

  • 在高实体数量的世界中降低后台实体 tick 开销
  • 帮助大型整合包和繁忙 SMP 稳定 TPS
  • 通过注册表 ID 支持模组生物和实体
  • 通过白名单和保护机制保护重要玩法
  • 支持对基地、农场和自动化区域进行感知领地的 tick
  • 为管理员提供游戏内诊断和配置重载工具
  • Fabric 上仅需 Fabric API;Forge 和 NeoForge 构建无需额外依赖模组

核心功能

  • 基于距离的实体 tick 优化
  • 可配置的水平和垂直 tick 范围
  • 可选的掉落物优化,支持可配置的远处 tick 概率
  • 实体白名单和完整模组 ID 白名单支持
  • 袭击专用的 tick 控制
  • 维度白名单支持
  • 对最近使用过的或类似基地的区块进行活跃区块保护
  • 可选的 FTB Chunks 集成
  • 可选的 Open Parties and Claims 集成
  • /notick 诊断命令套件
  • /notick reload 可在不重启的情况下重载配置

管理员命令

所有命令都需要管理员/OP 权限。

命令 用途
/notick 显示当前优化状态
/notick status 显示详细设置和集成状态
/notick here 显示你当前所在区块的诊断信息
/notick reload 从磁盘重载配置
/notick help 列出可用命令

兼容性

NoTick 为模组化服务器设计,并通过正常注册表 ID 支持模组实体。

当前构建:

  • Fabric 1.20.1 和 1.21.1
  • Forge 1.20.1
  • NeoForge 1.21.1、26.1.2 和 26.2

在配置白名单中用于:

  • Boss 和多部件生物
  • 脚本或事件实体
  • 假玩家风格的自动化
  • 大型内容模组的弹射物或特殊实体
  • 任何远处实体必须保持正常 tick 的模组

如果安装了 FTB Chunks 或 Open Parties and Claims,被领地声明的区块可被视为保护区。这对于农场、自动化区域和在玩家离开时仍应保持正常行为的基地很有用。

最佳适用场景

NoTick 在以下场景中效果最佳:

  • 大型模组化生存服务器
  • 拥有大量被动实体负载的全能整合包
  • 拥有许多基地、农场和维度的 SMP
  • 远处生物和物品造成持续 tick 开销的服务器
  • 需要管理员控制的性能保护机制的整合包

重要说明

NoTick 有意专注于性能,并可能改变远处、未受保护实体的行为。

如果某个农场或装置必须在无人在附近时运行,请使用区块领地声明、活跃区块保护、实体白名单、模组 ID 白名单或维度规则来保护它。

致谢

最初基于 Txni 的 DoesItTick。
由 Rique 维护的分支。