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 | |
| parent | 3174a34214b47d1a4a050c1651c204ddf8f108bd (diff) | |
completely forgotten
Diffstat (limited to 'src/me')
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); + } + } + } + } + } + } + +} |
