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; + } + } + +}