Automatic per-player position persistence for Farming Simulator 25.
FS25_PlayerLastPosition ensures that each player reconnects exactly where they disconnected — independently of the server save cycle. Designed for realism-focused multiplayer servers, contractor gameplay, and dedicated environments where positional continuity matters.
- Captures player position and rotation instantly on disconnect
- Saves position on game save to handle singleplayer Alt+F4 edge case
- Supports on-foot and in-vehicle scenarios (exit node or vehicle root with offset)
- Stores data per unique user ID with nickname and userId fallbacks
- No dependency on manual savegame operations
- Teleports player only after engine spawn finalization
- Detects when player leaves engine parking zone (
y > -100) - 15-second timeout as safety fallback
- Applies terrain height safety check to prevent sinking into ground
- Restores both position and rotation
- Server-authoritative restore logic
- No periodic background saves
- Event-driven execution only (disconnect hook + spawn detection)
- Frame polling active only while restores are pending
- Negligible performance impact
- Fully compatible with dedicated servers
- No client-side installation required
- Independent per-player XML storage in modSettings
- Savegame slot isolation with generation system to prevent stale data
Download from the official Farming Simulator ModHub (when published).
- Place
FS25_PlayerLastPosition.zipinside your FS25mods/directory - Launch Farming Simulator 25
- Activate the mod in the mod selection screen
- No configuration required
When a player leaves the server:
- Position is captured from
rootNodeor vehicle exit point - Rotation (yaw) is captured
- Data is written instantly to XML
When the game saves (manual or autosave):
- All connected players' positions are persisted via
Player.createDatahook - Ensures position recovery after singleplayer Alt+F4
When a player rejoins:
- Stored position is loaded and validated against current generation
- Engine spawn completion is detected (player leaves parking zone)
- Player is teleported to last known valid position with correct rotation
[UserProfile]/modSettings/FS25_PlayerLastPosition/savegame<index>/<uniqueUserId>.xml
Each player has an independent file, scoped per savegame slot. A generation counter prevents stale positions from previous savegame resets.
- Service layer —
PlayerLastPositionServicehandles lifecycle hooks and restore logic - Repository layer —
PlayerLastPositionRepositorymanages XML persistence and generation tracking - Bootstrap —
Main.luawires mission lifecycle hooks
Player.delete(prepended) — capture position before vehicle ejection on disconnectPlayer.createData(overwritten) — capture position during engine serialization (savegame writes)FSBaseMission.update(appended) — detect spawn completion and execute pending restores
Engine temporary spawn position: 0, -200, 0
Restore triggers only when playerY > -100, preventing premature teleport during spawn parking phase. Terrain height safety ensures safeY = max(savedY, terrainY + 0.2).
- Save position on game save to handle singleplayer Alt+F4 edge case
- Fix player rotation not being restored on reconnect
- Fix saved positions being shared across different savegames
- Initial release
- Issues: GitHub Issues
- Discussions: GitHub Discussions
All Rights Reserved © 2026 Squallqt
Squallqt
Systems Administrator & FS25 Mod Developer
Not affiliated with or endorsed by GIANTS Software GmbH