aboutsummaryrefslogtreecommitdiffstats
path: root/src/me
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 /src/me
parent3174a34214b47d1a4a050c1651c204ddf8f108bd (diff)
completely forgotten
Diffstat (limited to 'src/me')
-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
9 files changed, 298 insertions, 17 deletions
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);
+ }
+ }
+ }
+ }
+ }
+ }
+
+}