Add initial listener classes

This commit is contained in:
Len 2022-06-07 14:38:30 +02:00
parent a8b980b938
commit 68598777b1
3 changed files with 63 additions and 4 deletions

View File

@ -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()
}

View File

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

View File

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