aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java49
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java8
2 files changed, 42 insertions, 15 deletions
diff --git a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java
index 7699ec70..476e336e 100644
--- a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java
+++ b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java
@@ -4,6 +4,7 @@ import com.leonardobishop.quests.obj.misc.QItemStack;
import com.leonardobishop.quests.quests.Category;
import com.leonardobishop.quests.quests.Quest;
import com.leonardobishop.quests.quests.Task;
+import com.leonardobishop.quests.quests.tasktypes.TaskType;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@@ -12,10 +13,11 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.ItemStack;
import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.*;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.*;
import java.util.logging.Level;
public class QuestsConfigLoader {
@@ -51,26 +53,30 @@ public class QuestsConfigLoader {
plugin.getQuestManager().registerCategory(category);
}
- File questDirectory = new File(plugin.getDataFolder() + File.separator + "quests");
- if (questDirectory.isDirectory()) {
- File[] fileList = questDirectory.listFiles();
- for (File questFile : fileList) {
- if (!questFile.getName().toLowerCase().endsWith(".yml")) continue;
+ FileVisitor<Path> fileVisitor = new SimpleFileVisitor<Path>() {
+ final URI questsRoot = Paths.get(plugin.getDataFolder() + File.separator + "quests").toUri();
+
+ @Override
+ public FileVisitResult visitFile(Path path, BasicFileAttributes attributes) {
+ File questFile = new File(path.toUri());
+ URI relativeLocation = questsRoot.relativize(path.toUri());
+
+ if (!questFile.getName().toLowerCase().endsWith(".yml")) return FileVisitResult.CONTINUE;
YamlConfiguration config = new YamlConfiguration();
// test QUEST file integrity
try {
config.load(questFile);
} catch (Exception ex) {
- brokenFiles.put(questFile.getName(), ConfigLoadError.MALFORMED_YAML);
- continue;
+ brokenFiles.put(relativeLocation.getPath(), ConfigLoadError.MALFORMED_YAML);
+ return FileVisitResult.CONTINUE;
}
String id = questFile.getName().replace(".yml", "");
if (!StringUtils.isAlphanumeric(id)) {
- brokenFiles.put(questFile.getName(), ConfigLoadError.INVALID_QUEST_ID);
- continue;
+ brokenFiles.put(relativeLocation.getPath(), ConfigLoadError.INVALID_QUEST_ID);
+ return FileVisitResult.CONTINUE;
}
// CHECK EVERYTHING WRONG WITH THE QUEST FILE BEFORE ACTUALLY LOADING THE QUEST
@@ -92,8 +98,8 @@ public class QuestsConfigLoader {
}
if (!isTheQuestFileOkay) { //if the file quest is not okay, do not load the quest
- brokenFiles.put(questFile.getName(), ConfigLoadError.MALFORMED_QUEST);
- continue; //next quest please!
+ brokenFiles.put(relativeLocation.getPath(), ConfigLoadError.MALFORMED_QUEST);
+ return FileVisitResult.CONTINUE; //next quest please!
}
// END OF THE CHECKING
@@ -141,7 +147,20 @@ public class QuestsConfigLoader {
}
plugin.getQuestManager().registerQuest(quest);
plugin.getTaskTypeManager().registerQuestTasksWithTaskTypes(quest);
+ return FileVisitResult.CONTINUE;
}
+ };
+
+ try {
+ Files.walkFileTree(Paths.get(plugin.getDataFolder() + File.separator + "quests"), fileVisitor);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ for (TaskType taskType : plugin.getTaskTypeManager().getTaskTypes()) {
+ try {
+ taskType.onReady();
+ } catch (Exception ignored) { }
}
}
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java
index 66ce2938..1e8a0433 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/TaskType.java
@@ -79,4 +79,12 @@ public abstract class TaskType implements Listener {
public List<ConfigValue> getCreatorConfigValues() {
return Collections.emptyList();
}
+
+ public void onReady() {
+ // not implemented here
+ }
+
+ public void onDisable() {
+ // not implemented here
+ }
}