
Stellar Create Optimization
Stellar Create Optimization is a performance-focused addon for Create 6.0.x. It delivers substantial improvements to both client-side FPS/rendering performance and server-side tick performance, especially in large automated factories, while preserving Create’s gameplay behavior, animations, and compatibility fallbacks. If you have good ideas or suggestions, you can send them to [email protected]
Client-Side Optimizations
- Chutes: Transported items use persistent Flywheel instances, cached static models, frustum culling, distance-based animation simplification, and reduced instance uploads. Bulk vertex and shader-fallback paths use Embeddium/Oculus on Forge 1.20.1 and Sodium/Iris on NeoForge 1.21.1, with safe fallback for dynamic or unsupported items.
- Transport Belts: Belt items use stable multi-tier distance LOD, cached flat far models, bounded model/light lookups, reduced stack copies, and shader-aware fake-shadow culling. On both supported platforms, stable fallback-rendered belt bodies use persistent GPU buffers with exact scrolling UVs and resource/world invalidation; dynamic, custom, multi-pass, foil, package, and incompatible models remain on Create's original renderer. Stable client-side belt ticking also reuses one server-speed snapshot per tick, invalidates render bounds only when belt length changes, and safely bypasses stock no-op behaviour and idle kinetic-effect work.
- Factory Gauges: Panels are indexed by logistics frequency, outline geometry is cached, and thousands of individual outlines are combined into a single GPU buffer that only rebuilds when the visible set changes.
- Encased Fans: Airflow particles use distance-based 80%/50%/25% retention, a maximum of 96 particles per tick, cached lighting, and reused airflow queries.
- Blaze Burners: Full ambient particles are retained within 16 blocks, reduced to 25% between 16–32 blocks, and disabled beyond 32 blocks. Stable animation ticks are skipped, overhead checks are cached, idle burners update at reduced rates, and distant head/rod transforms are frozen while shader-animated flames continue moving normally.
- Flywheel with Shaders / Kinetic Machines: Both platforms reuse persistent GPU geometry for mixers, presses, and crafters while keeping animation matrices dynamic and omitting their expensive shader-shadow pass by default. Forge uses Embeddium + Oculus and NeoForge uses Sodium + Iris, with native Catnip and optional CreateBetterFPS adapters.
- Small and Large Water Wheels: Both platforms cache complete static wheel geometry in persistent shader-compatible GPU buffers and keep rotation exact through per-instance transforms. Forge 1.20.1 uses Embeddium + Oculus; NeoForge 1.21.1 uses Sodium + Iris. CreateBetterFPS is optional for this path. The expensive shader shadow pass is omitted by default; unsupported states and subclasses use Create's original renderer.
- Chain Conveyors: Connection geometry, near/far LOD vertices, normals, bounds, and target positions are compiled only when a connection changes. Rendering uses cached connection arrays, per-frame culling and lighting, platform-native bulk vertex writes (Embeddium on Forge, Sodium on NeoForge), batched chain buffers, and an optional zero-distance shader-shadow path. This removes the original per-frame Set/Map traversal, transform-stack construction, per-connection matrix multiplication, and repeated RenderType lookups while retaining moving textures, endpoint lighting, guards, transported packages, and compatibility fallbacks.
- Shafts and Rotating Machinery: Flywheel instances are no longer marked dirty or uploaded when their color has not changed. Client-side kinetic block entities also call their original audio tick directly, removing repeated
DistExecutor and supplier dispatch overhead without changing sound behavior.
- Fluid Tanks: Luminosity updates are intelligently skipped when the fluid's light level hasn't actually changed, reducing redundant lighting recalculations in large tank networks.
- Steam Engines: Steam jet particles respect density and distance settings, with sound effects culled beyond configured distances to reduce client-side audio overhead.
- Display Boards: Stable text compiles to cached glyph commands; whole-board visibility and conservative shell occlusion reduce redundant work. Shader-fallback cogwheels use persistent VBOs and compatible rigid-instance draws.
- Millstones and Shafts: Cached render types and models, exact per-instance rotation, stable millstone distance LOD, and optional shader-shadow omission reduce fallback rendering cost.
- Particles and Visual Effects: Repeated particle, lighting, animation, matrix, and buffer operations are reduced across dense Create machinery without removing important close-range effects.
Stress-Test Comparison
| Stress-test hotspot |
Without SCO |
With SCO |
Improvement |
| Chutes |
2–3 FPS |
22–26 FPS |
Approx. +860% |
| Frogports |
1 FPS |
21–26 FPS |
Approx. +2,250% |
| Flap Displays |
0–1 FPS |
57–65 FPS |
Approx. +12,100% |
| Transport Belts |
3–5 FPS |
20–25 FPS |
Approx. +463% |
| Factory Gauges |
12–13 FPS |
124–127 FPS |
Approx. +904% |
| Chain Conveyors |
4–5 FPS |
30–37 FPS |
Approx. +644% |
| Millstones |
0–1 FPS |
45–50 FPS |
Approx. +9,400% |
| Cogwheels |
1 FPS |
22–30 FPS |
Approx. +2,500% |
| Blaze Burners |
0–3 FPS |
36–40 FPS |
Approx. +2,433% |
| Steam Engines |
18–21 FPS |
38–50 FPS |
Approx. +126% |
| Water Wheels |
0–2 FPS |
100–115 FPS |
Approx. +10,650% |
| Shafts |
3–4 FPS |
35–38 FPS |
Approx. +943% |
| Mechanical Arms |
6–8 FPS |
87–97 FPS |
Approx. +1,214% |
| Mechanical Pumps |
0–1 FPS |
29–33 FPS |
Approx. +6,100% |
Results were measured in large stress-test scenes under fixed shader settings. Actual improvements depend on hardware, factory size, shaders, and the installed modpack.
Server-Side Optimizations
- Chutes: Empty transport work and unused behavior ticks are skipped, while target chutes and missing inventory capabilities are cached with safe invalidation and periodic retries.
- Encased Fans: Air currents rebuild only after relevant blocks, chunks, speed, or fan states change. Processing types and airflow results are cached, avoiding repeated scans and unnecessary synchronization.
- Mechanical Pumps: Pipe-network endpoint reachability is memoized during pressure propagation, preventing multiple branches from repeatedly traversing the same fluid network.
- Kinetic Networks: Connected neighbors and gear-speed modifiers are cached during propagation, duplicate graph entries are removed, and repeated block-entity synchronization is batched.
- Factory Logistics: Promised item totals, unloaded logistics-link counts, and restocker storage levels are cached within safe tick boundaries, reducing repeated network and inventory scans.
- Cogwheels: Duplicate diagonal gear checks are eliminated while preserving advancement and connection behavior.
- Fluid Tanks: Controller references are cached with smart invalidation, significantly reducing block entity queries in multi-block tank structures.
- Boilers: Update frequency is now configurable, allowing you to balance between performance and responsiveness based on your needs.
- Steam Engines: Component lookups (tank and shaft references) are cached to reduce redundant weak reference validation and block entity queries.
- Chain Conveyors: Server-side interaction shapes are no longer rebuilt, cached client shapes are reused until connection data changes, and package world-position updates are skipped when no packages are present.
Server-Side Benchmark Results
| Stress-test hotspot |
Without SCO |
With SCO |
Improvement |
| Chute server tick |
100% |
Approx. 55% |
Approx. -45% |
| Encased Fan server tick |
100% |
Approx. 5%–30% |
Approx. -70% to -95% |
Server-side figures use the unoptimized tick cost as a 100% baseline; lower is better.
Compatibility
- Tested with Create 6.0.8; theoretically compatible with Create 6.0.x.
- Minecraft 1.20.1 Forge and 1.21.1 NeoForge
- Renderer compatibility is platform-specific: Embeddium + Oculus on Forge 1.20.1; Sodium + Iris on NeoForge 1.21.1; shared integrations include Flywheel, CreateBetterFPS, irisflw, and Flerovium.
Chinese Description:
Stellar Create Optimization
Stellar Create Optimization 是面向Create 6.0.x 的性能优化附属模组。它同时显著改善大型自动化工厂中的客户端帧率与渲染性能和服务端 Tick 性能,并尽可能保持 Create 原有玩法、动画效果和兼容回退。
客户端优化
- 溜槽(Chute): 运输物品改用持久化 Flywheel 实例、静态模型缓存、视锥剔除和远距离动画简化,仅在位置或模型发生变化时上传实例数据。Forge 1.20.1 使用 Embeddium/Oculus,NeoForge 1.21.1 使用 Sodium/Iris;动态或不兼容物品会安全回退至原版渲染。
- 传送带: 运输物品使用稳定的多级距离 LOD、远距离平面模型缓存、有界模型/光照查询、堆叠副本削减以及感知光影阶段的假阴影剔除。两个平台的稳定回退渲染都会为传送带本体复用持久化 GPU 缓冲,保持精确滚动 UV,并在资源重载或切换世界时安全失效;动态、自定义、多 Pass、附魔光效、包裹及不兼容模型仍走 Create 原始渲染器。稳定的客户端传送带还会在每 Tick 复用一次服务器速度快照,仅在传送带长度变化时刷新渲染包围盒,并安全跳过原版空操作 Behaviour 与空闲动力特效开销。
- 工厂仪表: 按物流频率索引仪表并缓存轮廓几何,将大量独立轮廓合并进同一个 GPU 顶点缓冲,仅在可见集合发生变化时重建。
- 鼓风机: 气流粒子按距离保留 80%/50%/25%,每 Tick 最多生成 96 个,同时缓存光照、气流和处理类型查询。
- 烈焰人燃烧室: 16 格内保留完整环境粒子,16~32 格降低至四分之一,32 格外停止生成。稳定状态会跳过重复动画 Tick,并缓存上方方块检查;远距离冻结头部和燃烧棒矩阵,但火焰纹理仍由着色器正常滚动。
- 光影下的 Flywheel / 动力机械: 搅拌器、冲压机和机械合成器复用持久 GPU 几何,动画矩阵逐帧保持准确,默认省略高开销光影阴影。Forge 使用 Embeddium + Oculus,NeoForge 使用 Sodium + Iris,支持原生 Catnip 及可选 CreateBetterFPS 适配。
- 大小水车: 两个平台均缓存完整静态水车网格到持久化 GPU 缓冲,并用每实例矩阵保持准确旋转。Forge 1.20.1 使用 Embeddium + Oculus,NeoForge 1.21.1 使用 Sodium + Iris;该路径不强制依赖 CreateBetterFPS。默认省略高开销的光影阴影 Pass,不支持的状态或子类继续使用 Create 原始渲染器。
- 锁链传动轮: 连接发生变化时才编译连接几何、远近距离 LOD 顶点、法线、包围范围和目标位置。渲染阶段使用缓存连接数组、逐帧剔除与光照缓存、平台原生批量顶点写入(Forge 使用 Embeddium,NeoForge 使用 Sodium)、锁链缓冲批处理,并支持零距离跳过光影阴影通道。移除原版每帧 Set/Map 遍历、变换栈构建、逐连接矩阵乘法及重复 RenderType 查询,同时保留动态纹理、端点光照、护栏、运输包裹和兼容回退。
- 传动杆及旋转机械: 实例颜色没有变化时,不再重复调用
setChanged() 或上传相同数据。客户端动能方块直接执行原版音频 Tick,移除每 Tick 的 DistExecutor 和 Supplier 分发开销,同时保持声音行为不变。
- 流体储罐: 智能跳过不必要的亮度更新——仅当流体光照等级实际变化时才执行光照重计算,减少大型储罐网络中的冗余开销。
- 蒸汽引擎: 蒸汽喷射粒子遵循密度和距离设置,音效超出配置距离后自动剔除,减少客户端音频负载。
- 显示板: 稳定文字编译为缓存字形命令,按完整板边界剔除,并保守判断内齿轮是否被板壳遮挡。光影回退齿轮采用持久 VBO 和兼容的刚体实例批绘。
- 石磨与传动杆: 缓存渲染类型和模型,保留准确旋转;石磨内齿轮使用稳定距离 LOD,并可省略光影阴影。
- 粒子与视觉效果: 减少密集机械场景中重复的粒子、光照、动画矩阵和缓冲上传操作,同时保留近距离重要视觉效果。
压力测试对比
| 压力测试热点 |
无 SCO |
有 SCO |
提升 |
| 溜槽 |
2~3 帧 |
22~26 帧 |
约 +860% |
| 蛙港 |
1 帧 |
21~26 帧 |
约 +2,250% |
| 翻牌显示器 |
0~1 帧 |
57~65 帧 |
约 +12,100% |
| 传送带 |
3~5 帧 |
20~25 帧 |
约 +463% |
| 工厂仪表 |
12~13 帧 |
124~127 帧 |
约 +904% |
| 锁链传动轮 |
4~5 帧 |
30~37 帧 |
约 +644% |
| 石磨 |
0~1 帧 |
45~50 帧 |
约 +9,400% |
| 齿轮 |
1 帧 |
22~30 帧 |
约 +2,500% |
| 烈焰人燃烧室 |
0~3 帧 |
36~40 帧 |
约 +2,433% |
| 蒸汽引擎 |
18~21 帧 |
38~50 帧 |
约 +126% |
| 水车 |
0~2 帧 |
100~115 帧 |
约 +10,650% |
| 传动杆 |
3~4 帧 |
35~38 帧 |
约 +943% |
| 动力臂 |
6~8 帧 |
87~97 帧 |
约 +1,214% |
| 动力泵 |
0~1 帧 |
29~33 帧 |
约 +6,100% |
测试结果来自固定光影环境下的大型压力测试场景。实际提升会受到硬件、工厂规模、光影及整合包环境等多方面因素影响。
服务端优化
- 溜槽: 跳过空运输和无效 Behaviour Tick,并缓存目标溜槽及不存在的物品能力查询,通过方块更新和周期重试安全失效。
- 鼓风机: 仅在相关方块、区块、转速或风扇状态变化时重建气流,并缓存气流处理类型与结果,减少重复扫描和不必要的数据同步。
- 机械泵: 在压力传播期间缓存管道端点可达性,避免多条分支反复遍历同一片流体管网。
- 动力网络: 在动力传播期间缓存相邻设备和齿轮速度修正,去除重复图节点,并合并方块实体的重复同步请求。
- 工厂物流: 缓存物品承诺总数、未加载物流连接数量及补货仪表库存等级,减少重复的物流网络和库存扫描。
- 齿轮: 去除重复的对角齿轮检查,同时保持连接逻辑和进度触发行为不变。
- 流体储罐: 缓存控制器引用并智能失效,显著减少多方块储罐结构中的方块实体查询。
- 锅炉: 更新频率现可配置,允许根据需求在性能和响应速度之间平衡。
- 蒸汽引擎: 缓存组件查找(储罐和传动轴引用),减少冗余的弱引用验证和方块实体查询。
- 锁链传动轮: 服务端不再构建交互形状;客户端交互形状会复用到连接数据发生变化;没有运输包裹时跳过包裹世界坐标更新。
服务端实测结果
| 压力测试热点 |
无 SCO |
有 SCO |
优化效果 |
| 溜槽服务端 Tick |
100% |
约 55% |
约 -45% |
| 鼓风机服务端 Tick |
100% |
约 5%~30% |
约 -70%~-95% |
服务端数据以无 SCO 时的 Tick 开销为 100% 基准,数值越低越好。
兼容性
- 实测环境为 Create 6.0.8;理论兼容 Create 6.0.x。
- Minecraft 1.20.1 Forge 与 1.21.1 NeoForge
- 渲染器按平台适配:Forge 1.20.1 使用 Embeddium + Oculus,NeoForge 1.21.1 使用 Sodium + Iris;两端共同兼容 Flywheel、CreateBetterFPS、irisflw 和 Flerovium。