diff --git a/lib/CustomRequirement.jar b/lib/CustomRequirement.jar new file mode 100644 index 000000000..95a42c80f Binary files /dev/null and b/lib/CustomRequirement.jar differ diff --git a/src/main/java/me/blackvein/quests/CustomRequirement.java b/src/main/java/me/blackvein/quests/CustomRequirement.java new file mode 100644 index 000000000..2f268a88c --- /dev/null +++ b/src/main/java/me/blackvein/quests/CustomRequirement.java @@ -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; + } + +} diff --git a/src/main/java/me/blackvein/quests/Quest.java b/src/main/java/me/blackvein/quests/Quest.java index 47a37d274..fd5038004 100644 --- a/src/main/java/me/blackvein/quests/Quest.java +++ b/src/main/java/me/blackvein/quests/Quest.java @@ -52,6 +52,7 @@ public class Quest { List mcMMOAmountReqs = new LinkedList(); String heroesPrimaryClassReq = null; String heroesSecondaryClassReq = null; + List customRequirements = new LinkedList(); 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; diff --git a/src/main/java/me/blackvein/quests/QuestFactory.java b/src/main/java/me/blackvein/quests/QuestFactory.java index 0602b2741..60acf2eb7 100644 --- a/src/main/java/me/blackvein/quests/QuestFactory.java +++ b/src/main/java/me/blackvein/quests/QuestFactory.java @@ -1020,6 +1020,7 @@ public class QuestFactory implements ConversationAbandonedListener, ColorUtil { LinkedList mcMMOAmountReqs = null; String heroesPrimaryReq = null; String heroesSecondaryReq = null; + LinkedList 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) 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 items = new LinkedList(); @@ -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 { diff --git a/src/main/java/me/blackvein/quests/Quests.java b/src/main/java/me/blackvein/quests/Quests.java index cb0172de8..1e60e7d7b 100644 --- a/src/main/java/me/blackvein/quests/Quests.java +++ b/src/main/java/me/blackvein/quests/Quests.java @@ -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 questers = new HashMap(); public final List questerBlacklist = new LinkedList(); + public final List customRequirements = new LinkedList(); public final LinkedList quests = new LinkedList(); public final LinkedList events = new LinkedList(); public final LinkedList questNPCs = new LinkedList(); @@ -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 requirementClass = c.asSubclass(CustomRequirement.class); + Constructor 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!"); + } + + } + } } diff --git a/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java b/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java index 3ed8a64ff..008adfddc 100644 --- a/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java +++ b/src/main/java/me/blackvein/quests/prompts/RequirementsPrompt.java @@ -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 customReqs = (LinkedList) 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 list = (LinkedList) 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 list = new LinkedList(); + 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 diff --git a/src/main/java/me/blackvein/quests/util/CK.java b/src/main/java/me/blackvein/quests/util/CK.java index 87648af1a..e1a5d394a 100644 --- a/src/main/java/me/blackvein/quests/util/CK.java +++ b/src/main/java/me/blackvein/quests/util/CK.java @@ -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"; + +}