Phase 1: forge-1_12_2 WS connection and column delta capture
Adds a hand-rolled RFC 6455 WS client and minimal JSON codec to common/ (no third-party deps, keeping legacy ForgeGradle's classpath untouched), a DefaultBackendConnection implementing hello/hello_ack auth and reconnect with backoff, and Forge1122ChunkAdapter deriving top-of-column state from the vanilla heightmap for both initial chunk backfill and event-driven deltas (block break/place, deferred one tick to read post-mutation state). MCMapperMod wires it up with config-driven backendUrl/serverToken and a tick-based flush batch. Verified against a live MCMapper-Backend api instance (real WS handshake, hello_ack, and 256-column batch landing correctly in Postgres).
This commit is contained in:
@@ -43,6 +43,22 @@ needs Gradle 8+ and JDK 17+ (ModDevGradle), incompatible with the legacy leaves'
|
||||
within one Gradle invocation; see `settings.gradle`'s comment for the workaround until Phase 10
|
||||
gives it a proper isolated build.
|
||||
|
||||
## Configuration (Phase 1: forge-1_12_2)
|
||||
|
||||
On first server start the leaf writes `config/mcmapper.cfg` with defaults. Set:
|
||||
|
||||
```
|
||||
backendUrl=ws://<backend-host>:3000/ws
|
||||
serverToken=<token from MCMapper-Backend's `bun run seed`>
|
||||
```
|
||||
|
||||
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
|
||||
`common/src/main/java/.../ws/SimpleWebSocketClient.java` and `.../json/MiniJson.java` for why.
|
||||
|
||||
## Attribution
|
||||
|
||||
See `THIRD_PARTY_NOTICES.md`.
|
||||
|
||||
Reference in New Issue
Block a user