I managed to recently do a big re-work to dramatically simplify time-based operations. I also added in the basis of the crafting system, at least for simple cases. Still, I have a pretty good idea of how to extend it to handle other systems like crafting stations or fuelled systems.
Movement is also mostly into the right shape, although things like gravity are still required. At least I have a reasonable idea of how I am going to do that (every entity will probably get a sort of "apply environment" change scheduled in each tick, or something).
However, before fleshing out any other mechanics I do want to get the basics of the UI working. This will finally allow the rest of the work to be built in a truly top-down fashion.
The plan for the initial UI is very simple: Only consider 3 layers (below, your level, above) in the 3x3 cuboids centred around the player entity (zoomed such that only 1 cuboid is on screen at a time). Basic navigation will be implemented by hooking key events during frame render and passing that down to the ClientRunner (which is the top of the client-side logic exposed by the core framework). Updates to the entity and the loaded cuboids will be sent from the SpeculativeProjection and received by the renderer to update the view on the next frame. My earlier LibGDX experiments were promising so this should mean relatively few unknowns in getting up and running. Still, UI and graphics are not my strong suit so this will be a little painful.
Non-trivial work ahead but at least I have a pretty good plan for it,
Jeff.