aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java/com
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-07-12 16:06:01 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-07-12 16:06:01 +0100
commit0d367ba66bf06904d130fdacaf237106d0d7c7ae (patch)
tree5a5769e6fa99ccadfccb6b2c3e72214bfc3db4a8 /bukkit/src/main/java/com
parentdc9b40b0230c57898d210d5003afc0a1faf54b09 (diff)
Add fabledskyblock
Diffstat (limited to 'bukkit/src/main/java/com')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java5
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java76
2 files changed, 81 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 19626893..e741ac76 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -57,6 +57,7 @@ import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensDeliverT
import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensInteractTaskType;
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.FabledSkyblockLevelTaskType;
import com.leonardobishop.quests.bukkit.tasktype.type.dependent.IridiumSkyblockValueTaskType;
import com.leonardobishop.quests.bukkit.tasktype.type.dependent.MythicMobsKillingType;
import com.leonardobishop.quests.bukkit.tasktype.type.dependent.PlaceholderAPIEvaluateTaskType;
@@ -341,6 +342,10 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
taskTypeManager.registerTaskType(new ShopGUIPlusBuyCertainTaskType(this));
taskTypeManager.registerTaskType(new ShopGUIPlusSellCertainTaskType(this));
}
+ if (Bukkit.getPluginManager().isPluginEnabled("FabledSkyblock")) {
+ // not tested
+ taskTypeManager.registerTaskType(new FabledSkyblockLevelTaskType(this));
+ }
taskTypeManager.closeRegistrations();
questsLogger.info(taskTypeManager.getTaskTypes().size() + " task types have been registered.");
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java
new file mode 100644
index 00000000..953e8279
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java
@@ -0,0 +1,76 @@
+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.common.config.ConfigProblem;
+import com.leonardobishop.quests.common.player.QPlayer;
+import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
+import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
+import com.leonardobishop.quests.common.quest.Quest;
+import com.leonardobishop.quests.common.quest.Task;
+import com.songoda.skyblock.api.event.island.IslandLevelChangeEvent;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
+
+public final class FabledSkyblockLevelTaskType extends BukkitTaskType {
+
+ private final BukkitQuestsPlugin plugin;
+
+ public FabledSkyblockLevelTaskType(BukkitQuestsPlugin plugin) {
+ super("fabledskyblock_level", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island level for FabledSkyblock.");
+ this.plugin = plugin;
+ }
+
+ @Override
+ public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
+ ArrayList<ConfigProblem> problems = new ArrayList<>();
+ if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
+ TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
+ return problems;
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onIslandLevel(IslandLevelChangeEvent event) {
+ List<UUID> members = new ArrayList<>();
+ members.add(event.getIsland().getOwnerUUID());
+ members.addAll(event.getIsland().getCoopPlayers().keySet());
+
+ for (UUID member : members) {
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(member);
+ if (qPlayer == null) {
+ continue;
+ }
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+
+ int islandValueNeeded = (int) task.getConfigValue("level");
+
+ taskProgress.setProgress(event.getLevel().getLevel());
+
+ if (((double) taskProgress.getProgress()) >= islandValueNeeded) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+}