diff --git a/README.md b/README.md index 96399e1..581b4ad 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,25 @@ serverToken= then restart. With those set, the mod connects to the backend, backfills already-loaded overworld chunks, and streams event-driven column deltas (block place/break) in batches every -`deltaFlushIntervalTicks` (default 20 = 1s). No periodic reconciliation sweep yet (Phase 7), -and only the overworld — other dimensions and `forge-1_7_10`/`neoforge-26_1` land in later -phases. The WS client and JSON encoding are hand-rolled (no third-party dependency) — see +`deltaFlushIntervalTicks` (default 20 = 1s). A periodic reconciliation sweep (Phase 7) also +walks a bounded number of currently-loaded chunks per tick (`reconciliationChunksPerSweep`, +default 4) and re-sends any that drifted from what the backend last acknowledged, to catch +mutations event hooks miss (world-gen, other mods, `/fill`). Only the overworld is tracked — +other dimensions and `forge-1_7_10`/`neoforge-26_1` land in later phases. The WS client and +JSON encoding are hand-rolled (no third-party dependency) — see `common/src/main/java/.../ws/SimpleWebSocketClient.java` and `.../json/MiniJson.java` for why. +### Player position tracking (Phase 7b) + +When `playerTrackingEnabled` (default `true`), the leaf sends a throttled roster of online +overworld players (`{"type":"player_positions",...}`, see `DefaultBackendConnection`'s +class-level wire-protocol doc comment) every `playerPositionIntervalTicks` (default 40 = 2s) — +always the *full current roster*, not a diff, so a logged-out player simply stops appearing in +the next send. This is a mod-local toggle only: whether the backend actually relays positions on +to web viewers is a separate, independent per-server admin setting on the backend side (see +MCMapper-Backend's README) — a server operator can track positions server-side without exposing +them publicly, or vice versa. + ## Attribution See `THIRD_PARTY_NOTICES.md`.