BLPC — Minecraft 1.12.2 Forge mod. Chunk claiming with party-based sharing. Optional BetterQuesting integration.
RetroFuturaGradle (RFG) + GTNH Buildscripts. Do not edit build.gradle (auto-generated). Config: buildscript.properties.
./gradlew build # Full build (includes spotlessCheck)
./gradlew runClient # Launch Minecraft client with the mod
./gradlew runServer # Launch Minecraft server with the mod
./gradlew spotlessApply # Auto-format code (run before committing)
./gradlew spotlessCheck # Check formatting without fixing
./gradlew test # Run JUnit 5 tests- Java 17 syntax mandatory (Jabel → JVM 8): switch expressions (
->), pattern matchinginstanceof,varfor obvious types. Details in.claude/skills/blpc-overview/SKILL.md. - Imports: Always use
importstatements, not FQCN. Spotless enforces ordering. - Network messages: Wire protocol IDs are stable. C→S party operations multiplex through
MessagePartyAction(discriminator:int action). S→C client toasts/notifications multiplex throughMessageClientNotify(discriminator:int kind). To add a new operation/notification, append a newACTION_*/KIND_*constant — do not add a new top-level wire ID. Top-level IDs are only added for genuinely new message families (new sync stream, new C→S request shape) and must be appended to bothModNetwork.CLIENT_BOUND_MESSAGES(server-side NoOp registration) andClientPacketHandlers.installAll()(client-side handler registration) in the same order — never insert into existing positions. - Side boundary: Server-side handlers live in
common/network/; client-side (S→C) handlers live inclient/network/with@SideOnly(Side.CLIENT). IMessage classes stay incommon/network/and must not reference any@SideOnlytypes in their own bytecode.
See .claude/skills/blpc-overview/SKILL.md for full reference (package layout, conventions, data schemas, UI patterns, config, etc.).