summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java
new file mode 100644
index 00000000..c73eb7ae
--- /dev/null
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java
@@ -0,0 +1,72 @@
+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 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 PermissionTaskType extends TaskType {
+
+ private BukkitTask poll;
+ private List<ConfigValue> creatorConfigValues = new ArrayList<>();
+
+ public PermissionTaskType() {
+ super("permission", "LMBishop", "Test if a player has a permission");
+ this.creatorConfigValues.add(new ConfigValue("permission", true, "The required permission."));
+ }
+
+ @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 : PermissionTaskType.super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ for (Task task : quest.getTasksOfType(PermissionTaskType.super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+ String permission = (String) task.getConfigValue("permission");
+ if (permission != null) {
+ if (player.hasPermission(permission)) {
+ 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;
+ }
+}