From 68598777b1996b2a939dbf5d2603a0a90b1ee74f Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Tue, 7 Jun 2022 14:38:30 +0200 Subject: [PATCH] Add initial listener classes --- build.gradle.kts | 8 ++-- .../playershops/listener/EventListener.java | 20 ++++++++++ .../listener/InventoryListener.java | 39 +++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/alttd/playershops/listener/EventListener.java create mode 100644 src/main/java/com/alttd/playershops/listener/InventoryListener.java diff --git a/build.gradle.kts b/build.gradle.kts index b6c68b2..1d91c36 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -47,9 +47,9 @@ bukkit { fun gitCommit(): String { val os = ByteArrayOutputStream() -// project.exec { -// commandLine = "git rev-parse --short HEAD".split(" ") -// standardOutput = os -// } + project.exec { + commandLine = "git rev-parse --short HEAD".split(" ") + standardOutput = os + } return String(os.toByteArray()).trim() } \ No newline at end of file diff --git a/src/main/java/com/alttd/playershops/listener/EventListener.java b/src/main/java/com/alttd/playershops/listener/EventListener.java new file mode 100644 index 0000000..ab67312 --- /dev/null +++ b/src/main/java/com/alttd/playershops/listener/EventListener.java @@ -0,0 +1,20 @@ +package com.alttd.playershops.listener; + +import org.bukkit.Bukkit; +import org.bukkit.event.HandlerList; +import org.bukkit.plugin.java.JavaPlugin; + +public class EventListener implements org.bukkit.event.Listener { + protected boolean isRegistered = false; + + protected void register(JavaPlugin instance) { + Bukkit.getServer().getPluginManager().registerEvents(this, instance); + isRegistered = true; + } + + protected void unregister() { + HandlerList.unregisterAll(this); + isRegistered = false; + } + +} diff --git a/src/main/java/com/alttd/playershops/listener/InventoryListener.java b/src/main/java/com/alttd/playershops/listener/InventoryListener.java new file mode 100644 index 0000000..daca892 --- /dev/null +++ b/src/main/java/com/alttd/playershops/listener/InventoryListener.java @@ -0,0 +1,39 @@ +package com.alttd.playershops.listener; + +import org.bukkit.OfflinePlayer; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.Inventory; + +public class InventoryListener extends EventListener { + + protected final Inventory inventory; + protected boolean cancelCloseUnregister = false; + + public InventoryListener(Inventory inv) { + this.inventory = inv; + } + + @EventHandler(ignoreCancelled = true) + public void unregisterOnClose(InventoryCloseEvent event) { + if (event.getView().getTopInventory().equals(inventory) && !cancelCloseUnregister) unregister(); + } + + @EventHandler(ignoreCancelled = true) + public void unregisterOnLeaveEvent(PlayerQuitEvent event) { + if ((inventory.getHolder() instanceof OfflinePlayer) && event.getPlayer().getUniqueId().equals(((OfflinePlayer) inventory.getHolder()).getUniqueId())) + unregister(); + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) + public void onInventoryDrag(InventoryDragEvent event) { + if (event.getView().getTopInventory().equals(inventory)) for (int slot : event.getRawSlots()) if (slot < inventory.getSize()) { + event.setCancelled(true); + return; + } + } + +}