4 Commits
Author SHA1 Message Date
janhouse 8d4b7df1ce protocol: hello carries five fields; the released client reads no serverName
Build / build (push) Successful in 1m18s
Upstream's git HEAD appends serverName to server_installed, but the shipped
1.0.4 client (fabric-26.2) decodes exactly version/lastGen/interval/mode/
ticks and vanilla disconnects the player with "8 bytes extra" on the first
hello. Verified with javap on the release jar; the other three codecs match.
Drops the server-name option (a leftover key now only warns).

Claude-Session: https://claude.ai/code/session_011FePLXwBsCGLTzaSkk1Z6V
v0.1.1
2026-09-07 00:24:43 +03:00
janhouse 93164378e2 world: use World#getWorldFolder as the dimension folder; queue seeding
Build / build (push) Successful in 1m5s
On Paper 26.x getWorldFolder() already points at <root>/dimensions/<ns>/<path>,
so anchoring DimensionType.getStorageFolder on it doubled the tail. Use the
folder directly when region/ exists, otherwise anchor on the stripped level
root.

Seeding now queues worlds instead of silently skipping every world after the
first when several need their initial InhabitedTime scan at the same start.

Claude-Session: https://claude.ai/code/session_011FePLXwBsCGLTzaSkk1Z6V
v0.1.0
2026-09-07 00:11:45 +03:00
janhouse 74dd2438e1 world: resolve the region directory through the server, not by probing
Build / build (push) Successful in 1m20s
Paper 26.x stores every dimension under <main>/dimensions/<ns>/<path>/,
and the directory does not exist until the first save, so a brand-new world
was reported as "no region directory found" and never tracked. Ask
DimensionType.getStorageFolder for the exact path and accept that it may not
exist yet; the legacy layouts are still probed for migrated servers.

The seeder now treats a missing directory as an empty world.

Claude-Session: https://claude.ai/code/session_011FePLXwBsCGLTzaSkk1Z6V
2026-09-07 00:07:44 +03:00
janhouse 7fb3a82482 mapsyncer-paper: server side of MapSyncer for Xaero's World Map, discovery-limited
Paper 26.2 plugin speaking the stock MapSyncer client mod's protocol.
Renders Xaero region zips from the world's region files, but only for chunks
players have actually been sent (PlayerChunkLoadEvent), seeded once from
InhabitedTime. Shared or per-player visibility, background render cycle,
per-player streaming with hash/timestamp skipping, Gitea Actions release
workflow.

Vendors the MCA parser and Xaero writer from upstream MapSyncer (GPL-3.0),
see NOTICE.md.

Claude-Session: https://claude.ai/code/session_011FePLXwBsCGLTzaSkk1Z6V
2026-09-07 00:04:43 +03:00