Links
Tags
Creators
Details
1.0.5-1.21.1
Compatibility
Changes
🚂 Railway Evolution v1.0.5 — [THE ECOSYSTEM & INTERSECTION OVERHAUL]
This update marks a significant architectural milestone, transforming Railway Evolution from an AI-train controller into a full-scale Traffic Ecosystem. By introducing the Event-Driven Perception Engine and Player-Train integration, we have achieved seamless traffic management where AI and players exist in the same environment.
✨ Key Features of v1.0.5:
- Ecosystem V2: A unified, event-driven perception engine allows AI to perceive player-controlled trains as dynamic traffic participants rather than obstacles.
- Flow Follower (Convoy Mode): AI trains now intelligently match the speed of the lead vehicle (player or AI), allowing for fluid, real-world traffic patterns without constant emergency braking.
- Deterministic Junction Priority: Replaced the legacy "first-come-first-served" logic with a distance-based "steal" mechanism, ensuring the closest train always has the right-of-way.
- Zero-Allocation Architecture: Massive backend refactor using
VarHandleand object pools, resulting in near-zero GC pressure during high-traffic ticks.
🛠 Technical Changelog (v1.0.5):
Perception & Ecosystem
- PerceptionEngine: New event-driven scanner using swept Bezier-sampling for precise curved track awareness.
- EcosystemRegistry: Centralized real-time registry for all entities (AI + Player-controlled).
- PlayerTrainHandle: Dedicated adapter that enables player-driven trains to be registered in the VBS and traffic registries.
- FSM v2: Implemented a new multi-layered State Machine with
Layer 1 (Player)→Layer 0 (Safety)authority model.
Intersection Logic
- JunctionReservationManager: Added distance-based stealing logic—trains now "steal" reservations if they are significantly closer (>3 blocks) to the intersection.
- Ghost Pass Logic: Trains yielding at an intersection now designate the winner, allowing the winner to perform a "ghost pass" through the yielding train.
Collision & Proximity Fixes
- Lateral Tolerance Optimization: Reduced lateral scanning distance from 8 to 3.5 blocks, eliminating phantom braking on parallel tracks.
- Omni-Zone Refinement: Omnidirectional detection range reduced from 8 to 5 blocks with strict
isOnSameTrack()filtering. - BFS Filtering: Fixed flickering where physical scans conflicted with BFS results; physical scans now only override BFS if a threat is 4+ blocks closer.
- Player Detection: Expanded detection radius for player-controlled trains to 20 blocks, bypassing strict graph-data filters to ensure the AI never loses sight of the player.
Refactor & Performance
- VarHandle Integration: Replaced reflective
Field.get()calls withVarHandlefor 5–10x faster primitive access. - State Machine Cleanup: Removed conflicting
forceStop()triggers from old state logic; unified FSM v2 as the primary authority.
📂 New Architecture Files:
ai/core/PerceptionEngine.java,ai/core/SafetyManager.java,ai/core/TrainControlContext.java,ai/core/ObstacleProfile.java,ai/adapter/EcosystemRegistry.java,ai/adapter/PlayerTrainHandle.java,ai/state/TrainControlStateMachine.java
🔮 Future Roadmap: Long-Term Support
With the v1.0.5 architecture now stabilized and fully modularized via the Adapter pattern, Railway Evolution enters a phase of long-term stable support. My primary focus is now maintaining this high-performance core across multiple versions of Minecraft and Create, ensuring your rail networks remain reliable for years to come. I am committed to deep, consistent maintenance to keep this project the gold standard for rail automation.
Developed by Fizzy_lovely (1xCodeTeam) — Making trains smarter, one line at a time.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:VcPwJKGX:kVo5DJ9v"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:VcPwJKGX:kVo5DJ9v"
}

