From 3df4f4bab7fe713d31418b5fd813a9bb361df4f4 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 17 Jun 2025 17:14:13 +0200 Subject: [PATCH 1/6] update gradlew & paperweight --- build.gradle.kts | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 0 3 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 gradlew diff --git a/build.gradle.kts b/build.gradle.kts index bd8c2e5..4308f32 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ plugins { signing id("cn.lalaki.central").version("1.2.8") // Paper - id("io.papermc.paperweight.userdev") version "2.0.0-beta.16" apply false + id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" apply false } group = "xyz.alexcrea" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d6e308a..0b55a3b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From a0c243f2dd91814d1126c0ae47300c32f7785892 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 17 Jun 2025 17:22:23 +0200 Subject: [PATCH 2/6] update for 1.21.6 --- build.gradle.kts | 1 + nms/v1_21R4/build.gradle.kts | 2 +- nms/v1_21R5/.gitignore | 1 + nms/v1_21R5/build.gradle.kts | 42 +++++++++++++++++++ .../gui/version/v1_21R5_ExternGuiTester.kt | 34 +++++++++++++++ .../packet/versions/V1_21R5_PacketManager.kt | 33 +++++++++++++++ settings.gradle.kts | 2 + .../dependency/gui/GuiTesterSelector.kt | 1 + .../packet/PacketManagerSelector.kt | 1 + 9 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 nms/v1_21R5/.gitignore create mode 100644 nms/v1_21R5/build.gradle.kts create mode 100644 nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R5_ExternGuiTester.kt create mode 100644 nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R5_PacketManager.kt diff --git a/build.gradle.kts b/build.gradle.kts index 4308f32..c8f08a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,6 +75,7 @@ dependencies { implementation(project(":nms:v1_21R2", configuration = "reobf")) implementation(project(":nms:v1_21R3", configuration = "reobf")) implementation(project(":nms:v1_21R4", configuration = "reobf")) + implementation(project(":nms:v1_21R5", configuration = "reobf")) // include kotlin for the offline jar implementation(kotlin("stdlib")) diff --git a/nms/v1_21R4/build.gradle.kts b/nms/v1_21R4/build.gradle.kts index dcd0a7e..f72c165 100644 --- a/nms/v1_21R4/build.gradle.kts +++ b/nms/v1_21R4/build.gradle.kts @@ -11,7 +11,7 @@ dependencies { implementation(project(":nms:nms-common")) // Used for nms - paperweight.paperDevBundle("1.21.5-no-moonrise-SNAPSHOT") + paperweight.paperDevBundle("1.21.5-R0.1-SNAPSHOT") } repositories { diff --git a/nms/v1_21R5/.gitignore b/nms/v1_21R5/.gitignore new file mode 100644 index 0000000..47374f1 --- /dev/null +++ b/nms/v1_21R5/.gitignore @@ -0,0 +1 @@ +.lastDeploymentsId \ No newline at end of file diff --git a/nms/v1_21R5/build.gradle.kts b/nms/v1_21R5/build.gradle.kts new file mode 100644 index 0000000..9483061 --- /dev/null +++ b/nms/v1_21R5/build.gradle.kts @@ -0,0 +1,42 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +group = rootProject.group +version = rootProject.version + +plugins { + id("io.papermc.paperweight.userdev") +} + +dependencies { + implementation(project(":nms:nms-common")) + + // Used for nms + paperweight.paperDevBundle("1.21.6-R0.1-SNAPSHOT") +} + +repositories { + maven("https://repo.papermc.io/repository/maven-public/") +} + +// minecraft 1.21 java version is 21. + +// Configure used version of kotlin and java +java { + disableAutoTargetJvm() + toolchain.languageVersion.set(JavaLanguageVersion.of(21)) +} + +// Set target version +tasks.withType().configureEach { + sourceCompatibility = "21" + targetCompatibility = "21" + + options.encoding = "UTF-8" +} + +kotlin { + compilerOptions { + apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0) + jvmTarget.set(JvmTarget.JVM_21) + } +} diff --git a/nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R5_ExternGuiTester.kt b/nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R5_ExternGuiTester.kt new file mode 100644 index 0000000..59eadbc --- /dev/null +++ b/nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R5_ExternGuiTester.kt @@ -0,0 +1,34 @@ +package xyz.alexcrea.cuanvil.dependency.gui.version + +import org.bukkit.craftbukkit.inventory.CraftInventoryView +import org.bukkit.inventory.InventoryView +import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester + +class v1_21R5_ExternGuiTester: ExternGuiTester { + override val wesjdAnvilGuiName = "Wrapper1_21_R5" + + var tested = false; + var possible = false; + + override fun getContainerClass(view: InventoryView): Class? { + // In case we are in a test environment + if(!tested) testClassExist() + if(!possible) return null + + if(view !is CraftInventoryView<*, *>) return null + val container = view.handle + + return container.javaClass + } + + fun testClassExist(){ + tested = true; + try { + Class.forName("org.bukkit.craftbukkit.inventory.CraftInventoryView") + possible = true + } catch (e: ClassNotFoundException){ + possible = false + } + } + +} diff --git a/nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R5_PacketManager.kt b/nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R5_PacketManager.kt new file mode 100644 index 0000000..561a6af --- /dev/null +++ b/nms/v1_21R5/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R5_PacketManager.kt @@ -0,0 +1,33 @@ +package xyz.alexcrea.cuanvil.dependency.packet.versions + +import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket +import net.minecraft.world.entity.player.Abilities +import org.bukkit.craftbukkit.entity.CraftPlayer +import org.bukkit.entity.Player +import xyz.alexcrea.cuanvil.dependency.packet.PacketManager +import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase + +class V1_21R5_PacketManager : PacketManagerBase(), PacketManager { + override val canSetInstantBuild: Boolean + get() = true + + override fun setInstantBuild(player: Player, instantBuild: Boolean) { + val nmsPlayer = (player as CraftPlayer).handle + val playerAbilities = nmsPlayer.abilities + val sendedAbilities: Abilities + if (playerAbilities.instabuild == instantBuild) { + sendedAbilities = playerAbilities + } else { + sendedAbilities = Abilities() + sendedAbilities.invulnerable = playerAbilities.invulnerable + sendedAbilities.flying = playerAbilities.flying + sendedAbilities.mayfly = playerAbilities.mayfly + sendedAbilities.instabuild = instantBuild + sendedAbilities.mayBuild = playerAbilities.mayBuild + sendedAbilities.flyingSpeed = playerAbilities.flyingSpeed + sendedAbilities.walkingSpeed = playerAbilities.walkingSpeed + } + val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities) + nmsPlayer.connection.send(packet) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index b77c2f3..698647f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -31,6 +31,8 @@ include("nms:v1_21R3") findProject(":nms:v1_21R3")?.name = "v1_21R3" include("nms:v1_21R4") findProject(":nms:v1_21R4")?.name = "v1_21R4" +include("nms:v1_21R5") +findProject(":nms:v1_21R6")?.name = "v1_21R5" include(":impl:LegacyEcoEnchant") findProject(":impl:LegacyEcoEnchant")?.name = "LegacyEcoEnchant" \ No newline at end of file diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt index 8c6ad26..8889170 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt @@ -44,6 +44,7 @@ object GuiTesterSelector { 2, 3 -> v1_21R2_ExternGuiTester() 4 -> v1_21R3_ExternGuiTester() 5 -> v1_21R4_ExternGuiTester() + 6 -> v1_21R5_ExternGuiTester() else -> null } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt index fc14921..51416bb 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt @@ -58,6 +58,7 @@ object PacketManagerSelector { 2, 3 -> V1_21R2_PacketManager() 4 -> V1_21R3_PacketManager() 5 -> V1_21R4_PacketManager() + 6 -> V1_21R4_PacketManager() else -> null } From 3d664b9fbdc3ef4cfd26fab1f964e7167e4a2843 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 17 Jun 2025 17:26:04 +0200 Subject: [PATCH 3/6] version up --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c8f08a5..40f6be3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ plugins { } group = "xyz.alexcrea" -version = "1.11.4" +version = "1.12.0" val effectiveVersion = "$version" + (if (System.getenv("SMALL_COMMIT_HASH") != null) "-dev-${System.getenv("SMALL_COMMIT_HASH")!!}" else "") From 119f722494d50d075d87c8386e1eed72dbe18103 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 17 Jun 2025 17:38:49 +0200 Subject: [PATCH 4/6] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1704a26..a651693 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Custom Anvil **Custom Anvil** is a plugin that allows server administrators to customize every aspect of the anvil's mechanics. -It is expected to work on 1.18 to 1.21.5 minecraft servers running spigot or paper. +It is expected to work on 1.18 to 1.21.6 minecraft servers running spigot or paper. (the plugin support of 1.16.5 to 1.17.1 is experimental and may encounter issues) **Custom Anvil** was previously named **Unsafe Enchants+**. From 344b52bc148edfbc75a829eba1dcf3714a6a0491 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 17 Jun 2025 21:59:00 +0200 Subject: [PATCH 5/6] do not reofb 1.21.6 jar spigot mapping not yet present --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 40f6be3..174c6d9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,7 +75,7 @@ dependencies { implementation(project(":nms:v1_21R2", configuration = "reobf")) implementation(project(":nms:v1_21R3", configuration = "reobf")) implementation(project(":nms:v1_21R4", configuration = "reobf")) - implementation(project(":nms:v1_21R5", configuration = "reobf")) + implementation(project(":nms:v1_21R5")) // include kotlin for the offline jar implementation(kotlin("stdlib")) From 6e2cc20c9e1db8e5dd5b56f83796df14b24efe79 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Sat, 21 Jun 2025 04:05:35 +0200 Subject: [PATCH 6/6] spigot reobf --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 174c6d9..40f6be3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,7 +75,7 @@ dependencies { implementation(project(":nms:v1_21R2", configuration = "reobf")) implementation(project(":nms:v1_21R3", configuration = "reobf")) implementation(project(":nms:v1_21R4", configuration = "reobf")) - implementation(project(":nms:v1_21R5")) + implementation(project(":nms:v1_21R5", configuration = "reobf")) // include kotlin for the offline jar implementation(kotlin("stdlib"))