Added basic custom requirement API

This commit is contained in:
Blackvein 2014-01-04 02:15:52 -08:00
parent 8c31fabadc
commit 65f8f72d9f
7 changed files with 366 additions and 136 deletions

BIN
lib/CustomRequirement.jar Normal file

Binary file not shown.

View File

@ -0,0 +1,28 @@
package me.blackvein.quests;
import org.bukkit.entity.Player;
public abstract class CustomRequirement {
private String name = null;
private String author = null;
public abstract boolean testRequirement(Player p);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}

View File

@ -52,6 +52,7 @@ public class Quest {
List<Integer> mcMMOAmountReqs = new LinkedList<Integer>();
String heroesPrimaryClassReq = null;
String heroesSecondaryClassReq = null;
List<String> customRequirements = new LinkedList<String>();
public String failRequirements = null;
//
//Rewards
@ -224,6 +225,25 @@ public class Quest {
}
}
for (String s : customRequirements){
CustomRequirement found = null;
for(CustomRequirement cr : plugin.customRequirements){
if(cr.getName().equalsIgnoreCase(s)){
found = cr;
break;
}
}
if(found != null){
if(found.testRequirement(player) == false)
return false;
}else{
Quests.printWarning("[Quests] Quester \"" + player.getName() + "\" attempted to take Quest \"" + name + "\", but the Custom Requirement \"" + s + "\" could not be found. Does it still exist?");
}
}
if (quester.questPoints < questPointsReq) {
return false;
@ -608,6 +628,10 @@ public class Quest {
} else if (other.heroesSecondaryClassReq == null && heroesSecondaryClassReq != null) {
return false;
}
if (other.customRequirements.equals(customRequirements) == false){
return false;
}
if (other.permissions.equals(permissions) == false) {
return false;

View File

@ -1020,6 +1020,7 @@ public class QuestFactory implements ConversationAbandonedListener, ColorUtil {
LinkedList<Integer> mcMMOAmountReqs = null;
String heroesPrimaryReq = null;
String heroesSecondaryReq = null;
LinkedList<String> customReqs = null;
String failMessage = null;
Integer moneyRew = null;
@ -1086,6 +1087,10 @@ public class QuestFactory implements ConversationAbandonedListener, ColorUtil {
if (cc.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) != null) {
heroesSecondaryReq = (String) cc.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS);
}
if (cc.getSessionData(CK.REQ_CUSTOM) != null) {
customReqs = (LinkedList<String>) cc.getSessionData(CK.REQ_CUSTOM);
}
if (cc.getSessionData(CK.Q_FAIL_MESSAGE) != null) {
failMessage = (String) cc.getSessionData(CK.Q_FAIL_MESSAGE);
@ -1160,7 +1165,7 @@ public class QuestFactory implements ConversationAbandonedListener, ColorUtil {
cs.set("initial-event", initialEvent);
cs.set("region", region);
if (moneyReq != null || questPointsReq != null || itemReqs != null && itemReqs.isEmpty() == false || permReqs != null && permReqs.isEmpty() == false || (questReqs != null && questReqs.isEmpty() == false) || (questBlocks != null && questBlocks.isEmpty() == false) || (mcMMOSkillReqs != null && mcMMOSkillReqs.isEmpty() == false) || heroesPrimaryReq != null || heroesSecondaryReq != null) {
if (moneyReq != null || questPointsReq != null || itemReqs != null && itemReqs.isEmpty() == false || permReqs != null && permReqs.isEmpty() == false || (questReqs != null && questReqs.isEmpty() == false) || (questBlocks != null && questBlocks.isEmpty() == false) || (mcMMOSkillReqs != null && mcMMOSkillReqs.isEmpty() == false) || heroesPrimaryReq != null || heroesSecondaryReq != null || customReqs != null) {
ConfigurationSection reqs = cs.createSection("requirements");
List<String> items = new LinkedList<String>();
@ -1183,6 +1188,7 @@ public class QuestFactory implements ConversationAbandonedListener, ColorUtil {
reqs.set("mcmmo-amounts", mcMMOAmountReqs);
reqs.set("heroes-primary-class", heroesPrimaryReq);
reqs.set("heroes-secondary-class", heroesSecondaryReq);
reqs.set("custom-requirements", customReqs);
reqs.set("fail-requirement-message", failMessage);
} else {

View File

@ -82,10 +82,15 @@ import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Constructor;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.sql.Date;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class Quests extends JavaPlugin implements ConversationAbandonedListener, ColorUtil {
@ -108,6 +113,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
public static String effect = "note";
public final Map<String, Quester> questers = new HashMap<String, Quester>();
public final List<String> questerBlacklist = new LinkedList<String>();
public final List<CustomRequirement> customRequirements = new LinkedList<CustomRequirement>();
public final LinkedList<Quest> quests = new LinkedList<Quest>();
public final LinkedList<Event> events = new LinkedList<Event>();
public final LinkedList<NPC> questNPCs = new LinkedList<NPC>();
@ -223,6 +229,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
}
loadConfig();
loadModules();
lang = new Lang(this);
lang.initPhrases();
lang.save();
@ -422,6 +429,66 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
}
}
public void loadModules() {
File f = new File(this.getDataFolder(), "modules");
if(f.exists() && f.isDirectory()){
File[] modules = f.listFiles();
for(File module : modules){
loadModule(module);
}
}else {
f.mkdir();
}
}
public void loadModule(File jar){
try{
JarFile jarFile = new JarFile(jar);
Enumeration e = jarFile.entries();
URL[] urls = { new URL("jar:file:" + jar.getPath() + "!/") };
ClassLoader cl = URLClassLoader.newInstance(urls, getClassLoader());
while (e.hasMoreElements()) {
JarEntry je = (JarEntry) e.nextElement();
if(je.isDirectory() || !je.getName().endsWith(".class")){
continue;
}
String className = je.getName().substring(0,je.getName().length()-6);
className = className.replace('/', '.');
Class<?> c = Class.forName(className, true, cl);
Class<? extends CustomRequirement> requirementClass = c.asSubclass(CustomRequirement.class);
Constructor<? extends CustomRequirement> cstrctr = requirementClass.getConstructor();
CustomRequirement requirement = cstrctr.newInstance();
customRequirements.add(requirement);
String name = requirement.getName() == null ? "[" + jar.getName() + "]" : requirement.getName();
String author = requirement.getAuthor() == null ? "[Unknown]" : requirement.getAuthor();
printInfo("[Quests] Loaded Module: " + name + " by " + author);
}
}catch (Exception e){
printSevere("[Quests] Error: Unable to load module from file: " + jar.getName());
if(debug){
printSevere("[Quests] Error log:");
e.printStackTrace();
}
}
}
public void printHelp(Player player) {
@ -2209,6 +2276,27 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
}
}
if (config.contains("quests." + s + ".requirements.custom-requirements")) {
quest.customRequirements = config.getStringList("quests." + s + ".requirements.custom-requirements");
for(String req : quest.customRequirements){
boolean found = false;
for(CustomRequirement cr : customRequirements){
if(cr.getName().equalsIgnoreCase(req)){
found = true;
break;
}
}
if(!found){
printWarning("[Quests] Custom requirement \"" + req + "\" for Quest \"" + quest.name + "\" could not be found!");
}
}
}
}

View File

@ -6,6 +6,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import me.blackvein.quests.CustomRequirement;
import me.blackvein.quests.util.ColorUtil;
import me.blackvein.quests.Quest;
@ -30,7 +31,7 @@ public class RequirementsPrompt extends FixedSetPrompt implements ColorUtil {
public RequirementsPrompt(Quests plugin, QuestFactory qf) {
super("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
super("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
quests = plugin;
factory = qf;
@ -135,15 +136,27 @@ public class RequirementsPrompt extends FixedSetPrompt implements ColorUtil {
text += GRAY + "8 - Set Heroes requirements (Heroes not installed)\n";
}
if (context.getSessionData(CK.REQ_MONEY) == null && context.getSessionData(CK.REQ_QUEST_POINTS) == null && context.getSessionData(CK.REQ_QUEST_BLOCK) == null && context.getSessionData(CK.REQ_ITEMS) == null && context.getSessionData(CK.REQ_PERMISSION) == null && context.getSessionData(CK.REQ_QUEST) == null && context.getSessionData(CK.REQ_QUEST_BLOCK) == null && context.getSessionData(CK.REQ_MCMMO_SKILLS) == null && context.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) == null && context.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) == null) {
text += GRAY + "" + BOLD + "9 - " + RESET + GRAY + "Set fail requirements message (No requirements set)\n";
} else if (context.getSessionData(CK.Q_FAIL_MESSAGE) == null) {
text += RED + "" + BOLD + "9 - " + RESET + RED + "Set fail requirements message (Required)\n";
if (context.getSessionData(CK.REQ_CUSTOM) == null) {
text += BLUE + "" + BOLD + "9 - " + RESET + ITALIC + PURPLE + "Custom Requirements (None set)\n";
} else {
text += BLUE + "" + BOLD + "9 - " + RESET + YELLOW + "Set fail requirements message" + GRAY + "(" + AQUA + "\"" + context.getSessionData(CK.Q_FAIL_MESSAGE) + "\"" + GRAY + ")\n";
text += BLUE + "" + BOLD + "9 - " + RESET + ITALIC + PURPLE + "Custom Requirements\n";
LinkedList<String> customReqs = (LinkedList<String>) context.getSessionData(CK.REQ_CUSTOM);
for(String s : customReqs){
text += RESET + "" + PURPLE + " - " + PINK + s + "\n";
}
}
text += GREEN + "" + BOLD + "10" + RESET + YELLOW + " - Done";
if (context.getSessionData(CK.REQ_MONEY) == null && context.getSessionData(CK.REQ_QUEST_POINTS) == null && context.getSessionData(CK.REQ_QUEST_BLOCK) == null && context.getSessionData(CK.REQ_ITEMS) == null && context.getSessionData(CK.REQ_PERMISSION) == null && context.getSessionData(CK.REQ_QUEST) == null && context.getSessionData(CK.REQ_QUEST_BLOCK) == null && context.getSessionData(CK.REQ_MCMMO_SKILLS) == null && context.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) == null && context.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) == null && context.getSessionData(CK.REQ_CUSTOM) == null) {
text += GRAY + "" + BOLD + "10 - " + RESET + GRAY + "Set fail requirements message (No requirements set)\n";
} else if (context.getSessionData(CK.Q_FAIL_MESSAGE) == null) {
text += RED + "" + BOLD + "10 - " + RESET + RED + "Set fail requirements message (Required)\n";
} else {
text += BLUE + "" + BOLD + "10 - " + RESET + YELLOW + "Set fail requirements message" + GRAY + "(" + AQUA + "\"" + context.getSessionData(CK.Q_FAIL_MESSAGE) + "\"" + GRAY + ")\n";
}
text += GREEN + "" + BOLD + "11" + RESET + YELLOW + " - Done";
return text;
@ -177,9 +190,11 @@ public class RequirementsPrompt extends FixedSetPrompt implements ColorUtil {
return new RequirementsPrompt(quests, factory);
}
} else if (input.equalsIgnoreCase("9")) {
return new FailMessagePrompt();
return new CustomRequirementsPrompt();
} else if (input.equalsIgnoreCase("10")) {
if (context.getSessionData(CK.REQ_MONEY) != null || context.getSessionData(CK.REQ_QUEST_POINTS) != null || context.getSessionData(CK.REQ_ITEMS) != null || context.getSessionData(CK.REQ_PERMISSION) != null || context.getSessionData(CK.REQ_QUEST) != null || context.getSessionData(CK.REQ_QUEST_BLOCK) != null || context.getSessionData(CK.REQ_MCMMO_SKILLS) != null || context.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) != null || context.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) != null) {
return new FailMessagePrompt();
} else if (input.equalsIgnoreCase("11")) {
if (context.getSessionData(CK.REQ_MONEY) != null || context.getSessionData(CK.REQ_QUEST_POINTS) != null || context.getSessionData(CK.REQ_ITEMS) != null || context.getSessionData(CK.REQ_PERMISSION) != null || context.getSessionData(CK.REQ_QUEST) != null || context.getSessionData(CK.REQ_QUEST_BLOCK) != null || context.getSessionData(CK.REQ_MCMMO_SKILLS) != null || context.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) != null || context.getSessionData(CK.REQ_HEROES_SECONDARY_CLASS) != null || context.getSessionData(CK.REQ_CUSTOM) != null) {
if (context.getSessionData(CK.Q_FAIL_MESSAGE) == null) {
context.getForWhom().sendRawMessage(RED + "You must set a fail requirements message!");
@ -528,6 +543,74 @@ public class RequirementsPrompt extends FixedSetPrompt implements ColorUtil {
}
}
private class CustomRequirementsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
String text = PINK + "- Custom Requirements -\n";
if(quests.customRequirements.isEmpty()){
text += BOLD + "" + PURPLE + "(No modules loaded)";
}else {
for(CustomRequirement cr : quests.customRequirements)
text += PURPLE + " - " + cr.getName() + "\n";
}
return text + YELLOW + "Enter the name of a custom requirement to add, or enter \'clear\' to clear all custom requirements, or \'cancel\' to return.";
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("cancel") == false && input.equalsIgnoreCase("clear") == false) {
CustomRequirement found = null;
for(CustomRequirement cr : quests.customRequirements){
if(cr.getName().equalsIgnoreCase(input)){
found = cr;
break;
}
}
if(found == null){
for(CustomRequirement cr : quests.customRequirements){
if(cr.getName().toLowerCase().contains(input.toLowerCase())){
found = cr;
break;
}
}
}
if(found != null){
if(context.getSessionData(CK.REQ_CUSTOM) != null){
LinkedList<String> list = (LinkedList<String>) context.getSessionData(CK.REQ_CUSTOM);
if(list.contains(found.getName()) == false){
list.add(found.getName());
}else{
context.getForWhom().sendRawMessage(YELLOW + "That custom requirement has already been added!");
return new CustomRequirementsPrompt();
}
}else{
LinkedList<String> list = new LinkedList<String>();
list.add(found.getName());
context.setSessionData(CK.REQ_CUSTOM, list);
}
}else{
context.getForWhom().sendRawMessage(YELLOW + "Custom requirement module not found.");
return new CustomRequirementsPrompt();
}
} else if (input.equalsIgnoreCase("clear")) {
context.setSessionData(CK.REQ_CUSTOM, null);
context.getForWhom().sendRawMessage(YELLOW + "Custom requirements cleared.");
}
return new RequirementsPrompt(quests, factory);
}
}
private class mcMMOPrompt extends FixedSetPrompt {
@ -803,7 +886,7 @@ public class RequirementsPrompt extends FixedSetPrompt implements ColorUtil {
}
}
private class HeroesSecondaryPrompt extends StringPrompt {
@Override

View File

@ -1,125 +1,126 @@
package me.blackvein.quests.util;
public class CK {
public static final String ED_QUEST_EDIT = "edit";
public static final String ED_QUEST_DELETE = "delQuest";
public static final String ED_EVENT_DELETE = "delEvent";
//Quests
public static final String Q_NAME = "questName";
public static final String Q_ASK_MESSAGE = "askMessage";
public static final String Q_FINISH_MESSAGE = "finishMessage";
public static final String Q_REDO_DELAY = "redoDelay";
public static final String Q_START_NPC = "npcStart";
public static final String Q_START_BLOCK= "blockStart";
public static final String Q_FAIL_MESSAGE = "failMessage";
public static final String Q_INITIAL_EVENT = "initialEvent";
public static final String Q_REGION = "region";
//Requirements
public static final String REQ_MONEY = "moneyReq";
public static final String REQ_QUEST_POINTS = "questPointsReq";
public static final String REQ_ITEMS = "itemReqs";
public static final String REQ_ITEMS_REMOVE = "removeItemReqs";
public static final String REQ_PERMISSION = "permissionReqs";
public static final String REQ_MCMMO_SKILLS = "mcMMOSkillReqs";
public static final String REQ_MCMMO_SKILL_AMOUNTS = "mcMMOSkillAmountReqs";
public static final String REQ_HEROES_PRIMARY_CLASS = "heroesPrimaryClassReq";
public static final String REQ_HEROES_SECONDARY_CLASS = "heroesSecondaryClassReq";
public static final String REQ_QUEST = "questReqs";
public static final String REQ_QUEST_BLOCK= "questBlocks";
//Rewards
public static final String REW_MONEY = "moneyRew";
public static final String REW_QUEST_POINTS = "questPointsRew";
public static final String REW_ITEMS = "itemRews";
public static final String REW_RPG_ITEM_IDS = "rpgItemRewIDs";
public static final String REW_RPG_ITEM_AMOUNTS = "rpgItemRewAmounts";
public static final String REW_EXP = "expRew";
public static final String REW_COMMAND = "commandRews";
public static final String REW_PERMISSION = "permissionRews";
public static final String REW_MCMMO_SKILLS = "mcMMOSkillRews";
public static final String REW_MCMMO_AMOUNTS = "mcMMOSkillAmounts";
public static final String REW_HEROES_CLASSES = "heroesClassRews";
public static final String REW_HEROES_AMOUNTS = "heroesAmountRews";
public static final String REW_PHAT_LOOTS = "phatLootRews";
//Stages
public static final String S_BREAK_IDS = "breakIds";
public static final String S_BREAK_AMOUNTS = "breakAmounts";
public static final String S_DAMAGE_IDS = "damageIds";
public static final String S_DAMAGE_AMOUNTS = "damageAmounts";
public static final String S_PLACE_IDS = "placeIds";
public static final String S_PLACE_AMOUNTS = "placeAmounts";
public static final String S_USE_IDS = "useIds";
public static final String S_USE_AMOUNTS = "useAmounts";
public static final String S_CUT_IDS = "useIds";
public static final String S_CUT_AMOUNTS = "cutAmounts";
public static final String S_FISH = "fish";
public static final String S_PLAYER_KILL = "playerKill";
public static final String S_ENCHANT_TYPES = "enchantTypes";
public static final String S_ENCHANT_IDS = "enchantIds";
public static final String S_ENCHANT_AMOUNTS = "enchantAmounts";
public static final String S_DELIVERY_ITEMS = "deliveryItems";
public static final String S_DELIVERY_NPCS = "deliveryNPCs";
public static final String S_DELIVERY_MESSAGES = "deliveryMessages";
public static final String S_NPCS_TO_TALK_TO = "npcIdsToTalkTo";
public static final String S_NPCS_TO_KILL = "npcIdsToKill";
public static final String S_NPCS_TO_KILL_AMOUNTS = "npcAmountsToKill";
public static final String S_MOB_TYPES = "mobTypes";
public static final String S_MOB_AMOUNTS = "mobAmounts";
public static final String S_MOB_KILL_LOCATIONS = "killLocations";
public static final String S_MOB_KILL_LOCATIONS_RADIUS = "killLocationRadii";
public static final String S_MOB_KILL_LOCATIONS_NAMES = "killLocationNames";
public static final String S_REACH_LOCATIONS = "reachLocations";
public static final String S_REACH_LOCATIONS_RADIUS = "reachLocationRadii";
public static final String S_REACH_LOCATIONS_NAMES = "reachLocationNames";
public static final String S_TAME_TYPES = "tameTypes";
public static final String S_TAME_AMOUNTS = "tameAmounts";
public static final String S_SHEAR_COLORS = "shearColors";
public static final String S_SHEAR_AMOUNTS = "shearAmounts";
public static final String S_START_EVENT = "startEvent";
public static final String S_FINISH_EVENT = "finishEvent";
public static final String S_CHAT_EVENTS = "chatEvents";
public static final String S_CHAT_EVENT_TRIGGERS = "chatEventTriggers";
public static final String S_CHAT_TEMP_EVENT = "chatTempEvent";
public static final String S_DEATH_EVENT = "deathEvent";
public static final String S_DISCONNECT_EVENT = "disconnectEvent";
public static final String S_DELAY = "delay";
public static final String S_DELAY_MESSAGE = "delayMessage";
public static final String S_DENIZEN = "denizen";
public static final String S_COMPLETE_MESSAGE = "completeMessage";
public static final String S_START_MESSAGE = "startMessage";
public static final String S_MINI_EVENTS = "miniEvents";
//Events
public static final String E_OLD_EVENT = "oldEvent";
public static final String E_NAME = "evtName";
public static final String E_MESSAGE = "evtMessage";
public static final String E_CLEAR_INVENTORY = "evtClearInv";
public static final String E_FAIL_QUEST = "evtFailQuest";
public static final String E_ITEMS = "evtItems";
public static final String E_ITEMS_AMOUNTS = "evtItemAmounts";
public static final String E_EXPLOSIONS = "evtExplosions";
public static final String E_EFFECTS = "evtEffects";
public static final String E_EFFECTS_LOCATIONS = "evtEffectLocations";
public static final String E_WORLD_STORM = "evtStormWorld";
public static final String E_WORLD_STORM_DURATION = "evtStormDuration";
public static final String E_WORLD_THUNDER = "evtThunderWorld";
public static final String E_WORLD_THUNDER_DURATION = "evtThunderDuration";
public static final String E_MOB_TYPES = "evtMobTypes";
public static final String E_LIGHTNING = "evtLightningStrikes";
public static final String E_POTION_TYPES = "evtPotionTypes";
public static final String E_POTION_DURATIONS = "evtPotionDurations";
public static final String E_POTION_STRENGHT = "evtPotionMagnitudes";
public static final String E_HUNGER = "evtHunger";
public static final String E_SATURATION = "evtSaturation";
public static final String E_HEALTH = "evtHealth";
public static final String E_TELEPORT = "evtTeleportLocation";
public static final String E_COMMANDS = "evtCommands";
//Party
public static final String P_INVITER = "inviter";
}
package me.blackvein.quests.util;
public class CK {
public static final String ED_QUEST_EDIT = "edit";
public static final String ED_QUEST_DELETE = "delQuest";
public static final String ED_EVENT_DELETE = "delEvent";
//Quests
public static final String Q_NAME = "questName";
public static final String Q_ASK_MESSAGE = "askMessage";
public static final String Q_FINISH_MESSAGE = "finishMessage";
public static final String Q_REDO_DELAY = "redoDelay";
public static final String Q_START_NPC = "npcStart";
public static final String Q_START_BLOCK= "blockStart";
public static final String Q_FAIL_MESSAGE = "failMessage";
public static final String Q_INITIAL_EVENT = "initialEvent";
public static final String Q_REGION = "region";
//Requirements
public static final String REQ_MONEY = "moneyReq";
public static final String REQ_QUEST_POINTS = "questPointsReq";
public static final String REQ_ITEMS = "itemReqs";
public static final String REQ_ITEMS_REMOVE = "removeItemReqs";
public static final String REQ_PERMISSION = "permissionReqs";
public static final String REQ_MCMMO_SKILLS = "mcMMOSkillReqs";
public static final String REQ_MCMMO_SKILL_AMOUNTS = "mcMMOSkillAmountReqs";
public static final String REQ_HEROES_PRIMARY_CLASS = "heroesPrimaryClassReq";
public static final String REQ_HEROES_SECONDARY_CLASS = "heroesSecondaryClassReq";
public static final String REQ_QUEST = "questReqs";
public static final String REQ_QUEST_BLOCK = "questBlocks";
public static final String REQ_CUSTOM = "customReqs";
//Rewards
public static final String REW_MONEY = "moneyRew";
public static final String REW_QUEST_POINTS = "questPointsRew";
public static final String REW_ITEMS = "itemRews";
public static final String REW_RPG_ITEM_IDS = "rpgItemRewIDs";
public static final String REW_RPG_ITEM_AMOUNTS = "rpgItemRewAmounts";
public static final String REW_EXP = "expRew";
public static final String REW_COMMAND = "commandRews";
public static final String REW_PERMISSION = "permissionRews";
public static final String REW_MCMMO_SKILLS = "mcMMOSkillRews";
public static final String REW_MCMMO_AMOUNTS = "mcMMOSkillAmounts";
public static final String REW_HEROES_CLASSES = "heroesClassRews";
public static final String REW_HEROES_AMOUNTS = "heroesAmountRews";
public static final String REW_PHAT_LOOTS = "phatLootRews";
//Stages
public static final String S_BREAK_IDS = "breakIds";
public static final String S_BREAK_AMOUNTS = "breakAmounts";
public static final String S_DAMAGE_IDS = "damageIds";
public static final String S_DAMAGE_AMOUNTS = "damageAmounts";
public static final String S_PLACE_IDS = "placeIds";
public static final String S_PLACE_AMOUNTS = "placeAmounts";
public static final String S_USE_IDS = "useIds";
public static final String S_USE_AMOUNTS = "useAmounts";
public static final String S_CUT_IDS = "useIds";
public static final String S_CUT_AMOUNTS = "cutAmounts";
public static final String S_FISH = "fish";
public static final String S_PLAYER_KILL = "playerKill";
public static final String S_ENCHANT_TYPES = "enchantTypes";
public static final String S_ENCHANT_IDS = "enchantIds";
public static final String S_ENCHANT_AMOUNTS = "enchantAmounts";
public static final String S_DELIVERY_ITEMS = "deliveryItems";
public static final String S_DELIVERY_NPCS = "deliveryNPCs";
public static final String S_DELIVERY_MESSAGES = "deliveryMessages";
public static final String S_NPCS_TO_TALK_TO = "npcIdsToTalkTo";
public static final String S_NPCS_TO_KILL = "npcIdsToKill";
public static final String S_NPCS_TO_KILL_AMOUNTS = "npcAmountsToKill";
public static final String S_MOB_TYPES = "mobTypes";
public static final String S_MOB_AMOUNTS = "mobAmounts";
public static final String S_MOB_KILL_LOCATIONS = "killLocations";
public static final String S_MOB_KILL_LOCATIONS_RADIUS = "killLocationRadii";
public static final String S_MOB_KILL_LOCATIONS_NAMES = "killLocationNames";
public static final String S_REACH_LOCATIONS = "reachLocations";
public static final String S_REACH_LOCATIONS_RADIUS = "reachLocationRadii";
public static final String S_REACH_LOCATIONS_NAMES = "reachLocationNames";
public static final String S_TAME_TYPES = "tameTypes";
public static final String S_TAME_AMOUNTS = "tameAmounts";
public static final String S_SHEAR_COLORS = "shearColors";
public static final String S_SHEAR_AMOUNTS = "shearAmounts";
public static final String S_START_EVENT = "startEvent";
public static final String S_FINISH_EVENT = "finishEvent";
public static final String S_CHAT_EVENTS = "chatEvents";
public static final String S_CHAT_EVENT_TRIGGERS = "chatEventTriggers";
public static final String S_CHAT_TEMP_EVENT = "chatTempEvent";
public static final String S_DEATH_EVENT = "deathEvent";
public static final String S_DISCONNECT_EVENT = "disconnectEvent";
public static final String S_DELAY = "delay";
public static final String S_DELAY_MESSAGE = "delayMessage";
public static final String S_DENIZEN = "denizen";
public static final String S_COMPLETE_MESSAGE = "completeMessage";
public static final String S_START_MESSAGE = "startMessage";
public static final String S_MINI_EVENTS = "miniEvents";
//Events
public static final String E_OLD_EVENT = "oldEvent";
public static final String E_NAME = "evtName";
public static final String E_MESSAGE = "evtMessage";
public static final String E_CLEAR_INVENTORY = "evtClearInv";
public static final String E_FAIL_QUEST = "evtFailQuest";
public static final String E_ITEMS = "evtItems";
public static final String E_ITEMS_AMOUNTS = "evtItemAmounts";
public static final String E_EXPLOSIONS = "evtExplosions";
public static final String E_EFFECTS = "evtEffects";
public static final String E_EFFECTS_LOCATIONS = "evtEffectLocations";
public static final String E_WORLD_STORM = "evtStormWorld";
public static final String E_WORLD_STORM_DURATION = "evtStormDuration";
public static final String E_WORLD_THUNDER = "evtThunderWorld";
public static final String E_WORLD_THUNDER_DURATION = "evtThunderDuration";
public static final String E_MOB_TYPES = "evtMobTypes";
public static final String E_LIGHTNING = "evtLightningStrikes";
public static final String E_POTION_TYPES = "evtPotionTypes";
public static final String E_POTION_DURATIONS = "evtPotionDurations";
public static final String E_POTION_STRENGHT = "evtPotionMagnitudes";
public static final String E_HUNGER = "evtHunger";
public static final String E_SATURATION = "evtSaturation";
public static final String E_HEALTH = "evtHealth";
public static final String E_TELEPORT = "evtTeleportLocation";
public static final String E_COMMANDS = "evtCommands";
//Party
public static final String P_INVITER = "inviter";
}