plugins { id 'java' } group = 'best.lolicon.felis' version = '0.1.0' // Emit portable Java 17 bytecode (options.release below) from whatever JDK runs Gradle. // Current LOOHP/Limbo releases ship Java 21 API classes (class-file major 65), so that // JDK must be >= 21 to *read* them — a JDK 17 fails with "wrong version 65.0, should be // 61.0". The plugin build image and CI both run JDK 25. Targeting release 17 keeps the // plugin loadable on any Limbo running Java 17+. repositories { mavenCentral() // LOOHP publishes the Limbo API artifact to their own repository. maven { name = 'loohp' url = 'https://repo.loohpjames.com/repository' } } // Pull in the platform-neutral link core (best.lolicon.felis.link) the same way // every other module does — a source include, not a jar dependency — so the // account-link client (LinkClient), the internal read/drive client (FelisApiClient) // and the env/properties config loader compile straight into this jar with nothing // to shade. See plugins/README.md "Architecture". sourceSets { main { java { srcDir '../shared/src/main/java' } } } // The Limbo API version this plugin compiles against: the release the login-gate image // bundles, deploy/game-stack.lock's LIMBO_VERSION. deploy/bootstrap.sh passes it to the // image build and plugins/test.sh reads it from the lock, e.g. // -PlimboVersion=2026.0.3-ALPHA. It has no default: LOOHP's repository serves no // maven-metadata.xml, so a dynamic version cannot resolve, and a guessed one would // compile against an API the gate does not run. gradle/verification-metadata.xml holds // the checksum of the locked release, so a lock refresh regenerates it (see // plugins/README.md "Dependency verification"). def limboVersion = project.findProperty('limboVersion') if (!limboVersion) { throw new GradleException('pass -PlimboVersion=') } dependencies { // Limbo provides its own API at runtime (the plugin is loaded into the Limbo // JVM), so it is compile-only — nothing to shade. compileOnly "com.loohp:Limbo:${limboVersion}" } tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Portable output: read the Java 21 Limbo API with a JDK >= 21, but emit Java 17 // bytecode so the plugin loads on any Limbo running Java 17+. options.release = 17 }