From 279cf8d33350ab9bf2387f3d4cdfa14d016b1845 Mon Sep 17 00:00:00 2001 From: fatpigsarefat Date: Sat, 21 Apr 2018 08:50:13 +0100 Subject: added configvalues in prep for creator, moved task types into their own package --- .../quests/tasktypes/ASkyBlockLevelType.java | 52 ---------- .../quests/tasktypes/BuildingCertainTaskType.java | 72 ------------- .../quests/quests/tasktypes/BuildingTaskType.java | 55 ---------- .../quests/quests/tasktypes/ConfigValue.java | 29 ++++++ .../quests/quests/tasktypes/FishingTaskType.java | 61 ----------- .../quests/quests/tasktypes/InventoryTaskType.java | 100 ------------------ .../quests/quests/tasktypes/MilkingTaskType.java | 64 ------------ .../quests/tasktypes/MiningCertainTaskType.java | 72 ------------- .../quests/quests/tasktypes/MiningTaskType.java | 56 ---------- .../tasktypes/MobkillingCertainTaskType.java | 91 ---------------- .../quests/tasktypes/MobkillingTaskType.java | 87 ---------------- .../quests/tasktypes/PlayerkillingTaskType.java | 70 ------------- .../quests/quests/tasktypes/ShearingTaskType.java | 63 ----------- .../quests/quests/tasktypes/TamingTaskType.java | 62 ----------- .../quests/quests/tasktypes/TaskType.java | 6 +- .../quests/quests/tasktypes/WalkingTaskType.java | 62 ----------- .../quests/tasktypes/types/ASkyBlockLevelType.java | 64 ++++++++++++ .../tasktypes/types/BuildingCertainTaskType.java | 87 ++++++++++++++++ .../quests/tasktypes/types/BuildingTaskType.java | 68 ++++++++++++ .../quests/tasktypes/types/FishingTaskType.java | 74 +++++++++++++ .../quests/tasktypes/types/InventoryTaskType.java | 115 +++++++++++++++++++++ .../quests/tasktypes/types/MilkingTaskType.java | 77 ++++++++++++++ .../tasktypes/types/MiningCertainTaskType.java | 87 ++++++++++++++++ .../quests/tasktypes/types/MiningTaskType.java | 72 +++++++++++++ .../tasktypes/types/MobkillingCertainTaskType.java | 106 +++++++++++++++++++ .../quests/tasktypes/types/MobkillingTaskType.java | 101 ++++++++++++++++++ .../tasktypes/types/PlayerkillingTaskType.java | 84 +++++++++++++++ .../quests/tasktypes/types/ShearingTaskType.java | 76 ++++++++++++++ .../quests/tasktypes/types/TamingTaskType.java | 75 ++++++++++++++ .../quests/tasktypes/types/WalkingTaskType.java | 75 ++++++++++++++ .../quests/tasktypes/types/uSkyBlockLevelType.java | 65 ++++++++++++ .../quests/tasktypes/uSkyBlockLevelType.java | 52 ---------- 32 files changed, 1260 insertions(+), 1020 deletions(-) delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/ASkyBlockLevelType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/BuildingCertainTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/BuildingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/ConfigValue.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/FishingTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/MilkingTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/MiningCertainTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/MiningTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingCertainTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/PlayerkillingTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/ShearingTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/TamingTaskType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/WalkingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/ASkyBlockLevelType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/FishingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/MilkingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingCertainTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/PlayerkillingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/ShearingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/TamingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/WalkingTaskType.java create mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/types/uSkyBlockLevelType.java delete mode 100644 src/me/fatpigsarefat/quests/quests/tasktypes/uSkyBlockLevelType.java (limited to 'src') diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/ASkyBlockLevelType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/ASkyBlockLevelType.java deleted file mode 100644 index e86b5a0b..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/ASkyBlockLevelType.java +++ /dev/null @@ -1,52 +0,0 @@ -package me.fatpigsarefat.quests.quests.tasktypes; - -import com.wasteofplastic.askyblock.events.IslandPostLevelEvent; -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.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; - -public final class ASkyBlockLevelType extends TaskType { - - public ASkyBlockLevelType() { - super("askyblock_level", "fatpigsarefat", "Reach a certain island level for ASkyBlock."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onIslandLevel(IslandPostLevelEvent event) { - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer()); - 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; - } - - long islandLevelNeeded = (long) (int) task.getConfigValue("level"); - - taskProgress.setProgress(event.getLongLevel()); - - if (((long) taskProgress.getProgress()) >= islandLevelNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/BuildingCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/BuildingCertainTaskType.java deleted file mode 100644 index 8a2add5d..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/BuildingCertainTaskType.java +++ /dev/null @@ -1,72 +0,0 @@ -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.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockPlaceEvent; - -public final class BuildingCertainTaskType extends TaskType { - - public BuildingCertainTaskType() { - super("blockplacecertain", "fatpigsarefat", "Place a set amount of a specific block."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockPlace(BlockPlaceEvent event) { - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - 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; - Object configBlock = task.getConfigValue("block"); - Object configData = task.getConfigValue("data"); - - if (StringUtils.isNumeric(String.valueOf(configBlock))) { - material = Material.getMaterial((int) configBlock); - } else { - material = Material.getMaterial(String.valueOf(configBlock)); - } - - if (material != null && event.getBlock().getType().equals(material)) { - if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) { - continue; - } - int brokenBlocksNeeded = (int) task.getConfigValue("amount"); - - int progressBlocksBroken; - if (taskProgress.getProgress() == null) { - progressBlocksBroken = 0; - } else { - progressBlocksBroken = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressBlocksBroken + 1); - - if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/BuildingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/BuildingTaskType.java deleted file mode 100644 index 17d8247b..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/BuildingTaskType.java +++ /dev/null @@ -1,55 +0,0 @@ -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.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockPlaceEvent; - -public final class BuildingTaskType extends TaskType { - - public BuildingTaskType() { - super("blockplace", "fatpigsarefat", "Place a set amount of blocks."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockPlace(BlockPlaceEvent event) { - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - 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; - } - - int brokenBlocksNeeded = (int) task.getConfigValue("amount"); - - int progressBlocksBroken; - if (taskProgress.getProgress() == null) { - progressBlocksBroken = 0; - } else { - progressBlocksBroken = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressBlocksBroken + 1); - - if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/ConfigValue.java b/src/me/fatpigsarefat/quests/quests/tasktypes/ConfigValue.java new file mode 100644 index 00000000..d886fe16 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/ConfigValue.java @@ -0,0 +1,29 @@ +package me.fatpigsarefat.quests.quests.tasktypes; + +/** + * This is for the quest creator and is purely cosmetic. + */ +public final class ConfigValue { + + private String key; + private boolean required; + private String description; + + public ConfigValue(String key, boolean required, String description) { + this.key = key; + this.required = required; + this.description = description; + } + + public String getKey() { + return key; + } + + public boolean isRequired() { + return required; + } + + public String getDescription() { + return description; + } +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/FishingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/FishingTaskType.java deleted file mode 100644 index fac0bbda..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/FishingTaskType.java +++ /dev/null @@ -1,61 +0,0 @@ -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.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerFishEvent; - -public final class FishingTaskType extends TaskType { - - public FishingTaskType() { - super("fishing", "fatpigsarefat", "Catch a set amount of items from the sea."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onFishCaught(PlayerFishEvent event) { - if (event.getState() == PlayerFishEvent.State.CAUGHT_FISH) { - return; - } - Player player = event.getPlayer(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - int catchesNeeded = (int) task.getConfigValue("amount"); - - int progressCatches; - if (taskProgress.getProgress() == null) { - progressCatches = 0; - } else { - progressCatches = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressCatches + 1); - - if (((int) taskProgress.getProgress()) >= catchesNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java deleted file mode 100644 index d95e25d8..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/InventoryTaskType.java +++ /dev/null @@ -1,100 +0,0 @@ -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/me/fatpigsarefat/quests/quests/tasktypes/MilkingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/MilkingTaskType.java deleted file mode 100644 index 81a08dca..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/MilkingTaskType.java +++ /dev/null @@ -1,64 +0,0 @@ -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.bukkit.Material; -import org.bukkit.entity.Cow; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerInteractEntityEvent; - -public final class MilkingTaskType extends TaskType { - - public MilkingTaskType() { - super("milking", "fatpigsarefat", "Milk a set amount of cows."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMilk(PlayerInteractEntityEvent event) { - if (!(event.getRightClicked() instanceof Cow) || (event.getPlayer().getItemInHand().getType() != Material.BUCKET)) { - return; - } - - Player player = event.getPlayer(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - int cowsNeeded = (int) task.getConfigValue("amount"); - - int progressMilked; - if (taskProgress.getProgress() == null) { - progressMilked = 0; - } else { - progressMilked = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressMilked + 1); - - if (((int) taskProgress.getProgress()) >= cowsNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/MiningCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/MiningCertainTaskType.java deleted file mode 100644 index a53d2373..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/MiningCertainTaskType.java +++ /dev/null @@ -1,72 +0,0 @@ -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.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; - -public final class MiningCertainTaskType extends TaskType { - - public MiningCertainTaskType() { - super("blockbreakcertain", "fatpigsarefat", "Break a set amount of a specific block."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockPlace(BlockBreakEvent event) { - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - 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; - Object configBlock = task.getConfigValue("block"); - Object configData = task.getConfigValue("data"); - - if (StringUtils.isNumeric(String.valueOf(configBlock))) { - material = Material.getMaterial((int) configBlock); - } else { - material = Material.getMaterial(String.valueOf(configBlock)); - } - - if (material != null && event.getBlock().getType().equals(material)) { - if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) { - continue; - } - int brokenBlocksNeeded = (int) task.getConfigValue("amount"); - - int progressBlocksBroken; - if (taskProgress.getProgress() == null) { - progressBlocksBroken = 0; - } else { - progressBlocksBroken = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressBlocksBroken + 1); - - if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/MiningTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/MiningTaskType.java deleted file mode 100644 index a0bcb4bf..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/MiningTaskType.java +++ /dev/null @@ -1,56 +0,0 @@ -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.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; - -public final class MiningTaskType extends TaskType { - - public MiningTaskType() { - // type, author, description - super("blockbreak", "fatpigsarefat", "Break a set amount of blocks."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockBreak(BlockBreakEvent event) { - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); // get the qplayer so you can get their progress - QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); // the quest progress file stores progress about all quests and tasks - - for (Quest quest : super.getRegisteredQuests()) { // iterate through all quests which are registered to use this task type - if (questProgressFile.hasStartedQuest(quest)) { // check if the player has actually started the quest before progressing it - QuestProgress questProgress = questProgressFile.getQuestProgress(quest); // get their progress for the specific quest - - for (Task task : quest.getTasksOfType(super.getType())) { // get all tasks of this type - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); // get the task progress and increment progress by 1 - - if (taskProgress.isCompleted()) { // dont need to increment a completed task - continue; - } - - int brokenBlocksNeeded = (int) task.getConfigValue("amount"); // this will retrieve a value from the config under the key "value" - - int progressBlocksBroken; - if (taskProgress.getProgress() == null) { // note: if the player has never progressed before, getProgress() will return null - progressBlocksBroken = 0; - } else { - progressBlocksBroken = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressBlocksBroken + 1); // the progress does not have to be an int, although must be serializable by the yaml provider - - if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { // completion statement, if true the task is complete - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingCertainTaskType.java deleted file mode 100644 index 11848918..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingCertainTaskType.java +++ /dev/null @@ -1,91 +0,0 @@ -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.bukkit.ChatColor; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityDeathEvent; - -public final class MobkillingCertainTaskType extends TaskType { - - public MobkillingCertainTaskType() { - super("mobkillingcertain", "fatpigsarefat", "Kill a set amount of a specific entity type."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMobKill(EntityDeathEvent event) { - Entity killer = event.getEntity().getKiller(); - Entity mob = event.getEntity(); - - if (mob instanceof Player) { - return; - } - - if (killer == null) { - return; - } - - Player player = event.getEntity().getKiller(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - String configEntity = (String) task.getConfigValue("mob"); - String configName = (String) task.getConfigValue("name"); - - EntityType entity = EntityType.fromName(configEntity); - if (entity == null) { - continue; - } - - if (configName != null) { - configName = ChatColor.translateAlternateColorCodes('&', configName); - if (!mob.getCustomName().equals(configName)) { - return; - } - } - - if (mob.getType() != entity) { - continue; - } - - int mobKillsNeeded = (int) task.getConfigValue("amount"); - - int progressKills; - if (taskProgress.getProgress() == null) { - progressKills = 0; - } else { - progressKills = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressKills + 1); - - if (((int) taskProgress.getProgress()) >= mobKillsNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingTaskType.java deleted file mode 100644 index cdc3449d..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/MobkillingTaskType.java +++ /dev/null @@ -1,87 +0,0 @@ -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.bukkit.entity.Animals; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityDeathEvent; - -public final class MobkillingTaskType extends TaskType { - - public MobkillingTaskType() { - super("mobkilling", "fatpigsarefat", "Kill a set amount of entities."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMobKill(EntityDeathEvent event) { - Entity killer = event.getEntity().getKiller(); - Entity mob = event.getEntity(); - - if (mob instanceof Player) { - return; - } - - if (killer == null) { - return; - } - - Player player = event.getEntity().getKiller(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - boolean hostilitySpecified = false; - boolean hostile = false; - if (task.getConfigValue("hostile") != null) { - hostilitySpecified = true; - hostile = (boolean) task.getConfigValue("hostile"); - } - - if (hostilitySpecified) { - if (!hostile && !(mob instanceof Animals)) { - continue; - } else if (hostile && !(mob instanceof Monster)) { - continue; - } - } - - int mobKillsNeeded = (int) task.getConfigValue("amount"); - - int progressKills; - if (taskProgress.getProgress() == null) { - progressKills = 0; - } else { - progressKills = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressKills + 1); - - if (((int) taskProgress.getProgress()) >= mobKillsNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/PlayerkillingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/PlayerkillingTaskType.java deleted file mode 100644 index 2edf5282..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/PlayerkillingTaskType.java +++ /dev/null @@ -1,70 +0,0 @@ -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.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityDeathEvent; - -public final class PlayerkillingTaskType extends TaskType { - - public PlayerkillingTaskType() { - super("playerkilling", "fatpigsarefat", "Kill a set amount of players."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMobKill(EntityDeathEvent event) { - Entity killer = event.getEntity().getKiller(); - Entity mob = event.getEntity(); - - if (!(mob instanceof Player)) { - return; - } - - if (killer == null) { - return; - } - - Player player = event.getEntity().getKiller(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - int playerKillsNeeded = (int) task.getConfigValue("amount"); - - int progressKills; - if (taskProgress.getProgress() == null) { - progressKills = 0; - } else { - progressKills = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressKills + 1); - - if (((int) taskProgress.getProgress()) >= playerKillsNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/ShearingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/ShearingTaskType.java deleted file mode 100644 index 57e36980..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/ShearingTaskType.java +++ /dev/null @@ -1,63 +0,0 @@ -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.bukkit.entity.Player; -import org.bukkit.entity.Sheep; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerShearEntityEvent; - -public final class ShearingTaskType extends TaskType { - - public ShearingTaskType() { - super("shearing", "fatpigsarefat", "Shear a set amount of sheep."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onShear(PlayerShearEntityEvent event) { - if (!(event.getEntity() instanceof Sheep)) { - return; - } - - Player player = event.getPlayer(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - int sheepNeeded = (int) task.getConfigValue("amount"); - - int progressSheared; - if (taskProgress.getProgress() == null) { - progressSheared = 0; - } else { - progressSheared = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressSheared + 1); - - if (((int) taskProgress.getProgress()) >= sheepNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/TamingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/TamingTaskType.java deleted file mode 100644 index 5227d6fe..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/TamingTaskType.java +++ /dev/null @@ -1,62 +0,0 @@ -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.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityTameEvent; - -public final class TamingTaskType extends TaskType { - - public TamingTaskType() { - super("taming", "fatpigsarefat", "Tame a set amount of animals."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onTame(EntityTameEvent event) { - if (!(event.getOwner() instanceof Player)) { - return; - } - - Player player = (Player) event.getOwner(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - int tamesNeeded = (int) task.getConfigValue("amount"); - - int progressTamed; - if (taskProgress.getProgress() == null) { - progressTamed = 0; - } else { - progressTamed = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressTamed + 1); - - if (((int) taskProgress.getProgress()) >= tamesNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/TaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/TaskType.java index d84d13ba..bb4ddea5 100644 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/TaskType.java +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/TaskType.java @@ -4,6 +4,7 @@ import me.fatpigsarefat.quests.quests.Quest; import org.bukkit.event.Listener; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public abstract class TaskType implements Listener { @@ -37,7 +38,6 @@ public abstract class TaskType implements Listener { return quests; } - public final String getType() { return type; } @@ -49,4 +49,8 @@ public abstract class TaskType implements Listener { public String getDescription() { return description; } + + public List getCreatorConfigValues() { + return Collections.emptyList(); + } } diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/WalkingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/WalkingTaskType.java deleted file mode 100644 index 0256096e..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/WalkingTaskType.java +++ /dev/null @@ -1,62 +0,0 @@ -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.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerMoveEvent; - -public final class WalkingTaskType extends TaskType { - - public WalkingTaskType() { - super("walking", "fatpigsarefat", "Walk a set distance."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMove(PlayerMoveEvent event) { - if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) { - return; - } - - Player player = event.getPlayer(); - - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); - 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; - } - - int distanceNeeded = (int) task.getConfigValue("distance"); - - int progressDistance; - if (taskProgress.getProgress() == null) { - progressDistance = 0; - } else { - progressDistance = (int) taskProgress.getProgress(); - } - - taskProgress.setProgress(progressDistance + 1); - - if (((int) taskProgress.getProgress()) >= distanceNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/ASkyBlockLevelType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/ASkyBlockLevelType.java new file mode 100644 index 00000000..5fcdda15 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/ASkyBlockLevelType.java @@ -0,0 +1,64 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +import com.wasteofplastic.askyblock.events.IslandPostLevelEvent; +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +import java.util.ArrayList; +import java.util.List; + +public final class ASkyBlockLevelType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public ASkyBlockLevelType() { + super("askyblock_level", "fatpigsarefat", "Reach a certain island level for ASkyBlock."); + this.creatorConfigValues.add(new ConfigValue("level", true, "Minimum island level needed.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onIslandLevel(IslandPostLevelEvent event) { + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer()); + 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; + } + + long islandLevelNeeded = (long) (int) task.getConfigValue("level"); + + taskProgress.setProgress(event.getLongLevel()); + + if (((long) taskProgress.getProgress()) >= islandLevelNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java new file mode 100644 index 00000000..425fd693 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java @@ -0,0 +1,87 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.apache.commons.lang.StringUtils; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockPlaceEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class BuildingCertainTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public BuildingCertainTaskType() { + super("blockplacecertain", "fatpigsarefat", "Place a set amount of a specific block."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be placed.")); + this.creatorConfigValues.add(new ConfigValue("block", true, "Name or ID of block.")); + this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(BlockPlaceEvent event) { + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + 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; + Object configBlock = task.getConfigValue("block"); + Object configData = task.getConfigValue("data"); + + if (StringUtils.isNumeric(String.valueOf(configBlock))) { + material = Material.getMaterial((int) configBlock); + } else { + material = Material.getMaterial(String.valueOf(configBlock)); + } + + if (material != null && event.getBlock().getType().equals(material)) { + if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) { + continue; + } + int brokenBlocksNeeded = (int) task.getConfigValue("amount"); + + int progressBlocksBroken; + if (taskProgress.getProgress() == null) { + progressBlocksBroken = 0; + } else { + progressBlocksBroken = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressBlocksBroken + 1); + + if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingTaskType.java new file mode 100644 index 00000000..0943ddf9 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingTaskType.java @@ -0,0 +1,68 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockPlaceEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class BuildingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public BuildingTaskType() { + super("blockplace", "fatpigsarefat", "Place a set amount of blocks."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be placed.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(BlockPlaceEvent event) { + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + 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; + } + + int brokenBlocksNeeded = (int) task.getConfigValue("amount"); + + int progressBlocksBroken; + if (taskProgress.getProgress() == null) { + progressBlocksBroken = 0; + } else { + progressBlocksBroken = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressBlocksBroken + 1); + + if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/FishingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/FishingTaskType.java new file mode 100644 index 00000000..87ce8147 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/FishingTaskType.java @@ -0,0 +1,74 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerFishEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class FishingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public FishingTaskType() { + super("fishing", "fatpigsarefat", "Catch a set amount of items from the sea."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of fish to be caught.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onFishCaught(PlayerFishEvent event) { + if (event.getState() == PlayerFishEvent.State.CAUGHT_FISH) { + return; + } + Player player = event.getPlayer(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + int catchesNeeded = (int) task.getConfigValue("amount"); + + int progressCatches; + if (taskProgress.getProgress() == null) { + progressCatches = 0; + } else { + progressCatches = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressCatches + 1); + + if (((int) taskProgress.getProgress()) >= catchesNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java new file mode 100644 index 00000000..66499681 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java @@ -0,0 +1,115 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +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; + +import java.util.ArrayList; +import java.util.List; + +public final class InventoryTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public InventoryTaskType() { + super("inventory", "fatpigsarefat", "Obtain a set of items."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of item to retrieve.")); + this.creatorConfigValues.add(new ConfigValue("item", true, "Name or ID of item.")); + this.creatorConfigValues.add(new ConfigValue("remove-items-when-complete", false, "Take the items away from the player on completion (true/false, default = false).")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @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/me/fatpigsarefat/quests/quests/tasktypes/types/MilkingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MilkingTaskType.java new file mode 100644 index 00000000..7de92d59 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MilkingTaskType.java @@ -0,0 +1,77 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.Material; +import org.bukkit.entity.Cow; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerInteractEntityEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class MilkingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public MilkingTaskType() { + super("milking", "fatpigsarefat", "Milk a set amount of cows."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of cows to be milked.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onMilk(PlayerInteractEntityEvent event) { + if (!(event.getRightClicked() instanceof Cow) || (event.getPlayer().getItemInHand().getType() != Material.BUCKET)) { + return; + } + + Player player = event.getPlayer(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + int cowsNeeded = (int) task.getConfigValue("amount"); + + int progressMilked; + if (taskProgress.getProgress() == null) { + progressMilked = 0; + } else { + progressMilked = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressMilked + 1); + + if (((int) taskProgress.getProgress()) >= cowsNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java new file mode 100644 index 00000000..de9e4f94 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java @@ -0,0 +1,87 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.apache.commons.lang.StringUtils; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockBreakEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class MiningCertainTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public MiningCertainTaskType() { + super("blockbreakcertain", "fatpigsarefat", "Break a set amount of a specific block."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be broken.")); + this.creatorConfigValues.add(new ConfigValue("block", true, "Name or ID of block.")); + this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(BlockBreakEvent event) { + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + 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; + Object configBlock = task.getConfigValue("block"); + Object configData = task.getConfigValue("data"); + + if (StringUtils.isNumeric(String.valueOf(configBlock))) { + material = Material.getMaterial((int) configBlock); + } else { + material = Material.getMaterial(String.valueOf(configBlock)); + } + + if (material != null && event.getBlock().getType().equals(material)) { + if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) { + continue; + } + int brokenBlocksNeeded = (int) task.getConfigValue("amount"); + + int progressBlocksBroken; + if (taskProgress.getProgress() == null) { + progressBlocksBroken = 0; + } else { + progressBlocksBroken = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressBlocksBroken + 1); + + if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningTaskType.java new file mode 100644 index 00000000..f0ba95ca --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningTaskType.java @@ -0,0 +1,72 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockBreakEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class MiningTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public MiningTaskType() { + // type, author, description + super("blockbreak", "fatpigsarefat", "Break a set amount of blocks."); + + // config values for the quest creator to use, if unspecified then the quest creator will not know what to put here (and will require users to + // go into the config and manually configure there) + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be broken.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockBreak(BlockBreakEvent event) { + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); // get the qplayer so you can get their progress + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); // the quest progress file stores progress about all quests and tasks + + for (Quest quest : super.getRegisteredQuests()) { // iterate through all quests which are registered to use this task type + if (questProgressFile.hasStartedQuest(quest)) { // check if the player has actually started the quest before progressing it + QuestProgress questProgress = questProgressFile.getQuestProgress(quest); // get their progress for the specific quest + + for (Task task : quest.getTasksOfType(super.getType())) { // get all tasks of this type + TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); // get the task progress and increment progress by 1 + + if (taskProgress.isCompleted()) { // dont need to increment a completed task + continue; + } + + int brokenBlocksNeeded = (int) task.getConfigValue("amount"); // this will retrieve a value from the config under the key "value" + + int progressBlocksBroken; + if (taskProgress.getProgress() == null) { // note: if the player has never progressed before, getProgress() will return null + progressBlocksBroken = 0; + } else { + progressBlocksBroken = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressBlocksBroken + 1); // the progress does not have to be an int, although must be serializable by the yaml provider + + if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) { // completion statement, if true the task is complete + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingCertainTaskType.java new file mode 100644 index 00000000..aeb56e0e --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingCertainTaskType.java @@ -0,0 +1,106 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.ChatColor; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class MobkillingCertainTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public MobkillingCertainTaskType() { + super("mobkillingcertain", "fatpigsarefat", "Kill a set amount of a specific entity type."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of mobs to be killed.")); + this.creatorConfigValues.add(new ConfigValue("mob", true, "Name of mob.")); + this.creatorConfigValues.add(new ConfigValue("name", false, "Only allow a specific name for mob (unspecified = any name allowed).")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onMobKill(EntityDeathEvent event) { + Entity killer = event.getEntity().getKiller(); + Entity mob = event.getEntity(); + + if (mob instanceof Player) { + return; + } + + if (killer == null) { + return; + } + + Player player = event.getEntity().getKiller(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + String configEntity = (String) task.getConfigValue("mob"); + String configName = (String) task.getConfigValue("name"); + + EntityType entity = EntityType.fromName(configEntity); + if (entity == null) { + continue; + } + + if (configName != null) { + configName = ChatColor.translateAlternateColorCodes('&', configName); + if (!mob.getCustomName().equals(configName)) { + return; + } + } + + if (mob.getType() != entity) { + continue; + } + + int mobKillsNeeded = (int) task.getConfigValue("amount"); + + int progressKills; + if (taskProgress.getProgress() == null) { + progressKills = 0; + } else { + progressKills = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressKills + 1); + + if (((int) taskProgress.getProgress()) >= mobKillsNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingTaskType.java new file mode 100644 index 00000000..8e0e5550 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MobkillingTaskType.java @@ -0,0 +1,101 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.entity.Animals; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Monster; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class MobkillingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public MobkillingTaskType() { + super("mobkilling", "fatpigsarefat", "Kill a set amount of entities."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of mobs to be killed.")); + this.creatorConfigValues.add(new ConfigValue("hostile", false, "Only allow hostile or non-hostile mobs (unspecified = any type allowed).")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onMobKill(EntityDeathEvent event) { + Entity killer = event.getEntity().getKiller(); + Entity mob = event.getEntity(); + + if (mob instanceof Player) { + return; + } + + if (killer == null) { + return; + } + + Player player = event.getEntity().getKiller(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + boolean hostilitySpecified = false; + boolean hostile = false; + if (task.getConfigValue("hostile") != null) { + hostilitySpecified = true; + hostile = (boolean) task.getConfigValue("hostile"); + } + + if (hostilitySpecified) { + if (!hostile && !(mob instanceof Animals)) { + continue; + } else if (hostile && !(mob instanceof Monster)) { + continue; + } + } + + int mobKillsNeeded = (int) task.getConfigValue("amount"); + + int progressKills; + if (taskProgress.getProgress() == null) { + progressKills = 0; + } else { + progressKills = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressKills + 1); + + if (((int) taskProgress.getProgress()) >= mobKillsNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/PlayerkillingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/PlayerkillingTaskType.java new file mode 100644 index 00000000..6a9e7481 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/PlayerkillingTaskType.java @@ -0,0 +1,84 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class PlayerkillingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public PlayerkillingTaskType() { + super("playerkilling", "fatpigsarefat", "Kill a set amount of players."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of mobs to be killed.")); + this.creatorConfigValues.add(new ConfigValue("hostile", false, "Only allow hostile or non-hostile mobs (unspecified = any type allowed).")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onMobKill(EntityDeathEvent event) { + Entity killer = event.getEntity().getKiller(); + Entity mob = event.getEntity(); + + if (!(mob instanceof Player)) { + return; + } + + if (killer == null) { + return; + } + + Player player = event.getEntity().getKiller(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + int playerKillsNeeded = (int) task.getConfigValue("amount"); + + int progressKills; + if (taskProgress.getProgress() == null) { + progressKills = 0; + } else { + progressKills = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressKills + 1); + + if (((int) taskProgress.getProgress()) >= playerKillsNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/ShearingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/ShearingTaskType.java new file mode 100644 index 00000000..316c3e28 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/ShearingTaskType.java @@ -0,0 +1,76 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Sheep; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerShearEntityEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class ShearingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public ShearingTaskType() { + super("shearing", "fatpigsarefat", "Shear a set amount of sheep."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of cows to be milked.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onShear(PlayerShearEntityEvent event) { + if (!(event.getEntity() instanceof Sheep)) { + return; + } + + Player player = event.getPlayer(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + int sheepNeeded = (int) task.getConfigValue("amount"); + + int progressSheared; + if (taskProgress.getProgress() == null) { + progressSheared = 0; + } else { + progressSheared = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressSheared + 1); + + if (((int) taskProgress.getProgress()) >= sheepNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/TamingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/TamingTaskType.java new file mode 100644 index 00000000..beca3b4e --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/TamingTaskType.java @@ -0,0 +1,75 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityTameEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class TamingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public TamingTaskType() { + super("taming", "fatpigsarefat", "Tame a set amount of animals."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of animals to be tamed.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onTame(EntityTameEvent event) { + if (!(event.getOwner() instanceof Player)) { + return; + } + + Player player = (Player) event.getOwner(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + int tamesNeeded = (int) task.getConfigValue("amount"); + + int progressTamed; + if (taskProgress.getProgress() == null) { + progressTamed = 0; + } else { + progressTamed = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressTamed + 1); + + if (((int) taskProgress.getProgress()) >= tamesNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/WalkingTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/WalkingTaskType.java new file mode 100644 index 00000000..5ddc2241 --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/WalkingTaskType.java @@ -0,0 +1,75 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerMoveEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class WalkingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public WalkingTaskType() { + super("walking", "fatpigsarefat", "Walk a set distance."); + this.creatorConfigValues.add(new ConfigValue("distance", true, "Amount of meters (blocks) to be travelled.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onMove(PlayerMoveEvent event) { + if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) { + return; + } + + Player player = event.getPlayer(); + + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId()); + 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; + } + + int distanceNeeded = (int) task.getConfigValue("distance"); + + int progressDistance; + if (taskProgress.getProgress() == null) { + progressDistance = 0; + } else { + progressDistance = (int) taskProgress.getProgress(); + } + + taskProgress.setProgress(progressDistance + 1); + + if (((int) taskProgress.getProgress()) >= distanceNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/uSkyBlockLevelType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/uSkyBlockLevelType.java new file mode 100644 index 00000000..d140ab8f --- /dev/null +++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/uSkyBlockLevelType.java @@ -0,0 +1,65 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +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 me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import us.talabrek.ultimateskyblock.api.event.uSkyBlockScoreChangedEvent; + +import java.util.ArrayList; +import java.util.List; + +public final class uSkyBlockLevelType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + + public uSkyBlockLevelType() { + super("uskyblock_level", "fatpigsarefat", "Reach a certain island level for uSkyBlock."); + this.creatorConfigValues.add(new ConfigValue("level", true, "Minimum island level needed.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onIslandLevel(uSkyBlockScoreChangedEvent event) { + QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().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; + } + + double islandLevelNeeded = (double) (int) task.getConfigValue("level"); + + taskProgress.setProgress(event.getScore().getScore()); + + if (((double) taskProgress.getProgress()) >= islandLevelNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + +} diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/uSkyBlockLevelType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/uSkyBlockLevelType.java deleted file mode 100644 index 89950c25..00000000 --- a/src/me/fatpigsarefat/quests/quests/tasktypes/uSkyBlockLevelType.java +++ /dev/null @@ -1,52 +0,0 @@ -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.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import us.talabrek.ultimateskyblock.api.event.uSkyBlockScoreChangedEvent; - -public final class uSkyBlockLevelType extends TaskType { - - public uSkyBlockLevelType() { - super("uskyblock_level", "fatpigsarefat", "Reach a certain island level for uSkyBlock."); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onIslandLevel(uSkyBlockScoreChangedEvent event) { - QPlayer qPlayer = Quests.getPlayerManager().getPlayer(event.getPlayer().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; - } - - double islandLevelNeeded = (double) (int) task.getConfigValue("level"); - - taskProgress.setProgress(event.getScore().getScore()); - - if (((double) taskProgress.getProgress()) >= islandLevelNeeded) { - taskProgress.setCompleted(true); - } - } - } - } - } - -} -- cgit v1.2.3-70-g09d2