summaryrefslogtreewikicommitdiff
path: root/bukkit/src/Plugin.kt
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2026-03-26 23:15:33 -0400
committerFreya Murphy <freya@freyacat.org>2026-03-27 23:09:23 -0400
commitf8322cd21cde68a72b05efbad3a05b8e67c0bdd0 (patch)
treed7e60bc8fedadc8fa7ae725571cad1f398eaf6dc /bukkit/src/Plugin.kt
downloadkenshinshideandseek2-f8322cd21cde68a72b05efbad3a05b8e67c0bdd0.tar.gz
kenshinshideandseek2-f8322cd21cde68a72b05efbad3a05b8e67c0bdd0.tar.bz2
kenshinshideandseek2-f8322cd21cde68a72b05efbad3a05b8e67c0bdd0.zip
initial
Diffstat (limited to 'bukkit/src/Plugin.kt')
-rw-r--r--bukkit/src/Plugin.kt87
1 files changed, 87 insertions, 0 deletions
diff --git a/bukkit/src/Plugin.kt b/bukkit/src/Plugin.kt
new file mode 100644
index 0000000..325d4cd
--- /dev/null
+++ b/bukkit/src/Plugin.kt
@@ -0,0 +1,87 @@
+package cat.freya.khs.bukkit
+
+import cat.freya.khs.Khs
+import cat.freya.khs.bukkit.disguise.Disguiser
+import cat.freya.khs.bukkit.disguise.EntityHider
+import cat.freya.khs.bukkit.event.*
+import org.bukkit.command.Command
+import org.bukkit.command.CommandSender
+import org.bukkit.entity.Player as BukkitPlayer
+import org.bukkit.plugin.java.JavaPlugin
+import org.bukkit.scheduler.BukkitRunnable
+
+class KhsPlugin : JavaPlugin() {
+ val shim: BukkitKhsShim = BukkitKhsShim(this)
+ val khs: Khs = Khs(shim)
+
+ // for blockhunt
+ val disguiser: Disguiser = Disguiser(this)
+ val entityHider: EntityHider = EntityHider()
+
+ override fun onEnable() {
+ khs.init()
+
+ if (!this.isEnabled()) return
+
+ // make sure onTick is run
+ object : BukkitRunnable() {
+ override fun run() {
+ khs.onTick()
+ disguiser.update()
+ }
+ }
+ .runTaskTimer(this, 0, 1)
+
+ // register bungee cord
+ server.messenger.registerOutgoingPluginChannel(this, "BungeeCord")
+
+ registerListeners()
+ }
+
+ override fun onDisable() {
+ khs.cleanup()
+ disguiser.cleanup()
+ }
+
+ private fun registerListeners() {
+ BreakListener(this)
+ ChatListener(this)
+ CommandListener(this)
+ DamageListener(this)
+ InteractListener(this)
+ InventoryListener(this)
+ JoinLeaveListener(this)
+ MovementListener(this)
+ PlayerListener(this)
+ PacketListener(this)
+ RespawnListener(this)
+ }
+
+ fun scheduleTask(fn: () -> Unit) {
+ if (!isEnabled) return
+ server.scheduler.runTask(this, fn)
+ }
+
+ override fun onCommand(
+ sender: CommandSender,
+ cmd: Command,
+ label: String,
+ args: Array<String>,
+ ): Boolean {
+ val player = sender as? BukkitPlayer ?: return false
+ val khsPlayer = BukkitKhsPlayer(shim, player)
+ khs.commandGroup.handleCommand(khsPlayer, args.toList())
+ return true
+ }
+
+ override fun onTabComplete(
+ sender: CommandSender,
+ cmd: Command,
+ label: String,
+ args: Array<String>,
+ ): List<String> {
+ val player = sender as? BukkitPlayer ?: return listOf()
+ val khsPlayer = BukkitKhsPlayer(shim, player)
+ return khs.commandGroup.handleTabComplete(khsPlayer, args.toList())
+ }
+}