build: switch to the OneLiteFeather minestom-extensions fork - #207
Open
TheMeinerLP wants to merge 1 commit into
Open
build: switch to the OneLiteFeather minestom-extensions fork#207TheMeinerLP wants to merge 1 commit into
TheMeinerLP wants to merge 1 commit into
Conversation
TheMeinerLP
force-pushed
the
build/buildsrc-conventions
branch
from
August 27, 2026 20:03
c9a0860 to
00dfaed
Compare
dev.hollowcube:minestom-ce-extensions is archived and resolves extension dependencies through a Kotlin class (net.minestom.dependencies.maven. MavenRepository). That forced two workarounds Titan carried in comments: bundling kotlin-stdlib-jdk8 into the fat jar, and routing resolution through the reposilite JitPack proxy for com.github.Minestom: DependencyGetter. net.onelitefeather:minestom-extensions 2.2.0 keeps the same packages (net.hollowcube.minestom.extensions, net.minestom.server.extensions) but resolves through Maven Resolver, so both workarounds are gone: - kotlin-stdlib-jdk8 dropped from :app and from the version catalog - the JitPack proxy repository replaced by the credential-free OneLiteFeatherReleases repository the fork is published to. Verified with a cold Gradle user home: all 65 modules resolve without it, com.github.CloudNetService.cloud-command-framework included (it comes from repository.derklaro.dev). The fork also offers ExtensionBootstrap.init(Auth), added upstream for exactly this case. Titan's Velocity path no longer has to reach for getDeclaredConstructor(MinecraftServer.class) + setAccessible(true) - the reflection hack listed as open point 1 in the OLF Minestom project standard is gone. :bridge now generates extension.json from @ExtensionInfo instead of keeping a hand-written file plus a ReplaceTokens filter for @Version@. The generated descriptor carries the same name, entrypoint, version, authors and dependencies; only key order and whitespace differ. The annotation has source retention, so the bridge jar holds exactly the same entries as before. Verified: 56 tests, 0 failures (unchanged). The Velocity branch was smoke tested against the real fat jar with -Dminestom.velocity.secret set; it gets past ExtensionBootstrap and LuckPerms and stops at the same missing worlds/ directory as the pre-change jar does in the same run. Fat jar shrinks from 43.7 MB to 40.8 MB (25650 to 23719 entries): the old DependencyGetter dragged in shrinkwrap-resolver, arquillian-spacelift, jsoup and a large commons/plexus tree; Maven Resolver replaces them with aether plus httpclient. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QtbnMbAj6m2q3vrDYFizDr
TheMeinerLP
force-pushed
the
build/minestom-extensions
branch
from
August 27, 2026 20:04
33bf01e to
e22c1ca
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Warum
dev.hollowcube:minestom-ce-extensionsist archiviert und lädt Extension-Abhängigkeiten über eine Kotlin-Klasse (net.minestom.dependencies.maven.MavenRepository). Das erzwang zwei Workarounds, die beide als Kommentar im Build standen:kotlin-stdlib-jdk8in den Fat Jar bündeln, sonstNoClassDefFoundError: kotlin/jvm/internal/Intrinsicscom.github.Minestom:DependencyGetterDazu kam ein Reflection-Hack in
TitanApplication, weilExtensionBootstrap.init()keinAuthannahm.Was
Wechsel auf
net.onelitefeather:minestom-extensions2.2.0 — den OLF-Fork. Gleiche Pakete (net.hollowcube.minestom.extensions,net.minestom.server.extensions), aber Auflösung über Maven Resolver.Beide Workarounds entfallen:
kotlin-stdlib-jdk8raus aus:appund aus dem Version-KatalogOneLiteFeatherReleases-Repository, in dem der Fork liegtDer Reflection-Hack entfällt. Der Fork bietet
ExtensionBootstrap.init(Auth)(minestom-extensions#7, Release 2.2.0) — genau für diesen Fall:Damit ist offener Punkt 1 des OLF-Minestom-Project-Standards erledigt.
:bridgegeneriertextension.jsonaus@ExtensionInfostatt sie von Hand zu pflegen (OLF-L5-01). Die handgeschriebene Datei und derReplaceTokens-Filter für@version@sind weg.Verifikation
Generierte vs. handgepflegte
extension.json— inhaltlich identisch, nur Schlüsselreihenfolge und Whitespace unterscheiden sich:nameTitanCloudNetPermissionsTitanCloudNetPermissionsentrypointnet.onelitefeather.titan.bridge.TitanBridgePermissionExtensionversion1.14.01.14.0authors["OneLiteFeather"]["OneLiteFeather"]dependencies["CloudNet_Bridge"]["CloudNet_Bridge"]Das Bridge-Jar enthält exakt dieselben Einträge wie vorher —
@ExtensionInfohat Source-Retention, die Annotation landet nicht im Jar.Kalter Gradle-Cache (frisches
--gradle-user-home): alle 65 Module lösen ohne den JitPack-Proxy auf, inklusivecom.github.CloudNetService.cloud-command-framework— das kommt vonrepository.derklaro.dev.Velocity-Pfad am echten Fat Jar (das ist der Zweig, der vorher Reflection brauchte):
Kommt an
ExtensionBootstrapund LuckPerms vorbei und bleibt anNoSuchFileException: worldshängen — derselbe Punkt, an dem auch der Jar vor der Änderung im identischen Lauf stehen bleibt (Kontrolllauf durchgeführt). KeinNoClassDefFoundErrormehr.Tests: 56, 0 Fehler — unverändert.
Nebeneffekt: Fat Jar wird 2,8 MB kleiner
43,7 MB → 40,8 MB, 25.650 → 23.719 Einträge.
org/apache/commonsorg/apache/httporg/jboss/shrinkwraporg/eclipse/aetherkotlin/**org/objectweb/asmorg/codehaus/plexusorg/jsouporg/arquillian/spaceliftDer alte
DependencyGetterzog shrinkwrap-resolver, arquillian-spacelift und jsoup mit; Maven Resolver ersetzt das durch aether + httpclient.Anmerkungen
build:, erzeugt also keinen Changelog-Eintrag. Falls der Loader-Wechsel für Ops inCHANGELOG.mdsichtbar sein soll, sage Bescheid — dann wird einfeat:daraus.SLF4J(W): No SLF4J providers were foundund loggt damit gar nichts. Vorbestehend, auch im Baseline-Jar. Cygnus deklariert dafürslf4j-simplealsruntimeOnly. Eigener PR.🤖 Generated with Claude Code
https://claude.ai/code/session_01QtbnMbAj6m2q3vrDYFizDr