From 1fac2b4c0bf3afdd987938d86e282d3f0234ad07 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sat, 18 Jan 2020 23:50:48 +0200 Subject: The quest file can be broken sometimes, without a warning, but directly an exception (which is not nice) --- .../leonardobishop/quests/QuestsConfigLoader.java | 28 +++++++++++++++++++++- .../com/leonardobishop/quests/obj/Options.java | 1 + 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java index 24a2f19f..7699ec70 100644 --- a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java +++ b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java @@ -73,6 +73,31 @@ public class QuestsConfigLoader { continue; } + // CHECK EVERYTHING WRONG WITH THE QUEST FILE BEFORE ACTUALLY LOADING THE QUEST + + boolean isTheQuestFileOkay = true; + + if (!config.isConfigurationSection("tasks")) { + isTheQuestFileOkay = false; + } else { //continue + for (String taskId : config.getConfigurationSection("tasks").getKeys(false)) { + String taskRoot = "tasks." + taskId; + String taskType = config.getString(taskRoot + ".type"); + + if (!config.isConfigurationSection(taskRoot)) { + isTheQuestFileOkay = false; + break; //do not loop if section do not exist, just break directly + } + } + } + + 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! + } + + // END OF THE CHECKING + QItemStack displayItem = getQItemStack("display", config); List rewards = config.getStringList("rewards"); List requirements = config.getStringList("options.requires"); @@ -165,7 +190,8 @@ public class QuestsConfigLoader { public enum ConfigLoadError { MALFORMED_YAML("Malformed YAML"), - INVALID_QUEST_ID("Invalid quest ID (must be alphanumeric)"); + INVALID_QUEST_ID("Invalid quest ID (must be alphanumeric)"), + MALFORMED_QUEST("Quest file isn't configured properly."); private String message; diff --git a/src/main/java/com/leonardobishop/quests/obj/Options.java b/src/main/java/com/leonardobishop/quests/obj/Options.java index 404c7fed..afcb8fcf 100644 --- a/src/main/java/com/leonardobishop/quests/obj/Options.java +++ b/src/main/java/com/leonardobishop/quests/obj/Options.java @@ -47,6 +47,7 @@ public enum Options { public static String color(String s) { return ChatColor.translateAlternateColorCodes('&', s); } + public static List color(List s) { List colored = new ArrayList<>(); for (String line : s) { -- cgit v1.2.3-70-g09d2