diff options
Diffstat (limited to 'bukkit/src')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java | 30 | ||||
| -rw-r--r-- | bukkit/src/main/resources/resources/bukkit/config.yml | 5 |
2 files changed, 33 insertions, 2 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java index b16f4966..ae134419 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java @@ -108,6 +108,9 @@ public class BukkitQuestsLoader implements QuestsLoader { qItemStackRegistry.register(category, displayItem); } + // <\$m\s*([^ ]+)\s*\$> + Pattern macroPattern = Pattern.compile("<\\$m\\s*([^ ]+)\\s*\\$>"); + FileVisitor<Path> fileVisitor = new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path path, BasicFileAttributes attributes) { @@ -115,12 +118,35 @@ public class BukkitQuestsLoader implements QuestsLoader { File questFile = new File(path.toUri()); URI relativeLocation = root.toURI().relativize(path.toUri()); - if (!questFile.getName().toLowerCase().endsWith(".yml")) return FileVisitResult.CONTINUE; + if (!questFile.getName().toLowerCase().endsWith(".yml")) { + return FileVisitResult.CONTINUE; + } + + // process macros -- start + String data = Files.readAllLines(path).stream().reduce("", String::concat); + StringBuilder processed = new StringBuilder(); + Matcher matcher = macroPattern.matcher(data); + + int end = 0; + while (matcher.find()) { + String macro = matcher.group(1); + String replacement = questsConfig.getString("global-macros." + macro, null); + if (replacement == null) { + replacement = matcher.group(0); + } + processed.append(data, end, matcher.start()).append(replacement); + end = matcher.end(); + } + + if (end < data.length()) { + processed.append(data, end, data.length()); + } + // process macros -- end YamlConfiguration config = new YamlConfiguration(); // test QUEST file integrity try { - config.load(questFile); + config.load(processed.toString()); } catch (Exception ex) { configProblems.put(relativeLocation.getPath(), Collections.singletonList(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, ConfigProblemDescriptions.MALFORMED_YAML.getDescription()))); return FileVisitResult.CONTINUE; diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml index 6f961778..1c6301b7 100644 --- a/bukkit/src/main/resources/resources/bukkit/config.yml +++ b/bukkit/src/main/resources/resources/bukkit/config.yml @@ -285,6 +285,11 @@ global-quest-display: - "&eMiddle Click &7to stop tracking this quest." - "&eRight Click &7to cancel this quest." +# Macros for faster quests configuration without having to repeat +# yourself. +# See wiki for more information. +global-macros: + bar: "&6---&7---&6---" # Configure titles titles: |
