From 33892a8588cfea22930d408c23d31b6c2e041877 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 3 Dec 2024 19:48:08 +0100 Subject: [PATCH] add nms for (need spigot source to compile. temporary) --- build.gradle.kts | 1 + .../packet/versions/V1_21R2_PacketManager.kt | 1 + nms/v1_21R3/build.gradle.kts | 47 +++++++++++++++++++ .../packet/versions/V1_21R3_PacketManager.kt | 33 +++++++++++++ settings.gradle.kts | 2 + .../packet/PacketManagerSelector.kt | 1 + 6 files changed, 85 insertions(+) create mode 100644 nms/v1_21R3/build.gradle.kts create mode 100644 nms/v1_21R3/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R3_PacketManager.kt diff --git a/build.gradle.kts b/build.gradle.kts index d2769e7..84e68dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -60,6 +60,7 @@ dependencies { implementation(project(":nms:v1_20R4", configuration = "reobf")) implementation(project(":nms:v1_21R1", configuration = "reobf")) implementation(project(":nms:v1_21R2", configuration = "reobf")) + implementation(project(":nms:v1_21R3"))//, configuration = "reobf")) // TODO add again when paperweigh 1.21.4 update // include kotlin for the offline jar implementation(kotlin("stdlib")) diff --git a/nms/v1_21R2/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R2_PacketManager.kt b/nms/v1_21R2/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R2_PacketManager.kt index 9d88c20..1486559 100644 --- a/nms/v1_21R2/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R2_PacketManager.kt +++ b/nms/v1_21R2/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R2_PacketManager.kt @@ -7,6 +7,7 @@ import org.bukkit.entity.Player import xyz.alexcrea.cuanvil.dependency.packet.PacketManager import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase +// Todo: replace it by the mojang mapped version when paper dev bundle release class V1_21R2_PacketManager : PacketManagerBase(), PacketManager { override val canSetInstantBuild: Boolean get() = true diff --git a/nms/v1_21R3/build.gradle.kts b/nms/v1_21R3/build.gradle.kts new file mode 100644 index 0000000..222bdd4 --- /dev/null +++ b/nms/v1_21R3/build.gradle.kts @@ -0,0 +1,47 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +group = rootProject.group +version = rootProject.version + +//TODO uncomment when paperDevBundle 1.21.4 release +/*plugins { + id("io.papermc.paperweight.userdev") +}*/ + +dependencies { + implementation(project(":nms:nms-common")) + + // Used for nms + compileOnly("org.spigotmc:spigot-api:1.20.4-R0.1-SNAPSHOT") //TODO remove when paperDevBundle 1.21.4 release + compileOnly("org.spigotmc:spigot:1.21.4-R0.1-SNAPSHOT") //TODO remove when paperDevBundle 1.21.4 release + //paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT") //TODO uncomment when paperDevBundle 1.21.4 release +} + +repositories { + maven("https://repo.papermc.io/repository/maven-public/") + + mavenLocal() //TODO remove when paperDevBundle 1.21.4 release +} + +// 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_21R3/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R3_PacketManager.kt b/nms/v1_21R3/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R3_PacketManager.kt new file mode 100644 index 0000000..ae769a7 --- /dev/null +++ b/nms/v1_21R3/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_21R3_PacketManager.kt @@ -0,0 +1,33 @@ +package xyz.alexcrea.cuanvil.dependency.packet.versions + +import net.minecraft.network.protocol.game.PacketPlayOutAbilities +import net.minecraft.world.entity.player.PlayerAbilities +import org.bukkit.craftbukkit.v1_21_R3.entity.CraftPlayer +import org.bukkit.entity.Player +import xyz.alexcrea.cuanvil.dependency.packet.PacketManager +import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase + +class V1_21R3_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.gj() + val sendedAbilities: PlayerAbilities + if (playerAbilities.d == instantBuild) { + sendedAbilities = playerAbilities + } else { + sendedAbilities = PlayerAbilities() + sendedAbilities.a = playerAbilities.a + sendedAbilities.b = playerAbilities.b + sendedAbilities.c = playerAbilities.c + sendedAbilities.d = instantBuild + sendedAbilities.e = playerAbilities.e + sendedAbilities.f = playerAbilities.f + sendedAbilities.g = playerAbilities.g + } + val packet = PacketPlayOutAbilities(sendedAbilities) + nmsPlayer.f.sendPacket(packet) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 6f7bfc5..9e75656 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -36,3 +36,5 @@ include("nms:v1_21R1") findProject(":nms:v1_21R1")?.name = "v1_21R1" include("nms:v1_21R2") findProject(":nms:v1_21R2")?.name = "v1_21R2" +include("nms:v1_21R3") +findProject(":nms:v1_21R3")?.name = "v1_21R3" 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 69b5710..71f4875 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt @@ -56,6 +56,7 @@ object PacketManagerSelector { 21 -> when (versionParts[2]) { 0, 1 -> V1_21R1_PacketManager() 2, 3 -> V1_21R2_PacketManager() + 4 -> V1_21R3_PacketManager() else -> null }