aboutsummaryrefslogtreecommitdiffstats
path: root/src/me/fatpigsarefat/quests/events/EventInventory.java
diff options
context:
space:
mode:
authorfatpigsarefat <fatpigsarefat@outlook.com>2018-04-15 20:03:06 +0100
committerfatpigsarefat <fatpigsarefat@outlook.com>2018-04-15 20:04:38 +0100
commitfa91b320cb5ddbd19ac54b8504834270feb0f75a (patch)
tree6743345f191edfd14b371970de589c2cb3552656 /src/me/fatpigsarefat/quests/events/EventInventory.java
parent2361783c0982de3a8fd02fd96d10f5362af8b983 (diff)
Initial commit
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());
+ }
+ }
+
+}