diff options
Diffstat (limited to 'bukkit/src')
7 files changed, 154 insertions, 0 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index eb5a2cf0..b7e4ebdd 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -120,6 +120,8 @@ import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EcoBossesKilling import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EcoMobsKillingTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EssentialsBalanceTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EssentialsMoneyEarnTaskType; +import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EvenMoreFishFishingTaskType; +import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EvenMoreFishHuntingTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.FabledSkyBlockLevelTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.FancyNpcsDeliverTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.FancyNpcsInteractTaskType; @@ -503,6 +505,8 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { taskTypeManager.registerTaskType(() -> new EcoMobsKillingTaskType(this), () -> CompatUtils.isPluginEnabled("EcoMobs")); taskTypeManager.registerTaskType(() -> new EssentialsBalanceTaskType(this), () -> CompatUtils.isPluginEnabled("Essentials")); taskTypeManager.registerTaskType(() -> new EssentialsMoneyEarnTaskType(this), () -> CompatUtils.isPluginEnabled("Essentials")); + taskTypeManager.registerTaskType(() -> new EvenMoreFishFishingTaskType(this), () -> CompatUtils.isPluginEnabled("EvenMoreFish")); + taskTypeManager.registerTaskType(() -> new EvenMoreFishHuntingTaskType(this), () -> CompatUtils.isPluginEnabled("EvenMoreFish")); taskTypeManager.registerTaskType(() -> new FabledSkyBlockLevelTaskType(this), () -> CompatUtils.isPluginEnabled("FabledSkyBlock")); // not tested taskTypeManager.registerTaskType(() -> new FancyNpcsDeliverTaskType(this), () -> CompatUtils.isPluginEnabled("FancyNpcs")); taskTypeManager.registerTaskType(() -> new FancyNpcsInteractTaskType(this), () -> CompatUtils.isPluginEnabled("FancyNpcs")); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java index 561e65b3..acd01743 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.config; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter; import com.leonardobishop.quests.bukkit.item.CustomFishingQuestItem; +import com.leonardobishop.quests.bukkit.item.EvenMoreFishQuestItem; import com.leonardobishop.quests.bukkit.item.ExecutableItemsQuestItem; import com.leonardobishop.quests.bukkit.item.ItemsAdderQuestItem; import com.leonardobishop.quests.bukkit.item.MMOItemsQuestItem; @@ -524,6 +525,10 @@ public class BukkitQuestsLoader implements QuestsLoader { if (!Bukkit.getPluginManager().isPluginEnabled("CustomFishing")) return FileVisitResult.CONTINUE; item = new CustomFishingQuestItem(id, config.contains("item.ids") ? config.getStringList("item.ids") : Collections.singletonList(config.getString("item.id"))); break; + case "evenmorefish": + if (!Bukkit.getPluginManager().isPluginEnabled("EvenMoreFish")) return FileVisitResult.CONTINUE; + item = new EvenMoreFishQuestItem(id, config.getString("item.rarity"), config.getString("item.fish")); + break; } questItemRegistry.registerItem(id, item); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/item/EvenMoreFishQuestItem.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/item/EvenMoreFishQuestItem.java new file mode 100644 index 00000000..c190e6cd --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/item/EvenMoreFishQuestItem.java @@ -0,0 +1,35 @@ +package com.leonardobishop.quests.bukkit.item; + +import com.oheers.fish.EvenMoreFish; +import com.oheers.fish.fishing.items.Fish; +import org.bukkit.inventory.ItemStack; + +public class EvenMoreFishQuestItem extends QuestItem { + + private final String rarityName; + private final String fishName; + + public EvenMoreFishQuestItem(final String id, final String rarityName, final String fishName) { + super("evenmorefish", id); + this.rarityName = rarityName; + this.fishName = fishName; + } + + @Override + public ItemStack getItemStack() { + final Fish fish = EvenMoreFish.getInstance() + .getApi() + .getFish(this.rarityName, this.fishName); + return fish != null ? fish.give() : null; + } + + @Override + public boolean compareItemStack(final ItemStack other, final boolean exactMatch) { + final Fish fish = EvenMoreFish.getInstance() + .getApi() + .getFish(other); + return fish != null + && fish.getRarity().getId().equals(this.rarityName) + && fish.getName().equals(this.fishName); + } +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishTaskType.java new file mode 100644 index 00000000..42007080 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishTaskType.java @@ -0,0 +1,71 @@ +package com.leonardobishop.quests.bukkit.tasktype.type.dependent; + +import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; +import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraintSet; +import com.leonardobishop.quests.common.player.QPlayer; +import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; +import com.leonardobishop.quests.common.quest.Quest; +import com.leonardobishop.quests.common.quest.Task; +import com.oheers.fish.fishing.items.Fish; +import org.bukkit.entity.Player; + +public abstract class EvenMoreFishFishTaskType extends BukkitTaskType { + + private final BukkitQuestsPlugin plugin; + + public EvenMoreFishFishTaskType(String type, String author, String description, BukkitQuestsPlugin plugin) { + super(type, author, description); + this.plugin = plugin; + + this.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); + this.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + this.addConfigValidator(TaskUtils.useEnumConfigValidator(this, TaskUtils.StringMatchMode.class, "fish-match-mode")); + this.addConfigValidator(TaskUtils.useEnumConfigValidator(this, TaskUtils.StringMatchMode.class, "rarity-match-mode")); + } + + protected void handle(Player player, Fish fish) { + if (player.hasMetadata("NPC")) { + return; + } + + QPlayer qPlayer = this.plugin.getPlayerManager().getPlayer(player.getUniqueId()); + if (qPlayer == null) { + return; + } + + String fishName = fish.getName(); + String rarityName = fish.getRarity().getId(); + + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskConstraintSet.ALL)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); + + this.debug("Player caught fish " + fishName + " of rarity " + rarityName, quest.getId(), task.getId(), player.getUniqueId()); + + if (!TaskUtils.matchString(this, pendingTask, fishName, player.getUniqueId(), "fish", "fishes", false, "fish-match-mode", false)) { + this.debug("Continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; + } + + if (!TaskUtils.matchString(this, pendingTask, rarityName, player.getUniqueId(), "rarity", "rarities", false, "rarity-match-mode", false)) { + this.debug("Continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; + } + + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + this.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + + int amount = (int) task.getConfigValue("amount"); + + if (progress >= amount) { + this.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setCompleted(true); + } + + TaskUtils.sendTrackAdvancement(player, quest, task, pendingTask, amount); + } + } +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishingTaskType.java new file mode 100644 index 00000000..00d930b8 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishingTaskType.java @@ -0,0 +1,19 @@ +package com.leonardobishop.quests.bukkit.tasktype.type.dependent; + +import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.oheers.fish.api.EMFFishEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +public final class EvenMoreFishFishingTaskType extends EvenMoreFishFishTaskType { + + public EvenMoreFishFishingTaskType(BukkitQuestsPlugin plugin) { + super("evenmorefish_fishing", TaskUtils.TASK_ATTRIBUTION_STRING, "Catch a set amount of EvenMoreFish fish", plugin); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onEMFFish(EMFFishEvent event) { + this.handle(event.getPlayer(), event.getFish()); + } +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishHuntingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishHuntingTaskType.java new file mode 100644 index 00000000..e03d032a --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishHuntingTaskType.java @@ -0,0 +1,19 @@ +package com.leonardobishop.quests.bukkit.tasktype.type.dependent; + +import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.oheers.fish.api.EMFFishHuntEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +public final class EvenMoreFishHuntingTaskType extends EvenMoreFishFishTaskType { + + public EvenMoreFishHuntingTaskType(BukkitQuestsPlugin plugin) { + super("evenmorefish_hunting", TaskUtils.TASK_ATTRIBUTION_STRING, "Hunt a set amount of EvenMoreFish fish", plugin); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onEMFFishHunt(EMFFishHuntEvent event) { + this.handle(event.getPlayer(), event.getFish()); + } +} diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 982ef575..d925a6f4 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -17,6 +17,7 @@ softdepend: - EcoBosses - EcoMobs - Essentials +- EvenMoreFish - FabledSkyBlock - FancyNpcs - IridiumSkyblock |
