diff options
Diffstat (limited to 'src/main/java/me/fatpigsarefat/quests/events')
3 files changed, 137 insertions, 0 deletions
diff --git a/src/main/java/me/fatpigsarefat/quests/events/EventInventory.java b/src/main/java/me/fatpigsarefat/quests/events/EventInventory.java new file mode 100644 index 00000000..9911c216 --- /dev/null +++ b/src/main/java/me/fatpigsarefat/quests/events/EventInventory.java @@ -0,0 +1,87 @@ +package me.fatpigsarefat.quests.events; + +import me.fatpigsarefat.quests.Quests; +import me.fatpigsarefat.quests.obj.Options; +import me.fatpigsarefat.quests.obj.misc.QMenu; +import me.fatpigsarefat.quests.obj.misc.QMenuCategory; +import me.fatpigsarefat.quests.obj.misc.QMenuQuest; +import me.fatpigsarefat.quests.quests.Quest; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.UUID; + +public class EventInventory implements Listener { + + private static HashMap<UUID, QMenu> tracker = new HashMap<>(); + private ArrayList<UUID> buffer = new ArrayList<>(); + + public static void track(UUID uuid, QMenu qMenu) { + tracker.put(uuid, qMenu); + } + + @EventHandler + public void onEvent(InventoryClickEvent event) { + if (tracker.containsKey(event.getWhoClicked().getUniqueId())) { + event.setCancelled(true); + QMenu qMenu = tracker.get(event.getWhoClicked().getUniqueId()); + + if (qMenu instanceof QMenuQuest) { + QMenuQuest qMenuQuest = (QMenuQuest) qMenu; + + if (qMenuQuest.getPagePrevLocation() == event.getSlot()) { + buffer.add(event.getWhoClicked().getUniqueId()); + event.getWhoClicked().openInventory(qMenuQuest.toInventory(qMenuQuest.getCurrentPage() - 1)); + + } else if (qMenuQuest.getPageNextLocation() == event.getSlot()) { + buffer.add(event.getWhoClicked().getUniqueId()); + event.getWhoClicked().openInventory(qMenuQuest.toInventory(qMenuQuest.getCurrentPage() + 1)); + + } else if (Options.CATEGORIES_ENABLED.getBooleanValue() && qMenuQuest.getBackButtonLocation() == event.getSlot()) { + QMenuCategory qMenuCategory = qMenuQuest.getSuperMenu(); + buffer.add(event.getWhoClicked().getUniqueId()); + event.getWhoClicked().openInventory(qMenuCategory.toInventory(1)); + tracker.put(event.getWhoClicked().getUniqueId(), qMenuCategory); + + } else if (event.getSlot() < qMenuQuest.getPageSize() && qMenuQuest.getSlotsToMenu().containsKey(event.getSlot() + (((qMenuQuest + .getCurrentPage()) - 1) * qMenuQuest.getPageSize()))) { + String questid = qMenuQuest.getSlotsToMenu().get(event.getSlot()); + Quest quest = Quests.getQuestManager().getQuestById(questid); + if (event.getClick() == ClickType.LEFT) { + if (qMenuQuest.getOwner().getQuestProgressFile().startQuest(quest) == 0) { + event.getWhoClicked().closeInventory(); + } + } else if (event.getClick() == ClickType.RIGHT) { + if (qMenuQuest.getOwner().getQuestProgressFile().cancelQuest(quest)) { + event.getWhoClicked().closeInventory(); + } + } + } + } else if (qMenu instanceof QMenuCategory) { + QMenuCategory qMenuCategory = (QMenuCategory) qMenu; + + if (qMenuCategory.getSlotsToMenu().containsKey(event.getSlot())) { + QMenuQuest qMenuQuest = qMenuCategory.getSlotsToMenu().get(event.getSlot()); + buffer.add(event.getWhoClicked().getUniqueId()); + event.getWhoClicked().openInventory(qMenuQuest.toInventory(1)); + tracker.put(event.getWhoClicked().getUniqueId(), qMenuQuest); + } + } + } + } + + @EventHandler + public void onEvent(InventoryCloseEvent event) { + if (buffer.contains(event.getPlayer().getUniqueId())) { + buffer.remove(event.getPlayer().getUniqueId()); + } else if (tracker.containsKey(event.getPlayer().getUniqueId())) { + tracker.remove(event.getPlayer().getUniqueId()); + } + } + +} diff --git a/src/main/java/me/fatpigsarefat/quests/events/EventPlayerJoin.java b/src/main/java/me/fatpigsarefat/quests/events/EventPlayerJoin.java new file mode 100644 index 00000000..14062af0 --- /dev/null +++ b/src/main/java/me/fatpigsarefat/quests/events/EventPlayerJoin.java @@ -0,0 +1,25 @@ +package me.fatpigsarefat.quests.events; + +import me.fatpigsarefat.quests.Quests; +import me.fatpigsarefat.quests.obj.Messages; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +import java.util.UUID; + +public class EventPlayerJoin implements Listener { + + @EventHandler + public void onEvent(PlayerJoinEvent event) { + UUID playerUuid = event.getPlayer().getUniqueId(); + Quests.getPlayerManager().loadPlayer(playerUuid); + if (Quests.getInstance().getDescription().getVersion().contains("beta") && event.getPlayer().hasPermission("quests.admin")) { + event.getPlayer().sendMessage(Messages.BETA_REMINDER.getMessage()); + } + if (Quests.getUpdater().isUpdateReady() && event.getPlayer().hasPermission("quests.admin")) { + event.getPlayer().sendMessage(Quests.getUpdater().getMessage()); + } + } + +} diff --git a/src/main/java/me/fatpigsarefat/quests/events/EventPlayerLeave.java b/src/main/java/me/fatpigsarefat/quests/events/EventPlayerLeave.java new file mode 100644 index 00000000..15d09a8e --- /dev/null +++ b/src/main/java/me/fatpigsarefat/quests/events/EventPlayerLeave.java @@ -0,0 +1,25 @@ +package me.fatpigsarefat.quests.events; + +import me.fatpigsarefat.quests.Quests; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.scheduler.BukkitRunnable; + +import java.util.UUID; + +public class EventPlayerLeave implements Listener { + + @EventHandler + public void onEvent(PlayerQuitEvent event) { + UUID playerUuid = event.getPlayer().getUniqueId(); + new BukkitRunnable() { + @Override + public void run() { + Quests.getPlayerManager().getPlayer(playerUuid).getQuestProgressFile().saveToDisk(); + Quests.getPlayerManager().removePlayer(playerUuid); + } + }.runTaskAsynchronously(Quests.getInstance()); + } + +} |
