Supply external conversation hooks, part 28

This commit is contained in:
PikaMug 2020-04-28 05:37:38 -04:00
parent 51e42937ee
commit 19925f46e8
7 changed files with 2177 additions and 906 deletions

View File

@ -18,7 +18,6 @@ import java.util.List;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext; import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt; import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import me.blackvein.quests.Quest; import me.blackvein.quests.Quest;
@ -107,14 +106,14 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
} }
case 2: case 2:
if (player.hasPermission("quests.editor.*") || player.hasPermission("quests.editor.edit")) { if (player.hasPermission("quests.editor.*") || player.hasPermission("quests.editor.edit")) {
return new QuestSelectEditPrompt(); return new QuestSelectEditPrompt(context);
} else { } else {
player.sendMessage(ChatColor.RED + Lang.get("noPermission")); player.sendMessage(ChatColor.RED + Lang.get("noPermission"));
return new QuestMenuPrompt(context); return new QuestMenuPrompt(context);
} }
case 3: case 3:
if (player.hasPermission("quests.editor.*") || player.hasPermission("quests.editor.delete")) { if (player.hasPermission("quests.editor.*") || player.hasPermission("quests.editor.delete")) {
return new QuestSelectDeletePrompt(); return new QuestSelectDeletePrompt(context);
} else { } else {
player.sendMessage(ChatColor.RED + Lang.get("noPermission")); player.sendMessage(ChatColor.RED + Lang.get("noPermission"));
return new QuestMenuPrompt(context); return new QuestMenuPrompt(context);
@ -187,15 +186,27 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
} }
} }
public class QuestSelectEditPrompt extends StringPrompt { public class QuestSelectEditPrompt extends QuestsEditorStringPrompt {
public QuestSelectEditPrompt(ConversationContext context) {
super(context);
}
public String getTitle(ConversationContext context) {
return Lang.get("questCreateTitle");
}
public String getQueryText(ConversationContext context) {
return Lang.get("questEditorEnterQuestName");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
String s = ChatColor.GOLD + Lang.get("questEditTitle") + "\n"; String s = ChatColor.GOLD + getTitle(context) + "\n";
for (Quest q : plugin.getQuests()) { for (Quest q : plugin.getQuests()) {
s += ChatColor.GRAY + "- " + ChatColor.AQUA + q.getName() + "\n"; s += ChatColor.GRAY + "- " + ChatColor.AQUA + q.getName() + "\n";
} }
return s + ChatColor.YELLOW + Lang.get("questEditorEnterQuestName"); return s + ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -206,23 +217,35 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
plugin.getQuestFactory().loadQuest(context, q); plugin.getQuestFactory().loadQuest(context, q);
return new QuestMainPrompt(context); return new QuestMainPrompt(context);
} }
return new QuestSelectEditPrompt(); return new QuestSelectEditPrompt(context);
} else { } else {
return new QuestMenuPrompt(context); return new QuestMenuPrompt(context);
} }
} }
} }
public class QuestSelectDeletePrompt extends StringPrompt { public class QuestSelectDeletePrompt extends QuestsEditorStringPrompt {
public QuestSelectDeletePrompt(ConversationContext context) {
super(context);
}
public String getTitle(ConversationContext context) {
return Lang.get("questCreateTitle");
}
public String getQueryText(ConversationContext context) {
return Lang.get("questEditorEnterQuestName");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
String text = ChatColor.GOLD + Lang.get("questDeleteTitle") + "\n"; String text = ChatColor.GOLD + getTitle(context) + "\n";
for (Quest quest : plugin.getQuests()) { for (Quest quest : plugin.getQuests()) {
text += ChatColor.AQUA + quest.getName() + ChatColor.GRAY + ","; text += ChatColor.AQUA + quest.getName() + ChatColor.GRAY + ",";
} }
text = text.substring(0, text.length() - 1) + "\n"; text = text.substring(0, text.length() - 1) + "\n";
text += ChatColor.YELLOW + Lang.get("questEditorEnterQuestName"); text += ChatColor.YELLOW + getQueryText(context);
return text; return text;
} }
@ -240,7 +263,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
} }
if (used.isEmpty()) { if (used.isEmpty()) {
context.setSessionData(CK.ED_QUEST_DELETE, found.getName()); context.setSessionData(CK.ED_QUEST_DELETE, found.getName());
return new QuestConfirmDeletePrompt(); return new QuestConfirmDeletePrompt(context);
} else { } else {
((Player) context.getForWhom()).sendMessage(ChatColor.RED ((Player) context.getForWhom()).sendMessage(ChatColor.RED
+ Lang.get("questEditorQuestAsRequirement1") + " \"" + ChatColor.DARK_PURPLE + Lang.get("questEditorQuestAsRequirement1") + " \"" + ChatColor.DARK_PURPLE
@ -251,18 +274,30 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
} }
((Player) context.getForWhom()).sendMessage(ChatColor.RED ((Player) context.getForWhom()).sendMessage(ChatColor.RED
+ Lang.get("questEditorQuestAsRequirement3")); + Lang.get("questEditorQuestAsRequirement3"));
return new QuestSelectDeletePrompt(); return new QuestSelectDeletePrompt(context);
} }
} }
((Player) context.getForWhom()).sendMessage(ChatColor.RED + Lang.get("questEditorQuestNotFound")); ((Player) context.getForWhom()).sendMessage(ChatColor.RED + Lang.get("questEditorQuestNotFound"));
return new QuestSelectDeletePrompt(); return new QuestSelectDeletePrompt(context);
} else { } else {
return new QuestMenuPrompt(context); return new QuestMenuPrompt(context);
} }
} }
} }
public class QuestConfirmDeletePrompt extends StringPrompt { public class QuestConfirmDeletePrompt extends QuestsEditorStringPrompt {
public QuestConfirmDeletePrompt(ConversationContext context) {
super(context);
}
public String getTitle(ConversationContext context) {
return null;
}
public String getQueryText(ConversationContext context) {
return Lang.get("confirmDelete");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
@ -270,7 +305,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
+ Lang.get("yesWord") + "\n"; + Lang.get("yesWord") + "\n";
text += ChatColor.RED + "" + ChatColor.BOLD + "2" + ChatColor.RESET + "" + ChatColor.RED + " - " text += ChatColor.RED + "" + ChatColor.BOLD + "2" + ChatColor.RESET + "" + ChatColor.RED + " - "
+ Lang.get("noWord"); + Lang.get("noWord");
return ChatColor.RED + Lang.get("confirmDelete") + " (" + ChatColor.YELLOW return ChatColor.RED + getQueryText(context) + " (" + ChatColor.YELLOW
+ (String) context.getSessionData(CK.ED_QUEST_DELETE) + ChatColor.RED + ")\n" + text; + (String) context.getSessionData(CK.ED_QUEST_DELETE) + ChatColor.RED + ")\n" + text;
} }
@ -282,7 +317,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
} else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase(Lang.get("noWord"))) { } else if (input.equalsIgnoreCase("2") || input.equalsIgnoreCase(Lang.get("noWord"))) {
return new QuestMenuPrompt(context); return new QuestMenuPrompt(context);
} else { } else {
return new QuestConfirmDeletePrompt(); return new QuestConfirmDeletePrompt(context);
} }
} }
} }

View File

@ -100,9 +100,9 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
protected Prompt acceptValidatedInput(ConversationContext context, Number input) { protected Prompt acceptValidatedInput(ConversationContext context, Number input) {
switch (input.intValue()) { switch (input.intValue()) {
case 1: case 1:
return new GeneralPrompt(context); return new OptionsGeneralPrompt(context);
case 2: case 2:
return new MultiplayerPrompt(context); return new OptionsMultiplayerPrompt(context);
case 3: case 3:
return plugin.getQuestFactory().returnToMenu(context); return plugin.getQuestFactory().returnToMenu(context);
default: default:
@ -277,8 +277,8 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
} }
} }
public class GeneralPrompt extends QuestsEditorNumericPrompt { public class OptionsGeneralPrompt extends QuestsEditorNumericPrompt {
public GeneralPrompt(ConversationContext context) { public OptionsGeneralPrompt(ConversationContext context) {
super(context); super(context);
} }
@ -374,11 +374,11 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
switch (input.intValue()) { switch (input.intValue()) {
case 1: case 1:
tempKey = CK.OPT_ALLOW_COMMANDS; tempKey = CK.OPT_ALLOW_COMMANDS;
tempPrompt = new GeneralPrompt(context); tempPrompt = new OptionsGeneralPrompt(context);
return new TrueFalsePrompt(context); return new TrueFalsePrompt(context);
case 2: case 2:
tempKey = CK.OPT_ALLOW_QUITTING; tempKey = CK.OPT_ALLOW_QUITTING;
tempPrompt = new GeneralPrompt(context); tempPrompt = new OptionsGeneralPrompt(context);
return new TrueFalsePrompt(context); return new TrueFalsePrompt(context);
case 3: case 3:
tempKey = null; tempKey = null;
@ -395,8 +395,8 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
} }
} }
public class MultiplayerPrompt extends QuestsEditorNumericPrompt { public class OptionsMultiplayerPrompt extends QuestsEditorNumericPrompt {
public MultiplayerPrompt(ConversationContext context) { public OptionsMultiplayerPrompt(ConversationContext context) {
super(context); super(context);
} }
@ -520,19 +520,19 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
switch (input.intValue()) { switch (input.intValue()) {
case 1: case 1:
tempKey = CK.OPT_USE_DUNGEONSXL_PLUGIN; tempKey = CK.OPT_USE_DUNGEONSXL_PLUGIN;
tempPrompt = new MultiplayerPrompt(context); tempPrompt = new OptionsMultiplayerPrompt(context);
return new TrueFalsePrompt(context); return new TrueFalsePrompt(context);
case 2: case 2:
tempKey = CK.OPT_USE_PARTIES_PLUGIN; tempKey = CK.OPT_USE_PARTIES_PLUGIN;
tempPrompt = new MultiplayerPrompt(context); tempPrompt = new OptionsMultiplayerPrompt(context);
return new TrueFalsePrompt(context); return new TrueFalsePrompt(context);
case 3: case 3:
tempKey = CK.OPT_SHARE_PROGRESS_LEVEL; tempKey = CK.OPT_SHARE_PROGRESS_LEVEL;
tempPrompt = new MultiplayerPrompt(context); tempPrompt = new OptionsMultiplayerPrompt(context);
return new LevelPrompt(context); return new LevelPrompt(context);
case 4: case 4:
tempKey = CK.OPT_REQUIRE_SAME_QUEST; tempKey = CK.OPT_REQUIRE_SAME_QUEST;
tempPrompt = new MultiplayerPrompt(context); tempPrompt = new OptionsMultiplayerPrompt(context);
return new TrueFalsePrompt(context); return new TrueFalsePrompt(context);
case 5: case 5:
tempKey = null; tempKey = null;

View File

@ -19,14 +19,15 @@ import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt; import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent; import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent;
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenStringPromptEvent;
import me.blackvein.quests.util.CK; import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.Lang; import me.blackvein.quests.util.Lang;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext; import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt; import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
public class DateTimePrompt extends QuestsEditorNumericPrompt { public class DateTimePrompt extends QuestsEditorNumericPrompt {
private final Prompt oldPrompt; private final Prompt oldPrompt;
@ -201,19 +202,19 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
context.setSessionData("tempZone", cal.getTimeZone().getID()); context.setSessionData("tempZone", cal.getTimeZone().getID());
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
case 1: case 1:
return new DayPrompt(); return new DayPrompt(context);
case 2: case 2:
return new MonthPrompt(); return new MonthPrompt(context);
case 3: case 3:
return new YearPrompt(); return new YearPrompt(context);
case 4: case 4:
return new HourPrompt(); return new HourPrompt(context);
case 5: case 5:
return new MinutePrompt(); return new MinutePrompt(context);
case 6: case 6:
return new SecondPrompt(); return new SecondPrompt(context);
case 7: case 7:
return new OffsetPrompt(); return new OffsetPrompt(context);
case 8: case 8:
context.setSessionData("tempDay", null); context.setSessionData("tempDay", null);
context.setSessionData("tempMonth", null); context.setSessionData("tempMonth", null);
@ -266,11 +267,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class DayPrompt extends StringPrompt { public class DayPrompt extends QuestsEditorStringPrompt {
public DayPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterDay"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterDay");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -281,14 +299,14 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < 1 || amt > 31) { if (amt < 1 || amt > 31) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "1").replace("<greatest>", "31")); .replace("<least>", "1").replace("<greatest>", "31"));
return new DayPrompt(); return new DayPrompt(context);
} else { } else {
context.setSessionData("tempDay", Integer.parseInt(input)); context.setSessionData("tempDay", Integer.parseInt(input));
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new DayPrompt(); return new DayPrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -296,11 +314,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class MonthPrompt extends StringPrompt { public class MonthPrompt extends QuestsEditorStringPrompt {
public MonthPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterMonth"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterYear");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -311,14 +346,14 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < 1 || amt > 12) { if (amt < 1 || amt > 12) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "1").replace("<greatest>", "12")); .replace("<least>", "1").replace("<greatest>", "12"));
return new MonthPrompt(); return new MonthPrompt(context);
} else { } else {
context.setSessionData("tempMonth", Integer.parseInt(input) - 1); context.setSessionData("tempMonth", Integer.parseInt(input) - 1);
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new MonthPrompt(); return new MonthPrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -326,11 +361,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class YearPrompt extends StringPrompt { public class YearPrompt extends QuestsEditorStringPrompt {
public YearPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterYear"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterYear");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -341,14 +393,14 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < 1000 || amt > 9999) { if (amt < 1000 || amt > 9999) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "1000").replace("<greatest>", "9999")); .replace("<least>", "1000").replace("<greatest>", "9999"));
return new YearPrompt(); return new YearPrompt(context);
} else { } else {
context.setSessionData("tempYear", Integer.parseInt(input)); context.setSessionData("tempYear", Integer.parseInt(input));
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new YearPrompt(); return new YearPrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -356,11 +408,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class HourPrompt extends StringPrompt { public class HourPrompt extends QuestsEditorStringPrompt {
public HourPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterHour"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterHour");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -371,14 +440,14 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < 0 || amt > 23) { if (amt < 0 || amt > 23) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "0").replace("<greatest>", "23")); .replace("<least>", "0").replace("<greatest>", "23"));
return new HourPrompt(); return new HourPrompt(context);
} else { } else {
context.setSessionData("tempHour", Integer.parseInt(input)); context.setSessionData("tempHour", Integer.parseInt(input));
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new HourPrompt(); return new HourPrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -386,11 +455,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class MinutePrompt extends StringPrompt { public class MinutePrompt extends QuestsEditorStringPrompt {
public MinutePrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterMinute"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterMinute");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -401,14 +487,14 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < 0 || amt > 59) { if (amt < 0 || amt > 59) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "0").replace("<greatest>", "59")); .replace("<least>", "0").replace("<greatest>", "59"));
return new MinutePrompt(); return new MinutePrompt(context);
} else { } else {
context.setSessionData("tempMinute", Integer.parseInt(input)); context.setSessionData("tempMinute", Integer.parseInt(input));
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new MinutePrompt(); return new MinutePrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -416,11 +502,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class SecondPrompt extends StringPrompt { public class SecondPrompt extends QuestsEditorStringPrompt {
public SecondPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterSecond"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterSecond");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -431,14 +534,14 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < 0 || amt > 59) { if (amt < 0 || amt > 59) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "0").replace("<greatest>", "59")); .replace("<least>", "0").replace("<greatest>", "59"));
return new SecondPrompt(); return new SecondPrompt(context);
} else { } else {
context.setSessionData("tempSecond", Integer.parseInt(input)); context.setSessionData("tempSecond", Integer.parseInt(input));
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new SecondPrompt(); return new SecondPrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -446,11 +549,28 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class OffsetPrompt extends StringPrompt { public class OffsetPrompt extends QuestsEditorStringPrompt {
public OffsetPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("dateCreateEnterOffset"); return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("dateCreateEnterOffset");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -461,11 +581,11 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
if (amt < -12.0 || amt > 14.0) { if (amt < -12.0 || amt > 14.0) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidRange")
.replace("<least>", "-12:00").replace("<greatest>", "14:00")); .replace("<least>", "-12:00").replace("<greatest>", "14:00"));
return new OffsetPrompt(); return new OffsetPrompt(context);
} else { } else {
String[] t = TimeZone.getAvailableIDs((int) Math.round(amt * 60.0 * 60.0 * 1000.0)); String[] t = TimeZone.getAvailableIDs((int) Math.round(amt * 60.0 * 60.0 * 1000.0));
if (t.length > 1) { if (t.length > 1) {
return new ZonePrompt(t); return new ZonePrompt(context, t);
} else if (t.length > 0) { } else if (t.length > 0) {
context.setSessionData("tempZone", t[0]); context.setSessionData("tempZone", t[0]);
} else { } else {
@ -475,7 +595,7 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new OffsetPrompt(); return new OffsetPrompt(context);
} }
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
@ -483,22 +603,36 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
private class ZonePrompt extends StringPrompt { public class ZonePrompt extends QuestsEditorStringPrompt {
String[] zones; String[] zones;
public ZonePrompt(String[] timezones) { public ZonePrompt(ConversationContext context, String[] timezones) {
super(context);
zones = timezones; zones = timezones;
} }
@Override
public String getTitle(ConversationContext context) {
return Lang.get("timeZoneTitle");
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getQueryText(ConversationContext context) {
String text = ChatColor.LIGHT_PURPLE + Lang.get("timeZoneTitle") + "\n"; return Lang.get("dateCreateEnterZone");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String text = ChatColor.LIGHT_PURPLE + getTitle(context) + "\n";
for (String z : zones) { for (String z : zones) {
text += ChatColor.GREEN + z + ", "; text += ChatColor.GREEN + z + ", ";
} }
text = text.substring(0, text.length() - 2); text = text.substring(0, text.length() - 2);
return text + "\n" + ChatColor.YELLOW + Lang.get("dateCreateEnterZone"); return text + "\n" + ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -511,7 +645,7 @@ public class DateTimePrompt extends QuestsEditorNumericPrompt {
} }
} }
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new ZonePrompt(zones); return new ZonePrompt(context, zones);
} else { } else {
return new DateTimePrompt(context, oldPrompt, source); return new DateTimePrompt(context, oldPrompt, source);
} }

View File

@ -20,7 +20,9 @@ import java.util.TimeZone;
import me.blackvein.quests.Quests; import me.blackvein.quests.Quests;
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt; import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent; import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent;
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenStringPromptEvent;
import me.blackvein.quests.util.CK; import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.Lang; import me.blackvein.quests.util.Lang;
import me.blackvein.quests.util.MiscUtil; import me.blackvein.quests.util.MiscUtil;
@ -28,7 +30,6 @@ import me.blackvein.quests.util.MiscUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext; import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt; import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
public class PlannerPrompt extends QuestsEditorNumericPrompt { public class PlannerPrompt extends QuestsEditorNumericPrompt {
@ -156,13 +157,13 @@ public class PlannerPrompt extends QuestsEditorNumericPrompt {
return new DateTimePrompt(context, PlannerPrompt.this, "end"); return new DateTimePrompt(context, PlannerPrompt.this, "end");
case 3: case 3:
if (context.getSessionData(CK.PLN_START_DATE) != null && context.getSessionData(CK.PLN_END_DATE) != null) { if (context.getSessionData(CK.PLN_START_DATE) != null && context.getSessionData(CK.PLN_END_DATE) != null) {
return new RepeatPrompt(); return new PlannerRepeatPrompt(context);
} else { } else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidOption")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidOption"));
return new PlannerPrompt(context); return new PlannerPrompt(context);
} }
case 4: case 4:
return new CooldownPrompt(); return new PlannerCooldownPrompt(context);
case 5: case 5:
return plugin.getQuestFactory().returnToMenu(context); return plugin.getQuestFactory().returnToMenu(context);
default: default:
@ -170,11 +171,28 @@ public class PlannerPrompt extends QuestsEditorNumericPrompt {
} }
} }
private class RepeatPrompt extends StringPrompt { public class PlannerRepeatPrompt extends QuestsEditorStringPrompt {
public PlannerRepeatPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("timePrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("timePrompt"); QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -198,17 +216,34 @@ public class PlannerPrompt extends QuestsEditorNumericPrompt {
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber")
.replace("<input>", input)); .replace("<input>", input));
return new RepeatPrompt(); return new PlannerRepeatPrompt(context);
} }
return new PlannerPrompt(context); return new PlannerPrompt(context);
} }
} }
private class CooldownPrompt extends StringPrompt { public class PlannerCooldownPrompt extends QuestsEditorStringPrompt {
public PlannerCooldownPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("timePrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("timePrompt"); QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -232,7 +267,7 @@ public class PlannerPrompt extends QuestsEditorNumericPrompt {
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber")
.replace("<input>", input)); .replace("<input>", input));
return new CooldownPrompt(); return new PlannerCooldownPrompt(context);
} }
return new PlannerPrompt(context); return new PlannerPrompt(context);
} }

View File

@ -21,7 +21,6 @@ import java.util.Map;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext; import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.FixedSetPrompt;
import org.bukkit.conversations.Prompt; import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt; import org.bukkit.conversations.StringPrompt;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -35,7 +34,9 @@ import me.blackvein.quests.Quests;
import me.blackvein.quests.convo.generic.ItemStackPrompt; import me.blackvein.quests.convo.generic.ItemStackPrompt;
import me.blackvein.quests.convo.generic.OverridePrompt; import me.blackvein.quests.convo.generic.OverridePrompt;
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt; import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent; import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenNumericPromptEvent;
import me.blackvein.quests.events.editor.quests.QuestsEditorPostOpenStringPromptEvent;
import me.blackvein.quests.util.CK; import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang; import me.blackvein.quests.util.Lang;
@ -329,34 +330,34 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
switch (input.intValue()) { switch (input.intValue()) {
case 1: case 1:
if (plugin.getDependencies().getVaultEconomy() != null) { if (plugin.getDependencies().getVaultEconomy() != null) {
return new MoneyPrompt(); return new RequirementsMoneyPrompt(context);
} else { } else {
return new RequirementsPrompt(context); return new RequirementsPrompt(context);
} }
case 2: case 2:
return new QuestPointsPrompt(); return new RequirementsQuestPointsPrompt(context);
case 3: case 3:
return new ItemListPrompt(context); return new RequirementsItemListPrompt(context);
case 4: case 4:
return new PermissionsPrompt(); return new RequirementsPermissionsPrompt(context);
case 5: case 5:
return new QuestListPrompt(true); return new RequirementsQuestListPrompt(context, true);
case 6: case 6:
return new QuestListPrompt(false); return new RequirementsQuestListPrompt(context, false);
case 7: case 7:
if (plugin.getDependencies().getMcmmoClassic() != null) { if (plugin.getDependencies().getMcmmoClassic() != null) {
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} else { } else {
return new RequirementsPrompt(context); return new RequirementsPrompt(context);
} }
case 8: case 8:
if (plugin.getDependencies().getHeroes() != null) { if (plugin.getDependencies().getHeroes() != null) {
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} else { } else {
return new RequirementsPrompt(context); return new RequirementsPrompt(context);
} }
case 9: case 9:
return new CustomRequirementsPrompt(); return new CustomRequirementsPrompt(context);
case 10: case 10:
if (hasRequirement) { if (hasRequirement) {
return new OverridePrompt.Builder() return new OverridePrompt.Builder()
@ -392,11 +393,28 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
return false; return false;
} }
private class MoneyPrompt extends StringPrompt { public class RequirementsMoneyPrompt extends QuestsEditorStringPrompt {
public RequirementsMoneyPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("rewMoneyPrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
String text = Lang.get("rewMoneyPrompt"); QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String text = getQueryText(context);
if (plugin.getDependencies().getVaultEconomy() != null) { if (plugin.getDependencies().getVaultEconomy() != null) {
text = text.replace("<money>", ChatColor.DARK_PURPLE+ ((plugin.getDependencies().getVaultEconomy() text = text.replace("<money>", ChatColor.DARK_PURPLE+ ((plugin.getDependencies().getVaultEconomy()
.currencyNamePlural().isEmpty() ? Lang.get("money") : plugin.getDependencies().getVaultEconomy() .currencyNamePlural().isEmpty() ? Lang.get("money") : plugin.getDependencies().getVaultEconomy()
@ -417,12 +435,12 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
context.setSessionData(CK.REQ_MONEY, i); context.setSessionData(CK.REQ_MONEY, i);
} else { } else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("inputPosNum")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("inputPosNum"));
return new MoneyPrompt(); return new RequirementsMoneyPrompt(context);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber")
.replace("<input>", input)); .replace("<input>", input));
return new MoneyPrompt(); return new RequirementsMoneyPrompt(context);
} }
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
context.setSessionData(CK.REQ_MONEY, null); context.setSessionData(CK.REQ_MONEY, null);
@ -432,11 +450,28 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} }
private class QuestPointsPrompt extends StringPrompt { public class RequirementsQuestPointsPrompt extends QuestsEditorStringPrompt {
public RequirementsQuestPointsPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("rewQuestPointsPrompt").replace("<points>", Lang.get("questPoints"));
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("rewQuestPointsPrompt").replace("<points>", Lang.get("questPoints")); QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -449,12 +484,12 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
context.setSessionData(CK.REQ_QUEST_POINTS, i); context.setSessionData(CK.REQ_QUEST_POINTS, i);
} else { } else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("inputPosNum")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("inputPosNum"));
return new QuestPointsPrompt(); return new RequirementsQuestPointsPrompt(context);
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber") context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqNotANumber")
.replace("<input>", input)); .replace("<input>", input));
return new QuestPointsPrompt(); return new RequirementsQuestPointsPrompt(context);
} }
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
context.setSessionData(CK.REQ_QUEST_POINTS, null); context.setSessionData(CK.REQ_QUEST_POINTS, null);
@ -464,17 +499,31 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} }
private class QuestListPrompt extends StringPrompt { public class RequirementsQuestListPrompt extends QuestsEditorStringPrompt {
private final boolean isRequiredQuest; private final boolean isRequiredQuest;
public QuestListPrompt(boolean isRequired) { public RequirementsQuestListPrompt(ConversationContext context, boolean isRequired) {
super(context);
this.isRequiredQuest = isRequired; this.isRequiredQuest = isRequired;
} }
@Override
public String getTitle(ConversationContext context) {
return Lang.get("reqQuestListTitle");
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqQuestPrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
String text = ChatColor.LIGHT_PURPLE + Lang.get("reqQuestListTitle") + "\n" + ChatColor.DARK_PURPLE; QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String text = ChatColor.LIGHT_PURPLE + getTitle(context) + "\n" + ChatColor.DARK_PURPLE;
boolean none = true; boolean none = true;
for (Quest q : plugin.getQuests()) { for (Quest q : plugin.getQuests()) {
text += q.getName() + ", "; text += q.getName() + ", ";
@ -486,7 +535,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
text = text.substring(0, (text.length() - 2)); text = text.substring(0, (text.length() - 2));
text += "\n"; text += "\n";
} }
text += ChatColor.YELLOW + Lang.get("reqQuestPrompt"); text += ChatColor.YELLOW + getQueryText(context);
return text; return text;
} }
@ -501,11 +550,11 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
String text = Lang.get("reqNotAQuestName"); String text = Lang.get("reqNotAQuestName");
text = text.replace("<quest>", ChatColor.LIGHT_PURPLE + s + ChatColor.RED); text = text.replace("<quest>", ChatColor.LIGHT_PURPLE + s + ChatColor.RED);
context.getForWhom().sendRawMessage(text); context.getForWhom().sendRawMessage(text);
return new QuestListPrompt(isRequiredQuest); return new RequirementsQuestListPrompt(context, isRequiredQuest);
} }
if (questNames.contains(s)) { if (questNames.contains(s)) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listDuplicate")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listDuplicate"));
return new QuestListPrompt(isRequiredQuest); return new RequirementsQuestListPrompt(context, isRequiredQuest);
} }
questNames.add(plugin.getQuest(s).getName()); questNames.add(plugin.getQuest(s).getName());
} }
@ -532,8 +581,8 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} }
public class ItemListPrompt extends QuestsEditorNumericPrompt { public class RequirementsItemListPrompt extends QuestsEditorNumericPrompt {
public ItemListPrompt(ConversationContext context) { public RequirementsItemListPrompt(ConversationContext context) {
super(context); super(context);
} }
@ -653,19 +702,19 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
protected Prompt acceptValidatedInput(ConversationContext context, Number input) { protected Prompt acceptValidatedInput(ConversationContext context, Number input) {
switch (input.intValue()) { switch (input.intValue()) {
case 1: case 1:
return new ItemStackPrompt(ItemListPrompt.this); return new ItemStackPrompt(RequirementsItemListPrompt.this);
case 2: case 2:
if (context.getSessionData(CK.REQ_ITEMS) == null) { if (context.getSessionData(CK.REQ_ITEMS) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqMustAddItem")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqMustAddItem"));
return new ItemListPrompt(context); return new RequirementsItemListPrompt(context);
} else { } else {
return new RemoveItemsPrompt(); return new RemoveItemsPrompt(context);
} }
case 3: case 3:
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqItemCleared")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqItemCleared"));
context.setSessionData(CK.REQ_ITEMS, null); context.setSessionData(CK.REQ_ITEMS, null);
context.setSessionData(CK.REQ_ITEMS_REMOVE, null); context.setSessionData(CK.REQ_ITEMS_REMOVE, null);
return new ItemListPrompt(context); return new RequirementsItemListPrompt(context);
case 4: case 4:
int one; int one;
int two; int two;
@ -683,7 +732,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
return new RequirementsPrompt(context); return new RequirementsPrompt(context);
} else { } else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listsNotSameSize")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listsNotSameSize"));
return new ItemListPrompt(context); return new RequirementsItemListPrompt(context);
} }
default: default:
return null; return null;
@ -701,11 +750,28 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} }
private class RemoveItemsPrompt extends StringPrompt { public class RemoveItemsPrompt extends QuestsEditorStringPrompt {
public RemoveItemsPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqRemoveItemsPrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("reqRemoveItemsPrompt"); QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -722,20 +788,37 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
booleans.add(false); booleans.add(false);
} else { } else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateInvalidInput"));
return new RemoveItemsPrompt(); return new RemoveItemsPrompt(context);
} }
} }
context.setSessionData(CK.REQ_ITEMS_REMOVE, booleans); context.setSessionData(CK.REQ_ITEMS_REMOVE, booleans);
} }
return new ItemListPrompt(context); return new RequirementsItemListPrompt(context);
} }
} }
private class PermissionsPrompt extends StringPrompt { public class RequirementsPermissionsPrompt extends QuestsEditorStringPrompt {
public RequirementsPermissionsPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqPermissionsPrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("reqPermissionsPrompt"); QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
@ -753,11 +836,28 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} }
private class CustomRequirementsPrompt extends StringPrompt { public class CustomRequirementsPrompt extends QuestsEditorStringPrompt {
public CustomRequirementsPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return Lang.get("customRequirementsTitle");
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqCustomPrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
String text = ChatColor.LIGHT_PURPLE + Lang.get("customRequirementsTitle") + "\n"; QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String text = ChatColor.LIGHT_PURPLE + getTitle(context) + "\n";
if (plugin.getCustomRequirements().isEmpty()) { if (plugin.getCustomRequirements().isEmpty()) {
text += ChatColor.DARK_PURPLE + "(" + Lang.get("stageEditorNoModules") + ") "; text += ChatColor.DARK_PURPLE + "(" + Lang.get("stageEditorNoModules") + ") ";
} else { } else {
@ -765,7 +865,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
text += ChatColor.DARK_PURPLE + " - " + cr.getName() + "\n"; text += ChatColor.DARK_PURPLE + " - " + cr.getName() + "\n";
} }
} }
return text + ChatColor.YELLOW + Lang.get("reqCustomPrompt"); return text + ChatColor.YELLOW + getQueryText(context);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -805,7 +905,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} else { } else {
// Already added, so inform user // Already added, so inform user
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqCustomAlreadyAdded")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqCustomAlreadyAdded"));
return new CustomRequirementsPrompt(); return new CustomRequirementsPrompt(context);
} }
} else { } else {
// The custom requirement hasn't been added yet, so let's do it // The custom requirement hasn't been added yet, so let's do it
@ -823,7 +923,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} else { } else {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqCustomNotFound")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqCustomNotFound"));
return new CustomRequirementsPrompt(); return new CustomRequirementsPrompt(context);
} }
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
context.setSessionData(CK.REQ_CUSTOM, null); context.setSessionData(CK.REQ_CUSTOM, null);
@ -836,7 +936,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
private class RequirementCustomDataListPrompt extends StringPrompt { private class RequirementCustomDataListPrompt extends StringPrompt {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
@ -932,62 +1032,127 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} }
} }
private class mcMMOPrompt extends FixedSetPrompt { public class RequirementsMcMMOListPrompt extends QuestsEditorNumericPrompt {
public mcMMOPrompt() { public RequirementsMcMMOListPrompt(ConversationContext context) {
super("1", "2", "3"); super(context);
} }
private final int size = 3;
public int getSize() {
return size;
}
public String getTitle(ConversationContext context) {
return Lang.get("mcMMORequirementsTitle");
}
public ChatColor getNumberColor(ConversationContext context, int number) {
switch (number) {
case 1:
case 2:
return ChatColor.BLUE;
case 3:
return ChatColor.GREEN;
default:
return null;
}
}
public String getSelectionText(ConversationContext context, int number) {
switch(number) {
case 1:
return ChatColor.YELLOW + Lang.get("reqSetSkills");
case 2:
return ChatColor.YELLOW + Lang.get("reqSetSkillAmounts");
case 3:
return ChatColor.GREEN + Lang.get("done");
default:
return null;
}
}
@SuppressWarnings("unchecked")
public String getAdditionalText(ConversationContext context, int number) {
switch(number) {
case 1:
if (context.getSessionData(CK.REQ_MCMMO_SKILLS) == null) {
return ChatColor.GRAY + " (" + Lang.get("noneSet") + ")";
} else {
String text = "\n";
for (String skill : (LinkedList<String>) context.getSessionData(CK.REQ_MCMMO_SKILLS)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + skill + "\n";
}
return text;
}
case 2:
if (context.getSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS) == null) {
return ChatColor.GRAY + " (" + Lang.get("noneSet") + ")";
} else {
String text = "\n";
for (int i : (LinkedList<Integer>) context.getSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
return text;
}
case 3:
return "";
default:
return null;
}
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getPromptText(ConversationContext context) {
String text = ChatColor.DARK_GREEN + Lang.get("mcMMORequirementsTitle") + "\n"; QuestsEditorPostOpenNumericPromptEvent event = new QuestsEditorPostOpenNumericPromptEvent(context, this);
if (cc.getSessionData(CK.REQ_MCMMO_SKILLS) == null) { context.getPlugin().getServer().getPluginManager().callEvent(event);
text += ChatColor.BOLD + "" + ChatColor.GREEN + "1" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("reqSetSkills") + "(" + Lang.get("noneSet") + ")\n"; String text = ChatColor.AQUA + "- " + getTitle(context) + " -\n";
} else { for (int i = 1; i <= size; i++) {
text += ChatColor.BOLD + "" + ChatColor.GREEN + "1" + ChatColor.RESET + ChatColor.GREEN + " - " text += getNumberColor(context, i) + "" + ChatColor.BOLD + i + ChatColor.RESET + " - "
+ Lang.get("reqSetSkills") + "\n"; + getSelectionText(context, i) + " " + getAdditionalText(context, i) + "\n";
@SuppressWarnings("unchecked")
LinkedList<String> skills = (LinkedList<String>) cc.getSessionData(CK.REQ_MCMMO_SKILLS);
for (String skill : skills) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + skill + "\n";
}
} }
if (cc.getSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS) == null) {
text += ChatColor.BOLD + "" + ChatColor.GREEN + "2" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("reqSetSkillAmounts") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BOLD + "" + ChatColor.GREEN + "2" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("reqSetSkillAmounts") + "\n";
@SuppressWarnings("unchecked")
LinkedList<Integer> amounts = (LinkedList<Integer>) cc.getSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS);
for (int i : amounts) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
}
text += ChatColor.BOLD + "" + ChatColor.GREEN + "3" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("done");
return text; return text;
} }
@Override @Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) { protected Prompt acceptValidatedInput(ConversationContext context, Number input) {
if (input.equalsIgnoreCase("1")) { switch(input.intValue()) {
return new mcMMOSkillsPrompt(); case 1:
} else if (input.equalsIgnoreCase("2")) { return new McMMOSkillsPrompt(context);
return new mcMMOAmountsPrompt(); case 2:
} else if (input.equalsIgnoreCase("3")) { return new McMMOAmountsPrompt(context);
case 3:
return new RequirementsPrompt(context); return new RequirementsPrompt(context);
default:
return new RequirementsMcMMOListPrompt(context);
} }
return null;
} }
} }
private class mcMMOSkillsPrompt extends StringPrompt { public class McMMOSkillsPrompt extends QuestsEditorStringPrompt {
public McMMOSkillsPrompt(ConversationContext context) {
super(context);
}
@Override
public String getTitle(ConversationContext context) {
return Lang.get("skillListTitle");
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("rewMcMMOPrompt");
}
@Override @Override
public String getPromptText(ConversationContext context) { public String getPromptText(ConversationContext context) {
String skillList = ChatColor.DARK_GREEN + Lang.get("skillListTitle") + "\n"; QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String skillList = ChatColor.DARK_GREEN + getTitle(context) + "\n";
SkillType[] skills = SkillType.values(); SkillType[] skills = SkillType.values();
for (int i = 0; i < skills.length; i++) { for (int i = 0; i < skills.length; i++) {
if (i == (skills.length - 1)) { if (i == (skills.length - 1)) {
@ -996,11 +1161,11 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
skillList += ChatColor.GREEN + skills[i].getName() + "\n\n"; skillList += ChatColor.GREEN + skills[i].getName() + "\n\n";
} }
} }
return skillList + ChatColor.YELLOW + Lang.get("rewMcMMOPrompt"); return skillList + ChatColor.YELLOW + getQueryText(context);
} }
@Override @Override
public Prompt acceptInput(ConversationContext cc, String input) { public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false
&& input.equalsIgnoreCase(Lang.get("cmdClear")) == false) { && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
LinkedList<String> skills = new LinkedList<String>(); LinkedList<String> skills = new LinkedList<String>();
@ -1009,37 +1174,54 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
if (Quests.getMcMMOSkill(formatted) != null) { if (Quests.getMcMMOSkill(formatted) != null) {
skills.add(formatted); skills.add(formatted);
} else if (skills.contains(formatted)) { } else if (skills.contains(formatted)) {
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("listDuplicate")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("listDuplicate"));
return new mcMMOSkillsPrompt(); return new McMMOSkillsPrompt(context);
} else { } else {
String text = Lang.get("reqMcMMOError"); String text = Lang.get("reqMcMMOError");
text = text.replace("<input>", ChatColor.RED + s + ChatColor.YELLOW); text = text.replace("<input>", ChatColor.RED + s + ChatColor.YELLOW);
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + text); context.getForWhom().sendRawMessage(ChatColor.YELLOW + text);
return new mcMMOSkillsPrompt(); return new McMMOSkillsPrompt(context);
} }
} }
cc.setSessionData(CK.REQ_MCMMO_SKILLS, skills); context.setSessionData(CK.REQ_MCMMO_SKILLS, skills);
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqMcMMOCleared")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqMcMMOCleared"));
cc.setSessionData(CK.REQ_MCMMO_SKILLS, null); context.setSessionData(CK.REQ_MCMMO_SKILLS, null);
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} }
return new mcMMOSkillsPrompt(); return new McMMOSkillsPrompt(context);
} }
} }
private class mcMMOAmountsPrompt extends StringPrompt { public class McMMOAmountsPrompt extends QuestsEditorStringPrompt {
@Override public McMMOAmountsPrompt(ConversationContext context) {
public String getPromptText(ConversationContext context) { super(context);
return ChatColor.YELLOW + Lang.get("reqMcMMOAmountsPrompt");
} }
@Override @Override
public Prompt acceptInput(ConversationContext cc, String input) { public String getTitle(ConversationContext context) {
return null;
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqMcMMOAmountsPrompt");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
return ChatColor.YELLOW + getQueryText(context);
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false
&& input.equalsIgnoreCase(Lang.get("cmdClear")) == false) { && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
LinkedList<Integer> amounts = new LinkedList<Integer>(); LinkedList<Integer> amounts = new LinkedList<Integer>();
@ -1050,71 +1232,136 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
String text = Lang.get("reqNotANumber"); String text = Lang.get("reqNotANumber");
text = text.replace("<input>", ChatColor.RED + s + ChatColor.YELLOW); text = text.replace("<input>", ChatColor.RED + s + ChatColor.YELLOW);
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + text); context.getForWhom().sendRawMessage(ChatColor.YELLOW + text);
return new mcMMOAmountsPrompt(); return new McMMOAmountsPrompt(context);
} }
} }
cc.setSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS, amounts); context.setSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS, amounts);
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqMcMMOAmountsCleared")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqMcMMOAmountsCleared"));
cc.setSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS, null); context.setSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS, null);
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
return new mcMMOPrompt(); return new RequirementsMcMMOListPrompt(context);
} }
return new mcMMOAmountsPrompt(); return new McMMOAmountsPrompt(context);
} }
} }
private class HeroesPrompt extends FixedSetPrompt { public class RequirementsHeroesListPrompt extends QuestsEditorNumericPrompt {
public HeroesPrompt() { public RequirementsHeroesListPrompt(ConversationContext context) {
super("1", "2", "3"); super(context);
}
private final int size = 3;
public int getSize() {
return size;
}
public String getTitle(ConversationContext context) {
return Lang.get("heroesRequirementsTitle");
}
public ChatColor getNumberColor(ConversationContext context, int number) {
switch (number) {
case 1:
case 2:
return ChatColor.BLUE;
case 3:
return ChatColor.GREEN;
default:
return null;
}
}
public String getSelectionText(ConversationContext context, int number) {
switch(number) {
case 1:
return ChatColor.YELLOW + Lang.get("reqHeroesSetPrimary");
case 2:
return ChatColor.YELLOW + Lang.get("reqHeroesSetSecondary");
case 3:
return ChatColor.GREEN + Lang.get("done");
default:
return null;
}
}
public String getAdditionalText(ConversationContext context, int number) {
switch(number) {
case 1:
if (context.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) == null) {
return ChatColor.GRAY + " (" + Lang.get("noneSet") + ")";
} else {
return "(" + ChatColor.AQUA + (String) context.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS)
+ ChatColor.GREEN + ")\n";
}
case 2:
if (context.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) == null) {
return ChatColor.GRAY + " (" + Lang.get("noneSet") + ")";
} else {
return "(" + ChatColor.AQUA + (String) context.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS)
+ ChatColor.GREEN + ")\n";
}
case 3:
return "";
default:
return null;
}
} }
@Override @Override
public String getPromptText(ConversationContext cc) { public String getPromptText(ConversationContext context) {
String text = ChatColor.DARK_GREEN + Lang.get("heroesRequirementsTitle") + "\n"; QuestsEditorPostOpenNumericPromptEvent event = new QuestsEditorPostOpenNumericPromptEvent(context, this);
if (cc.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) == null) { context.getPlugin().getServer().getPluginManager().callEvent(event);
text += ChatColor.BOLD + "" + ChatColor.GREEN + "1" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("reqHeroesSetPrimary") + " (" + Lang.get("noneSet") + ")\n"; String text = ChatColor.AQUA + "- " + getTitle(context) + " -\n";
} else { for (int i = 1; i <= size; i++) {
text += ChatColor.BOLD + "" + ChatColor.GREEN + "1" + ChatColor.RESET + ChatColor.GREEN + " - " text += getNumberColor(context, i) + "" + ChatColor.BOLD + i + ChatColor.RESET + " - "
+ Lang.get("reqHeroesSetPrimary") + " (" + ChatColor.AQUA + getSelectionText(context, i) + " " + getAdditionalText(context, i) + "\n";
+ (String) cc.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) + ChatColor.GREEN + ")\n";
} }
if (cc.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) == null) {
text += ChatColor.BOLD + "" + ChatColor.GREEN + "2" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("reqHeroesSetSecondary") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BOLD + "" + ChatColor.GREEN + "2" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("reqHeroesSetSecondary") + " (" + ChatColor.AQUA
+ (String) cc.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) + ChatColor.GREEN + ")\n";
}
text += ChatColor.BOLD + "" + ChatColor.GREEN + "3" + ChatColor.RESET + ChatColor.GREEN + " - "
+ Lang.get("done");
return text; return text;
} }
@Override @Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) { protected Prompt acceptValidatedInput(ConversationContext context, Number input) {
if (input.equalsIgnoreCase("1")) { switch(input.intValue()) {
return new HeroesPrimaryPrompt(); case 1:
} else if (input.equalsIgnoreCase("2")) { return new HeroesPrimaryPrompt(context);
return new HeroesSecondaryPrompt(); case 2:
} else if (input.equalsIgnoreCase("3")) { return new HeroesSecondaryPrompt(context);
case 3:
return new RequirementsPrompt(context); return new RequirementsPrompt(context);
default:
return new RequirementsHeroesListPrompt(context);
} }
return null;
} }
} }
private class HeroesPrimaryPrompt extends StringPrompt { public class HeroesPrimaryPrompt extends QuestsEditorStringPrompt {
public HeroesPrimaryPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
String text = ChatColor.DARK_PURPLE + Lang.get("heroesPrimaryTitle") + "\n"; return Lang.get("heroesPrimaryTitle");
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqHeroesPrimaryPrompt");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String text = ChatColor.DARK_PURPLE + getTitle(context) + "\n";
LinkedList<String> list = new LinkedList<String>(); LinkedList<String> list = new LinkedList<String>();
for (HeroClass hc : plugin.getDependencies().getHeroes().getClassManager().getClasses()) { for (HeroClass hc : plugin.getDependencies().getHeroes().getClassManager().getClasses()) {
if (hc.isPrimary()) { if (hc.isPrimary()) {
@ -1129,44 +1376,61 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
text += ChatColor.DARK_PURPLE + "- " + ChatColor.LIGHT_PURPLE + s + "\n"; text += ChatColor.DARK_PURPLE + "- " + ChatColor.LIGHT_PURPLE + s + "\n";
} }
} }
text += ChatColor.YELLOW + Lang.get("reqHeroesPrimaryPrompt"); text += ChatColor.YELLOW + getQueryText(context);
return text; return text;
} }
@Override @Override
public Prompt acceptInput(ConversationContext cc, String input) { public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdClear")) == false if (input.equalsIgnoreCase(Lang.get("cmdClear")) == false
&& input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) { && input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
HeroClass hc = plugin.getDependencies().getHeroes().getClassManager().getClass(input); HeroClass hc = plugin.getDependencies().getHeroes().getClassManager().getClass(input);
if (hc != null) { if (hc != null) {
if (hc.isPrimary()) { if (hc.isPrimary()) {
cc.setSessionData(CK.REQ_HEROES_PRIMARY_CLASS, hc.getName()); context.setSessionData(CK.REQ_HEROES_PRIMARY_CLASS, hc.getName());
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} else { } else {
String text = Lang.get("reqHeroesNotPrimary"); String text = Lang.get("reqHeroesNotPrimary");
text = text.replace("<class>", ChatColor.LIGHT_PURPLE + hc.getName() + ChatColor.RED); text = text.replace("<class>", ChatColor.LIGHT_PURPLE + hc.getName() + ChatColor.RED);
cc.getForWhom().sendRawMessage(ChatColor.RED + text); context.getForWhom().sendRawMessage(ChatColor.RED + text);
return new HeroesPrimaryPrompt(); return new HeroesPrimaryPrompt(context);
} }
} else { } else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqHeroesClassNotFound")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqHeroesClassNotFound"));
return new HeroesPrimaryPrompt(); return new HeroesPrimaryPrompt(context);
} }
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) { } else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
cc.setSessionData(CK.REQ_HEROES_PRIMARY_CLASS, null); context.setSessionData(CK.REQ_HEROES_PRIMARY_CLASS, null);
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqHeroesPrimaryCleared")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqHeroesPrimaryCleared"));
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} else { } else {
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} }
} }
} }
private class HeroesSecondaryPrompt extends StringPrompt { public class HeroesSecondaryPrompt extends QuestsEditorStringPrompt {
public HeroesSecondaryPrompt(ConversationContext context) {
super(context);
}
@Override @Override
public String getPromptText(ConversationContext cc) { public String getTitle(ConversationContext context) {
String text = ChatColor.DARK_PURPLE + Lang.get("heroesSecondaryTitle") + "\n"; return Lang.get("heroesSecondaryTitle");
}
@Override
public String getQueryText(ConversationContext context) {
return Lang.get("reqHeroesSecondaryPrompt");
}
@Override
public String getPromptText(ConversationContext context) {
QuestsEditorPostOpenStringPromptEvent event = new QuestsEditorPostOpenStringPromptEvent(context, this);
context.getPlugin().getServer().getPluginManager().callEvent(event);
String text = ChatColor.DARK_PURPLE + getTitle(context) + "\n";
LinkedList<String> list = new LinkedList<String>(); LinkedList<String> list = new LinkedList<String>();
for (HeroClass hc : plugin.getDependencies().getHeroes().getClassManager().getClasses()) { for (HeroClass hc : plugin.getDependencies().getHeroes().getClassManager().getClasses()) {
if (hc.isSecondary()) { if (hc.isSecondary()) {
@ -1181,35 +1445,35 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
text += ChatColor.DARK_PURPLE + "- " + ChatColor.LIGHT_PURPLE + s + "\n"; text += ChatColor.DARK_PURPLE + "- " + ChatColor.LIGHT_PURPLE + s + "\n";
} }
} }
text += ChatColor.YELLOW + Lang.get("reqHeroesSecondaryPrompt"); text += ChatColor.YELLOW + getQueryText(context);
return text; return text;
} }
@Override @Override
public Prompt acceptInput(ConversationContext cc, String input) { public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdClear")) == false if (input.equalsIgnoreCase(Lang.get("cmdClear")) == false
&& input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) { && input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
HeroClass hc = plugin.getDependencies().getHeroes().getClassManager().getClass(input); HeroClass hc = plugin.getDependencies().getHeroes().getClassManager().getClass(input);
if (hc != null) { if (hc != null) {
if (hc.isSecondary()) { if (hc.isSecondary()) {
cc.setSessionData(CK.REQ_HEROES_SECONDARY_CLASS, hc.getName()); context.setSessionData(CK.REQ_HEROES_SECONDARY_CLASS, hc.getName());
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} else { } else {
String text = Lang.get("reqHeroesNotSecondary"); String text = Lang.get("reqHeroesNotSecondary");
text = text.replace("<class>", ChatColor.LIGHT_PURPLE + hc.getName() + ChatColor.RED); text = text.replace("<class>", ChatColor.LIGHT_PURPLE + hc.getName() + ChatColor.RED);
cc.getForWhom().sendRawMessage(ChatColor.RED + text); context.getForWhom().sendRawMessage(ChatColor.RED + text);
return new HeroesSecondaryPrompt(); return new HeroesSecondaryPrompt(context);
} }
} else { } else {
cc.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqHeroesClassNotFound")); context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("reqHeroesClassNotFound"));
return new HeroesSecondaryPrompt(); return new HeroesSecondaryPrompt(context);
} }
} else if (input.equalsIgnoreCase(Lang.get("clear"))) { } else if (input.equalsIgnoreCase(Lang.get("clear"))) {
cc.setSessionData(CK.REQ_HEROES_SECONDARY_CLASS, null); context.setSessionData(CK.REQ_HEROES_SECONDARY_CLASS, null);
cc.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqHeroesSecondaryCleared")); context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqHeroesSecondaryCleared"));
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} else { } else {
return new HeroesPrompt(); return new RequirementsHeroesListPrompt(context);
} }
} }
} }