优化模组

优化模组

通过限制远处实体刻、暂停怪物AI和限制粒子效果来减少服务器延迟。

优化

OptimizeMod

让远处的模拟保持安静,以便活跃的游戏玩法获得更多 CPU 时间。

OptimizeMod 是一个轻量级的 Fabric 优化模组,适用于 Minecraft 1.21.1。 它的目标很简单:减少玩家未主动交互的实体和效果上的工作量。

OptimizeMod 改变了什么

1. 基于距离的移动 tick 节流(EntityTickMixin)

Hook:LivingEntity.tickMovement()

  • 玩家被排除在外。
  • 如果在睡眠距离(默认 96 格)内没有找到任何玩家,非玩家生物实体跳过移动 tick(默认 ENTITY_TICK_SKIP = 4)。
  • 如果存在玩家但距离超过缩减距离(48 格),移动更新会被节流(大约每隔一个 tick)。

2. 基于距离的 AI 节流(MobEntityAIMixin)

Hook:LivingEntity.tickNewAi()(针对 MobEntity)

  • 如果在缩减距离(48 格)内没有找到任何玩家,该 tick 的 AI 更新会被取消。
  • 在中等距离范围内,AI 更新会被部分节流(每隔一个 tick)。
  • 在被节流/取消期间,despawnCounter 会被重置,以避免不想要的消失副作用。

3. 粒子吞吐量上限(ParticleManagerMixin,客户端)

Hook:ParticleManager.addParticle(...)

  • 粒子创建通过本地计数器设置上限(MAX_PARTICLES_LIMIT = 4000)。
  • 当超过上限时,多余的粒子生成请求会被丢弃。
  • 旨在减少极端粒子爆发导致的客户端卡顿。

重要的准确性说明

  • OptimizeMod 不保证固定的 FPS/TPS/MSPT 提升。
  • 实际影响取决于生物密度、玩家分布、区块活动、模组包组成、JVM/运行时设置以及测试场景。
  • 对远处生物/实体的行为改变是设计上有意为之的。

可复现的评估(推荐)

要在你的环境中验证影响,请在相同条件下比较基线与 OptimizeMod:

  1. 相同的 Java 版本、JVM 参数、模组列表、种子和配置。
  2. 相同的场景和时长(推荐:每次运行 20-30 分钟)。
  3. 至少 3 次基线运行 + 3 次 OptimizeMod 运行。
  4. 收集可比较的指标:
  • p50/p95 MSPT(spark 或等效工具)
  • CPU 使用率(进程/系统)
  • FPS/帧时间(客户端测试)
  1. 比较分布(中位数/p95),而不是一次性的峰值。

安装

  1. 为 Minecraft 1.21.1 安装 Fabric Loader
  2. 安装 Fabric API
  3. 将 OptimizeMod 的 jar 放入 mods/

兼容性

  • 旨在与其他优化模组互补。
  • 与任何基于 mixin 的模组一样,在生产部署前请测试你的确切模组包。