From 4e1976b6bdb9c44b4585309b0b3c6be36bec3798 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Sat, 10 Aug 2024 05:15:22 +0200 Subject: [PATCH] Add nms for 1.17 and 1.17.1 even if these version will not receive support and will not be tested. Could not add nms for 1.16.5 bc of missing paper userdev. --- build.gradle.kts | 1 + nms/v1_17R1/build.gradle.kts | 43 +++++++++++++++++++ .../packet/versions/V1_17R1_PacketManager.kt | 33 ++++++++++++++ settings.gradle.kts | 2 + .../packet/PacketManagerSelector.kt | 11 ++--- 5 files changed, 83 insertions(+), 7 deletions(-) create mode 100644 nms/v1_17R1/build.gradle.kts create mode 100644 nms/v1_17R1/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_17R1_PacketManager.kt diff --git a/build.gradle.kts b/build.gradle.kts index a40a042..ba59541 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,6 +38,7 @@ dependencies { // Include nms implementation(project(":nms:nms-common")) + implementation(project(":nms:v1_17R1", configuration = "reobf")) implementation(project(":nms:v1_18R1", configuration = "reobf")) implementation(project(":nms:v1_18R2", configuration = "reobf")) implementation(project(":nms:v1_19R1", configuration = "reobf")) diff --git a/nms/v1_17R1/build.gradle.kts b/nms/v1_17R1/build.gradle.kts new file mode 100644 index 0000000..12e9c90 --- /dev/null +++ b/nms/v1_17R1/build.gradle.kts @@ -0,0 +1,43 @@ +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.17.1-R0.1-SNAPSHOT") +} + +repositories { + maven("https://repo.papermc.io/repository/maven-public/") + +} + +// As minecraft 1.17 recommended java version is 1.16. we set language version to 1.16 + +// Configure used version of kotlin and java +java { + disableAutoTargetJvm() + toolchain.languageVersion.set(JavaLanguageVersion.of(16)) +} + +// Set target version +tasks.withType().configureEach { + sourceCompatibility = "16" + targetCompatibility = "16" + + options.encoding = "UTF-8" +} + +kotlin { + compilerOptions { + apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0) + jvmTarget.set(JvmTarget.JVM_16) + } +} diff --git a/nms/v1_17R1/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_17R1_PacketManager.kt b/nms/v1_17R1/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_17R1_PacketManager.kt new file mode 100644 index 0000000..c820eab --- /dev/null +++ b/nms/v1_17R1/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/versions/V1_17R1_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.v1_17_R1.entity.CraftPlayer +import org.bukkit.entity.Player +import xyz.alexcrea.cuanvil.dependency.packet.PacketManager +import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase + +class V1_17R1_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 ba3479f..4ccc5cc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,8 @@ rootProject.name = "CustomAnvil" // NMS subproject include("nms:nms-common") findProject(":nms:nms-common")?.name = "nms-common" +include("nms:v1_17R1") +findProject(":nms:v1_17R1")?.name = "v1_17R1" include("nms:v1_18R1") findProject(":nms:v1_18R1")?.name = "v1_18R1" include("nms:v1_18R2") 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 6aef854..0d66070 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt @@ -19,19 +19,16 @@ object PacketManagerSelector { ProtocoLibWrapper() else NoPacketManager() - private val versionSpecificManager: PacketManager? + private val versionSpecificManager: PacketManagerBase? get() { val versionParts = UpdateUtils.currentMinecraftVersion() - if (versionParts[0] != 1) return null; + if (versionParts[0] != 1) return null return when (versionParts[1]) { - 16 -> when (versionParts[2]) { - 4, 5 -> null // TODO V1_16R3 (if possible) - else -> null - } + // Can't support 1.16.5 bc 1.16.5 paper userdev do not exist 17 -> when (versionParts[2]) { - 0, 1 -> null // TODO V1_17R1 (if possible) + 0, 1 -> V1_17R1_PacketManager() else -> null }