From 475bc16cd362c7512a072781cad737b71f4e531d Mon Sep 17 00:00:00 2001 From: Krakenied Date: Sun, 20 Jul 2025 18:50:33 +0200 Subject: Add EvenMoreFish fishing and hunting types and dedicated item def impl --- bukkit/build.gradle.kts | 12 ++-- bukkit/libs/SuperiorSkyblock2-2025.1.jar | Bin 315184 -> 0 bytes bukkit/libs/WildStacker-2025.1.jar | Bin 43497 -> 0 bytes bukkit/libs/even-more-fish-plugin-2.0.7.jar | Bin 0 -> 452091 bytes .../quests/bukkit/BukkitQuestsPlugin.java | 4 ++ .../quests/bukkit/config/BukkitQuestsLoader.java | 5 ++ .../quests/bukkit/item/EvenMoreFishQuestItem.java | 35 ++++++++++ .../type/dependent/EvenMoreFishFishTaskType.java | 71 +++++++++++++++++++++ .../dependent/EvenMoreFishFishingTaskType.java | 19 ++++++ .../dependent/EvenMoreFishHuntingTaskType.java | 19 ++++++ bukkit/src/main/resources/plugin.yml | 1 + 11 files changed, 162 insertions(+), 4 deletions(-) delete mode 100644 bukkit/libs/SuperiorSkyblock2-2025.1.jar delete mode 100644 bukkit/libs/WildStacker-2025.1.jar create mode 100644 bukkit/libs/even-more-fish-plugin-2.0.7.jar create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/item/EvenMoreFishQuestItem.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishTaskType.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishingTaskType.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishHuntingTaskType.java (limited to 'bukkit') diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 99cedbc9..1efc4f85 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -29,6 +29,8 @@ repositories { maven("https://repo.auxilor.io/repository/maven-public/") // EssentialsX maven("https://repo.essentialsx.net/releases/") + // EvenMoreFish TODO fix when they stop publishing 20 MB fat jar (it breaks annotations and not limited to) + //maven("https://repo.codemc.io/repository/EvenMoreFish/") // FancyNpcs maven("https://repo.fancyinnovations.com/releases") // MMOItems, MythicLib @@ -91,6 +93,8 @@ dependencies { compileOnlyPlugin("com.willfp:libreforge:4.21.1") // EssentialsX compileOnlyPlugin("net.essentialsx:EssentialsX:2.19.7") + // EvenMoreFish TODO fix when they stop publishing 20 MB fat jar (it breaks annotations and not limited to) + //compileOnlyPlugin("com.oheers.evenmorefish:even-more-fish-plugin:2.0.7") // FancyNpcs compileOnlyPlugin("de.oliver:FancyNpcs:2.5.1") // IridiumSkyblock TODO fix whenever repo is up @@ -123,16 +127,16 @@ dependencies { compileOnlyPlugin("com.github.brcdev-minecraft:shopgui-api:3.0.0") // Slimefun4 compileOnlyPlugin("com.github.Slimefun:Slimefun4:RC-37") - // SuperiorSkyblock2 TODO fix whenever repo is up - //compileOnlyPlugin("com.bgsoftware:SuperiorSkyblockAPI:2022.9") + // SuperiorSkyblock2 + compileOnlyPlugin("com.bgsoftware:SuperiorSkyblockAPI:2025.1") // uSkyBlock TODO fix whenever repo is up //compileOnlyPlugin("ovh.uskyblock:uSkyBlock-API:2.8.9") // Vault compileOnlyPlugin("com.github.MilkBowl:VaultAPI:1.7.1") // VotingPlugin compileOnlyPlugin("com.bencodez:votingplugin:6.18.4") - // WildStacker TODO fix whenever repo is up - //compileOnlyPlugin("com.bgsoftware:WildStackerAPI:2023.3") + // WildStacker + compileOnlyPlugin("com.bgsoftware:WildStackerAPI:2025.1") // ZNPCsPlus compileOnlyPlugin("lol.pyr:znpcsplus-api:2.0.0-SNAPSHOT") diff --git a/bukkit/libs/SuperiorSkyblock2-2025.1.jar b/bukkit/libs/SuperiorSkyblock2-2025.1.jar deleted file mode 100644 index 902968c3..00000000 Binary files a/bukkit/libs/SuperiorSkyblock2-2025.1.jar and /dev/null differ diff --git a/bukkit/libs/WildStacker-2025.1.jar b/bukkit/libs/WildStacker-2025.1.jar deleted file mode 100644 index d88bd95d..00000000 Binary files a/bukkit/libs/WildStacker-2025.1.jar and /dev/null differ diff --git a/bukkit/libs/even-more-fish-plugin-2.0.7.jar b/bukkit/libs/even-more-fish-plugin-2.0.7.jar new file mode 100644 index 00000000..1fd30feb Binary files /dev/null and b/bukkit/libs/even-more-fish-plugin-2.0.7.jar differ 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 -- cgit v1.2.3-70-g09d2