UNSTUCK_CHARACTER
Move a stuck character to recovery coordinates
Moves a character that can no longer move itself back to a town. It is offered to players as a self-service button, so it has to be safe to press without a GM watching.
| Result | Meaning |
|---|---|
UNSTUCK | The character was moved, or the move was queued |
CHARACTER_ONLINE | Refused: this setup can only move a logged-out character |
CHARACTER_OFFLINE | Refused: this setup can only move a character who is in the world |
NOT_FOUND | That account does not own that character |
FAILED | The operation could not be completed |
Always match on both the account and the character id. A character id alone is guessable, and nothing else downstream checks whose character it is.
Implementing it
String unstuck(String accountName, int characterId) throws Exception;Check the character is offline, then update its saved coordinates. Both reference implementations
read the destination from config/portal.properties — Unstuck.X, Unstuck.Y, Unstuck.Z,
defaulting to Giran on retail coordinates:
#Unstuck.X=82698
#Unstuck.Y=148638
#Unstuck.Z=-3473The connector core parses them for you: after PortalConfig.load() they sit on the
public fields PortalConfig.UNSTUCK_X,
PortalConfig.UNSTUCK_Y and PortalConfig.UNSTUCK_Z, defaults included — no properties parsing
in the bridge:
final int x = net.forgeport.connector.PortalConfig.UNSTUCK_X;
final int y = net.forgeport.connector.PortalConfig.UNSTUCK_Y;
final int z = net.forgeport.connector.PortalConfig.UNSTUCK_Z;Moving the town is a config edit, not a rebuild — a town that exists on one chronicle is open water on another, so check the coordinates against your own map. A bridge that hardcodes its own still works.
Only while the character is logged out
A logged-in player owns its position in memory and writes it back on the next save, so a move
applied underneath it is silently discarded — or worse, half-applied. CHARACTER_ONLINE is a
refusal, not a failure: the request worked and the answer was no.
Verification
Connector check runs the real operation. An offline test character will be moved, so use one
you do not mind relocating. Where the setup refuses an online character, that refusal comes back as
CHARACTER_ONLINE and confirms the round trip without touching anything.