diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/com/leonardobishop/quests/Quests.java | 4 | ||||
| -rw-r--r-- | src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaceholderAPIEvaluateTaskType.java | 75 |
2 files changed, 79 insertions, 0 deletions
diff --git a/src/main/java/com/leonardobishop/quests/Quests.java b/src/main/java/com/leonardobishop/quests/Quests.java index d9ee9d3f..c0ccf7db 100644 --- a/src/main/java/com/leonardobishop/quests/Quests.java +++ b/src/main/java/com/leonardobishop/quests/Quests.java @@ -145,6 +145,7 @@ public class Quests extends JavaPlugin { taskTypeManager.registerTaskType(new BreedingTaskType()); taskTypeManager.registerTaskType(new EnchantingTaskType()); taskTypeManager.registerTaskType(new DealDamageTaskType()); + taskTypeManager.registerTaskType(new PermissionTaskType()); // TODO: FIX // taskTypeManager.registerTaskType(new BrewingCertainTaskType()); if (Bukkit.getPluginManager().isPluginEnabled("ASkyBlock")) { @@ -166,6 +167,9 @@ public class Quests extends JavaPlugin { if (Bukkit.getPluginManager().isPluginEnabled("MythicMobs")) { taskTypeManager.registerTaskType(new MythicMobsKillingType()); } + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + taskTypeManager.registerTaskType(new PlaceholderAPIEvaluateTaskType()); + } taskTypeManager.closeRegistrations(); reloadQuests(); diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaceholderAPIEvaluateTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaceholderAPIEvaluateTaskType.java new file mode 100644 index 00000000..09297b23 --- /dev/null +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaceholderAPIEvaluateTaskType.java @@ -0,0 +1,75 @@ +package com.leonardobishop.quests.quests.tasktypes.types; + +import com.leonardobishop.quests.Quests; +import com.leonardobishop.quests.api.QuestsAPI; +import com.leonardobishop.quests.player.QPlayer; +import com.leonardobishop.quests.player.questprogressfile.QuestProgress; +import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile; +import com.leonardobishop.quests.player.questprogressfile.TaskProgress; +import com.leonardobishop.quests.quests.Quest; +import com.leonardobishop.quests.quests.Task; +import com.leonardobishop.quests.quests.tasktypes.ConfigValue; +import com.leonardobishop.quests.quests.tasktypes.TaskType; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitTask; + +import java.util.ArrayList; +import java.util.List; + +public final class PlaceholderAPIEvaluateTaskType extends TaskType { + + private BukkitTask poll; + private List<ConfigValue> creatorConfigValues = new ArrayList<>(); + + public PlaceholderAPIEvaluateTaskType() { + super("placeholderapi_evaluate", "LMBishop", "Test if a player has a permission"); + this.creatorConfigValues.add(new ConfigValue("placeholder", true, "The placeholder string (including %%).")); + this.creatorConfigValues.add(new ConfigValue("evaluates", true, "What it should evaluate to be marked as complete.")); + } + + @Override + public void onReady() { + this.poll = new BukkitRunnable() { + @Override + public void run() { + for (Player player : Bukkit.getOnlinePlayers()) { + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId(), true); + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); + for (Quest quest : PlaceholderAPIEvaluateTaskType.super.getRegisteredQuests()) { + if (questProgressFile.hasStartedQuest(quest)) { + QuestProgress questProgress = questProgressFile.getQuestProgress(quest); + for (Task task : quest.getTasksOfType(PlaceholderAPIEvaluateTaskType.super.getType())) { + TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); + if (taskProgress.isCompleted()) { + continue; + } + String placeholder = (String) task.getConfigValue("placeholder"); + String evaluates = (String) task.getConfigValue("evaluates"); + if (placeholder != null) { + if (PlaceholderAPI.setPlaceholders(player, placeholder).equals(evaluates)) { + taskProgress.setCompleted(true); + } + } + } + } + } + } + } + }.runTaskTimer(Quests.get(), 30L, 30L); + } + + @Override + public void onDisable() { + if (this.poll != null) { + this.poll.cancel(); + } + } + + @Override + public List<ConfigValue> getCreatorConfigValues() { + return creatorConfigValues; + } +} |
