From 43e97638f544de2453b687ecc2599f43166e5ce9 Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 10 Aug 2026 22:11:57 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(minestom):=20add=20Minestom=20?= =?UTF-8?q?relocations=20plugin=20and=20update=20version=20to=202.1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - introduce MinestomRelocationsPlugin to handle runtime relocations for Shadow JARs - update version to 2.1.2 in build.gradle.kts --- surf-api-gradle-plugin/build.gradle.kts | 8 ++++- .../minestom/MinestomRelocationsPlugin.kt | 30 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/api/gradle/platform/minestom/MinestomRelocationsPlugin.kt diff --git a/surf-api-gradle-plugin/build.gradle.kts b/surf-api-gradle-plugin/build.gradle.kts index 0ff5c355..d5b61133 100644 --- a/surf-api-gradle-plugin/build.gradle.kts +++ b/surf-api-gradle-plugin/build.gradle.kts @@ -20,7 +20,7 @@ plugins { group = groupId version = buildString { - append("2.1.1") + append("2.1.2") if (snapshot) append("-SNAPSHOT") } @@ -86,6 +86,12 @@ gradlePlugin { id = "dev.slne.surf.api.gradle.minestom" implementationClass = "dev.slne.surf.api.gradle.platform.minestom.MinestomSurfPlugin" } + + create("minestom-relocations") { + id = "dev.slne.surf.api.gradle.minestom-relocations" + implementationClass = + "dev.slne.surf.api.gradle.platform.minestom.MinestomRelocationsPlugin" + } } publishing { diff --git a/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/api/gradle/platform/minestom/MinestomRelocationsPlugin.kt b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/api/gradle/platform/minestom/MinestomRelocationsPlugin.kt new file mode 100644 index 00000000..3f0815e1 --- /dev/null +++ b/surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/api/gradle/platform/minestom/MinestomRelocationsPlugin.kt @@ -0,0 +1,30 @@ +package dev.slne.surf.api.gradle.platform.minestom + +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import dev.slne.surf.api.gradle.generated.Constants +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.withType + +/** + * Applies the Minestom runtime relocations to an existing Shadow JAR without configuring a + * complete Surf/Kotlin project. This is intended for final application assemblers that merge + * multiple Surf Minestom plugins into one executable JAR. + */ +internal class MinestomRelocationsPlugin : Plugin { + override fun apply(target: Project) = with(target) { + pluginManager.withPlugin("com.gradleup.shadow") { + tasks.withType().configureEach { + val prefix = Constants.RELOCATION_PREFIX + + relocate("org.spongepowered.configurate", "$prefix.configurate") + relocate("com.mojang.serialization", "$prefix.mojang.serialization") + relocate("com.mojang.datafixers", "$prefix.mojang.datafixers") + relocate("net.kyori.adventure.nbt", "$prefix.kyori.nbt") { + exclude("net.kyori.adventure.nbt.api.**") + } + relocate("it.unimi.dsi.fastutil", "$prefix.fastutil") + } + } + } +}