TiM, what is it, and how's progress?

Trains in Motion, better known as TiM, is a new mod in development to fix TC's bigger bugs, add dozens of new features, and give the community far more capability to add to the mod.

The goal is generally basic, A mod that provides some HIGHLY customizeable vanilla sized rails and the back-end to make all kinds of trains and rollingstock work, without actually containing any trains or stock.
Seems kinda stupid without context, all rails no trains.
But there's good reason, mods like Traincraft will be able to rely on TiM as a dependency for all their under-workings, a separate mod to do all the hard work for it. Simplifying several thousand lines of code, down to a few hundred that are roughly as simple as the average config.
This makes it not only simpler for us, but simpler for other users that want to add content to Traincraft, or even allow their trains and other content to be used without Traincraft.
It also ensures universal compatibility, so that way you never have to worry what pack works with what other pack.

And in addition to that, Traincraft has always had a community at the lower end of the computing spectrum, and TiM goes to some crazy extents to cater to that, Entire methods that forge/minecraft normally does for us have been reworked from the ground up, or avoided completely, which has provided some substantial performance improvements.
I come from a decade old, long since dead, programming practice, the likes that is probably only remembered by Linus Torvalds.
Back in my day we had to get very creative to preserve every byte of RAM and bandwidth alongside every CPU cycle that we could, because the hardware of the time was weak, we couldn't afford to do it the stupid "trendy" ways like brigadier and many modern developers do now.
And I've done well to carry that into TiM, because I don't want our users to need a next-gen computer for the next-gen of Traincraft.



So then the question remains, where does it stand now?
The mod has been in development since June of 2016, dang, where's the time gone...
In that Time here's how far we got.

- Basic movement logic: this covers every train and stock having two specific points that are able to follow paths individually at any speed without changing distance from eachother, or losing track of every rail that passed under it even when going faster than a block per tick. This was done to an extent and detail that we could never get close to in Traincraft.

- Full animations and particles: wheels spinning, valve gears going, 3d smoke steam and even sparks. Doors opening and closing, lamps shining down the rails. A lot of detail has been put into the new animations and particles, And don't worry about an FPS hit, it takes roughly 400 of these things to cause the same framedrop as a single vanilla 2d particle from a torch. And you can turn them off in the settings anyway.

- Linking mechanics: We're finally gonna support linking stuff to the front end of trains, the new linking mechanics are completely independent from the collisions this time around, no more accordions, and they intertwine directly with the movement, meaning no more cars falling behind at high speeds, and less of a performance hit. The new system is fully based on UUID's so no more mistaking the wrong stock when loading. And to top off all that, you'll finally be able to couple and decouple the front and back of trains and stock independently.

- Multiple passengers: Fun trivia, boats in 1.9 weren't the first to implement multiple passenger systems, Traincraft did it way back in 1.3, but it wasn't very reliable so they removed it. With TiM we will once again have support for multiple passengers, and even passengers in trains, or, I guess that makes them trams.

- New GUI's and mixed stock types: Just like how some trains can have passengers, other stock can be mixed too. Currently in Traincraft 017 and later we have the DRG Combo car, but it's not a true combo car, we can only make it passenger or freight, in a similar stance we have the rheingold diner cars, they are passengers with kitchens you cant cook in. With TiM we'll be able to make them able to do both jobs they were meant to, at the same time through a heavily reworked GUI system, which is also designed to use the default textures, that way your ancient texturepack you've been nursing from 1.5 will have full support out of the box day 1.
Or is that just me? I've been nursing steelfeathers....

- Multiple forge versions: There's a lot of work gone into reworking forge methods, but it's not just for performance, forge likes to change things a lot, and the less of their stuff we rely on, the easier it is to port the code from version to version. We currently have plans to support 1.7.10, 1.8.9, 1.9, 1.10, and 1.12. However 1.13 is still unconfirmed as we're not sure how horribly they will destroy the API there, and 1.14 is not planned for support because of how horribly the API is destroyed, even basic stuff is a pain to do in that thing because the devs want the code to be trendy.
What they need as a pre-psych ward Linus Torvalds, because 1.14 is just cancer from concentrate, the community, the API, everything.


- More to come:
Currently I am in the process of reworking the rails, I already finished all the core stuff, now it's just finishing the procedural generation and cleaning up. The new rails are fully procedural generated as a bezier curve from 3 or 4 points, both the path the trains follow, and the model to display it. Segmented into 3 points per block, it's smooth without feeling out of place in the game. And you will be able to change it with any block you like for ballast and ties, along with any ingot you like for the rails, with the stats of the block effecting the stats of the rails.
These new rails are also fully compatible with anything that can use vanilla rails, including Railcraft, Steves carts, and current releases of TC.

You'll also be presented with an option in your config file that lets you choose the style of rail, 2d like vanilla, a very basic 3d, something that's closer to TC currently, and something that's a bit more realistic.
 
After that's out of the way I need to work on the hitboxes, the goal is something completely new to minecraft, rotating hitboxes. Plans are to have one actual hitbox per train/stock, and a number of "simulated" hitboxes, so when you interact with the main hitbox it can figure out from a ray trace what seat you are trying to get on, or which coupler you are trying to open/close.

Recipes still need doing, for trains and stock its a simple registry like minecraft 1.7 does, which will allow for similar crafting to what TC always had, but with support for crafting entire stacks at once alongside support for item filters and automation via 3rd party mods, like what can be done with the vanilla workbench.
Rails get a bit more complex as they won't have defined recipes instead you'll provide the ballast material (if any), the rail material, and the tie material (if any), from there a GUI will let you customize the length, shape, incline, gauge, and a bunch of other stuff, this is on top of the features of the base crafting table.
NOTE: Traincraft will only implement 750mm and a couple forms of monorail, but other add-ons can use the rail API to add new gauges.
There's also plans to work on a new craft guide, yes NEI/TMI/JEI will finally be supported, but that can't even begin to provide as much info as a well made book. The book will also have full support for any add-ons, alongside indexing, and later on a search feature. Everything in one convenient and organized place.

And the last part before the first alpha is a fully new render, we are working in collaboration with Fexcraft to implement a new render that has all the features of flans, and a bunch more, alongside a new modeling tool that should be easier to work with than SMP Toolbox.

That sounds like a lot of work to go, but current plans are to have the first alpha, which is the rails and some temporary testing trains/stock, released sometime before the end of this year.