aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/me/fatpigsarefat/quests/events
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/fatpigsarefat/quests/events')
-rw-r--r--src/main/java/me/fatpigsarefat/quests/events/EventInventory.java87
-rw-r--r--src/main/java/me/fatpigsarefat/quests/events/EventPlayerJoin.java25
-rw-r--r--src/main/java/me/fatpigsarefat/quests/events/EventPlayerLeave.java25
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());
+ }
+
+}