extract methods

This commit is contained in:
G Krupa 2014-07-12 01:58:23 -07:00
parent 0e1100f812
commit 9e4c076537
1 changed files with 432 additions and 425 deletions

View File

@ -2373,259 +2373,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
if (config.contains("quests." + questName + ".requirements")) {
if (config.contains("quests." + questName + ".requirements.fail-requirement-message")) {
quest.failRequirements = parseString(config.getString("quests." + questName + ".requirements.fail-requirement-message"), quest);
} else {
skipQuestProcess("[Quests] Requirements for Quest " + quest.name + " is missing fail-requirement-message:");
}
if (config.contains("quests." + questName + ".requirements.items")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.items"), String.class)) {
List<String> itemReqs = config.getStringList("quests." + questName + ".requirements.items");
boolean failed = false;
for (String item : itemReqs) {
ItemStack stack = ItemUtil.readItemStack(item);
if (stack != null) {
quest.items.add(stack);
} else {
failed = true;
break;
}
}
if (failed == true) {
skipQuestProcess("[Quests] items: Requirement for Quest " + quest.name + " is not formatted correctly!");
}
} else {
skipQuestProcess("[Quests] items: Requirement for Quest " + quest.name + " is not formatted correctly!");
}
if (config.contains("quests." + questName + ".requirements.remove-items")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.remove-items"), Boolean.class)) {
quest.removeItems.clear();
quest.removeItems.addAll(config.getBooleanList("quests." + questName + ".requirements.remove-items"));
} else {
skipQuestProcess("[Quests] remove-items: Requirement for Quest " + quest.name + " is not a list of true/false values!");
}
} else {
skipQuestProcess("[Quests] Requirements for Quest " + quest.name + " is missing remove-items:");
}
}
if (config.contains("quests." + questName + ".requirements.money")) {
if (config.getInt("quests." + questName + ".requirements.money", -999) != -999) {
quest.moneyReq = config.getInt("quests." + questName + ".requirements.money");
} else {
skipQuestProcess("[Quests] money: Requirement for Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".requirements.quest-points")) {
if (config.getInt("quests." + questName + ".requirements.quest-points", -999) != -999) {
quest.questPointsReq = config.getInt("quests." + questName + ".requirements.quest-points");
} else {
skipQuestProcess("[Quests] quest-points: Requirement for Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".requirements.quest-blocks")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.quest-blocks"), String.class)) {
List<String> names = config.getStringList("quests." + questName + ".requirements.quest-blocks");
boolean failed = false;
String failedQuest = "NULL";
for (String name : names) {
boolean done = false;
for (String string : questsSection.getKeys(false)) {
if (config.getString("quests." + string + ".name").equalsIgnoreCase(name)) {
quest.blockQuests.add(name);
done = true;
break;
}
}
if (!done) {
failed = true;
failedQuest = name;
break;
}
}
if (failed) {
skipQuestProcess(new String[]{
"[Quests] " + PINK + failedQuest + " inside quests: Requirement for Quest " + quest.name + " is not a valid Quest name!",
"Make sure you are using the Quest name: value, and not the block name."});
}
} else {
skipQuestProcess("[Quests] quest-blocks: Requirement for Quest " + quest.name + " is not a list of Quest names!");
}
}
if (config.contains("quests." + questName + ".requirements.quests")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.quests"), String.class)) {
List<String> names = config.getStringList("quests." + questName + ".requirements.quests");
boolean failed = false;
String failedQuest = "NULL";
for (String name : names) {
boolean done = false;
for (String string : questsSection.getKeys(false)) {
if (config.getString("quests." + string + ".name").equalsIgnoreCase(name)) {
quest.neededQuests.add(name);
done = true;
break;
}
}
if (!done) {
failed = true;
failedQuest = name;
break;
}
}
if (failed) {
skipQuestProcess(new String[]{
"[Quests] " + failedQuest + " inside quests: Requirement for Quest " + quest.name + " is not a valid Quest name!",
"Make sure you are using the Quest name: value, and not the block name."});
}
} else {
skipQuestProcess("[Quests] quests: Requirement for Quest " + quest.name + " is not a list of Quest names!");
}
}
if (config.contains("quests." + questName + ".requirements.permissions")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.permissions"), String.class)) {
quest.permissionReqs.clear();
quest.permissionReqs.addAll(config.getStringList("quests." + questName + ".requirements.permissions"));
} else {
skipQuestProcess("[Quests] permissions: Requirement for Quest " + quest.name + " is not a list of permissions!");
}
}
if (config.contains("quests." + questName + ".requirements.mcmmo-skills")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.mcmmo-skills"), String.class)) {
if (config.contains("quests." + questName + ".requirements.mcmmo-amounts")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.mcmmo-amounts"), Integer.class)) {
List<String> skills = config.getStringList("quests." + questName + ".requirements.mcmmo-skills");
List<Integer> amounts = config.getIntegerList("quests." + questName + ".requirements.mcmmo-amounts");
if (skills.size() != amounts.size()) {
skipQuestProcess("[Quests] mcmmo-skills: and mcmmo-amounts: in requirements: for Quest " + quest.name + " are not the same size!");
}
quest.mcMMOSkillReqs.addAll(skills);
quest.mcMMOAmountReqs.addAll(amounts);
} else {
skipQuestProcess("[Quests] mcmmo-amounts: Requirement for Quest " + quest.name + " is not a list of numbers!");
}
} else {
skipQuestProcess("[Quests] Requirements for Quest " + quest.name + " is missing mcmmo-amounts:");
}
} else {
skipQuestProcess("[Quests] mcmmo-skills: Requirement for Quest " + quest.name + " is not a list of skills!");
}
}
if (config.contains("quests." + questName + ".requirements.heroes-primary-class")) {
String className = config.getString("quests." + questName + ".requirements.heroes-primary-class");
HeroClass hc = heroes.getClassManager().getClass(className);
if (hc != null && hc.isPrimary()) {
quest.heroesPrimaryClassReq = hc.getName();
} else if (hc != null) {
skipQuestProcess("[Quests] heroes-primary-class: Requirement for Quest " + quest.name + " is not a primary Heroes class!");
} else {
skipQuestProcess("[Quests] heroes-primary-class: Requirement for Quest " + quest.name + " is not a valid Heroes class!");
}
}
if (config.contains("quests." + questName + ".requirements.heroes-secondary-class")) {
String className = config.getString("quests." + questName + ".requirements.heroes-secondary-class");
HeroClass hc = heroes.getClassManager().getClass(className);
if (hc != null && hc.isSecondary()) {
quest.heroesSecondaryClassReq = hc.getName();
} else if (hc != null) {
skipQuestProcess("[Quests] heroes-secondary-class: Requirement for Quest " + quest.name + " is not a secondary Heroes class!");
} else {
skipQuestProcess("[Quests] heroes-secondary-class: Requirement for Quest " + quest.name + " is not a valid Heroes class!");
}
}
if (config.contains("quests." + questName + ".requirements.custom-requirements")) {
ConfigurationSection sec = config.getConfigurationSection("quests." + questName + ".requirements.custom-requirements");
for (String path : sec.getKeys(false)) {
String name = sec.getString(path + ".name");
boolean found = false;
for (CustomRequirement cr : customRequirements) {
if (cr.getName().equalsIgnoreCase(name)) {
found = true;
break;
}
}
if (!found) {
printWarning("[Quests] Custom requirement \"" + name + "\" for Quest \"" + quest.name + "\" could not be found!");
skipQuestProcess((String)null); // null bc we warn, not severe for this one
}
Map<String, Object> data = new HashMap<String, Object>();
ConfigurationSection sec2 = sec.getConfigurationSection(path + ".data");
if (sec2 != null) {
for (String dataPath : sec2.getKeys(false)) {
data.put(dataPath, sec2.get(dataPath));
}
}
quest.customRequirements.put(name, data);
}
}
loadQuestRequirements(config, questsSection);
}
@ -2633,177 +2381,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
processStages(quest, config, questName); // needsSaving may be modified as a side-effect
//Load rewards
if (config.contains("quests." + questName + ".rewards.items")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.items"), String.class)) {
for (String item : config.getStringList("quests." + questName + ".rewards.items")) {
try {
ItemStack stack = ItemUtil.readItemStack(item);
if (stack != null) {
quest.itemRewards.add(stack);
}
} catch (Exception e) {
skipQuestProcess("[Quests] " + item + " in items: Reward in Quest " + quest.name + " is not properly formatted!");
}
}
} else {
skipQuestProcess("[Quests] items: Reward in Quest " + quest.name + " is not a list of strings!");
}
}
if (config.contains("quests." + questName + ".rewards.money")) {
if (config.getInt("quests." + questName + ".rewards.money", -999) != -999) {
quest.moneyReward = config.getInt("quests." + questName + ".rewards.money");
} else {
skipQuestProcess("[Quests] money: Reward in Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".rewards.exp")) {
if (config.getInt("quests." + questName + ".rewards.exp", -999) != -999) {
quest.exp = config.getInt("quests." + questName + ".rewards.exp");
} else {
skipQuestProcess("[Quests] exp: Reward in Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".rewards.commands")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.commands"), String.class)) {
quest.commands.clear();
quest.commands.addAll(config.getStringList("quests." + questName + ".rewards.commands"));
} else {
skipQuestProcess("[Quests] commands: Reward in Quest " + quest.name + " is not a list of commands!");
}
}
if (config.contains("quests." + questName + ".rewards.permissions")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.permissions"), String.class)) {
quest.permissions.clear();
quest.permissions.addAll(config.getStringList("quests." + questName + ".rewards.permissions"));
} else {
skipQuestProcess("[Quests] permissions: Reward in Quest " + quest.name + " is not a list of permissions!");
}
}
if (config.contains("quests." + questName + ".rewards.quest-points")) {
if (config.getInt("quests." + questName + ".rewards.quest-points", -999) != -999) {
quest.questPoints = config.getInt("quests." + questName + ".rewards.quest-points");
totalQuestPoints += quest.questPoints;
} else {
skipQuestProcess("[Quests] quest-points: Reward in Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".rewards.mcmmo-skills")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.mcmmo-skills"), String.class)) {
if (config.contains("quests." + questName + ".rewards.mcmmo-levels")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.mcmmo-levels"), Integer.class)) {
for (String skill : config.getStringList("quests." + questName + ".rewards.mcmmo-skills")) {
if (Quests.getMcMMOSkill(skill) == null) {
skipQuestProcess("[Quests] " + skill + " in mcmmo-skills: Reward in Quest " + quest.name + " is not a valid mcMMO skill name!");
}
}
quest.mcmmoSkills.clear();
quest.mcmmoAmounts.clear();
quest.mcmmoSkills.addAll(config.getStringList("quests." + questName + ".rewards.mcmmo-skills"));
quest.mcmmoAmounts.addAll(config.getIntegerList("quests." + questName + ".rewards.mcmmo-levels"));
} else {
skipQuestProcess("[Quests] mcmmo-levels: Reward in Quest " + quest.name + " is not a list of numbers!");
}
} else {
skipQuestProcess("[Quests] Rewards for Quest " + quest.name + " is missing mcmmo-levels:");
}
} else {
skipQuestProcess("[Quests] mcmmo-skills: Reward in Quest " + quest.name + " is not a list of mcMMO skill names!");
}
}
if (config.contains("quests." + questName + ".rewards.heroes-exp-classes")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.heroes-exp-classes"), String.class)) {
if (config.contains("quests." + questName + ".rewards.heroes-exp-amounts")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.heroes-exp-amounts"), Double.class)) {
for (String heroClass : config.getStringList("quests." + questName + ".rewards.heroes-exp-classes")) {
if (Quests.heroes.getClassManager().getClass(heroClass) == null) {
skipQuestProcess("[Quests] " + heroClass + " in heroes-exp-classes: Reward in Quest " + quest.name + " is not a valid Heroes class name!");
}
}
quest.heroesClasses.clear();
quest.heroesAmounts.clear();
quest.heroesClasses.addAll(config.getStringList("quests." + questName + ".rewards.heroes-exp-classes"));
quest.heroesAmounts.addAll(config.getDoubleList("quests." + questName + ".rewards.heroes-exp-amounts"));
} else {
skipQuestProcess("[Quests] heroes-exp-amounts: Reward in Quest " + quest.name + " is not a list of experience amounts (decimal numbers)!");
}
} else {
skipQuestProcess("[Quests] Rewards for Quest " + quest.name + " is missing heroes-exp-amounts:");
}
} else {
skipQuestProcess("[Quests] heroes-exp-classes: Reward in Quest " + quest.name + " is not a list of Heroes classes!");
}
}
if (config.contains("quests." + questName + ".rewards.phat-loots")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.phat-loots"), String.class)) {
for (String loot : config.getStringList("quests." + questName + ".rewards.phat-loots")) {
if (PhatLootsAPI.getPhatLoot(loot) == null) {
skipQuestProcess("[Quests] " + loot + " in phat-loots: Reward in Quest " + quest.name + " is not a valid PhatLoot name!");
}
}
quest.phatLootRewards.clear();
quest.phatLootRewards.addAll(config.getStringList("quests." + questName + ".rewards.phat-loots"));
} else {
skipQuestProcess("[Quests] phat-loots: Reward in Quest " + quest.name + " is not a list of PhatLoots!");
}
}
if (config.contains("quests." + questName + ".rewards.custom-rewards")) {
populateCustomRewards(config);
}
loadRewards(config);
quests.add(quest);
@ -2833,9 +2411,438 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
catch (StageFailedException ex) {
continue;
}
} // for()
}
}
private void loadRewards(FileConfiguration config) throws SkipQuest {
if (config.contains("quests." + questName + ".rewards.items")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.items"), String.class)) {
for (String item : config.getStringList("quests." + questName + ".rewards.items")) {
try {
ItemStack stack = ItemUtil.readItemStack(item);
if (stack != null) {
quest.itemRewards.add(stack);
}
} catch (Exception e) {
skipQuestProcess("[Quests] " + item + " in items: Reward in Quest " + quest.name + " is not properly formatted!");
}
}
} else {
skipQuestProcess("[Quests] items: Reward in Quest " + quest.name + " is not a list of strings!");
}
}
if (config.contains("quests." + questName + ".rewards.money")) {
if (config.getInt("quests." + questName + ".rewards.money", -999) != -999) {
quest.moneyReward = config.getInt("quests." + questName + ".rewards.money");
} else {
skipQuestProcess("[Quests] money: Reward in Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".rewards.exp")) {
if (config.getInt("quests." + questName + ".rewards.exp", -999) != -999) {
quest.exp = config.getInt("quests." + questName + ".rewards.exp");
} else {
skipQuestProcess("[Quests] exp: Reward in Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".rewards.commands")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.commands"), String.class)) {
quest.commands.clear();
quest.commands.addAll(config.getStringList("quests." + questName + ".rewards.commands"));
} else {
skipQuestProcess("[Quests] commands: Reward in Quest " + quest.name + " is not a list of commands!");
}
}
if (config.contains("quests." + questName + ".rewards.permissions")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.permissions"), String.class)) {
quest.permissions.clear();
quest.permissions.addAll(config.getStringList("quests." + questName + ".rewards.permissions"));
} else {
skipQuestProcess("[Quests] permissions: Reward in Quest " + quest.name + " is not a list of permissions!");
}
}
if (config.contains("quests." + questName + ".rewards.quest-points")) {
if (config.getInt("quests." + questName + ".rewards.quest-points", -999) != -999) {
quest.questPoints = config.getInt("quests." + questName + ".rewards.quest-points");
totalQuestPoints += quest.questPoints;
} else {
skipQuestProcess("[Quests] quest-points: Reward in Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".rewards.mcmmo-skills")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.mcmmo-skills"), String.class)) {
if (config.contains("quests." + questName + ".rewards.mcmmo-levels")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.mcmmo-levels"), Integer.class)) {
for (String skill : config.getStringList("quests." + questName + ".rewards.mcmmo-skills")) {
if (Quests.getMcMMOSkill(skill) == null) {
skipQuestProcess("[Quests] " + skill + " in mcmmo-skills: Reward in Quest " + quest.name + " is not a valid mcMMO skill name!");
}
}
quest.mcmmoSkills.clear();
quest.mcmmoAmounts.clear();
quest.mcmmoSkills.addAll(config.getStringList("quests." + questName + ".rewards.mcmmo-skills"));
quest.mcmmoAmounts.addAll(config.getIntegerList("quests." + questName + ".rewards.mcmmo-levels"));
} else {
skipQuestProcess("[Quests] mcmmo-levels: Reward in Quest " + quest.name + " is not a list of numbers!");
}
} else {
skipQuestProcess("[Quests] Rewards for Quest " + quest.name + " is missing mcmmo-levels:");
}
} else {
skipQuestProcess("[Quests] mcmmo-skills: Reward in Quest " + quest.name + " is not a list of mcMMO skill names!");
}
}
if (config.contains("quests." + questName + ".rewards.heroes-exp-classes")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.heroes-exp-classes"), String.class)) {
if (config.contains("quests." + questName + ".rewards.heroes-exp-amounts")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.heroes-exp-amounts"), Double.class)) {
for (String heroClass : config.getStringList("quests." + questName + ".rewards.heroes-exp-classes")) {
if (Quests.heroes.getClassManager().getClass(heroClass) == null) {
skipQuestProcess("[Quests] " + heroClass + " in heroes-exp-classes: Reward in Quest " + quest.name + " is not a valid Heroes class name!");
}
}
quest.heroesClasses.clear();
quest.heroesAmounts.clear();
quest.heroesClasses.addAll(config.getStringList("quests." + questName + ".rewards.heroes-exp-classes"));
quest.heroesAmounts.addAll(config.getDoubleList("quests." + questName + ".rewards.heroes-exp-amounts"));
} else {
skipQuestProcess("[Quests] heroes-exp-amounts: Reward in Quest " + quest.name + " is not a list of experience amounts (decimal numbers)!");
}
} else {
skipQuestProcess("[Quests] Rewards for Quest " + quest.name + " is missing heroes-exp-amounts:");
}
} else {
skipQuestProcess("[Quests] heroes-exp-classes: Reward in Quest " + quest.name + " is not a list of Heroes classes!");
}
}
if (config.contains("quests." + questName + ".rewards.phat-loots")) {
if (Quests.checkList(config.getList("quests." + questName + ".rewards.phat-loots"), String.class)) {
for (String loot : config.getStringList("quests." + questName + ".rewards.phat-loots")) {
if (PhatLootsAPI.getPhatLoot(loot) == null) {
skipQuestProcess("[Quests] " + loot + " in phat-loots: Reward in Quest " + quest.name + " is not a valid PhatLoot name!");
}
}
quest.phatLootRewards.clear();
quest.phatLootRewards.addAll(config.getStringList("quests." + questName + ".rewards.phat-loots"));
} else {
skipQuestProcess("[Quests] phat-loots: Reward in Quest " + quest.name + " is not a list of PhatLoots!");
}
}
if (config.contains("quests." + questName + ".rewards.custom-rewards")) {
populateCustomRewards(config);
}
}
private void loadQuestRequirements(FileConfiguration config, ConfigurationSection questsSection) throws SkipQuest {
if (config.contains("quests." + questName + ".requirements.fail-requirement-message")) {
quest.failRequirements = parseString(config.getString("quests." + questName + ".requirements.fail-requirement-message"), quest);
} else {
skipQuestProcess("[Quests] Requirements for Quest " + quest.name + " is missing fail-requirement-message:");
}
if (config.contains("quests." + questName + ".requirements.items")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.items"), String.class)) {
List<String> itemReqs = config.getStringList("quests." + questName + ".requirements.items");
boolean failed = false;
for (String item : itemReqs) {
ItemStack stack = ItemUtil.readItemStack(item);
if (stack != null) {
quest.items.add(stack);
} else {
failed = true;
break;
}
}
if (failed == true) {
skipQuestProcess("[Quests] items: Requirement for Quest " + quest.name + " is not formatted correctly!");
}
} else {
skipQuestProcess("[Quests] items: Requirement for Quest " + quest.name + " is not formatted correctly!");
}
if (config.contains("quests." + questName + ".requirements.remove-items")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.remove-items"), Boolean.class)) {
quest.removeItems.clear();
quest.removeItems.addAll(config.getBooleanList("quests." + questName + ".requirements.remove-items"));
} else {
skipQuestProcess("[Quests] remove-items: Requirement for Quest " + quest.name + " is not a list of true/false values!");
}
} else {
skipQuestProcess("[Quests] Requirements for Quest " + quest.name + " is missing remove-items:");
}
}
if (config.contains("quests." + questName + ".requirements.money")) {
if (config.getInt("quests." + questName + ".requirements.money", -999) != -999) {
quest.moneyReq = config.getInt("quests." + questName + ".requirements.money");
} else {
skipQuestProcess("[Quests] money: Requirement for Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".requirements.quest-points")) {
if (config.getInt("quests." + questName + ".requirements.quest-points", -999) != -999) {
quest.questPointsReq = config.getInt("quests." + questName + ".requirements.quest-points");
} else {
skipQuestProcess("[Quests] quest-points: Requirement for Quest " + quest.name + " is not a number!");
}
}
if (config.contains("quests." + questName + ".requirements.quest-blocks")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.quest-blocks"), String.class)) {
List<String> names = config.getStringList("quests." + questName + ".requirements.quest-blocks");
boolean failed = false;
String failedQuest = "NULL";
for (String name : names) {
boolean done = false;
for (String string : questsSection.getKeys(false)) {
if (config.getString("quests." + string + ".name").equalsIgnoreCase(name)) {
quest.blockQuests.add(name);
done = true;
break;
}
}
if (!done) {
failed = true;
failedQuest = name;
break;
}
}
if (failed) {
skipQuestProcess(new String[]{
"[Quests] " + PINK + failedQuest + " inside quests: Requirement for Quest " + quest.name + " is not a valid Quest name!",
"Make sure you are using the Quest name: value, and not the block name."});
}
} else {
skipQuestProcess("[Quests] quest-blocks: Requirement for Quest " + quest.name + " is not a list of Quest names!");
}
}
if (config.contains("quests." + questName + ".requirements.quests")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.quests"), String.class)) {
List<String> names = config.getStringList("quests." + questName + ".requirements.quests");
boolean failed = false;
String failedQuest = "NULL";
for (String name : names) {
boolean done = false;
for (String string : questsSection.getKeys(false)) {
if (config.getString("quests." + string + ".name").equalsIgnoreCase(name)) {
quest.neededQuests.add(name);
done = true;
break;
}
}
if (!done) {
failed = true;
failedQuest = name;
break;
}
}
if (failed) {
skipQuestProcess(new String[]{
"[Quests] " + failedQuest + " inside quests: Requirement for Quest " + quest.name + " is not a valid Quest name!",
"Make sure you are using the Quest name: value, and not the block name."});
}
} else {
skipQuestProcess("[Quests] quests: Requirement for Quest " + quest.name + " is not a list of Quest names!");
}
}
if (config.contains("quests." + questName + ".requirements.permissions")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.permissions"), String.class)) {
quest.permissionReqs.clear();
quest.permissionReqs.addAll(config.getStringList("quests." + questName + ".requirements.permissions"));
} else {
skipQuestProcess("[Quests] permissions: Requirement for Quest " + quest.name + " is not a list of permissions!");
}
}
if (config.contains("quests." + questName + ".requirements.mcmmo-skills")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.mcmmo-skills"), String.class)) {
if (config.contains("quests." + questName + ".requirements.mcmmo-amounts")) {
if (Quests.checkList(config.getList("quests." + questName + ".requirements.mcmmo-amounts"), Integer.class)) {
List<String> skills = config.getStringList("quests." + questName + ".requirements.mcmmo-skills");
List<Integer> amounts = config.getIntegerList("quests." + questName + ".requirements.mcmmo-amounts");
if (skills.size() != amounts.size()) {
skipQuestProcess("[Quests] mcmmo-skills: and mcmmo-amounts: in requirements: for Quest " + quest.name + " are not the same size!");
}
quest.mcMMOSkillReqs.addAll(skills);
quest.mcMMOAmountReqs.addAll(amounts);
} else {
skipQuestProcess("[Quests] mcmmo-amounts: Requirement for Quest " + quest.name + " is not a list of numbers!");
}
} else {
skipQuestProcess("[Quests] Requirements for Quest " + quest.name + " is missing mcmmo-amounts:");
}
} else {
skipQuestProcess("[Quests] mcmmo-skills: Requirement for Quest " + quest.name + " is not a list of skills!");
}
}
if (config.contains("quests." + questName + ".requirements.heroes-primary-class")) {
String className = config.getString("quests." + questName + ".requirements.heroes-primary-class");
HeroClass hc = heroes.getClassManager().getClass(className);
if (hc != null && hc.isPrimary()) {
quest.heroesPrimaryClassReq = hc.getName();
} else if (hc != null) {
skipQuestProcess("[Quests] heroes-primary-class: Requirement for Quest " + quest.name + " is not a primary Heroes class!");
} else {
skipQuestProcess("[Quests] heroes-primary-class: Requirement for Quest " + quest.name + " is not a valid Heroes class!");
}
}
if (config.contains("quests." + questName + ".requirements.heroes-secondary-class")) {
String className = config.getString("quests." + questName + ".requirements.heroes-secondary-class");
HeroClass hc = heroes.getClassManager().getClass(className);
if (hc != null && hc.isSecondary()) {
quest.heroesSecondaryClassReq = hc.getName();
} else if (hc != null) {
skipQuestProcess("[Quests] heroes-secondary-class: Requirement for Quest " + quest.name + " is not a secondary Heroes class!");
} else {
skipQuestProcess("[Quests] heroes-secondary-class: Requirement for Quest " + quest.name + " is not a valid Heroes class!");
}
}
if (config.contains("quests." + questName + ".requirements.custom-requirements")) {
ConfigurationSection sec = config.getConfigurationSection("quests." + questName + ".requirements.custom-requirements");
for (String path : sec.getKeys(false)) {
String name = sec.getString(path + ".name");
boolean found = false;
for (CustomRequirement cr : customRequirements) {
if (cr.getName().equalsIgnoreCase(name)) {
found = true;
break;
}
}
if (!found) {
printWarning("[Quests] Custom requirement \"" + name + "\" for Quest \"" + quest.name + "\" could not be found!");
skipQuestProcess((String)null); // null bc we warn, not severe for this one
}
Map<String, Object> data = new HashMap<String, Object>();
ConfigurationSection sec2 = sec.getConfigurationSection(path + ".data");
if (sec2 != null) {
for (String dataPath : sec2.getKeys(false)) {
data.put(dataPath, sec2.get(dataPath));
}
}
quest.customRequirements.put(name, data);
}
}
}
private void skipQuestProcess(String[] msgs) throws SkipQuest {
for (String msg : msgs) {
if (msg != null) {