Append objective progress counts

This commit is contained in:
PikaMug 2020-12-15 00:22:55 -05:00
parent 7cbbd6396b
commit 327770a2b7
2 changed files with 156 additions and 62 deletions

View File

@ -827,8 +827,13 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final ItemStack e2 : data.blocksBroken) { for (final ItemStack e2 : data.blocksBroken) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) { if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "break") + " <item>" String message = color + Lang.get(quester.getPlayer(), "break");
+ color + ": " + e2.getAmount() + "/" + e.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getAmount() + "/" + e.getAmount());
} else {
// Legacy
message += " <item>" + color + ": " + e2.getAmount() + "/" + e.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -844,8 +849,13 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final ItemStack e2 : data.blocksDamaged) { for (final ItemStack e2 : data.blocksDamaged) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) { if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "damage") + " <item>" String message = color + Lang.get(quester.getPlayer(), "damage");
+ color + ": " + e2.getAmount() + "/" + e.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getAmount() + "/" + e.getAmount());
} else {
// Legacy
message += " <item>" + color + ": " + e2.getAmount() + "/" + e.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -861,8 +871,13 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final ItemStack e2 : data.blocksPlaced) { for (final ItemStack e2 : data.blocksPlaced) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) { if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "place") + " <item>" String message = color + Lang.get(quester.getPlayer(), "place");
+ color + ": " + e2.getAmount() + "/" + e.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getAmount() + "/" + e.getAmount());
} else {
// Legacy
message += " <item>" + color + ": " + e2.getAmount() + "/" + e.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -878,8 +893,13 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final ItemStack e2 : data.blocksUsed) { for (final ItemStack e2 : data.blocksUsed) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) { if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "use") + " <item>" String message = color + Lang.get(quester.getPlayer(), "use");
+ color + ": " + e2.getAmount() + "/" + e.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getAmount() + "/" + e.getAmount());
} else {
// Legacy
message += " <item>" + color + ": " + e2.getAmount() + "/" + e.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -895,8 +915,13 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final ItemStack e2 : data.blocksCut) { for (final ItemStack e2 : data.blocksCut) {
if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) { if (e2.getType().equals(e.getType()) && e2.getDurability() == e.getDurability()) {
final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getAmount() < e.getAmount() ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "cut") + " <item>" String message = color + Lang.get(quester.getPlayer(), "cut");
+ color + ": " + e2.getAmount() + "/" + e.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getAmount() + "/" + e.getAmount());
} else {
// Legacy
message += " <item>" + color + ": " + e2.getAmount() + "/" + e.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -915,8 +940,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
final int amt = is.getAmount(); final int amt = is.getAmount();
final ChatColor color = crafted < amt ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = crafted < amt ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "craftItem") + color + ": " + crafted + "/" String message = color + Lang.get(quester.getPlayer(), "craftItem");
+ is.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + crafted + "/" + is.getAmount());
} else {
message += color + ": " + crafted + "/" + is.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -934,8 +963,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
final int amt = is.getAmount(); final int amt = is.getAmount();
final ChatColor color = smelted < amt ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = smelted < amt ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "smeltItem") + color + ": " + smelted + "/" String message = color + Lang.get(quester.getPlayer(), "smeltItem");
+ is.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + smelted + "/" + is.getAmount());
} else {
message += color + ": " + smelted + "/" + is.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -953,8 +986,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
final int amt = is.getAmount(); final int amt = is.getAmount();
final ChatColor color = enchanted < amt ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = enchanted < amt ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "enchItem") + color + ": " + enchanted + "/" String message = color + Lang.get(quester.getPlayer(), "enchItem");
+ is.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + enchanted + "/" + is.getAmount());
} else {
message += color + ": " + enchanted + "/" + is.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -979,8 +1016,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
final int amt = is.getAmount(); final int amt = is.getAmount();
final ChatColor color = brewed < amt ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = brewed < amt ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "brewItem") + color + ": " + brewed + "/" String message = color + Lang.get(quester.getPlayer(), "brewItem");
+ is.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + brewed + "/" + is.getAmount());
} else {
message += color + ": " + brewed + "/" + is.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1005,8 +1046,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
final int amt = is.getAmount(); final int amt = is.getAmount();
final ChatColor color = consumed < amt ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = consumed < amt ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "consumeItem") + color + ": " + consumed + "/" String message = color + Lang.get(quester.getPlayer(), "consumeItem");
+ is.getAmount(); if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + consumed + "/" + is.getAmount());
} else {
message += color + ": " + consumed + "/" + is.getAmount();
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1019,8 +1064,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
if (stage.cowsToMilk != null) { if (stage.cowsToMilk != null) {
final ChatColor color = data.getCowsMilked() < stage.cowsToMilk ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = data.getCowsMilked() < stage.cowsToMilk ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "milkCow") String message = color + Lang.get(quester.getPlayer(), "milkCow");
+ color + ": " + data.getCowsMilked() + "/" + stage.cowsToMilk; if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + data.getCowsMilked() + "/" + stage.cowsToMilk);
} else {
message += color + ": " + data.getCowsMilked() + "/" + stage.cowsToMilk;
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1028,8 +1077,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
if (stage.fishToCatch != null) { if (stage.fishToCatch != null) {
final ChatColor color = data.getFishCaught() < stage.fishToCatch ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = data.getFishCaught() < stage.fishToCatch ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "catchFish") String message = color + Lang.get(quester.getPlayer(), "catchFish");
+ color + ": " + data.getFishCaught() + "/" + stage.fishToCatch; if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + data.getFishCaught() + "/" + stage.fishToCatch);
} else {
message += color + ": " + data.getFishCaught() + "/" + stage.fishToCatch;
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1045,16 +1098,28 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
? ChatColor.GREEN : ChatColor.GRAY; ? ChatColor.GREEN : ChatColor.GRAY;
String message = ""; String message = "";
if (stage.locationsToKillWithin.isEmpty()) { if (stage.locationsToKillWithin.isEmpty()) {
message = color + Lang.get(quester.getPlayer(), "kill") + " " message = color + Lang.get(quester.getPlayer(), "kill");
+ ChatColor.AQUA + "<mob>" + color + ": " if (message.contains("<count>")) {
+ (data.mobNumKilled.get(data.mobsKilled.indexOf(e2))) message = message.replace("<count>", "" + color
+ "/" + (stage.mobNumToKill.get(stage.mobsToKill.indexOf(e))); + (data.mobNumKilled.get(data.mobsKilled.indexOf(e2))) + "/"
+ (stage.mobNumToKill.get(stage.mobsToKill.indexOf(e))));
} else {
message += ChatColor.AQUA + "<mob>" + color + ": "
+ (data.mobNumKilled.get(data.mobsKilled.indexOf(e2))) + "/"
+ (stage.mobNumToKill.get(stage.mobsToKill.indexOf(e)));
}
} else { } else {
message = color + Lang.get(quester.getPlayer(), "killAtLocation") + color + ": " message = color + Lang.get(quester.getPlayer(), "killAtLocation");
+ (data.mobNumKilled.get(data.mobsKilled.indexOf(e2))) + "/"
+ (stage.mobNumToKill.get(stage.mobsToKill.indexOf(e)));
message = message.replace("<location>", message = message.replace("<location>",
stage.killNames.get(stage.mobsToKill.indexOf(e))); stage.killNames.get(stage.mobsToKill.indexOf(e)));
if (message.contains("<count>")) {
message = message.replace("<count>", "" + color
+ (data.mobNumKilled.get(data.mobsKilled.indexOf(e2))) + "/"
+ (stage.mobNumToKill.get(stage.mobsToKill.indexOf(e))));
} else {
message += color + ": " + (data.mobNumKilled.get(data.mobsKilled.indexOf(e2))) + "/"
+ (stage.mobNumToKill.get(stage.mobsToKill.indexOf(e)));
}
} }
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
@ -1070,8 +1135,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
} }
if (stage.playersToKill != null) { if (stage.playersToKill != null) {
final ChatColor color = data.getPlayersKilled() < stage.playersToKill ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = data.getPlayersKilled() < stage.playersToKill ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "killPlayer") String message = color + Lang.get(quester.getPlayer(), "killPlayer");
+ color + ": " + data.getPlayersKilled() + "/" + stage.playersToKill; if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + data.getPlayersKilled() + "/" + stage.playersToKill);
} else {
message += color + ": " + data.getPlayersKilled() + "/" + stage.playersToKill;
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1087,9 +1156,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
final Integer npc = stage.itemDeliveryTargets.get(index); final Integer npc = stage.itemDeliveryTargets.get(index);
index++; index++;
final ChatColor color = delivered < toDeliver ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = delivered < toDeliver ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "deliver") String message = color + Lang.get(quester.getPlayer(), "deliver").replace("<npc>", depends.getNPCName(npc));
+ color + ": " + delivered + "/" + toDeliver; if (message.contains("<count>")) {
message = message.replace("<npc>", depends.getNPCName(npc)); message = message.replace("<count>", "" + color + delivered + "/" + toDeliver);
} else {
message += color + ": " + delivered + "/" + toDeliver;
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1104,8 +1176,8 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final Entry<Integer, Boolean> e : data.citizensInteracted.entrySet()) { for (final Entry<Integer, Boolean> e : data.citizensInteracted.entrySet()) {
if (e.getKey().equals(n)) { if (e.getKey().equals(n)) {
final ChatColor color = e.getValue() == false ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e.getValue() == false ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "talkTo"); String message = color + Lang.get(quester.getPlayer(), "talkTo")
message = message.replace("<npc>", depends.getNPCName(n)); .replace("<npc>", depends.getNPCName(n));
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1121,9 +1193,20 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
final ChatColor color = data.citizenNumKilled.get(data.citizensKilled.indexOf(n2)) final ChatColor color = data.citizenNumKilled.get(data.citizensKilled.indexOf(n2))
< stage.citizenNumToKill.get(stage.citizensToKill.indexOf(n)) == false < stage.citizenNumToKill.get(stage.citizensToKill.indexOf(n)) == false
? ChatColor.GREEN : ChatColor.GRAY; ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "kill") + " " + depends.getNPCName(n) String message = color + Lang.get(quester.getPlayer(), "kill");
+ color + " " + data.citizenNumKilled.get(stage.citizensToKill.indexOf(n)) + "/" if (message.contains("<mob>")) {
message = message.replace("<mob>", depends.getNPCName(n));
} else {
message += " " + depends.getNPCName(n);
}
if (message.contains("<count>")) {
message = message.replace("<count>", "" + color
+ data.citizenNumKilled.get(stage.citizensToKill.indexOf(n)) + "/"
+ stage.citizenNumToKill.get(stage.citizensToKill.indexOf(n)));
} else {
message += color + ": " + data.citizenNumKilled.get(stage.citizensToKill.indexOf(n)) + "/"
+ stage.citizenNumToKill.get(stage.citizensToKill.indexOf(n)); + stage.citizenNumToKill.get(stage.citizensToKill.indexOf(n));
}
if (depends.getPlaceholderApi() != null) { if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message); message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
} }
@ -1136,8 +1219,15 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final Entry<EntityType, Integer> e2 : data.mobsTamed.entrySet()) { for (final Entry<EntityType, Integer> e2 : data.mobsTamed.entrySet()) {
if (e.getKey().equals(e2.getKey())) { if (e.getKey().equals(e2.getKey())) {
final ChatColor color = e2.getValue() < e.getValue() == false ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getValue() < e.getValue() == false ? ChatColor.GREEN : ChatColor.GRAY;
final String message = color + Lang.get(quester.getPlayer(), "tame") + " " + "<mob>" String message = color + Lang.get(quester.getPlayer(), "tame");
+ color + ": " + e2.getValue() + "/" + e.getValue(); if (!message.contains("<mob>")) {
message += " <mob>";
}
if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getValue() + "/" + e.getValue());
} else {
message += color + ": " + e2.getValue() + "/" + e.getValue();
}
if (getSettings().canTranslateNames()) { if (getSettings().canTranslateNames()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getKey(), null); localeQuery.sendMessage(quester.getPlayer(), message, e.getKey(), null);
} else { } else {
@ -1151,10 +1241,14 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
for (final Entry<DyeColor, Integer> e2 : data.sheepSheared.entrySet()) { for (final Entry<DyeColor, Integer> e2 : data.sheepSheared.entrySet()) {
if (e.getKey().equals(e2.getKey())) { if (e.getKey().equals(e2.getKey())) {
final ChatColor color = e2.getValue() < e.getValue() == false ? ChatColor.GREEN : ChatColor.GRAY; final ChatColor color = e2.getValue() < e.getValue() == false ? ChatColor.GREEN : ChatColor.GRAY;
String message = color + Lang.get(quester.getPlayer(), "shearSheep") String message = color + Lang.get(quester.getPlayer(), "shearSheep");
+ color + ": " + e2.getValue() + "/" + e.getValue();
message = message.replace("<color>", message = message.replace("<color>",
MiscUtil.getPrettyDyeColorName(MiscUtil.getProperDyeColor(e.getKey().name()))); MiscUtil.getPrettyDyeColorName(MiscUtil.getProperDyeColor(e.getKey().name())));
if (message.contains("<count>")) {
message = message.replace("<count>", "" + color + e2.getValue() + "/" + e.getValue());
} else {
message += color + ": " + e2.getValue() + "/" + e.getValue();
}
quester.getPlayer().sendMessage(message); quester.getPlayer().sendMessage(message);
} }
} }

View File

@ -644,25 +644,25 @@ questAccepted: "Quest accepted: <quest>"
currentQuest: "Current Quests:" currentQuest: "Current Quests:"
completedQuest: "Completed Quests:" completedQuest: "Completed Quests:"
noMoreQuest: "No more quests available." noMoreQuest: "No more quests available."
break: "Break" break: "Break <item>: <count>"
damage: "Damage" damage: "Damage <item>: <count>"
place: "Place" place: "Place <item>: <count>"
use: "Use" use: "Use <item>: <count>"
cut: "Shear" cut: "Shear <item>: <count>"
craftItem: "Craft <item>" craftItem: "Craft <item>: <count>"
smeltItem: "Smelt <item>" smeltItem: "Smelt <item>: <count>"
enchItem: "Enchant <item>" enchItem: "Enchant <item>: <count>"
brewItem: "Brew <item>" brewItem: "Brew <item>: <count>"
consumeItem: "Consume <item>" consumeItem: "Consume <item>: <count>"
catchFish: "Catch Fish" catchFish: "Catch Fish: <count>"
milkCow: "Milk Cow" milkCow: "Milk Cow: <count>"
kill: "Kill" kill: "Kill <mob>: <count>"
killAtLocation: "Kill <mob> at <location>" killAtLocation: "Kill <mob> at <location>: <count>"
killPlayer: "Kill a Player" killPlayer: "Kill a Player: <count>"
deliver: "Deliver <item> to <npc>" deliver: "Deliver <item> to <npc>: <count>"
talkTo: "Talk to <npc>" talkTo: "Talk to <npc>"
tame: "Tame" tame: "Tame <mob>: <count>"
shearSheep: "Shear <color> Sheep" shearSheep: "Shear <color> Sheep: <count>"
goTo: "Go to <location>" goTo: "Go to <location>"
completed: "Completed" completed: "Completed"
redoCompleted: "(Completed)" redoCompleted: "(Completed)"