Catalog / Minecraft Mods / Create Optimized Trains
Create Optimized Trains

Create Optimized Trains

Performance optimization addon for Create Mod trains — LOD system, safe multi-threading, tick throttling, render optimization, and backported fixes from Create 6.0.9+.

⬇ Download on CurseForge
⚠️ ATTENTION: THIS MOD IS STILL IN BETA! PLEASE BACK UP YOUR MAP BEFORE USING THE MOD!

Features

1. LOD (Level of Detail) FULL → MEDIUM → LOW → GHOST based on distance
2. Carriage Grouping Merges carriages into logical TrainGroup
3. Safe Multi-threading Route calc, collision prediction on secondary thread
4. Tick Throttling FULL: every tick, GHOST: every 20 ticks
5. Render Optimization Disables animations, particles for distant trains
6. Proxy Entities Lightweight entity replaces dozens of contraptions
7. Smart Chunk Loading Pre-loads ahead, unloads behind, anti-thrashing
8. Physics Optimization Simplified physics for distant carriages
9. Networking Optimization Delta compression, batched packets
10. Priority System EXPRESS > PASSENGER > FREIGHT > LOW
11. Performance Monitor Dynamic adjustments based on TPS

Configuration

File: create_optimized_trains-common.toml

All features are individually configurable with distances, intervals and toggles.

Backported Fixes from Create 6.0.9+

Create 6.0.9 (for Minecraft 1.21.1) introduced several important fixes that were never backported to 1.20.1. Since 1.20.1 is no longer receiving updates from the Create team, this mod backports the following fixes:

Contraption Collision Box GC Pressure (#6902)

Original problem: When train doors open/close at a station, gatherBBsOffThread() combines ALL block collision shapes into a single VoxelShape using Shapes.joinUnoptimized() — an O(n²) operation that creates massive temporary objects. The garbage collector can't keep up, causing lag spikes of 1-30+ seconds.

Our fix: Replaces the collision gathering algorithm with the same O(n) approach used in Create 6.0.9. Instead of joining VoxelShapes, it collects AABBs directly from each block's collision shape — no intermediate allocations, no GC pressure.

Train Stutter from carriageWaitingForChunks

Original problem: In Train.tick(), when a carriage enters an unloaded chunk, Create sets carriageWaitingForChunks which forces speed = 0 until the chunk finishes loading. This causes 0.5-1.5 second freezes.

Our fix: TrainMixin redirects all reads of carriageWaitingForChunks to always return -1, combined with Smart Chunk Loading (pre-loading chunks ahead).

Collision Check Performance

Original problem: collideWithOtherTrains() runs every tick for every train — expensive on maps with 20+ trains.

Our fix: Throttles collision checks adaptively based on server performance — every 4 ticks normally, every 8 when degraded, every 12 when critical.

Dependencies

  • Minecraft 1.20.1
  • Forge 47.1.33+
  • Create Mod 6.0.8+
  • Flywheel 1.0.6+ (bundled with Create)

About Us

Publisher: GreenToastSoftware Games® — ©GreenToastSoftware Corporation. All rights reserved 2020-2026.