diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index b7bac5fc..fe19fd56 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -48,6 +48,7 @@ dependencies { // local jars compileOnly(files("libs/AdvancedEnchantments-api.jar")) + compileOnly(files("libs/BattlePass-4.0.6-api.jar")) compileOnly(files("libs/RealisticSeasons-api.jar")) compileOnly(files("libs/CustomCrops-api.jar")) compileOnly(files("libs/mcMMO-api.jar")) diff --git a/plugin/libs/BattlePass-4.0.6-api.jar b/plugin/libs/BattlePass-4.0.6-api.jar new file mode 100644 index 00000000..a82a625f Binary files /dev/null and b/plugin/libs/BattlePass-4.0.6-api.jar differ diff --git a/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java index e959e41a..d49b844e 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java @@ -30,6 +30,7 @@ import net.momirealms.customfishing.compatibility.entity.ItemsAdderEntityImpl; import net.momirealms.customfishing.compatibility.entity.MythicEntityImpl; import net.momirealms.customfishing.compatibility.item.*; import net.momirealms.customfishing.compatibility.level.*; +import net.momirealms.customfishing.compatibility.quest.BattlePassHook; import net.momirealms.customfishing.compatibility.quest.BetonQuestHook; import net.momirealms.customfishing.compatibility.quest.ClueScrollsHook; import net.momirealms.customfishing.compatibility.quest.NotQuestHook; @@ -134,6 +135,11 @@ public class IntegrationManagerImpl implements IntegrationManager { if (plugin.isHookedPluginEnabled("Vault")) { VaultHook.initialize(); } + if (plugin.isHookedPluginEnabled("BattlePass")){ + BattlePassHook battlePassHook = new BattlePassHook(); + battlePassHook.register(); + hookMessage("BattlePass"); + } if (plugin.isHookedPluginEnabled("ClueScrolls")) { ClueScrollsHook clueScrollsHook = new ClueScrollsHook(); clueScrollsHook.register(); diff --git a/plugin/src/main/java/net/momirealms/customfishing/compatibility/quest/BattlePassHook.java b/plugin/src/main/java/net/momirealms/customfishing/compatibility/quest/BattlePassHook.java new file mode 100644 index 00000000..719f8805 --- /dev/null +++ b/plugin/src/main/java/net/momirealms/customfishing/compatibility/quest/BattlePassHook.java @@ -0,0 +1,63 @@ +package net.momirealms.customfishing.compatibility.quest; + +import io.github.battlepass.BattlePlugin; +import io.github.battlepass.api.events.server.PluginReloadEvent; +import net.advancedplugins.bp.impl.actions.ActionRegistry; +import net.advancedplugins.bp.impl.actions.external.executor.ActionQuestExecutor; +import net.momirealms.customfishing.api.CustomFishingPlugin; +import net.momirealms.customfishing.api.event.FishingResultEvent; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.plugin.java.JavaPlugin; + +public class BattlePassHook implements Listener { + + public BattlePassHook() { + Bukkit.getPluginManager().registerEvents(this, CustomFishingPlugin.get()); + } + + public void register() { + ActionRegistry actionRegistry = BattlePlugin.getPlugin().getActionRegistry(); + actionRegistry.hook("customfishing", BPFishingQuest::new); + } + + @EventHandler(ignoreCancelled = true) + public void onBattlePassReload(PluginReloadEvent event){ + register(); + } + + + private static class BPFishingQuest extends ActionQuestExecutor { + public BPFishingQuest(JavaPlugin plugin) { + super(plugin, "customfishing"); + } + + @EventHandler + public void onFish(FishingResultEvent event){ + if (event.isCancelled() || event.getResult() == FishingResultEvent.Result.FAILURE) + return; + Player player = event.getPlayer(); + + // Single Fish Quest + if (event.getLoot().getID() != null) + this.executionBuilder("fish") + .player(player) + .root(event.getLoot().getID()) + .progress(event.getAmount()) + .buildAndExecute(); + + // Group Fish Quest + String[] lootGroup = event.getLoot().getLootGroup(); + if (event.getLoot() != null && lootGroup != null) + for (String group : lootGroup) { + this.executionBuilder("group") + .player(player) + .root(group) + .progress(event.getAmount()) + .buildAndExecute(); + } + } + } +}