aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfatpigsarefat <fatpigsarefat@outlook.com>2018-04-17 19:10:05 +0100
committerfatpigsarefat <fatpigsarefat@outlook.com>2018-04-17 19:10:05 +0100
commit690f38cd36a3634bb29d8cdc832c81ef4ca07d3a (patch)
tree6b915726ef31fa58681c2dea45cd4e08ab7d7c80
parent3174a34214b47d1a4a050c1651c204ddf8f108bd (diff)
completely forgotten
-rw-r--r--src/config.yml71
-rw-r--r--src/me/fatpigsarefat/quests/Quests.java1
-rw-r--r--src/me/fatpigsarefat/quests/events/EventInventory.java12
-rw-r--r--src/me/fatpigsarefat/quests/events/EventPlayerJoin.java4
-rw-r--r--src/me/fatpigsarefat/quests/obj/Items.java5
-rw-r--r--src/me/fatpigsarefat/quests/obj/Messages.java5
-rw-r--r--src/me/fatpigsarefat/quests/obj/misc/QItemStack.java4
-rw-r--r--src/me/fatpigsarefat/quests/obj/misc/QMenuDaily.java118
-rw-r--r--src/me/fatpigsarefat/quests/obj/misc/QMenuQuest.java66
-rw-r--r--src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java100
-rw-r--r--src/plugin.yml2
11 files changed, 370 insertions, 18 deletions
diff --git a/src/config.yml b/src/config.yml
index 948a415b..ca64aeaa 100644
--- a/src/config.yml
+++ b/src/config.yml
@@ -32,6 +32,7 @@
# The first lore you must give is called 'lore-normal'. This is the lore seen if the player has not started the quest.
# The second lore you must give is 'lore-started'. This will be appended to the first lore IF the player has started the quest - useful for putting progression.
# Within the lores you can get the players" progress for each task. Use {TASKID:progress} (replace TASKID with the ID of the task).
+# You can also get if a task is complete. Use {TASKID:complete} (replace TASKID with the ID of the task).
#
# Quests can be put inside a category. When a player does /quests they will first see a menu of categories. They can click one and another menu of quests
# under that category will show up. Categories can be disabled.
@@ -360,6 +361,49 @@ quests:
enabled: true
time: 1440
+ inventory1:
+ tasks:
+ beef:
+ type: "inventory"
+ item: RAW_BEEF
+ amount: 8
+ remove-items-when-complete: false
+ chicken:
+ type: "inventory"
+ item: RAW_CHICKEN
+ amount: 8
+ remove-items-when-complete: false
+ pork:
+ type: "inventory"
+ item: PORK
+ amount: 8
+ remove-items-when-complete: false
+ display:
+ name: "&cMeat Eater"
+ lore-normal:
+ - "&7This quest requires you to:"
+ - "&7 - Collect 8 raw beef, pork & chicken."
+ - ""
+ - "&7Rewards:"
+ - "&7 - $50 added to your in-game balance."
+ lore-started:
+ - ""
+ - "&7Your current progression:"
+ - "&7 - 8 raw beef collected: {beef:complete}."
+ - "&7 - 8 chicken collected: {chicken:complete}."
+ - "&7 - 8 pork collected: {pork:complete}."
+ type: "PORK"
+ rewards:
+ - "eco give {player} 50"
+ options:
+ category: "easy"
+ requires:
+ - ''
+ repeatable: true
+ cooldown:
+ enabled: true
+ time: 1440
+
playerkiller:
tasks:
playerkilling:
@@ -683,6 +727,21 @@ gui:
lore:
- "&7Return to the categories menu."
type: "ARROW"
+ page-prev:
+ name: "&7Previous Page"
+ lore:
+ - "&7Switch the page to page &c{prevpage}."
+ type: "FEATHER"
+ page-next:
+ name: "&7Next Page"
+ lore:
+ - "&7Switch the page to page &c{nextpage}."
+ type: "FEATHER"
+ page-desc:
+ name: "&7Page &c{page}"
+ lore:
+ - "&7You are currently viewing page &c{page}."
+ type: "PAPER"
quest-locked-display:
name: "&c&lQuest Locked"
lore:
@@ -716,6 +775,17 @@ options:
# Players cannot start any more quests than this at a single time
quest-started-limit: 2
+# This switches up the entire quest system.
+# By enabling daily-quests, players will no longer be presented with the standard Quest GUI.
+# Instead, they will be presented with 5 random quests.
+# The 'requirements' section in each quest does not apply here.
+# The 'cooldown' section in each quest does not apply here - if it's done, it's done (and will be repeatable next time they get the quest).
+# The 'repeatable' section in each quest does not apply here. It will NOT be repeatable until the next day.
+# Enabling this MAY cause previous quest progress to be modified, wiped or changed irreversibly! If you're testing this on a live server, it is wise to backup
+# the Quests/playerdata/ folder! You've been warned!
+daily-quests:
+ enabled: false
+
titles:
quest-start:
title: "&cQuest Started"
@@ -745,3 +815,4 @@ messages:
command-quest-start-admin-fail: "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. They may not have unlocked it, on cooldown, etc."
command-quest-complete-admin-fail: "&7Failed to complete '&c{quest}&7' for player &c{player}&7. They may have not started it."
command-taskview-admin-fail: "&7Task type '&c{task}&7' does not exist."
+ beta-reminder: "&cQuests > &7Reminder: you are currently using a &cbeta &7version of Quests. Please send bug reports to https://github.com/fatpigsarefat/Quests/issues and check for updates regularly using &c/quests admin update&7!"
diff --git a/src/me/fatpigsarefat/quests/Quests.java b/src/me/fatpigsarefat/quests/Quests.java
index 2c3a7880..ed6470d0 100644
--- a/src/me/fatpigsarefat/quests/Quests.java
+++ b/src/me/fatpigsarefat/quests/Quests.java
@@ -111,6 +111,7 @@ public class Quests extends JavaPlugin {
taskTypeManager.registerTaskType(new MobkillingCertainTaskType());
taskTypeManager.registerTaskType(new PlayerkillingTaskType());
taskTypeManager.registerTaskType(new FishingTaskType());
+ taskTypeManager.registerTaskType(new InventoryTaskType());
taskTypeManager.registerTaskType(new WalkingTaskType());
taskTypeManager.registerTaskType(new TamingTaskType());
taskTypeManager.registerTaskType(new MilkingTaskType());
diff --git a/src/me/fatpigsarefat/quests/events/EventInventory.java b/src/me/fatpigsarefat/quests/events/EventInventory.java
index fae87623..e9a1901a 100644
--- a/src/me/fatpigsarefat/quests/events/EventInventory.java
+++ b/src/me/fatpigsarefat/quests/events/EventInventory.java
@@ -34,14 +34,22 @@ public class EventInventory implements Listener {
QMenuQuest qMenuQuest = (QMenuQuest) qMenu;
//TODO check page clicks
+ 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));
- if (Options.CATEGORIES_ENABLED.getBooleanValue() && qMenuQuest.getBackButtonLocation() == event.getSlot()) {
+ } 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 (qMenuQuest.getSlotsToMenu().containsKey(event.getSlot())) {
+ } 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 (qMenuQuest.getOwner().getQuestProgressFile().startQuest(quest)) {
diff --git a/src/me/fatpigsarefat/quests/events/EventPlayerJoin.java b/src/me/fatpigsarefat/quests/events/EventPlayerJoin.java
index 26805748..14062af0 100644
--- a/src/me/fatpigsarefat/quests/events/EventPlayerJoin.java
+++ b/src/me/fatpigsarefat/quests/events/EventPlayerJoin.java
@@ -1,6 +1,7 @@
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;
@@ -13,6 +14,9 @@ public class EventPlayerJoin implements Listener {
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/me/fatpigsarefat/quests/obj/Items.java b/src/me/fatpigsarefat/quests/obj/Items.java
index c8f8b7b8..1ffeabc8 100644
--- a/src/me/fatpigsarefat/quests/obj/Items.java
+++ b/src/me/fatpigsarefat/quests/obj/Items.java
@@ -8,7 +8,10 @@ public enum Items {
BACK_BUTTON("gui.back-button"),
QUEST_LOCKED("gui.quest-locked-display"),
QUEST_COOLDOWN("gui.quest-cooldown-display"),
- QUEST_COMPLETED("gui.quest-completed-display");
+ QUEST_COMPLETED("gui.quest-completed-display"),
+ PAGE_PREV("gui.page-prev"),
+ PAGE_NEXT("gui.page-next"),
+ PAGE_DESCRIPTION("gui.page-desc");
String path;
diff --git a/src/me/fatpigsarefat/quests/obj/Messages.java b/src/me/fatpigsarefat/quests/obj/Messages.java
index e6ebac9c..9d3882bd 100644
--- a/src/me/fatpigsarefat/quests/obj/Messages.java
+++ b/src/me/fatpigsarefat/quests/obj/Messages.java
@@ -24,7 +24,8 @@ public enum Messages {
TITLE_QUEST_START_TITLE("titles.quest-start.title"),
TITLE_QUEST_START_SUBTITLE("titles.quest-start.subtitle"),
TITLE_QUEST_COMPLETE_TITLE("titles.quest-complete.title"),
- TITLE_QUEST_COMPLETE_SUBTITLE("titles.quest-complete.subtitle");
+ TITLE_QUEST_COMPLETE_SUBTITLE("titles.quest-complete.subtitle"),
+ BETA_REMINDER("messages.beta-reminder");
private String path;
@@ -36,7 +37,7 @@ public enum Messages {
if (Quests.getInstance().getConfig().contains(path)) {
String message = Quests.getInstance().getConfig().getString(path);
if (message != null) {
- return message;
+ return ChatColor.translateAlternateColorCodes('&', message);
}
}
return path;
diff --git a/src/me/fatpigsarefat/quests/obj/misc/QItemStack.java b/src/me/fatpigsarefat/quests/obj/misc/QItemStack.java
index efde9f51..af875eb3 100644
--- a/src/me/fatpigsarefat/quests/obj/misc/QItemStack.java
+++ b/src/me/fatpigsarefat/quests/obj/misc/QItemStack.java
@@ -96,6 +96,10 @@ public class QItemStack {
String str = String.valueOf(questProgress.getTaskProgress(parts[0]).getProgress());
s = s.replace("{" + m.group(1) + "}", (str.equals("null") ? String.valueOf(0) : str));
}
+ if (parts[1].equals("complete")) {
+ String str = String.valueOf(questProgress.getTaskProgress(parts[0]).isCompleted());
+ s = s.replace("{" + m.group(1) + "}", str);
+ }
}
}
formattedLore.add(s);
diff --git a/src/me/fatpigsarefat/quests/obj/misc/QMenuDaily.java b/src/me/fatpigsarefat/quests/obj/misc/QMenuDaily.java
new file mode 100644
index 00000000..c731a2dd
--- /dev/null
+++ b/src/me/fatpigsarefat/quests/obj/misc/QMenuDaily.java
@@ -0,0 +1,118 @@
+package me.fatpigsarefat.quests.obj.misc;
+
+import me.fatpigsarefat.quests.Quests;
+import me.fatpigsarefat.quests.obj.Items;
+import me.fatpigsarefat.quests.player.QPlayer;
+import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
+import me.fatpigsarefat.quests.quests.Quest;
+import org.bukkit.Bukkit;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+public class QMenuDaily implements QMenu {
+
+ private HashMap<Integer, String> slotsToQuestIds = new HashMap<>();
+ private int backButtonLocation = -1;
+ private boolean backButtonEnabled = true;
+ private QMenuCategory superMenu;
+ private String categoryName;
+ private final int pageSize = 45;
+ private QPlayer owner;
+
+ public QMenuDaily(QPlayer owner, QMenuCategory superMenu) {
+ this.owner = owner;
+ this.superMenu = superMenu;
+ }
+
+ public void populate(List<Quest> quests) {
+ int slot = 11;
+ for (Quest quest : quests) {
+ slotsToQuestIds.put(slot, quest.getId());
+ slot++;
+ if (slot == 16) {
+ break;
+ }
+ }
+ }
+
+ @Override
+ public HashMap<Integer, String> getSlotsToMenu() {
+ return slotsToQuestIds;
+ }
+
+ @Override
+ public QPlayer getOwner() {
+ return owner;
+ }
+
+ public String getCategoryName() {
+ return categoryName;
+ }
+
+ public Inventory toInventory(int page) {
+ int pageMin = pageSize * (page - 1);
+ int pageMax = pageSize * page;
+ String title = "Daily Quests";
+
+ Inventory inventory = Bukkit.createInventory(null, 27, title); //TODO make configurable title
+
+ int invSlot = 11;
+ for (int pointer = pageMin; pointer < pageMax; pointer++) {
+ if (slotsToQuestIds.containsKey(pointer)) {
+ Quest quest = Quests.getQuestManager().getQuestById(slotsToQuestIds.get(pointer));
+ QuestProgress questProgress = owner.getQuestProgressFile().getQuestProgress(quest);
+ long cooldown = owner.getQuestProgressFile().getCooldownFor(quest);
+ if (!owner.getQuestProgressFile().hasMetRequirements(quest)) {
+ List<String> quests = new ArrayList<>();
+ for (String requirement : quest.getRequirements()) {
+ quests.add(Quests.getQuestManager().getQuestById(requirement).getDisplayNameStripped());
+ }
+ Map<String, String> placeholders = new HashMap<>();
+ placeholders.put("{quest}", quest.getDisplayNameStripped());
+ placeholders.put("{requirements}", String.join(", ", quests));
+ ItemStack is = replaceItemStack(Items.QUEST_LOCKED.getItem(), placeholders);
+ inventory.setItem(invSlot, is);
+ } else if (!quest.isRepeatable() && questProgress.isCompletedBefore()) {
+ Map<String, String> placeholders = new HashMap<>();
+ placeholders.put("{quest}", quest.getDisplayNameStripped());
+ ItemStack is = replaceItemStack(Items.QUEST_COMPLETED.getItem(), placeholders);
+ inventory.setItem(invSlot, is);
+ } else if (cooldown > 0) {
+ Map<String, String> placeholders = new HashMap<>();
+ placeholders.put("{time}", Quests.convertToFormat(TimeUnit.MINUTES.convert(cooldown, TimeUnit.MILLISECONDS)));
+ placeholders.put("{quest}", quest.getDisplayNameStripped());
+ ItemStack is = replaceItemStack(Items.QUEST_COOLDOWN.getItem(), placeholders);
+ inventory.setItem(invSlot, is);
+ } else {
+ inventory.setItem(invSlot, Quests.getQuestManager().getQuestById(quest.getId()).getDisplayItem().toItemStack(questProgress));
+ }
+ }
+ invSlot++;
+ }
+
+ return inventory;
+ }
+
+ public ItemStack replaceItemStack(ItemStack is, Map<String, String> placeholders) {
+ ItemStack newItemStack = is.clone();
+ List<String> lore = newItemStack.getItemMeta().getLore();
+ List<String> newLore = new ArrayList<>();
+ for (String s : lore) {
+ for (Map.Entry<String, String> entry : placeholders.entrySet()) {
+ s = s.replace(entry.getKey(), entry.getValue());
+ }
+ newLore.add(s);
+ }
+ ItemMeta ism = newItemStack.getItemMeta();
+ ism.setLore(newLore);
+ newItemStack.setItemMeta(ism);
+ return newItemStack;
+ }
+}
diff --git a/src/me/fatpigsarefat/quests/obj/misc/QMenuQuest.java b/src/me/fatpigsarefat/quests/obj/misc/QMenuQuest.java
index 4df9df89..8932159c 100644
--- a/src/me/fatpigsarefat/quests/obj/misc/QMenuQuest.java
+++ b/src/me/fatpigsarefat/quests/obj/misc/QMenuQuest.java
@@ -7,7 +7,6 @@ import me.fatpigsarefat.quests.player.QPlayer;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
import me.fatpigsarefat.quests.quests.Quest;
import org.bukkit.Bukkit;
-import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -22,6 +21,9 @@ public class QMenuQuest implements QMenu {
private HashMap<Integer, String> slotsToQuestIds = new HashMap<>();
private int backButtonLocation = -1;
+ private int pagePrevLocation = -1;
+ private int pageNextLocation = -1;
+ private int currentPage = -1;
private boolean backButtonEnabled = true;
private QMenuCategory superMenu;
private String categoryName;
@@ -56,12 +58,31 @@ public class QMenuQuest implements QMenu {
return categoryName;
}
+ public int getPagePrevLocation() {
+ return pagePrevLocation;
+ }
+
+ public int getPageNextLocation() {
+ return pageNextLocation;
+ }
+
+ public int getCurrentPage() {
+ return currentPage;
+ }
+
+ public int getPageSize() {
+ return pageSize;
+ }
+
public Inventory toInventory(int page) {
+ currentPage = page;
int pageMin = pageSize * (page - 1);
int pageMax = pageSize * page;
String title = "Quests";
- ItemStack pageIs = new ItemStack(Material.DIRT);
+ ItemStack pageIs;
+ ItemStack pagePrevIs;
+ ItemStack pageNextIs;
ItemStack back = Items.BACK_BUTTON.getItem();
Inventory inventory = Bukkit.createInventory(null, 54, title); //TODO make configurable title
@@ -100,14 +121,32 @@ public class QMenuQuest implements QMenu {
invSlot++;
}
- inventory.setItem(49, pageIs);
+ pageNextLocation = -1;
+ pagePrevLocation = -1;
+
+ Map<String, String> pageplaceholders = new HashMap<>();
+ pageplaceholders.put("{prevpage}", String.valueOf(page - 1));
+ pageplaceholders.put("{nextpage}", String.valueOf(page + 1));
+ pageplaceholders.put("{page}", String.valueOf(page));
+ pageIs = replaceItemStack(Items.PAGE_DESCRIPTION.getItem(), pageplaceholders);
+ pagePrevIs = replaceItemStack(Items.PAGE_PREV.getItem(), pageplaceholders);
+ pageNextIs = replaceItemStack(Items.PAGE_NEXT.getItem(), pageplaceholders);
if (Options.CATEGORIES_ENABLED.getBooleanValue() && backButtonEnabled) {
inventory.setItem(45, back);
backButtonLocation = 45;
}
-
- if (Options.TRIM_GUI_SIZE.getBooleanValue() && page == 1) {
+ if (slotsToQuestIds.size() > pageSize) {
+ inventory.setItem(49, pageIs);
+ if (page != 1) {
+ inventory.setItem(48, pagePrevIs);
+ pagePrevLocation = 48;
+ }
+ if (Math.ceil((double) slotsToQuestIds.size() / ((double) 45)) != page) {
+ inventory.setItem(50, pageNextIs);
+ pageNextLocation = 50;
+ }
+ } else if (Options.TRIM_GUI_SIZE.getBooleanValue() && page == 1) {
int slotsUsed = 0;
for (int pointer = 0; pointer < pageMax; pointer++) {
if (inventory.getItem(pointer) != null) {
@@ -136,10 +175,10 @@ public class QMenuQuest implements QMenu {
trimmedInventory.setItem(slot, inventory.getItem(slot));
}
return trimmedInventory;
- } else {
- return inventory;
}
+ return inventory;
+
//TODO add page controls
}
@@ -163,13 +202,16 @@ public class QMenuQuest implements QMenu {
ItemStack newItemStack = is.clone();
List<String> lore = newItemStack.getItemMeta().getLore();
List<String> newLore = new ArrayList<>();
- for (String s : lore) {
- for (Map.Entry<String, String> entry : placeholders.entrySet()) {
- s = s.replace(entry.getKey(), entry.getValue());
+ ItemMeta ism = newItemStack.getItemMeta();
+ if (lore != null) {
+ for (String s : lore) {
+ for (Map.Entry<String, String> entry : placeholders.entrySet()) {
+ s = s.replace(entry.getKey(), entry.getValue());
+ ism.setDisplayName(ism.getDisplayName().replace(entry.getKey(), entry.getValue()));
+ }
+ newLore.add(s);
}
- newLore.add(s);
}
- ItemMeta ism = newItemStack.getItemMeta();
ism.setLore(newLore);
newItemStack.setItemMeta(ism);
return newItemStack;
diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java
new file mode 100644
index 00000000..d95e25d8
--- /dev/null
+++ b/src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java
@@ -0,0 +1,100 @@
+package me.fatpigsarefat.quests.quests.tasktypes;
+
+import me.fatpigsarefat.quests.Quests;
+import me.fatpigsarefat.quests.player.QPlayer;
+import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
+import me.fatpigsarefat.quests.player.questprogressfile.QuestProgressFile;
+import me.fatpigsarefat.quests.player.questprogressfile.TaskProgress;
+import me.fatpigsarefat.quests.quests.Quest;
+import me.fatpigsarefat.quests.quests.Task;
+import org.apache.commons.lang.StringUtils;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.event.inventory.InventoryInteractEvent;
+import org.bukkit.event.player.PlayerPickupItemEvent;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.scheduler.BukkitRunnable;
+
+public final class InventoryTaskType extends TaskType {
+
+ public InventoryTaskType() {
+ super("inventory", "fatpigsarefat", "Obtain a set of items.");
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onItemPickup(PlayerPickupItemEvent event) {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ checkInventory(event.getPlayer());
+ }
+ }.runTaskLater(Quests.getInstance(), 1L);
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onInventoryClick(InventoryInteractEvent event) {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ checkInventory((Player) event.getWhoClicked());
+ }
+ }.runTaskLater(Quests.getInstance(), 1L);
+ }
+
+ private void checkInventory(Player player) {
+ QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) {
+ return;
+ }
+
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+
+ Material material;
+ int amount = (int) task.getConfigValue("amount");
+ Object configBlock = task.getConfigValue("item");
+ Object configData = task.getConfigValue("data");
+ Object remove = task.getConfigValue("remove-items-when-complete");
+
+ if (StringUtils.isNumeric(String.valueOf(configBlock))) {
+ material = Material.getMaterial((int) configBlock);
+ } else {
+ material = Material.getMaterial(String.valueOf(configBlock));
+ }
+
+ if (material == null) {
+ continue;
+ }
+ ItemStack is;
+ if (configData != null) {
+ is = new ItemStack(material, amount, (Short) configData);
+ } else {
+ is = new ItemStack(material, amount);
+ }
+
+ if (player.getInventory().contains(is)) {
+ taskProgress.setCompleted(true);
+
+ if (remove != null && ((Boolean) remove)) {
+ player.getInventory().remove(is);
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/plugin.yml b/src/plugin.yml
index 16409321..ecccb6f9 100644
--- a/src/plugin.yml
+++ b/src/plugin.yml
@@ -1,5 +1,5 @@
name: Quests
-version: 2.0.0
+version: 2.0.0-beta
main: me.fatpigsarefat.quests.Quests
author: fatpigsarefat
softdepend: [ASkyBlock, uSkyBlock]