diff options
3 files changed, 28 insertions, 0 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 5c6e0862..89de88d7 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 @@ -172,6 +172,7 @@ public class BukkitQuestsLoader implements QuestsLoader { List<String> requirements = config.getStringList("options.requires"); List<String> rewardString = config.getStringList("rewardstring"); List<String> startString = config.getStringList("startstring"); + List<String> startCommands = config.getStringList("startcommands"); boolean repeatable = config.getBoolean("options.repeatable", false); boolean cooldown = config.getBoolean("options.cooldown.enabled", false); boolean permissionRequired = config.getBoolean("options.permission-required", false); @@ -196,6 +197,7 @@ public class BukkitQuestsLoader implements QuestsLoader { .withRequirements(requirements) .withRewardString(rewardString) .withStartString(startString) + .withStartCommands(startCommands) .withPlaceholders(placeholders) .withCooldown(cooldownTime) .withSortOrder(sortOrder) diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java index 950d6c58..4a643555 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java @@ -118,6 +118,14 @@ public class NormalQuestController implements QuestController { plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_START_TITLE.getMessage().replace("{quest}", displayName), Messages.TITLE_QUEST_START_SUBTITLE.getMessage().replace("{quest}", displayName)); } + for (String s : quest.getStartCommands()) { + s = s.replace("{player}", player.getName()); + if (plugin.getConfig().getBoolean("quests-use-placeholderapi")) { + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), plugin.getPlaceholderAPIProcessor().apply(player, s)); + } else { + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s); + } + } for (String s : quest.getStartString()) { if (plugin.getConfig().getBoolean("quests-use-placeholderapi")) { s = plugin.getPlaceholderAPIProcessor().apply(player, s); diff --git a/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java b/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java index 6a591e1d..7f2a583f 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java +++ b/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java @@ -20,6 +20,7 @@ public class Quest implements Comparable<Quest> { private List<String> requirements; private List<String> rewardString; private List<String> startString; + private List<String> startCommands; private boolean repeatEnabled; private boolean cooldownEnabled; private int cooldown; @@ -146,6 +147,16 @@ public class Quest implements Comparable<Quest> { } /** + * Get the start commands for this quest. + * The start commands is a list of commands to be executed upon starting the quest. + * + * @return immutable list of commands + */ + public List<String> getStartCommands() { + return Collections.unmodifiableList(startCommands); + } + + /** * Get if this quest can be repeated after completion. * * @return boolean @@ -231,6 +242,7 @@ public class Quest implements Comparable<Quest> { private List<String> requirements = Collections.emptyList(); private List<String> rewardString = Collections.emptyList(); private List<String> startString = Collections.emptyList(); + private List<String> startCommands = Collections.emptyList(); private boolean repeatEnabled = false; private boolean cooldownEnabled = false; private int cooldown = 0; @@ -264,6 +276,11 @@ public class Quest implements Comparable<Quest> { return this; } + public Builder withStartCommands(List<String> startCommands) { + this.startCommands = startCommands; + return this; + } + public Builder withSortOrder(int sortOrder) { this.sortOrder = sortOrder; return this; @@ -311,6 +328,7 @@ public class Quest implements Comparable<Quest> { quest.requirements = this.requirements; quest.rewardString = this.rewardString; quest.startString = this.startString; + quest.startCommands = this.startCommands; quest.repeatEnabled = this.repeatEnabled; quest.cooldownEnabled = this.cooldownEnabled; quest.cooldown = this.cooldown; |
