Skip to content

Building from source

Pavel Erokhin edited this page Nov 9, 2026 · 2 revisions

You need JDK 25. If it’s missing, Gradle downloads it through the foojay resolver.

  1. Clone the repository:

    git clone https://github.com/MairwunNx/mojoins
    cd mojoins
  2. Build and test:

    ./gradlew build
  3. Take the jar from build/libs/mojoins-dev.jar.

The jar is shaded: Kotlin, kaml, and the MaxMind reader sit inside it, relocated under ru.mairwunnx.mojoins.libs, so they can’t clash with other plugins. Local builds carry the version dev, CI builds dev-<commit>, and only the release workflow sets a real one.

Tests

./gradlew build runs the tests. There is no MockBukkit for Paper 26.3, so they cover the pure parts: the config, the language files, the language picker, and the colors. ResourcesTest fails when a bundled language misses a message key, or when config.yml and the defaults in Settings drift apart.

Trying it on a real server

.claude/scripts/paper_smoke.py starts a Paper server with the jar and the optional plugins, then stops it, and fails on any error about the plugin:

python3 -I .claude/scripts/paper_smoke.py --game 26.3 --plugin build/libs/mojoins-dev.jar \
  --modrinth placeholderapi --modrinth plan \
  --jar https://cdn.modrinth.com/data/HQyibRsN/versions/N2WfJ0ll/MiniPlaceholders-Paper-3.2.0.jar \
  --command "miniplaceholders expansions" \
  --expect "PlaceholderAPI found" --expect "Plan found" --expect "MiniPlaceholders found" \
  --ignore "Plan\] Failed to enable geolocation"

Join, first-join, and quit lines need a game client: join and leave once.

Next: Stack and architecture

Clone this wiki locally