aboutsummaryrefslogtreecommitdiffstats
path: root/src/me/fatpigsarefat/quests/obj
diff options
context:
space:
mode:
Diffstat (limited to 'src/me/fatpigsarefat/quests/obj')
-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
5 files changed, 183 insertions, 15 deletions
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;