
创建优化器
**创建优化器**是一个针对Minecraft 1.20.1(v1.0.1)Fabric的服务端性能优化模组,通过精确的Mixin优化手段大幅减少大型Create模组装置的卡顿。
Create Optimizer - 综合概览
Create Optimizer 是一款针对 Minecraft 1.20.1 (v1.0.1) Fabric 的服务端性能优化模组,通过基于 Mixin 的精确优化,大幅减少大型 Create 模组装置带来的卡顿。
核心目标
优化 Create 模组的服务端模拟和客户端渲染,不改变游戏机制。专为大型自动化工厂、复杂机械装置和管道网络设计,这些装置原本会导致严重的 TPS 下降。
关键优化
1. 动力网络节流 (服务端)
目标: KineticBlockEntity.tick()
影响: ⭐⭐⭐⭐⭐ 极高
- 降低所有动力方块(传动轴、齿轮、马达、轴承等)的刻更新频率
- 默认:每 2 刻更新一次,代替每刻更新(CPU 占用降低 50%)
- 安全: 转速和应力计算在动力网络传播事件(放置方块、红石)时进行,而非每刻
- 更高的间隔(3-4)能带来更多节省,但可能会感觉反应略有延迟
配置:
KINETIC_UPDATE_INTERVAL = 2 // 1 = 原版(无节流)
2. 流体管道节流 (服务端)
目标: FluidTransportBehaviour.tick()
影响: ⭐⭐⭐⭐ 高(随管道数量增加而增加)
- 节流流体网络流动评估频率
- 默认:每 2 刻更新一次(约 10 次/秒,代替 20 次/秒)
- 流体移动视觉上保持流畅;吞吐量不变
- 安全: 不影响存储的流体数量,仅影响评估频率
配置:
FLUID_PIPE_INTERVAL = 2 // 1 = 原版,3 = 激进
3. 机械装置距离跳过 (服务端)
目标: AbstractContraptionEntity.tick()
影响: ⭐⭐⭐⭐⭐ 极高(对大型/远处机械装置)
- 当附近没有玩家时,完全跳过机械装置的刻模拟
- 默认:若 64 格内无玩家则跳过
- 对拥有远离玩家自动运行的机械装置的服务器节省巨大
- 安全: 当玩家接近时,机械装置立即恢复正常的模拟
配置:
SKIP_TICK_PLAYER_DISTANCE = 64.0 // 最低建议:32
4. 风扇超堆叠处理 (服务端)
目标: FanProcessing.applyProcessing()
影响: ⭐⭐⭐ 中等(兼容性修复)
- 目的: 使 Create 风扇能正确处理来自物品合并模组的超堆叠物品实体
- 问题: 没有此修复,风扇会在一次刻中处理 6400 个物品 → 导致溢出/丢失
- 方案: 在处理前自动拆分超堆叠
- 每刻处理最大堆叠数量的物品(例如 64 铁矿石 → 64 铁锭)
- 多余物品作为独立实体生成,等待下一周期
- 物品合并模组会重新合并未处理的物品
- 结果: 数量正确,时间正确,无物品丢失
5. 机械装置渲染距离剔除 (客户端)
目标: AbstractContraptionEntity.shouldRenderAtSqrDistance()
影响: ⭐⭐⭐ 中高(客户端 FPS)
- 阻止渲染超出配置距离的机械装置
- 默认:96 格(原版无距离剔除)
- 在有大量机械装置的区域能显著提升 FPS
- 安全: 纯视觉优化,不影响模拟
配置:
CONTRAPTION_RENDER_DISTANCE = 96.0 // 格
6. 风扇粒子抑制 (客户端)
目标: AirCurrent.spawnParticles()
影响: ⭐⭐⭐⭐ 高(有多个风扇时客户端 FPS)
- 禁用风扇气流产生的装饰性白色闪闪粒子
- 默认:启用(粒子已禁用)
- 在拥有许多运行中的风扇的工厂中显著提升 FPS
- 安全: 100% 装饰性 — 风扇仍能正常处理物品、推动实体
配置:
DISABLE_FAN_PARTICLES = true
配置系统
所有设置均为 OptimizerConfig.java 中的静态常量:
// 服务端
SKIP_TICK_PLAYER_DISTANCE = 64.0;
KINETIC_UPDATE_INTERVAL = 2;
FLUID_PIPE_INTERVAL = 2;
// 客户端
CONTRAPTION_RENDER_DISTANCE = 96.0;
DISABLE_FAN_PARTICLES = true;
用法: 编辑数值后重新编译。未来版本可能增加运行时配置(TOML)。
性能影响总结
| 优化 | 类型 | 影响 | 安全性 | 可见变化 |
|---|---|---|---|---|
| 动力节流 | 服务端 | ⭐⭐⭐⭐⭐ | 高 | 无(间隔 ≤2) |
| 流体节流 | 服务端 | ⭐⭐⭐⭐ | 高 | 无(间隔 ≤2) |
| 机械装置跳过 | 服务端 | ⭐⭐⭐⭐⭐ | 高 | 无 |
| 风扇超堆叠 | 服务端 | ⭐⭐⭐ | 高 | 正确处理 |
| 渲染剔除 | 客户端 | ⭐⭐⭐ | 完美 | 无(96+ 格) |
| 风扇粒子 | 客户端 | ⭐⭐⭐⭐ | 完美 | 无风扇火花 |
图例: ⭐ = 低,⭐⭐⭐ = 中,⭐⭐⭐⭐⭐ = 极高
使用案例
完美适用:
- 大型自动化 Create 工厂(100+ 动力方块)
- 广泛的流体管道网络(精炼厂、储罐系统)
- 多个或大型机械装置(火车、移动建筑)
- 拥有 24/7 自动农场的服务器
- 使用物品合并模组实现超堆叠实体的农场
场景:
- 大型工厂:500+ 动力方块 → TPS 提升 50% 以上
- 火车网络:多列火车远离玩家 → 机械装置完全跳过刻
- 矿石处理:使用风扇的超堆叠冶炼 → 批次处理正确
- 管道网络:200+ 段管道 → 流体网络占用降低 40-50%
技术实现
架构
- 基于 Mixin:所有优化均使用 Fabric Mixin 进行精确代码注入
- 零开销:静态配置读取;除必要检查外无运行时检查
- 可选注入:
require = 0允许跨 Create 版本优雅降级 - 重映射感知:正确处理 Mojmap/Intermediary 以实现跨版本兼容
代码结构
com.juliamod.createoptimizer/
├── CreateOptimizer.java # 模组主入口点
├── config/
│ └── OptimizerConfig.java # 静态配置
└── mixin/
├── KineticBlockEntityMixin # 动力节流
├── FluidNetworkMixin # 流体节流
├── ContraptionEntityMixin # 距离跳过
├── FanItemProcessingMixin # 超堆叠处理
└── client/
├── ContraptionRenderMixin # 渲染剔除
└── FanParticleMixin # 粒子抑制
每实例状态
- 每个优化维护最小状态(例如
co_kineticTick计数器) @Unique注解防止命名空间污染- 基于模运算的节流确保 CPU 负载均衡分配
兼容性
要求
- Minecraft 1.20.1
- Fabric Loader 0.16.9+
- Fabric API 0.92.2+
- Create 0.5.1+(已测试 0.5.1-j-build.1631)
模组兼容性
- ✅ item-merger:通过
FanItemProcessingMixin完全兼容 - ✅ mob-merger:无冲突(不同系统)
- ✅ Jade:无冲突
- ✅ 任何 Create 附属模组:应可工作(仅使用 Create 基础类)
环境
- 服务端:主要优化(动力、流体、机械装置跳过)
- 客户端:渲染剔除和粒子抑制
- 可在任意一端或两端安装
安全性与保证
本模组不会做以下事情:
- ❌ 不会改变 Create 的计算或算法
- ❌ 不会改变转速、应力值或流体数量
- ❌ 不会影响机械装置的碰撞或移动路径
- ❌ 不会修改配方或处理时间
- ❌ 不会改变风扇物品处理逻辑(仅拆分超堆叠)
已测试场景:
- ✅ 大型动力网络(500+ 方块)保持稳定
- ✅ 复杂流体系统继续正确平衡
- ✅ 玩家接近时机械装置立即恢复
- ✅ 超堆叠风扇处理保持正确比例
- ✅ 无实体复制或物品丢失
- ✅ 红石集成正常工作
安装
- 确保已安装 Fabric Loader 和 Fabric API
- 安装 Create 模组
- (可选)安装 item-merger 以获得超堆叠支持
- 下载 Create Optimizer .jar 文件
- 放入
mods文件夹(服务端和/或客户端) - 重启
注意: 需要在 build.gradle 中引用本地的 Create jar,或将依赖修改为使用 Maven 仓库。
配置调优
保守(安全)
KINETIC_UPDATE_INTERVAL = 2
FLUID_PIPE_INTERVAL = 2
SKIP_TICK_PLAYER_DISTANCE = 64.0
效果:TPS 提升 30-40%,无游戏玩法改变
激进(高级用户)
KINETIC_UPDATE_INTERVAL = 3
FLUID_PIPE_INTERVAL = 3
SKIP_TICK_PLAYER_DISTANCE = 96.0
效果:TPS 提升 50-60%,机器响应略有延迟
极限性能(测试)
KINETIC_UPDATE_INTERVAL = 4
FLUID_PIPE_INTERVAL = 4
SKIP_TICK_PLAYER_DISTANCE = 128.0
效果:TPS 提升 60-70%,快速机器上会感觉到明显延迟
已知限制
- 配置需要重新编译(尚无运行时配置)
- Mixin 注入针对特定方法名(可能因 Create 大版本更新而失效)
- 风扇超堆叠处理每周期会产生 1 个实体生成(成本极小)
- 机械装置距离跳过可能导致重新进入范围时出现短暂的“卡顿”(罕见)
未来增强
- 通过 TOML 文件进行运行时配置
- 按维度优化的配置文件
- 基于服务器 TPS 的自适应节流
- 与其他 Create 优化模组的集成
- Flywheel 渲染优化
许可证
MIT 许可证 - 详情请见 LICENSE 文件
鸣谢
由 Julia 创作 专为高性能 Create 模组服务器和大型自动化装置设计
支持
如果遇到 Create Optimizer 的问题:
- 确保 Create 版本为 0.5.1+
- 检查 Fabric API 是否为最新版本
- 验证配置值是否合理
- 使用最小模组设置进行测试以隔离冲突
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。