diff --git a/build.gradle.kts b/build.gradle.kts index 090afbc..00566db 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -29,6 +29,7 @@ paper { name = "MannequinNPC" version = project.version as String apiVersion = "1.21" + foliaSupported = true description = "Mannequin!" authors = listOf("Hareworks") } diff --git a/kommand-lib b/kommand-lib index 1e2476a..9e1ee75 160000 --- a/kommand-lib +++ b/kommand-lib @@ -1 +1 @@ -Subproject commit 1e2476a27b7ad934c45f309042579a6f821ca24d +Subproject commit 9e1ee75736bbbecc7ef69f229c2bb55a8f4fbce8 diff --git a/src/main/kotlin/net/hareworks/npc-mannequin/Plugin.kt b/src/main/kotlin/net/hareworks/npc-mannequin/Plugin.kt index 1d3c421..297cd65 100644 --- a/src/main/kotlin/net/hareworks/npc-mannequin/Plugin.kt +++ b/src/main/kotlin/net/hareworks/npc-mannequin/Plugin.kt @@ -12,13 +12,12 @@ import net.hareworks.permits_lib.PermitsLib import net.hareworks.permits_lib.bukkit.MutationSession import org.bukkit.plugin.ServicePriority import org.bukkit.plugin.java.JavaPlugin -import org.bukkit.scheduler.BukkitRunnable class Plugin : JavaPlugin() { private var kommand: KommandLib? = null private lateinit var registry: MannequinRegistry private var permissionSession: MutationSession? = null - private var tickTask: BukkitRunnable? = null + private var tickTask: io.papermc.paper.threadedregions.scheduler.ScheduledTask? = null override fun onEnable() { val storage = MannequinStorage(this) @@ -34,8 +33,8 @@ class Plugin : JavaPlugin() { server.servicesManager.register(MannequinRegistry::class.java, registry, this, ServicePriority.Normal) // Start tick task for dynamic behavior (e.g. look-at) - tickTask = MannequinTickTask(registry) - tickTask?.runTaskTimer(this, 20L, 2L) + val task = MannequinTickTask(registry) + tickTask = server.globalRegionScheduler.runAtFixedRate(this, { _ -> task.tick() }, 20L, 2L) logger.info("Loaded ${registry.all().size} mannequin definitions.") } diff --git a/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinRegistry.kt b/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinRegistry.kt index 882a7b7..b8a7054 100644 --- a/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinRegistry.kt +++ b/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinRegistry.kt @@ -148,7 +148,7 @@ class MannequinRegistry( val updated = record.updateLocation(stored) val entity = if (teleport) controller.locate(updated) else null val finalRecord = if (entity != null) { - entity.teleport(location) + entity.teleportAsync(location) updated.updateEntityId(entity.uniqueId) } else { updated diff --git a/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinTickTask.kt b/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinTickTask.kt index 5d4fb78..9425e3e 100644 --- a/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinTickTask.kt +++ b/src/main/kotlin/net/hareworks/npc-mannequin/service/MannequinTickTask.kt @@ -1,10 +1,9 @@ package net.hareworks.npc_mannequin.service import org.bukkit.GameMode -import org.bukkit.scheduler.BukkitRunnable -class MannequinTickTask(private val registry: MannequinRegistry) : BukkitRunnable() { - override fun run() { +class MannequinTickTask(private val registry: MannequinRegistry) { + fun tick() { registry.all().forEach { record -> val settings = record.settings val entity = registry.locate(record.id) ?: return@forEach @@ -64,7 +63,7 @@ class MannequinTickTask(private val registry: MannequinRegistry) : BukkitRunnabl state.isResetting = false if (kotlin.math.abs(location.yaw - newLoc.yaw) > 1.0f || kotlin.math.abs(location.pitch - newLoc.pitch) > 1.0f) { - entity.teleport(newLoc) + entity.teleportAsync(newLoc) } } else { // Return Home logic @@ -116,7 +115,7 @@ class MannequinTickTask(private val registry: MannequinRegistry) : BukkitRunnabl newLoc.pitch = currentPitch if (kotlin.math.abs(location.yaw - newLoc.yaw) > 0.1f || kotlin.math.abs(location.pitch - newLoc.pitch) > 0.1f) { - entity.teleport(newLoc) + entity.teleportAsync(newLoc) } } }