From 4851d25071fee7620054eedc13cda47e7ba9881d Mon Sep 17 00:00:00 2001 From: 5vl Date: Mon, 30 May 2022 01:24:23 +0200 Subject: [PATCH] Made the player be yeeted. --- src/main/java/me/fivevl/troll/Main.kt | 16 ++++++++++++- .../me/fivevl/troll/commands/TrollCommand.kt | 2 +- src/main/java/me/fivevl/troll/gui/TrollGui.kt | 4 +++- .../troll/listeners/InvClickListener.kt | 23 +++++++++++++++++++ .../troll/listeners/InvCloseListener.kt | 13 +++++++++++ 5 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/fivevl/troll/listeners/InvClickListener.kt create mode 100644 src/main/java/me/fivevl/troll/listeners/InvCloseListener.kt diff --git a/src/main/java/me/fivevl/troll/Main.kt b/src/main/java/me/fivevl/troll/Main.kt index d5a2536..2303593 100644 --- a/src/main/java/me/fivevl/troll/Main.kt +++ b/src/main/java/me/fivevl/troll/Main.kt @@ -1,12 +1,26 @@ package me.fivevl.troll import me.fivevl.troll.commands.TrollCommand +import me.fivevl.troll.listeners.InvClickListener +import me.fivevl.troll.listeners.InvCloseListener +import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin class Main : JavaPlugin() { override fun onEnable() { Utils.instance = this - getCommand("troll")!!.setExecutor(TrollCommand()) + registerCommands() + registerListeners() logger.info("Troll plugin enabled successfully!") } + + private fun registerCommands() { + getCommand("troll")!!.setExecutor(TrollCommand()) + } + + private fun registerListeners() { + val plm = Bukkit.getPluginManager() + plm.registerEvents(InvClickListener(), this) + plm.registerEvents(InvCloseListener(), this) + } } \ No newline at end of file diff --git a/src/main/java/me/fivevl/troll/commands/TrollCommand.kt b/src/main/java/me/fivevl/troll/commands/TrollCommand.kt index 32cb359..4e6a0f8 100644 --- a/src/main/java/me/fivevl/troll/commands/TrollCommand.kt +++ b/src/main/java/me/fivevl/troll/commands/TrollCommand.kt @@ -24,7 +24,7 @@ class TrollCommand : CommandExecutor { p.sendMessage(Utils.color("Player not found!")) return true } - p.openInventory(TrollGui.getGui(target)) + p.openInventory(TrollGui.getGui(target, p)) return true } } \ No newline at end of file diff --git a/src/main/java/me/fivevl/troll/gui/TrollGui.kt b/src/main/java/me/fivevl/troll/gui/TrollGui.kt index 78a6d65..9df55ca 100644 --- a/src/main/java/me/fivevl/troll/gui/TrollGui.kt +++ b/src/main/java/me/fivevl/troll/gui/TrollGui.kt @@ -8,9 +8,11 @@ import org.bukkit.inventory.Inventory import org.bukkit.inventory.ItemStack object TrollGui { - fun getGui(target: Player): Inventory { + val inTrollGui = HashMap() + fun getGui(target: Player, from: Player): Inventory { val gui = Bukkit.createInventory(null, 54, Utils.color("Troll Menu - ${target.name}")) gui.setItem(0, getYeetItem()) + inTrollGui[from] = target return gui } diff --git a/src/main/java/me/fivevl/troll/listeners/InvClickListener.kt b/src/main/java/me/fivevl/troll/listeners/InvClickListener.kt new file mode 100644 index 0000000..ba95460 --- /dev/null +++ b/src/main/java/me/fivevl/troll/listeners/InvClickListener.kt @@ -0,0 +1,23 @@ +package me.fivevl.troll.listeners + +import me.fivevl.troll.gui.TrollGui +import org.bukkit.entity.Player +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.inventory.InventoryClickEvent + +class InvClickListener : Listener { + @EventHandler + fun onInvClick(e: InventoryClickEvent) { + val p = e.whoClicked as Player + if (TrollGui.inTrollGui.containsKey(p)) { + e.isCancelled = true + val ps = TrollGui.inTrollGui[p]!! + if (e.rawSlot == 0) { + ps.velocity = ps.location.toVector().multiply(6) + TrollGui.inTrollGui.remove(p) + p.closeInventory() + } + } + } +} \ No newline at end of file diff --git a/src/main/java/me/fivevl/troll/listeners/InvCloseListener.kt b/src/main/java/me/fivevl/troll/listeners/InvCloseListener.kt new file mode 100644 index 0000000..b086f4c --- /dev/null +++ b/src/main/java/me/fivevl/troll/listeners/InvCloseListener.kt @@ -0,0 +1,13 @@ +package me.fivevl.troll.listeners + +import me.fivevl.troll.gui.TrollGui +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.inventory.InventoryCloseEvent + +class InvCloseListener : Listener { + @EventHandler + fun onInvClose(e: InventoryCloseEvent) { + TrollGui.inTrollGui.remove(e.player) + } +} \ No newline at end of file