aboutsummaryrefslogtreecommitdiffstats
path: root/src/me/fatpigsarefat/quests/events/EventInventory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/me/fatpigsarefat/quests/events/EventInventory.java')
-rw-r--r--src/me/fatpigsarefat/quests/events/EventInventory.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/me/fatpigsarefat/quests/events/EventInventory.java b/src/me/fatpigsarefat/quests/events/EventInventory.java
new file mode 100644
index 00000000..fae87623
--- /dev/null
+++ b/src/me/fatpigsarefat/quests/events/EventInventory.java
@@ -0,0 +1,73 @@
+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.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;
+
+ //TODO check page clicks
+
+ 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 (qMenuQuest.getSlotsToMenu().containsKey(event.getSlot())) {
+ String questid = qMenuQuest.getSlotsToMenu().get(event.getSlot());
+ Quest quest = Quests.getQuestManager().getQuestById(questid);
+ if (qMenuQuest.getOwner().getQuestProgressFile().startQuest(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());
+ }
+ }
+
+}