Development
#Stack
- Kotlin and Gradle Kotlin DSL, Java 25.
- Spigot API 26.3, so the jar runs on Spigot and Paper.
- kotlinx-coroutines and kotlinx-serialization.
- OkHttp for the backend's Server-Sent Events.
- MaxMind DB reader for the country database.
- SnakeYAML, so
corereads YAML without Bukkit. - Optional, compile only: GriefPrevention, PlaceholderAPI, and the Plan API.
#Tests
./gradlew build runs both modules' tests. They cover the planners (chests, inventory layouts, crafting, brewing, the anvil), the game's formulas, the protocol and its stream parser, billing, quotas, languages (LangTest checks that every language file has every English key), the MCBuddy migration, the locator rules, vanish, and drafts. See Building from source for the check on a real Paper.
#Texts
Code, comments, commit messages, and config.yml are English. Player-facing texts live in core/src/main/resources/lang/<code>.yml (en, ru, es, pt, de), and a new text goes into every one of them.
#Commits
Short one-line imperative English messages, one logical change per commit: “Show tool results as ⎿ lines”. A change that reaches what the project ships goes into CHANGELOG.md in the same push.
#Autopilot
Every Monday at 03:00 UTC, .github/workflows/autopilot.yml runs Claude: it updates the dependencies and the game version, fixes what breaks, pushes to master, and runs the “Release” workflow when what the project ships changed.
#AI involvement
AI wrote parts of the documentation and some of the code at first. Since 2.0 the plugin is written by an AI agent, Claude, from my specs: the protocol, the tools, the windows, the languages. AI also writes the commit messages from the changes.
#Credits
IP Geolocation by DB-IP, licensed under CC BY 4.0. Profession and item names in the windows come from Minecraft's own translations.