aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java8
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java18
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;