Instead of moving the core block could there be a tool that just moves the entire ship around the core?
This is exactly what I came in here to say.
Everyone's being to two-dimensional about this. If You need to move the ship core, You don't
actually have to move the core, just move everything else around it.
We can already do this manually with the advanced build mode's Copy/Paste and template system, but for the player to do this through the current GUI is slow, clumsy, unrefined, and unsuitable for large areas.
However, there's nothing stopping the devs from putting together an interface that does this for the player, as what the player sees, and what's actually happening program-side can be two different things, leading to the same conclusion.
POORLY THOUGHT OUT LAYMAN'S EXAMPLE:
1: Player enters "Core Re-locator Mode".
2: CRM shows a flashing block frame with a "SELECT NEW CORE LOCATION" message. The player moves to / points at where on the entity They want the core to go, and clicks.
WHAT THE PLAYER SEES: The ship core disappears from it's original location, and appears at it's new, player-selected location. OR The whole entity disappears, then renders back in, chunk by chunk (Like a chunk refresh), with the core in it's new location.
WHAT'S REALLY HAPPENING: The game engine copies the entire entity into a new temporary template, deletes everything on the entity (save for the core itself, of course), loads the temporary template, enters a "Paste Mode" of sorts, shifts the template around XYZ according to the "new" location of the core, Pastes the template in, and presto, You ship's core has been relocated.
The process need not be instantaneous, a message saying something along the lines of "CORE RELOCATION IN PROGRESS, PLEASE WAIT" can be displayed so the player knows the game's working on it (because You know someones going to use this on Their 1km long titan, which'l probibly take a minute for the game to sort out).
In other words, this:
To the player, it will appear as if the core has moved, and essentially it has, just instead of actually moving the core to a new co-ord on a pre-existing entity, every block associated with the core has been removed, and "new" blocks were associated with (placed on) it.
It's a bit like My previous line of work, SMT machine operation: Some machines build a circuit board by holding an empty board in one place, and using multi-axis heads to move to where the raw parts are, picking them, then travel to where on the board they belong, while other machines build a board by
moving the board itself and the raw parts storage around on multi-axis tables, while the pick/place head just rotates around in one spot. Different means of accomplishing the same thing.
Another example would be when We had to alter the placement data of a certain part being placed on a board so that it would be pushed deeper into the solder paste then usual; Often We couldn't just tell the machines to move the pick/place head any further due to various reasons, so We'd just alter the part data in the build program and make the machines think the part was shorter then it really was by the amount of additional travel We needed, so the head would travel further down it's Z-axis, pushing the part deeper into the solder paste as We intended.
We accomplished the same goal via alternate means.