feat(limbo): felis-limbo in-game login flow over the shared account-link client

The login limbo now performs the onboarding inside Limbo: on join it checks the collision blacklist, mints a bind code, opens a book linking the player to console.<root_domain> (guiding them to the system browser), polls link-status, and transfers to the lobby via BungeeCord Connect — fail-closed on blacklist, mint/transport error, or window elapse. FelisApiClient gains linkStatus/isBlacklisted on the existing internal transport.
This commit is contained in:
flyemoji committed 2026-07-02 19:38:38 +09:00
1 parent a63f49dcb3
commit 241fe21f8a
5 files changed
+494

No files matched your search

+58
View File
@@ -0,0 +1,58 @@
plugins {
id 'java'
}
group = 'best.lolicon.felis'
version = '0.1.0'
// Build with a JDK 21 toolchain but emit portable Java 17 bytecode (options.release
// below). Current LOOHP/Limbo releases ship Java 21 API classes (class-file major
// 65), so the compiler JDK must be >= 21 to *read* them — a JDK 17 fails with
// "wrong version 65.0, should be 61.0". Targeting release 17 keeps the plugin
// loadable on any Limbo running Java 17+. See deploy/limbo/Dockerfile (21-jdk).
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
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. It is CODE-ONLY in this Go
// repo (not built by CI); a deployer building the image passes the release that
// matches the Limbo.jar they bundle, e.g. -PlimboVersion=0.7.11-ALPHA. Kept a
// property so no specific build number is hardcoded into the tree.
def limboVersion = project.findProperty('limboVersion') ?: '+'
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 the JDK 21 toolchain above,
// but emit Java 17 bytecode so the plugin loads on any Limbo running Java 17+.
options.release = 17
}