Merge branch 'master' into modules

This commit is contained in:
BuildTools 2019-02-23 23:49:33 -05:00
commit cc88f89093
70 changed files with 7508 additions and 4145 deletions

View File

@ -1,8 +1,8 @@
# Quests
# Quests [![Build Status](http://ci.ac3-servers.eu/buildStatus/icon?job=Quests)](http://ci.ac3-servers.eu/job/Quests/)
Quests plugin for Spigot. This work depends on contributions from coders like you!
## Download [![Build Status](http://ci.ac3-servers.eu/buildStatus/icon?job=Quests)](http://ci.ac3-servers.eu/job/Quests/)
## Download
Distributed exclusively through Spigot: https://www.spigotmc.org/resources/quests.3711/
@ -12,8 +12,7 @@ Documentation can be found in the Wiki: https://github.com/FlyingPikachu/Quests/
## Compile
Building requires Java 8 and Maven:
https://github.com/FlyingPikachu/Quests/wiki/Master-%E2%80%90-Plugin-Compilation
Requires Java 8 and Maven: https://github.com/FlyingPikachu/Quests/wiki/Master-%E2%80%90-Plugin-Compilation
## Localization [![Crowdin](https://d322cqt584bo4o.cloudfront.net/translate-quests/localized.svg)](https://crowdin.com/project/translate-quests)

BIN
lib/Parties-2.5.0.jar Normal file

Binary file not shown.

View File

@ -12,8 +12,11 @@
package me.blackvein.quests;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
@ -23,11 +26,10 @@ public abstract class CustomObjective implements Listener {
private Quests plugin = Quests.getPlugin(Quests.class);
private String name = null;
private String author = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private String countPrompt = "null";
private String display = "null";
private boolean enableCount = true;
private LinkedList<Entry<String, Object>> data = new LinkedList<Entry<String, Object>>();
private Map<String, String> descriptions = new HashMap<String, String>();
private String countPrompt = "Enter number";
private String display = "Progress: %count%";
private boolean showCount = true;
private int count = 1;
@ -47,12 +49,49 @@ public abstract class CustomObjective implements Listener {
this.author = author;
}
public void addData(String name) {
datamap.put(name, null);
public LinkedList<Entry<String, Object>> getData() {
return data;
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
/**
* Add a new prompt<p>
*
* Note that the "defaultValue" Object will be cast to a String internally
*
* @param title Prompt name
* @param description Description of expected input
* @param defaultValue Value to be used if input is not received
*/
public void addStringPrompt(String title, String description, Object defaultValue) {
Entry<String, Object> prompt = new AbstractMap.SimpleEntry<String, Object>(title, defaultValue);
data.add(prompt);
descriptions.put(title, description);
}
/**
* Set the title of a prompt
*
* @param name Prompt title
* @deprecated use addPrompt(name, description)
*/
public void addData(String name) {
Entry<String, Object> prompt = new AbstractMap.SimpleEntry<String, Object>(name, null);
data.add(prompt);
}
public Map<String, String> getDescriptions() {
return descriptions;
}
/**
* Set the description for the specified prompt
*
* @param name Prompt title
* @param description Description of expected input
* @deprecated use addTaskPrompt(name, description)
*/
public void addDescription(String name, String description) {
descriptions.put(name, description);
}
public int getCount() {
@ -71,14 +110,34 @@ public abstract class CustomObjective implements Listener {
this.countPrompt = countPrompt;
}
public boolean isCountShown() {
/**
* Check whether to let user set required amount for objective
*
* @param enableCount
*/
public boolean canShowCount() {
return showCount;
}
/**
* Set whether to let user set required amount for objective
*
* @param enableCount
*/
public void setShowCount(boolean showCount) {
this.showCount = showCount;
}
/**
* Check whether to let user set required amount for objective
*
* @param enableCount
* @deprecated use setShowCount(boolean)
*/
public void setEnableCount(boolean enableCount) {
setShowCount(enableCount);
}
public String getDisplay() {
return display;
}
@ -87,20 +146,26 @@ public abstract class CustomObjective implements Listener {
this.display = display;
}
public boolean isEnableCount() {
return enableCount;
}
public void setEnableCount(boolean enableCount) {
this.enableCount = enableCount;
public Map<String, Object> getDataForPlayer(Player player, CustomObjective customObj, Quest quest) {
return getDatamap(player, customObj, quest);
}
/**
* Get data for specified player's current stage
*
* @param player The player to get data for
* @param obj The CustomObjective to get data for
* @param quest Quest to get player's current stage. Returns null if player is not on quest
* @return data map if everything matches, otherwise null
* @deprecated use getDataForPlayer()
*/
public Map<String, Object> getDatamap(Player player, CustomObjective obj, Quest quest) {
Quester quester = plugin.getQuester(player.getUniqueId());
if (quester != null) {
Stage currentStage = quester.getCurrentStage(quest);
if (currentStage == null)
if (currentStage == null) {
return null;
}
int index = -1;
int tempIndex = 0;
for (me.blackvein.quests.CustomObjective co : currentStage.customObjectives) {
@ -111,7 +176,12 @@ public abstract class CustomObjective implements Listener {
tempIndex++;
}
if (index > -1) {
return currentStage.customObjectiveData.get(index);
Map<String, Object> m = new HashMap<String, Object>();
for (int i = index; i < index + data.size(); i++) {
Entry<String, Object> e = currentStage.customObjectiveData.get(i);
m.put(e.getKey(), e.getValue());
}
return m;
}
}
return null;
@ -150,54 +220,4 @@ public abstract class CustomObjective implements Listener {
}
}
}
@Override
public boolean equals(Object o) {
if (o instanceof CustomObjective) {
CustomObjective other = (CustomObjective) o;
if (other.name.equals(name) == false) {
return false;
}
if (other.author.equals(name) == false) {
return false;
}
for (String s : other.datamap.keySet()) {
if (datamap.containsKey(s) == false) {
return false;
}
}
for (Object val : other.datamap.values()) {
if (datamap.containsValue(val) == false) {
return false;
}
}
for (String s : other.descriptions.keySet()) {
if (descriptions.containsKey(s) == false) {
return false;
}
}
for (String s : other.descriptions.values()) {
if (descriptions.containsValue(s) == false) {
return false;
}
}
if (other.countPrompt.equals(countPrompt) == false) {
return false;
}
if (other.display.equals(display) == false) {
return false;
}
if (other.enableCount != enableCount) {
return false;
}
if (other.showCount != showCount) {
return false;
}
if (other.count != count) {
return false;
}
return true;
}
return false;
}
}

View File

@ -21,8 +21,8 @@ public abstract class CustomRequirement {
private String name = null;
private String author = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private Map<String, Object> data = new HashMap<String, Object>();
private Map<String, String> descriptions = new HashMap<String, String>();
public abstract boolean testRequirement(Player p, Map<String, Object> m);
@ -42,11 +42,46 @@ public abstract class CustomRequirement {
this.author = author;
}
public void addData(String name) {
datamap.put(name, null);
public Map<String, Object> getData() {
return data;
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
/**
* Add a new prompt<p>
*
* Note that the "defaultValue" Object will be cast to a String internally
*
* @param title Prompt name
* @param description Description of expected input
* @param defaultValue Value to be used if input is not received
*/
public void addStringPrompt(String title, String description, Object defaultValue) {
data.put(title, defaultValue);
descriptions.put(title, description);
}
/**
* Set the title of a prompt
*
* @param name Prompt title
* @deprecated use addPrompt(name, description)
*/
public void addData(String name) {
data.put(name, null);
}
public Map<String, String> getDescriptions() {
return descriptions;
}
/**
* Set the description for the specified prompt
*
* @param name Prompt title
* @param description Description of expected input
* @deprecated use addTaskPrompt(name, description)
*/
public void addDescription(String name, String description) {
descriptions.put(name, description);
}
}

View File

@ -22,8 +22,8 @@ public abstract class CustomReward {
private String name = null;
private String author = null;
private String rewardName = null;
public final Map<String, Object> datamap = new HashMap<String, Object>();
public final Map<String, String> descriptions = new HashMap<String, String>();
private Map<String, Object> data = new HashMap<String, Object>();
private Map<String, String> descriptions = new HashMap<String, String>();
public abstract void giveReward(Player p, Map<String, Object> m);
@ -43,19 +43,54 @@ public abstract class CustomReward {
this.author = author;
}
public Map<String, Object> getData() {
return data;
}
/**
* Add a new prompt<p>
*
* Note that the "defaultValue" Object will be cast to a String internally
*
* @param title Prompt name
* @param description Description of expected input
* @param defaultValue Value to be used if input is not received
*/
public void addStringPrompt(String title, String description, Object defaultValue) {
data.put(title, defaultValue);
descriptions.put(title, description);
}
/**
* Set the title of a prompt
*
* @param name Prompt title
* @deprecated use addPrompt(name, description)
*/
public void addData(String name) {
datamap.put(name, null);
data.put(name, null);
}
public void addDescription(String data, String description) {
descriptions.put(data, description);
public Map<String, String> getDescriptions() {
return descriptions;
}
public void setRewardName(String name) {
rewardName = name;
/**
* Set the description for the specified prompt
*
* @param name Prompt title
* @param description Description of expected input
* @deprecated use addTaskPrompt(name, description)
*/
public void addDescription(String name, String description) {
descriptions.put(name, description);
}
public String getRewardName() {
return rewardName;
}
public void setRewardName(String name) {
rewardName = name;
}
}

View File

@ -1,3 +1,15 @@
/*******************************************************************************************************
* Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************************************/
package me.blackvein.quests;
import net.aufdemrand.denizen.BukkitScriptEntryData;

View File

@ -2,6 +2,7 @@ package me.blackvein.quests;
import org.bukkit.plugin.RegisteredServiceProvider;
import me.blackvein.quests.util.WorldGuardAPI;
import me.clip.placeholderapi.PlaceholderAPIPlugin;
import net.aufdemrand.denizen.Denizen;
import net.citizensnpcs.api.CitizensPlugin;
@ -17,14 +18,13 @@ import com.gmail.nossr50.mcMMO;
import com.herocraftonline.heroes.Heroes;
import com.live.bemmamin.gps.Vars;
import com.live.bemmamin.gps.api.GPSAPI;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
public class Dependencies {
private Quests plugin;
private static Economy economy = null;
private static Permission permission = null;
private static WorldGuardPlugin worldGuard = null;
private static WorldGuardAPI worldGuardApi = null;
private static mcMMO mcmmo = null;
private static GPSAPI gpsapi = null;
private static Heroes heroes = null;
@ -47,8 +47,8 @@ public class Dependencies {
return permission;
}
public WorldGuardPlugin getWorldGuard() {
return worldGuard;
public WorldGuardAPI getWorldGuardApi() {
return worldGuardApi;
}
public mcMMO getMcmmo() {
@ -107,7 +107,7 @@ public class Dependencies {
plugin.getLogger().warning("Legacy version of Citizens found. Citizens in Quests not enabled.");
}
if (isPluginAvailable("WorldGuard")) {
worldGuard = (WorldGuardPlugin) plugin.getServer().getPluginManager().getPlugin("WorldGuard");
worldGuardApi = new WorldGuardAPI(plugin.getServer().getPluginManager().getPlugin("WorldGuard"));
}
if (isPluginAvailable("Denizen")) {
denizen = (Denizen) plugin.getServer().getPluginManager().getPlugin("Denizen");
@ -115,8 +115,9 @@ public class Dependencies {
if (isPluginAvailable("mcMMO")) {
mcmmo = (mcMMO) plugin.getServer().getPluginManager().getPlugin("mcMMO");
}
if (plugin.getSettings().canUseGPS() && isPluginAvailable("GPS")) {
if (isPluginAvailable("GPS") && plugin.getSettings().canUseGPS()) {
gpsapi = new GPSAPI(plugin);
Vars.getInstance().setMaxDistanceToEntry(9999.0);
}
if (isPluginAvailable("Heroes")) {
heroes = (Heroes) plugin.getServer().getPluginManager().getPlugin("Heroes");
@ -132,7 +133,6 @@ public class Dependencies {
}
if (isPluginAvailable("Parties")) {
parties = Parties.getApi();
Vars.getInstance().setMaxDistanceToEntry(9999.0);
}
if (isPluginAvailable("Vault")) {
if (!setupEconomy()) {

View File

@ -403,7 +403,7 @@ public class EventFactory implements ConversationAbandonedListener {
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.RED + Lang.get("eventEditorDeletePrompt") + " \"" + ChatColor.GOLD + (String) context.getSessionData(CK.ED_EVENT_DELETE) + ChatColor.RED + "\"?\n";
String text = ChatColor.RED + Lang.get("eventEditorDeletePrompt") + "(" + ChatColor.GOLD + (String) context.getSessionData(CK.ED_EVENT_DELETE) + ChatColor.RED + ")";
text += ChatColor.YELLOW + Lang.get("yesWord") + "/" + Lang.get("noWord");
return text;
}
@ -693,7 +693,7 @@ public class EventFactory implements ConversationAbandonedListener {
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.RED + Lang.get("eventEditorFinishAndSave") + " \"" + ChatColor.GOLD + (String) context.getSessionData(CK.E_NAME) + ChatColor.RED + "\"?\n";
String text = ChatColor.RED + Lang.get("eventEditorFinishAndSave") + "(" + ChatColor.GOLD + (String) context.getSessionData(CK.E_NAME) + ChatColor.RED + ")";
if (modified.isEmpty() == false) {
text += ChatColor.RED + Lang.get("eventEditorModifiedNote") + "\n";
for (String s : modified) {

View File

@ -680,7 +680,7 @@ public class Quest {
String message = found.getRewardName();
if (message != null) {
for (String key : datamap.keySet()) {
message = message.replace("%" + ((String) key) + "%", ((String) datamap.get(key)));
message = message.replace("%" + key + "%", datamap.get(key).toString());
}
player.sendMessage("- " + ChatColor.GOLD + message);
} else {
@ -749,7 +749,7 @@ public class Quest {
if (region == null) {
return true;
} else {
ApplicableRegionSet ars = plugin.getDependencies().getWorldGuard().getRegionManager(player.getWorld()).getApplicableRegions(player.getLocation());
ApplicableRegionSet ars = plugin.getDependencies().getWorldGuardApi().getRegionManager(player.getWorld()).getApplicableRegions(player.getLocation());
Iterator<ProtectedRegion> i = ars.iterator();
while (i.hasNext()) {
ProtectedRegion pr = i.next();

View File

@ -292,9 +292,9 @@ public class QuestData {
}
};
public LinkedHashMap<ItemStack, Integer> itemsDelivered = new LinkedHashMap<ItemStack, Integer>() {
public LinkedHashMap<ItemStack, Integer> itemsCrafted = new LinkedHashMap<ItemStack, Integer>() {
private static final long serialVersionUID = 2712497347022734646L;
private static final long serialVersionUID = 2774356294049526105L;
@Override
public Integer put(ItemStack key, Integer val) {
@ -362,6 +362,41 @@ public class QuestData {
}
};
public LinkedHashMap<ItemStack, Integer> itemsDelivered = new LinkedHashMap<ItemStack, Integer>() {
private static final long serialVersionUID = 2712497347022734646L;
@Override
public Integer put(ItemStack key, Integer val) {
Integer data = super.put(key, val);
if (doJournalUpdate)
quester.updateJournal();
return data;
}
@Override
public Integer remove(Object key) {
Integer i = super.remove(key);
if (doJournalUpdate)
quester.updateJournal();
return i;
}
@Override
public void clear() {
super.clear();
if (doJournalUpdate)
quester.updateJournal();
}
@Override
public void putAll(Map<? extends ItemStack, ? extends Integer> m) {
super.putAll(m);
if (doJournalUpdate)
quester.updateJournal();
}
};
public LinkedList<EntityType> mobsKilled = new LinkedList<EntityType>() {
private static final long serialVersionUID = 8178007458817522183L;
@ -1000,7 +1035,6 @@ public class QuestData {
}
};
//public Map<EntityType, Integer> mobsTamed = new EnumMap<EntityType, Integer>(EntityType.class) {
public LinkedHashMap<EntityType, Integer> mobsTamed = new LinkedHashMap<EntityType, Integer>() {
private static final long serialVersionUID = 3851959471748032699L;
@ -1036,7 +1070,6 @@ public class QuestData {
}
};
//public Map<DyeColor, Integer> sheepSheared = new EnumMap<DyeColor, Integer>(DyeColor.class) {
public LinkedHashMap<DyeColor, Integer> sheepSheared = new LinkedHashMap<DyeColor, Integer>() {
private static final long serialVersionUID = -6016463677133534885L;

View File

@ -54,6 +54,7 @@ import me.blackvein.quests.prompts.StagesPrompt;
import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
import me.blackvein.quests.util.WorldGuardAPI;
import net.citizensnpcs.api.CitizensAPI;
public class QuestFactory implements ConversationAbandonedListener {
@ -210,7 +211,7 @@ public class QuestFactory implements ConversationAbandonedListener {
Location l = (Location) context.getSessionData(CK.Q_START_BLOCK);
text += ChatColor.BLUE + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("questEditorBlockStart") + " (" + l.getWorld().getName() + ", " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ() + ")\n";
}
if (plugin.getDependencies().getWorldGuard() != null) {
if (plugin.getDependencies().getWorldGuardApi() != null) {
if (context.getSessionData(CK.Q_REGION) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "6" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("questWGSetRegion") + " (" + Lang.get("noneSet") + ")\n";
} else {
@ -261,7 +262,7 @@ public class QuestFactory implements ConversationAbandonedListener {
selectedBlockStarts.put(((Player) context.getForWhom()).getUniqueId(), null);
return new BlockStartPrompt();
} else if (input.equalsIgnoreCase("6")) {
if (plugin.getDependencies().getWorldGuard() != null) {
if (plugin.getDependencies().getWorldGuardApi() != null) {
return new RegionPrompt();
} else {
return new CreateMenuPrompt();
@ -621,7 +622,8 @@ public class QuestFactory implements ConversationAbandonedListener {
String text = ChatColor.DARK_GREEN + Lang.get("questRegionTitle") + "\n";
boolean any = false;
for (World world : plugin.getServer().getWorlds()) {
RegionManager rm = plugin.getDependencies().getWorldGuard().getRegionManager(world);
WorldGuardAPI api = plugin.getDependencies().getWorldGuardApi();
RegionManager rm = api.getRegionManager(world);
for (String region : rm.getRegions().keySet()) {
any = true;
text += ChatColor.GREEN + region + ", ";
@ -643,7 +645,8 @@ public class QuestFactory implements ConversationAbandonedListener {
String found = null;
boolean done = false;
for (World world : plugin.getServer().getWorlds()) {
RegionManager rm = plugin.getDependencies().getWorldGuard().getRegionManager(world);
WorldGuardAPI api = plugin.getDependencies().getWorldGuardApi();
RegionManager rm = api.getRegionManager(world);
for (String region : rm.getRegions().keySet()) {
if (region.equalsIgnoreCase(input)) {
found = region;
@ -658,7 +661,7 @@ public class QuestFactory implements ConversationAbandonedListener {
if (found == null) {
String error = Lang.get("questWGInvalidRegion");
error = error.replaceAll("<region>", ChatColor.RED + input + ChatColor.YELLOW);
player.sendMessage(ChatColor.RED + error);
player.sendMessage(ChatColor.YELLOW + error);
return new RegionPrompt();
} else {
context.setSessionData(CK.Q_REGION, found);
@ -699,6 +702,9 @@ public class QuestFactory implements ConversationAbandonedListener {
try {
data.load(new File(plugin.getDataFolder(), "quests.yml"));
ConfigurationSection questSection = data.getConfigurationSection("quests");
if (questSection == null) {
questSection = data.createSection("quests");
}
int customNum = 1;
while (true) {
if (questSection.contains("custom" + customNum)) {
@ -784,13 +790,13 @@ public class QuestFactory implements ConversationAbandonedListener {
ItemStack guiDisplay = null;
Integer moneyReq = null;
Integer questPointsReq = null;
LinkedList<ItemStack> itemReqs = null;
LinkedList<Boolean> removeItemReqs = null;
LinkedList<String> permReqs = null;
LinkedList<String> questReqs = null;
LinkedList<String> questBlocks = null;
LinkedList<String> mcMMOSkillReqs = null;
LinkedList<Integer> mcMMOAmountReqs = null;
List<ItemStack> itemReqs = null;
List<Boolean> removeItemReqs = null;
List<String> permReqs = null;
List<String> questReqs = null;
List<String> questBlocks = null;
List<String> mcMMOSkillReqs = null;
List<Integer> mcMMOAmountReqs = null;
String heroesPrimaryReq = null;
String heroesSecondaryReq = null;
LinkedList<String> customReqs = null;
@ -798,17 +804,17 @@ public class QuestFactory implements ConversationAbandonedListener {
String failMessage = null;
Integer moneyRew = null;
Integer questPointsRew = null;
LinkedList<String> itemRews = null;
LinkedList<Integer> RPGItemRews = null;
LinkedList<Integer> RPGItemAmounts = null;
List<String> itemRews = null;
List<Integer> RPGItemRews = null;
List<Integer> RPGItemAmounts = null;
Integer expRew = null;
LinkedList<String> commandRews = null;
LinkedList<String> permRews = null;
LinkedList<String> mcMMOSkillRews = null;
LinkedList<Integer> mcMMOSkillAmounts = null;
LinkedList<String> heroesClassRews = null;
LinkedList<Double> heroesExpRews = null;
LinkedList<String> phatLootRews = null;
List<String> commandRews = null;
List<String> permRews = null;
List<String> mcMMOSkillRews = null;
List<Integer> mcMMOSkillAmounts = null;
List<String> heroesClassRews = null;
List<Double> heroesExpRews = null;
List<String> phatLootRews = null;
LinkedList<String> customRews = null;
LinkedList<Map<String, Object>> customRewsData = null;
String startDatePln = null;
@ -828,21 +834,28 @@ public class QuestFactory implements ConversationAbandonedListener {
questPointsReq = (Integer) cc.getSessionData(CK.REQ_QUEST_POINTS);
}
if (cc.getSessionData(CK.REQ_ITEMS) != null) {
itemReqs = (LinkedList<ItemStack>) cc.getSessionData(CK.REQ_ITEMS);
removeItemReqs = (LinkedList<Boolean>) cc.getSessionData(CK.REQ_ITEMS_REMOVE);
itemReqs = new LinkedList<ItemStack>();
removeItemReqs = new LinkedList<Boolean>();
itemReqs.addAll((List<ItemStack>) cc.getSessionData(CK.REQ_ITEMS));
removeItemReqs.addAll((List<Boolean>) cc.getSessionData(CK.REQ_ITEMS_REMOVE));
}
if (cc.getSessionData(CK.REQ_PERMISSION) != null) {
permReqs = (LinkedList<String>) cc.getSessionData(CK.REQ_PERMISSION);
permReqs = new LinkedList<String>();
permReqs.addAll((List<String>) cc.getSessionData(CK.REQ_PERMISSION));
}
if (cc.getSessionData(CK.REQ_QUEST) != null) {
questReqs = (LinkedList<String>) cc.getSessionData(CK.REQ_QUEST);
questReqs = new LinkedList<String>();
questReqs.addAll((List<String>) cc.getSessionData(CK.REQ_QUEST));
}
if (cc.getSessionData(CK.REQ_QUEST_BLOCK) != null) {
questBlocks = (LinkedList<String>) cc.getSessionData(CK.REQ_QUEST_BLOCK);
questBlocks = new LinkedList<String>();
questBlocks.addAll((List<String>) cc.getSessionData(CK.REQ_QUEST_BLOCK));
}
if (cc.getSessionData(CK.REQ_MCMMO_SKILLS) != null) {
mcMMOSkillReqs = (LinkedList<String>) cc.getSessionData(CK.REQ_MCMMO_SKILLS);
mcMMOAmountReqs = (LinkedList<Integer>) cc.getSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS);
mcMMOSkillReqs = new LinkedList<String>();
mcMMOAmountReqs = new LinkedList<Integer>();
mcMMOSkillReqs.addAll((List<String>) cc.getSessionData(CK.REQ_MCMMO_SKILLS));
mcMMOAmountReqs.addAll((List<Integer>) cc.getSessionData(CK.REQ_MCMMO_SKILL_AMOUNTS));
}
if (cc.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS) != null) {
heroesPrimaryReq = (String) cc.getSessionData(CK.REQ_HEROES_PRIMARY_CLASS);
@ -875,7 +888,7 @@ public class QuestFactory implements ConversationAbandonedListener {
}
if (cc.getSessionData(CK.REW_ITEMS) != null) {
itemRews = new LinkedList<String>();
for (ItemStack is : (LinkedList<ItemStack>) cc.getSessionData(CK.REW_ITEMS)) {
for (ItemStack is : (List<ItemStack>) cc.getSessionData(CK.REW_ITEMS)) {
itemRews.add(ItemUtil.serializeItemStack(is));
}
}
@ -883,21 +896,28 @@ public class QuestFactory implements ConversationAbandonedListener {
expRew = (Integer) cc.getSessionData(CK.REW_EXP);
}
if (cc.getSessionData(CK.REW_COMMAND) != null) {
commandRews = (LinkedList<String>) cc.getSessionData(CK.REW_COMMAND);
commandRews = new LinkedList<String>();
commandRews.addAll((List<String>)cc.getSessionData(CK.REW_COMMAND));
}
if (cc.getSessionData(CK.REW_PERMISSION) != null) {
permRews = (LinkedList<String>) cc.getSessionData(CK.REW_PERMISSION);
permRews = new LinkedList<String>();
permRews.addAll((List<String>) cc.getSessionData(CK.REW_PERMISSION));
}
if (cc.getSessionData(CK.REW_MCMMO_SKILLS) != null) {
mcMMOSkillRews = (LinkedList<String>) cc.getSessionData(CK.REW_MCMMO_SKILLS);
mcMMOSkillAmounts = (LinkedList<Integer>) cc.getSessionData(CK.REW_MCMMO_AMOUNTS);
mcMMOSkillRews = new LinkedList<String>();
mcMMOSkillAmounts = new LinkedList<Integer>();
mcMMOSkillRews.addAll((List<String>) cc.getSessionData(CK.REW_MCMMO_SKILLS));
mcMMOSkillAmounts.addAll((List<Integer>) cc.getSessionData(CK.REW_MCMMO_AMOUNTS));
}
if (cc.getSessionData(CK.REW_HEROES_CLASSES) != null) {
heroesClassRews = (LinkedList<String>) cc.getSessionData(CK.REW_HEROES_CLASSES);
heroesExpRews = (LinkedList<Double>) cc.getSessionData(CK.REW_HEROES_AMOUNTS);
heroesClassRews = new LinkedList<String>();
heroesExpRews = new LinkedList<Double>();
heroesClassRews.addAll((List<String>) cc.getSessionData(CK.REW_HEROES_CLASSES));
heroesExpRews.addAll((List<Double>) cc.getSessionData(CK.REW_HEROES_AMOUNTS));
}
if (cc.getSessionData(CK.REW_PHAT_LOOTS) != null) {
phatLootRews = (LinkedList<String>) cc.getSessionData(CK.REW_PHAT_LOOTS);
phatLootRews = new LinkedList<String>();
phatLootRews.addAll((List<String>) cc.getSessionData(CK.REW_PHAT_LOOTS));
}
if (cc.getSessionData(CK.REW_CUSTOM) != null) {
customRews = (LinkedList<String>) cc.getSessionData(CK.REW_CUSTOM);
@ -972,12 +992,13 @@ public class QuestFactory implements ConversationAbandonedListener {
LinkedList<Integer> cutIds;
LinkedList<Integer> cutAmounts;
LinkedList<Short> cutDurability;
Integer fish;
Integer players;
LinkedList<ItemStack> deliveryItems;
LinkedList<String> enchantments;
LinkedList<Integer> enchantmentIds;
LinkedList<Integer> enchantmentAmounts;
LinkedList<ItemStack> deliveryItems;
Integer fish;
Integer players;
LinkedList<ItemStack> craftItems;
LinkedList<Integer> deliveryNPCIds;
LinkedList<String> deliveryMessages;
LinkedList<Integer> npcTalkIds;
@ -999,7 +1020,7 @@ public class QuestFactory implements ConversationAbandonedListener {
LinkedList<LinkedList<String>> passPhrases;
LinkedList<String> customObjs;
LinkedList<Integer> customObjCounts;
LinkedList<Map<String, Object>> customObjsData;
LinkedList<Entry<String, Object>> customObjsData;
String script;
String startEvent;
String finishEvent;
@ -1032,11 +1053,12 @@ public class QuestFactory implements ConversationAbandonedListener {
cutIds = null;
cutAmounts = null;
cutDurability = null;
fish = null;
players = null;
craftItems = null;
enchantments = null;
enchantmentIds = null;
enchantmentAmounts = null;
fish = null;
players = null;
deliveryItems = null;
deliveryNPCIds = null;
deliveryMessages = null;
@ -1099,17 +1121,20 @@ public class QuestFactory implements ConversationAbandonedListener {
cutAmounts = (LinkedList<Integer>) cc.getSessionData(pref + CK.S_CUT_AMOUNTS);
cutDurability = (LinkedList<Short>) cc.getSessionData(pref + CK.S_CUT_DURABILITY);
}
if (cc.getSessionData(pref + CK.S_FISH) != null) {
fish = (Integer) cc.getSessionData(pref + CK.S_FISH);
}
if (cc.getSessionData(pref + CK.S_PLAYER_KILL) != null) {
players = (Integer) cc.getSessionData(pref + CK.S_PLAYER_KILL);
if (cc.getSessionData(pref + CK.S_CRAFT_ITEMS) != null) {
craftItems = (LinkedList<ItemStack>) cc.getSessionData(pref + CK.S_CRAFT_ITEMS);
}
if (cc.getSessionData(pref + CK.S_ENCHANT_TYPES) != null) {
enchantments = (LinkedList<String>) cc.getSessionData(pref + CK.S_ENCHANT_TYPES);
enchantmentIds = (LinkedList<Integer>) cc.getSessionData(pref + CK.S_ENCHANT_NAMES);
enchantmentAmounts = (LinkedList<Integer>) cc.getSessionData(pref + CK.S_ENCHANT_AMOUNTS);
}
if (cc.getSessionData(pref + CK.S_FISH) != null) {
fish = (Integer) cc.getSessionData(pref + CK.S_FISH);
}
if (cc.getSessionData(pref + CK.S_PLAYER_KILL) != null) {
players = (Integer) cc.getSessionData(pref + CK.S_PLAYER_KILL);
}
if (cc.getSessionData(pref + CK.S_DELIVERY_ITEMS) != null) {
deliveryItems = (LinkedList<ItemStack>) cc.getSessionData(pref + CK.S_DELIVERY_ITEMS);
deliveryNPCIds = (LinkedList<Integer>) cc.getSessionData(pref + CK.S_DELIVERY_NPCS);
@ -1151,7 +1176,7 @@ public class QuestFactory implements ConversationAbandonedListener {
if (cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES) != null) {
customObjs = (LinkedList<String>) cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES);
customObjCounts = (LinkedList<Integer>) cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT);
customObjsData = (LinkedList<Map<String, Object>>) cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA);
customObjsData = (LinkedList<Entry<String, Object>>) cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA);
}
if (cc.getSessionData(pref + CK.S_START_EVENT) != null) {
startEvent = (String) cc.getSessionData(pref + CK.S_START_EVENT);
@ -1214,11 +1239,20 @@ public class QuestFactory implements ConversationAbandonedListener {
stage.set("cut-block-amounts", cutAmounts);
stage.set("cut-block-durability", cutDurability);
}
stage.set("fish-to-catch", fish);
stage.set("players-to-kill", players);
if (craftItems != null && craftItems.isEmpty() == false) {
LinkedList<String> items = new LinkedList<String>();
for (ItemStack is : craftItems) {
items.add(ItemUtil.serializeItemStack(is));
}
stage.set("items-to-craft", items);
} else {
stage.set("items-to-craft", null);
}
stage.set("enchantments", enchantments);
stage.set("enchantment-item-names", enchantmentIds);
stage.set("enchantment-amounts", enchantmentAmounts);
stage.set("fish-to-catch", fish);
stage.set("players-to-kill", players);
if (deliveryItems != null && deliveryItems.isEmpty() == false) {
LinkedList<String> items = new LinkedList<String>();
for (ItemStack is : deliveryItems) {
@ -1267,8 +1301,9 @@ public class QuestFactory implements ConversationAbandonedListener {
ConfigurationSection sec2 = sec.createSection("custom" + (index + 1));
sec2.set("name", customObjs.get(index));
sec2.set("count", customObjCounts.get(index));
if (customObjsData.get(index).isEmpty() == false) {
sec2.set("data", customObjsData.get(index));
ConfigurationSection sec3 = sec2.createSection("data");
for (Entry<String, Object> e : customObjsData) {
sec3.set(e.getKey(), e.getValue()); // if anything goes wrong it's probably here
}
}
}
@ -1518,11 +1553,12 @@ public class QuestFactory implements ConversationAbandonedListener {
cc.setSessionData(pref + CK.S_CUT_AMOUNTS, amnts);
cc.setSessionData(pref + CK.S_CUT_DURABILITY, durab);
}
if (stage.fishToCatch != null) {
cc.setSessionData(pref + CK.S_FISH, stage.fishToCatch);
if (stage.getItemsToCraft().isEmpty() == false) {
LinkedList<ItemStack> items = new LinkedList<ItemStack>();
for (ItemStack is : stage.getItemsToCraft()) {
items.add(is);
}
if (stage.playersToKill != null) {
cc.setSessionData(pref + CK.S_PLAYER_KILL, stage.playersToKill);
cc.setSessionData(pref + CK.S_CRAFT_ITEMS, items);
}
if (stage.itemsToEnchant.isEmpty() == false) {
LinkedList<String> enchants = new LinkedList<String>();
@ -1539,6 +1575,12 @@ public class QuestFactory implements ConversationAbandonedListener {
cc.setSessionData(pref + CK.S_ENCHANT_NAMES, names);
cc.setSessionData(pref + CK.S_ENCHANT_AMOUNTS, amounts);
}
if (stage.fishToCatch != null) {
cc.setSessionData(pref + CK.S_FISH, stage.fishToCatch);
}
if (stage.playersToKill != null) {
cc.setSessionData(pref + CK.S_PLAYER_KILL, stage.playersToKill);
}
if (stage.getItemsToDeliver().isEmpty() == false) {
LinkedList<ItemStack> items = new LinkedList<ItemStack>();
LinkedList<Integer> npcs = new LinkedList<Integer>();
@ -1581,7 +1623,7 @@ public class QuestFactory implements ConversationAbandonedListener {
}
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS, locs);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS, stage.radiiToKillWithin);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES, stage.areaNames);
cc.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES, stage.killNames);
}
}
if (stage.locationsToReach.isEmpty() == false) {
@ -1620,7 +1662,7 @@ public class QuestFactory implements ConversationAbandonedListener {
if (stage.customObjectives.isEmpty() == false) {
LinkedList<String> list = new LinkedList<String>();
LinkedList<Integer> countList = new LinkedList<Integer>();
LinkedList<Map<String, Object>> datamapList = new LinkedList<Map<String, Object>>();
LinkedList<Entry<String, Object>> datamapList = new LinkedList<Entry<String, Object>>();
for (int i = 0; i < stage.customObjectives.size(); i++) {
list.add(stage.customObjectives.get(i).getName());
countList.add(stage.customObjectiveCounts.get(i));
@ -1731,7 +1773,7 @@ public class QuestFactory implements ConversationAbandonedListener {
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.RED + Lang.get("questEditorDeleted") + " \"" + ChatColor.GOLD + (String) context.getSessionData(CK.ED_QUEST_DELETE) + ChatColor.RED + "\"?\n";
String text = ChatColor.RED + Lang.get("questEditorDeleted") + " (" + ChatColor.GOLD + (String) context.getSessionData(CK.ED_QUEST_DELETE) + ChatColor.RED + ")";
text += ChatColor.YELLOW + Lang.get("yesWord") + "/" + Lang.get("noWord");
return text;
}

View File

@ -342,7 +342,8 @@ public class Quester {
int currentLines = 0;
String page = "";
for (Quest quest : currentQuests.keySet()) {
if ((currentLength + quest.getName().length() > 240) || (currentLines + ((quest.getName().length() % 19) == 0 ? (quest.getName().length() / 19) : ((quest.getName().length() / 19) + 1))) > 13) {
if ((currentLength + quest.getName().length() > 240) || (currentLines + ((quest.getName().length() % 19)
== 0 ? (quest.getName().length() / 19) : ((quest.getName().length() / 19) + 1))) > 13) {
book.addPage(page);
page += ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + quest.getName() + "\n";
currentLength = quest.getName().length();
@ -355,7 +356,8 @@ public class Quester {
if (getObjectives(quest, false) != null) {
for (String obj : getObjectives(quest, false)) {
// Length/Line check
if ((currentLength + obj.length() > 240) || (currentLines + ((obj.length() % 19) == 0 ? (obj.length() / 19) : ((obj.length() / 19) + 1))) > 13) {
if ((currentLength + obj.length() > 240) || (currentLines + ((obj.length() % 19)
== 0 ? (obj.length() / 19) : ((obj.length() / 19) + 1))) > 13) {
book.addPage(page);
page = obj + "\n";
currentLength = obj.length();
@ -480,7 +482,8 @@ public class Quester {
player.sendMessage("");
if (plugin.getSettings().canShowQuestTitles()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "title " + player.getName()
+ " title " + "{\"text\":\"" + Lang.get(getPlayer(), "quest") + " " + Lang.get(getPlayer(), "accepted") + "\",\"color\":\"gold\"}");
+ " title " + "{\"text\":\"" + Lang.get(getPlayer(), "quest") + " "
+ Lang.get(getPlayer(), "accepted") + "\",\"color\":\"gold\"}");
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "title " + player.getName()
+ " subtitle " + "{\"text\":\"" + q.getName() + "\",\"color\":\"yellow\"}");
}
@ -521,7 +524,7 @@ public class Quester {
* Get all objectives for a quest.
*
* @param quest The quest to get objectives of
* @param ignoreOverrides Whether to ignore OP-specified objectives-overrides
* @param ignoreOverrides Whether to ignore objective-overrides
* @return
*/
@SuppressWarnings("deprecation")
@ -535,8 +538,9 @@ public class Quester {
}
}
}
if (getQuestData(quest) == null)
if (getQuestData(quest) == null) {
return new LinkedList<String>();
}
LinkedList<String> unfinishedObjectives = new LinkedList<String>();
LinkedList<String> finishedObjectives = new LinkedList<String>();
LinkedList<String> objectives = new LinkedList<String>();
@ -544,9 +548,11 @@ public class Quester {
for (ItemStack e2 : getQuestData(quest).blocksBroken) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
if (e2.getAmount() < e.getAmount()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "break") + " " + ItemUtil.getName(e2) + ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "break") + " " + ItemUtil.getName(e2)
+ ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "break") + " " + ItemUtil.getName(e2) + ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "break") + " " + ItemUtil.getName(e2)
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
}
}
}
@ -555,9 +561,11 @@ public class Quester {
for (ItemStack e2 : getQuestData(quest).blocksDamaged) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
if (e2.getAmount() < e.getAmount()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "damage") + " " + ItemUtil.getName(e2) + ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "damage") + " " + ItemUtil.getName(e2)
+ ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "damage") + " " + ItemUtil.getName(e2) + ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "damage") + " " + ItemUtil.getName(e2)
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
}
}
}
@ -566,9 +574,11 @@ public class Quester {
for (ItemStack e2 : getQuestData(quest).blocksPlaced) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
if (e2.getAmount() < e.getAmount()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "place") + " " + ItemUtil.getName(e2) + ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "place") + " " + ItemUtil.getName(e2)
+ ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "place") + " " + ItemUtil.getName(e2) + ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "place") + " " + ItemUtil.getName(e2)
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
}
}
}
@ -577,9 +587,11 @@ public class Quester {
for (ItemStack e2 : getQuestData(quest).blocksUsed) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
if (e2.getAmount() < e.getAmount()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "use") + " " + ItemUtil.getName(e2) + ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "use") + " " + ItemUtil.getName(e2)
+ ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "use") + " " + ItemUtil.getName(e2) + ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "use") + " " + ItemUtil.getName(e2)
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
}
}
}
@ -588,18 +600,27 @@ public class Quester {
for (ItemStack e2 : getQuestData(quest).blocksCut) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
if (e2.getAmount() < e.getAmount()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "cut") + " " + ItemUtil.getName(e2) + ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "cut") + " " + ItemUtil.getName(e2)
+ ChatColor.GREEN + ": " + e2.getAmount() + "/" + e.getAmount());
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "cut") + " " + ItemUtil.getName(e2) + ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "cut") + " " + ItemUtil.getName(e2)
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount());
}
}
}
}
if (getCurrentStage(quest).fishToCatch != null) {
if (getQuestData(quest).getFishCaught() < getCurrentStage(quest).fishToCatch) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "catchFish") + ChatColor.GREEN + ": " + getQuestData(quest).getFishCaught() + "/" + getCurrentStage(quest).fishToCatch);
for (ItemStack is : getCurrentStage(quest).itemsToCraft) {
int crafted = 0;
if (getQuestData(quest).itemsCrafted.containsKey(is)) {
crafted = getQuestData(quest).itemsCrafted.get(is);
}
int amt = is.getAmount();
if (crafted < amt) {
String obj = Lang.get(getPlayer(), "craft") + " " + ItemUtil.getName(is);
unfinishedObjectives.add(ChatColor.GREEN + obj + ": " + crafted + "/" + amt);
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "catchFish") + ChatColor.GRAY + ": " + getQuestData(quest).getFishCaught() + "/" + getCurrentStage(quest).fishToCatch);
String obj = Lang.get(getPlayer(), "craft") + " " + ItemUtil.getName(is);
finishedObjectives.add(ChatColor.GRAY + obj + ": " + crafted + "/" + amt);
}
}
Map<Enchantment, Material> set;
@ -645,27 +666,48 @@ public class Quester {
}
}
}
if (getCurrentStage(quest).fishToCatch != null) {
if (getQuestData(quest).getFishCaught() < getCurrentStage(quest).fishToCatch) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "catchFish") + ChatColor.GREEN + ": "
+ getQuestData(quest).getFishCaught() + "/" + getCurrentStage(quest).fishToCatch);
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "catchFish") + ChatColor.GRAY + ": "
+ getQuestData(quest).getFishCaught() + "/" + getCurrentStage(quest).fishToCatch);
}
}
for (EntityType e : getCurrentStage(quest).mobsToKill) {
for (EntityType e2 : getQuestData(quest).mobsKilled) {
if (e == e2) {
if (getQuestData(quest).mobNumKilled.size() > getQuestData(quest).mobsKilled.indexOf(e2) && getCurrentStage(quest).mobNumToKill.size() > getCurrentStage(quest).mobsToKill.indexOf(e)) {
if (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)) < getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))) {
if (getQuestData(quest).mobNumKilled.size() > getQuestData(quest).mobsKilled.indexOf(e2)
&& getCurrentStage(quest).mobNumToKill.size() > getCurrentStage(quest).mobsToKill.indexOf(e)) {
if (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))
< getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))) {
if (getCurrentStage(quest).locationsToKillWithin.isEmpty()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "kill") + " " + ChatColor.AQUA + Quester.prettyMobString(e) + ChatColor.GREEN + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) + "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "kill") + " "
+ ChatColor.AQUA + Quester.prettyMobString(e) + ChatColor.GREEN + ": "
+ (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)))
+ "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
} else {
String obj = Lang.get(getPlayer(), "killAtLocation");
obj = obj.replace("<mob>", ChatColor.LIGHT_PURPLE + Quester.prettyMobString(e));
obj = obj.replace("<location>", getCurrentStage(quest).areaNames.get(getCurrentStage(quest).mobsToKill.indexOf(e)));
unfinishedObjectives.add(ChatColor.GREEN + obj + ChatColor.GREEN + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) + "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
obj = obj.replace("<location>", getCurrentStage(quest).killNames.get(getCurrentStage(quest).mobsToKill.indexOf(e)));
unfinishedObjectives.add(ChatColor.GREEN + obj + ChatColor.GREEN + ": "
+ (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)))
+ "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
}
} else {
if (getCurrentStage(quest).locationsToKillWithin.isEmpty()) {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "kill") + " " + ChatColor.AQUA + Quester.prettyMobString(e) + ChatColor.GRAY + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) + "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "kill") + " "
+ ChatColor.AQUA + Quester.prettyMobString(e) + ChatColor.GRAY + ": "
+ (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)))
+ "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
} else {
String obj = Lang.get(getPlayer(), "killAtLocation");
obj = obj.replace("<mob>", ChatColor.LIGHT_PURPLE + Quester.prettyMobString(e));
obj = obj.replace("<location>", getCurrentStage(quest).areaNames.get(getCurrentStage(quest).mobsToKill.indexOf(e)));
finishedObjectives.add(ChatColor.GRAY + obj + ChatColor.GRAY + ": " + (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2))) + "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
obj = obj.replace("<location>", getCurrentStage(quest).killNames.get(getCurrentStage(quest).mobsToKill.indexOf(e)));
finishedObjectives.add(ChatColor.GRAY + obj + ChatColor.GRAY + ": "
+ (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)))
+ "/" + (getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))));
}
}
}
@ -674,20 +716,22 @@ public class Quester {
}
if (getCurrentStage(quest).playersToKill != null) {
if (getQuestData(quest).getPlayersKilled() < getCurrentStage(quest).playersToKill) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "killPlayer") + ChatColor.GREEN + ": " + getQuestData(quest).getPlayersKilled() + "/" + getCurrentStage(quest).playersToKill);
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "killPlayer") + ChatColor.GREEN + ": "
+ getQuestData(quest).getPlayersKilled() + "/" + getCurrentStage(quest).playersToKill);
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "killPlayer") + ChatColor.GRAY + ": " + getQuestData(quest).getPlayersKilled() + "/" + getCurrentStage(quest).playersToKill);
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "killPlayer") + ChatColor.GRAY + ": "
+ getQuestData(quest).getPlayersKilled() + "/" + getCurrentStage(quest).playersToKill);
}
}
int index2 = 0;
int index = 0;
for (ItemStack is : getCurrentStage(quest).itemsToDeliver) {
int delivered = 0;
if (getQuestData(quest).itemsDelivered.containsKey(is)) {
delivered = getQuestData(quest).itemsDelivered.get(is);
}
int amt = is.getAmount();
Integer npc = getCurrentStage(quest).itemDeliveryTargets.get(index2);
index2++;
Integer npc = getCurrentStage(quest).itemDeliveryTargets.get(index);
index++;
if (delivered < amt) {
String obj = Lang.get(getPlayer(), "deliver");
obj = obj.replace("<item>", ItemUtil.getName(is) + ChatColor.GREEN);
@ -718,11 +762,17 @@ public class Quester {
for (Integer n : getCurrentStage(quest).citizensToKill) {
for (Integer n2 : getQuestData(quest).citizensKilled) {
if (n.equals(n2)) {
if (getQuestData(quest).citizenNumKilled.size() > getQuestData(quest).citizensKilled.indexOf(n2) && getCurrentStage(quest).citizenNumToKill.size() > getCurrentStage(quest).citizensToKill.indexOf(n)) {
if (getQuestData(quest).citizenNumKilled.get(getQuestData(quest).citizensKilled.indexOf(n2)) < getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n))) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "kill") + " " + plugin.getNPCName(n) + ChatColor.GREEN + " " + getQuestData(quest).citizenNumKilled.get(getCurrentStage(quest).citizensToKill.indexOf(n)) + "/" + getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n)));
if (getQuestData(quest).citizenNumKilled.size() > getQuestData(quest).citizensKilled.indexOf(n2)
&& getCurrentStage(quest).citizenNumToKill.size() > getCurrentStage(quest).citizensToKill.indexOf(n)) {
if (getQuestData(quest).citizenNumKilled.get(getQuestData(quest).citizensKilled.indexOf(n2))
< getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n))) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "kill") + " " + plugin.getNPCName(n)
+ ChatColor.GREEN + " " + getQuestData(quest).citizenNumKilled.get(getCurrentStage(quest).citizensToKill.indexOf(n))
+ "/" + getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n)));
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "kill") + " " + plugin.getNPCName(n) + ChatColor.GRAY + " " + getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n)) + "/" + getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n)));
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "kill") + " " + plugin.getNPCName(n)
+ ChatColor.GRAY + " " + getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n))
+ "/" + getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n)));
}
}
}
@ -732,9 +782,11 @@ public class Quester {
for (Entry<EntityType, Integer> e2 : getQuestData(quest).mobsTamed.entrySet()) {
if (e.getKey().equals(e2.getKey())) {
if (e2.getValue() < e.getValue()) {
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "tame") + " " + getCapitalized(e.getKey().name()) + ChatColor.GREEN + ": " + e2.getValue() + "/" + e.getValue());
unfinishedObjectives.add(ChatColor.GREEN + Lang.get(getPlayer(), "tame") + " " + getCapitalized(e.getKey().name())
+ ChatColor.GREEN + ": " + e2.getValue() + "/" + e.getValue());
} else {
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "tame") + " " + getCapitalized(e.getKey().name()) + ChatColor.GRAY + ": " + e2.getValue() + "/" + e.getValue());
finishedObjectives.add(ChatColor.GRAY + Lang.get(getPlayer(), "tame") + " " + getCapitalized(e.getKey().name())
+ ChatColor.GRAY + ": " + e2.getValue() + "/" + e.getValue());
}
}
}
@ -781,35 +833,47 @@ public class Quester {
}
}
}
int index = 0;
for (CustomObjective co : getCurrentStage(quest).customObjectives) {
int countsIndex = 0;
String display = co.getDisplay();
boolean addUnfinished = false;
boolean addFinished = false;
for (Entry<String, Integer> entry : getQuestData(quest).customObjectiveCounts.entrySet()) {
if (co.getName().equals(entry.getKey())) {
String display = co.getDisplay();
Map<String, Object> datamap = getCurrentStage(quest).customObjectiveData.get(index);
for (String key : co.datamap.keySet()) {
int dataIndex = 0;
for (Entry<String,Object> prompt : co.getData()) {
String replacement = "%" + prompt.getKey() + "%";
try {
display = display.replace("%" + key + "%", ((String) datamap.get(key)));
if (display.contains(replacement))
display = display.replace(replacement, ((String) getCurrentStage(quest).customObjectiveData.get(dataIndex).getValue()));
} catch (NullPointerException ne) {
plugin.getLogger().severe("Unable to fetch display for " + co.getName() + " on " + quest.getName());
ne.printStackTrace();
}
dataIndex++;
}
if (entry.getValue() < getCurrentStage(quest).customObjectiveCounts.get(index)) {
if (co.isCountShown() && co.isEnableCount()) {
display = display.replace("%count%", entry.getValue() + "/" + getCurrentStage(quest).customObjectiveCounts.get(index));
if (entry.getValue() < getCurrentStage(quest).customObjectiveCounts.get(countsIndex)) {
if (co.canShowCount()) {
display = display.replace("%count%", entry.getValue() + "/" + getCurrentStage(quest).customObjectiveCounts.get(countsIndex));
}
unfinishedObjectives.add(ChatColor.GREEN + display);
addUnfinished = true;
} else {
if (co.isCountShown() && co.isEnableCount()) {
display = display.replace("%count%", getCurrentStage(quest).customObjectiveCounts.get(index) + "/" + getCurrentStage(quest).customObjectiveCounts.get(index));
if (co.canShowCount()) {
display = display.replace("%count%", getCurrentStage(quest).customObjectiveCounts.get(countsIndex)
+ "/" + getCurrentStage(quest).customObjectiveCounts.get(countsIndex));
}
addFinished = true;
}
}
countsIndex++;
}
if (addUnfinished) {
unfinishedObjectives.add(ChatColor.GREEN + display);
}
if (addFinished) {
finishedObjectives.add(ChatColor.GRAY + display);
}
}
}
index++;
}
objectives.addAll(unfinishedObjectives);
objectives.addAll(finishedObjectives);
return objectives;
@ -856,10 +920,12 @@ public class Quester {
return !getCurrentStage(quest).blocksToUse.isEmpty();
} else if (s.equalsIgnoreCase("cutBlock")) {
return !getCurrentStage(quest).blocksToCut.isEmpty();
} else if (s.equalsIgnoreCase("catchFish")) {
return getCurrentStage(quest).fishToCatch != null;
} else if (s.equalsIgnoreCase("craftItem")) {
return !getCurrentStage(quest).itemsToCraft.isEmpty();
} else if (s.equalsIgnoreCase("enchantItem")) {
return !getCurrentStage(quest).itemsToEnchant.isEmpty();
} else if (s.equalsIgnoreCase("catchFish")) {
return getCurrentStage(quest).fishToCatch != null;
} else if (s.equalsIgnoreCase("killMob")) {
return !getCurrentStage(quest).mobsToKill.isEmpty();
} else if (s.equalsIgnoreCase("deliverItem")) {
@ -948,7 +1014,7 @@ public class Quester {
if (getQuestData(quest).blocksBroken.contains(broken)) {
getQuestData(quest).blocksBroken.set(getQuestData(quest).blocksBroken.indexOf(broken), newBroken);
if (broken.getAmount() == toBreak.getAmount()) {
finishObjective(quest, "breakBlock", m, null, null, null, null, null, null, null, null, null);
finishObjective(quest, "breakBlock", m, toBreak, null, null, null, null, null, null, null, null);
}
}
}
@ -998,7 +1064,7 @@ public class Quester {
if (getQuestData(quest).blocksDamaged.contains(damaged)) {
getQuestData(quest).blocksDamaged.set(getQuestData(quest).blocksDamaged.indexOf(damaged), newDamaged);
if (damaged.getAmount() == toDamage.getAmount()) {
finishObjective(quest, "damageBlock", m, null, null, null, null, null, null, null, null, null);
finishObjective(quest, "damageBlock", m, toDamage, null, null, null, null, null, null, null, null);
}
}
}
@ -1048,7 +1114,7 @@ public class Quester {
if (getQuestData(quest).blocksPlaced.contains(placed)) {
getQuestData(quest).blocksPlaced.set(getQuestData(quest).blocksPlaced.indexOf(placed), newplaced);
if (placed.getAmount() == toPlace.getAmount()) {
finishObjective(quest, "placeBlock", m, null, null, null, null, null, null, null, null, null);
finishObjective(quest, "placeBlock", m, toPlace, null, null, null, null, null, null, null, null);
}
}
}
@ -1098,7 +1164,7 @@ public class Quester {
if (getQuestData(quest).blocksUsed.contains(used)) {
getQuestData(quest).blocksUsed.set(getQuestData(quest).blocksUsed.indexOf(used), newUsed);
if (used.getAmount() == toUse.getAmount()) {
finishObjective(quest, "useBlock", m, null, null, null, null, null, null, null, null, null);
finishObjective(quest, "useBlock", m, toUse, null, null, null, null, null, null, null, null);
}
}
}
@ -1148,17 +1214,39 @@ public class Quester {
if (getQuestData(quest).blocksCut.contains(cut)) {
getQuestData(quest).blocksCut.set(getQuestData(quest).blocksCut.indexOf(cut), newCut);
if (cut.getAmount() == toCut.getAmount()) {
finishObjective(quest, "cutBlock", m, null, null, null, null, null, null, null, null, null);
finishObjective(quest, "cutBlock", m, toCut, null, null, null, null, null, null, null, null);
}
}
}
}
public void catchFish(Quest quest) {
if (getQuestData(quest).getFishCaught() < getCurrentStage(quest).fishToCatch) {
getQuestData(quest).setFishCaught(getQuestData(quest).getFishCaught() + 1);
if (((Integer) getQuestData(quest).getFishCaught()).equals(getCurrentStage(quest).fishToCatch)) {
finishObjective(quest, "catchFish", null, null, null, null, null, null, null, null, null, null);
public void craftItem(Quest quest, ItemStack i) {
Player player = getPlayer();
ItemStack found = null;
for (ItemStack is : getQuestData(quest).itemsCrafted.keySet()) {
if (ItemUtil.compareItems(i, is, true) == 0) {
found = is;
break;
}
}
if (found != null) {
int amount = getQuestData(quest).itemsCrafted.get(found);
if (getCurrentStage(quest).itemsToCraft.indexOf(found) < 0) {
plugin.getLogger().severe("Index out of bounds while crafting " + found.getType() + " x " + found.getAmount() + " for quest "
+ quest.getName() + " with " + i.getType() + " x " + i.getAmount() + " already crafted. Int -amount- reports value of " +
+ amount + ". Please report this error on Github!");
player.sendMessage("Quests had a problem crafting your item, please contact an administrator!");
return;
}
int req = getCurrentStage(quest).itemsToCraft.get(getCurrentStage(quest).itemsToCraft.indexOf(found)).getAmount();
Material m = i.getType();
if (amount < req) {
if ((i.getAmount() + amount) >= req) {
getQuestData(quest).itemsCrafted.put(found, req);
finishObjective(quest, "craftItem", new ItemStack(m, 1), found, null, null, null, null, null, null, null, null);
} else {
getQuestData(quest).itemsCrafted.put(found, (amount + i.getAmount()));
}
}
}
}
@ -1183,6 +1271,15 @@ public class Quester {
}
}
public void catchFish(Quest quest) {
if (getQuestData(quest).getFishCaught() < getCurrentStage(quest).fishToCatch) {
getQuestData(quest).setFishCaught(getQuestData(quest).getFishCaught() + 1);
if (((Integer) getQuestData(quest).getFishCaught()).equals(getCurrentStage(quest).fishToCatch)) {
finishObjective(quest, "catchFish", null, null, null, null, null, null, null, null, null, null);
}
}
}
public void killMob(Quest quest, Location killedLocation, EntityType e) {
QuestData questData = getQuestData(quest);
if (e == null) {
@ -1231,6 +1328,54 @@ public class Quester {
}
}
@SuppressWarnings("deprecation")
public void deliverItem(Quest quest, ItemStack i) {
Player player = getPlayer();
ItemStack found = null;
for (ItemStack is : getQuestData(quest).itemsDelivered.keySet()) {
if (ItemUtil.compareItems(i, is, true) == 0) {
found = is;
break;
}
}
if (found != null) {
int amount = getQuestData(quest).itemsDelivered.get(found);
if (getCurrentStage(quest).itemsToDeliver.indexOf(found) < 0) {
plugin.getLogger().severe("Index out of bounds while delivering " + found.getType() + " x " + found.getAmount() + " for quest "
+ quest.getName() + " with " + i.getType() + " x " + i.getAmount() + " already delivered. Int -amount- reports value of " +
+ amount + ". Please report this error on Github!");
player.sendMessage("Quests had a problem delivering your item, please contact an administrator!");
return;
}
int req = getCurrentStage(quest).itemsToDeliver.get(getCurrentStage(quest).itemsToDeliver.indexOf(found)).getAmount();
Material m = i.getType();
if (amount < req) {
if ((i.getAmount() + amount) > req) {
getQuestData(quest).itemsDelivered.put(found, req);
int index = player.getInventory().first(i);
i.setAmount(i.getAmount() - (req - amount)); // Take away the remaining amount needed to be delivered
player.getInventory().setItem(index, i);
player.updateInventory();
finishObjective(quest, "deliverItem", new ItemStack(m, 1), found, null, null, null, null, null, null, null, null);
} else if ((i.getAmount() + amount) == req) {
getQuestData(quest).itemsDelivered.put(found, req);
player.getInventory().setItem(player.getInventory().first(i), null);
player.updateInventory();
finishObjective(quest, "deliverItem", new ItemStack(m, 1), found, null, null, null, null, null, null, null, null);
} else {
getQuestData(quest).itemsDelivered.put(found, (amount + i.getAmount()));
player.getInventory().setItem(player.getInventory().first(i), null);
player.updateInventory();
String message = Quests.parseString(getCurrentStage(quest).deliverMessages.get(new Random().nextInt(
getCurrentStage(quest).deliverMessages.size())), plugin.getDependencies().getCitizens().getNPCRegistry().getById(
getCurrentStage(quest).itemDeliveryTargets.get(getCurrentStage(quest).itemsToDeliver.indexOf(found))));
player.sendMessage(message);
}
}
}
}
public void interactWithNPC(Quest quest, NPC n) {
if (getQuestData(quest).citizensInteracted.containsKey(n.getId())) {
Boolean b = getQuestData(quest).citizensInteracted.get(n.getId());
@ -1304,51 +1449,6 @@ public class Quester {
}
}
@SuppressWarnings("deprecation")
public void deliverItem(Quest quest, ItemStack i) {
Player player = getPlayer();
ItemStack found = null;
for (ItemStack is : getQuestData(quest).itemsDelivered.keySet()) {
if (ItemUtil.compareItems(i, is, true) == 0) {
found = is;
break;
}
}
if (found != null) {
int amount = getQuestData(quest).itemsDelivered.get(found);
if (getCurrentStage(quest).itemsToDeliver.indexOf(found) < 0) {
plugin.getLogger().severe("Index out of bounds while delivering " + found.getType() + " x " + found.getAmount() + " for quest "
+ quest.getName() + " with " + i.getType() + " x " + i.getAmount() + " already delivered. Int -amount- reports value of " +
+ amount + ". Please report this error on Github!");
player.sendMessage("Quests had a problem delivering your item, please contact an administrator!");
return;
}
int req = getCurrentStage(quest).itemsToDeliver.get(getCurrentStage(quest).itemsToDeliver.indexOf(found)).getAmount();
Material m = i.getType();
if (amount < req) {
if ((i.getAmount() + amount) > req) {
getQuestData(quest).itemsDelivered.put(found, req);
int index = player.getInventory().first(i);
i.setAmount(i.getAmount() - (req - amount)); // Take away the remaining amount needed to be delivered from the item stack
player.getInventory().setItem(index, i);
player.updateInventory();
finishObjective(quest, "deliverItem", new ItemStack(m, 1), found, null, null, null, null, null, null, null, null);
} else if ((i.getAmount() + amount) == req) {
getQuestData(quest).itemsDelivered.put(found, req);
player.getInventory().setItem(player.getInventory().first(i), null);
player.updateInventory();
finishObjective(quest, "deliverItem", new ItemStack(m, 1), found, null, null, null, null, null, null, null, null);
} else {
getQuestData(quest).itemsDelivered.put(found, (amount + i.getAmount()));
player.getInventory().setItem(player.getInventory().first(i), null);
player.updateInventory();
String message = Quests.parseString(getCurrentStage(quest).deliverMessages.get(new Random().nextInt(getCurrentStage(quest).deliverMessages.size())), plugin.getDependencies().getCitizens().getNPCRegistry().getById(getCurrentStage(quest).itemDeliveryTargets.get(getCurrentStage(quest).itemsToDeliver.indexOf(found))));
player.sendMessage(message);
}
}
}
}
public void sayPassword(Quest quest, AsyncPlayerChatEvent evt) {
boolean done;
for (LinkedList<String> passes : getCurrentStage(quest).passwordPhrases) {
@ -1359,7 +1459,13 @@ public class Quester {
String display = getCurrentStage(quest).passwordDisplays.get(getCurrentStage(quest).passwordPhrases.indexOf(passes));
getQuestData(quest).passwordsSaid.put(display, true);
done = true;
plugin.getServer().getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
finishObjective(quest, "password", null, null, null, null, null, null, null, null, display, null);
}
});
break;
}
}
@ -1376,29 +1482,30 @@ public class Quester {
* Quest containing the objective
* @param objective
* Type of objective, e.g. "password" or "damageBlock"
* @param material
* Block being damaged, broken, etc.
* @param delivery
* Item being delivered
* @param increment
* Final amount material being applied
* @param goal
* Total required amount of material
* @param enchantment
* Enchantment being applied by user
* @param mob
* Mob to be killed or tamed
* @param player
* Currently unused
* Mob being killed or tamed
* @param extra
* Extra mob enum like career or ocelot type
* @param npc
* NPC to talk to or kill
* NPC being talked to or killed
* @param location
* Location for user to reach
* @param color
* shear color
* Shear color
* @param pass
* Password
* @param co
* See CustomObjective class
*/
@SuppressWarnings("deprecation")
public void finishObjective(Quest quest, String objective, ItemStack itemStack, ItemStack delivery, Enchantment enchantment, EntityType mob, String player, NPC npc, Location location, DyeColor color, String pass, CustomObjective co) {
public void finishObjective(Quest quest, String objective, ItemStack increment, ItemStack goal, Enchantment enchantment,
EntityType mob, String extra, NPC npc, Location location, DyeColor color, String pass, CustomObjective co) {
Player p = getPlayer();
if (getCurrentStage(quest).objectiveOverride != null) {
if (testComplete(quest)) {
@ -1416,46 +1523,68 @@ public class Quester {
}
} else if (objective.equalsIgnoreCase("breakBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "break") + " <item>";
String stack = getQuestData(quest).blocksBroken.toString();
String amount = stack.substring(stack.lastIndexOf(" x ") + 3).replace("}]", "");
message = message + " " + amount + "/" + amount;
plugin.getLocaleQuery().sendMessage(p, message, itemStack.getType(), itemStack.getDurability());
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("damageBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "damage") + " <item>";
String stack = getQuestData(quest).blocksDamaged.toString();
String amount = stack.substring(stack.lastIndexOf(" x ") + 3).replace("}]", "");
message = message + " " + amount + "/" + amount;
plugin.getLocaleQuery().sendMessage(p, message, itemStack.getType(), itemStack.getDurability());
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("placeBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "place") + " <item>";
String stack = getQuestData(quest).blocksPlaced.toString();
String amount = stack.substring(stack.lastIndexOf(" x ") + 3).replace("}]", "");
message = message + " " + amount + "/" + amount;
plugin.getLocaleQuery().sendMessage(p, message, itemStack.getType(), itemStack.getDurability());
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("useBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "use") + " <item>";
String stack = getQuestData(quest).blocksUsed.toString();
String amount = stack.substring(stack.lastIndexOf(" x ") + 3).replace("}]", "");
message = message + " " + amount + "/" + amount;
plugin.getLocaleQuery().sendMessage(p, message, itemStack.getType(), itemStack.getDurability());
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("cutBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "cut") + " <item>";
String stack = getQuestData(quest).blocksCut.toString();
String amount = stack.substring(stack.lastIndexOf(" x ") + 3).replace("}]", "");
message = message + " " + amount + "/" + amount;
plugin.getLocaleQuery().sendMessage(p, message, itemStack.getType(), itemStack.getDurability());
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("craftItem")) {
ItemStack is = getCurrentStage(quest).itemsToCraft.get(getCurrentStage(quest).itemsToCraft.indexOf(goal));
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "craft") + " <item> "
+ is.getAmount() + "/" + is.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, goal.getType(), goal.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("enchantItem")) {
String obj = Lang.get(p, "enchantItem");
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + obj;
Map<Enchantment, Integer> ench = new HashMap<Enchantment, Integer>();
ench.put(enchantment, enchantment.getStartLevel());
for (Map<Enchantment, Material> map : getCurrentStage(quest).itemsToEnchant.keySet()) {
if (map.containsKey(enchantment)) {
message = message + " " + getCurrentStage(quest).itemsToEnchant.get(map) + "/" + getCurrentStage(quest).itemsToEnchant.get(map);
break;
}
}
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), ench);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("deliverItem")) {
String obj = Lang.get(p, "deliver");
obj = obj.replace("<npc>", plugin.getNPCName(getCurrentStage(quest).itemDeliveryTargets.get(getCurrentStage(quest).itemsToDeliver.indexOf(goal))));
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + obj;
ItemStack is = getCurrentStage(quest).itemsToDeliver.get(getCurrentStage(quest).itemsToDeliver.indexOf(goal));
plugin.getLocaleQuery().sendMessage(p, message, is.getType(), is.getDurability(), null);
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1466,32 +1595,10 @@ public class Quester {
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("enchantItem")) {
String obj = Lang.get(p, "enchantItem");
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + obj;
for (Map<Enchantment, Material> map : getCurrentStage(quest).itemsToEnchant.keySet()) {
if (map.containsKey(enchantment)) {
message = message + " " + getCurrentStage(quest).itemsToEnchant.get(map) + "/" + getCurrentStage(quest).itemsToEnchant.get(map);
break;
}
}
plugin.getLocaleQuery().sendMessage(p, message, itemStack.getType(), itemStack.getDurability(), enchantment);
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("deliverItem")) {
String obj = Lang.get(p, "deliver");
obj = obj.replace("<npc>", plugin.getNPCName(getCurrentStage(quest).itemDeliveryTargets.get(getCurrentStage(quest).itemsToDeliver.indexOf(delivery))));
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + obj;
ItemStack is = getCurrentStage(quest).itemsToDeliver.get(getCurrentStage(quest).itemsToDeliver.indexOf(delivery));
plugin.getLocaleQuery().sendMessage(p, message, is.getType(), is.getDurability());
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("killMob")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "kill") + " <mob>";
message = message + " " + getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(mob)) + "/" + getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(mob));
plugin.getLocaleQuery().sendMessage(p, message, mob);
plugin.getLocaleQuery().sendMessage(p, message, mob, extra);
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1520,7 +1627,7 @@ public class Quester {
} else if (objective.equalsIgnoreCase("tameMob")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "tame") + " <mob>";
message = message + " " + getCurrentStage(quest).mobsToTame.get(mob) + "/" + getCurrentStage(quest).mobsToTame.get(mob);
plugin.getLocaleQuery().sendMessage(p, message, mob);
plugin.getLocaleQuery().sendMessage(p, message, mob, extra);
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1550,11 +1657,10 @@ public class Quester {
break;
}
}
Map<String, Object> datamap = getCurrentStage(quest).customObjectiveData.get(index);
for (String key : co.datamap.keySet()) {
message = message.replace("%" + ((String) key) + "%", (String) datamap.get(key));
}
if (co.isCountShown() && co.isEnableCount()) {
Entry<String, Object> datamap = getCurrentStage(quest).customObjectiveData.get(index);
message = message.replace("%" + ((String) datamap.getKey()) + "%", (String) datamap.getValue());
if (co.canShowCount()) {
message = message.replace("%count%", getCurrentStage(quest).customObjectiveCounts.get(index) + "/" + getCurrentStage(quest).customObjectiveCounts.get(index));
}
p.sendMessage(message);
@ -1638,7 +1744,11 @@ public class Quester {
}
}
}
data.setFishCaught(0);
if (quest.getStage(stage).itemsToCraft.isEmpty() == false) {
for (ItemStack is : quest.getStage(stage).itemsToCraft) {
data.itemsCrafted.put(is, 0);
}
}
if (quest.getStage(stage).itemsToEnchant.isEmpty() == false) {
for (Entry<Map<Enchantment, Material>, Integer> e : quest.getStage(stage).itemsToEnchant.entrySet()) {
Map<Enchantment, Material> map = (Map<Enchantment, Material>) e.getKey();
@ -1657,6 +1767,7 @@ public class Quester {
}
}
}
data.setFishCaught(0);
data.setPlayersKilled(0);
if (quest.getStage(stage).itemsToDeliver.isEmpty() == false) {
for (ItemStack is : quest.getStage(stage).itemsToDeliver) {
@ -1784,7 +1895,8 @@ public class Quester {
try {
return (Lang.get("ENCHANTMENT_" + e.getName()));
} catch (NullPointerException ne) {
Bukkit.getLogger().warning(e.getName() + " was not found in Lang.yml, please ask the developer to " + "update the file or simply add an entry for the enchantment");
Bukkit.getLogger().warning(e.getName() + " was not found in Lang.yml, please ask the developer to "
+ "update the file or simply add an entry for the enchantment");
return e.getName().toLowerCase().replace("_", " ");
}
}
@ -1934,11 +2046,12 @@ public class Quester {
questSec.set("blocks-cut-amounts", blockAmounts);
questSec.set("blocks-cut-durability", blockDurability);
}
if (getCurrentStage(quest).fishToCatch != null) {
questSec.set("fish-caught", questData.getFishCaught());
if (questData.itemsCrafted.isEmpty() == false) {
LinkedList<Integer> craftAmounts = new LinkedList<Integer>();
for (Entry<ItemStack, Integer> e : questData.itemsCrafted.entrySet()) {
craftAmounts.add(e.getValue());
}
if (getCurrentStage(quest).playersToKill != null) {
questSec.set("players-killed", questData.getPlayersKilled());
questSec.set("item-craft-amounts", craftAmounts);
}
if (questData.itemsEnchanted.isEmpty() == false) {
LinkedList<String> enchantments = new LinkedList<String>();
@ -1956,6 +2069,12 @@ public class Quester {
questSec.set("enchantment-item-names", itemNames);
questSec.set("times-enchanted", enchAmounts);
}
if (getCurrentStage(quest).fishToCatch != null) {
questSec.set("fish-caught", questData.getFishCaught());
}
if (getCurrentStage(quest).playersToKill != null) {
questSec.set("players-killed", questData.getPlayersKilled());
}
if (questData.mobsKilled.isEmpty() == false) {
LinkedList<String> mobNames = new LinkedList<String>();
LinkedList<Integer> mobAmounts = new LinkedList<Integer>();
@ -2307,8 +2426,13 @@ public class Quester {
getQuestData(quest).blocksCut.set(names.indexOf(s), is);
}
}
if (questSec.contains("fish-caught")) {
getQuestData(quest).setFishCaught(questSec.getInt("fish-caught"));
if (questSec.contains("item-craft-amounts")) {
List<Integer> craftAmounts = questSec.getIntegerList("item-craft-amounts");
for (int i = 0; i < craftAmounts.size(); i++) {
if (i < getCurrentStage(quest).itemsToCraft.size()) {
getQuestData(quest).itemsCrafted.put(getCurrentStage(quest).itemsToCraft.get(i), craftAmounts.get(i));
}
}
}
if (questSec.contains("enchantments")) {
LinkedList<Enchantment> enchantments = new LinkedList<Enchantment>();
@ -2328,6 +2452,9 @@ public class Quester {
getQuestData(quest).itemsEnchanted.put(map, amounts.get(enchantments.indexOf(e)));
}
}
if (questSec.contains("fish-caught")) {
getQuestData(quest).setFishCaught(questSec.getInt("fish-caught"));
}
if (questSec.contains("mobs-killed")) {
LinkedList<EntityType> mobs = new LinkedList<EntityType>();
List<Integer> amounts = questSec.getIntegerList("mobs-killed-amounts");
@ -2386,6 +2513,11 @@ public class Quester {
if (questSec.contains("locations-to-reach")) {
LinkedList<Location> locations = new LinkedList<Location>();
List<Boolean> has = questSec.getBooleanList("has-reached-location");
while (has.size() < locations.size()) {
// TODO - find proper cause of Github issue #646
plugin.getLogger().info("Added missing has-reached-location data for Quester " + id);
has.add(false);
}
List<Integer> radii = questSec.getIntegerList("radii-to-reach-within");
for (String loc : questSec.getStringList("locations-to-reach")) {
if (Quests.getLocation(loc) != null) {
@ -2603,9 +2735,11 @@ public class Quester {
*/
public void startStageTimer(Quest quest) {
if (getQuestData(quest).delayTimeLeft > -1) {
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StageTimer(plugin, this, quest), (long) (getQuestData(quest).delayTimeLeft * 0.02));
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StageTimer(plugin, this, quest),
(long) (getQuestData(quest).delayTimeLeft * 0.02));
} else {
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StageTimer(plugin, this, quest), (long) (getCurrentStage(quest).delay * 0.02));
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StageTimer(plugin, this, quest),
(long) (getCurrentStage(quest).delay * 0.02));
if (getCurrentStage(quest).delayMessage != null) {
Player p = plugin.getServer().getPlayer(id);
p.sendMessage(plugin.parseString((getCurrentStage(quest).delayMessage), quest, p));

File diff suppressed because it is too large Load Diff

View File

@ -103,8 +103,7 @@ public class Requirements {
public Map<String, Map<String, Object>> getCustomRequirements() {
return customRequirements;
}
protected void setCustomRequirements(
Map<String, Map<String, Object>> customRequirements) {
protected void setCustomRequirements(Map<String, Map<String, Object>> customRequirements) {
this.customRequirements = customRequirements;
}
public String getFailRequirements() {

View File

@ -25,7 +25,7 @@ public class Rewards {
private int exp = 0;
private List<String> commands = new LinkedList<String>();
private List<String> permissions = new LinkedList<String>();
private LinkedList<ItemStack> items = new LinkedList<ItemStack>();
private List<ItemStack> items = new LinkedList<ItemStack>();
private List<String> mcmmoSkills = new LinkedList<String>();
private List<Integer> mcmmoAmounts = new LinkedList<Integer>();
private List<String> heroesClasses = new LinkedList<String>();
@ -63,10 +63,10 @@ public class Rewards {
public void setPermissions(List<String> permissions) {
this.permissions = permissions;
}
public LinkedList<ItemStack> getItems() {
public List<ItemStack> getItems() {
return items;
}
public void setItems(LinkedList<ItemStack> items) {
public void setItems(List<ItemStack> items) {
this.items = items;
}
public List<String> getMcmmoSkills() {

View File

@ -16,6 +16,7 @@ import java.util.EnumMap;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.DyeColor;
import org.bukkit.Location;
@ -34,6 +35,7 @@ public class Stage {
protected LinkedList<ItemStack> blocksToCut = new LinkedList<ItemStack>();
protected Integer fishToCatch;
protected Integer playersToKill;
protected LinkedList<ItemStack> itemsToCraft = new LinkedList<ItemStack>();
protected Map<Map<Enchantment, Material>, Integer> itemsToEnchant = new HashMap<Map<Enchantment, Material>, Integer>();
protected LinkedList<ItemStack> itemsToDeliver = new LinkedList<ItemStack>();
protected LinkedList<Integer> itemDeliveryTargets = new LinkedList<Integer>() {
@ -99,7 +101,7 @@ public class Stage {
protected LinkedList<Integer> mobNumToKill = new LinkedList<Integer>();
protected LinkedList<Location> locationsToKillWithin = new LinkedList<Location>();
protected LinkedList<Integer> radiiToKillWithin = new LinkedList<Integer>();
protected LinkedList<String> areaNames = new LinkedList<String>();
protected LinkedList<String> killNames = new LinkedList<String>();
protected LinkedList<Location> locationsToReach = new LinkedList<Location>();
protected LinkedList<Integer> radiiToReachWithin = new LinkedList<Integer>();
protected LinkedList<World> worldsToReachWithin = new LinkedList<World>();
@ -123,7 +125,7 @@ public class Stage {
protected LinkedList<CustomObjective> customObjectives = new LinkedList<CustomObjective>();
protected LinkedList<Integer> customObjectiveCounts = new LinkedList<Integer>();
protected LinkedList<String> customObjectiveDisplays = new LinkedList<String>();
protected LinkedList<Map<String, Object>> customObjectiveData = new LinkedList<Map<String, Object>>();
protected LinkedList<Entry<String, Object>> customObjectiveData = new LinkedList<Entry<String, Object>>();
public LinkedList<ItemStack> getBlocksToBreak() {
return blocksToBreak;
@ -181,6 +183,14 @@ public class Stage {
this.playersToKill = playersToKill;
}
public LinkedList<ItemStack> getItemsToCraft() {
return itemsToCraft;
}
public void setItemsToCraft(LinkedList<ItemStack> itemsToCraft) {
this.itemsToCraft = itemsToCraft;
}
public Map<Map<Enchantment, Material>, Integer> getItemsToEnchant() {
return itemsToEnchant;
}
@ -270,12 +280,26 @@ public class Stage {
this.radiiToKillWithin = radiiToKillWithin;
}
public LinkedList<String> getAreaNames() {
return areaNames;
public LinkedList<String> getKillNames() {
return killNames;
}
public void setAreaNames(LinkedList<String> areaNames) {
this.areaNames = areaNames;
public void setKillNames(LinkedList<String> killNames) {
this.killNames = killNames;
}
/**
* @deprecated use getKillNames()
*/
public LinkedList<String> getAreaNames() {
return killNames;
}
/**
* @deprecated use setKillNames()
*/
public void setAreaNames(LinkedList<String> killNames) {
this.killNames = killNames;
}
public LinkedList<Location> getLocationsToReach() {
@ -450,7 +474,7 @@ public class Stage {
return customObjectiveDisplays;
}
public LinkedList<Map<String, Object>> getCustomObjectiveData() {
public LinkedList<Entry<String, Object>> getCustomObjectiveData() {
return customObjectiveData;
}
@ -469,6 +493,7 @@ public class Stage {
if (blocksToCut.isEmpty() == false) { return true; }
if (fishToCatch != null) { return true; }
if (playersToKill != null) { return true; }
if (itemsToCraft.isEmpty() == false) { return true; }
if (itemsToEnchant.isEmpty() == false) { return true; }
if (itemsToDeliver.isEmpty() == false) { return true; }
if (citizensToInteract.isEmpty() == false) { return true; }

View File

@ -22,6 +22,7 @@ import me.blackvein.quests.exceptions.InvalidStageException;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
import me.blackvein.quests.util.MiscUtil;
import me.blackvein.quests.util.WorldGuardAPI;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@ -692,7 +693,8 @@ public class CmdExecutor implements CommandExecutor{
if (q.getRegion() != null) {
boolean inRegion = false;
Player p = quester.getPlayer();
RegionManager rm = plugin.getDependencies().getWorldGuard().getRegionManager(p.getWorld());
WorldGuardAPI api = plugin.getDependencies().getWorldGuardApi();
RegionManager rm = api.getRegionManager(p.getWorld());
Iterator<ProtectedRegion> it = rm.getApplicableRegions(p.getLocation()).iterator();
while (it.hasNext()) {
ProtectedRegion pr = it.next();

View File

@ -95,38 +95,38 @@ public class NpcListener implements Listener {
text += (hand.getItemMeta().hasDisplayName() ? ")" : "");
}
text += " x " + ChatColor.DARK_AQUA + hand.getAmount() + ChatColor.GRAY;
plugin.getLocaleQuery().sendMessage(player, Lang.get(player, "questInvalidDeliveryItem").replace("<item>", text), hand.getType(), hand.getDurability());
plugin.getLocaleQuery().sendMessage(player, Lang.get(player, "questInvalidDeliveryItem").replace("<item>", text), hand.getType(), hand.getDurability(), null);
switch(reasonCode) {
case 1:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "one item is null"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "one item is null"));
break;
case 0:
// Should never happen
player.sendMessage(Lang.get(player, "difference").replace("<data>", "ERROR"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "ERROR"));
break;
case -1:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "name"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "name"));
break;
case -2:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "amount"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "amount"));
break;
case -3:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "durability"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "durability"));
break;
case -4:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "display name or lore"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "display name or lore"));
break;
case -5:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "enchantments"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "enchantments"));
break;
case -6:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "stored enchants"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "stored enchants"));
break;
case -7:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "item flags"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "item flags"));
break;
default:
player.sendMessage(Lang.get(player, "difference").replace("<data>", "unknown"));
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "unknown"));
}
if (hand.hasItemMeta()) {
if (hand.getType().equals(Material.ENCHANTED_BOOK)) {

View File

@ -2,6 +2,7 @@ package me.blackvein.quests.listeners;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -10,32 +11,37 @@ import com.alessiodp.parties.api.events.bukkit.party.BukkitPartiesPartyPostDelet
import com.alessiodp.parties.api.events.bukkit.player.BukkitPartiesPlayerPostJoinEvent;
import com.alessiodp.parties.api.events.bukkit.player.BukkitPartiesPlayerPostLeaveEvent;
import me.blackvein.quests.util.Lang;
public class PartiesListener implements Listener {
//TODO add configurable strings
@EventHandler
public void onPartyCreate(BukkitPartiesPartyPostCreateEvent event) {
Bukkit.getServer().getPlayer(event.getCreator().getPlayerUUID()).sendMessage(ChatColor.YELLOW + "Players added to this party may perform quests together!");
Bukkit.getServer().getPlayer(event.getCreator().getPlayerUUID()).sendMessage(ChatColor.YELLOW + Lang.get("questPartiesCreate"));
}
@EventHandler
public void onPartyDeleteEvent(BukkitPartiesPartyPostDeleteEvent event) {
Bukkit.getServer().getPlayer(event.getCommandSender().getPlayerUUID()).sendMessage(ChatColor.RED + "The quest party was disbanded.");
Bukkit.getServer().getPlayer(event.getCommandSender().getPlayerUUID()).sendMessage(ChatColor.RED + Lang.get("questPartiesDelete"));
}
@EventHandler
public void onPlayerJoinEvent(BukkitPartiesPlayerPostJoinEvent event) {
if (event.isInvited()) {
Bukkit.getServer().getPlayer(event.getInviter()).sendMessage(ChatColor.GREEN + event.getPartyPlayer().getName() + " can now perform quests with you!");
Player i = Bukkit.getServer().getPlayer(event.getInviter());
i.sendMessage(ChatColor.GREEN + Lang.get(i, "questPartiesInvite").replace("<player>", i.getName()));
}
Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID()).sendMessage(ChatColor.GREEN + "You can now perform quests with " + event.getParty().getName() + ".");
Player p = Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID());
p.sendMessage(ChatColor.GREEN + Lang.get(p, "questPartiesJoin").replace("<player>", p.getName()));
}
@EventHandler
public void onPlayerLeaveEvent(BukkitPartiesPlayerPostLeaveEvent event) {
if (event.isKicked()) {
Bukkit.getServer().getPlayer(event.getKicker().getPlayerUUID()).sendMessage(ChatColor.RED + event.getPartyPlayer().getName() + " can no longer perform quests with you.");
Player k = Bukkit.getServer().getPlayer(event.getKicker().getPlayerUUID());
k.sendMessage(ChatColor.RED + Lang.get(k, "questPartiesKicked").replace("<player>", k.getName()));
}
Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID()).sendMessage(ChatColor.RED + "You can no longer perform quests with " + event.getParty().getName() + ".");
Player p = Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID());
p.sendMessage(ChatColor.RED + Lang.get(p, "questPartiesLeave").replace("<player>", p.getName()));
}
}

View File

@ -44,6 +44,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityTameEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
@ -74,6 +75,7 @@ import me.blackvein.quests.Quests;
import me.blackvein.quests.Stage;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
import me.blackvein.quests.util.WorldGuardAPI;
import net.citizensnpcs.api.CitizensAPI;
public class PlayerListener implements Listener {
@ -139,7 +141,8 @@ public class PlayerListener implements Listener {
if (quest.getRegion() != null) {
boolean inRegion = false;
Player p = quester.getPlayer();
RegionManager rm = plugin.getDependencies().getWorldGuard().getRegionManager(p.getWorld());
WorldGuardAPI api = plugin.getDependencies().getWorldGuardApi();
RegionManager rm = api.getRegionManager(p.getWorld());
Iterator<ProtectedRegion> it = rm.getApplicableRegions(p.getLocation()).iterator();
while (it.hasNext()) {
ProtectedRegion pr = it.next();
@ -205,11 +208,11 @@ public class PlayerListener implements Listener {
}
if (e == null || e.equals(EquipmentSlot.HAND)) { //If the event is fired by HAND (main hand)
if (plugin.checkQuester(evt.getPlayer().getUniqueId()) == false) {
if (evt.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
final Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
final Player player = evt.getPlayer();
boolean hasObjective = false;
if (evt.isCancelled() == false) {
for (Quest quest : quester.getCurrentQuests().keySet()) {
if (quester.containsObjective(quest, "useBlock")) {
ItemStack i = new ItemStack(evt.getClickedBlock().getType(), 1, evt.getClickedBlock().getState().getData().toItemStack().getDurability());
@ -217,6 +220,7 @@ public class PlayerListener implements Listener {
hasObjective = true;
}
}
}
if (!hasObjective) {
if (plugin.getQuestFactory().getSelectedBlockStarts().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
@ -225,6 +229,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getQuestFactory().setSelectedBlockStarts(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getEventFactory().getSelectedExplosionLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -232,6 +237,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getEventFactory().setSelectedExplosionLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getEventFactory().getSelectedEffectLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -239,6 +245,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getEventFactory().setSelectedEffectLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getEventFactory().getSelectedMobLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -246,6 +253,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getEventFactory().setSelectedMobLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getEventFactory().getSelectedLightningLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -253,6 +261,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getEventFactory().setSelectedLightningLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getEventFactory().getSelectedTeleportLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -260,6 +269,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getEventFactory().setSelectedTeleportLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getQuestFactory().getSelectedKillLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -267,6 +277,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getQuestFactory().setSelectedKillLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (plugin.getQuestFactory().getSelectedReachLocations().containsKey(evt.getPlayer().getUniqueId())) {
Block block = evt.getClickedBlock();
Location loc = block.getLocation();
@ -274,6 +285,7 @@ public class PlayerListener implements Listener {
temp.put(evt.getPlayer().getUniqueId(), block);
plugin.getQuestFactory().setSelectedReachLocations(temp);
evt.getPlayer().sendMessage(ChatColor.GOLD + Lang.get(player, "questSelectedLocation") + " " + ChatColor.AQUA + loc.getWorld().getName() + ": " + loc.getX() + ", " + loc.getY() + ", " + loc.getZ() + ChatColor.GOLD + " (" + ChatColor.GREEN + ItemUtil.getName(new ItemStack(block.getType())) + ChatColor.GOLD + ")");
evt.setCancelled(true);
} else if (player.isConversing() == false) {
for (final Quest q : plugin.getQuests()) {
if (q.getBlockStart() != null) {
@ -425,8 +437,9 @@ public class PlayerListener implements Listener {
if (plugin.checkQuester(evt.getPlayer().getUniqueId()) == false) {
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
for (Quest quest : quester.getCurrentQuests().keySet()) {
if (evt.isCancelled() == false) {
if (quester.containsObjective(quest, "breakBlock")) {
if (evt.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH) == false && evt.isCancelled() == false) {
if (evt.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH) == false) {
ItemStack i = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState().getData().toItemStack().getDurability());
quester.breakBlock(quest, i);
}
@ -434,21 +447,22 @@ public class PlayerListener implements Listener {
if (quester.containsObjective(quest, "placeBlock")) {
for (ItemStack is : quester.getQuestData(quest).blocksPlaced) {
if (is.getAmount() > 0) {
if (evt.isCancelled() == false) {
int index = quester.getQuestData(quest).blocksPlaced.indexOf(is);
is.setAmount(is.getAmount() - 1);
quester.getQuestData(quest).blocksPlaced.set(index, is);
}
}
}
}
if (evt.getPlayer().getItemInHand().getType().equals(Material.SHEARS) && quester.containsObjective(quest, "cutBlock")) {
if (quester.containsObjective(quest, "cutBlock")) {
if (evt.getPlayer().getItemInHand().getType().equals(Material.SHEARS)) {
ItemStack i = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState().getData().toItemStack().getDurability());
quester.cutBlock(quest, i);
}
}
}
}
}
}
@EventHandler
public void onPlayerShearEntity(PlayerShearEntityEvent evt) {
@ -478,6 +492,21 @@ public class PlayerListener implements Listener {
}
}
@EventHandler
public void onCraftItem(CraftItemEvent evt) {
if (evt.getWhoClicked() instanceof Player) {
if (plugin.checkQuester(evt.getWhoClicked().getUniqueId()) == false) {
Quester quester = plugin.getQuester(evt.getWhoClicked().getUniqueId());
for (Quest quest : quester.getCurrentQuests().keySet()) {
if (quester.containsObjective(quest, "craftItem")) {
quester.craftItem(quest, evt.getCurrentItem());
}
}
}
}
}
@EventHandler
public void onEnchantItem(EnchantItemEvent evt) {
if (plugin.checkQuester(evt.getEnchanter().getUniqueId()) == false) {
@ -748,9 +777,10 @@ public class PlayerListener implements Listener {
plugin.getQuestFactory().setSelectingNpcs(temp);
}
LinkedList<Quester> temp = plugin.getQuesters();
for (Quester q : temp) {
for (Iterator<Quester> iterator = temp.iterator(); iterator.hasNext();) {
Quester q = iterator.next();
if (q.getUUID().equals(quester.getUUID())) {
temp.remove(q);
iterator.remove();
}
}
plugin.setQuesters(temp);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,337 @@
/*******************************************************************************************************
* Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************************************/
package me.blackvein.quests.prompts;
import java.util.LinkedList;
import java.util.List;
import me.blackvein.quests.QuestFactory;
import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.FixedSetPrompt;
import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
public class ItemsPrompt extends FixedSetPrompt {
private final Quests plugin;
private final int stageNum;
private final String pref;
private final QuestFactory questFactory;
public ItemsPrompt(Quests plugin, int stageNum, QuestFactory qf) {
super("1", "2", "3");
this.plugin = plugin;
this.stageNum = stageNum;
this.pref = "stage" + stageNum;
this.questFactory = qf;
}
@SuppressWarnings("unchecked")
@Override
public String getPromptText(ConversationContext context) {
// Check/add newly made item
if (context.getSessionData("newItem") != null) {
if (context.getSessionData(pref + CK.S_CRAFT_ITEMS) != null) {
List<ItemStack> itemRews = getItems(context);
itemRews.add((ItemStack) context.getSessionData("tempStack"));
context.setSessionData(pref + CK.S_CRAFT_ITEMS, itemRews);
} else {
LinkedList<ItemStack> itemRews = new LinkedList<ItemStack>();
itemRews.add((ItemStack) context.getSessionData("tempStack"));
context.setSessionData(pref + CK.S_CRAFT_ITEMS, itemRews);
}
context.setSessionData("newItem", null);
context.setSessionData("tempStack", null);
}
context.setSessionData(pref, Boolean.TRUE);
String text = ChatColor.AQUA + "- " + Lang.get("stageEditorItems") + " -\n";
if (context.getSessionData(pref + CK.S_CRAFT_ITEMS) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorCraftItems") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorCraftItems") + "\n";
LinkedList<ItemStack> items = (LinkedList<ItemStack>) context.getSessionData(pref + CK.S_CRAFT_ITEMS);
for (int i = 0; i < items.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getName(items.get(i)) + ChatColor.GRAY + " x " + ChatColor.AQUA + items.get(i).getAmount() + "\n";
}
}
if (context.getSessionData(pref + CK.S_ENCHANT_TYPES) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorEnchantItems") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorEnchantItems") + "\n";
LinkedList<String> enchants = (LinkedList<String>) context.getSessionData(pref + CK.S_ENCHANT_TYPES);
LinkedList<String> names = (LinkedList<String>) context.getSessionData(pref + CK.S_ENCHANT_NAMES);
LinkedList<Integer> amnts = (LinkedList<Integer>) context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS);
for (int i = 0; i < enchants.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyItemString(names.get(i)) + ChatColor.GRAY + " " + Lang.get("with") + " " + ChatColor.AQUA + Quester.prettyEnchantmentString(Quests.getEnchantment(enchants.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n";
}
}
text += ChatColor.GREEN + "" + ChatColor.BOLD + "3 " + ChatColor.RESET + ChatColor.LIGHT_PURPLE + "- " + Lang.get("done") + "\n";
return text;
}
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new ItemStackPrompt(this);
} else if (input.equalsIgnoreCase("2")) {
return new EnchantmentListPrompt();
}
try {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} catch (Exception e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateCriticalError"));
return Prompt.END_OF_CONVERSATION;
}
}
@SuppressWarnings("unchecked")
private List<ItemStack> getItems(ConversationContext context) {
return (List<ItemStack>) context.getSessionData(pref + CK.S_CRAFT_ITEMS);
}
private class EnchantmentListPrompt extends FixedSetPrompt {
public EnchantmentListPrompt() {
super("1", "2", "3", "4", "5");
}
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.GOLD + "- " + Lang.get("stageEditorEnchantItems") + " -\n";
if (context.getSessionData(pref + CK.S_ENCHANT_TYPES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetEnchantments") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "2 - " + Lang.get("stageEditorSetItemNames") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "3 - " + Lang.get("stageEditorSetEnchantAmounts") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetEnchantments") + "\n";
for (String s : getEnchantTypes(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + s + "\n";
}
if (context.getSessionData(pref + CK.S_ENCHANT_NAMES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetItemNames") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetItemNames") + "\n";
for (String s : getEnchantItems(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyItemString(s) + "\n";
}
}
if (context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetEnchantAmounts") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetEnchantAmounts") + "\n";
for (int i : getEnchantAmounts(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
}
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
}
return text;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new EnchantTypesPrompt();
} else if (input.equalsIgnoreCase("2")) {
if (context.getSessionData(pref + CK.S_ENCHANT_TYPES) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoEnchantments"));
return new EnchantmentListPrompt();
} else {
return new EnchantItemsPrompt();
}
} else if (input.equalsIgnoreCase("3")) {
if (context.getSessionData(pref + CK.S_ENCHANT_TYPES) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoEnchantments"));
return new EnchantmentListPrompt();
} else {
return new EnchantAmountsPrompt();
}
} else if (input.equalsIgnoreCase("4")) {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("stageEditorEnchantmentsCleared"));
context.setSessionData(pref + CK.S_ENCHANT_TYPES, null);
context.setSessionData(pref + CK.S_ENCHANT_NAMES, null);
context.setSessionData(pref + CK.S_ENCHANT_AMOUNTS, null);
return new EnchantmentListPrompt();
} else if (input.equalsIgnoreCase("5")) {
int one;
int two;
int three;
if (context.getSessionData(pref + CK.S_ENCHANT_TYPES) != null) {
one = ((List<String>) context.getSessionData(pref + CK.S_ENCHANT_TYPES)).size();
} else {
one = 0;
}
if (context.getSessionData(pref + CK.S_ENCHANT_NAMES) != null) {
two = ((List<String>) context.getSessionData(pref + CK.S_ENCHANT_NAMES)).size();
} else {
two = 0;
}
if (context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS) != null) {
three = ((List<Integer>) context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS)).size();
} else {
three = 0;
}
if (one == two && two == three) {
return new ItemsPrompt(plugin, stageNum, questFactory);
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorEnchantmentNotSameSize"));
return new EnchantmentListPrompt();
}
}
return null;
}
@SuppressWarnings("unchecked")
private List<String> getEnchantTypes(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_ENCHANT_TYPES);
}
@SuppressWarnings("unchecked")
private List<String> getEnchantItems(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_ENCHANT_NAMES);
}
@SuppressWarnings("unchecked")
private List<Integer> getEnchantAmounts(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_ENCHANT_AMOUNTS);
}
}
private class EnchantTypesPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.LIGHT_PURPLE + "- " + ChatColor.DARK_PURPLE + Lang.get("stageEditorEnchantments") + ChatColor.LIGHT_PURPLE + " -\n";
for (int i = 0; i < Enchantment.values().length; i++) {
if (i == Enchantment.values().length - 1) {
text += ChatColor.GREEN + Quester.prettyEnchantmentString(Enchantment.values()[i]) + " ";
} else {
text += ChatColor.GREEN + Quester.prettyEnchantmentString(Enchantment.values()[i]) + ", ";
}
}
text = text.substring(0, text.length() - 1);
return text + "\n" + ChatColor.YELLOW + Lang.get("stageEditorEnchantTypePrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(Lang.get("charSemi"));
LinkedList<String> enchs = new LinkedList<String>();
boolean valid;
for (String s : args) {
s = s.trim();
valid = false;
for (Enchantment e : Enchantment.values()) {
if (Quester.prettyEnchantmentString(e).equalsIgnoreCase(s)) {
if (enchs.contains(s) == false) {
enchs.add(Quester.prettyEnchantmentString(e));
valid = true;
break;
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + " " + Lang.get("stageEditorListContainsDuplicates"));
return new EnchantTypesPrompt();
}
}
}
if (valid == false) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorInvalidEnchantment"));
return new EnchantTypesPrompt();
}
}
context.setSessionData(pref + CK.S_ENCHANT_TYPES, enchs);
}
return new EnchantmentListPrompt();
}
}
private class EnchantItemsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorItemNamesPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<String> names = new LinkedList<String>();
for (String s : args) {
try {
if (Material.matchMaterial(s) != null) {
//if (names.contains(s) == false) {
names.add(s);
/*} else {
context.getForWhom().sendRawMessage(ChatColor.RED + " " + Lang.get("stageEditorListContainsDuplicates"));
return new EnchantItemsPrompt();
}*/
} else {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorInvalidItemName"));
return new EnchantItemsPrompt();
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorNotListofNumbers"));
return new EnchantItemsPrompt();
}
}
context.setSessionData(pref + CK.S_ENCHANT_NAMES, names);
}
return new EnchantmentListPrompt();
}
}
private class EnchantAmountsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorEnchantAmountsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<Integer> amounts = new LinkedList<Integer>();
for (String s : args) {
try {
if (Integer.parseInt(s) > 0) {
amounts.add(Integer.parseInt(s));
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidMinimum").replace("<number>", "1"));
return new EnchantAmountsPrompt();
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorNotListofNumbers"));
return new EnchantAmountsPrompt();
}
}
context.setSessionData(pref + CK.S_ENCHANT_AMOUNTS, amounts);
}
return new EnchantmentListPrompt();
}
}
}

View File

@ -0,0 +1,811 @@
/*******************************************************************************************************
* Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************************************/
package me.blackvein.quests.prompts;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.FixedSetPrompt;
import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import me.blackvein.quests.QuestFactory;
import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.Lang;
import me.blackvein.quests.util.MiscUtil;
public class MobsPrompt extends FixedSetPrompt {
private final Quests plugin;
private final int stageNum;
private final String pref;
private final QuestFactory questFactory;
public MobsPrompt(Quests plugin, int stageNum, QuestFactory qf) {
super("1", "2", "3", "4", "5");
this.plugin = plugin;
this.stageNum = stageNum;
this.pref = "stage" + stageNum;
this.questFactory = qf;
}
@SuppressWarnings("unchecked")
@Override
public String getPromptText(ConversationContext context) {
context.setSessionData(pref, Boolean.TRUE);
String text = ChatColor.AQUA + "- " + Lang.get("stageEditorMobs") + " -\n";
if (context.getSessionData(pref + CK.S_MOB_TYPES) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorKillMobs") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorKillMobs") + "\n";
LinkedList<String> mobs = (LinkedList<String>) context.getSessionData(pref + CK.S_MOB_TYPES);
LinkedList<Integer> amnts = (LinkedList<Integer>) context.getSessionData(pref + CK.S_MOB_AMOUNTS);
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) == null) {
for (int i = 0; i < mobs.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + Quester.prettyMobString(Quests.getMobType(mobs.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + "\n";
}
} else {
LinkedList<String> locs = (LinkedList<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS);
LinkedList<Integer> radii = (LinkedList<Integer>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS);
LinkedList<String> names = (LinkedList<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES);
for (int i = 0; i < mobs.size(); i++) {
String msg = Lang.get("blocksWithin");
msg = msg.replaceAll("<amount>", ChatColor.DARK_PURPLE + "" + radii.get(i) + ChatColor.GRAY);
text += ChatColor.GRAY + " - " + ChatColor.BLUE + Quester.prettyMobString(Quests.getMobType(mobs.get(i))) + ChatColor.GRAY + " x " + ChatColor.DARK_AQUA + amnts.get(i) + ChatColor.GRAY + msg + ChatColor.YELLOW + names.get(i) + " (" + locs.get(i) + ")\n";
}
}
}
if (context.getSessionData(pref + CK.S_FISH) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorCatchFish") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
Integer fish = (Integer) context.getSessionData(pref + CK.S_FISH);
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorCatchFish") + " " + ChatColor.GRAY + "(" + ChatColor.AQUA + fish + " " + Lang.get("stageEditorFish") + ChatColor.GRAY + ")\n";
}
if (context.getSessionData(pref + CK.S_TAME_TYPES) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "3 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorTameMobs") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "3 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorTameMobs") + "\n";
LinkedList<String> mobs = (LinkedList<String>) context.getSessionData(pref + CK.S_TAME_TYPES);
LinkedList<Integer> amounts = (LinkedList<Integer>) context.getSessionData(pref + CK.S_TAME_AMOUNTS);
for (int i = 0; i < mobs.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + mobs.get(i) + ChatColor.GRAY + " x " + ChatColor.AQUA + amounts.get(i) + "\n";
}
}
if (context.getSessionData(pref + CK.S_SHEAR_COLORS) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "4 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorShearSheep") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "4 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorShearSheep") + "\n";
LinkedList<String> colors = (LinkedList<String>) context.getSessionData(pref + CK.S_SHEAR_COLORS);
LinkedList<Integer> amounts = (LinkedList<Integer>) context.getSessionData(pref + CK.S_SHEAR_AMOUNTS);
for (int i = 0; i < colors.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + colors.get(i) + ChatColor.GRAY + " x " + ChatColor.AQUA + amounts.get(i) + "\n";
}
}
text += ChatColor.GREEN + "" + ChatColor.BOLD + "5 " + ChatColor.RESET + ChatColor.LIGHT_PURPLE + "- " + Lang.get("done") + "\n";
return text;
}
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new MobListPrompt();
} else if (input.equalsIgnoreCase("2")) {
return new FishPrompt();
} else if (input.equalsIgnoreCase("3")) {
return new TameListPrompt();
} else if (input.equalsIgnoreCase("4")) {
return new ShearListPrompt();
}
try {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} catch (Exception e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateCriticalError"));
return Prompt.END_OF_CONVERSATION;
}
}
private class MobListPrompt extends FixedSetPrompt {
public MobListPrompt() {
super("1", "2", "3", "4", "5", "6", "7");
}
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.GOLD + "- " + Lang.get("stageEditorKillMobs") + " -\n";
if (context.getSessionData(pref + CK.S_MOB_TYPES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobTypes") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobAmounts") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.GRAY + " - " + Lang.get("stageEditorSetKillLocations") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.GRAY + " - " + Lang.get("stageEditorSetKillLocationRadii") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.GRAY + " - " + Lang.get("stageEditorSetKillLocationNames") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "6" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "7" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobTypes") + "\n";
for (String s : getMobTypes(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + s + "\n";
}
if (context.getSessionData(pref + CK.S_MOB_AMOUNTS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobAmounts") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobAmounts") + "\n";
for (Integer i : getMobAmounts(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
}
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillLocations") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillLocations") + "\n";
for (String s : getKillLocations(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + s + "\n";
}
}
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillLocationRadii") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillLocationRadii") + "\n";
for (int i : getKillRadii(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
}
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillLocationNames") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillLocationNames") + "\n";
for (String s : getKillLocationNames(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + s + "\n";
}
}
text += ChatColor.BLUE + "" + ChatColor.BOLD + "6" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "7" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
}
return text;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new MobTypesPrompt();
} else if (input.equalsIgnoreCase("2")) {
if (context.getSessionData(pref + CK.S_MOB_TYPES) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoMobTypes"));
return new MobListPrompt();
} else {
return new MobAmountsPrompt();
}
} else if (input.equalsIgnoreCase("3")) {
if (context.getSessionData(pref + CK.S_MOB_TYPES) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoMobTypes"));
return new MobListPrompt();
} else {
Map<UUID, Block> temp = questFactory.getSelectedKillLocations();
temp.put(((Player) context.getForWhom()).getUniqueId(), null);
questFactory.setSelectedKillLocations(temp);
return new MobLocationPrompt();
}
} else if (input.equalsIgnoreCase("4")) {
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoKillLocations"));
return new MobListPrompt();
} else {
return new MobRadiiPrompt();
}
} else if (input.equalsIgnoreCase("5")) {
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoKillLocations"));
return new MobListPrompt();
} else {
return new MobLocationNamesPrompt();
}
} else if (input.equalsIgnoreCase("6")) {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("stageEditorKillMobsCleared"));
context.setSessionData(pref + CK.S_MOB_TYPES, null);
context.setSessionData(pref + CK.S_MOB_AMOUNTS, null);
context.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS, null);
context.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS, null);
context.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES, null);
return new MobListPrompt();
} else if (input.equalsIgnoreCase("7")) {
int one;
int two;
int three;
int four;
int five;
if (context.getSessionData(pref + CK.S_MOB_TYPES) != null) {
one = ((List<String>) context.getSessionData(pref + CK.S_MOB_TYPES)).size();
} else {
one = 0;
}
if (context.getSessionData(pref + CK.S_MOB_AMOUNTS) != null) {
two = ((List<Integer>) context.getSessionData(pref + CK.S_MOB_AMOUNTS)).size();
} else {
two = 0;
}
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) != null) {
three = ((List<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS)).size();
} else {
three = 0;
}
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS) != null) {
four = ((List<Integer>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS)).size();
} else {
four = 0;
}
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES) != null) {
five = ((List<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES)).size();
} else {
five = 0;
}
if (one == two) {
if (three != 0 || four != 0 || five != 0) {
if (two == three && three == four && four == five) {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorAllListsNotSameSize"));
return new MobListPrompt();
}
} else {
return new CreateStagePrompt(plugin, stageNum, questFactory);
}
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorMobTypesNotSameSize"));
return new MobListPrompt();
}
}
return null;
}
@SuppressWarnings("unchecked")
private List<String> getMobTypes(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_MOB_TYPES);
}
@SuppressWarnings("unchecked")
private List<Integer> getMobAmounts(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_MOB_AMOUNTS);
}
@SuppressWarnings("unchecked")
private List<String> getKillLocations(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS);
}
@SuppressWarnings("unchecked")
private List<Integer> getKillRadii(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS);
}
@SuppressWarnings("unchecked")
private List<String> getKillLocationNames(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES);
}
}
private class MobTypesPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
String mobs = ChatColor.LIGHT_PURPLE + Lang.get("eventEditorMobsTitle") + "\n";
LinkedList<EntityType> mobArr = new LinkedList<EntityType>(Arrays.asList(EntityType.values()));
LinkedList<EntityType> toRemove = new LinkedList<EntityType>();
for (int i = 0; i < mobArr.size(); i++) {
final EntityType type = mobArr.get(i);
if (type.isAlive() == false || type.name().equals("PLAYER")) {
toRemove.add(type);
}
}
mobArr.removeAll(toRemove);
for (int i = 0; i < mobArr.size(); i++) {
if (i < (mobArr.size() - 1)) {
mobs += MiscUtil.getProperMobName(mobArr.get(i)) + ", ";
} else {
mobs += MiscUtil.getProperMobName(mobArr.get(i)) + "\n";
}
}
return mobs + ChatColor.YELLOW + Lang.get("stageEditorMobsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<String> mobTypes = new LinkedList<String>();
for (String s : input.split(" ")) {
if (Quests.getMobType(s) != null) {
mobTypes.add(s);
context.setSessionData(pref + CK.S_MOB_TYPES, mobTypes);
} else {
player.sendMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorInvalidMob"));
return new MobTypesPrompt();
}
}
}
return new MobListPrompt();
}
}
private class MobAmountsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorMobAmountsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<Integer> mobAmounts = new LinkedList<Integer>();
for (String s : input.split(" ")) {
try {
int i = Integer.parseInt(s);
if (i < 1) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidMinimum").replace("<number>", "1"));
return new MobAmountsPrompt();
}
mobAmounts.add(i);
} catch (NumberFormatException e) {
player.sendMessage(ChatColor.LIGHT_PURPLE + input + " " + ChatColor.RED + Lang.get("stageEditorInvalidNumber"));
return new MobAmountsPrompt();
}
}
context.setSessionData(pref + CK.S_MOB_AMOUNTS, mobAmounts);
}
return new MobListPrompt();
}
}
private class MobLocationPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorMobLocationPrompt");
}
@SuppressWarnings("unchecked")
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdAdd"))) {
Block block = questFactory.getSelectedKillLocations().get(player.getUniqueId());
if (block != null) {
Location loc = block.getLocation();
LinkedList<String> locs;
if (context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS) != null) {
locs = (LinkedList<String>) context.getSessionData(pref + CK.S_MOB_KILL_LOCATIONS);
} else {
locs = new LinkedList<String>();
}
locs.add(Quests.getLocationInfo(loc));
context.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS, locs);
Map<UUID, Block> temp = questFactory.getSelectedKillLocations();
temp.remove(player.getUniqueId());
questFactory.setSelectedKillLocations(temp);
} else {
player.sendMessage(ChatColor.RED + Lang.get("stageEditorNoBlock"));
return new MobLocationPrompt();
}
return new MobListPrompt();
} else if (input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
Map<UUID, Block> temp = questFactory.getSelectedKillLocations();
temp.remove(player.getUniqueId());
questFactory.setSelectedKillLocations(temp);
return new MobListPrompt();
} else {
return new MobLocationPrompt();
}
}
}
private class MobRadiiPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorMobLocationRadiiPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<Integer> radii = new LinkedList<Integer>();
for (String s : input.split(" ")) {
try {
int i = Integer.parseInt(s);
if (i < 1) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidMinimum").replace("<number>", "1"));
return new MobRadiiPrompt();
}
radii.add(i);
} catch (NumberFormatException e) {
player.sendMessage(ChatColor.LIGHT_PURPLE + input + " " + ChatColor.RED + Lang.get("stageEditorInvalidItemName"));
return new MobRadiiPrompt();
}
}
context.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_RADIUS, radii);
}
return new MobListPrompt();
}
}
private class MobLocationNamesPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorMobLocationNamesPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<String> locNames = new LinkedList<String>();
locNames.addAll(Arrays.asList(input.split(Lang.get("charSemi"))));
context.setSessionData(pref + CK.S_MOB_KILL_LOCATIONS_NAMES, locNames);
}
return new MobListPrompt();
}
}
private class FishPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorCatchFishPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
try {
int i = Integer.parseInt(input);
if (i < 0) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorPositiveAmount"));
return new FishPrompt();
} else if (i > 0) {
context.setSessionData(pref + CK.S_FISH, i);
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + input + " " + ChatColor.RED
+ Lang.get("stageEditorInvalidNumber"));
return new FishPrompt();
}
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
context.setSessionData(pref + CK.S_FISH, null);
}
return new CreateStagePrompt(plugin, stageNum, questFactory);
}
}
private class TameListPrompt extends FixedSetPrompt {
public TameListPrompt() {
super("1", "2", "3", "4");
}
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.GOLD + "- " + Lang.get("stageEditorTameMobs") + " -\n";
if (context.getSessionData(pref + CK.S_TAME_TYPES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobTypes") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "2 - " + Lang.get("stageEditorSetTameAmounts") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetMobTypes") + "\n";
for (String s : getTameTypes(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + s + "\n";
}
if (context.getSessionData(pref + CK.S_TAME_AMOUNTS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetTameAmounts") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetTameAmounts") + "\n";
for (Integer i : getTameAmounts(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
}
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
}
return text;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new TameTypesPrompt();
} else if (input.equalsIgnoreCase("2")) {
if (context.getSessionData(pref + CK.S_TAME_TYPES) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoMobTypes"));
return new TameListPrompt();
} else {
return new TameAmountsPrompt();
}
} else if (input.equalsIgnoreCase("3")) {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("stageEditorTameCleared"));
context.setSessionData(pref + CK.S_TAME_TYPES, null);
context.setSessionData(pref + CK.S_TAME_AMOUNTS, null);
return new TameListPrompt();
} else if (input.equalsIgnoreCase("4")) {
int one;
int two;
if (context.getSessionData(pref + CK.S_TAME_TYPES) != null) {
one = ((List<String>) context.getSessionData(pref + CK.S_TAME_TYPES)).size();
} else {
one = 0;
}
if (context.getSessionData(pref + CK.S_TAME_AMOUNTS) != null) {
two = ((List<Integer>) context.getSessionData(pref + CK.S_TAME_AMOUNTS)).size();
} else {
two = 0;
}
if (one == two) {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorTameMobsNotSameSize"));
return new TameListPrompt();
}
}
return null;
}
@SuppressWarnings("unchecked")
private List<String> getTameTypes(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_TAME_TYPES);
}
@SuppressWarnings("unchecked")
private List<Integer> getTameAmounts(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_TAME_AMOUNTS);
}
}
private class TameTypesPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
String mobs = ChatColor.LIGHT_PURPLE + Lang.get("eventEditorMobsTitle") + "\n";
final EntityType[] mobArr = EntityType.values();
for (int i = 0; i < mobArr.length; i++) {
final EntityType type = mobArr[i];
if (type.isAlive() == false || Tameable.class.isAssignableFrom(type.getEntityClass()) == false) {
continue;
}
mobs += MiscUtil.getProperMobName(mobArr[i]) + ", ";
}
mobs = mobs.substring(0, mobs.length() - 2) + "\n";
return mobs + ChatColor.YELLOW + Lang.get("stageEditorMobsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<String> mobTypes = new LinkedList<String>();
for (String s : input.split(" ")) {
if (Quests.getMobType(s) != null) {
final EntityType type = Quests.getMobType(s);
if (type.isAlive() || Tameable.class.isAssignableFrom(type.getEntityClass())) {
mobTypes.add(Quester.prettyMobString(type));
context.setSessionData(pref + CK.S_TAME_TYPES, mobTypes);
} else {
player.sendMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorInvalidMob"));
return new TameTypesPrompt();
}
} else {
player.sendMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorInvalidMob"));
return new TameTypesPrompt();
}
}
}
return new TameListPrompt();
}
}
private class TameAmountsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorTameAmountsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<Integer> mobAmounts = new LinkedList<Integer>();
for (String s : input.split(" ")) {
try {
int i = Integer.parseInt(s);
if (i < 1) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidMinimum").replace("<number>", "1"));
return new TameAmountsPrompt();
}
mobAmounts.add(i);
} catch (NumberFormatException e) {
player.sendMessage(ChatColor.LIGHT_PURPLE + input + " " + ChatColor.RED + Lang.get("stageEditorInvalidNumber"));
return new TameAmountsPrompt();
}
}
context.setSessionData(pref + CK.S_TAME_AMOUNTS, mobAmounts);
}
return new TameListPrompt();
}
}
private class ShearListPrompt extends FixedSetPrompt {
public ShearListPrompt() {
super("1", "2", "3", "4");
}
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.GOLD + "- " + Lang.get("stageEditorShearSheep") + " -\n";
if (context.getSessionData(pref + CK.S_SHEAR_COLORS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetShearColors") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "2 - " + Lang.get("stageEditorSetShearAmounts") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetShearColors") + "\n";
for (String s : getShearColors(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + s + "\n";
}
if (context.getSessionData(pref + CK.S_SHEAR_AMOUNTS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetShearAmounts") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetShearAmounts") + "\n";
for (Integer i : getShearAmounts(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + "\n";
}
}
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
}
return text;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new ShearColorsPrompt();
} else if (input.equalsIgnoreCase("2")) {
if (context.getSessionData(pref + CK.S_SHEAR_COLORS) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoColors"));
return new ShearListPrompt();
} else {
return new ShearAmountsPrompt();
}
} else if (input.equalsIgnoreCase("3")) {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("stageEditorShearCleared"));
context.setSessionData(pref + CK.S_SHEAR_COLORS, null);
context.setSessionData(pref + CK.S_SHEAR_AMOUNTS, null);
return new ShearListPrompt();
} else if (input.equalsIgnoreCase("4")) {
int one;
int two;
if (context.getSessionData(pref + CK.S_SHEAR_COLORS) != null) {
one = ((List<String>) context.getSessionData(pref + CK.S_SHEAR_COLORS)).size();
} else {
one = 0;
}
if (context.getSessionData(pref + CK.S_SHEAR_AMOUNTS) != null) {
two = ((List<Integer>) context.getSessionData(pref + CK.S_SHEAR_AMOUNTS)).size();
} else {
two = 0;
}
if (one == two) {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorShearNotSameSize"));
return new ShearListPrompt();
}
}
return null;
}
@SuppressWarnings("unchecked")
private List<String> getShearColors(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_SHEAR_COLORS);
}
@SuppressWarnings("unchecked")
private List<Integer> getShearAmounts(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_SHEAR_AMOUNTS);
}
}
private class ShearColorsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
String cols = ChatColor.LIGHT_PURPLE + "- " + Lang.get("stageEditorColors") + " - \n";
final DyeColor[] colArr = DyeColor.values();
for (int i = 0; i < colArr.length; i++) {
if (i < (colArr.length - 1)) {
cols += Quests.getDyeString(colArr[i]) + ", ";
} else {
cols += Quests.getDyeString(colArr[i]) + "\n";
}
}
return cols + ChatColor.YELLOW + Lang.get("stageEditorShearColorsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<String> colors = new LinkedList<String>();
for (String s : input.split(" ")) {
if (Quests.getDyeColor(s) != null) {
colors.add(Quests.getDyeString(Quests.getDyeColor(s)));
context.setSessionData(pref + CK.S_SHEAR_COLORS, colors);
} else {
player.sendMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorInvalidDye"));
return new ShearColorsPrompt();
}
}
}
return new ShearListPrompt();
}
}
private class ShearAmountsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorShearAmountsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
Player player = (Player) context.getForWhom();
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
LinkedList<Integer> shearAmounts = new LinkedList<Integer>();
for (String s : input.split(" ")) {
try {
int i = Integer.parseInt(s);
if (i < 1) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidMinimum").replace("<number>", "1"));
return new ShearAmountsPrompt();
}
shearAmounts.add(i);
} catch (NumberFormatException e) {
player.sendMessage(ChatColor.LIGHT_PURPLE + input + " " + ChatColor.RED + Lang.get("stageEditorInvalidNumber"));
return new ShearAmountsPrompt();
}
}
context.setSessionData(pref + CK.S_SHEAR_AMOUNTS, shearAmounts);
}
return new ShearListPrompt();
}
}
}

View File

@ -0,0 +1,506 @@
/*******************************************************************************************************
* Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************************************/
package me.blackvein.quests.prompts;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.FixedSetPrompt;
import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.blackvein.quests.QuestFactory;
import me.blackvein.quests.Quests;
import me.blackvein.quests.util.CK;
import me.blackvein.quests.util.ItemUtil;
import me.blackvein.quests.util.Lang;
public class NPCsPrompt extends FixedSetPrompt {
private final Quests plugin;
private final int stageNum;
private final String pref;
private final QuestFactory questFactory;
public NPCsPrompt(Quests plugin, int stageNum, QuestFactory qf) {
super("1", "2", "3", "4");
this.plugin = plugin;
this.stageNum = stageNum;
this.pref = "stage" + stageNum;
this.questFactory = qf;
}
@SuppressWarnings("unchecked")
@Override
public String getPromptText(ConversationContext context) {
context.setSessionData(pref, Boolean.TRUE);
String text = ChatColor.AQUA + "- " + Lang.get("stageEditorNPCs") + " -\n";
if (plugin.getDependencies().getCitizens() != null) {
if (context.getSessionData(pref + CK.S_DELIVERY_ITEMS) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorDeliverItems") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorDeliverItems") + "\n";
LinkedList<Integer> npcs = (LinkedList<Integer>) context.getSessionData(pref + CK.S_DELIVERY_NPCS);
LinkedList<ItemStack> items = (LinkedList<ItemStack>) context.getSessionData(pref + CK.S_DELIVERY_ITEMS);
for (int i = 0; i < npcs.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + ItemUtil.getName(items.get(i)) + ChatColor.GRAY + " x " + ChatColor.AQUA + items.get(i).getAmount() + ChatColor.GRAY + " " + Lang.get("to") + " " + ChatColor.DARK_AQUA + plugin.getDependencies().getCitizens().getNPCRegistry().getById(npcs.get(i)).getName() + "\n";
}
}
} else {
text += ChatColor.GRAY + "" + ChatColor.BOLD + "1 " + ChatColor.RESET + ChatColor.GRAY + "- " + Lang.get("stageEditorDeliverItems") + ChatColor.GRAY + " (" + Lang.get("questCitNotInstalled") + ")\n";
}
if (plugin.getDependencies().getCitizens() != null) {
if (context.getSessionData(pref + CK.S_NPCS_TO_TALK_TO) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorTalkToNPCs") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorTalkToNPCs") + "\n";
LinkedList<Integer> npcs = (LinkedList<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_TALK_TO);
for (int i = 0; i < npcs.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + plugin.getDependencies().getCitizens().getNPCRegistry().getById(npcs.get(i)).getName() + "\n";
}
}
} else {
text += ChatColor.GRAY + "" + ChatColor.BOLD + "2 " + ChatColor.RESET + ChatColor.GRAY + "- " + Lang.get("stageEditorTalkToNPCs") + ChatColor.GRAY + " (" + Lang.get("questCitNotInstalled") + ")\n";
}
if (plugin.getDependencies().getCitizens() != null) {
if (context.getSessionData(pref + CK.S_NPCS_TO_KILL) == null) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "3 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorKillNPCs") + ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "3 " + ChatColor.RESET + ChatColor.DARK_PURPLE + "- " + Lang.get("stageEditorKillNPCs") + "\n";
LinkedList<Integer> npcs = (LinkedList<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_KILL);
LinkedList<Integer> amounts = (LinkedList<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS);
for (int i = 0; i < npcs.size(); i++) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + plugin.getDependencies().getCitizens().getNPCRegistry().getById(npcs.get(i)).getName() + ChatColor.GRAY + " x " + ChatColor.AQUA + amounts.get(i) + "\n";
}
}
} else {
text += ChatColor.GRAY + "" + ChatColor.BOLD + "3 " + ChatColor.RESET + ChatColor.GRAY + "- " + Lang.get("stageEditorKillNPCs") + ChatColor.GRAY + " (" + Lang.get("questCitNotInstalled") + ")\n";
}
text += ChatColor.GREEN + "" + ChatColor.BOLD + "4 " + ChatColor.RESET + ChatColor.LIGHT_PURPLE + "- " + Lang.get("done") + "\n";
return text;
}
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
if (plugin.getDependencies().getCitizens() != null) {
return new DeliveryListPrompt();
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoCitizens"));
return new CreateStagePrompt(plugin, stageNum, questFactory);
}
} else if (input.equalsIgnoreCase("2")) {
if (plugin.getDependencies().getCitizens() != null) {
return new NPCIDsToTalkToPrompt();
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoCitizens"));
return new CreateStagePrompt(plugin, stageNum, questFactory);
}
} else if (input.equalsIgnoreCase("3")) {
if (plugin.getDependencies().getCitizens() != null) {
return new NPCKillListPrompt();
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoCitizens"));
return new CreateStagePrompt(plugin, stageNum, questFactory);
}
}
try {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} catch (Exception e) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("itemCreateCriticalError"));
return Prompt.END_OF_CONVERSATION;
}
}
private class DeliveryListPrompt extends FixedSetPrompt {
public DeliveryListPrompt() {
super("1", "2", "3", "4", "5");
}
@Override
public String getPromptText(ConversationContext context) {
// Check/add newly made item
if (context.getSessionData("newItem") != null) {
if (context.getSessionData(pref + CK.S_DELIVERY_ITEMS) != null) {
List<ItemStack> itemRews = getItems(context);
itemRews.add((ItemStack) context.getSessionData("tempStack"));
context.setSessionData(pref + CK.S_DELIVERY_ITEMS, itemRews);
} else {
LinkedList<ItemStack> itemRews = new LinkedList<ItemStack>();
itemRews.add((ItemStack) context.getSessionData("tempStack"));
context.setSessionData(pref + CK.S_DELIVERY_ITEMS, itemRews);
}
context.setSessionData("newItem", null);
context.setSessionData("tempStack", null);
}
String text = ChatColor.GOLD + "- " + Lang.get("stageEditorDeliverItems") + " -\n";
if (context.getSessionData(pref + CK.S_DELIVERY_ITEMS) == null) {
text += ChatColor.GRAY + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorDeliveryAddItem") + "\n";
text += ChatColor.GRAY + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.GRAY + " - " + Lang.get("stageEditorDeliveryNPCs") + " (" + Lang.get("noneSet") + ")\n";
if (context.getSessionData(pref + CK.S_DELIVERY_MESSAGES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorDeliveryMessages") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorDeliveryMessages") + "\n";
for (String s : getDeliveryMessages(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + "\"" + s + "\"";
}
}
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorDeliveryAddItem") + "\n";
for (ItemStack is : getItems(context)) {
text += ChatColor.GRAY + " - " + ItemUtil.getDisplayString(is) + "\n";
}
if (context.getSessionData(pref + CK.S_DELIVERY_NPCS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorDeliveryNPCs") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorDeliveryNPCs") + "\n";
for (int i : getDeliveryNPCs(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + i + " (" + plugin.getDependencies().getCitizens().getNPCRegistry().getById(i).getName() + ")\n";
}
}
if (context.getSessionData(pref + CK.S_DELIVERY_MESSAGES) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorDeliveryMessages") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorDeliveryMessages") + "\n";
for (String s : getDeliveryMessages(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + "\"" + s + "\"\n";
}
}
}
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("clear") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "5" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
return text;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new ItemStackPrompt(DeliveryListPrompt.this);
} else if (input.equalsIgnoreCase("2")) {
if (context.getSessionData(pref + CK.S_DELIVERY_ITEMS) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoItems"));
return new DeliveryListPrompt();
} else {
return new DeliveryNPCsPrompt();
}
} else if (input.equalsIgnoreCase("3")) {
return new DeliveryMessagesPrompt();
} else if (input.equalsIgnoreCase("4")) {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("stageEditorDeliveriesCleared"));
context.setSessionData(pref + CK.S_DELIVERY_ITEMS, null);
context.setSessionData(pref + CK.S_DELIVERY_NPCS, null);
context.setSessionData(pref + CK.S_DELIVERY_MESSAGES, null);
return new DeliveryListPrompt();
} else if (input.equalsIgnoreCase("5")) {
int one;
int two;
if (context.getSessionData(pref + CK.S_DELIVERY_ITEMS) != null) {
one = ((List<ItemStack>) context.getSessionData(pref + CK.S_DELIVERY_ITEMS)).size();
} else {
one = 0;
}
if (context.getSessionData(pref + CK.S_DELIVERY_NPCS) != null) {
two = ((List<Integer>) context.getSessionData(pref + CK.S_DELIVERY_NPCS)).size();
} else {
two = 0;
}
if (one == two) {
if (context.getSessionData(pref + CK.S_DELIVERY_MESSAGES) == null && one != 0) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoDeliveryMessage"));
return new DeliveryListPrompt();
} else {
return new NPCsPrompt(plugin, stageNum, questFactory);
}
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorDeliveriesNotSameSize"));
return new DeliveryListPrompt();
}
}
return null;
}
@SuppressWarnings("unchecked")
private List<ItemStack> getItems(ConversationContext context) {
return (List<ItemStack>) context.getSessionData(pref + CK.S_DELIVERY_ITEMS);
}
@SuppressWarnings("unchecked")
private List<Integer> getDeliveryNPCs(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_DELIVERY_NPCS);
}
@SuppressWarnings("unchecked")
private List<String> getDeliveryMessages(ConversationContext context) {
return (List<String>) context.getSessionData(pref + CK.S_DELIVERY_MESSAGES);
}
}
private class DeliveryNPCsPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
HashSet<Player> temp = questFactory.getSelectingNpcs();
temp.add((Player) context.getForWhom());
questFactory.setSelectingNpcs(temp);
return ChatColor.YELLOW + Lang.get("stageEditorNPCPrompt") + "\n" + ChatColor.GOLD + Lang.get("npcHint");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<Integer> npcs = new LinkedList<Integer>();
for (String s : args) {
try {
Integer i = Integer.parseInt(s);
if (plugin.getDependencies().getCitizens().getNPCRegistry().getById(i) != null) {
npcs.add(i);
} else {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + "" + i + ChatColor.RED + " " + Lang.get("stageEditorInvalidNPC"));
return new DeliveryNPCsPrompt();
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorNotListofNumbers"));
return new DeliveryNPCsPrompt();
}
}
context.setSessionData(pref + CK.S_DELIVERY_NPCS, npcs);
}
HashSet<Player> temp = questFactory.getSelectingNpcs();
temp.remove((Player) context.getForWhom());
questFactory.setSelectingNpcs(temp);
return new DeliveryListPrompt();
}
}
private class DeliveryMessagesPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
String note = ChatColor.GOLD + Lang.get("stageEditorNPCNote");
return ChatColor.YELLOW + Lang.get("stageEditorDeliveryMessagesPrompt") + "\n" + note;
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(Lang.get("charSemi"));
LinkedList<String> messages = new LinkedList<String>();
messages.addAll(Arrays.asList(args));
context.setSessionData(pref + CK.S_DELIVERY_MESSAGES, messages);
}
return new DeliveryListPrompt();
}
}
private class NPCIDsToTalkToPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
HashSet<Player> temp = questFactory.getSelectingNpcs();
temp.add((Player) context.getForWhom());
questFactory.setSelectingNpcs(temp);
return ChatColor.YELLOW + Lang.get("stageEditorNPCToTalkToPrompt") + "\n" + ChatColor.GOLD + Lang.get("npcHint");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
String[] args = input.split(" ");
LinkedList<Integer> npcs = new LinkedList<Integer>();
for (String s : args) {
try {
Integer i = Integer.parseInt(s);
if (plugin.getDependencies().getCitizens().getNPCRegistry().getById(i) != null) {
npcs.add(i);
} else {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + "" + i + ChatColor.RED + " " + Lang.get("stageEditorInvalidNPC"));
return new NPCIDsToTalkToPrompt();
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorNotListofNumbers"));
return new NPCIDsToTalkToPrompt();
}
}
HashSet<Player> temp = questFactory.getSelectingNpcs();
temp.remove((Player) context.getForWhom());
questFactory.setSelectingNpcs(temp);
context.setSessionData(pref + CK.S_NPCS_TO_TALK_TO, npcs);
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
context.setSessionData(pref + CK.S_NPCS_TO_TALK_TO, null);
}
return new CreateStagePrompt(plugin, stageNum, questFactory);
}
}
private class NPCKillListPrompt extends FixedSetPrompt {
public NPCKillListPrompt() {
super("1", "2", "3", "4");
}
@Override
public String getPromptText(ConversationContext context) {
String text = ChatColor.GOLD + "- " + Lang.get("stageEditorKillNPCs") + " -\n";
if (context.getSessionData(pref + CK.S_NPCS_TO_KILL) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetKillIds") + " (" + Lang.get("noneSet") + ")\n";
text += ChatColor.GRAY + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetKillAmounts") + " (" + Lang.get("noIdsSet") + ")\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("cancel") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "1" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetKillIds") + "\n";
for (Integer i : getNPCIds(context)) {
text += ChatColor.GRAY + " - " + ChatColor.AQUA + plugin.getDependencies().getCitizens().getNPCRegistry().getById(i).getName() + ChatColor.DARK_AQUA + " (" + i + ")\n";
}
if (context.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS) == null) {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.BLUE + " - " + Lang.get("stageEditorSetKillAmounts") + " (" + Lang.get("noneSet") + ")\n";
} else {
text += ChatColor.BLUE + "" + ChatColor.BOLD + "2" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("stageEditorSetKillAmounts") + "\n";
for (Integer i : getKillAmounts(context)) {
text += ChatColor.GRAY + " - " + ChatColor.BLUE + i + "\n";
}
}
text += ChatColor.BLUE + "" + ChatColor.BOLD + "3" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("cancel") + "\n";
text += ChatColor.BLUE + "" + ChatColor.BOLD + "4" + ChatColor.RESET + ChatColor.YELLOW + " - " + Lang.get("done");
}
return text;
}
@SuppressWarnings("unchecked")
@Override
protected Prompt acceptValidatedInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase("1")) {
return new NpcIdsToKillPrompt();
} else if (input.equalsIgnoreCase("2")) {
if (context.getSessionData(pref + CK.S_NPCS_TO_KILL) == null) {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNoNPCs"));
return new NPCKillListPrompt();
} else {
return new NpcAmountsToKillPrompt();
}
} else if (input.equalsIgnoreCase("3")) {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("stageEditorKillNPCsCleared"));
context.setSessionData(pref + CK.S_NPCS_TO_KILL, null);
context.setSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS, null);
return new NPCKillListPrompt();
} else if (input.equalsIgnoreCase("4")) {
int one;
int two;
if (context.getSessionData(pref + CK.S_NPCS_TO_KILL) != null) {
one = ((List<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_KILL)).size();
} else {
one = 0;
}
if (context.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS) != null) {
two = ((List<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS)).size();
} else {
two = 0;
}
if (one == two) {
return new CreateStagePrompt(plugin, stageNum, questFactory);
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("stageEditorNPCKillsNotSameSize"));
return new NPCKillListPrompt();
}
}
return null;
}
@SuppressWarnings("unchecked")
private List<Integer> getNPCIds(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_KILL);
}
@SuppressWarnings("unchecked")
private List<Integer> getKillAmounts(ConversationContext context) {
return (List<Integer>) context.getSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS);
}
}
private class NpcIdsToKillPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
HashSet<Player> temp = questFactory.getSelectingNpcs();
temp.add((Player) context.getForWhom());
questFactory.setSelectingNpcs(temp);
return ChatColor.YELLOW + Lang.get("stageEditorNPCPrompt") + "\n" + ChatColor.GOLD + Lang.get("npcHint");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<Integer> npcs = new LinkedList<Integer>();
for (String s : args) {
try {
Integer i = Integer.parseInt(s);
if (plugin.getDependencies().getCitizens().getNPCRegistry().getById(i) != null) {
npcs.add(i);
} else {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + "" + i + ChatColor.RED + " " + Lang.get("stageEditorInvalidNPC"));
return new NpcIdsToKillPrompt();
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorNotListofNumbers"));
return new NpcIdsToKillPrompt();
}
}
context.setSessionData(pref + CK.S_NPCS_TO_KILL, npcs);
}
HashSet<Player> temp = questFactory.getSelectingNpcs();
temp.remove((Player) context.getForWhom());
questFactory.setSelectingNpcs(temp);
return new NPCKillListPrompt();
}
}
private class NpcAmountsToKillPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext context) {
return ChatColor.YELLOW + Lang.get("stageEditorKillNPCsPrompt");
}
@Override
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<Integer> amounts = new LinkedList<Integer>();
for (String s : args) {
try {
if (Integer.parseInt(s) > 0) {
amounts.add(Integer.parseInt(s));
} else {
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("invalidMinimum").replace("<number>", "1"));
return new NpcAmountsToKillPrompt();
}
} catch (NumberFormatException e) {
context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + " " + ChatColor.RED + Lang.get("stageEditorNotListofNumbers"));
return new NpcAmountsToKillPrompt();
}
}
context.setSessionData(pref + CK.S_NPCS_TO_KILL_AMOUNTS, amounts);
}
return new NPCKillListPrompt();
}
}
}

View File

@ -490,6 +490,7 @@ public class RequirementsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
CustomRequirement found = null;
// Check if we have a custom requirement with the specified name
for (CustomRequirement cr : plugin.getCustomRequirements()) {
if (cr.getName().equalsIgnoreCase(input)) {
found = cr;
@ -497,6 +498,7 @@ public class RequirementsPrompt extends FixedSetPrompt {
}
}
if (found == null) {
// No? Check again, but with locale sensitivity
for (CustomRequirement cr : plugin.getCustomRequirements()) {
if (cr.getName().toLowerCase().contains(input.toLowerCase())) {
found = cr;
@ -506,31 +508,34 @@ public class RequirementsPrompt extends FixedSetPrompt {
}
if (found != null) {
if (context.getSessionData(CK.REQ_CUSTOM) != null) {
// The custom requirement may already have been added, so let's check that
LinkedList<String> list = (LinkedList<String>) context.getSessionData(CK.REQ_CUSTOM);
LinkedList<Map<String, Object>> datamapList = (LinkedList<Map<String, Object>>) context.getSessionData(CK.REQ_CUSTOM_DATA);
if (list.contains(found.getName()) == false) {
// Hasn't been added yet, so let's do it
list.add(found.getName());
datamapList.add(found.datamap);
datamapList.add(found.getData());
context.setSessionData(CK.REQ_CUSTOM, list);
context.setSessionData(CK.REQ_CUSTOM_DATA, datamapList);
} else {
// Already added, so inform user
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqCustomAlreadyAdded"));
return new CustomRequirementsPrompt();
}
} else {
// The custom requirement hasn't been added yet, so let's do it
LinkedList<Map<String, Object>> datamapList = new LinkedList<Map<String, Object>>();
datamapList.add(found.datamap);
datamapList.add(found.getData());
LinkedList<String> list = new LinkedList<String>();
list.add(found.getName());
context.setSessionData(CK.REQ_CUSTOM, list);
context.setSessionData(CK.REQ_CUSTOM_DATA, datamapList);
}
// Send user to the custom data prompt if there is any needed
if (found.datamap.isEmpty() == false) {
context.setSessionData(CK.REQ_CUSTOM_DATA_DESCRIPTIONS, found.descriptions);
if (found.getData().isEmpty() == false) {
context.setSessionData(CK.REQ_CUSTOM_DATA_DESCRIPTIONS, found.getDescriptions());
return new RequirementCustomDataListPrompt();
}
//
} else {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("reqCustomNotFound"));
return new CustomRequirementsPrompt();
@ -565,7 +570,7 @@ public class RequirementsPrompt extends FixedSetPrompt {
for (String dataKey : datamapKeys) {
text += ChatColor.BOLD + "" + ChatColor.DARK_BLUE + index + " - " + ChatColor.RESET + ChatColor.BLUE + dataKey;
if (datamap.get(dataKey) != null) {
text += ChatColor.GREEN + " (" + (String) datamap.get(dataKey) + ")\n";
text += ChatColor.GREEN + " (" + datamap.get(dataKey).toString() + ")\n";
} else {
text += ChatColor.RED + " (" + Lang.get("valRequired") + ")\n";
}

View File

@ -299,7 +299,7 @@ public class RewardsPrompt extends FixedSetPrompt {
itemRews.add((ItemStack) context.getSessionData("tempStack"));
context.setSessionData(CK.REW_ITEMS, itemRews);
} else {
LinkedList<ItemStack> itemRews = new LinkedList<ItemStack>();
List<ItemStack> itemRews = new LinkedList<ItemStack>();
itemRews.add((ItemStack) context.getSessionData("tempStack"));
context.setSessionData(CK.REW_ITEMS, itemRews);
}
@ -357,7 +357,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
String[] args = input.split(Lang.get("charSemi"));
LinkedList<String> commands = new LinkedList<String>();
List<String> commands = new LinkedList<String>();
for (String s : args) {
if (s.startsWith("/")) {
s = s.substring(1);
@ -383,7 +383,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
String[] args = input.split(" ");
LinkedList<String> permissions = new LinkedList<String>();
List<String> permissions = new LinkedList<String>();
permissions.addAll(Arrays.asList(args));
context.setSessionData(CK.REW_PERMISSION, permissions);
} else if (input.equalsIgnoreCase(Lang.get("cmdClear"))) {
@ -498,7 +498,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<String> skills = new LinkedList<String>();
List<String> skills = new LinkedList<String>();
for (String s : args) {
if (Quests.getMcMMOSkill(s) != null) {
if (skills.contains(s) == false) {
@ -531,7 +531,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] args = input.split(" ");
LinkedList<Integer> amounts = new LinkedList<Integer>();
List<Integer> amounts = new LinkedList<Integer>();
for (String s : args) {
try {
amounts.add(Integer.parseInt(s));
@ -637,7 +637,7 @@ public class RewardsPrompt extends FixedSetPrompt {
@Override
public String getPromptText(ConversationContext cc) {
String text = ChatColor.DARK_PURPLE + Lang.get("heroesClassesTitle") + "\n";
LinkedList<String> list = new LinkedList<String>();
List<String> list = new LinkedList<String>();
for (HeroClass hc : plugin.getDependencies().getHeroes().getClassManager().getClasses()) {
list.add(hc.getName());
}
@ -658,7 +658,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] arr = input.split(" ");
LinkedList<String> classes = new LinkedList<String>();
List<String> classes = new LinkedList<String>();
for (String s : arr) {
HeroClass hc = plugin.getDependencies().getHeroes().getClassManager().getClass(s);
if (hc == null) {
@ -691,7 +691,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false) {
String[] arr = input.split(" ");
LinkedList<Double> amounts = new LinkedList<Double>();
List<Double> amounts = new LinkedList<Double>();
for (String s : arr) {
try {
double d = Double.parseDouble(s);
@ -727,7 +727,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext cc, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
String[] arr = input.split(" ");
LinkedList<String> loots = new LinkedList<String>();
List<String> loots = new LinkedList<String>();
for (String s : arr) {
if (PhatLootsAPI.getPhatLoot(s) == null) {
String text = Lang.get("rewPhatLootsInvalid");
@ -769,6 +769,7 @@ public class RewardsPrompt extends FixedSetPrompt {
public Prompt acceptInput(ConversationContext context, String input) {
if (input.equalsIgnoreCase(Lang.get("cmdCancel")) == false && input.equalsIgnoreCase(Lang.get("cmdClear")) == false) {
CustomReward found = null;
// Check if we have a custom reward with the specified name
for (CustomReward cr : plugin.getCustomRewards()) {
if (cr.getName().equalsIgnoreCase(input)) {
found = cr;
@ -776,6 +777,7 @@ public class RewardsPrompt extends FixedSetPrompt {
}
}
if (found == null) {
// No? Check again, but with locale sensitivity
for (CustomReward cr : plugin.getCustomRewards()) {
if (cr.getName().toLowerCase().contains(input.toLowerCase())) {
found = cr;
@ -785,31 +787,34 @@ public class RewardsPrompt extends FixedSetPrompt {
}
if (found != null) {
if (context.getSessionData(CK.REW_CUSTOM) != null) {
// The custom reward may already have been added, so let's check that
LinkedList<String> list = (LinkedList<String>) context.getSessionData(CK.REW_CUSTOM);
LinkedList<Map<String, Object>> datamapList = (LinkedList<Map<String, Object>>) context.getSessionData(CK.REW_CUSTOM_DATA);
if (list.contains(found.getName()) == false) {
// Hasn't been added yet, so let's do it
list.add(found.getName());
datamapList.add(found.datamap);
datamapList.add(found.getData());
context.setSessionData(CK.REW_CUSTOM, list);
context.setSessionData(CK.REW_CUSTOM_DATA, datamapList);
} else {
// Already added, so inform user
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("rewCustomAlreadyAdded"));
return new CustomRewardsPrompt();
}
} else {
// The custom reward hasn't been added yet, so let's do it
LinkedList<Map<String, Object>> datamapList = new LinkedList<Map<String, Object>>();
datamapList.add(found.datamap);
datamapList.add(found.getData());
LinkedList<String> list = new LinkedList<String>();
list.add(found.getName());
context.setSessionData(CK.REW_CUSTOM, list);
context.setSessionData(CK.REW_CUSTOM_DATA, datamapList);
}
// Send user to the custom data prompt if there is any needed
if (found.datamap.isEmpty() == false) {
context.setSessionData(CK.REW_CUSTOM_DATA_DESCRIPTIONS, found.descriptions);
if (found.getData().isEmpty() == false) {
context.setSessionData(CK.REW_CUSTOM_DATA_DESCRIPTIONS, found.getDescriptions());
return new RewardCustomDataListPrompt();
}
//
} else {
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("rewCustomNotFound"));
return new CustomRewardsPrompt();
@ -844,7 +849,7 @@ public class RewardsPrompt extends FixedSetPrompt {
for (String dataKey : datamapKeys) {
text += ChatColor.BOLD + "" + ChatColor.DARK_BLUE + index + " - " + ChatColor.RESET + ChatColor.BLUE + dataKey;
if (datamap.get(dataKey) != null) {
text += ChatColor.GREEN + " (" + (String) datamap.get(dataKey) + ")\n";
text += ChatColor.GREEN + " (" + datamap.get(dataKey).toString() + ")\n";
} else {
text += ChatColor.RED + " (" + Lang.get("valRequired") + ")\n";
}

View File

@ -58,9 +58,9 @@ public class StagesPrompt extends StringPrompt {
if (i < 0) {
return new StagesPrompt(plugin, questFactory);
} else if (i < (stages + 1) && i > 0) {
return new CreateStagePrompt(plugin, (i), questFactory, plugin.getDependencies().getCitizens());
return new CreateStagePrompt(plugin, (i), questFactory);
} else if (i == (stages + 1)) {
return new CreateStagePrompt(plugin, (stages + 1), questFactory, plugin.getDependencies().getCitizens());
return new CreateStagePrompt(plugin, (stages + 1), questFactory);
} else if (i == (stages + 2)) {
return questFactory.returnToMenu();
} else {
@ -112,11 +112,12 @@ public class StagesPrompt extends StringPrompt {
cc.setSessionData(newPref + CK.S_CUT_NAMES, cc.getSessionData(pref + CK.S_CUT_NAMES));
cc.setSessionData(newPref + CK.S_CUT_AMOUNTS, cc.getSessionData(pref + CK.S_CUT_AMOUNTS));
cc.setSessionData(newPref + CK.S_CUT_DURABILITY, cc.getSessionData(pref + CK.S_CUT_DURABILITY));
cc.setSessionData(newPref + CK.S_FISH, cc.getSessionData(pref + CK.S_FISH));
cc.setSessionData(newPref + CK.S_PLAYER_KILL, cc.getSessionData(pref + CK.S_PLAYER_KILL));
cc.setSessionData(newPref + CK.S_CRAFT_ITEMS, cc.getSessionData(pref + CK.S_CRAFT_ITEMS));
cc.setSessionData(newPref + CK.S_ENCHANT_TYPES, cc.getSessionData(pref + CK.S_ENCHANT_TYPES));
cc.setSessionData(newPref + CK.S_ENCHANT_NAMES, cc.getSessionData(pref + CK.S_ENCHANT_NAMES));
cc.setSessionData(newPref + CK.S_ENCHANT_AMOUNTS, cc.getSessionData(pref + CK.S_ENCHANT_AMOUNTS));
cc.setSessionData(newPref + CK.S_FISH, cc.getSessionData(pref + CK.S_FISH));
cc.setSessionData(newPref + CK.S_PLAYER_KILL, cc.getSessionData(pref + CK.S_PLAYER_KILL));
cc.setSessionData(newPref + CK.S_DELIVERY_ITEMS, cc.getSessionData(pref + CK.S_DELIVERY_ITEMS));
cc.setSessionData(newPref + CK.S_DELIVERY_NPCS, cc.getSessionData(pref + CK.S_DELIVERY_NPCS));
cc.setSessionData(newPref + CK.S_DELIVERY_MESSAGES, cc.getSessionData(pref + CK.S_DELIVERY_MESSAGES));
@ -142,7 +143,7 @@ public class StagesPrompt extends StringPrompt {
cc.setSessionData(newPref + CK.S_CHAT_EVENT_TRIGGERS, cc.getSessionData(pref + CK.S_CHAT_EVENT_TRIGGERS));
cc.setSessionData(newPref + CK.S_FINISH_EVENT, cc.getSessionData(pref + CK.S_FINISH_EVENT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_COUNT, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_COUNT));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_DESCRIPTIONS));
cc.setSessionData(newPref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP, cc.getSessionData(pref + CK.S_CUSTOM_OBJECTIVES_DATA_TEMP));
@ -170,10 +171,11 @@ public class StagesPrompt extends StringPrompt {
cc.setSessionData(pref + CK.S_CUT_NAMES, null);
cc.setSessionData(pref + CK.S_CUT_AMOUNTS, null);
cc.setSessionData(pref + CK.S_CUT_DURABILITY, null);
cc.setSessionData(pref + CK.S_FISH, null);
cc.setSessionData(pref + CK.S_PLAYER_KILL, null);
cc.setSessionData(pref + CK.S_CRAFT_ITEMS, null);
cc.setSessionData(pref + CK.S_ENCHANT_TYPES, null);
cc.setSessionData(pref + CK.S_ENCHANT_NAMES, null);
cc.setSessionData(pref + CK.S_FISH, null);
cc.setSessionData(pref + CK.S_PLAYER_KILL, null);
cc.setSessionData(pref + CK.S_ENCHANT_AMOUNTS, null);
cc.setSessionData(pref + CK.S_DELIVERY_ITEMS, null);
cc.setSessionData(pref + CK.S_DELIVERY_NPCS, null);

View File

@ -35,6 +35,12 @@ public class StageTimer implements Runnable {
@Override
public void run() {
if (quester == null) {
return;
}
if (quester.getQuestData(quest) == null) {
return;
}
if (quester.getQuestData(quest).delayOver) {
if (quest.getStages().indexOf(quester.getCurrentStage(quest)) == (quest.getStages().size() - 1)) {
if (quester.getCurrentStage(quest).getScript() != null) {

View File

@ -62,6 +62,7 @@ public class CK {
public static final String S_CUT_DURABILITY = "cutDurability";
public static final String S_FISH = "fish";
public static final String S_PLAYER_KILL = "playerKill";
public static final String S_CRAFT_ITEMS = "craftItems";
public static final String S_ENCHANT_TYPES = "enchantTypes";
public static final String S_ENCHANT_NAMES = "enchantNames";
public static final String S_ENCHANT_AMOUNTS = "enchantAmounts";

View File

@ -22,6 +22,7 @@ import java.util.Map.Entry;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.configuration.serialization.DelegateDeserialization;
@ -30,6 +31,7 @@ import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.PotionMeta;
import me.blackvein.quests.Quester;
@ -163,11 +165,16 @@ public class ItemUtil {
LinkedList<String> lore = new LinkedList<String>();
String[] flags = new String[10];
LinkedHashMap<Enchantment, Integer> stored = new LinkedHashMap<Enchantment, Integer>();
int potionColor = -1;
LinkedHashMap<String, Object> extra = new LinkedHashMap<String, Object>();
ItemMeta meta = null;
PotionMeta pmeta = null;
EnchantmentStorageMeta esmeta = null;
for (String targ : args) {
String arg = targ.replace("minecraft|", "minecraft:");
if (arg.equals("")) {
continue;
}
if (arg.startsWith("name-")) {
name = arg.substring(5).toUpperCase();
} else if (arg.startsWith("amount-")) {
@ -267,10 +274,21 @@ public class ItemUtil {
Bukkit.getLogger().info("You are running a version of CraftBukkit"
+ " for which Quests cannot set the NBT tag " + key);
}
} else {
} else if (!key.contains("custom-color")){
extra.put(key, value);
}
} else if (arg.startsWith("[") && arg.endsWith("]")) {
if (arg.contains("rgb")) {
// Custom potion color
String[] mapping = arg.replace("[", "").replace("]", "").split("x");
potionColor = Integer.valueOf(mapping[1]);
} else {
Bukkit.getLogger().severe("Quests does not know how to handle "
+ arg + " so please contact the developer on Github");
return null;
}
} else {
Bukkit.getLogger().severe("Quests was unable to read item argument: " + arg);
return null;
}
}
@ -314,6 +332,16 @@ public class ItemUtil {
}
}
}
if (potionColor != -1) {
pmeta = (PotionMeta) meta;
try {
pmeta.setColor(Color.fromRGB(potionColor));
} catch (Throwable tr) {
// PotionMeta.setColor() not introduced until 1.11 (?)
Bukkit.getLogger().info("You are running a version of CraftBukkit"
+ " for which Quests cannot set the potion color " + potionColor);
}
}
if (stack.getType().equals(Material.ENCHANTED_BOOK)) {
esmeta = (EnchantmentStorageMeta) meta;
for (Entry<Enchantment, Integer> e : stored.entrySet()) {

File diff suppressed because it is too large Load Diff

View File

@ -33,8 +33,10 @@ public class MiscUtil {
public static String getProperMobName(EntityType type) {
String name = type.name().toLowerCase();
name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
while (fixUnderscore(name) != null) {
name = fixUnderscore(name);
int index = name.indexOf('_');
if (index != -1) {
name = name.substring(0, (index + 1)) + Character.toUpperCase(name.charAt(index + 1)) + name.substring(index + 2);
name = name.replaceFirst("_", "");
}
return name;
}
@ -49,16 +51,6 @@ public class MiscUtil {
return null;
}
public static String fixUnderscore(String s) {
int index = s.indexOf('_');
if (index == -1) {
return null;
}
s = s.substring(0, (index + 1)) + Character.toUpperCase(s.charAt(index + 1)) + s.substring(index + 2);
s = s.replaceFirst("_", "");
return s;
}
public static String concatArgArray(String[] args, int startingIndex, int endingIndex, char delimiter) {
String s = "";
for (int i = startingIndex; i <= endingIndex; i++) {

View File

@ -0,0 +1,128 @@
/*******************************************************************************************************
* Continued by FlyingPikachu/HappyPikachu with permission from _Blackvein_. All rights reserved.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************************************/
package me.blackvein.quests.util;
import java.lang.reflect.Method;
import java.util.logging.Level;
import javax.annotation.Nullable;
import me.blackvein.quests.Quests;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.domains.Association;
import com.sk89q.worldguard.protection.association.Associables;
import com.sk89q.worldguard.protection.association.RegionAssociable;
import com.sk89q.worldguard.protection.managers.RegionManager;
/**
* @author NathanWolf
*/
public class WorldGuardAPI {
private Quests plugin;
private Object worldGuard = null;
private WorldGuardPlugin worldGuardPlugin = null;
private Object regionContainer = null;
private Method regionContainerGetMethod = null;
private Method worldAdaptMethod = null;
private boolean initialized = false;
public boolean isEnabled() {
return worldGuardPlugin != null;
}
public WorldGuardAPI(Plugin wg) {
if (wg instanceof WorldGuardPlugin) {
worldGuardPlugin = (WorldGuardPlugin)wg;
try {
Class<?> worldGuardClass = Class.forName("com.sk89q.worldguard.WorldGuard");
Method getInstanceMethod = worldGuardClass.getMethod("getInstance");
worldGuard = getInstanceMethod.invoke(null);
// WorldGuard 7+
} catch (Exception ex) {
// WorldGuard <7
}
}
}
protected RegionAssociable getAssociable(Player player) {
RegionAssociable associable;
if (player == null) {
associable = Associables.constant(Association.NON_MEMBER);
} else {
associable = worldGuardPlugin.wrapPlayer(player);
}
return associable;
}
private void initialize() {
if (!initialized) {
initialized = true;
// Super hacky reflection to deal with differences in WorldGuard 6 and 7+
if (worldGuard != null) {
try {
Method getPlatFormMethod = worldGuard.getClass().getMethod("getPlatform");
Object platform = getPlatFormMethod.invoke(worldGuard);
Method getRegionContainerMethod = platform.getClass().getMethod("getRegionContainer");
regionContainer = getRegionContainerMethod.invoke(platform);
Class<?> worldEditWorldClass = Class.forName("com.sk89q.worldedit.world.World");
Class<?> worldEditAdapterClass = Class.forName("com.sk89q.worldedit.bukkit.BukkitAdapter");
worldAdaptMethod = worldEditAdapterClass.getMethod("adapt", World.class);
regionContainerGetMethod = regionContainer.getClass().getMethod("get", worldEditWorldClass);
} catch (Exception ex) {
plugin.getLogger().log(Level.WARNING, "Failed to bind to WorldGuard, integration will not work!", ex);
regionContainer = null;
return;
}
} else {
regionContainer = worldGuardPlugin.getRegionContainer();
try {
regionContainerGetMethod = regionContainer.getClass().getMethod("get", World.class);
} catch (Exception ex) {
plugin.getLogger().log(Level.WARNING, "Failed to bind to WorldGuard, integration will not work!", ex);
regionContainer = null;
return;
}
}
if (regionContainer == null) {
plugin.getLogger().warning("Failed to find RegionContainer, WorldGuard integration will not function!");
}
}
}
@Nullable
public RegionManager getRegionManager(World world) {
initialize();
if (regionContainer == null || regionContainerGetMethod == null) return null;
RegionManager regionManager = null;
try {
if (worldAdaptMethod != null) {
Object worldEditWorld = worldAdaptMethod.invoke(null, world);
regionManager = (RegionManager)regionContainerGetMethod.invoke(regionContainer, worldEditWorld);
} else {
regionManager = (RegionManager)regionContainerGetMethod.invoke(regionContainer, world);
}
} catch (Exception ex) {
plugin.getLogger().log(Level.WARNING, "An error occurred looking up a WorldGuard RegionManager", ex);
}
return regionManager;
}
}

View File

@ -1,4 +1,4 @@
# See https://github.com/FlyingPikachu/Quests/wiki/Configuration
# See https://github.com/FlyingPikachu/Quests/wiki/2-%E2%80%90-Configuration
accept-timeout: 20
allow-command-questing: true
allow-command-quests-with-npcs: false

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "تعيين المنطقة"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "تعديل المرحلة"
stageEditorNewStage: "إضافة مرحلة جديدة"
stageEditorStages: "مراحل"
stageEditorStage: "مرحلة"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "تحطيم الكتل"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "استخدم الكتل"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "صيد السمك"
stageEditorFish: "سمك"
stageEditorKillPlayers: "أقتل اللاعبين"
stageEditorPlayers: "اللاعبين"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "أقتل الشخصيات"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "أقتل الغوغاء"
stageEditorCatchFish: "صيد السمك"
stageEditorFish: "سمك"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "أقتل اللاعبين"
stageEditorPlayers: "اللاعبين"
stageEditorEvents: "Events"
stageEditorStageEvents: "أحداث المرحلة"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Zadejte NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Pravým-klikem na blok použijete počáteční bod, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Zadej název Eventu, <clear>, <cancel>"
questRequiredNoneSet: "Povinný, není nastaveno"
questPartiesCreate: "Hráči si do této strany může provádět úkoly společně!"
questPartiesDelete: "Úkolu strana byla rozpuštěna."
questPartiesInvite: "<player> nyní provádět úkoly s vámi!"
questPartiesJoin: "Nyní můžete provádět úkoly s <player>."
questPartiesKicked: "<player> může nadále provádět úkoly s vámi."
questPartiesLeave: "Můžete nadále provádět úkoly s <player>."
questWGSetRegion: "Nastavit region"
questWGNotInstalled: "Plugin WorldGuard není nainstalován"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Upravit fázi"
stageEditorNewStage: "Přidat novou fázi"
stageEditorStages: "Fáze"
stageEditorStage: "Fáze"
stageEditorBlocks: "Bloky"
stageEditorBreakBlocks: "Rozbít bloky"
stageEditorDamageBlocks: "Poničit bloky"
stageEditorPlaceBlocks: "Umístit bloky"
stageEditorUseBlocks: "Použít bloky"
stageEditorCutBlocks: "Uříznout block"
stageEditorCatchFish: "Chytit rybu"
stageEditorFish: "ryba"
stageEditorKillPlayers: "Zabít hráče"
stageEditorPlayers: "hráči"
stageEditorItems: "Položky"
stageEditorCraftItems: "Vyrobit předmět"
stageEditorEnchantItems: "Očarovat předměty"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Doručit předměty"
stageEditorTalkToNPCs: "Promluvit si s NPC"
stageEditorKillNPCs: "Zabít NPC"
stageEditorMobs: "Monstra"
stageEditorKillMobs: "Zabít Monstra"
stageEditorCatchFish: "Chytit rybu"
stageEditorFish: "ryba"
stageEditorReachLocs: "Dostat se na lokaci"
stageEditorReachRadii1: "Dosáhnout v rámci"
stageEditorReachRadii2: "blocky z"
stageEditorTameMobs: "Ochočit monstra"
stageEditorShearSheep: "Ostřihat ovci"
stageEditorKillPlayers: "Zabít hráče"
stageEditorPlayers: "hráči"
stageEditorEvents: "Události"
stageEditorStageEvents: "Fáze Eventy"
stageEditorStartEvent: "Začít Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Nastavit množství ostříhání"
stageEditorPassword: "Heslo objektu"
stageEditorAddPasswordDisplay: "Přidání zobrazení hesla"
stageEditorAddPasswordPhrases: "Nastavit fázy hesla"
stageEditorNoPasswordDisplays: "Není nastaveno žádné heslo"
stageEditorObjectiveOverride: "Objektové přepsání zobrazeno"
stageEditorCustom: "Vlastní cíle"
stageEditorNoModules: "Nebyli vloženy žádné moduly"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Přepnutí zobrazení cíle bylo zrušeno.
stageEditorDeliveryAddItem: "Přidat předmět"
stageEditorDeliveryNPCs: "Nastavit NPC ID"
stageEditorDeliveryMessages: "Nastavit doručovací zprávu"
stageEditorContainsDuplicates: "Seznam obsahuje duplikáty!"
stageEditorInvalidBlockName: "není platný název bloku!"
stageEditorInvalidEnchantment: "toto není platné jméno enchantu!"
stageEditorInvalidNPC: "není platné ID NPC!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Musíš nejdříve nastavit zabíjecí lokaci!"
stageEditorNoBlockSelected: "Nejdřív musíte vybrat blok."
stageEditorNoColors: "Nejdřív musíte nastavit barvy!"
stageEditorNoLocations: "Nejdřív musíte nastavit lokace!"
stageEditorNoEnchantmentsSet: "Nenastaveny žádné enchanty"
stageEditorNoItemsSet: "Nenastaveny žádné položky"
stageEditorNoMobTypesSet: "Nenastaveny žádné typy monster"
stageEditorNoLocationsSet: "Žádné lokace nebyly nastaveny"
stageEditorNoColorsSet: "Žádné barvy nebyly nastaveny"
stageEditorListNotSameSize: "Seznam názvů bloků a seznam položek nejsou stejné velikosti!"
stageEditorEnchantmentNotSameSize: "Seznam enchantů, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "Seznam položek a seznam NPC nejsou stejné velikosti!"
@ -651,8 +655,9 @@ damage: "Poškození"
place: "Položení"
use: "Použít"
cut: "Ostříhání"
catchFish: "Chycení ryb"
craft: "Vyrobit"
enchantItem: "Enchant <item> s <enchantment>"
catchFish: "Chycení ryb"
kill: "Zabití"
killAtLocation: "Zabití <mob> v <location>"
killPlayer: "Zabijte hráče"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Indtast NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Højre-klik på en block for at sætte start pointet, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Skriv et begivenheds navn, <clear>, <cancel>"
questRequiredNoneSet: "Kræves, ingen indstilling sat"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Sæt område"
questWGNotInstalled: "WorldGuard er ikke indstallerede"
questWGPrompt: "Skriv navnet på WorldGuard området, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Rediger scene"
stageEditorNewStage: "Tilføj ny scene"
stageEditorStages: "Scener"
stageEditorStage: "Scene"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Smadre blokke"
stageEditorDamageBlocks: "Skader blokke"
stageEditorPlaceBlocks: "Placere blokke"
stageEditorUseBlocks: "Brug blokke"
stageEditorCutBlocks: "Skær blokke"
stageEditorCatchFish: "Fang fisk"
stageEditorFish: "fisk"
stageEditorKillPlayers: "Dræb spillere"
stageEditorPlayers: "spillere"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant Items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Levere Items"
stageEditorTalkToNPCs: "Tal til NPC'er"
stageEditorKillNPCs: "Dræb NPC'er"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Dræb Mobs"
stageEditorCatchFish: "Fang fisk"
stageEditorFish: "fisk"
stageEditorReachLocs: "Gå-Til område"
stageEditorReachRadii1: "Nå området inden"
stageEditorReachRadii2: "blokke af"
stageEditorTameMobs: "Tem Mobs"
stageEditorShearSheep: "Klip får"
stageEditorKillPlayers: "Dræb spillere"
stageEditorPlayers: "spillere"
stageEditorEvents: "Begivenheder"
stageEditorStageEvents: "Stadies Begivenheder"
stageEditorStartEvent: "Start begivenhed"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Sæt antal klippe"
stageEditorPassword: "Adgangskode mål"
stageEditorAddPasswordDisplay: "Tilføj adgangskode til visning"
stageEditorAddPasswordPhrases: "Tilføj adgangskode sætninger"
stageEditorNoPasswordDisplays: "Ingen adgangskode sat til display"
stageEditorObjectiveOverride: "Objektiv display override"
stageEditorCustom: "Håndlavede mål"
stageEditorNoModules: "Intet modul indlæst"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objektiv displayoverstyring ryddet."
stageEditorDeliveryAddItem: "Tilføj element"
stageEditorDeliveryNPCs: "Sæt NPC-ID'er"
stageEditorDeliveryMessages: "Angiv leverings meddelelser"
stageEditorContainsDuplicates: "Liste indeholder dubletter!"
stageEditorInvalidBlockName: "er ikke en gyldig Bloknavn!"
stageEditorInvalidEnchantment: "er ikke et gyldigt fortryllelses navn!"
stageEditorInvalidNPC: "er ikke et gyldigt NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Du skal angive dræb stederne først!"
stageEditorNoBlockSelected: "Du skal vælge en block først."
stageEditorNoColors: "Du skal sætte farven først!"
stageEditorNoLocations: "Du skal indstille placeringer først!"
stageEditorNoEnchantmentsSet: "Ingen fortryllelser sat"
stageEditorNoItemsSet: "Intet item valgt"
stageEditorNoMobTypesSet: "Ingen mobtyper sat"
stageEditorNoLocationsSet: "Ingen placering sat"
stageEditorNoColorsSet: "Ingen farver sat"
stageEditorListNotSameSize: "Listen med blok navne, er ikke den samme størrelse som listen med antallet!"
stageEditorEnchantmentNotSameSize: "Enchantments-listen, vare id-listen og listen over fortryllelses beløb er ikke den samme størrelse!"
stageEditorDeliveriesNotSameSize: "Elementlisten og NPC-listen er ikke lige store!"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Sæt"
use: "Brug"
cut: "Klip"
catchFish: "Fang fisk"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Fang fisk"
kill: "Dræb"
killAtLocation: "Dræb <mob> ved <location>"
killPlayer: "Dræb en spiller"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Gib die NPC-ID ein, <clear>, <cancel>"
questEditorEnterBlockStart: "Rechts-klicke auf einen Block um ihn als Start-Punkt auszuwählen, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Gib einen Event-Namen ein, <clear>, <cancel>"
questRequiredNoneSet: "Benötigt, nicht gesetzt"
questPartiesCreate: "Spieler hinzugefügt, um diese Partei können Quests zusammen durchführen!"
questPartiesDelete: "Die Abenteuergruppe wurde aufgelöst."
questPartiesInvite: "<player> können jetzt Quests, die Sie ausführen!"
questPartiesJoin: "Sie können jetzt Quests mit <player> ausführen."
questPartiesKicked: "<player> kann nicht mehr Quests, die Sie durchführen."
questPartiesLeave: "Sie können nicht mehr Quests mit <player> ausführen."
questWGSetRegion: "Region setzen"
questWGNotInstalled: "WorldGuard ist nicht installiert"
questWGPrompt: "Gib die Worldguardregion ein, <clear>, <cancel>"
@ -101,34 +107,39 @@ questEditorQuestNotFound: "Quest nicht gefunden!"
questEditorEventCleared: "Eventauslöser löschen."
questEditorSave: "Speichern und beenden"
questEditorNeedAskMessage: "Du musst eine Frage festlegen!"
questEditorNeedFinishMessage: "Du musst eine end-nachricht setzen!"
questEditorNeedFinishMessage: "Du musst eine End-Nachricht setzen!"
questEditorNeedStages: "Deine Quest hat keine Stufen!"
questEditorSaved: "%bold%Quest gespeichert! %reset%(Lade die Quests mit %red%<command> %reset% neu, damit deine neue Quest aktiviert wird.)"
questEditorExited: "Willst du wirklich ohne zu speichern abbrechen?"
questEditorDeleted: "Willst du diese Quest wirklich löschen"
questEditorDeleted: "Willst du diese Quest wirklich löschen?"
stageEditorEditStage: "Stufe bearbeiten"
stageEditorNewStage: "Neue Stufe hinzufügen"
stageEditorStages: "Stufen"
stageEditorStage: "Stufe"
stageEditorBlocks: "Blockiert"
stageEditorBreakBlocks: "Blöcke abbauen"
stageEditorDamageBlocks: "Blöcke beschädigen"
stageEditorPlaceBlocks: "Blöcke platzieren"
stageEditorUseBlocks: "Blöcke benutzen"
stageEditorCutBlocks: "Blöcke schneiden"
stageEditorCatchFish: "Fisch fangen"
stageEditorFish: "fischen"
stageEditorKillPlayers: "Spieler töten"
stageEditorPlayers: "spieler"
stageEditorEnchantItems: "Items verzaubern"
stageEditorDeliverItems: "Items liefern"
stageEditorItems: "Artikel"
stageEditorCraftItems: "Artikel herstellen"
stageEditorEnchantItems: "Gegenstände verzaubern"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Gegenstände liefern"
stageEditorTalkToNPCs: "Mit NPC reden"
stageEditorKillNPCs: "NPC töten"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Mobs töten"
stageEditorCatchFish: "Fisch fangen"
stageEditorFish: "fischen"
stageEditorReachLocs: "Koordinaten erreichen"
stageEditorReachRadii1: "Rein gelangen"
stageEditorReachRadii1: "Erreiche innerhalb"
stageEditorReachRadii2: "blöcke aus"
stageEditorTameMobs: "Mobs zähmen"
stageEditorShearSheep: "Schaf scheren"
stageEditorKillPlayers: "Spieler töten"
stageEditorPlayers: "spieler"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stufen-Events"
stageEditorStartEvent: "Start-Event"
@ -139,7 +150,7 @@ stageEditorChatEvents: "Chat-Events"
stageEditorChatTrigger: "Chat-Auslöser"
stageEditorChatEventsCleared: "Chat-Events entfernt."
stageEditorCommandEvents: "Command-Events"
stageEditorCommandTrigger: "Command-Trigger"
stageEditorCommandTrigger: "Command-Auslöser"
stageEditorCommandEventsCleared: "Command-Events entfernt."
stageEditorTriggeredBy: "Ausgelöst von"
stageEditorDeathEvent: "Todes-Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Anzahl Scherungen setzen"
stageEditorPassword: "Passwort Ziele"
stageEditorAddPasswordDisplay: "Passwort Anzeige hinzufügen"
stageEditorAddPasswordPhrases: "Passwort Satz hinzufügen"
stageEditorNoPasswordDisplays: "Es ist keine Passwort Anzeige festgelegt"
stageEditorObjectiveOverride: "Objektive Anzeige Überschreiben"
stageEditorCustom: "Benutzerdefinierte Ziele"
stageEditorNoModules: "Keine Module geladen"
@ -193,7 +203,7 @@ stageEditorPlaceBlocksPrompt: "Gib die Menge zum Platzieren (zahlen) ein, <space
stageEditorUseBlocksPrompt: "Gib die Nutzungsmenge (zahlen) ein, <space>, <cancel>"
stageEditorCutBlocksPrompt: "Gib die Schnittmenge (zahlen) ein, <space>, <cancel>"
stageEditorEnterBlockDurability: "Gib die Blockhaltbarkeit (zahlen) ein, <space>, <cancel>"
stageEditorCatchFishPrompt: "Gib die Anzahl gefischte Fische ein, <clear>, <cancel>"
stageEditorCatchFishPrompt: "Gib die Anzahl der Fische an die gefangen werden müssen, <clear>, <cancel>"
stageEditorKillPlayerPrompt: "Gib die Anzahl Spieler die getötet werden müssen, <clear>, <cancel>"
stageEditorEnchantTypePrompt: "Gib Verzauberungsnamen ein, <semicolon>, <cancel>"
stageEditorEnchantAmountsPrompt: "Gib die Verzauberungsmenge (Zahlen) ein, <space>, <cancel>"
@ -215,9 +225,9 @@ stageEditorShearColorsPrompt: "Gib die Schaf-Farbe ein, <space>, <cancel>"
stageEditorShearAmountsPrompt: "Gib an wie viel man ein Schaf scheren muss, <space>, <cancel>"
stageEditorEventsPrompt: "Gib den Eventnamen ein, <clear>, <cancel>"
stageEditorChatEventsPrompt: "Gib einen Eventnamen zum Hinzufügen ein, <clear>, <cancel>"
stageEditorChatEventsTriggerPrompt: "%yellow%Gib einen Chat-Trigger für%aqua% <event>%yellow% <cancel>"
stageEditorChatEventsTriggerPrompt: "%yellow%Gib einen Chat-Auslöser für%aqua% <event>%yellow% <cancel>"
stageEditorCommandEventsPrompt: "Gib einen Eventnamen zum Hinzufügen ein, <clear>, <cancel>"
stageEditorCommandEventsTriggerPrompt: "%yellow%Gib einen Command-Trigger für%aqua% <event>%yellow% <cancel>"
stageEditorCommandEventsTriggerPrompt: "%yellow%Gib einen Command-Auslöser für%aqua% <event>%yellow% <cancel>"
stageEditorDelayPrompt: "Geben Sie eine Zeit (in Sekunden) ein, <clear>, <cancel>"
stageEditorDelayMessagePrompt: "Gib eine Verzögerungs Nachricht ein, <clear>, <cancel>"
stageEditorScriptPrompt: "Gib den Skriptnamen ein, <clear>, <cancel>"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objektive anzeige überschreiben zurückge
stageEditorDeliveryAddItem: "Item hinzufügen"
stageEditorDeliveryNPCs: "NPC-IDs setzen"
stageEditorDeliveryMessages: "Liefernachricht setzen"
stageEditorContainsDuplicates: "Die Liste enthält Duplikate!"
stageEditorInvalidBlockName: "ist kein gültiger Block-Name!"
stageEditorInvalidEnchantment: "ist keine gültige Verzauberung!"
stageEditorInvalidNPC: "ist keine gültige NPC-ID!"
@ -251,7 +260,7 @@ stageEditorNotListofNumbers: "war keine Liste aus Nummern!"
stageEditorNoDelaySet: "Du musst zuerst eine Wiederholung setzen!"
stageEditorNoBlockNames: "Du musst erst Block-Namen setzen!"
stageEditorNoEnchantments: "Du musst erst Verzauberungen setzen!"
stageEditorNoItems: "Du musst erst Items hinzufügen!"
stageEditorNoItems: "Du musst erst Gegenstände hinzufügen!"
stageEditorNoDeliveryMessage: "Du musst mindestens eine Liefernachricht setzen!"
stageEditorNoNPCs: "Du musst erst NPC-IDs setzen!"
stageEditorNoMobTypes: "Du musst erst Mob-Typen setzen!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Du musst erst Kill-Koordinaten setzen!"
stageEditorNoBlockSelected: "Du musst erst einen Block auswählen."
stageEditorNoColors: "Du musst erst Farben setzen!"
stageEditorNoLocations: "Du musst erst Korrdinaten setzen!"
stageEditorNoEnchantmentsSet: "Keine Verzauberungen gesetzt"
stageEditorNoItemsSet: "Keine Items gesetzt"
stageEditorNoMobTypesSet: "Keine Mob-Typen gesetzt"
stageEditorNoLocationsSet: "Keine Koordinaten gesetzt"
stageEditorNoColorsSet: "Keine Farben gesetzt"
stageEditorListNotSameSize: "Die Blocknamen-Liste und Mengen-Liste haben nicht die gleiche groß!"
stageEditorEnchantmentNotSameSize: "Die Verzauberungs-Liste, die Item-ID-Liste und die Verzauberungsmenge-Liste sind nicht gleich groß!"
stageEditorDeliveriesNotSameSize: "Die Item-Liste und die NPC-Liste sind nicht gleich groß!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "Beim Speichern ist ein Fehler aufgetreten."
eventEditorDeleted: "Event wurde gelöscht, Quests und Events sind automatisch neu geladen worden."
eventEditorSaved: "Event gespeichert, Quests und Events wurden automatisch neu geladen."
eventEditorEnterEventName: "Event Name eingeben, <cancel>"
eventEditorDeletePrompt: "Willst du dieses Event wirklich löschen"
eventEditorDeletePrompt: "Willst du dieses Event wirklich löschen?"
eventEditorQuitWithoutSaving: "Willst du wirklich ohne zu speichern abbrechen?"
eventEditorFinishAndSave: "Bist du sicher, dass du das Event speichern und verlassen möchtest"
eventEditorFinishAndSave: "Bist du sicher, dass du das Event speichern und verlassen möchtest?"
eventEditorModifiedNote: 'Hinweis: Du hast ein Event geändert, das die folgenden Quests verwenden:'
eventEditorForcedToQuit: "Wenn du das Event speicherst, wird jeder der gerade eine dieser Quests abschließt, gezwungen diese abzubrechen."
eventEditorEventInUse: "Folgende Quests benutzen das Event"
@ -326,7 +330,7 @@ eventEditorListSizeMismatch: "Die Listen haben nicht die selbe größe!"
eventEditorListDuplicates: "Die Liste enthält Duplikate!"
eventEditorNotANumberList: "Die Eingabe ist keine Liste der Nummern!"
eventEditorInvalidEntry: "Ungültiger Eintrag"
eventEditorGiveItemsTitle: "- Items geben -"
eventEditorGiveItemsTitle: "- Gegenstände-Geben -"
eventEditorEffectsTitle: "- Effekte -"
eventEditorStormTitle: "- Event Sturm -"
eventEditorThunderTitle: "- Event Donner -"
@ -355,9 +359,9 @@ eventEditorSetTimer: "Setze die Zeit, bis die Quest gescheitert ist"
eventEditorCancelTimer: "Bricht den Quest Timer ab"
eventEditorSetTeleport: "Setze die Teleport Position des Spielers"
eventEditorSetCommands: "Setze Befehle die ausgeführt werden"
eventEditorItems: "Event-Items"
eventEditorSetItems: "Gebe Items"
eventEditorItemsCleared: "Ereignis-Items gelöscht."
eventEditorItems: "Event-Gegenstände"
eventEditorSetItems: "Gebe Gegenstände"
eventEditorItemsCleared: "Ereignis-Gegenstände gelöscht."
eventEditorAddItem: "Item hinzufügen"
eventEditorSetItemNames: "Setze Itemnamen"
eventEditorSetItemAmounts: "Setze die Anzahl an Items"
@ -444,7 +448,7 @@ reqSetQuest: "Questvoraussetzung festlegen"
reqSetQuestBlocks: "Questblock Voraussetzung setzen"
reqSetMcMMO: "mcMMO Voraussetzungen festlegen"
reqSetHeroes: "Heroes - Voraussetzungen festlegen"
reqSetCustom: "benutzerdefinierte Voraussetzungen setzen"
reqSetCustom: "Benutzerdefinierte Voraussetzungen setzen"
reqSetFail: "Nachricht, wenn man die Voraussetzungen nicht erfüllt, festlegen"
reqSetSkills: "Fähigkeit-Voraussetzung festlegen"
reqSetSkillAmounts: "Setze die Skill-Menge"
@ -463,14 +467,14 @@ reqHeroesPrimaryPrompt: "Gib eine Heroes Hauptklasse ein, <clear>, <cancel>"
reqHeroesSecondaryPrompt: "Gib eine Heroes Nebenklasse ein, <clear>, <cancel>"
reqFailMessagePrompt: "Gib die Nachricht ein, welche angezeigt wird, <cancel>"
reqAddItem: "Item hinzufügen"
reqSetRemoveItems: "Item entfernen setzen"
reqNoItemsSet: "Keine Items gesetzt"
reqSetRemoveItems: "Gegenstände entfernen setzen"
reqNoItemsSet: "Keine Gegenstände gesetzt"
reqNoValuesSet: "Kein Wert gesetzt"
reqHeroesPrimaryDisplay: "Hauptklasse:"
reqHeroesSecondaryDisplay: "Nebenklasse:"
reqNotAQuestName: "<quest> ist kein Questname!"
reqItemCleared: "Itemvoraussetzungen zurückgesetzt."
reqListsNotSameSize: "Die Item-Liste und die Entfernungs-Liste für Item sind nicht gleich groß!"
reqListsNotSameSize: "Die Gegenstände-Liste und die Entfernungs-Liste für Gegenstände sind nicht gleich groß!"
reqTrueFalseError: '<input> ist weder true noch false! %br% Beispiel: true false true true'
reqCustomAlreadyAdded: "Dieses benutzerdefinierte Ziel wurde bereits hinzugefügt!"
reqCustomNotFound: "Benutzerdefinierte Voraussetzungs-Modul nicht gefunden."
@ -651,8 +655,9 @@ damage: "Schaden"
place: "Platzieren"
use: "Benutzen"
cut: "Schneiden"
catchFish: "Fisch fangen"
craft: "Herstellen"
enchantItem: "Verzaubere <item> mit <enchantment>"
catchFish: "Fisch fangen"
kill: "Killen"
killAtLocation: "Töte <mob> bei <location>"
killPlayer: "Spieler töten"
@ -682,13 +687,13 @@ questNotExist: "Deine Quest <quest> existiert nicht mehr. Deshalb kannst du die
questInvalidChoice: "Falsche Wahl. Geben Sie 'Ja' oder 'Nein' ein"
questPointsDisplay: "Questpunkte:"
questNoDrop: "Du darfst keine Questitems fallen."
questNoBrew: "Du darfst keine Questitems brauen."
questNoStore: "Du darfst keine Questitems lagern."
questNoCraft: "Du darfst keine keine Questitems erstellen."
questNoEquip: "Du darfst keine Questitems ausrüsten."
questNoDispense: "Du darfst keine Questitems in Spender legen."
questNoEnchant: "Du darfst keine Questitems verzaubern."
questNoSmelt: "Du darfst keine Questitems zum schmelzen verwenden."
questNoBrew: "Du darfst keine Quest-Gegenstände brauen."
questNoStore: "Du darfst keine Quest-Gegenstände lagern."
questNoCraft: "Du darfst keine keine Quest-Gegenstände herstellen."
questNoEquip: "Du darfst keine Quest-Gegenstände ausrüsten."
questNoDispense: "Du darfst keine Quest-Gegenstände in Spender legen."
questNoEnchant: "Du darfst keine Quest-Gegenstände verzaubern."
questNoSmelt: "Du darfst keine Quest-Gegenstände zum schmelzen verwenden."
pageSelectionNum: "Seitenauswahl muss eine Nummer sein."
pageSelectionPosNum: "Seitenauswahl muss eine positive Nummer sein."
questTakeDisabled: "Annehmen von Quest mit befehle wurde deaktiviert."

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-jab on a block t' use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added t' this party may perform quests together!"
questPartiesDelete: "Th' quest party was disbanded."
questPartiesInvite: "<player> can now perform quests wit' ye!"
questPartiesJoin: "Ye can now perform quests wit' <player>."
questPartiesKicked: "<player> can no longer perform quests wit' ye."
questPartiesLeave: "Ye can no longer perform quests wit' <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard nah installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -105,30 +111,35 @@ questEditorNeedFinishMessage: "Ye must set a finish message!"
questEditorNeedStages: "Yer Quest has no Stages!"
questEditorSaved: "Quest saved! (Ye will needs t' perform a Quest reload fer it t' appear)"
questEditorExited: "Are ye sure ye wants t' exit without savin'?"
questEditorDeleted: "Are ye sure ye wants t' scuttle th' Quest"
questEditorDeleted: "Are ye sure ye wants t' scuttle th' Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break Blocks"
stageEditorDamageBlocks: "Damage Blocks"
stageEditorPlaceBlocks: "Place Blocks"
stageEditorUseBlocks: "Use Blocks"
stageEditorCutBlocks: "Cut Blocks"
stageEditorCatchFish: "Catch Fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill Players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant Items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver Items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill Mobs"
stageEditorCatchFish: "Catch Fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach spots"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame Mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill Players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Set spot names"
stageEditorSetTameAmounts: "Set tame amounts"
stageEditorSetShearColors: "Set sheep colors"
stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password Objectives"
stageEditorPassword: "Password"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display o'erride"
stageEditorCustom: "Custom Objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display o'erride cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "ain't a valid block name!"
stageEditorInvalidEnchantment: "ain't a valid enchantment name!"
stageEditorInvalidNPC: "ain't a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Ye must set kill spots first!"
stageEditorNoBlockSelected: "Ye must select a block first."
stageEditorNoColors: "Ye must set colors first!"
stageEditorNoLocations: "Ye must set spots first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No spots set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "Th' block names list 'n th' amounts list are nah th' same size!"
stageEditorEnchantmentNotSameSize: "Th' enchantments list, th' item id list 'n th' enchant amount list are nah th' same size!"
stageEditorDeliveriesNotSameSize: "Th' item list 'n th' NPC list are nah equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while savin'."
eventEditorDeleted: "Event deleted, Quests 'n Events reloaded."
eventEditorSaved: "Event saved, Quests 'n Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are ye sure ye wants t' delete th' Event"
eventEditorDeletePrompt: "Are ye sure ye wants t' delete th' Event?"
eventEditorQuitWithoutSaving: "Are ye sure ye wants t' abandon ship without savin'?"
eventEditorFinishAndSave: "Are ye sure ye wants t' finish 'n save th' Event"
eventEditorFinishAndSave: "Are ye sure ye wants t' finish 'n save th' Event?"
eventEditorModifiedNote: 'Note: Ye ''ave modified an Event that th'' followin'' Quests use:'
eventEditorForcedToQuit: "If ye save th' Event, anyone who be actively doin' any o' these Quests will be forced t' abandon ship."
eventEditorEventInUse: "Th' followin' Quests use th' Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> wit' <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -105,30 +111,35 @@ questEditorNeedFinishMessage: "You must set a finish message!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Set location names"
stageEditorSetTameAmounts: "Set tame amounts"
stageEditorSetShearColors: "Set sheep colors"
stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorPassword: "Password"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Ingresa el ID del NPC, <clear>, <cancel>"
questEditorEnterBlockStart: "Haz clic-derecho en un bloque para utilizarlo como punto de inicio, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Introduzca un nombre de evento, <clear>, <cancel>"
questRequiredNoneSet: "Requerido, sin definir"
questPartiesCreate: "Jugadores agregados a este partido pueden realizar misiones juntas!"
questPartiesDelete: "El grupo de misión fue disuelto."
questPartiesInvite: "¡<player> ya puede realizar misiones contigo!"
questPartiesJoin: "Ahora puedes realizar misiones con <player>."
questPartiesKicked: "<player> ya no puede realizar misiones contigo."
questPartiesLeave: "Ya no puedes realizar misiones con <player>."
questWGSetRegion: "Establecer región"
questWGNotInstalled: "WorldGuard no está instalado"
questWGPrompt: "Introduzca región de WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Editar etapa"
stageEditorNewStage: "Agregar nueva etapa"
stageEditorStages: "Etapas"
stageEditorStage: "Etapa"
stageEditorBlocks: "Bloques"
stageEditorBreakBlocks: "Romper bloques"
stageEditorDamageBlocks: "Bloques de Daños"
stageEditorPlaceBlocks: "Colocar bloques"
stageEditorUseBlocks: "Usar bloques"
stageEditorCutBlocks: "Cortar bloques"
stageEditorCatchFish: "Captura un pez"
stageEditorFish: "pez"
stageEditorKillPlayers: "Matar a los jugadores"
stageEditorPlayers: "jugadores"
stageEditorItems: "Artículos"
stageEditorCraftItems: "Fabricar artículos"
stageEditorEnchantItems: "Encantar Ítem"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Entregar Ítem"
stageEditorTalkToNPCs: "Hablar con NPC`s"
stageEditorKillNPCs: "Asesinas NPCs"
stageEditorMobs: "Criaturas"
stageEditorKillMobs: "Asesinar mobs"
stageEditorCatchFish: "Captura un pez"
stageEditorFish: "pez"
stageEditorReachLocs: "Llegar a ubicaciones"
stageEditorReachRadii1: "Alcance dentro de"
stageEditorReachRadii2: "bloques de"
stageEditorTameMobs: "Mobs domesticados"
stageEditorShearSheep: "Trasquilar ovejas"
stageEditorKillPlayers: "Matar a los jugadores"
stageEditorPlayers: "jugadores"
stageEditorEvents: "Eventos"
stageEditorStageEvents: "Etapas de Eventos"
stageEditorStartEvent: "Comenzar Evento"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Colocar nombre de ubicación"
stageEditorSetTameAmounts: "Establecer cantidad de domesticar"
stageEditorSetShearColors: "Establecer colores de ovejas"
stageEditorSetShearAmounts: "Establecer cantidad de cortes"
stageEditorPassword: "Objetivos de la contraseña"
stageEditorPassword: "Contraseña"
stageEditorAddPasswordDisplay: "Añadir contraseña mostrada"
stageEditorAddPasswordPhrases: "Añadir frase(s) de contraseña"
stageEditorNoPasswordDisplays: "No hay pantalla de contraseña establecidos"
stageEditorObjectiveOverride: "Anulación de Visualización Objetiva"
stageEditorCustom: "Objetivos Personalizados"
stageEditorNoModules: "No hay módulos cargados"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "La anulación de visualización de objetiv
stageEditorDeliveryAddItem: "Añadir ítem"
stageEditorDeliveryNPCs: "Establecer IDs de NPC"
stageEditorDeliveryMessages: "Establecer mensajes de entrega"
stageEditorContainsDuplicates: "¡La lista contiene duplicados!"
stageEditorInvalidBlockName: "no es un nombre de bloque válido!"
stageEditorInvalidEnchantment: "no es un nombre de encantamiento válido!"
stageEditorInvalidNPC: "no es una ID de NPC válido!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "¡Usted debe colocar ubicación de muerte primero!"
stageEditorNoBlockSelected: "Primero debes seleccionar a bloque."
stageEditorNoColors: "¡Usted debe colocar el color primero!"
stageEditorNoLocations: "¡Usted debe colocar la ubicación primero!"
stageEditorNoEnchantmentsSet: "Sin encantamientos colocados"
stageEditorNoItemsSet: "Sin ítem colocados"
stageEditorNoMobTypesSet: "No hay tipos de mobs establecidos"
stageEditorNoLocationsSet: "Sin ubicaciones colocadas"
stageEditorNoColorsSet: "Ningún conjunto de colores"
stageEditorListNotSameSize: "La lista de nombres de bloques y la lista de cantidades no son del mismo tamaño!"
stageEditorEnchantmentNotSameSize: "La lista de encantamientos, la lista de id del ítem y la lista de cantidad de encantamiento no son del mismo tamaño!"
stageEditorDeliveriesNotSameSize: "La lista de ítem y la lista de NPC no son de igual en tamaño!"
@ -651,8 +655,9 @@ damage: "Daño"
place: "Lugar"
use: "Uso"
cut: "Cortar"
catchFish: "Atrapar un pez"
craft: "Fabricar"
enchantItem: "Encantar <item> con <enchantment>"
catchFish: "Atrapar un pez"
kill: "Matar"
killAtLocation: "Matar <mob> en <location>"
killPlayer: "Matar un jugador"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -105,30 +111,35 @@ questEditorNeedFinishMessage: "Pead lisama lõpetamis sõnumi!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Klikkaa oikealla haluamaasi aloituspalikkaa, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Kirjoita tapahtuman nimi, <clear>, <cancel>"
questRequiredNoneSet: "Vaaditaan, ei vielä asetettu"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Aseta alue"
questWGNotInstalled: "WorldGuard uupuu!"
questWGPrompt: "Syötä WorldGuard-alue, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Muokkaa tasoa"
stageEditorNewStage: "Aseta uusi taso"
stageEditorStages: "Tasot"
stageEditorStage: "Taso"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Riko palikoita"
stageEditorDamageBlocks: "Vahingoita palikoita"
stageEditorPlaceBlocks: "Aseta palikoita"
stageEditorUseBlocks: "Käytä palikoita"
stageEditorCutBlocks: "Leikkaa palikoita"
stageEditorCatchFish: "Nappaa kala"
stageEditorFish: "kala(a)"
stageEditorKillPlayers: "Tapa pelaajia"
stageEditorPlayers: "pelaajaa"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Lumoa tavaroita"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Toimita tavaroita"
stageEditorTalkToNPCs: "Puhu kyläläisille"
stageEditorKillNPCs: "Tapa kyläläisiä"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Tapa olentoja"
stageEditorCatchFish: "Nappaa kala"
stageEditorFish: "kala(a)"
stageEditorReachLocs: "Saavuta sijainti"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "x"
stageEditorTameMobs: "Kesytä eläimiä"
stageEditorShearSheep: "Keritse lampaita"
stageEditorKillPlayers: "Tapa pelaajia"
stageEditorPlayers: "pelaajaa"
stageEditorEvents: "Tapahtumat"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Aloita tapahtuma"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Aseta saksittava määrä"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Aseta tavara"
stageEditorDeliveryNPCs: "Aseta kyläläisten ID:t"
stageEditorDeliveryMessages: "Aseta toimitusviesti"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "ei ole kelvollinen palikka!"
stageEditorInvalidEnchantment: "ei ole kelvollinen lumous!"
stageEditorInvalidNPC: "ei ole kelvollinen ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Aseta ensin teurastuksen sijainti!"
stageEditorNoBlockSelected: "Valitse ensin palikka."
stageEditorNoColors: "Aseta ensin väri!"
stageEditorNoLocations: "Aseta ensin sijainti!"
stageEditorNoEnchantmentsSet: "Lumouksia ei ole asetettu"
stageEditorNoItemsSet: "Tavaroita ei ole asetettu"
stageEditorNoMobTypesSet: "Olentoja ei ole asetettu"
stageEditorNoLocationsSet: "Sijainteja ei ole asetettu"
stageEditorNoColorsSet: "Värejä ei ole asetettu"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Tapa <mob> kohteessa <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Ilagay ang NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Pindutin sa kanan sa harang na ginamit sa pasimulang punto, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Maglagay ng pangalan ng Okasyon, <clear>, <cancel>"
questRequiredNoneSet: "Kailangan, walang nakatakda"
questPartiesCreate: "Mga manlalaro na idinagdag sa partidong ito ay maaaring isagawa ng mga quests magkasama!"
questPartiesDelete: "Ang mga partido sa paghahanap ay binuwag."
questPartiesInvite: "<player> maaari ngayon magsagawa ng mga quests sa inyo!"
questPartiesJoin: "Ngayon maaari kang magsagawa ng mga quests sa <player>."
questPartiesKicked: "<player> maaari hindi na magsagawa ng mga quests sa inyo."
questPartiesLeave: "Maaari mong hindi na magsagawa ng mga quests sa <player>."
questWGSetRegion: "Itakda ang Rehiyon"
questWGNotInstalled: "WorldGuard ay hindi na-install"
questWGPrompt: "Ilagay ang WorldGuard rehiyon, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "I-edit ang Yugto"
stageEditorNewStage: "Maglagay ng bagong Yugto"
stageEditorStages: "Mga Yugto"
stageEditorStage: "Yugto"
stageEditorBlocks: "Mga bloke"
stageEditorBreakBlocks: "Sirain ang Harang"
stageEditorDamageBlocks: "Wasakin ang Harang"
stageEditorPlaceBlocks: "Ilagay ang Harang"
stageEditorUseBlocks: "Gamitin ang Harang"
stageEditorCutBlocks: "Hatiin ang Harang"
stageEditorCatchFish: "Humuli ng Isda"
stageEditorFish: "isda"
stageEditorKillPlayers: "Patayin ang Manlalaro"
stageEditorPlayers: "mga manlalaro"
stageEditorItems: "Mga aytem"
stageEditorCraftItems: "Gumawa ng mga item"
stageEditorEnchantItems: "Manahin ang mga bagay"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Ihatid ang bagay"
stageEditorTalkToNPCs: "Makipag usap sa NPCs"
stageEditorKillNPCs: "Patayin ang NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Patayin ang Mobs"
stageEditorCatchFish: "Humuli ng Isda"
stageEditorFish: "isda"
stageEditorReachLocs: "Abutin ang lokasyon"
stageEditorReachRadii1: "Abutin ang kalooban"
stageEditorReachRadii2: "harangan ang"
stageEditorTameMobs: "Walang kasigasigan ang Mobs"
stageEditorShearSheep: "Magupit ng Tupa"
stageEditorKillPlayers: "Patayin ang Manlalaro"
stageEditorPlayers: "mga manlalaro"
stageEditorEvents: "Pagdiriwang"
stageEditorStageEvents: "Yugto ng mga Kaganapan"
stageEditorStartEvent: "Magumpisa ng Kaganapan"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Maglagay ng halaga ng nagupitan"
stageEditorPassword: "Layunin ng Password"
stageEditorAddPasswordDisplay: "Magdagdag ng password display"
stageEditorAddPasswordPhrases: "Magdagdag ng password parirala(s)"
stageEditorNoPasswordDisplays: "Walang naka-display na password"
stageEditorObjectiveOverride: "Layuning Display Override"
stageEditorCustom: "Layunin ng Pasadya"
stageEditorNoModules: "Walang modules na puno"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Layuning display override ay malinis na."
stageEditorDeliveryAddItem: "Magdadag ng bagay"
stageEditorDeliveryNPCs: "Itakda ang NPC IDs"
stageEditorDeliveryMessages: "Itakda ang pagdadala ng mga mensahe"
stageEditorContainsDuplicates: "Listahan ng mga nilalaman ng mga kopya!"
stageEditorInvalidBlockName: "ito ay hindi wastong harang sa pangalan!"
stageEditorInvalidEnchantment: "ito ay hindi wastong pagka-akit sa pangalan!"
stageEditorInvalidNPC: "ito ay hindi wastong NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Una sa lahat kailangan mo itakda ang lokasyon ng mg
stageEditorNoBlockSelected: "Una kailangan mong i-select ang harang."
stageEditorNoColors: "Una kailangan mong itakda ang mga kulay!"
stageEditorNoLocations: "Una kailangan mong itakda ang lokasyon!"
stageEditorNoEnchantmentsSet: "Walang itinakdang pagkaakit"
stageEditorNoItemsSet: "Walang itinakdang gamit"
stageEditorNoMobTypesSet: "Walang itinakdang tipo ng mob"
stageEditorNoLocationsSet: "Walang itinakdang lokasyon"
stageEditorNoColorsSet: "Walang itinakdang kulay"
stageEditorListNotSameSize: "Ang harang na listahan ng mga pangalan at ang mga halaga ng listahan ay hindi magkapareho ng laki!"
stageEditorEnchantmentNotSameSize: "Ang listahan ng enchantment, ang listahan ng id ng gamit at ang halaga ng listahan ng enchant ay hindi magkapareho ng laki!"
stageEditorDeliveriesNotSameSize: "Ang listahan ng gamit at ang listahan ng NPC ay hindi pantay ng laki!"
@ -651,8 +655,9 @@ damage: "Sira"
place: "Lugar"
use: "Gamitin"
cut: "Putulin"
catchFish: "Humuli ng Isda"
craft: "Gumawa"
enchantItem: "Gayumahin ang <item> kasama and <enchantment>"
catchFish: "Humuli ng Isda"
kill: "Patayin"
killAtLocation: "Patayin ang <mob> sa <location>"
killPlayer: "Patayin ang Manlalaro"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Entrez l'ID du NPC, <clear>, <cancel>"
questEditorEnterBlockStart: "Faites un clic droit sur un bloc à utiliser comme point de départ, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Entrez un nom dévénement, <clear>, <cancel>"
questRequiredNoneSet: "Requis, aucune valeur définie"
questPartiesCreate: "Joueurs ajoutés à ce parti peuvent effectuer des quêtes ensemble !"
questPartiesDelete: "Le groupe de recherche a été dissous."
questPartiesInvite: "<player> peut maintenant effectuer des quêtes avec vous !"
questPartiesJoin: "Vous pouvez maintenant effectuer des quêtes avec <player>."
questPartiesKicked: "<player> ne peut plus effectuer les quêtes avec vous."
questPartiesLeave: "Vous pouvez effectuer nest plus de quêtes avec <player>."
questWGSetRegion: "Définir la région"
questWGNotInstalled: "WorldGuard n'est pas installé"
questWGPrompt: "Entrer le nom de la région WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Modifier létape"
stageEditorNewStage: "Ajouter une nouvelle étape"
stageEditorStages: "Etapes"
stageEditorStage: "Etape"
stageEditorBlocks: "Blocs"
stageEditorBreakBlocks: "Blocs Casser"
stageEditorDamageBlocks: "Blocs Dommage"
stageEditorPlaceBlocks: "Blocs placer"
stageEditorUseBlocks: "Utiliser des blocs"
stageEditorCutBlocks: "Casser des blocs"
stageEditorCatchFish: "Attraper des poissons"
stageEditorFish: "pêcher"
stageEditorKillPlayers: "Tuer des joueurs"
stageEditorPlayers: "joueurs"
stageEditorItems: "Articles"
stageEditorCraftItems: "Fabriquer des articles"
stageEditorEnchantItems: "Enchanter des objets"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Quantité Totale Livrée"
stageEditorTalkToNPCs: "Parler au NPC"
stageEditorKillNPCs: "Tuer des NPC"
stageEditorMobs: "Monstres"
stageEditorKillMobs: "Tuer des monstres"
stageEditorCatchFish: "Attraper des poissons"
stageEditorFish: "pêcher"
stageEditorReachLocs: "Atteindre des coordonnée"
stageEditorReachRadii1: "Rechercher dans"
stageEditorReachRadii2: "blocs de"
stageEditorTameMobs: "Apprivoiser des monstres"
stageEditorShearSheep: "Tondre des moutons"
stageEditorKillPlayers: "Tuer des joueurs"
stageEditorPlayers: "joueurs"
stageEditorEvents: "Evénements"
stageEditorStageEvents: "Étape d'événements"
stageEditorStartEvent: "Démarrage de l'événement"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Définir le nombre de cisailles"
stageEditorPassword: "Objectifs de Mot de Passe"
stageEditorAddPasswordDisplay: "Ajouter un mot de passe"
stageEditorAddPasswordPhrases: "Ajouter une phrase de mot de passe"
stageEditorNoPasswordDisplays: "Aucun mot de passe apparaît défini"
stageEditorObjectiveOverride: "Remplacement de L'affichage de L'objectif"
stageEditorCustom: "Objectifs Customisés"
stageEditorNoModules: "Aucun module chargé"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Le remplacement de l'affichage de l'object
stageEditorDeliveryAddItem: "Ajouter un objet"
stageEditorDeliveryNPCs: "Définir les ID des NPC"
stageEditorDeliveryMessages: "Définir le message de livraison"
stageEditorContainsDuplicates: "La liste contient des doublons !"
stageEditorInvalidBlockName: "n'est pas un bloc valide !"
stageEditorInvalidEnchantment: "n'est pas un enchantement valide !"
stageEditorInvalidNPC: "n'est pas un ID de PNJ valide!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Vous devez d'abord définir un emplacement de kill
stageEditorNoBlockSelected: "Vous devez d'abord sélectionner un bloc."
stageEditorNoColors: "Vous devez d'abord définir une couleur !"
stageEditorNoLocations: "Vous devez d'abord définir une position !"
stageEditorNoEnchantmentsSet: "Aucun enchantement défini"
stageEditorNoItemsSet: "Aucun objet défini"
stageEditorNoMobTypesSet: "Aucun type de monstre défini"
stageEditorNoLocationsSet: "Aucune position définie"
stageEditorNoColorsSet: "Aucune couleur définie"
stageEditorListNotSameSize: "La liste de bloc et la liste des montant n'ont pas la même taille !"
stageEditorEnchantmentNotSameSize: "La liste denchantements, de la liste did et de la liste des montant d'enchantement ne sont pas de la même taille !"
stageEditorDeliveriesNotSameSize: "La liste d'items et la liste des NPC ne sont pas égaux en taille !"
@ -651,8 +655,9 @@ damage: "Dégâts"
place: "Placer"
use: "Utiliser"
cut: "Couper"
catchFish: "Attraper du Poisson"
craft: "Fabriquer"
enchantItem: "Enchanter <item> avec <enchantment>"
catchFish: "Attraper du Poisson"
kill: "Tuer"
killAtLocation: "Tuer <mob> à <location>"
killPlayer: "Tuer un Joueur"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -105,30 +111,35 @@ questEditorNeedFinishMessage: "You must set a finish message!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Add meg az NPC azonosítót, <clear>, <cancel>"
questEditorEnterBlockStart: "Jobb egérgombbal kattintson egy blokkra kiindulópontként, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Add meg az Esemény nevét, <clear>, <cancel>"
questRequiredNoneSet: "Szükséges, nincs beállítva"
questPartiesCreate: "A játékosok hozzá, hogy ez a párt együtt végezhetnek küldetések!"
questPartiesDelete: "A quest fél feloszlatták."
questPartiesInvite: "<player> most végre küldetéseket veled!"
questPartiesJoin: "Akkor most végre küldetéseket <player>-val."
questPartiesKicked: "<player> már nem hajthat végre küldetéseket veled."
questPartiesLeave: "<player>-val küldetések már nem végezhet."
questWGSetRegion: "Régió beállítása"
questWGNotInstalled: "WorldGuard nincs telepítve"
questWGPrompt: "Lépj be a WorldGuard régióba, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Szakasz szerkesztése"
stageEditorNewStage: "Új szakasz hozzáadása"
stageEditorStages: "Szakaszok"
stageEditorStage: "Szakasz"
stageEditorBlocks: "Blokkok"
stageEditorBreakBlocks: "Kitört blokkok"
stageEditorDamageBlocks: "Sebzett blokkok"
stageEditorPlaceBlocks: "Blokk lehelyezés"
stageEditorUseBlocks: "Blokk használat"
stageEditorCutBlocks: "Blokkok kivágása"
stageEditorCatchFish: "Hal fogás"
stageEditorFish: "hal"
stageEditorKillPlayers: "Játékosok megölése"
stageEditorPlayers: "játékosok"
stageEditorItems: "Elemek"
stageEditorCraftItems: "Készítsen elemeket"
stageEditorEnchantItems: "Varázsolt elemek"
stageEditorNPCs: "NPC-k"
stageEditorDeliverItems: "Szállítási elemek"
stageEditorTalkToNPCs: "Beszélés NPC-kkel"
stageEditorKillNPCs: "NPC-k megölése"
stageEditorMobs: "Szörnyek"
stageEditorKillMobs: "Szörnyek ölése"
stageEditorCatchFish: "Hal fogás"
stageEditorFish: "hal"
stageEditorReachLocs: "Helyek elérése"
stageEditorReachRadii1: "Belül elérni"
stageEditorReachRadii2: "blokkok"
stageEditorTameMobs: "Szörnyek szelídítése"
stageEditorShearSheep: "Bárány nyírás"
stageEditorKillPlayers: "Játékosok megölése"
stageEditorPlayers: "játékosok"
stageEditorEvents: "Események"
stageEditorStageEvents: "Színpadi események"
stageEditorStartEvent: "Esemény indítás"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Helynevek beállítása"
stageEditorSetTameAmounts: "Szelídítés mennyiségének beállítása"
stageEditorSetShearColors: "Bárány színek beállítása"
stageEditorSetShearAmounts: "Nyírás mennyiségek beállítása"
stageEditorPassword: "Jelszócélok"
stageEditorPassword: "Jelszó"
stageEditorAddPasswordDisplay: "Jelszó megjelenítés hozzáadása"
stageEditorAddPasswordPhrases: "Jelszó-kifejezés(ek) hozzáadása"
stageEditorNoPasswordDisplays: "Nincs beállítva jelszó"
stageEditorObjectiveOverride: "Célkitűzés megjelenítése felülbírálása"
stageEditorCustom: "Egyéni célok"
stageEditorNoModules: "Nincsenek betöltött modulok"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Az objektív megjelenítés felülírása
stageEditorDeliveryAddItem: "Elem hozzáadása"
stageEditorDeliveryNPCs: "NPC azonosítók beállítása"
stageEditorDeliveryMessages: "Szállítási üzenetek beállítása"
stageEditorContainsDuplicates: "A lista duplikátumokat tartalmaz!"
stageEditorInvalidBlockName: "nem érvényes blokknév!"
stageEditorInvalidEnchantment: "nem érvényes varázslat név!"
stageEditorInvalidNPC: "nem érvényes NPC azonosító!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Először meg kell adni az ölés helyeket!"
stageEditorNoBlockSelected: "Először egy blokkot kell kiválasztani."
stageEditorNoColors: "Először be kell állítani a színeket!"
stageEditorNoLocations: "Először be kell állítani a helyeket!"
stageEditorNoEnchantmentsSet: "Nincs varázslatok beállítva"
stageEditorNoItemsSet: "Nincs elemek beállítva"
stageEditorNoMobTypesSet: "Nincs szörnytípus beállítva"
stageEditorNoLocationsSet: "Nincs beállítva helyek"
stageEditorNoColorsSet: "Nincsenek színek beállítva"
stageEditorListNotSameSize: "A blokknevek listája és az összegek listája nem azonos méretű!"
stageEditorEnchantmentNotSameSize: "A varázslatok listája, az elemek id listája és a varázslat mennyiség listája nem azonos méretű!"
stageEditorDeliveriesNotSameSize: "Az elemlista és az NPC-lista nem egyenlő méretű!"
@ -651,8 +655,9 @@ damage: "Sebzés"
place: "Helyez"
use: "Használ"
cut: "Kivágás"
catchFish: "Hal fogás"
craft: "Készítsen"
enchantItem: "Elvarázsolva <item> a(z) <enchantment>"
catchFish: "Hal fogás"
kill: "Ölés"
killAtLocation: "Megölt egy <mob>-t <location> helyen"
killPlayer: "Játékos megölése"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Masukkan NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Klik kanan pada blok untuk menggunakan sebagai titik awal, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Masukkan satu nama acar. <clear>, <cancel>"
questRequiredNoneSet: "Diperlukan, tidak ada yang set"
questPartiesCreate: "Pemain yang ditambahkan ke Partai ini dapat melakukan pencarian bersama-sama!"
questPartiesDelete: "Partai pencarian ini dibubarkan."
questPartiesInvite: "<player> sekarang dapat melakukan pencarian dengan Anda!"
questPartiesJoin: "Anda sekarang dapat melakukan pencarian dengan <player>."
questPartiesKicked: "<player> tidak lagi dapat melakukan pencarian dengan Anda."
questPartiesLeave: "Anda tidak dapat melakukan pencarian dengan <player>."
questWGSetRegion: "Atur Wilayah"
questWGNotInstalled: "WorldGuard tidak diinstal"
questWGPrompt: "Masukkan wilayah WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Tambahkan Stage Baru"
stageEditorStages: "Tahapan-tahapan"
stageEditorStage: "Tahapan"
stageEditorBreakBlocks: "Istirahat Block"
stageEditorBlocks: "Blok"
stageEditorBreakBlocks: "Istirahat Blok"
stageEditorDamageBlocks: "Kerusakan Blok"
stageEditorPlaceBlocks: "Menempatkan Blok-blok"
stageEditorUseBlocks: "Gunakan Blok-blok"
stageEditorCutBlocks: "Memotong Blok-blok"
stageEditorCatchFish: "Menangkap Ikan"
stageEditorFish: "ikan"
stageEditorKillPlayers: "Bunuh Pemain"
stageEditorPlayers: "para Pemain"
stageEditorItems: "Item"
stageEditorCraftItems: "Buat item"
stageEditorEnchantItems: "Item Mempesona"
stageEditorNPCs: "NPC"
stageEditorDeliverItems: "Kirimkan Item"
stageEditorTalkToNPCs: "Bicaralah dengan NPC"
stageEditorKillNPCs: "Bunuh NPC"
stageEditorMobs: "Massa"
stageEditorKillMobs: "Bunuh Mobs"
stageEditorCatchFish: "Menangkap Ikan"
stageEditorFish: "ikan"
stageEditorReachLocs: "Jangkau lokasi"
stageEditorReachRadii1: "Mencapai dalam"
stageEditorReachRadii2: "blok dari"
stageEditorTameMobs: "Mobi Jinak"
stageEditorShearSheep: "Mencukur Domba"
stageEditorKillPlayers: "Bunuh Pemain"
stageEditorPlayers: "para Pemain"
stageEditorEvents: "Acara"
stageEditorStageEvents: "Acara Panggung"
stageEditorStartEvent: "Mulai Acara"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Atur Nama-nama lokasi"
stageEditorSetTameAmounts: "Tetapkan jumlah jinak"
stageEditorSetShearColors: "Tetapkan warna domba"
stageEditorSetShearAmounts: "Tetapkan jumlah geser"
stageEditorPassword: "Tujuan Kata sandi"
stageEditorPassword: "Kata sandi"
stageEditorAddPasswordDisplay: "Tambahkan tampilan kata sandi"
stageEditorAddPasswordPhrases: "Tambahkan kata kunci ungkapan(s)"
stageEditorNoPasswordDisplays: "Tidak ada kata sandi yang ditampilkan"
stageEditorObjectiveOverride: "Membatalkan tampilan sasaran"
stageEditorCustom: "Tujuan Kustom"
stageEditorNoModules: "Tidak ada sumber yang dimuat"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Penutupan tayang obyektif dihapus."
stageEditorDeliveryAddItem: "Tambahkan item"
stageEditorDeliveryNPCs: "Tetapkan ID-ID NPC"
stageEditorDeliveryMessages: "Atur pengiriman pesan"
stageEditorContainsDuplicates: "Daftar mengandung duplikat!"
stageEditorInvalidBlockName: "bukan sebuah nam blok yang valid!"
stageEditorInvalidEnchantment: "bukan nama pesona yang sah!"
stageEditorInvalidNPC: "ini bukan ID NPC yang valid!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Anda harus menetapkan lokasi membunuh dulu!"
stageEditorNoBlockSelected: "Anda harus memilih satu blok dulu."
stageEditorNoColors: "Anda harus menetapkan warna dulu!"
stageEditorNoLocations: "Anda harus menetapkan lokasi dulu!"
stageEditorNoEnchantmentsSet: "Tidak ada pesona yang diatur"
stageEditorNoItemsSet: "Tidak ada item-item yang di set"
stageEditorNoMobTypesSet: "Tidak ada tipe-tipe mob yang di set"
stageEditorNoLocationsSet: "Tidak ada lokasi-lokasi yang di set"
stageEditorNoColorsSet: "Tidak ada warna-warna yang di set"
stageEditorListNotSameSize: "Daftar nama blok dan daftar jumlah tidak sama ukurannya!"
stageEditorEnchantmentNotSameSize: "Daftar mempesona, daftar id item dan daftar jumlah mempesona bukanlah ukuran yang sama!"
stageEditorDeliveriesNotSameSize: "Daftar item dan daftar NPC tidak sama besarnya!"
@ -651,8 +655,9 @@ damage: "Kerusakan"
place: "Tempatkan"
use: "Gunakan"
cut: "Potong"
catchFish: "Menangkap Ikan"
craft: "Buat"
enchantItem: "Enchant <item> dengan <enchantment>"
catchFish: "Menangkap Ikan"
kill: "Bunuh"
killAtLocation: "Bunuh <mob> di <location>"
killPlayer: "Bunuh Pemain"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Immettere ID NPC, <clear>, <cancel>"
questEditorEnterBlockStart: "Click-destro su un blocco per utilizzare come punto di partenza, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Inserisci il nome di un evento, <clear>, <cancel>"
questRequiredNoneSet: "Richiesto, nessun impostato"
questPartiesCreate: "I giocatori aggiunti a questa festa possono eseguire missioni insieme!"
questPartiesDelete: "Il gruppo di ricerca è stato sciolto."
questPartiesInvite: "<player> può ora eseguire missioni con voi!"
questPartiesJoin: "È ora possibile eseguire missioni con <player>."
questPartiesKicked: "<player> non è più possibile eseguire missioni con voi."
questPartiesLeave: "Non è possibile eseguire missioni con <player>."
questWGSetRegion: "Imposta la regione"
questWGNotInstalled: "WorldGuard non installata"
questWGPrompt: "Immettere la regione di WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Modifica fasi"
stageEditorNewStage: "Aggiungi un nuovo livello"
stageEditorStages: "Fasi"
stageEditorStage: "Fase"
stageEditorBlocks: "Blocchi"
stageEditorBreakBlocks: "Rompere i Blocchi"
stageEditorDamageBlocks: "Blocchi di Danni"
stageEditorPlaceBlocks: "Posto Blocchi"
stageEditorUseBlocks: "Usa i Blocchi"
stageEditorCutBlocks: "Tagliare Blocchi"
stageEditorCatchFish: "Pescare Pesci"
stageEditorFish: "pesce"
stageEditorKillPlayers: "Uccidi i Giocatori"
stageEditorPlayers: "giocatori"
stageEditorItems: "Oggetti"
stageEditorCraftItems: "Crea oggetto"
stageEditorEnchantItems: "Incantare Oggetti"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Consegna Oggetti"
stageEditorTalkToNPCs: "Parla con gli NPC"
stageEditorKillNPCs: "Uccidere i NPC"
stageEditorMobs: "Mostri"
stageEditorKillMobs: "Uccidere i Mobs"
stageEditorCatchFish: "Pescare Pesci"
stageEditorFish: "pesce"
stageEditorReachLocs: "Luoghi ricercare"
stageEditorReachRadii1: "Ricerca all'intero"
stageEditorReachRadii2: "blocchi di"
stageEditorTameMobs: "Domare i Mobs"
stageEditorShearSheep: "Tosare le Pecore"
stageEditorKillPlayers: "Uccidi i Giocatori"
stageEditorPlayers: "giocatori"
stageEditorEvents: "Eventi"
stageEditorStageEvents: "Eventi Scenici"
stageEditorStartEvent: "Inizio Evento"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Imposta i nomi delle località"
stageEditorSetTameAmounts: "Imposta importi addomesticati"
stageEditorSetShearColors: "Imposta i colori delle pecore"
stageEditorSetShearAmounts: "Imposta la quantità di taglio"
stageEditorPassword: "Obiettivi della password"
stageEditorPassword: "Password"
stageEditorAddPasswordDisplay: "Aggiungi la visualizzazione della password"
stageEditorAddPasswordPhrases: "Aggiungere frasi di password(s)"
stageEditorNoPasswordDisplays: "Nessuna password visualizzata impostata"
stageEditorObjectiveOverride: "Override Display Obiettivo"
stageEditorCustom: "Obiettivi Personalizzati"
stageEditorNoModules: "Nessun moduli caricati"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Override di visualizzazione obiettive dese
stageEditorDeliveryAddItem: "Aggiungi articolo"
stageEditorDeliveryNPCs: "Imposta NPC IDs"
stageEditorDeliveryMessages: "Imposta consegna messaggi"
stageEditorContainsDuplicates: "Elenco contiene i duplicati!"
stageEditorInvalidBlockName: "non è un nome di blocco valido!"
stageEditorInvalidEnchantment: "non è un nome valido di incanto!"
stageEditorInvalidNPC: "non è un ID valido NPC!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Devi prima impostare le posizioni di uccisione!"
stageEditorNoBlockSelected: "Devi prima selezionare un blocco."
stageEditorNoColors: "Devi prima impostare i colori!"
stageEditorNoLocations: "È necessario impostare prima le posizione!"
stageEditorNoEnchantmentsSet: "Nessun set di incantesimi"
stageEditorNoItemsSet: "Non elementi impostati"
stageEditorNoMobTypesSet: "Nessun tipo di mob impostato"
stageEditorNoLocationsSet: "Nessuna località impostata"
stageEditorNoColorsSet: "Nessun colors set"
stageEditorListNotSameSize: "La lista dei nomi dei blocchi e la lista degli importi non hanno la stessa dimensione!"
stageEditorEnchantmentNotSameSize: "L'elenco degli incantesimi, l'elenco degli oggetti e l'elenco degli quantità di incantesimo non ha le stesse dimensione!"
stageEditorDeliveriesNotSameSize: "L'elenco degli articoli e l'elenco NPC non hanno dimensioni uguali!"
@ -651,8 +655,9 @@ damage: "Danno"
place: "Posto"
use: "Uso"
cut: "Taglio"
catchFish: "Pescare pesci"
craft: "Crea"
enchantItem: "Incantare<item>con<enchantment>"
catchFish: "Pescare pesci"
kill: "Uccidere"
killAtLocation: "Uccidere<mob>a<location>"
killPlayer: "Uccidi un giocatori"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "スタートポイント <done>, <clear>, <cancel>として使用するブロックを右クリックしてください"
questEditorEnterInitialEvent: "イベント名を入力してください、<clear>、<cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "地域を設定"
questWGNotInstalled: "WorldGuardがインストールされていません"
questWGPrompt: "WorldGuardの区域を入力してください、<clear>、<cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "ステージの編集"
stageEditorNewStage: "新しいステージを追加"
stageEditorStages: "ステージ"
stageEditorStage: "ステージ"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "ブロックを壊す"
stageEditorDamageBlocks: "ダメージブロック"
stageEditorPlaceBlocks: "ブロックを配置"
stageEditorUseBlocks: "ブロックを使用"
stageEditorCutBlocks: "カットブロック"
stageEditorCatchFish: "魚を捕まえる"
stageEditorFish: "魚"
stageEditorKillPlayers: "プレイヤーを殺す"
stageEditorPlayers: "プレイヤー"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "エンチャント アイテム"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "アイテム配布"
stageEditorTalkToNPCs: "NPC に話しかける"
stageEditorKillNPCs: "NPC を殺す"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "モブを殺す"
stageEditorCatchFish: "魚を捕まえる"
stageEditorFish: "魚"
stageEditorReachLocs: "ロケーション到達"
stageEditorReachRadii1: "範囲内への到達"
stageEditorReachRadii2: "ブロック"
stageEditorTameMobs: "モブを飼いならし"
stageEditorShearSheep: "羊毛刈り"
stageEditorKillPlayers: "プレイヤーを殺す"
stageEditorPlayers: "プレイヤー"
stageEditorEvents: "イベント"
stageEditorStageEvents: "ステージイベント"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "保存中にエラーが発生しました。"
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "場所"
use: "使用する"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "殺す"
killAtLocation: "<location> で <mob> を殺す"
killPlayer: "プレイヤーを殺す"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -105,30 +111,35 @@ questEditorNeedFinishMessage: "You must set a finish message!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Voer NPC ID in, <clear>, <cancel>"
questEditorEnterBlockStart: "Rechts-klik op een blok om hem als start punt te gebruiken, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Voer een functie naam in, <clear>, <cancel>"
questRequiredNoneSet: "Vereist, niets ingegeven"
questPartiesCreate: "Spelers toegevoegd aan deze party kunnen opdrachten samen uitvoeren!"
questPartiesDelete: "De opdrachten party is ontbonden."
questPartiesInvite: "<player> kan nu met jou opdrachten uitvoeren!"
questPartiesJoin: "Je kan nu opdrachten uitvoeren met <player>."
questPartiesKicked: "<player> kan nu niet meer opdrachten met jou uitvoeren."
questPartiesLeave: "Je kan nu niet meer opdrachten uitvoeren met <player>."
questWGSetRegion: "Bepaal een gebied"
questWGNotInstalled: "WorldGuard is niet geïnstalleerd"
questWGPrompt: "Voer de gebiedsnaam van WorldGuard in, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Bewerk Fase"
stageEditorNewStage: "Voeg een nieuwe Fase toe"
stageEditorStages: "Fasen"
stageEditorStage: "Fase"
stageEditorBlocks: "Blokken"
stageEditorBreakBlocks: "Blokken Breken"
stageEditorDamageBlocks: "Blokken Beschadigen"
stageEditorPlaceBlocks: "Blokken Plaatsen"
stageEditorUseBlocks: "Blokken Gebruiken"
stageEditorCutBlocks: "Blokken Knippen"
stageEditorCatchFish: "Vissen Vangen"
stageEditorFish: "vissen"
stageEditorKillPlayers: "Dood spelers"
stageEditorPlayers: "spelers"
stageEditorItems: "Voorwerpen"
stageEditorCraftItems: "Voorwerpen maken"
stageEditorEnchantItems: "Betover Items"
stageEditorNPCs: "NPC's"
stageEditorDeliverItems: "Breng Spullen"
stageEditorTalkToNPCs: "Praat met NPC's"
stageEditorKillNPCs: "Vermoord NPC's"
stageEditorMobs: "Monsters"
stageEditorKillMobs: "Vermoord Monsters"
stageEditorCatchFish: "Vissen Vangen"
stageEditorFish: "vissen"
stageEditorReachLocs: "Bereik bepaalde locaties"
stageEditorReachRadii1: "Bereik binnen"
stageEditorReachRadii2: "blokken van"
stageEditorTameMobs: "Tem Monster of Dieren"
stageEditorShearSheep: "Sheer Schapen"
stageEditorKillPlayers: "Dood spelers"
stageEditorPlayers: "spelers"
stageEditorEvents: "Evenementen"
stageEditorStageEvents: "Fase Evenementen"
stageEditorStartEvent: "Begin Fase"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Geef de locatie naam"
stageEditorSetTameAmounts: "Geef de hoeveelheid dat je kan temmen"
stageEditorSetShearColors: "Stel kleuren van het schaap in"
stageEditorSetShearAmounts: "Stel knip aantallen in"
stageEditorPassword: "Wachtwoord Doelstellingen"
stageEditorPassword: "Wachtwoord"
stageEditorAddPasswordDisplay: "Toevoegen wachtwoord scherm"
stageEditorAddPasswordPhrases: "Wachtwoord zin(nen) toevoegen"
stageEditorNoPasswordDisplays: "Geen wachtwoord toegevoegd"
stageEditorObjectiveOverride: "Quest toont overschrijving"
stageEditorCustom: "Aangepast objectief"
stageEditorNoModules: "Geen modules geladen"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objectieve weergave overschrijven uitgesch
stageEditorDeliveryAddItem: "Voeg item toe"
stageEditorDeliveryNPCs: "Stel NPD IDs in"
stageEditorDeliveryMessages: "Stel bezorg bericht in"
stageEditorContainsDuplicates: "Lijst bevat duplicaten!"
stageEditorInvalidBlockName: "is geen geldige blok naam!"
stageEditorInvalidEnchantment: "is niet de naam van een geldige betovering!"
stageEditorInvalidNPC: "is geen NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Je moet eerst moord locaties invoeren!"
stageEditorNoBlockSelected: "Je moet eerst een blok selecteren."
stageEditorNoColors: "Eerst moet u kleuren instellen!"
stageEditorNoLocations: "Locaties moet u eerst instellen!"
stageEditorNoEnchantmentsSet: "Geen bezweringen set"
stageEditorNoItemsSet: "Geen items geselecteerd"
stageEditorNoMobTypesSet: "Geen menigte typen set"
stageEditorNoLocationsSet: "Geen opgeslagen locaties gevonden"
stageEditorNoColorsSet: "Geen opgeslagen kleuren gevonden"
stageEditorListNotSameSize: "De lijst met blok namem en de lijst met hoeveelheden zijn niet van dezelfde grote!"
stageEditorEnchantmentNotSameSize: "De betoveringen lijst, de item Id lijst en de betoveringen hoeveelheid lijst zijn niet van dezelfde grote!"
stageEditorDeliveriesNotSameSize: "De item lijst en de NPC lijst zijn niet van dezelfde grote!"
@ -279,53 +283,53 @@ stageEditorListContainsDuplicates: "Lijst bevat duplicaten!"
stageEditorDelayCleared: "Uitstel tijd verwijdert."
stageEditorDelayMessageCleared: "Uitstel bericht verwijdert."
stageEditorDenizenCleared: "Denizen script gewist."
stageEditorBreakBlocksCleared: "Break blocks objective cleared."
stageEditorDamageBlocksCleared: "Damage blocks objective cleared."
stageEditorPlaceBlocksCleared: "Place blocks objective cleared."
stageEditorUseBlocksCleared: "Use blocks objective cleared."
stageEditorBreakBlocksCleared: "Breek blokken opdracht voltooid."
stageEditorDamageBlocksCleared: "Blokken beschadigingen opdracht voltooid."
stageEditorPlaceBlocksCleared: "Plaats blokken opdracht voltooid."
stageEditorUseBlocksCleared: "Gebruik blokken opdracht voltooid."
stageEditorCutBlocksCleared: "Cut blocks objective cleared."
stageEditorEnchantmentsCleared: "Enchantment objective cleared."
stageEditorDeliveriesCleared: "Delivery objective cleared."
stageEditorReachLocationsCleared: "Reach Locations objective cleared."
stageEditorKillNPCsCleared: "Kill NPCs objective cleared."
stageEditorKillMobsCleared: "Kill Mobs objective cleared."
stageEditorTameCleared: "Tame Mobs objective cleared."
stageEditorShearCleared: "Shear Sheep objective cleared."
stageEditorStartMessageCleared: "Start message cleared."
stageEditorCompleteMessageCleared: "Complete message cleared."
stageEditorConfirmStageDelete: "Are you sure you want to delete this stage?"
stageEditorConfirmStageNote: "Any Stages after will be shifted back one spot"
stageEditorDeleteSucces: "Stage deleted successfully."
stageEditorEnchantments: "Enchantments"
stageEditorNPCNote: 'Note: You may specify the name of the NPC with <npc>'
stageEditorOptional: "Optional"
stageEditorColors: "Sheep Colors"
allListsNotSameSize: "All of your lists are not the same size!"
eventEditorCreate: "Create new Event"
eventEditorEdit: "Edit an Event"
eventEditorDelete: "Delete an Event"
eventEditorNoneToEdit: "No Events currently exist to be edited!"
eventEditorNoneToDelete: "No Events currently exist to be deleted!"
eventEditorNotFound: "Event not found!"
eventEditorExists: "Event already exists!"
eventEditorSomeone: "Someone is already creating or editing an Event with that name!"
eventEditorAlpha: "Name must be alphanumeric!"
eventEditorErrorReadingFile: "Error reading Events file."
eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
eventEditorMustModifyQuests: "You must modify these Quests first!"
stageEditorEnchantmentsCleared: "Betovering opdracht voltooid."
stageEditorDeliveriesCleared: "Leveringen opdracht voltooid."
stageEditorReachLocationsCleared: "Bereik locaties opdracht voltooid."
stageEditorKillNPCsCleared: "Vermoord NPC's opdracht voltooid."
stageEditorKillMobsCleared: "Vermoord monsters opdracht voltooid."
stageEditorTameCleared: "Tem monsters opdracht voltooid."
stageEditorShearCleared: "Scheer schapen opdracht voltooid."
stageEditorStartMessageCleared: "Begin bericht opdracht voltooid."
stageEditorCompleteMessageCleared: "Voltooi bericht opdracht voltooid."
stageEditorConfirmStageDelete: "Weet je zeker dat je deze fase wilt verwijderen?"
stageEditorConfirmStageNote: "Elke fase zal één plek terug worden gezet"
stageEditorDeleteSucces: "Fase succesvol verwijderd."
stageEditorEnchantments: "Betoveringen"
stageEditorNPCNote: 'Opmerking: Je kunt de naam van de NPC geven met <npc>'
stageEditorOptional: "Optioneel"
stageEditorColors: "Schaap Kleuren"
allListsNotSameSize: "Al je lijsten zijn niet dezelfde grootte!"
eventEditorCreate: "Maak een nieuwe missie"
eventEditorEdit: "Bewerk een Event"
eventEditorDelete: "Verwijder een Event"
eventEditorNoneToEdit: "Er zijn geen missies om te kunnen bewerken!"
eventEditorNoneToDelete: "Er zijn geen missies om te kunnen verwijderen!"
eventEditorNotFound: "Missie niet gevonden!"
eventEditorExists: "Missie bestaat al!"
eventEditorSomeone: "Iemand is al een missie met dezelfde naam aan het maken/bewerken!"
eventEditorAlpha: "De naam moet alfabetisch zijn!"
eventEditorErrorReadingFile: "Fout bij het lezen van het Missie bestand."
eventEditorErrorSaving: "Er is een fout opgetreden tijdens het opslaan."
eventEditorDeleted: "Missie verwijderd, Opdrachten en Missies herladen."
eventEditorSaved: "Missie opgeslagen, Opdrachten en Missies herladen."
eventEditorEnterEventName: "Voer een Missie naam in, <cancel>"
eventEditorDeletePrompt: "Weet u zeker dat u deze Quest wil verwijderen"
eventEditorQuitWithoutSaving: "Weet je zeker dat je dit evenement wilt opslaan?"
eventEditorFinishAndSave: "Weet je zeker dat je de missie wilt voltooien en opslaan?"
eventEditorModifiedNote: 'Opmerking: Je hebt een Missie bewerkt die de volgende Opdrachten gebruiken:'
eventEditorForcedToQuit: "Als je deze Missie opslaat zal iedereen die een van deze Opdrachten op het moment aan het doen is geforceerd worden om deze af te sluiten."
eventEditorEventInUse: "De volgende Opdrachten gebruiken de Missie"
eventEditorMustModifyQuests: "Je moet eerst deze opdrachten bewerken!"
eventEditorListSizeMismatch: "The lists are not the same size!"
eventEditorListDuplicates: "List contains duplicates!"
eventEditorNotANumberList: "Input was not a list of numbers!"
eventEditorInvalidEntry: "Invalid entry"
eventEditorInvalidEntry: "Foutieve invoer"
eventEditorGiveItemsTitle: "- Give Items -"
eventEditorEffectsTitle: "- Effects -"
eventEditorStormTitle: "- Event Storm -"
@ -641,53 +645,54 @@ strDone: "then enter '<command>' to save"
strSpace: separating each by a space
strSemicolon: separating each by a semicolon
charSemi: ";"
acceptQuest: "Accept Quest?"
enterAnOption: "Enter an option"
questAccepted: "Quest accepted: <quest>"
currentQuest: "Current Quests:"
noMoreQuest: "No more quests available."
acceptQuest: "Quest accepteren?"
enterAnOption: "Optie invoeren"
questAccepted: "Quest geaccepteerd: <quest>"
currentQuest: "Huidige Quests:"
noMoreQuest: "Geen Quests meer beschikbaar."
break: "Break"
damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
damage: "Schade"
place: "Plaats"
use: "Gebruiken"
cut: "Knippen"
craft: "Maken"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"
deliver: "Deliver <item> to <npc>"
talkTo: "Talk to <npc>"
tame: "Tame"
shearSheep: "Shear <color> sheep"
goTo: "Go to <location>"
completed: "Completed"
redoCompleted: "(Completed)"
consoleError: "This command may only be performed in-game."
noActiveQuest: "You do not currently have any active Quests."
speakTo: 'Start: Speak to <npc>'
mustSpeakTo: "You must speak to <npc> to start this Quest."
noCommandStart: "<quest> may not be started via command."
permissionDisplay: "Permission:"
killAtLocation: "Vermoord <mob> op <location>"
killPlayer: "Vermoord een Speler"
deliver: "Lever <item> aan <npc>"
talkTo: "Praat met <npc>"
tame: "Tem"
shearSheep: "Knip een <color> sheep"
goTo: "Ga naar <location>"
completed: "Voltooid"
redoCompleted: "(Voltooid)"
consoleError: "Dit commando kan alleen in-game uitgevoerd worden."
noActiveQuest: "Op het moment heeft u geen actieve Quests."
speakTo: 'Begin: Praat met <npc>'
mustSpeakTo: "Je moet met <npc> praten om deze Quest te beginnen."
noCommandStart: "<quest> kan niet via een commando worden gestart."
permissionDisplay: "Rechten:"
heroesClass: "class"
mcMMOLevel: "level"
haveCompleted: "You have completed <quest>"
cannotComplete: "Cannot complete <quest>"
questNotFound: "Quest not found."
alreadyConversing: "You already are in a conversation!"
inputNum: "Input must be a number."
inputPosNum: "Input must be a positive number."
questModified: "Your active Quest <quest> has been modified. You have been forced to quit the Quest."
questNotExist: "Your active Quest <quest> no longer exists. You have been forced to quit the Quest."
questInvalidChoice: "Invalid choice. Type 'Yes' or 'No'"
questPointsDisplay: "Quest points:"
questNoDrop: "You may not drop Quest items."
haveCompleted: "Je hebt <quest> voltooid"
cannotComplete: "Kan <quest> niet voltooien"
questNotFound: "Quest niet gevonden."
alreadyConversing: "Je bent al in een gesprek!"
inputNum: "Invoer moet een getal zijn."
inputPosNum: "Invoer moet een positief getal zijn."
questModified: "Uw actieve Quest <quest> is gewijzigd. U bent geforceerd om de Quest af te sluiten."
questNotExist: "Uw actieve Quest <quest> bestaat niet langer. U word geforceerd om de Quest af te sluiten."
questInvalidChoice: "Ongeldige keuze. Type 'Ja' of 'Nee'"
questPointsDisplay: "Quest punten:"
questNoDrop: "U kunt geen Quest items laten vallen."
questNoBrew: "You may not brew Quest items."
questNoStore: "You may not store Quest items."
questNoCraft: "You may not craft Quest items."
questNoEquip: "You may not equip Quest items."
questNoDispense: "You may not put Quest items in dispensers."
questNoEnchant: "You may not enchant Quest items."
questNoStore: "U kunt geen Quest items opslaan."
questNoCraft: "U mag geen Quest items maken."
questNoEquip: "U mag geen Quest items gebruiken."
questNoDispense: "U mag geen Quest items in een dispenser plaatsen."
questNoEnchant: "U mag geen Quest items enchanten."
questNoSmelt: "You may not smelt using Quest items."
pageSelectionNum: "Page selection must be a number."
pageSelectionPosNum: "Page selection must be a positive number."

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Wprowadź NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Kliknij prawym przyciskiem myszy jako punkt początkowy, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Wprowadź nazwę wydarzenia, <clear>, <cancel>"
questRequiredNoneSet: "Wymagane, brak zestawu"
questPartiesCreate: "Dodane do tej partii graczy może wykonywać questy razem!"
questPartiesDelete: "Strona quest został rozwiązany."
questPartiesInvite: "<player> można teraz wykonywać questy z Tobą!"
questPartiesJoin: "Można teraz wykonywać questy z <player>."
questPartiesKicked: "<player> nie może wykonywać zadania z Tobą."
questPartiesLeave: "Nie można wykonywać questy z <player>."
questWGSetRegion: "Ustaw Region"
questWGNotInstalled: "WorldGuard nie zainstalowany"
questWGPrompt: "Wejdź do regionu WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Edytuj Etap"
stageEditorNewStage: "Dodaj nowy Etap"
stageEditorStages: "Etapy"
stageEditorStage: "Etap"
stageEditorBlocks: "Bloki"
stageEditorBreakBlocks: "Zniszcz Bloki"
stageEditorDamageBlocks: "Uszkodź Bloki"
stageEditorPlaceBlocks: "Umieść Bloki"
stageEditorUseBlocks: "Użyj Bloków"
stageEditorCutBlocks: "Rozetnij Bloki"
stageEditorCatchFish: "Złap Rybę"
stageEditorFish: "ryba"
stageEditorKillPlayers: "Zabij Graczy"
stageEditorPlayers: "gracze"
stageEditorItems: "Przedmiot"
stageEditorCraftItems: "Stwórz przedmiot"
stageEditorEnchantItems: "Zaklnij Przedmioty"
stageEditorNPCs: "NPC"
stageEditorDeliverItems: "Dostarcz Przedmioty"
stageEditorTalkToNPCs: "Porozmawiaj z NPC"
stageEditorKillNPCs: "Zabij NPC"
stageEditorMobs: "Moby"
stageEditorKillMobs: "Zabij Potwory"
stageEditorCatchFish: "Złap Rybę"
stageEditorFish: "ryba"
stageEditorReachLocs: "Dotrzyj do lokalizacji"
stageEditorReachRadii1: "Dotrzyj w ciągu"
stageEditorReachRadii2: "bloki"
stageEditorTameMobs: "Poskrom Potwory"
stageEditorShearSheep: "Obetnij Owce"
stageEditorKillPlayers: "Zabij Graczy"
stageEditorPlayers: "gracze"
stageEditorEvents: "Wydarzenia"
stageEditorStageEvents: "Etapowe Wydarzenia"
stageEditorStartEvent: "Rozpocznij Wydarzenie"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Ustaw nazwę lokacji"
stageEditorSetTameAmounts: "Ustaw wysokość oswojenia"
stageEditorSetShearColors: "Ustaw kolor owcy"
stageEditorSetShearAmounts: "Ustaw kwotę za ścinanie"
stageEditorPassword: "Hasła Celów"
stageEditorPassword: "Hasło"
stageEditorAddPasswordDisplay: "Dodaj wyświetlanie hasła"
stageEditorAddPasswordPhrases: "Dodaj frazę(y) hasła"
stageEditorNoPasswordDisplays: "Nie ustawiono wyświetlania hasła"
stageEditorObjectiveOverride: "Zastąpienie wyświetlania celu"
stageEditorCustom: "Niestandardowe cele"
stageEditorNoModules: "Moduł nie został załadowany"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Usunięto obiektywy nadpisany wyświetlacz
stageEditorDeliveryAddItem: "Dodaj przedmiot"
stageEditorDeliveryNPCs: "Zmień ID NPC"
stageEditorDeliveryMessages: "Zmień dostarczenie wiadomości"
stageEditorContainsDuplicates: "Zawiera powtórzenia!"
stageEditorInvalidBlockName: "nie jest poprawna nazwa bloku!"
stageEditorInvalidEnchantment: "nie jest poprawna nazwa enchantu!"
stageEditorInvalidNPC: "nie jest poprawne ID NPC!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Najpierw ustaw miejsce zabójstwa!"
stageEditorNoBlockSelected: "Najpierw musisz wybrać blok."
stageEditorNoColors: "Najpierw musisz zmienić kolor!"
stageEditorNoLocations: "Najpierw musisz ustawić lokalizację!"
stageEditorNoEnchantmentsSet: "Nie ustawiono zaklęcia"
stageEditorNoItemsSet: "Nie ustawiono przedmiotów"
stageEditorNoMobTypesSet: "Nie ustawiono typów potworów"
stageEditorNoLocationsSet: "Lokacje nie są ustawione"
stageEditorNoColorsSet: "Kolory nie są ustawione"
stageEditorListNotSameSize: "Lista nazw bloków i lista kwot nie jest tej samej wielkości!"
stageEditorEnchantmentNotSameSize: "Lista ulepszeń magicznych, lista Id przedmiotu, oraz lista kwot ulepszeń magicznych nie jest tej samej wielkości!"
stageEditorDeliveriesNotSameSize: "Lista przedmiotów, oraz lista NPC nie są równej wielkości!"
@ -651,8 +655,9 @@ damage: "Obrażenia"
place: "Umieść"
use: "Użyj"
cut: "Wytnij"
catchFish: "Złap rybę"
craft: "Stwórz"
enchantItem: "Zaklnij <item> z <enchantment>"
catchFish: "Złap rybę"
kill: "Zabij"
killAtLocation: "Zabij <mob> w <location>"
killPlayer: "Zabij gracza"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Coloque o ID do NPC, <clear>, <cancel>"
questEditorEnterBlockStart: "Botão Direito no bloco para usa-lo como ponto de partida, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Digite o nome do Evento, <clear>, <cancel>"
questRequiredNoneSet: "Necessário, Nenhum ajuste"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Defina a Região"
questWGNotInstalled: "WorldGuard não está instalado"
questWGPrompt: "Digite a região do WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Editar Stage"
stageEditorNewStage: "Adicionar nova etapa"
stageEditorStages: "Estágios"
stageEditorStage: "Estágio"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Quebrar Blocos"
stageEditorDamageBlocks: "Dano Blocos"
stageEditorPlaceBlocks: "Colocar Blocos"
stageEditorUseBlocks: "Utilize Blocos"
stageEditorCutBlocks: "Corte de Blocos"
stageEditorCatchFish: "Pegue um Peixe"
stageEditorFish: "peixe"
stageEditorKillPlayers: "Matar jogadores"
stageEditorPlayers: "jogadores"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Encantar itens"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Entregar Itens"
stageEditorTalkToNPCs: "Falar com NPCs"
stageEditorKillNPCs: "Matar NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Matar Mobs"
stageEditorCatchFish: "Pegue um Peixe"
stageEditorFish: "peixe"
stageEditorReachLocs: "Alcançar locais"
stageEditorReachRadii1: "Chegar no prazo"
stageEditorReachRadii2: "blocos de"
stageEditorTameMobs: "Domar Mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Matar jogadores"
stageEditorPlayers: "jogadores"
stageEditorEvents: "Eventos"
stageEditorStageEvents: "Palco de eventos"
stageEditorStartEvent: "Evento de início"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Definir quantidades de cisalhamento"
stageEditorPassword: "Objetivos da senha"
stageEditorAddPasswordDisplay: "Adicionar exibição de senha"
stageEditorAddPasswordPhrases: "Adicione a(s) frase(s) senha(s)"
stageEditorNoPasswordDisplays: "Nenhuma senha exibe o conjunto"
stageEditorObjectiveOverride: "Substituição de exibição objetiva"
stageEditorCustom: "Objetivos Personalizados"
stageEditorNoModules: "Sem módulo carregado"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Adicionar item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "Você precisa selecionar um bloco primeiro."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "A lista de nomes de bloco e a lista de valores não são do mesmo tamanho!"
stageEditorEnchantmentNotSameSize: "A lista de encantamentos, a lista de códigos de itens e a lista de quantias de encantos não são do mesmo tamanho!"
stageEditorDeliveriesNotSameSize: "A lista de itens e a lista de NPCs não são iguais em tamanho!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "Ocorreu um erro ao gravar."
eventEditorDeleted: "Quest deletada! Quests e Eventos foram reiniciados."
eventEditorSaved: "Quest deletada! Quests e Eventos foram reiniciados."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Botão-direito do rato sobre um bloco para usar como um ponto inicial, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Introduzir um nome de evento, <clear>, <cancel>"
questRequiredNoneSet: "Nenhum ajuste é necessário"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Definir Região"
questWGNotInstalled: "WorldGuard não está instalado"
questWGPrompt: "Insira a região do WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Editar Estágio"
stageEditorNewStage: "Adicionar novo estágio"
stageEditorStages: "Estágios"
stageEditorStage: "Estágio"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Quebrar blocos"
stageEditorDamageBlocks: "Danificar blocos"
stageEditorPlaceBlocks: "Colocar blocos"
stageEditorUseBlocks: "Usar blocos"
stageEditorCutBlocks: "Cortar blocos"
stageEditorCatchFish: "Apanhar peixe"
stageEditorFish: "peixe"
stageEditorKillPlayers: "Matar jogadores"
stageEditorPlayers: "jogadores"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Encantar itens"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Integrar Itens"
stageEditorTalkToNPCs: "Falar com NPCs"
stageEditorKillNPCs: "Matar NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Matar mobs"
stageEditorCatchFish: "Apanhar peixe"
stageEditorFish: "peixe"
stageEditorReachLocs: "Alcançar localizações"
stageEditorReachRadii1: "Pesquisar em"
stageEditorReachRadii2: "blocos de"
stageEditorTameMobs: "Domar mobs"
stageEditorShearSheep: "Tosquiar Ovelhas"
stageEditorKillPlayers: "Matar jogadores"
stageEditorPlayers: "jogadores"
stageEditorEvents: "Eventos"
stageEditorStageEvents: "Deposito de Eventos"
stageEditorStartEvent: "Começar Evento"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Definir quantidade de esquiar"
stageEditorPassword: "Objetivos de senha"
stageEditorAddPasswordDisplay: "Adicionar exibição de senha"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Objetivos personalizados"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Adicionar item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "não é um nome de bloco válido!"
stageEditorInvalidEnchantment: "não é um nome de encantamento válido!"
stageEditorInvalidNPC: "não é um ID de NPC válido!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "A lista dos nomes dos blocos e a lista das quantidades não são do mesmo tamanho!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Dano"
place: "Lugar"
use: "Usar"
cut: "Cortar"
catchFish: "Apanhar Peixe"
craft: "Craft"
enchantItem: "Encantar <item> com <enchantment>"
catchFish: "Apanhar Peixe"
kill: "Matar"
killAtLocation: "Matar <mob> em <location>"
killPlayer: "Matar um jogador"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Introduceţi ID-ul de NPC, <clear>, <cancel>"
questEditorEnterBlockStart: "Faceţi clic dreapta pe un bloc de a folosi ca un punct de pornire, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Introduceţi un nume de eveniment, <clear>, <cancel>"
questRequiredNoneSet: "Necesare, nici unul setat"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set regiune"
questWGNotInstalled: "WorldGuard neinstalat"
questWGPrompt: "Introduceţi regiune WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Editează stagiul"
stageEditorNewStage: "Adaugă stagiu nou"
stageEditorStages: "Stagii"
stageEditorStage: "Stagiu"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Sparge blocuri"
stageEditorDamageBlocks: "Lovește blocuri"
stageEditorPlaceBlocks: "Pune blocuri"
stageEditorUseBlocks: "Folosește blocuri"
stageEditorCutBlocks: "Taie blocuri"
stageEditorCatchFish: "Prinde pește"
stageEditorFish: "pește"
stageEditorKillPlayers: "Omoară jucători"
stageEditorPlayers: "jucători"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Bonusează obiecte"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Trimite obiecte"
stageEditorTalkToNPCs: "Vorbește cu NPC-urile"
stageEditorKillNPCs: "Omoară NPC-urile"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Omoară entitățile"
stageEditorCatchFish: "Prinde pește"
stageEditorFish: "pește"
stageEditorReachLocs: "Ajungi la locațiile"
stageEditorReachRadii1: "Ajunge în"
stageEditorReachRadii2: "blocuri de"
stageEditorTameMobs: "Îmblânzește entitățile"
stageEditorShearSheep: "Taie lâna oilor"
stageEditorKillPlayers: "Omoară jucători"
stageEditorPlayers: "jucători"
stageEditorEvents: "Evenimente"
stageEditorStageEvents: "Stagiul Evenimentelor"
stageEditorStartEvent: "Pornește Evenimentul"
@ -141,46 +152,45 @@ stageEditorChatEventsCleared: "Chat Events cleared."
stageEditorCommandEvents: "Command Events"
stageEditorCommandTrigger: "Command Trigger"
stageEditorCommandEventsCleared: "Command Events cleared."
stageEditorTriggeredBy: "Triggered by"
stageEditorTriggeredBy: "Declanşate de"
stageEditorDeathEvent: "Death Event"
stageEditorDeathEventCleared: "Death Event cleared."
stageEditorDisconnectEvent: "Disconnect Event"
stageEditorDisconnectEventCleared: "Disconnect Event cleared."
stageEditorDelayMessage: "Delay message"
stageEditorDisconnectEvent: "Event de deconectare"
stageEditorDisconnectEventCleared: "Event de deconectare terminat."
stageEditorDelayMessage: "Mesaj de întârziere"
stageEditorDenizenScript: "Denizen script"
stageEditorStartMessage: "Start message"
stageEditorCompleteMessage: "Complete message"
stageEditorDelete: "Delete Stage"
stageEditorSetBlockNames: "Set block names"
stageEditorSetBlockAmounts: "Set block amounts"
stageEditorSetBlockDurability: "Set block durability"
stageEditorSetDamageAmounts: "Set damage amounts"
stageEditorStartMessage: "Mesaj de pornire"
stageEditorCompleteMessage: "Mesaj de completare"
stageEditorDelete: "Şterge scenă"
stageEditorSetBlockNames: "Setaţi numele blocul-lui"
stageEditorSetBlockAmounts: "Setaţi numarul de bloc-uri"
stageEditorSetBlockDurability: "Setaţi durabilitatea blocul-lui"
stageEditorSetDamageAmounts: "Setaţi damage-ul"
stageEditorSetPlaceAmounts: "Set place amounts"
stageEditorSetUseAmounts: "Set use amounts"
stageEditorSetCutAmounts: "Set cut amounts"
stageEditorSetKillAmounts: "Set kill amounts"
stageEditorSetUseAmounts: "Setaţi numarul de utilizari"
stageEditorSetCutAmounts: "Setaţi numarul de taieri"
stageEditorSetKillAmounts: "Setaţi numarul de ucideri"
stageEditorSetEnchantAmounts: "Set enchant amounts"
stageEditorSetMobAmounts: "Set mob amounts"
stageEditorSetEnchantments: "Set enchantments"
stageEditorSetItemNames: "Set item names"
stageEditorSetKillIds: "Set NPC IDs"
stageEditorSetMobTypes: "Set mob types"
stageEditorSetKillLocations: "Set kill locations"
stageEditorSetEnchantments: "Setaţi enchantment-ul"
stageEditorSetItemNames: "Setaţi numele obiectul-lui"
stageEditorSetKillIds: "Setaţi ID-urile de la NPC"
stageEditorSetMobTypes: "Setaţi tipul de mob"
stageEditorSetKillLocations: "Setaţi pozitia uciderii"
stageEditorSetKillLocationRadii: "Set kill location radii"
stageEditorSetKillLocationNames: "Set kill location names"
stageEditorSetLocations: "Set locations"
stageEditorSetKillLocationNames: "Setaţi numele locatii de ucidere"
stageEditorSetLocations: "Setaţi locatiile"
stageEditorSetLocationRadii: "Set location radii"
stageEditorSetLocationNames: "Set location names"
stageEditorSetLocationNames: "Setaţi numele locatiei"
stageEditorSetTameAmounts: "Set tame amounts"
stageEditorSetShearColors: "Set sheep colors"
stageEditorSetShearAmounts: "Set shear amounts"
stageEditorSetShearColors: "Setaţi culoarea oii"
stageEditorSetShearAmounts: "Setaţi numarul de foarfece"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
stageEditorCustom: "Obiective personalizate"
stageEditorNoModules: "Nici un modul incarcat"
stageEditorModuleNotFound: "Custom objective module not found."
stageEditorCustomPrompt: "Enter the name of a custom objective to add, <clear>, <cancel>"
stageEditorCustomAlreadyAdded: "That custom objective has already been added!"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Введите ID нпс'а, <clear>, <cancel>"
questEditorEnterBlockStart: "Щелкните правой кнопкой мыши на блок, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Введите имя события, <clear>, <cancel>"
questRequiredNoneSet: "Требуется, не задано"
questPartiesCreate: "Игроки, добавил к этой партии может выполнять квесты вместе!"
questPartiesDelete: "Поиски партия была распущена."
questPartiesInvite: "<player> теперь можно выполнять квесты с вами!"
questPartiesJoin: "Теперь можно выполнять квесты с <player>."
questPartiesKicked: "<player> не может более выполнять квесты с вами."
questPartiesLeave: "Вы больше не может выполнять квесты с <player>."
questWGSetRegion: "Задать регион"
questWGNotInstalled: "WorldGuard не установлен"
questWGPrompt: "Введите WorldGuard регион, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Редактировать Этап"
stageEditorNewStage: "Добавить новый Этап"
stageEditorStages: "Этапы"
stageEditorStage: "Этап"
stageEditorBlocks: "Блоки"
stageEditorBreakBlocks: "Сломать Блоки"
stageEditorDamageBlocks: "Повредить Блоки"
stageEditorPlaceBlocks: "Устанавить Блоки"
stageEditorUseBlocks: "Использовать Блоки"
stageEditorCutBlocks: "Сломать Блоки"
stageEditorCatchFish: "Поймать Рыбу"
stageEditorFish: "рыба"
stageEditorKillPlayers: "Убить Игроков"
stageEditorPlayers: "игроки"
stageEditorItems: "Предметы"
stageEditorCraftItems: "Создайте Предметы"
stageEditorEnchantItems: "Зачаровать Предметы"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Доставить Предметы"
stageEditorTalkToNPCs: "Поговорить с NPC"
stageEditorKillNPCs: "Убить NPC"
stageEditorMobs: "Мобы"
stageEditorKillMobs: "Убить Мобов"
stageEditorCatchFish: "Поймать Рыбу"
stageEditorFish: "рыба"
stageEditorReachLocs: "Добраться до места"
stageEditorReachRadii1: "Достичь в течение"
stageEditorReachRadii2: "блокаов"
stageEditorTameMobs: "Приручить Мобов"
stageEditorShearSheep: "Обстричь Овец"
stageEditorKillPlayers: "Убить Игроков"
stageEditorPlayers: "игроки"
stageEditorEvents: "События"
stageEditorStageEvents: "Этапы Событий"
stageEditorStartEvent: "Начальное Событие"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Задать количество стрижек"
stageEditorPassword: "Задачи пароля"
stageEditorAddPasswordDisplay: "Добавление отображения пароля"
stageEditorAddPasswordPhrases: "Добавить кодовуюые фразу(ы)"
stageEditorNoPasswordDisplays: "Не установлено отображение паролей"
stageEditorObjectiveOverride: "Объективное отображение переопределение"
stageEditorCustom: "Пользовательские Цели"
stageEditorNoModules: "Нет загруженных модулей"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Переопределение отобр
stageEditorDeliveryAddItem: "Добавить предмет"
stageEditorDeliveryNPCs: "Установить NPC ID"
stageEditorDeliveryMessages: "Установить сообщения доставки"
stageEditorContainsDuplicates: "Список содержит дубликаты!"
stageEditorInvalidBlockName: "некорректное название блока!"
stageEditorInvalidEnchantment: "некорректное название зачарования!"
stageEditorInvalidNPC: "неправильное ID Нпс!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Вы должны установить места
stageEditorNoBlockSelected: "Сначала вы должны выбрать блок."
stageEditorNoColors: "Сначала вы должны выбрать цвет!"
stageEditorNoLocations: "Сначала вы должны установить местоположение!"
stageEditorNoEnchantmentsSet: "Не выбраны зачарования"
stageEditorNoItemsSet: "Предметы не установлены"
stageEditorNoMobTypesSet: "Не установлены типы мобов"
stageEditorNoLocationsSet: "Местоположение не указано"
stageEditorNoColorsSet: "Цвет не установлен"
stageEditorListNotSameSize: "Список имен блоков и список сумм не имеют одинакового размера!"
stageEditorEnchantmentNotSameSize: "Список чар, идентификатор элемента списка и зачаровать перечня, не такого же размера!"
stageEditorDeliveriesNotSameSize: "Список элементов и список NPC не равны по размеру!"
@ -651,8 +655,9 @@ damage: "Нанести урон"
place: "Разместить"
use: "Использовать"
cut: "Порезать"
catchFish: "Поймать рыбу"
craft: "Создайте"
enchantItem: "Зачаровать <item> с чарами: <enchantment>"
catchFish: "Поймать рыбу"
kill: "Убийство"
killAtLocation: "Убить <mob> в локации: <location>"
killPlayer: "Убить игрока"

View File

@ -0,0 +1,864 @@
---
COMMAND_LIST: "list"
COMMAND_LIST_HELP: "<command> [page] - List available quests"
COMMAND_TAKE: "take"
COMMAND_TAKE_HELP: "<command> [quest] - Accept a quest via command"
COMMAND_TAKE_USAGE: "Usage: /quests take [quest]"
COMMAND_QUIT: "quit"
COMMAND_QUIT_HELP: "<command> [quest] - Quit a current quest"
COMMAND_JOURNAL: "journal"
COMMAND_JOURNAL_HELP: "<command> - View/Put away your Quest Journal"
COMMAND_EDITOR: "editor"
COMMAND_EDITOR_HELP: "<command> - Create/Edit Quests"
COMMAND_EVENTS_EDITOR: "events"
COMMAND_EVENTS_EDITOR_HELP: "<command> - Create/Edit Events"
COMMAND_STATS: "stats"
COMMAND_STATS_HELP: "<command> - View quest statistics"
COMMAND_TOP: "top"
COMMAND_TOP_HELP: "<command> [number] - View plugin leaderboards"
COMMAND_TOP_USAGE: "Usage: /quests top [number]"
COMMAND_INFO: "info"
COMMAND_INFO_HELP: "<command> - View plugin information"
COMMAND_QUEST_HELP: "- View current quest objectives"
COMMAND_QUESTINFO_HELP: "[quest] - View information about a quest"
COMMAND_QUESTADMIN_HELP: "- Display administrator help"
COMMAND_QUESTADMIN_STATS: "stats"
COMMAND_QUESTADMIN_STATS_HELP: "<command> [player] - View quest statistics of a player"
COMMAND_QUESTADMIN_GIVE: "give"
COMMAND_QUESTADMIN_GIVE_HELP: "<command> [player] [quest] - Force a player to take a quest"
COMMAND_QUESTADMIN_QUIT: "quit"
COMMAND_QUESTADMIN_QUIT_HELP: "<command> [player] [quest] - Force a player to quit a quest"
COMMAND_QUESTADMIN_POINTS: "points"
COMMAND_QUESTADMIN_POINTS_HELP: "<command> [player] [amount] - Set a player's Quest Points"
COMMAND_QUESTADMIN_TAKEPOINTS: "takepoints"
COMMAND_QUESTADMIN_TAKEPOINTS_HELP: "<command> [player] [amount] - Take away a player's Quest Points"
COMMAND_QUESTADMIN_GIVEPOINTS: "givepoints"
COMMAND_QUESTADMIN_GIVEPOINTS_HELP: "<command> [player] [amount] - Add to a player's Quest Points"
COMMAND_QUESTADMIN_POINTSALL: "pointsall"
COMMAND_QUESTADMIN_POINTSALL_HELP: "<command> [amount] - Set ALL players' Quest Points"
COMMAND_QUESTADMIN_FINISH: "finish"
COMMAND_QUESTADMIN_FINISH_HELP: "<command> [player] [quest] - Force a player to complete a quest"
COMMAND_QUESTADMIN_NEXTSTAGE: "nextstage"
COMMAND_QUESTADMIN_NEXTSTAGE_HELP: "<command> [player] [quest] - Force a player to complete current stage"
COMMAND_QUESTADMIN_SETSTAGE: "setstage"
COMMAND_QUESTADMIN_SETSTAGE_HELP: "<command> [player] [quest] [stage] - Set the current stage for a player"
COMMAND_QUESTADMIN_SETSTAGE_USAGE: 'Usage: /questadmin setstage [player] [quest] [stage]'
COMMAND_QUESTADMIN_RESET: "reset"
COMMAND_QUESTADMIN_RESET_HELP: "<command> [player] - Clear all Quests data of a player"
COMMAND_QUESTADMIN_REMOVE: "remove"
COMMAND_QUESTADMIN_REMOVE_HELP: "<command> [player] [quest] - Remove a completed quest from a player"
COMMAND_QUESTADMIN_TOGGLEGUI: "togglegui"
COMMAND_QUESTADMIN_TOGGLEGUI_HELP: "<command> [npc id] - Toggle GUI Quest Display on an NPC"
COMMAND_QUESTADMIN_RELOAD: "reload"
COMMAND_QUESTADMIN_RELOAD_HELP: "<command> - Safely reload the plugin"
questEditorHeader: "Create Quest"
questEditorCreate: "Create new Quest"
questEditorEdit: "Edit a Quest"
questEditorDelete: "Delete Quest"
questEditorName: "Set name"
questEditorAskMessage: "Set ask message"
questEditorFinishMessage: "Set finish message"
questEditorNPCStart: "Set NPC start"
questEditorBlockStart: "Set Block start"
questEditorInitialEvent: "Set initial Event"
questEditorSetGUI: "Set GUI Item display"
questEditorReqs: "Edit Requirements"
questEditorPln: "Edit Planner"
questEditorStages: "Edit Stages"
questEditorRews: "Edit Rewards"
questEditorEnterQuestName: "Enter Quest name (<cancel>)"
questEditorEditEnterQuestName: "Enter Quest name to edit (<cancel>)"
questEditorEnterAskMessage: "Enter ask message (<cancel>)"
questEditorEnterFinishMessage: "Enter finish message (<cancel>)"
questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
questWGInvalidRegion: "<region> is not a valid WorldGuard region!"
questWGRegionCleared: "Quest region cleared."
questCitNotInstalled: "Citizens not installed"
questDenNotInstalled: "Denizen not installed"
questGUIError: "Error: That item is already being used as the GUI Display for the Quest <quest>."
questCurrentItem: "Current item:"
questSetItem: "Set Item"
questClearItem: "Clear Item"
questGUICleared: "Quest GUI Item Display cleared."
questDeleted: "Quest deleted! Quests and Events have been reloaded."
questEditorNameExists: "A Quest with that name already exists!"
questEditorBeingEdited: "Someone is creating/editing a Quest with that name!"
questEditorInvalidQuestName: "Name may not contain periods or commas!"
questEditorInvalidEventName: "is not a valid event name!"
questEditorInvalidNPC: "No NPC exists with that id!"
questEditorNoStartBlockSelected: "You must select a block first."
questEditorPositiveAmount: "Amount must be a positive number."
questEditorQuestAsRequirement1: "The following Quests have"
questEditorQuestAsRequirement2: "as a requirement:"
questEditorQuestAsRequirement3: "You must modify these Quests so that they do not use it before deleting it."
questEditorQuestNotFound: "Quest not found!"
questEditorEventCleared: "Initial Event cleared."
questEditorSave: "Finish and save"
questEditorNeedAskMessage: "You must set an ask message!"
questEditorNeedFinishMessage: "You must set a finish message!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
stageEditorStartEventCleared: "Start Event cleared."
stageEditorFinishEvent: "Finish Event"
stageEditorFinishEventCleared: "Finish Event cleared."
stageEditorChatEvents: "Chat Events"
stageEditorChatTrigger: "Chat Trigger"
stageEditorChatEventsCleared: "Chat Events cleared."
stageEditorCommandEvents: "Command Events"
stageEditorCommandTrigger: "Command Trigger"
stageEditorCommandEventsCleared: "Command Events cleared."
stageEditorTriggeredBy: "Triggered by"
stageEditorDeathEvent: "Death Event"
stageEditorDeathEventCleared: "Death Event cleared."
stageEditorDisconnectEvent: "Disconnect Event"
stageEditorDisconnectEventCleared: "Disconnect Event cleared."
stageEditorDelayMessage: "Delay message"
stageEditorDenizenScript: "Denizen script"
stageEditorStartMessage: "Start message"
stageEditorCompleteMessage: "Complete message"
stageEditorDelete: "Delete Stage"
stageEditorSetBlockNames: "Set block names"
stageEditorSetBlockAmounts: "Set block amounts"
stageEditorSetBlockDurability: "Set block durability"
stageEditorSetDamageAmounts: "Set damage amounts"
stageEditorSetPlaceAmounts: "Set place amounts"
stageEditorSetUseAmounts: "Set use amounts"
stageEditorSetCutAmounts: "Set cut amounts"
stageEditorSetKillAmounts: "Set kill amounts"
stageEditorSetEnchantAmounts: "Set enchant amounts"
stageEditorSetMobAmounts: "Set mob amounts"
stageEditorSetEnchantments: "Set enchantments"
stageEditorSetItemNames: "Set item names"
stageEditorSetKillIds: "Set NPC IDs"
stageEditorSetMobTypes: "Set mob types"
stageEditorSetKillLocations: "Set kill locations"
stageEditorSetKillLocationRadii: "Set kill location radii"
stageEditorSetKillLocationNames: "Set kill location names"
stageEditorSetLocations: "Set locations"
stageEditorSetLocationRadii: "Set location radii"
stageEditorSetLocationNames: "Set location names"
stageEditorSetTameAmounts: "Set tame amounts"
stageEditorSetShearColors: "Set sheep colors"
stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
stageEditorModuleNotFound: "Custom objective module not found."
stageEditorCustomPrompt: "Enter the name of a custom objective to add, <clear>, <cancel>"
stageEditorCustomAlreadyAdded: "That custom objective has already been added!"
stageEditorCustomCleared: "Custom objectives cleared."
stageEditorCustomDataPrompt: "Enter value for <data>:"
stageEditorEnterBlockNames: "Enter block names, <space>, <cancel>"
stageEditorBreakBlocksPrompt: "Enter break amounts (numbers), <space>, <cancel>"
stageEditorDamageBlocksPrompt: "Enter damage amounts (numbers), <space>, <cancel>"
stageEditorPlaceBlocksPrompt: "Enter place amounts (numbers), <space>, <cancel>"
stageEditorUseBlocksPrompt: "Enter use amounts (numbers), <space>, <cancel>"
stageEditorCutBlocksPrompt: "Enter cut amounts (numbers), <space>, <cancel>"
stageEditorEnterBlockDurability: "Enter block durability (numbers), <space>, <cancel>"
stageEditorCatchFishPrompt: "Enter number of fish to catch, <clear>, <cancel>"
stageEditorKillPlayerPrompt: "Enter number of players to kill, <clear>, <cancel>"
stageEditorEnchantTypePrompt: "Enter enchantment names, <semicolon>, <cancel>"
stageEditorEnchantAmountsPrompt: "Enter enchant amounts (numbers), <space>, <cancel>"
stageEditorItemNamesPrompt: "Enter item names, <space>, <cancel>"
stageEditorNPCPrompt: "Enter NPC IDs, <space>, <cancel>"
stageEditorNPCToTalkToPrompt: "Enter NPC IDs, <space>, <clear>, <cancel>"
stageEditorDeliveryMessagesPrompt: "Enter delivery messages, <semicolon>, <cancel>"
stageEditorKillNPCsPrompt: "Enter kill amounts (numbers), <space>, <cancel>"
stageEditorMobsPrompt: "Enter mob names, <space>, <cancel>"
stageEditorMobAmountsPrompt: "Enter mob amounts, <space>, <cancel>"
stageEditorMobLocationPrompt: "Right-click on a block to select it, <add>, <cancel>"
stageEditorMobLocationRadiiPrompt: "Enter kill location radii (number of blocks), <space>, <cancel>"
stageEditorMobLocationNamesPrompt: "Enter location names, <semicolon>, <cancel>"
stageEditorReachLocationPrompt: "Right-click on a block to select it, <add>, <cancel>"
stageEditorReachLocationRadiiPrompt: "Enter reach location radii (number of blocks), <space>, <cancel>"
stageEditorReachLocationNamesPrompt: "Enter location names, <semicolon>, <cancel>"
stageEditorTameAmountsPrompt: "Enter tame amounts, <space>, <cancel>"
stageEditorShearColorsPrompt: "Enter sheep colors, <space>, <cancel>"
stageEditorShearAmountsPrompt: "Enter shear amounts, <space>, <cancel>"
stageEditorEventsPrompt: "Enter an event name, <clear>, <cancel>"
stageEditorChatEventsPrompt: "Enter an event name to add, <clear>, <cancel>"
stageEditorChatEventsTriggerPrompt: "%yellow%Enter a chat trigger for%aqua% <event>%yellow% <cancel>"
stageEditorCommandEventsPrompt: "Enter an event name to add, <clear>, <cancel>"
stageEditorCommandEventsTriggerPrompt: "%yellow%Enter a command trigger for%aqua% <event>%yellow% <cancel>"
stageEditorDelayPrompt: "Enter time (in seconds), <clear>, <cancel>"
stageEditorDelayMessagePrompt: "Enter delay message, <clear>, <cancel>"
stageEditorScriptPrompt: "Enter script name, <clear>, <cancel>"
stageEditorStartMessagePrompt: "Enter start message, <clear>, <cancel>"
stageEditorCompleteMessagePrompt: "Enter complete message, <clear>, <cancel>"
stageEditorPasswordDisplayPrompt: "Enter password display, <cancel>"
stageEditorPasswordDisplayHint: "(This is the text that will be displayed to the player as their objective)"
stageEditorPasswordPhrasePrompt: "Enter password phrases, <semicolon>, <cancel>"
stageEditorPasswordPhraseHint: "(This is the text that a player must enter to complete the objective)"
stageEditorObjectiveOverridePrompt: "Enter objective display override, <clear>, <cancel>"
stageEditorObjectiveOverrideHint: "(This override will display your own text as the objective)"
stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
stageEditorInvalidMob: "is not a valid mob name!"
stageEditorInvalidItemName: "is not a valid item name!"
stageEditorInvalidNumber: "is not a number!"
stageEditorInvalidDye: "is not a valid dye color!"
stageEditorInvalidEvent: "is not a valid event name!"
stageEditorDuplicateEvent: "Event is already in the list!"
stageEditorInvalidScript: "Denizen script not found!"
stageEditorNoCitizens: "Citizens is not installed!"
stageEditorNoDenizen: "Denizen is not installed!"
stageEditorPositiveAmount: "You must enter a positive number!"
stageEditorNotListofNumbers: "is not a list of numbers!"
stageEditorNoDelaySet: "You must set a delay first!"
stageEditorNoBlockNames: "You must set block names first!"
stageEditorNoEnchantments: "You must set enchantments first!"
stageEditorNoItems: "You must add items first!"
stageEditorNoDeliveryMessage: "You must set at least one delivery message!"
stageEditorNoNPCs: "You must set NPC IDs first!"
stageEditorNoMobTypes: "You must set mob types first!"
stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
stageEditorNPCKillsNotSameSize: "The NPC IDs list and the kill amounts list are not the same size!"
stageEditorAllListsNotSameSize: "All of your lists are not the same size!"
stageEditorMobTypesNotSameSize: "The mob types list and the mob amounts list are not the same size!"
stageEditorTameMobsNotSameSize: "The mob types list and the tame amounts list are not the same size!"
stageEditorShearNotSameSize: "The sheep colors list and the shear amounts list are not the same size!"
stageEditorMustSetPasswordDisplays: "You must add at least one password display first!"
stageEditorAddPasswordCleared: "Password Objectives cleared."
stageEditorPasswordNotSameSize: "The password display and password phrase lists are not the same size!"
stageEditorListContainsDuplicates: "List contains duplicates!"
stageEditorDelayCleared: "Delay cleared."
stageEditorDelayMessageCleared: "Delay message cleared."
stageEditorDenizenCleared: "Denizen script cleared."
stageEditorBreakBlocksCleared: "Break blocks objective cleared."
stageEditorDamageBlocksCleared: "Damage blocks objective cleared."
stageEditorPlaceBlocksCleared: "Place blocks objective cleared."
stageEditorUseBlocksCleared: "Use blocks objective cleared."
stageEditorCutBlocksCleared: "Cut blocks objective cleared."
stageEditorEnchantmentsCleared: "Enchantment objective cleared."
stageEditorDeliveriesCleared: "Delivery objective cleared."
stageEditorReachLocationsCleared: "Reach Locations objective cleared."
stageEditorKillNPCsCleared: "Kill NPCs objective cleared."
stageEditorKillMobsCleared: "Kill Mobs objective cleared."
stageEditorTameCleared: "Tame Mobs objective cleared."
stageEditorShearCleared: "Shear Sheep objective cleared."
stageEditorStartMessageCleared: "Start message cleared."
stageEditorCompleteMessageCleared: "Complete message cleared."
stageEditorConfirmStageDelete: "Are you sure you want to delete this stage?"
stageEditorConfirmStageNote: "Any Stages after will be shifted back one spot"
stageEditorDeleteSucces: "Stage deleted successfully."
stageEditorEnchantments: "Enchantments"
stageEditorNPCNote: 'Note: You may specify the name of the NPC with <npc>'
stageEditorOptional: "Optional"
stageEditorColors: "Sheep Colors"
allListsNotSameSize: "All of your lists are not the same size!"
eventEditorCreate: "Create new Event"
eventEditorEdit: "Edit an Event"
eventEditorDelete: "Delete an Event"
eventEditorNoneToEdit: "No Events currently exist to be edited!"
eventEditorNoneToDelete: "No Events currently exist to be deleted!"
eventEditorNotFound: "Event not found!"
eventEditorExists: "Event already exists!"
eventEditorSomeone: "Someone is already creating or editing an Event with that name!"
eventEditorAlpha: "Name must be alphanumeric!"
eventEditorErrorReadingFile: "Error reading Events file."
eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
eventEditorMustModifyQuests: "You must modify these Quests first!"
eventEditorListSizeMismatch: "The lists are not the same size!"
eventEditorListDuplicates: "List contains duplicates!"
eventEditorNotANumberList: "Input was not a list of numbers!"
eventEditorInvalidEntry: "Invalid entry"
eventEditorGiveItemsTitle: "- Give Items -"
eventEditorEffectsTitle: "- Effects -"
eventEditorStormTitle: "- Event Storm -"
eventEditorThunderTitle: "- Event Thunder -"
eventEditorMobSpawnsTitle: "- Event Mob Spawns -"
eventEditorMobsTitle: "- Mobs -"
eventEditorAddMobTypesTitle: "- Add Mob -"
eventEditorPotionEffectsTitle: "- Event Potion Effects -"
eventEditorPotionTypesTitle: "- Event Potion Types -"
eventEditorWorldsTitle: "- Worlds -"
eventEditorSetName: "Set name"
eventEditorSetMessage: "Set message"
eventEditorClearInv: "Clear player inventory"
eventEditorFailQuest: "Fail the quest"
eventEditorSetExplosions: "Set explosion locations"
eventEditorSetLightning: "Set lightning strike locations"
eventEditorSetEffects: "Set effects"
eventEditorSetStorm: "Set storm"
eventEditorSetThunder: "Set thunder"
eventEditorSetMobSpawns: "Set mob spawns"
eventEditorSetPotionEffects: "Set potion effects"
eventEditorSetHunger: "Set player hunger level"
eventEditorSetSaturation: "Set player saturation level"
eventEditorSetHealth: "Set player health level"
eventEditorEnterTimerSeconds: "Set number of seconds left before the quest fails (use cancel-timer event to cancel timers)"
eventEditorSetTimer: "Set time to fail quest"
eventEditorCancelTimer: "Cancel the quest timer"
eventEditorSetTeleport: "Set player teleport location"
eventEditorSetCommands: "Set commands to execute"
eventEditorItems: "Event Items"
eventEditorSetItems: "Give items"
eventEditorItemsCleared: "Event items cleared."
eventEditorAddItem: "Add item"
eventEditorSetItemNames: "Set item names"
eventEditorSetItemAmounts: "Set item amounts"
eventEditorNoNames: "No names set"
eventEditorMustSetNames: "You must set item names first!"
eventEditorInvalidName: "is not a valid item name!"
eventEditorNotANumber: "is not a number!"
eventEditorStorm: "Event Storm"
eventEditorSetWorld: "Set world"
eventEditorSetDuration: "Set duration"
eventEditorNoWorld: "(No world set)"
eventEditorSetWorldFirst: "You must set a world first!"
eventEditorInvalidWorld: "is not a valid world name!"
eventEditorMustSetStormDuration: "You must set a storm duration!"
eventEditorStormCleared: "Storm data cleared."
eventEditorEnterStormWorld: "Enter a world name for the storm to occur in, <cancel>"
eventEditorEnterDuration: "Enter duration (in seconds)"
eventEditorThunder: "Event Thunder"
eventEditorMustSetThunderDuration: "You must set a thunder duration!"
eventEditorThunderCleared: "Thunder data cleared."
eventEditorEnterThunderWorld: "Enter a world name for the thunder to occur in, <cancel>"
eventEditorEffects: "Event Effects"
eventEditorAddEffect: "Add effect"
eventEditorAddEffectLocation: "Add effect location"
eventEditorNoEffects: "No effects set"
eventEditorMustAddEffects: "You must add effects first!"
eventEditorInvalidEffect: "is not a valid effect name!"
eventEditorEffectsCleared: "Event effects cleared."
eventEditorEffectLocationPrompt: "Right-click on a block to play an effect at, <add>, <cancel>"
eventEditorMobSpawns: "Event Mob Spawns"
eventEditorAddMobTypes: "Add mob"
eventEditorMustSetMobTypesFirst: "You must set the mob type first!"
eventEditorSetMobAmounts: "Set mob amount"
eventEditorMustSetMobAmountsFirst: "You must set mob amount first!"
eventEditorAddSpawnLocation: "Set spawn location"
eventEditorMobSpawnsCleared: "Mob spawns cleared."
eventEditorMustSetMobLocationFirst: "You must set a spawn-location first!"
eventEditorInvalidMob: "is not a valid mob name!"
eventEditorSetMobName: "Set custom name for mob"
eventEditorSetMobType: "Set mob type"
eventEditorSetMobItemInHand: "Set item in hand"
eventEditorSetMobItemInHandDrop: "Set drop chance of item in hand"
eventEditorSetMobBoots: "Set boots"
eventEditorSetMobBootsDrop: "Set drop chance of boots"
eventEditorSetMobLeggings: "Set leggings"
eventEditorSetMobLeggingsDrop: "Set drop chance of leggings"
eventEditorSetMobChestPlate: "Set chest plate"
eventEditorSetMobChestPlateDrop: "Set drop chance of chest plate"
eventEditorSetMobHelmet: "Set helmet"
eventEditorSetMobHelmetDrop: "Set drop chance of helmet"
eventEditorSetMobSpawnAmount: "Set the amount of mobs to spawn"
eventEditorSetDropChance: "Set the drop chance"
eventEditorPotionEffects: "Event Potion Effects"
eventEditorSetPotionEffectTypes: "Set potion effect types"
eventEditorMustSetPotionTypesFirst: "You must set potion effect types first!"
eventEditorSetPotionDurations: "Set potion effect durations"
eventEditorMustSetPotionDurationsFirst: "You must set potion effect durations first!"
eventEditorMustSetPotionTypesAndDurationsFirst: "You must set potion effect types and durations first!"
eventEditorSetPotionMagnitudes: "Set potion effect magnitudes"
eventEditorPotionsCleared: "Potion effects cleared."
eventEditorInvalidPotionType: "is not a valid potion effect type!"
eventEditorLightningPrompt: "Right-click on a block to spawn a lightning strike at, <add>, <clear>, <cancel>"
eventEditorExplosionPrompt: "Right-click on a block to spawn an explosion at, <add>, <clear>, <cancel>"
eventEditorSelectBlockFirst: "You must select a block first."
eventEditorSetMessagePrompt: "Enter message, <clear>, <cancel>"
eventEditorSetMobTypesPrompt: "Enter mob name, <cancel>"
eventEditorSetMobAmountsPrompt: "Enter mob amount, <cancel>"
eventEditorSetMobNamePrompt: "Enter the name for this mob, <cancel>"
eventEditorSetMobLocationPrompt: "Right-click on a block to select it, <add>, <cancel>"
eventEditorSetPotionEffectsPrompt: "Enter potion effect types, <space>, <cancel>"
eventEditorSetPotionDurationsPrompt: "Enter potion effect durations (in seconds), <space>, <cancel>"
eventEditorSetPotionMagnitudesPrompt: "Enter potion effect magnitudes, <space>, <cancel>"
eventEditorSetHungerPrompt: "Enter hunger level, <clear>"
eventEditorSetSaturationPrompt: "Enter saturation level, <clear>"
eventEditorSetHealthPrompt: "Enter health level, <clear>"
eventEditorSetTeleportPrompt: "Right-click on a block to teleport the player to, <done>, <clear>, <cancel>"
eventEditorCommandsNote: "Note: You may use <player> to refer to the player's name."
eventEditorSetCommandsPrompt: "Enter commands, <semicolon>, <clear>, <cancel>"
reqSetMoney: "Set money requirement"
reqSetQuestPoints: "Set Quest Points requirement"
reqSetItem: "Set item requirements"
reqSetPerms: "Set permission requirements"
reqSetQuest: "Set Quest requirements"
reqSetQuestBlocks: "Set Quest blocks"
reqSetMcMMO: "Set mcMMO requirements"
reqSetHeroes: "Set Heroes requirements"
reqSetCustom: "Set custom requirements"
reqSetFail: "Set fail requirements message"
reqSetSkills: "Set skills"
reqSetSkillAmounts: "Set skill amounts"
reqHeroesSetPrimary: "Set Primary Class"
reqHeroesSetSecondary: "Set Secondary Class"
reqMoneyPrompt: "Enter amount of <money>, <clear>, <cancel>"
reqQuestPointsPrompt: "Enter amount of Quest Points, <clear>, <cancel>"
reqQuestListTitle: "- Quests Available -"
reqQuestPrompt: "Enter a list of Quest names, <semicolon>, <clear>, <cancel>"
reqRemoveItemsPrompt: "Enter a list of true/false values, <space>, <cancel>"
reqPermissionsPrompt: "Enter permission requirements, <space>, <clear>, <cancel>"
reqCustomPrompt: "Enter the name of a custom requirement to add, <clear>, <cancel>"
reqMcMMOPrompt: "Enter mcMMO skills, <space>, <clear>, <cancel>"
reqMcMMOAmountsPrompt: "Enter mcMMO skill amounts, <space>, <clear>, <cancel>"
reqHeroesPrimaryPrompt: "Enter a Heroes Primary Class name, <clear>, <cancel>"
reqHeroesSecondaryPrompt: "Enter a Heroes Secondary Class name, <clear>, <cancel>"
reqFailMessagePrompt: "Enter fail requirements message, <cancel>"
reqAddItem: "Add item"
reqSetRemoveItems: "Set remove items"
reqNoItemsSet: "No items set"
reqNoValuesSet: "No values set"
reqHeroesPrimaryDisplay: "Primary Class:"
reqHeroesSecondaryDisplay: "Secondary Class:"
reqNotAQuestName: "<quest> is not a Quest name!"
reqItemCleared: "Item requirements cleared."
reqListsNotSameSize: "The items list and remove items list are not the same size!"
reqTrueFalseError: '<input> is not a true or false value!%br%Example: true false true true'
reqCustomAlreadyAdded: "That custom requirement has already been added!"
reqCustomNotFound: "Custom requirement module not found."
reqCustomCleared: "Custom requirements cleared."
reqMcMMOError: "<input> is not an mcMMO skill name!"
reqMcMMOCleared: "mcMMO skill requirements cleared."
reqMcMMOAmountsCleared: "mcMMO skill amount requirements cleared."
reqHeroesNotPrimary: "The <class> class is not primary!"
reqHeroesPrimaryCleared: "Heroes Primary Class requirement cleared."
reqHeroesNotSecondary: "The <class> class is not secondary!"
reqHeroesSecondaryCleared: "Heroes Secondary Class requirement cleared."
reqHeroesClassNotFound: "Class not found!"
reqNone: "No requirements set"
reqNotANumber: "<input> is not a number!"
reqMustAddItem: "You must add at least one item first!"
reqNoMessage: "You must set a fail requirements message!"
reqNoMcMMO: "mcMMO not installed"
reqNoHeroes: "Heroes not installed"
plnStart: "Set start date"
plnEnd: "Set end date"
plnRepeat: "Set repeat cycle"
plnCooldown: "Set player cooldown"
plnRepeatPrompt: "Enter amount of time (in seconds), <clear>, <cancel>"
plnCooldownPrompt: "Enter amount of time (in seconds), <clear>, <cancel>"
plnTooEarly: "<quest> will be active in <time>."
plnTooLate: "<quest> was last active <time> ago."
rewSetMoney: "Set money reward"
rewSetQuestPoints: "Set Quest Points reward"
rewSetItems: "Set item rewards"
rewSetExperience: "Set experience reward"
rewSetCommands: "Set command rewards"
rewSetPermission: "Set permission rewards"
rewSetMcMMO: "Set mcMMO skill rewards"
rewSetHeroes: "Set Heroes experience rewards"
rewSetPhat: "Set PhatLoot rewards"
rewSetCustom: "Set custom rewards"
rewSetHeroesClasses: "Set classes"
rewSetHeroesAmounts: "Set experience amounts"
rewMoneyPrompt: "Enter amount of <money>, <clear>, <cancel>"
rewExperiencePrompt: "Enter amount of experience, <clear>, <cancel>"
rewCommandPrompt: "Enter command rewards, <semicolon>, <clear>, <cancel>"
rewCommandPromptHint: 'Note: You may put <player> to specify the player who completed the Quest. e.g. smite <player>'
rewPermissionsPrompt: "Enter permission rewards, <space>, <clear>, <cancel>"
rewQuestPointsPrompt: "Enter amount of Quest Points, <clear>, <cancel>"
rewMcMMOPrompt: "Enter mcMMO skills, <space>, <cancel>"
rewMcMMOPromptHint: "Note: Typing 'All' will give levels to all skills."
rewHeroesClassesPrompt: "Enter Heroes classes, <space>, <cancel>"
rewHeroesExperiencePrompt: "Enter experience amounts (numbers, decimals are allowed), <space>, <cancel>"
rewPhatLootsPrompt: "Enter PhatLoots, <space>, <clear>, <cancel>"
rewCustomRewardPrompt: "Enter the name of a custom reward to add, <clear>, <cancel>"
rewItemsCleared: "Item rewards cleared."
rewNoMcMMOSkills: "No skills set"
rewNoHeroesClasses: "No classes set"
rewSetMcMMOSkillsFirst: "You must set skills first!"
rewMcMMOCleared: "mcMMO rewards cleared."
rewMcMMOListsNotSameSize: "The skills list and skill amounts list are not the same size!"
rewSetHeroesClassesFirst: "You must set classes first!"
rewHeroesCleared: "Heroes rewards cleared."
rewHeroesListsNotSameSize: "The classes list and experience amounts list are not the same size!"
rewHeroesInvalidClass: "<input> is not a valid Heroes class name!"
rewPhatLootsInvalid: "<input> is not a valid PhatLoot name!"
rewPhatLootsCleared: "PhatLoots reward cleared."
rewCustomAlreadyAdded: "That custom reward has already been added!"
rewCustomNotFound: "Custom reward module not found."
rewCustomCleared: "Custom rewards cleared."
rewNoPhat: "PhatLoots not installed"
itemCreateLoadHand: "Load item in hand"
itemCreateSetName: "Set name"
itemCreateSetAmount: "Set amount"
itemCreateSetDurab: "Set durability"
itemCreateSetEnchs: "Add enchantments"
itemCreateSetDisplay: "Set display name"
itemCreateSetLore: "Set lore"
itemCreateSetClearMeta: "Clear extra data"
itemCreateEnterName: "Enter an item name, <cancel>"
itemCreateEnterAmount: "Enter item amount (max. 64), <cancel>"
itemCreateEnterDurab: "Enter item durability, <clear>, <cancel>"
itemCreateEnterEnch: "Enter an enchantment name, <clear>, <cancel>"
itemCreateEnterLevel: "Enter a level (number) for <enchantment>"
itemCreateEnterDisplay: "Enter item display name, <clear>, <cancel>"
itemCreateEnterLore: "Enter item lore, <semicolon>, <clear>, <cancel>"
itemCreateLoaded: "Item loaded."
itemCreateNoItem: "No item in hand!"
itemCreateNoName: "You must set a name first!"
itemCreateInvalidName: "Invalid item name!"
itemCreateInvalidDurab: "Invalid item durability!"
itemCreateInvalidEnch: "Invalid enchantment name!"
itemCreateInvalidInput: "Invalid input!"
itemCreateNotNumber: "Input was not a number!"
itemCreateNoNameAmount: "You must set a name and amount first!"
itemCreateCriticalError: "A critical error has occurred."
dateCreateEnterDay: "Enter a day (max. 31), <cancel>"
dateCreateEnterMonth: "Enter a month (max. 12), <cancel>"
dateCreateEnterYear: "Enter a year (max. 9999), <cancel>"
dateCreateEnterHour: "Enter an hour (max. 23), <cancel>"
dateCreateEnterMinute: "Enter a minute (max. 59), <cancel>"
dateCreateEnterSecond: "Enter a second (max. 59), <cancel>"
dateCreateEnterOffset: "Enter a UTC time offset (max. 14), <cancel>"
dateCreateEnterZone: "Enter a UTC time zone, <cancel>"
dateCreateNoYearAmount: "You must set a year first!"
questTitle: "-- <quest> --"
questObjectivesTitle: "---(<quest>)---"
questCompleteTitle: '**QUEST COMPLETE: <quest>**'
questRewardsTitle: "Rewards:"
questFailed: "*QUEST FAILED*"
questMaxAllowed: "You may only have up to <number> Quests."
questAlreadyOn: "You are already on that Quest!"
questTooEarly: "You may not take <quest> again for another <time>."
questAlreadyCompleted: "You have already completed <quest>."
questInvalidLocation: "You may not take <quest> at this location."
questInvalidDeliveryItem: "<item> is not a required item for this quest!"
questSelectedLocation: "Selected location"
questListTitle: "- List of Quests -"
questHelpTitle: "- Quests Help -"
questDisplayHelp: "- Display this help"
questNPCListTitle: "- Quests | <npc> -"
questAdminHelpTitle: "- Questadmin -"
questEditorTitle: "- Quest Editor -"
eventEditorTitle: "- Event Editor - "
questCreateTitle: "- Create Quest -"
questEditTitle: "- Edit Quest -"
questDeleteTitle: "- Delete Quest -"
requirementsTitle: "- <quest> | Requirements -"
rewardsTitle: "- <quest> | Rewards -"
plannerTitle: "- <quest> | Planner -"
itemRequirementsTitle: "- Item Requirements -"
itemRewardsTitle: "- Item Rewards -"
mcMMORequirementsTitle: "- mcMMO Requirements -"
mcMMORewardsTitle: "- mcMMO Rewards -"
heroesRequirementsTitle: "- Heroes Requirements -"
heroesRewardsTitle: "- Heroes Rewards -"
heroesClassesTitle: "- Heroes Classes -"
heroesExperienceTitle: "- Heroes Experience -"
heroesPrimaryTitle: "- Primary Classes -"
heroesSecondaryTitle: "- Secondary Classes -"
phatLootsRewardsTitle: "- PhatLoots Rewards -"
customRequirementsTitle: "- Custom Requirements -"
customRewardsTitle: "- Custom Rewards -"
skillListTitle: "- Skill List -"
eventTitle: "- Event -"
completedQuestsTitle: "- Completed Quests -"
topQuestersTitle: "- Top <number> Questers -"
createItemTitle: "- Create Item -"
dateTimeTitle: "- Date & Time -"
timeZoneTitle: "- Time Zones -"
enchantmentsTitle: "- Enchantments -"
questGUITitle: "- GUI Item Display -"
questRegionTitle: "- Quest Region -"
effBlazeShoot: "Sound of a Blaze firing"
effBowFire: "Sound of a bow firing"
effClick1: "A click sound"
effClick2: "A different click sound"
effDoorToggle: "Sound of a door opening or closing"
effExtinguish: "Sound of fire being extinguished"
effGhastShoot: "Sound of a Ghast firing"
effGhastShriek: "Sound of a Ghast shrieking"
effZombieWood: "Sound of a Zombie chewing an iron door"
effZombieIron: "Sound of a Zombie chewing a wooden door"
effEnterName: "Enter an effect name to add it to the list, <cancel>"
cmdAdd: "add"
strAdd: "then enter '<command>' to include it"
cmdClear: "clear"
strClear: "or '<command>' to erase all data"
cmdCancel: "cancel"
strCancel: "or '<command>' to return"
cmdDone: "done"
strDone: "then enter '<command>' to save"
strSpace: separating each by a space
strSemicolon: separating each by a semicolon
charSemi: ";"
acceptQuest: "Accept Quest?"
enterAnOption: "Enter an option"
questAccepted: "Quest accepted: <quest>"
currentQuest: "Current Quests:"
noMoreQuest: "No more quests available."
break: "Break"
damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"
deliver: "Deliver <item> to <npc>"
talkTo: "Talk to <npc>"
tame: "Tame"
shearSheep: "Shear <color> sheep"
goTo: "Go to <location>"
completed: "Completed"
redoCompleted: "(Completed)"
consoleError: "This command may only be performed in-game."
noActiveQuest: "You do not currently have any active Quests."
speakTo: 'Start: Speak to <npc>'
mustSpeakTo: "You must speak to <npc> to start this Quest."
noCommandStart: "<quest> may not be started via command."
permissionDisplay: "Permission:"
heroesClass: "class"
mcMMOLevel: "level"
haveCompleted: "You have completed <quest>"
cannotComplete: "Cannot complete <quest>"
questNotFound: "Quest not found."
alreadyConversing: "You already are in a conversation!"
inputNum: "Input must be a number."
inputPosNum: "Input must be a positive number."
questModified: "Your active Quest <quest> has been modified. You have been forced to quit the Quest."
questNotExist: "Your active Quest <quest> no longer exists. You have been forced to quit the Quest."
questInvalidChoice: "Invalid choice. Type 'Yes' or 'No'"
questPointsDisplay: "Quest points:"
questNoDrop: "You may not drop Quest items."
questNoBrew: "You may not brew Quest items."
questNoStore: "You may not store Quest items."
questNoCraft: "You may not craft Quest items."
questNoEquip: "You may not equip Quest items."
questNoDispense: "You may not put Quest items in dispensers."
questNoEnchant: "You may not enchant Quest items."
questNoSmelt: "You may not smelt using Quest items."
pageSelectionNum: "Page selection must be a number."
pageSelectionPosNum: "Page selection must be a positive number."
questTakeDisabled: "Taking Quests via commands has been disabled."
questQuit: "You have quit <quest>"
questQuitDisabled: "Quitting Quests has been disabled."
questsUnknownCommand: "Unknown Quests command. Type /quests for help."
pageNotExist: "Page does not exist."
pageFooter: "- Page <current> of <all> -"
questsReloaded: "Quests reloaded."
numQuestsLoaded: "<number> Quests loaded."
questForceTake: "<player> has forcibly started the Quest <quest>."
questForcedTake: "<player> has forced you to take the Quest <quest>."
questForceQuit: "<player> has forcibly quit the Quest <quest>."
questForcedQuit: "<player> has forced you to quit the Quest <quest>."
questForceFinish: "<player> has forcibly finished their Quest <quest>."
questForcedFinish: "<player> has forced you to finish your Quest <quest>."
questForceNextStage: "<player> has advanced to the next Stage in the Quest <quest>."
questForcedNextStage: "<player> has advanced you to the next Stage in your Quest <quest>."
questReset: "<player> has been reset."
questRemoved: "Quest <quest> has been removed from player <player>'s completed Quests."
settingAllQuestPoints: "Setting all players' Quest Points..."
allQuestPointsSet: "All players' Quest Points have been set to <number>!"
setQuestPoints: "<player>'s Quest Points have been set to <number>."
questPointsSet: "<player> has set your Quest Points to <number>."
takeQuestPoints: "Took away <number> Quest Points from <player>."
questPointsTaken: "<player> took away <number> Quest Points."
giveQuestPoints: "Gave <number> Quest Points from <player>."
questPointsGiven: "<player> gave you <number> Quest Points."
enableNPCGUI: "<npc> will now provide a GUI Quest Display."
disableNPCGUI: "<npc> will no longer provide a GUI Quest Display."
invalidMinimum: "Input must be at least <number>!"
invalidRange: "Input must be between <least> and <greatest>!"
invalidOption: "Invalid option!"
invalidNumber: "Invalid number."
invalidStageNum: "Invalid stage number for Quest <quest>"
noCurrentQuest: "<player> does not currently have any active Quests."
playerNotFound: "Player not found."
errorNPCID: 'Error: There is no NPC with ID <number>'
errorReading: "Error reading <file>, skipping.."
errorReadingSuppress: "Error reading <file>, suppressing further errors."
errorDataFolder: "Error: Unable to read Quests data folder!"
questsPlayerHasQuestAlready: "<player> is already on the Quest <quest>!"
questsUnknownAdminCommand: "Unknown Questsadmin command. Type /questsadmin for help."
unknownError: "An unknown error occurred. See console output."
journalTitle: "Quest Journal"
journalTaken: "You take out your Quest Journal."
journalPutAway: "You put away your Quest Journal."
journalAlreadyHave: "You already have your Quest Journal out."
journalNoRoom: "You have no room in your inventory for your Quest Journal!"
journalNoQuests: "You have no accepted quests!"
journalDenied: "You cannot do that with your Quest Journal."
ENCHANTMENT_ARROW_DAMAGE: "Power"
ENCHANTMENT_ARROW_FIRE: "Flame"
ENCHANTMENT_ARROW_INFINITE: "Infinity"
ENCHANTMENT_ARROW_KNOCKBACK: "Punch"
ENCHANTMENT_BINDING_CURSE: "BindingCurse"
ENCHANTMENT_CHANNELING: "Channeling"
ENCHANTMENT_DAMAGE_ALL: "Sharpness"
ENCHANTMENT_DAMAGE_ARTHROPODS: "BaneOfArthropods"
ENCHANTMENT_DEPTH_STRIDER: "DepthStrider"
ENCHANTMENT_DAMAGE_UNDEAD: "Smite"
ENCHANTMENT_DIG_SPEED: "Efficiency"
ENCHANTMENT_DURABILITY: "Unbreaking"
ENCHANTMENT_FIRE_ASPECT: "FireAspect"
ENCHANTMENT_FROST_WALKER: "FrostWalker"
ENCHANTMENT_IMPALING: "Impaling"
ENCHANTMENT_KNOCKBACK: "Knockback"
ENCHANTMENT_LOOT_BONUS_BLOCKS: "Fortune"
ENCHANTMENT_LOOT_BONUS_MOBS: "Looting"
ENCHANTMENT_LOYALTY: "Loyalty"
ENCHANTMENT_LUCK: "LuckOfTheSea"
ENCHANTMENT_LURE: "Lure"
ENCHANTMENT_MENDING: "Mending"
ENCHANTMENT_OXYGEN: "Respiration"
ENCHANTMENT_PROTECTION_ENVIRONMENTAL: "Protection"
ENCHANTMENT_PROTECTION_EXPLOSIONS: "BlastProtection"
ENCHANTMENT_PROTECTION_FALL: "FeatherFalling"
ENCHANTMENT_PROTECTION_FIRE: "FireProtection"
ENCHANTMENT_PROTECTION_PROJECTILE: "ProjectileProtection"
ENCHANTMENT_RIPTIDE: "Riptide"
ENCHANTMENT_SILK_TOUCH: "SilkTouch"
ENCHANTMENT_SWEEPING_EDGE: "SweepingEdge"
ENCHANTMENT_THORNS: "Thorns"
ENCHANTMENT_VANISHING_CURSE: "VanishingCurse"
ENCHANTMENT_WATER_WORKER: "AquaAffinity"
COLOR_BLACK: "Black"
COLOR_BLUE: "Blue"
COLOR_BROWN: "Brown"
COLOR_CYAN: "Cyan"
COLOR_GRAY: "Gray"
COLOR_GREEN: "Green"
COLOR_LIGHT_BLUE: "LightBlue"
COLOR_LIME: "Lime"
COLOR_MAGENTA: "Magenta"
COLOR_ORANGE: "Orange"
COLOR_PINK: "Pink"
COLOR_PURPLE: "Purple"
COLOR_RED: "Red"
COLOR_SILVER: "Silver"
COLOR_WHITE: "White"
COLOR_YELLOW: "Yellow"
timeZone: "Time zone"
timeDay: "Day"
timeDays: "Days"
timeMonth: "Month"
timeMonths: "Months"
timeYear: "Year"
timeYears: "Years"
timeHour: "Hour"
timeHours: "Hours"
timeMinute: "Minute"
timeMinutes: "Minutes"
timeSecond: "Second"
timeSeconds: "Seconds"
timeMillisecond: "Millisecond"
timeMilliseconds: "Milliseconds"
event: "Event"
delay: "Delay"
save: "Save"
exit: "Exit"
exited: "Exited"
cancel: "Cancel"
cancelled: "Cancelled"
questTimeout: "Cancelled."
back: "Back"
yesWord: "Yes"
noWord: "No"
"true": "true"
"false": "false"
clear: "Clear"
edit: "Edit"
none: "None"
done: "Done"
finish: "Finish"
quit: "Quit"
noneSet: "None set"
noDelaySet: "No delay set"
noIdsSet: "No IDs set"
noNamesSet: "No names set"
worlds: "Worlds"
mobs: "Mobs"
points: "points"
npcHint: "Note: You can left or right click on NPCs to get their ID."
listDuplicate: "List contains duplicates!"
id: "ID"
quest: "Quest"
quests: "Quests"
createdBy: "Created by"
continuedBy: "and continued by"
questPoints: "Quest Points"
accepted: "Accepted"
complete: "Complete"
redoable: "Redoable"
usage: "Usage"
redoableEvery: "Redoable every <time>."
requirements: "Requirements"
money: "Money"
with: "with"
to: "to"
blocksWithin: "within <amount> blocks of"
valRequired: "Value required"
experience: "Experience"
timerMessage: "%green%Time left to finish the quest/stage:%red% <time> seconds"
timerStart: "%green%You have%red% <time> seconds%green% to finish this quest/stage"
questErrorReadingFile: "Error reading Quests file."
questSaveError: "An error occurred while saving."
noPermission: "You do not have permission to do that."
difference: "The difference is '<data>'."

View File

@ -2,55 +2,55 @@
COMMAND_LIST: "листа"
COMMAND_LIST_HELP: "<command> [страна] - Наброј доступне задатке"
COMMAND_TAKE: "започни"
COMMAND_TAKE_HELP: "<command> [quest] - Prihvati zadatak preko komande"
COMMAND_TAKE_USAGE: "/zadatak prihavti [quest]"
COMMAND_QUIT: "izadji"
COMMAND_QUIT_HELP: "<command> [zadatak] - Prekini trenutni zadatak"
COMMAND_TAKE_HELP: "<command> [quest] - Accept a quest via command"
COMMAND_TAKE_USAGE: "Usage: /quests take [quest]"
COMMAND_QUIT: "quit"
COMMAND_QUIT_HELP: "<command> [quest] - Quit a current quest"
COMMAND_JOURNAL: "журнал"
COMMAND_JOURNAL_HELP: "<command> - Vidi/Skloni svoju knjigu zadataka"
COMMAND_JOURNAL_HELP: "<command> - View/Put away your Quest Journal"
COMMAND_EDITOR: "уређивач"
COMMAND_EDITOR_HELP: "<command> - Napravi/Izmeni Zadatake"
COMMAND_EDITOR_HELP: "<command> - Create/Edit Quests"
COMMAND_EVENTS_EDITOR: "events"
COMMAND_EVENTS_EDITOR_HELP: "<command> - Napravi/Izmeni Dogadjaje"
COMMAND_EVENTS_EDITOR_HELP: "<command> - Create/Edit Events"
COMMAND_STATS: "stats"
COMMAND_STATS_HELP: "<command> - Vidi statistiku zadataka"
COMMAND_STATS_HELP: "<command> - View quest statistics"
COMMAND_TOP: "top"
COMMAND_TOP_HELP: "<command> [broj] - Vidi liderbord "
COMMAND_TOP_USAGE: "/zadatak top [broj]"
COMMAND_TOP_HELP: "<command> [number] - View plugin leaderboards"
COMMAND_TOP_USAGE: "Usage: /quests top [number]"
COMMAND_INFO: "info"
COMMAND_INFO_HELP: "<command> - Vidi plugin informaciju"
COMMAND_QUEST_HELP: "-Vidi trenutnu misiju zadatka"
COMMAND_QUESTINFO_HELP: "[quest] - Vidi informaciju o zadatku"
COMMAND_QUESTADMIN_HELP: "-Prikazi administrativnu pomoc"
COMMAND_INFO_HELP: "<command> - View plugin information"
COMMAND_QUEST_HELP: "- View current quest objectives"
COMMAND_QUESTINFO_HELP: "[quest] - View information about a quest"
COMMAND_QUESTADMIN_HELP: "- Display administrator help"
COMMAND_QUESTADMIN_STATS: "статистике"
COMMAND_QUESTADMIN_STATS_HELP: "<command> [igrac]- Vidi zadatke statitistiku o igracu"
COMMAND_QUESTADMIN_STATS_HELP: "<command> [player] - View quest statistics of a player"
COMMAND_QUESTADMIN_GIVE: "give"
COMMAND_QUESTADMIN_GIVE_HELP: "<command> [igrac] [quest] - Forsiraj igraca da uzme zadatak"
COMMAND_QUESTADMIN_GIVE_HELP: "<command> [player] [quest] - Force a player to take a quest"
COMMAND_QUESTADMIN_QUIT: "поништи"
COMMAND_QUESTADMIN_QUIT_HELP: "<command> [player] [quest] - Forsira igraca da napusti zadatak"
COMMAND_QUESTADMIN_QUIT_HELP: "<command> [player] [quest] - Force a player to quit a quest"
COMMAND_QUESTADMIN_POINTS: "points"
COMMAND_QUESTADMIN_POINTS_HELP: "<command> [igrac] [kolicina] - Stavi igracev Zadatak poene"
COMMAND_QUESTADMIN_POINTS_HELP: "<command> [player] [amount] - Set a player's Quest Points"
COMMAND_QUESTADMIN_TAKEPOINTS: "узмипоене"
COMMAND_QUESTADMIN_TAKEPOINTS_HELP: "<command> [igrac] [kolicina] - Oduzmi igraceve poene od zadataka"
COMMAND_QUESTADMIN_TAKEPOINTS_HELP: "<command> [player] [amount] - Take away a player's Quest Points"
COMMAND_QUESTADMIN_GIVEPOINTS: "дајпоене"
COMMAND_QUESTADMIN_GIVEPOINTS_HELP: "<command> [igrac] [kolicina] - Dodaj igraca u zadatak poene"
COMMAND_QUESTADMIN_GIVEPOINTS_HELP: "<command> [player] [amount] - Add to a player's Quest Points"
COMMAND_QUESTADMIN_POINTSALL: "pointsall"
COMMAND_QUESTADMIN_POINTSALL_HELP: "<command> [kolicina]- Stavi SVIM igracima zadatke poene"
COMMAND_QUESTADMIN_POINTSALL_HELP: "<command> [amount] - Set ALL players' Quest Points"
COMMAND_QUESTADMIN_FINISH: "finish"
COMMAND_QUESTADMIN_FINISH_HELP: "<command> [igrac] [zadatak] - Forsiraj igraca da zavrsi zadatak"
COMMAND_QUESTADMIN_FINISH_HELP: "<command> [player] [quest] - Force a player to complete a quest"
COMMAND_QUESTADMIN_NEXTSTAGE: "nextstage"
COMMAND_QUESTADMIN_NEXTSTAGE_HELP: "<command> [igrac] [zadatak] - Forsiraj igraca da zavrsi trenutni zadatak"
COMMAND_QUESTADMIN_NEXTSTAGE_HELP: "<command> [player] [quest] - Force a player to complete current stage"
COMMAND_QUESTADMIN_SETSTAGE: "setstage"
COMMAND_QUESTADMIN_SETSTAGE_HELP: "<command> [igrac] [zadatak] [scena] - Stavi trenutnu scenu za igraca"
COMMAND_QUESTADMIN_SETSTAGE_USAGE: '.Usage /zadatakadmin sestage [igrac] [zadatak] [scena]'
COMMAND_QUESTADMIN_SETSTAGE_HELP: "<command> [player] [quest] [stage] - Set the current stage for a player"
COMMAND_QUESTADMIN_SETSTAGE_USAGE: 'Usage: /questadmin setstage [player] [quest] [stage]'
COMMAND_QUESTADMIN_RESET: "reset"
COMMAND_QUESTADMIN_RESET_HELP: "<command> [igrac] - Ocisti sve Zadatke memorije igraca "
COMMAND_QUESTADMIN_RESET_HELP: "<command> [player] - Clear all Quests data of a player"
COMMAND_QUESTADMIN_REMOVE: "remove"
COMMAND_QUESTADMIN_REMOVE_HELP: "<command> [igrac] [zadatak] - Obrisi zavrseni zadatak od igraca"
COMMAND_QUESTADMIN_REMOVE_HELP: "<command> [player] [quest] - Remove a completed quest from a player"
COMMAND_QUESTADMIN_TOGGLEGUI: "togglegui"
COMMAND_QUESTADMIN_TOGGLEGUI_HELP: "<command> [npc id] - Upali GUI zadatak displej na npc"
COMMAND_QUESTADMIN_TOGGLEGUI_HELP: "<command> [npc id] - Toggle GUI Quest Display on an NPC"
COMMAND_QUESTADMIN_RELOAD: "reload"
COMMAND_QUESTADMIN_RELOAD_HELP: "<command> - Bezbedno restartuj plugin"
COMMAND_QUESTADMIN_RELOAD_HELP: "<command> - Safely reload the plugin"
questEditorHeader: "Create Quest"
questEditorCreate: "Create new Quest"
questEditorEdit: "Edit a Quest"
@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -105,30 +111,35 @@ questEditorNeedFinishMessage: "You must set a finish message!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Redigera Etapp"
stageEditorNewStage: "Lägg till ny etapp"
stageEditorStages: "Etapper"
stageEditorStage: "Etapp"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Hacka Block"
stageEditorDamageBlocks: "Skada Block"
stageEditorPlaceBlocks: "Placera Block"
stageEditorUseBlocks: "Använd Block"
stageEditorCutBlocks: "Skär Block"
stageEditorCatchFish: "Fånga Fisk"
stageEditorFish: "fisk"
stageEditorKillPlayers: "Döda Spelare"
stageEditorPlayers: "spelare"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Förtrolla Items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Leverera Items"
stageEditorTalkToNPCs: "Prata med NPC"
stageEditorKillNPCs: "Döda NPC"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Döda Mobs"
stageEditorCatchFish: "Fånga Fisk"
stageEditorFish: "fisk"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Döda Spelare"
stageEditorPlayers: "spelare"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "ป้อนไอดีของ NPC <clear>,<cancel
questEditorEnterBlockStart: "คลิกขวาบนบล็อกเพื่อใช้เป็นจุดเริ่มต้น, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "ป้อนชื่อเหตุการณ์, <clear>, <cancel>"
questRequiredNoneSet: "จำเป็น ไม่มีกำหนด"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "การตั้งค่าภูมิภาค"
questWGNotInstalled: "ไม่ได้ติดตั้ง WorldGuard"
questWGPrompt: "ป้อนเขตชื่อพื้นที่ของ WorldGuard <clear>,<cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "แก้ไขขั้นตอน"
stageEditorNewStage: "เพิ่มขั้นตอนใหม่"
stageEditorStages: "ขั้นตอน"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "แบ่งบล็อก"
stageEditorDamageBlocks: "บล็อคความเสียหาย"
stageEditorPlaceBlocks: "วางบล็อก"
stageEditorUseBlocks: "ใช้บล็อก"
stageEditorCutBlocks: "ตัดบล็อก"
stageEditorCatchFish: "ตกปลา"
stageEditorFish: "ปลา"
stageEditorKillPlayers: "ฆ่าผู้เล่น"
stageEditorPlayers: "ผู้เล่น"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "ไอเทมร่ายมนต์"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "จัดส่งไอเทม"
stageEditorTalkToNPCs: "พูดคุยกับ NPCs"
stageEditorKillNPCs: "ฆ่า NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "ฆ่ามอนสเตอร์"
stageEditorCatchFish: "ตกปลา"
stageEditorFish: "ปลา"
stageEditorReachLocs: "เข้าถึงสถานที่ต่างๆ"
stageEditorReachRadii1: "เข้าถึงภายใน"
stageEditorReachRadii2: "บล็อกของ"
stageEditorTameMobs: "เชื่องมอนสเตอร์"
stageEditorShearSheep: "แรงเฉือนการแกะ"
stageEditorKillPlayers: "ฆ่าผู้เล่น"
stageEditorPlayers: "ผู้เล่น"
stageEditorEvents: "กิจกรรม"
stageEditorStageEvents: "กิจกรรม Stage"
stageEditorStartEvent: "เริ่มกิจกรรม"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "ตั้งค่าจำนวนเฉือน
stageEditorPassword: "วัตถุประสงค์ของรหัสผ่าน"
stageEditorAddPasswordDisplay: "เพิ่มรหัสผ่านจอแสดงผล"
stageEditorAddPasswordPhrases: "เพิ่มรหัสผ่าน phrase(s)"
stageEditorNoPasswordDisplays: "ไม่มีรหัสผ่านแสดงการตั้งค่า"
stageEditorObjectiveOverride: "การแทนที่การแสดงเป้าหมาย"
stageEditorCustom: "วัตถุประสงค์ที่กำหนดเอง"
stageEditorNoModules: "ไม่มีโมดูลที่โหลด"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "ยกเลิกการลบการ
stageEditorDeliveryAddItem: "เพิ่มรายการ"
stageEditorDeliveryNPCs: "ตั้งค่ารหัส NPC"
stageEditorDeliveryMessages: "ตั้งค่าข้อความการจัดส่ง"
stageEditorContainsDuplicates: "รายการประกอบด้วยรายการที่ซ้ำกัน"
stageEditorInvalidBlockName: "ไม่มีชื่อบล็อกที่ถูกต้อง!"
stageEditorInvalidEnchantment: "ไม่มีชื่อทีถูกต้องของมนต์เสน่ห์"
stageEditorInvalidNPC: "ไม่ใช่ ID ของ NPC ที่ถูกต้อง!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "คุณต้องตั้งสถานที
stageEditorNoBlockSelected: "คุณต้องเลือกบล็อกก่อน"
stageEditorNoColors: "คุณต้องตั้งค่าสีก่อน!"
stageEditorNoLocations: "คุณต้องตั้งสถานที่ก่อน!"
stageEditorNoEnchantmentsSet: "ไม่ได้ตั้งเวทมนตร์"
stageEditorNoItemsSet: "ไม่มีการตั้งค่าไอเทม"
stageEditorNoMobTypesSet: "ไม่ได้ตั้งค่ากลุ่มม็อบ"
stageEditorNoLocationsSet: "ไม่ได้ตั้งสถานที่"
stageEditorNoColorsSet: "ชุดสีไม่มี"
stageEditorListNotSameSize: "รายการชื่อบล็อกและรายการจำนวนเงินมีขนาดไม่เท่ากัน!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "รายการสินค้าและรายการ NPC มีขนาดไม่เท่ากัน!"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Bir bloğu başlangıç noktası olarak seçmek için blok üzerine sağ tıklayın, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Bir Etkinlik adı girin, <clear>, <cancel>"
questRequiredNoneSet: "Gerekli, hiçbiri seçilmedi"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Bölge Ayarla"
questWGNotInstalled: "WorldGuard yüklü değil"
questWGPrompt: "WorldGuard bölgesini girin, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Etap düzenle"
stageEditorNewStage: "Yeni etap ekle"
stageEditorStages: "Etaplar"
stageEditorStage: "Etap"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Blokları kes"
stageEditorDamageBlocks: "Hasar blokları"
stageEditorPlaceBlocks: "Yerleştirme Blokları"
stageEditorUseBlocks: "Blokları kullan"
stageEditorCutBlocks: "Blokları kes"
stageEditorCatchFish: "Balık yakala"
stageEditorFish: "balık"
stageEditorKillPlayers: "Oyuncuları öldür"
stageEditorPlayers: "oyuncular"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Büyüleyici öğeler"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Öğeleri teslim et"
stageEditorTalkToNPCs: "NPCs ile konuş"
stageEditorKillNPCs: "NPCs öldürmek"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Çeteleri öldürmek"
stageEditorCatchFish: "Balık yakala"
stageEditorFish: "balık"
stageEditorReachLocs: "Konumlarına ulaşmak"
stageEditorReachRadii1: "İçinde ulaşmak"
stageEditorReachRadii2: "blokları"
stageEditorTameMobs: "Uysal çetelerin"
stageEditorShearSheep: "Kesme koyun"
stageEditorKillPlayers: "Oyuncuları öldür"
stageEditorPlayers: "oyuncular"
stageEditorEvents: "Olaylar"
stageEditorStageEvents: "Etap etkinlikleri"
stageEditorStartEvent: "Etabı başlat"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "Kırma miktarını ayarla"
stageEditorPassword: "Nesnenin şifresi"
stageEditorAddPasswordDisplay: "Şifre koyma ekranı"
stageEditorAddPasswordPhrases: "Şifre cümlesi/leri ekle"
stageEditorNoPasswordDisplays: "Gösterilecek şifre yok seti"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Özel nesneler"
stageEditorNoModules: "Hiçbir modül yüklenemedi"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Nesnel ekran geçersiz kılma temizlendi."
stageEditorDeliveryAddItem: "Öğe ekle"
stageEditorDeliveryNPCs: "NPC kimliklerini ayarla"
stageEditorDeliveryMessages: "Teslimat mesajlarını ayarla"
stageEditorContainsDuplicates: "Listede kopyalar var!"
stageEditorInvalidBlockName: "geçerli bir engelleme adı değil!"
stageEditorInvalidEnchantment: "geçerli bir büyü adı değil!"
stageEditorInvalidNPC: "geçerli bir NPC Kimliği değil!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Önce ölüm konumlarını ayarlamalısınız!"
stageEditorNoBlockSelected: "Önce bir blok seçmelisiniz."
stageEditorNoColors: "Önce bir renk ayarlamalısınız!"
stageEditorNoLocations: "Önce bir konum ayarlamalısınız!"
stageEditorNoEnchantmentsSet: "Büyüleme seti yok"
stageEditorNoItemsSet: "Öğeler seti yok"
stageEditorNoMobTypesSet: "Mob türü seti yok"
stageEditorNoLocationsSet: "Yer ayarlanamadı"
stageEditorNoColorsSet: "Renk seti yok"
stageEditorListNotSameSize: "Blok isimler listesi ve miktarlar listesi aynı büyüklükte değil!"
stageEditorEnchantmentNotSameSize: "Büyüleme listesi madde kimliği listesi ve büyü miktarı listesi aynı büyüklükte değil!"
stageEditorDeliveriesNotSameSize: "Öge listesi ve NPC listesi aynı boyutta değiller!"
@ -651,8 +655,9 @@ damage: "Hasar"
place: "Yer"
use: "Kullanım"
cut: "Kes"
catchFish: "Balık Yakala"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Balık Yakala"
kill: "Sonlandır"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "Nhập ID của NPC, <clear>, <cancel>"
questEditorEnterBlockStart: "Click phải trên 1 block để sử dụng như 1 điểm bắt đầu, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Nhập tên sự kiện, <clear>, <cancel>"
questRequiredNoneSet: "Yêu cầu, không có thiết lập"
questPartiesCreate: "Pemain yang ditambahkan ke pesta ini dapat melakukan pencarian bersama!"
questPartiesDelete: "Pesta pencarian dibubarkan."
questPartiesInvite: "<player> sekarang dapat melakukan pencarian dengan Anda!"
questPartiesJoin: "Anda sekarang dapat melakukan pencarian dengan <player>."
questPartiesKicked: "<player> tidak dapat lagi melakukan pencarian dengan Anda."
questPartiesLeave: "Anda tidak lagi dapat melakukan pencarian dengan <player>."
questWGSetRegion: "Thiết lập vùng/khu vực"
questWGNotInstalled: "WorldGuard không được cài đặt"
questWGPrompt: "Nhập khu vực WorldGuard, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "Chỉnh sửa Giai đoạn"
stageEditorNewStage: "Thêm Giai đoạn mới"
stageEditorStages: "Các Stages"
stageEditorStage: "Giai đoạn"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Phá khối"
stageEditorDamageBlocks: "Phá khối"
stageEditorPlaceBlocks: "Đặt khối"
stageEditorUseBlocks: "Sử dụng khối"
stageEditorCutBlocks: "Cắt khối"
stageEditorCatchFish: "Bắt cá"
stageEditorFish: "cá"
stageEditorKillPlayers: "Giết người chơi"
stageEditorPlayers: "người chơi"
stageEditorItems: "Mặt hàng"
stageEditorCraftItems: "Tạo các mục"
stageEditorEnchantItems: "Phù phép vật phẩm"
stageEditorNPCs: "NPC"
stageEditorDeliverItems: "Giao vật phẩm"
stageEditorTalkToNPCs: "Nói chuyện với các NPC"
stageEditorKillNPCs: "Giết NPC"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Giết Mobs"
stageEditorCatchFish: "Bắt cá"
stageEditorFish: "cá"
stageEditorReachLocs: "Đặt vị trí"
stageEditorReachRadii1: "Đạt được trong vòng"
stageEditorReachRadii2: "khối"
stageEditorTameMobs: "Thuần hóa Mobs"
stageEditorShearSheep: "Tỉa lông cừu"
stageEditorKillPlayers: "Giết người chơi"
stageEditorPlayers: "người chơi"
stageEditorEvents: "Sự kiện"
stageEditorStageEvents: "Sự kiện Giai đoạn"
stageEditorStartEvent: "Sự kiện Bắt đầu"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "Đặt tên vị trí"
stageEditorSetTameAmounts: "Thiết lập số lượng thuần hóa"
stageEditorSetShearColors: "Thiết lập màu của cừu"
stageEditorSetShearAmounts: "Thiết lập số lần cắt/xén"
stageEditorPassword: "Mật khẩu mục tiêu"
stageEditorPassword: "Mật khẩu"
stageEditorAddPasswordDisplay: "Thêm mật khẩu màn hình hiển thị"
stageEditorAddPasswordPhrases: "Thêm mật khẩu diễn đạt bằng lời"
stageEditorNoPasswordDisplays: "Không có mật khẩu hiển thị được thiết lập"
stageEditorObjectiveOverride: "Hiển thị mục tiêu ghi đè"
stageEditorCustom: "Mục tiêu tùy chỉnh"
stageEditorNoModules: "Không có mô-đun được tải"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "Mục tiêu ghi đè đã được xóa."
stageEditorDeliveryAddItem: "Thêm vật phẩm"
stageEditorDeliveryNPCs: "Thiết lập ID của NPC"
stageEditorDeliveryMessages: "Thiết lập thông điệp chuyển giao"
stageEditorContainsDuplicates: "Danh sách trùng lặp!"
stageEditorInvalidBlockName: "không phải tên hợp lệ của một block!"
stageEditorInvalidEnchantment: "không phải là một tên hợp lệ ngắm cảnh!"
stageEditorInvalidNPC: "không phải là một NPC ID hợp lệ!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "Bạn phải thiết lập vị trí giết hại t
stageEditorNoBlockSelected: "Bạn phải chọn một khối trước tiên."
stageEditorNoColors: "Bạn phải thiết lập màu sắc trước tiên!"
stageEditorNoLocations: "Bạn phải thiết lập vị trí trước tiên!"
stageEditorNoEnchantmentsSet: "Không có phù phép được thiết lập"
stageEditorNoItemsSet: "Không có mặt hàng được thiết lập"
stageEditorNoMobTypesSet: "Không có loại mob được thiết lập"
stageEditorNoLocationsSet: "Không có vị trí được thiết lập"
stageEditorNoColorsSet: "Không có màu được thiết lập"
stageEditorListNotSameSize: "Danh sách tên khối và số lượng không đều nhau!"
stageEditorEnchantmentNotSameSize: "Danh sách phù phép, id vật phẩm và số lượng phù phép không đều nhau!"
stageEditorDeliveriesNotSameSize: "Danh sách vật phẩm và NPC không đều nhau!"
@ -651,8 +655,9 @@ damage: "Sát thương"
place: "Đặt"
use: "Sử dụng"
cut: "Cắt"
catchFish: "Bắt cá"
craft: "Tạo nên"
enchantItem: "Phù phép <item> với <enchantment>"
catchFish: "Bắt cá"
kill: "Giết"
killAtLocation: "Giết <mob> tại <location>"
killPlayer: "Giết 1 người chơi"

View File

@ -74,6 +74,12 @@ questEditorEnterNPCStart: "输入NPC的ID, <clear>, <cancel>"
questEditorEnterBlockStart: "右击一个方块作为起点,<done>,<clear>,<cancel>"
questEditorEnterInitialEvent: "输入事件名称,<clear>,<cancel>"
questRequiredNoneSet: "必需, 未设置"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "设置区域"
questWGNotInstalled: "WorldGuard未安装"
questWGPrompt: "输入 WorldGuard 区域,<clear>,<cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "编辑阶段"
stageEditorNewStage: "添加新阶段"
stageEditorStages: "阶段"
stageEditorStage: "阶段"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "破坏方块"
stageEditorDamageBlocks: "撸方块"
stageEditorPlaceBlocks: "放置方块"
stageEditorUseBlocks: "使用方块"
stageEditorCutBlocks: "剪切方块"
stageEditorCatchFish: "捕鱼"
stageEditorFish: "鱼"
stageEditorKillPlayers: "击杀玩家"
stageEditorPlayers: "玩家"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "附魔物品"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "转交物品"
stageEditorTalkToNPCs: "与NPC交谈"
stageEditorKillNPCs: "杀死NPC"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "杀死怪物"
stageEditorCatchFish: "捕鱼"
stageEditorFish: "鱼"
stageEditorReachLocs: "到达地点"
stageEditorReachRadii1: "到达位置半径"
stageEditorReachRadii2: "方块内的点"
stageEditorTameMobs: "驯服怪物"
stageEditorShearSheep: "剪羊毛"
stageEditorKillPlayers: "击杀玩家"
stageEditorPlayers: "玩家"
stageEditorEvents: "事件"
stageEditorStageEvents: "\n阶段事件"
stageEditorStartEvent: "开始事件"
@ -177,7 +188,6 @@ stageEditorSetShearAmounts: "设置剪切数量"
stageEditorPassword: "密码目标"
stageEditorAddPasswordDisplay: "添加密码显示"
stageEditorAddPasswordPhrases: "添加密码短语"
stageEditorNoPasswordDisplays: "未设置密码显示"
stageEditorObjectiveOverride: "覆写目标显示"
stageEditorCustom: "自定义目标"
stageEditorNoModules: "未载入任何模块"
@ -233,7 +243,6 @@ stageEditorObjectiveOverrideCleared: "覆写目标显示已清除."
stageEditorDeliveryAddItem: "添加物品"
stageEditorDeliveryNPCs: "设置NPC ID"
stageEditorDeliveryMessages: "请设置传递消息"
stageEditorContainsDuplicates: "列表中包含重复项!"
stageEditorInvalidBlockName: "不是有效的方块名称!"
stageEditorInvalidEnchantment: "不是一个有效的附魔名称!"
stageEditorInvalidNPC: "不是一个有效的NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "您必须先设置击杀位置!"
stageEditorNoBlockSelected: "您必须先选择方块!"
stageEditorNoColors: "您必须先设置颜色!"
stageEditorNoLocations: "您必须先设置位置!"
stageEditorNoEnchantmentsSet: "未设置附魔"
stageEditorNoItemsSet: "未设置物品"
stageEditorNoMobTypesSet: "未设置怪物类型"
stageEditorNoLocationsSet: "未设置位置"
stageEditorNoColorsSet: "未设置颜色"
stageEditorListNotSameSize: "方块名与数量列表非相同大小!"
stageEditorEnchantmentNotSameSize: "附魔列表, 物品编号和附魔数量非相同大小!"
stageEditorDeliveriesNotSameSize: "物品列表和 NPC 列表非相同大小!"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -23,9 +23,9 @@ COMMAND_QUEST_HELP: "- 顯示目前完成任務的條件"
COMMAND_QUESTINFO_HELP: "[quest] - 顯示任務資訊"
COMMAND_QUESTADMIN_HELP: "- 顯示管理員指令權限"
COMMAND_QUESTADMIN_STATS: "統計結果"
COMMAND_QUESTADMIN_STATS_HELP: "<command> [player] - View quest statistics of a player"
COMMAND_QUESTADMIN_STATS_HELP: "<command> [player] - 查看玩家的任務統計"
COMMAND_QUESTADMIN_GIVE: "授予任務"
COMMAND_QUESTADMIN_GIVE_HELP: "<command> [player] [quest] - Force a player to take a quest"
COMMAND_QUESTADMIN_GIVE_HELP: "<command> [player] [quest] - 強制玩家執行任務"
COMMAND_QUESTADMIN_QUIT: "放棄"
COMMAND_QUESTADMIN_QUIT_HELP: "<command> [玩家名] [任務名稱] - 強制玩家放棄任務"
COMMAND_QUESTADMIN_POINTS: "點數"
@ -35,20 +35,20 @@ COMMAND_QUESTADMIN_TAKEPOINTS_HELP: "<command> [玩家名] [任務點數] - 扣
COMMAND_QUESTADMIN_GIVEPOINTS: "給予任務點數"
COMMAND_QUESTADMIN_GIVEPOINTS_HELP: "<command> [玩家名] [任務點數] - 給予玩家任務點數"
COMMAND_QUESTADMIN_POINTSALL: "任務點數"
COMMAND_QUESTADMIN_POINTSALL_HELP: "<command> [amount] - Set ALL players' Quest Points"
COMMAND_QUESTADMIN_POINTSALL_HELP: "<command> [amount] - 統一所有玩家的任務點數"
COMMAND_QUESTADMIN_FINISH: "完成任務"
COMMAND_QUESTADMIN_FINISH_HELP: "<command> [player] [quest] - Force a player to complete a quest"
COMMAND_QUESTADMIN_FINISH_HELP: "<command> [player] [quest] - 強制玩家完成任務"
COMMAND_QUESTADMIN_NEXTSTAGE: "下一章節任務"
COMMAND_QUESTADMIN_NEXTSTAGE_HELP: "<command> [player] [quest] - Force a player to complete current stage"
COMMAND_QUESTADMIN_NEXTSTAGE_HELP: "<command> [player] [quest] - 強制玩家完成當前章節"
COMMAND_QUESTADMIN_SETSTAGE: "設定任務章節"
COMMAND_QUESTADMIN_SETSTAGE_HELP: "<command> [player] [quest] [stage] - Set the current stage for a player"
COMMAND_QUESTADMIN_SETSTAGE_HELP: "<command> [player] [quest] [stage] - 設置玩家的當前章節"
COMMAND_QUESTADMIN_SETSTAGE_USAGE: '用法: /questadmin setstage [player] [quest] [stage]'
COMMAND_QUESTADMIN_RESET: "重置"
COMMAND_QUESTADMIN_RESET_HELP: "<command> [player] - 清除此玩家所有任務資料"
COMMAND_QUESTADMIN_REMOVE: "移除"
COMMAND_QUESTADMIN_REMOVE_HELP: "<command> [player] [quest] - 移除玩家已完成任務"
COMMAND_QUESTADMIN_TOGGLEGUI: "切換顯示"
COMMAND_QUESTADMIN_TOGGLEGUI_HELP: "<command> [npc id] - Toggle GUI Quest Display on an NPC"
COMMAND_QUESTADMIN_TOGGLEGUI_HELP: "<command> [npc id] - 啟用任務顯示GUI界面在此NPC"
COMMAND_QUESTADMIN_RELOAD: "重新載入"
COMMAND_QUESTADMIN_RELOAD_HELP: "<command> - 重新載入所有任務"
questEditorHeader: "創建任務"
@ -63,17 +63,23 @@ questEditorBlockStart: "設定方塊啟動"
questEditorInitialEvent: "設定初始任務活動"
questEditorSetGUI: "設定GUI顯示畫面"
questEditorReqs: "編輯任務需求"
questEditorPln: "Edit Planner"
questEditorPln: "編輯計劃"
questEditorStages: "編輯任務階段"
questEditorRews: "編輯任務獎勵"
questEditorEnterQuestName: "輸入任務名稱 (<cancel>)"
questEditorEditEnterQuestName: "編輯任務名稱 (<cancel>)"
questEditorEnterAskMessage: "編輯任務對話內容 (<cancel>)"
questEditorEnterFinishMessage: "編輯完成任務對話內容 (<cancel>)"
questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterNPCStart: "輸入 NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "右擊方塊設定為啟動點, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "輸入任務活動名稱, <clear>, <cancel>"
questRequiredNoneSet: "任務需求條件, 無設置"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "設置區域"
questWGNotInstalled: "未安裝插件 WorldGuard"
questWGPrompt: "輸入 WorldGuard 區域, <clear>, <cancel>"
@ -110,25 +116,30 @@ stageEditorEditStage: "編輯任務階段"
stageEditorNewStage: "新增任務階段"
stageEditorStages: "階段"
stageEditorStage: "階段"
stageEditorBlocks: "方塊"
stageEditorBreakBlocks: "破壞方塊"
stageEditorDamageBlocks: "傷害方塊"
stageEditorPlaceBlocks: "放置方塊"
stageEditorUseBlocks: "使用方塊"
stageEditorCutBlocks: "切除方塊"
stageEditorCatchFish: "捕捉生魚"
stageEditorFish: "魚"
stageEditorKillPlayers: "擊殺玩家"
stageEditorPlayers: "玩家"
stageEditorItems: "物品"
stageEditorCraftItems: "製造物品"
stageEditorEnchantItems: "附魔物品"
stageEditorNPCs: "NPC"
stageEditorDeliverItems: "運送物品"
stageEditorTalkToNPCs: "與NPC對話"
stageEditorKillNPCs: "擊殺NPC"
stageEditorMobs: "怪物"
stageEditorKillMobs: "擊殺怪物"
stageEditorCatchFish: "捕捉生魚"
stageEditorFish: "魚"
stageEditorReachLocs: "抵達目的地!"
stageEditorReachRadii1: "即將抵達"
stageEditorReachRadii2: "三組的石頭"
stageEditorTameMobs: "馴服動物"
stageEditorShearSheep: "剪羊毛"
stageEditorKillPlayers: "擊殺玩家"
stageEditorPlayers: "玩家"
stageEditorEvents: "任務活動"
stageEditorStageEvents: "任務活動階段"
stageEditorStartEvent: "啟動任務活動"
@ -174,10 +185,9 @@ stageEditorSetLocationNames: "設置地點的名稱"
stageEditorSetTameAmounts: "設置馴服次數"
stageEditorSetShearColors: "設置綿羊的顏色"
stageEditorSetShearAmounts: "設置收集羊毛次數"
stageEditorPassword: "目標密碼"
stageEditorPassword: "密碼"
stageEditorAddPasswordDisplay: "添加顯示密碼"
stageEditorAddPasswordPhrases: "添加密碼短語"
stageEditorNoPasswordDisplays: "設置沒有顯示密碼"
stageEditorObjectiveOverride: "覆蓋目標顯示"
stageEditorCustom: "自訂物品"
stageEditorNoModules: "未加載任何數據"
@ -191,30 +201,30 @@ stageEditorBreakBlocksPrompt: "輸入使用次數 (0-9), <space>, <cancel>"
stageEditorDamageBlocksPrompt: "輸入擊殺次數 (0-9), <space>, <cancel>"
stageEditorPlaceBlocksPrompt: "輸入放置次數 (0-9), <space>, <cancel>"
stageEditorUseBlocksPrompt: "輸入使用次數 (0-9), <space>, <cancel>"
stageEditorCutBlocksPrompt: "Enter cut amounts (numbers), <space>, <cancel>"
stageEditorEnterBlockDurability: "Enter block durability (numbers), <space>, <cancel>"
stageEditorCatchFishPrompt: "Enter number of fish to catch, <clear>, <cancel>"
stageEditorKillPlayerPrompt: "Enter number of players to kill, <clear>, <cancel>"
stageEditorEnchantTypePrompt: "Enter enchantment names, <semicolon>, <cancel>"
stageEditorEnchantAmountsPrompt: "Enter enchant amounts (numbers), <space>, <cancel>"
stageEditorItemNamesPrompt: "Enter item names, <space>, <cancel>"
stageEditorNPCPrompt: "Enter NPC IDs, <space>, <cancel>"
stageEditorNPCToTalkToPrompt: "Enter NPC IDs, <space>, <clear>, <cancel>"
stageEditorDeliveryMessagesPrompt: "Enter delivery messages, <semicolon>, <cancel>"
stageEditorKillNPCsPrompt: "Enter kill amounts (numbers), <space>, <cancel>"
stageEditorMobsPrompt: "Enter mob names, <space>, <cancel>"
stageEditorMobAmountsPrompt: "Enter mob amounts, <space>, <cancel>"
stageEditorCutBlocksPrompt: "輸入削減次數 (0-9), <space>, <cancel>"
stageEditorEnterBlockDurability: "輸入塊耐久性 (0-9), <space>, <cancel>"
stageEditorCatchFishPrompt: "輸入要捕獲的魚的數量, <clear>, <cancel>"
stageEditorKillPlayerPrompt: "輸入要擊殺玩家的數量, <clear>, <cancel>"
stageEditorEnchantTypePrompt: "輸入附魔名稱, <semicolon>, <cancel>"
stageEditorEnchantAmountsPrompt: "輸入附魔等級(數字), <space>, <cancel>"
stageEditorItemNamesPrompt: "輸入物品名稱, <space>, <cancel>"
stageEditorNPCPrompt: "輸入NPC ID, <space>, <cancel>"
stageEditorNPCToTalkToPrompt: "輸入 NPC ID, <space>, <clear>, <cancel>"
stageEditorDeliveryMessagesPrompt: "輸入要傳遞的訊息, <semicolon>, <cancel>"
stageEditorKillNPCsPrompt: "請輸入擊殺數 (數字), <space>, <cancel>"
stageEditorMobsPrompt: "輸入怪物名稱, <space>, <cancel>"
stageEditorMobAmountsPrompt: "輸入怪物數量, <space>, <cancel>"
stageEditorMobLocationPrompt: "右鍵一個方塊來選擇它,<add>,<cancel>"
stageEditorMobLocationRadiiPrompt: "Enter kill location radii (number of blocks), <space>, <cancel>"
stageEditorMobLocationNamesPrompt: "Enter location names, <semicolon>, <cancel>"
stageEditorReachLocationPrompt: "Right-click on a block to select it, <add>, <cancel>"
stageEditorReachLocationRadiiPrompt: "Enter reach location radii (number of blocks), <space>, <cancel>"
stageEditorReachLocationNamesPrompt: "Enter location names, <semicolon>, <cancel>"
stageEditorTameAmountsPrompt: "Enter tame amounts, <space>, <cancel>"
stageEditorShearColorsPrompt: "Enter sheep colors, <space>, <cancel>"
stageEditorShearAmountsPrompt: "Enter shear amounts, <space>, <cancel>"
stageEditorMobLocationRadiiPrompt: "輸入擊殺位置的半徑(方塊格數), <space>, <cancel>"
stageEditorMobLocationNamesPrompt: "輸入位置名稱, <semicolon>, <cancel>"
stageEditorReachLocationPrompt: "右鍵一個方塊來選擇它, <add>, <cancel>"
stageEditorReachLocationRadiiPrompt: "輸入到達指定位置的半徑(方塊格數), <space>, <cancel>"
stageEditorReachLocationNamesPrompt: "輸入位置名稱, <semicolon>, <cancel>"
stageEditorTameAmountsPrompt: "輸入馴服數量, <space>, <cancel>"
stageEditorShearColorsPrompt: "輸入羊的顏色, <space>, <cancel>"
stageEditorShearAmountsPrompt: "輸入剪羊毛數量, <space>, <cancel>"
stageEditorEventsPrompt: "輸入任務活動名稱, <clear>, <cancel>"
stageEditorChatEventsPrompt: "Enter an event name to add, <clear>, <cancel>"
stageEditorChatEventsPrompt: "輸入增加的任務活動名稱, <clear>, <cancel>"
stageEditorChatEventsTriggerPrompt: "%yellow%Enter a chat trigger for%aqua% <event>%yellow% <cancel>"
stageEditorCommandEventsPrompt: "Enter an event name to add, <clear>, <cancel>"
stageEditorCommandEventsTriggerPrompt: "%yellow%Enter a command trigger for%aqua% <event>%yellow% <cancel>"
@ -230,10 +240,9 @@ stageEditorPasswordPhraseHint: "(This is the text that a player must enter to co
stageEditorObjectiveOverridePrompt: "Enter objective display override, <clear>, <cancel>"
stageEditorObjectiveOverrideHint: "(This override will display your own text as the objective)"
stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryAddItem: "新增項目"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -259,11 +268,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -315,9 +319,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -651,8 +655,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -30,7 +30,7 @@ quests:
requirements:
quests:
- Iron Miner
fail-requirement-message: '<red>Complete <pink>Stone Miner<red> first.'
fail-requirement-message: '<red>Complete <pink>Iron Miner<red> first.'
stages:
ordered:
1:
@ -65,7 +65,7 @@ quests:
requirements:
quests:
- Iron Miner
fail-requirement-message: '<red>Complete <pink>Stone Miner<red> first.'
fail-requirement-message: '<red>Complete <pink>Iron Miner<red> first.'
stages:
ordered:
1:

View File

@ -73,6 +73,12 @@ questEditorEnterNPCStart: "Enter NPC ID, <clear>, <cancel>"
questEditorEnterBlockStart: "Right-click on a block to use as a start point, <done>, <clear>, <cancel>"
questEditorEnterInitialEvent: "Enter an Event name, <clear>, <cancel>"
questRequiredNoneSet: "Required, none set"
questPartiesCreate: "Players added to this party may perform quests together!"
questPartiesDelete: "The quest party was disbanded."
questPartiesInvite: "<player> can now perform quests with you!"
questPartiesJoin: "You can now perform quests with <player>."
questPartiesKicked: "<player> can no longer perform quests with you."
questPartiesLeave: "You can no longer perform quests with <player>."
questWGSetRegion: "Set Region"
questWGNotInstalled: "WorldGuard not installed"
questWGPrompt: "Enter WorldGuard region, <clear>, <cancel>"
@ -104,30 +110,35 @@ questEditorNeedFinishMessage: "You must set a finish message!"
questEditorNeedStages: "Your Quest has no Stages!"
questEditorSaved: "%bold%Quest saved! %reset%(You will need to perform %red%<command> %reset% for it to appear in-game)"
questEditorExited: "Are you sure you want to exit without saving?"
questEditorDeleted: "Are you sure you want to delete the Quest"
questEditorDeleted: "Are you sure you want to delete the Quest?"
stageEditorEditStage: "Edit Stage"
stageEditorNewStage: "Add new Stage"
stageEditorStages: "Stages"
stageEditorStage: "Stage"
stageEditorBlocks: "Blocks"
stageEditorBreakBlocks: "Break blocks"
stageEditorDamageBlocks: "Damage blocks"
stageEditorPlaceBlocks: "Place blocks"
stageEditorUseBlocks: "Use blocks"
stageEditorCutBlocks: "Cut blocks"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorItems: "Items"
stageEditorCraftItems: "Craft items"
stageEditorEnchantItems: "Enchant items"
stageEditorNPCs: "NPCs"
stageEditorDeliverItems: "Deliver items"
stageEditorTalkToNPCs: "Talk to NPCs"
stageEditorKillNPCs: "Kill NPCs"
stageEditorMobs: "Mobs"
stageEditorKillMobs: "Kill mobs"
stageEditorCatchFish: "Catch fish"
stageEditorFish: "fish"
stageEditorReachLocs: "Reach locations"
stageEditorReachRadii1: "Reach within"
stageEditorReachRadii2: "blocks of"
stageEditorTameMobs: "Tame mobs"
stageEditorShearSheep: "Shear Sheep"
stageEditorKillPlayers: "Kill players"
stageEditorPlayers: "players"
stageEditorEvents: "Events"
stageEditorStageEvents: "Stage Events"
stageEditorStartEvent: "Start Event"
@ -173,10 +184,9 @@ stageEditorSetLocationNames: "Set location names"
stageEditorSetTameAmounts: "Set tame amounts"
stageEditorSetShearColors: "Set sheep colors"
stageEditorSetShearAmounts: "Set shear amounts"
stageEditorPassword: "Password objectives"
stageEditorPassword: "Password"
stageEditorAddPasswordDisplay: "Add password display"
stageEditorAddPasswordPhrases: "Add password phrase(s)"
stageEditorNoPasswordDisplays: "No password displays set"
stageEditorObjectiveOverride: "Objective display override"
stageEditorCustom: "Custom objectives"
stageEditorNoModules: "No modules loaded"
@ -232,7 +242,6 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
stageEditorDeliveryAddItem: "Add item"
stageEditorDeliveryNPCs: "Set NPC IDs"
stageEditorDeliveryMessages: "Set delivery messages"
stageEditorContainsDuplicates: "List contains duplicates!"
stageEditorInvalidBlockName: "is not a valid block name!"
stageEditorInvalidEnchantment: "is not a valid enchantment name!"
stageEditorInvalidNPC: "is not a valid NPC ID!"
@ -258,11 +267,6 @@ stageEditorNoKillLocations: "You must set kill locations first!"
stageEditorNoBlockSelected: "You must select a block first."
stageEditorNoColors: "You must set colors first!"
stageEditorNoLocations: "You must set locations first!"
stageEditorNoEnchantmentsSet: "No enchantments set"
stageEditorNoItemsSet: "No items set"
stageEditorNoMobTypesSet: "No mob types set"
stageEditorNoLocationsSet: "No locations set"
stageEditorNoColorsSet: "No colors set"
stageEditorListNotSameSize: "The block names list and the amounts list are not the same size!"
stageEditorEnchantmentNotSameSize: "The enchantments list, the item id list and the enchant amount list are not the same size!"
stageEditorDeliveriesNotSameSize: "The item list and the NPC list are not equal in size!"
@ -314,9 +318,9 @@ eventEditorErrorSaving: "An error occurred while saving."
eventEditorDeleted: "Event deleted, Quests and Events reloaded."
eventEditorSaved: "Event saved, Quests and Events reloaded."
eventEditorEnterEventName: "Enter an Event name, <cancel>"
eventEditorDeletePrompt: "Are you sure you want to delete the Event"
eventEditorDeletePrompt: "Are you sure you want to delete the Event?"
eventEditorQuitWithoutSaving: "Are you sure you want to quit without saving?"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event"
eventEditorFinishAndSave: "Are you sure you want to finish and save the Event?"
eventEditorModifiedNote: 'Note: You have modified an Event that the following Quests use:'
eventEditorForcedToQuit: "If you save the Event, anyone who is actively doing any of these Quests will be forced to quit them."
eventEditorEventInUse: "The following Quests use the Event"
@ -650,8 +654,9 @@ damage: "Damage"
place: "Place"
use: "Use"
cut: "Cut"
catchFish: "Catch Fish"
craft: "Craft"
enchantItem: "Enchant <item> with <enchantment>"
catchFish: "Catch Fish"
kill: "Kill"
killAtLocation: "Kill <mob> at <location>"
killPlayer: "Kill a Player"

View File

@ -4,8 +4,13 @@
<packaging>pom</packaging>
<groupId>me.blackvein.quests</groupId>
<artifactId>quests-parent</artifactId>
<version>3.6.0</version>
<artifactId>quests</artifactId>
<version>3.6.4</version>
<name>quests</name>
<url>https://github.com/FlyingPikachu/Quests/</url>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>