699f09f081
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).
common
Loader-agnostic Java: protocol types, config model, and the interfaces each leaf module
(forge-1_7_10, forge-1_12_2, neoforge-26_1) implements against its own Minecraft/Forge
API generation.
This module is not consumed as a compiled binary dependency. The legacy leaves (1.7.10,
1.12.2) target Java 8; neoforge-26_1 targets a modern JDK. To avoid cross-version binary
compatibility issues, each leaf module adds common/src/main/java directly to its own source
set (see the sourceSets.main.java.srcDirs line in each leaf's build.gradle) and compiles it
itself, once per leaf, against its own toolchain. Keep this module free of any
Minecraft/Forge/NeoForge API usage — it must compile standalone under plain javac.
Layout
protocol/— wire types shared with the backend (delta events, chat/waypoint payloads, link request/response). Mirrors the WS protocol described in the root plan.config/— the common config model (backend URL, server token, tracking/reconciliation intervals) each leaf loads via its own loader-specific config system.