PlayerSync/src/main/java/vip/fubuki/playersync/util
laforetbrut c70ca9f464 Phase 4: 10-min periodic save + dimension-change trigger
Adds two new triggers that complement NeoForge's vanilla SaveToFile event:

PeriodicSaveService.java
  - Dedicated single-thread daemon scheduler, started after server boot.
  - Ticks every 'auto_save_interval_minutes' (config, default 10 min).
  - On each tick: hops to main thread, snapshots every online synced
    player via VanillaSync.snapshotAndQueueSave, async BG writes with full
    P0 guard stack (pendingLogoutSaves + online=0 + bgLock tryLock).
  - Set interval to 0 to disable.

VanillaSync.snapshotAndQueueSave(Player, String label)
  - Extracted from onPlayerSaveToFile body; public entry point shared by
    PeriodicSaveService, onPlayerChangeDimension, and the existing SaveToFile
    event. Label flows into logs for traceability (SaveToFile / PERIODIC / DIMENSION).

VanillaSync.onPlayerChangeDimension
  - New @SubscribeEvent on PlayerChangedDimensionEvent, gated by
    'save_on_dimension_change' config (default false). Queues a full save
    when a player teleports across dimensions, protecting against mid-
    teleport crashes.

JdbcConfig
  - Added AUTO_SAVE_INTERVAL_MINUTES (int, 0-1440, default 10)
  - Added SAVE_ON_DIMENSION_CHANGE (bool, default false)

VanillaSync.onServerShutdown also stops PeriodicSaveService before the pool
close, same pattern as HeartbeatService.
2026-04-22 06:01:55 +02:00
..
CrashRecovery.java Phase 3: anti-loss infrastructure (shutdown hook + heartbeat + crash recovery) 2026-04-22 05:44:19 +02:00
HeartbeatService.java Phase 3: anti-loss infrastructure (shutdown hook + heartbeat + crash recovery) 2026-04-22 05:44:19 +02:00
JDBCsetUp.java Fix backpack/curios dup, perf overhaul, drop chat+cobblemon 2026-04-22 02:50:26 +02:00
LocalJsonUtil.java Production hardening: fix all critical audit issues 2026-03-26 18:14:31 +01:00
PeriodicSaveService.java Phase 4: 10-min periodic save + dimension-change trigger 2026-04-22 06:01:55 +02:00
PSThreadPoolFactory.java so it is 2.0.0 release 2025-05-04 18:40:39 +08:00
SyncLogger.java Fix backpack/curios dup, perf overhaul, drop chat+cobblemon 2026-04-22 02:50:26 +02:00
Tables.java Fix backpack/curios dup, perf overhaul, drop chat+cobblemon 2026-04-22 02:50:26 +02:00