diff options
| author | fatpigsarefat <fatpigsarefat@outlook.com> | 2018-04-17 19:10:05 +0100 |
|---|---|---|
| committer | fatpigsarefat <fatpigsarefat@outlook.com> | 2018-04-17 19:10:05 +0100 |
| commit | 690f38cd36a3634bb29d8cdc832c81ef4ca07d3a (patch) | |
| tree | 6b915726ef31fa58681c2dea45cd4e08ab7d7c80 /src/me/fatpigsarefat/quests/obj | |
| parent | 3174a34214b47d1a4a050c1651c204ddf8f108bd (diff) | |
completely forgotten
Diffstat (limited to 'src/me/fatpigsarefat/quests/obj')
| -rw-r--r-- | src/me/fatpigsarefat/quests/obj/Items.java | 5 | ||||
| -rw-r--r-- | src/me/fatpigsarefat/quests/obj/Messages.java | 5 | ||||
| -rw-r--r-- | src/me/fatpigsarefat/quests/obj/misc/QItemStack.java | 4 | ||||
| -rw-r--r-- | src/me/fatpigsarefat/quests/obj/misc/QMenuDaily.java | 118 | ||||
| -rw-r--r-- | src/me/fatpigsarefat/quests/obj/misc/QMenuQuest.java | 66 |
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; |
