From 0aad19166f61d59fc0562a0594762b58a6a228e8 Mon Sep 17 00:00:00 2001 From: alexcrea Date: Mon, 1 Dec 2025 18:58:40 +0100 Subject: [PATCH] prepare 1.21.11 nms --- build.gradle.kts | 1 + nms/v1_21R7/.gitignore | 1 + nms/v1_21R7/build.gradle.kts | 34 +++++++++++++++++++ .../gui/version/v1_21R7_ExternGuiTester.kt | 34 +++++++++++++++++++ .../packet/versions/V1_21R7_PacketManager.kt | 33 ++++++++++++++++++ settings.gradle.kts | 2 ++ .../dependency/gui/GuiTesterSelector.kt | 1 + .../packet/PacketManagerSelector.kt | 1 + 8 files changed, 107 insertions(+) create mode 100644 nms/v1_21R7/.gitignore create mode 100644 nms/v1_21R7/build.gradle.kts create mode 100644 nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R7_ExternGuiTester.kt create mode 100644 nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R7_PacketManager.kt diff --git a/build.gradle.kts b/build.gradle.kts index 8ae931c..57b8b93 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -89,6 +89,7 @@ dependencies { implementation(project(":nms:v1_21R4", configuration = "reobf")) implementation(project(":nms:v1_21R5", configuration = "reobf")) implementation(project(":nms:v1_21R6", configuration = "reobf")) + implementation(project(":nms:v1_21R7"))// TODO reobf on release, configuration = "reobf")) // include kotlin for the offline jar implementation(kotlin("stdlib")) diff --git a/nms/v1_21R7/.gitignore b/nms/v1_21R7/.gitignore new file mode 100644 index 0000000..47374f1 --- /dev/null +++ b/nms/v1_21R7/.gitignore @@ -0,0 +1 @@ +.lastDeploymentsId \ No newline at end of file diff --git a/nms/v1_21R7/build.gradle.kts b/nms/v1_21R7/build.gradle.kts new file mode 100644 index 0000000..9c8a6f3 --- /dev/null +++ b/nms/v1_21R7/build.gradle.kts @@ -0,0 +1,34 @@ +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.11-pre3-R0.1-SNAPSHOT") //TODO update to 1.21.11-R0.1-SNAPSHOT on release +} + +repositories { + maven("https://repo.papermc.io/repository/maven-public/") +} + +// 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_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R7_ExternGuiTester.kt b/nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R7_ExternGuiTester.kt new file mode 100644 index 0000000..c380211 --- /dev/null +++ b/nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/version/v1_21R7_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_21R7_ExternGuiTester: ExternGuiTester { + override val wesjdAnvilGuiName = "Wrapper1_21_R7" + + 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 + } + } + +} \ No newline at end of file diff --git a/nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R7_PacketManager.kt b/nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R7_PacketManager.kt new file mode 100644 index 0000000..59ae9ce --- /dev/null +++ b/nms/v1_21R7/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R7_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_21R7_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) + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 1d401da..0790502 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -35,6 +35,8 @@ include("nms:v1_21R5") findProject(":nms:v1_21R5")?.name = "v1_21R5" include("nms:v1_21R6") findProject(":nms:v1_21R6")?.name = "v1_21R6" +include("nms:v1_21R7") +findProject(":nms:v1_21R7")?.name = "v1_21R7" include(":impl:LegacyEcoEnchant") findProject(":impl:LegacyEcoEnchant")?.name = "LegacyEcoEnchant" 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 f3d2122..aa2ab95 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/gui/GuiTesterSelector.kt @@ -46,6 +46,7 @@ object GuiTesterSelector { 5 -> v1_21R4_ExternGuiTester() 6, 7, 8 -> v1_21R5_ExternGuiTester() 9, 10 -> v1_21R6_ExternGuiTester() + 11 -> v1_21R7_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 985b3f5..ccb8620 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt @@ -60,6 +60,7 @@ object PacketManagerSelector { 5 -> V1_21R4_PacketManager() 6, 7, 8 -> V1_21R5_PacketManager() 9, 10 -> V1_21R6_PacketManager() + 11 -> V1_21R7_PacketManager() else -> null }