The most straightforward way I could see of doing it is to have a stationary ship somewhere in the world with everything that is inside the ship within it. Then, a proxy ship, which travels through the world, but nothing on that ship simulates physics or moves. The player camera is on the proxy ship, but the controlled pawn is on the static ship.
Now if player jumps on the static ship, the character on the proxy ship won’t jump like they would with a CMC, but rather they just update their location and animation to mirror that of the character on the stationary ship that is doing the real jumping. The character’s position relative to the ship in both locations remains the same.
While I could see this being doable in blueprints, if I were to ever build it I’d rather do it in C++.