();
@@ -3348,6 +3381,7 @@ public class Quester {
/**
* Show an inventory GUI with quest items to the specified player
+ *
* @param npc The NPC from which the GUI is bound
* @param quests List of quests to use for displaying items
*/
@@ -3394,9 +3428,9 @@ public class Quester {
}
/**
- * Force Quester to quit the specified quest
+ * Force Quester to quit the specified quest (canceling any timers), then update Quest Journal
*
- * Also cancels any timers
+ * Does not save changes to disk. Consider {@link #quitQuest(Quest, String)} or {@link #quitQuest(Quest, String[])}
*
* @param quest The quest to quit
*/
@@ -3420,7 +3454,10 @@ public class Quester {
}
/**
- * Forcibly remove quest from Quester's list of completed quests
+ * Forcibly remove quest from Quester's list of completed quests, then update Quest Journal
+ *
+ * Does not save changes to disk. Consider calling {@link #saveData()} followed by {@link #loadData()}
+ *
* @param quest The quest to remove
*/
public void hardRemove(Quest quest) {
@@ -3432,9 +3469,9 @@ public class Quester {
}
/**
- * Forcibly clear Quester's list of current quests
+ * Forcibly clear Quester's list of current quests and data, then update Quest Journal
*
- * Also resets associated quest data
+ * Does not save changes to disk. Consider calling {@link #saveData()} followed by {@link #loadData()}
*/
public void hardClear() {
try {
@@ -3447,7 +3484,10 @@ public class Quester {
}
/**
- * Forcibly set Quester's current stage
+ * Forcibly set Quester's current stage, then update Quest Journal
+ *
+ * Does not save changes to disk. Consider calling {@link #saveData()} followed by {@link #loadData()}
+ *
* @param key The quest to set stage of
* @param val The stage number to set
*/
@@ -3460,7 +3500,10 @@ public class Quester {
}
/**
- * Forcibly set Quester's quest data
+ * Forcibly set Quester's quest data, then update Quest Journal
+ *
+ * Does not save changes to disk. Consider calling {@link #saveData()} followed by {@link #loadData()}
+ *
* @param key The quest to set stage of
* @param val The data to set
*/
@@ -3508,6 +3551,7 @@ public class Quester {
/**
* Check whether the Quester's inventory contains the specified item
+ *
* @param is The item with a specified amount to check
* @return true if the inventory contains at least the amount of the specified stack
*/
diff --git a/main/src/main/java/me/blackvein/quests/Quests.java b/main/src/main/java/me/blackvein/quests/Quests.java
index a789b6019..3e4d0059c 100644
--- a/main/src/main/java/me/blackvein/quests/Quests.java
+++ b/main/src/main/java/me/blackvein/quests/Quests.java
@@ -3277,11 +3277,31 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
return ConfigUtil.checkList(list, clazz);
}
+ /**
+ * Get a Quest by ID
+ *
+ * @param id ID of the quest
+ * @return Exact match or null if not found
+ * @since 3.8.6
+ */
+ public Quest getQuestById(String id) {
+ if (id == null) {
+ return null;
+ }
+ LinkedList qs = quests;
+ for (Quest q : qs) {
+ if (q.getId().equals(id)) {
+ return q;
+ }
+ }
+ return null;
+ }
+
/**
* Get a Quest by name
*
* @param name Name of the quest
- * @return Quest or null if not found
+ * @return Closest match or null if not found
*/
public Quest getQuest(String name) {
if (name == null) {
@@ -3310,7 +3330,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
* Get an Action by name
*
* @param name Name of the action
- * @return Action or null if not found
+ * @return Closest match or null if not found
*/
public Action getAction(String name) {
if (name == null) {
diff --git a/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java b/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java
index f543f60c8..14d59e91c 100644
--- a/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java
+++ b/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java
@@ -695,13 +695,9 @@ public class CmdExecutor implements CommandExecutor {
if (event.isCancelled()) {
return;
}
- quester.hardQuit(quest);
String msg = Lang.get("questQuit");
msg = msg.replace("", ChatColor.DARK_PURPLE + quest.getName() + ChatColor.YELLOW);
- player.sendMessage(ChatColor.YELLOW + msg);
- quester.saveData();
- quester.loadData();
- quester.updateJournal();
+ quester.quitQuest(quest, msg);
} else {
player.sendMessage(ChatColor.YELLOW + Lang.get(player, "questQuitDisabled"));
}
@@ -1291,20 +1287,14 @@ public class CmdExecutor implements CommandExecutor {
cs.sendMessage(ChatColor.RED + Lang.get("questNotFound"));
return;
}
- quester.hardQuit(quest);
String msg1 = Lang.get("questForceQuit");
msg1 = msg1.replace("", ChatColor.GREEN + target.getName() + ChatColor.GOLD);
msg1 = msg1.replace("", ChatColor.DARK_PURPLE + quest.getName() + ChatColor.GOLD);
cs.sendMessage(ChatColor.GOLD + msg1);
- if (target.isOnline()) {
- Player p = (Player)target;
- String msg2 = Lang.get(p, "questForcedQuit");
- msg2 = msg2.replace("", ChatColor.GREEN + cs.getName() + ChatColor.GOLD);
- msg2 = msg2.replace("", ChatColor.DARK_PURPLE + quest.getName() + ChatColor.GOLD);
- p.sendMessage(ChatColor.GREEN + msg2);
- }
- quester.saveData();
- quester.updateJournal();
+ String msg2 = Lang.get((Player)target, "questForcedQuit");
+ msg2 = msg2.replace("", ChatColor.GREEN + cs.getName() + ChatColor.GOLD);
+ msg2 = msg2.replace("", ChatColor.DARK_PURPLE + quest.getName() + ChatColor.GOLD);
+ quester.quitQuest(quest, msg2);
}
} else {
cs.sendMessage(ChatColor.RED + Lang.get("noPermission"));
diff --git a/pom.xml b/pom.xml
index 004fbee67..22a677c15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,12 +6,12 @@
me.blackvein.quests
quests-parent
- 3.8.5
+ 3.8.6
quests
https://github.com/PikaMug/Quests/
- 3.8.5
+ 3.8.6
UTF-8
1.8
1.8
diff --git a/v1_8_R1/pom.xml b/v1_8_R1/pom.xml
index c87f05ee6..368ebd029 100644
--- a/v1_8_R1/pom.xml
+++ b/v1_8_R1/pom.xml
@@ -5,7 +5,7 @@
me.blackvein.quests
quests-parent
- 3.8.5
+ 3.8.6
diff --git a/v1_8_R2/pom.xml b/v1_8_R2/pom.xml
index 6c972f6f7..9f365710d 100644
--- a/v1_8_R2/pom.xml
+++ b/v1_8_R2/pom.xml
@@ -5,7 +5,7 @@
me.blackvein.quests
quests-parent
- 3.8.5
+ 3.8.6
diff --git a/v1_8_R3/pom.xml b/v1_8_R3/pom.xml
index 5725630e5..cab62c86c 100644
--- a/v1_8_R3/pom.xml
+++ b/v1_8_R3/pom.xml
@@ -5,7 +5,7 @@
me.blackvein.quests
quests-parent
- 3.8.5
+ 3.8.6