aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src
diff options
context:
space:
mode:
authorKrakenied <krakenied1@gmail.com>2025-07-20 18:50:33 +0200
committerKrakenied <46192742+Krakenied@users.noreply.github.com>2025-07-29 00:06:46 +0200
commit475bc16cd362c7512a072781cad737b71f4e531d (patch)
tree2327f02f3016ef47fbc265d8dc9649f526d315ea /bukkit/src
parent6f25b13f59e797ce48e0ec66740fb6c56843a24a (diff)
Add EvenMoreFish fishing and hunting types and dedicated item def impl
Diffstat (limited to 'bukkit/src')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java5
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/item/EvenMoreFishQuestItem.java35
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishTaskType.java71
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishFishingTaskType.java19
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EvenMoreFishHuntingTaskType.java19
-rw-r--r--bukkit/src/main/resources/plugin.yml1
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