- Trains now play a sound sequence based on attached blocks when arriving at a station after travelling for some time
- Trains can now be stalled by movement behaviours of mounted blocks
- Fixed bells constantly activating when mounted to a train
- Max train length is now configurable and substantially longer
- Increased distance at which activated whistles can be heard
- Super glue captured by schematics or /c clone now gets cropped to the selected boundary
- Controlled contraptions now save their anchor block position in relative coords
- Refactor the ArmInteractionPoint system
- ArmInteractionPointTypes are now used instead of instances
- Point types can now have a priority that determines the primary type
at a certain location
- Points can now deserialize arbitrary data
- Points' cached BlockState is now updated before it is used
- Points now store the Level directly
- Default types are now registered in AllArmInteractionPointTypes
- Add point types for campfires and respawn anchors
- Fix arms being able to insert any item into composters
- Delete unused flag models and texture
- Make all BehaviorType instances final
- Encased fans can no longer provide stress capacity as generators
- Removed the Furnace Engine
- Added Kryppers' new Flywheel model
- Fixed inverted stress capacity labels in tooltips
- Removed speed requirements from tooltips
- Fixed belt tickers not properly being removed when parts of the belts are destroyed
- Track curves now drop items when destroyed
- Track curves now spawn particles when destroyed
- Fixed tamed wolves not accepting schedules when driving a train
- Fixed girders not being consumed when placing girder tracks
- Fixed break-overlay of connected tracks not going away after track is destroyed
- Fixed train relocation not working
- Train relocation now works on selected beziers
- Fixed trains with driverless backward controls not navigating forward
- Fixed trains not properly stopped by dead ends
- Fixed tracks not separating edges meeting at 45 degrees
- Assembly screen now shows whether any drives are present on the train
- Track placement and pavement now checks and consumes inventory items in survival mode
- Fixed signaling edge groups not being cleared when a signal migrates graphs
- Graphs without any signals now create a fallback group
- Fixed removed signals not clearing signal groups of previously affected edges
- Signaling sections now use a fixed set of colours
- Colours of signaling sections now try to be distinct from neighbouring sections
- Colours of signal sections now get synched to the client
- Edges now keep track of any intersections with bezier turns that cannot be part of the underlying graph structure
- Signaling sections now consider all other intersecting sections when checking whether they are occupied
- Holding a signal block now highlights nearby tracks with their respective section colour
- Graphs now keep track of a boundary box
- Track edges now carry back-references to their nodes
- Graph debugger moved from keypress to f3
- Signals and Stations can no longer share a location on a track
- Multiple stations can no longer share a location on a track
- Signals and Stations now render their overlay during the track selection process
- Train Navigation can no longer approach or pass through stations currently in assembly mode
- Station screen now displays whether trains can be (dis-)assembled
- Bezier turn segments between tracks can now be hovered as if they were blocks
- Bezier turns can now be destroyed by breaking any of their segments
- Signals and Stations can now be pointed to anywhere on a track, not only to physical blocks
- Added a basic collision shape for straight tracks
- Schedules now display stops in their tooltip
- Schedules can now be given a name through one of their instructions
- Fixed Display boards rendering cogs on the wrong axis
- Cats and Wolves will now sit down properly on seats
- Adjusted some vertical offsets for seated passengers
- Driver entities will now wear a hat when their train is given a schedule