Put players where they actually are on the public map - #163
Conversation
Reported as a placement bug: on the web the players sit beside where they are standing, and in the app they do not. It was not a placement bug — the public surfaces round positions to 64 blocks for privacy and the app does not round at all, so a player was drawn up to 32 blocks from their house. That default made sense when the public map was dots on an empty grid, where being half a chunk out was invisible. The map draws real terrain now, and against terrain the same rounding is indistinguishable from a bug — it was reported as one. So exact by default, on both the public site and the map page. The protection is real and stays: an operator who wants it sets the field, and the field now says what it costs rather than calling itself "Round to (blocks)" — a number that reads as a display nicety and actually means every player is drawn up to half of it away from where they are. EN and TR. Deliberately NOT migrating anyone's stored value. `round: 64` is persisted in site.json, and it is indistinguishable from a deliberate choice, so rewriting it would publish exact coordinates on the public website of every operator who meant to round. New configs get the new default; an existing one is one field in Website settings. The existing redaction test asked for its rounding through the defaults, so it began asserting the feature was broken the moment the default changed. It now passes `round` explicitly — "does redaction work when switched on" and "is it on by default" are two questions and only the first belonged there. The field-level protections (no y, no world, no uuid) are asserted with rounding both on and off, since those have no setting. Proved failable: putting the default back to 64 fails with "the public map rounds positions by default: 64". Gates green: MSMS_SMOKE, MSMS_SMOKE_WEB.
Self reviewSmall change, but it moves a privacy default, so the review is about what it does NOT do. The one that matters: this does not fix the reporter's map. Their Checked: the panel is genuinely unrounded. A test was asserting the bug. The redaction block took its rounding from
Scope. Nothing here addresses the tile retention, the web lag, or the "stays until F5" request — those are the next branch, deliberately separate so this reverts alone. |
Reported as a placement bug: on the web the players sit beside where they are standing, and in the app they do not.
It is not a placement bug. The public surfaces round positions for privacy and the app does not round at all:
/api/servers/:id/map)/api/public/map)/api/map)At 64 a player is drawn up to 32 blocks from where they stand. That default made sense when the public map was dots on an empty grid, where half a chunk out was invisible. The map draws real terrain now, and against terrain it is indistinguishable from a bug — which is how it got reported.
What changed
Exact by default, on both public surfaces. The protection is real and stays available; it is now an opt-in.
The field says what it costs. "Round to (blocks)" reads as a display nicety. It actually means every player is drawn up to half of it away from where they are, which is the sentence the hint now says, in EN and TR, on both the website settings and the map page settings.
Not migrating anyones stored value
round: 64is persisted insite.json, so this default alone changes nothing for an existing install — including the one that reported the bug. That is deliberate: a stored 64 is indistinguishable from a deliberate choice, and rewriting it would publish exact player coordinates on the public website of every operator who meant to round. New configs get the new default; an existing one is one field in Website settings.Verification
Proved failable — putting the default back to 64 fails with
the public map rounds positions by default: 64.The existing redaction test took its rounding from the defaults, so it started asserting the feature was broken the moment the default changed (
the public map published exact coordinates). It now passesroundexplicitly: "does redaction work when switched on" and "is it on by default" are two questions, and only the first belonged in that block. The field-level protections — noy, noworld, nouuid— are now asserted with rounding both on and off, since those have no setting and must hold either way.Gates green by exit code:
MSMS_SMOKE,MSMS_SMOKE_WEB.