
远物停载:土豆版
实体远离玩家时不允许其刻运行的性能模组
DoesPotatoTick — 概述
DoesPotatoTick 通过暂停(“冻结”)无需每刻更新的遥远实体来提升性能。通过可配置的规则和安全检查,它能降低服务器 CPU 负载,并可能在保留正常游戏行为的同时提高客户端 FPS。
1. 目标
Minecraft 每秒更新每个实体 20 次,这在大型世界、众多玩家或大型模组包中可能使服务器超载。原版设置无法区分重要实体与无关实体。 DoesPotatoTick 引入了一个受控系统,仅更新必要的实体。
2. 核心机制
每个实体被分配一个可 tick 状态。服务器每刻根据位置、类别和上下文评估该状态;客户端可选择跳过渲染不可 tick 的实体。
2.1 基于距离的激活
- 玩家定义一个活动区域(可配置的区块半径)。
- 此区域外的实体成为暂停候选。
- 区域仅在玩家移动至不同区块、登录或切换维度时更新。
2.2 维度和领地支持
- 优化可限制在特定维度。
- 领地内(FTB Chunks、OpenPartiesAndClaims)的实体始终保持 tick。
- 若未安装领地模组,玩家将收到通知。
2.3 实体例外
以下实体永不被冻结:
- 玩家、掉落方块、原版 Boss
- 大量模组 Boss 和机械系统
- 整个模组可被列入白名单 配置更改后列表会自动重载。
2.4 过滤规则
可配置规则允许忽略或包含:
- 敌对生物、动物、袭击者
- 掉落物品
- 投射物(可选择强制命中目标进行 tick) 濒死实体允许完成其死亡序列。
2.5 刷怪塔检测
定期扫描区块密度;若检测到类似刷怪塔的模式,受影响的实体将被强制 tick 以确保刷怪塔继续运作。
2.6 袭击处理
在活跃袭击期间,可根据配置禁用或调整优化。
3. 客户端功能
3.1 跳过渲染
不可 tick 的实体可能被隐藏以提升 FPS。 拉弓时会暂时重新启用渲染以避免瞄准问题。
3.2 Embeddium 集成
当安装 Embeddium 时,会添加一个专门的配置界面。
3.3 同步
一个轻量级数据包告知客户端哪些实体应被显示。
4. 配置
- doespotatotick-common.toml:核心服务器行为
- doespotatotick-client.toml:渲染控制
- 默认值优先考虑安全性和兼容性。
- 所有逻辑在服务器线程上运行;更改在刻和重载间一致应用。
5. 让 DPT 更好
当您:
- 认为某个实体类型永远不应停止 tick
- 有配置选项请求
- 遇到因实体 tick 冻结导致的意外情况
请随时通过 GitHub Issues 或邮件 670067575@qq.com 联系我。
6. 设计考虑
该模组旨在:
- 减少服务器负载而不改变游戏玩法
- 保留 Boss 战、刷怪塔和模组机制
- 与现有模组生态系统保持兼容
其行为类似于一个受控的、上下文感知的调度系统,而非简单的“禁用遥远实体”开关。
7. 一点历史与演变
DoesPotatoTick 并非以今天看到的精良模组起步。
它最初是 Txni 的 DoesItTick 的一个分支,纯粹作为锂/路跑者生态系统的临时兼容性修复而创建。原版坦率地说相当简陋:只有少数几个配置选项,并且每个实体在每个 tick 都会遍历所有在线玩家以检查“是否有人足够近?” 这在每刻产生 O(实体 × 玩家) 的计算量——在一个拥有 20,000 个实体和 50 名玩家的服务器上,这本身就每秒增加了数百万次不必要的迭代。纯属野蛮操作。
旧的 dpt$checkAlwaysTick() 同样痛苦:它每刻对每个实体执行昂贵的配置和标签检查,且无任何缓存。
也没有客户端渲染修复——冻结的实体只会卡顿并在原地“鬼影”,看起来像坏掉了。
当我们更新模组时,一切发生了变化:
- 将简单的玩家循环替换为当前的 PlayerTracker:一个维度 → 区块 → Y 范围的空间映射,仅在移动时惰性更新。复杂度从 O(n×m) 降至几乎 O(玩家) 每次更新。
alwaysTick标志现在在实体类型注册时计算一次并永久缓存。- 添加了合适的网络数据包和客户端剔除(加上拉弓安全阀),使冻结实体干净消失而非闪烁。
- 刷怪塔检测、袭击感知、领地模组集成、Embeddium GUI……这些当初都不存在。
今天的 DoesPotatoTick 不再是“又一个实体剔除模组”。它是多次全面重构和痴迷于正确做事的结果——而绝不会破坏您的 Boss、刷怪塔或 Create 机械。
感谢 Txni 最初的灵感,感谢每一位测试者和贡献者,以及 Grok 和 ChatGPT 帮助我设计、撰写和润色这份描述(我自己写 Readme 时简直要死了 lol)。
享受丝滑般的 tick(或者说,丝滑般的无 tick)!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。