# 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.