From 4fd54b9641021e6a5dff173f848e5db37bce8904 Mon Sep 17 00:00:00 2001 From: Fortern Date: Fri, 7 Aug 2026 17:21:28 +0800 Subject: [PATCH] 26.2 --- .../nms/v26_R2/NMSHandlerImpl.kt | 36 +++++++++++++++++++ .../forternhelper/reflection/NMSAdapter.kt | 1 + 2 files changed, 37 insertions(+) create mode 100644 src/main/kotlin/xyz/fortern/forternhelper/nms/v26_R2/NMSHandlerImpl.kt diff --git a/src/main/kotlin/xyz/fortern/forternhelper/nms/v26_R2/NMSHandlerImpl.kt b/src/main/kotlin/xyz/fortern/forternhelper/nms/v26_R2/NMSHandlerImpl.kt new file mode 100644 index 0000000..1cdd9ea --- /dev/null +++ b/src/main/kotlin/xyz/fortern/forternhelper/nms/v26_R2/NMSHandlerImpl.kt @@ -0,0 +1,36 @@ +package xyz.fortern.forternhelper.nms.v26_R2 + +import org.bukkit.entity.Villager +import xyz.fortern.forternhelper.reflection.NMSAdapter.PKG_NAME +import xyz.fortern.forternhelper.reflection.NMSHandler +import java.lang.reflect.Field +import java.lang.reflect.Method + +// 26.2 +class NMSHandlerImpl : NMSHandler { + + override fun setVillagerRestock(villager: Villager, restockToday: Int) { + val mcVillager = villagerGetHandlerMethod.invoke(villager) + villagerRestockTodayField.isAccessible = true + villagerRestockTodayField.set(mcVillager, restockToday) + } + + companion object { + private val craftVillagerClass: Class<*> + private val villagerGetHandlerMethod: Method + private val mcVillagerClass: Class<*> + private val villagerRestockTodayField: Field + + + init { + try { + craftVillagerClass = Class.forName("$PKG_NAME.entity.CraftVillager") + villagerGetHandlerMethod = craftVillagerClass.getMethod("getHandle") + mcVillagerClass = Class.forName("net.minecraft.world.entity.npc.villager.Villager") + villagerRestockTodayField = mcVillagerClass.getField("numberOfRestocksToday") + } catch (e: ReflectiveOperationException) { + throw RuntimeException(e) + } + } + } +} diff --git a/src/main/kotlin/xyz/fortern/forternhelper/reflection/NMSAdapter.kt b/src/main/kotlin/xyz/fortern/forternhelper/reflection/NMSAdapter.kt index 99b7989..133c212 100644 --- a/src/main/kotlin/xyz/fortern/forternhelper/reflection/NMSAdapter.kt +++ b/src/main/kotlin/xyz/fortern/forternhelper/reflection/NMSAdapter.kt @@ -31,6 +31,7 @@ object NMSAdapter { "1.21.9", "1.21.10" -> "v1_21_R6" "1.21.11" -> "v1_21_R7" "26.1", "26.1.1", "26.1.2" -> "v26_R1" + "26.2" -> "v26_R2" else -> throw Exception("Unknown NMS version") } }