Improve handling of now-default name translation, fixes #678 and #720

This commit is contained in:
BuildTools 2019-03-06 15:19:09 -05:00
parent 52eabe386d
commit 70d0d3d655
7 changed files with 266 additions and 124 deletions

View File

@ -1524,35 +1524,55 @@ public class Quester {
} else if (objective.equalsIgnoreCase("breakBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "break") + " <item>";
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(increment)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("damageBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "damage") + " <item>";
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(increment)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("placeBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "place") + " <item>";
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(increment)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("useBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "use") + " <item>";
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(increment)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
} else if (objective.equalsIgnoreCase("cutBlock")) {
String message = ChatColor.GREEN + "(" + Lang.get(p, "completed") + ") " + Lang.get(p, "cut") + " <item>";
message = message + " " + goal.getAmount() + "/" + goal.getAmount();
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
if (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(increment)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1560,7 +1580,11 @@ public class Quester {
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 (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, goal.getType(), goal.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(is)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1575,7 +1599,12 @@ public class Quester {
break;
}
}
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), ench);
if (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, increment.getType(), increment.getDurability(), ench);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(increment))
.replace("<enchantment>", enchantment.getName()));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1584,7 +1613,11 @@ public class Quester {
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 (plugin.getSettings().canTranslateItems() && !increment.hasItemMeta() && !increment.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(p, message, is.getType(), is.getDurability(), null);
} else {
p.sendMessage(message.replace("<item>", ItemUtil.getName(is)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1598,7 +1631,11 @@ public class Quester {
} 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, extra);
if (plugin.getSettings().canTranslateItems()) {
plugin.getLocaleQuery().sendMessage(p, message, mob, extra);
} else {
p.sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(mob)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}
@ -1627,7 +1664,11 @@ 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, extra);
if (plugin.getSettings().canTranslateItems()) {
plugin.getLocaleQuery().sendMessage(p, message, mob, extra);
} else {
p.sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(mob)));
}
if (testComplete(quest)) {
quest.nextStage(this);
}

View File

@ -636,14 +636,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "break") + " <item>"
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount();
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
}
}
}
@ -657,14 +665,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "damage") + " <item>"
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount();
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
}
}
}
@ -678,14 +694,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "place") + " <item>"
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount();
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
}
}
}
@ -699,14 +723,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "use") + " <item>"
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount();
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
}
}
}
@ -720,14 +752,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "cut") + " <item>"
+ ChatColor.GRAY + ": " + e2.getAmount() + "/" + e.getAmount();
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
if (getSettings().canTranslateItems() && !e.hasItemMeta() && !e.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getType(), e.getDurability(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(e)));
}
}
}
}
@ -744,14 +784,22 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
if (getSettings().canTranslateItems() && !is.hasItemMeta() && !is.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(is)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "craft") + " <item>"
+ ChatColor.GRAY + ": " + is.getAmount() + "/" + is.getAmount();
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
if (getSettings().canTranslateItems() && !is.hasItemMeta() && !is.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(is)));
}
}
}
Map<Enchantment, Material> set;
@ -791,7 +839,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
}
Map<Enchantment, Integer> enchs = new HashMap<Enchantment, Integer>();
enchs.put(enchantment, 1);
localeQuery.sendMessage(quester.getPlayer(), message, mat, (short) 0, enchs);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, mat, (short) 0, enchs);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(new ItemStack(mat)))
.replace("<enchantment>", enchantment.getName()));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "enchantItem")
+ ChatColor.GRAY + ": " + num1 + "/" + num2;
@ -800,7 +853,12 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
}
Map<Enchantment, Integer> enchs = new HashMap<Enchantment, Integer>();
enchs.put(enchantment, 1);
localeQuery.sendMessage(quester.getPlayer(), message, mat, (short) 0, enchs);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, mat, (short) 0, enchs);
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(new ItemStack(mat)))
.replace("<enchantment>", enchantment.getName()));
}
}
}
}
@ -837,7 +895,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
} else {
quester.getPlayer().sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(e)));
}
} else {
String message = ChatColor.GREEN + Lang.get(quester.getPlayer(), "killAtLocation") + " "
+ ChatColor.AQUA + "<mob>" + ChatColor.GREEN + ": "
@ -847,7 +909,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
} else {
quester.getPlayer().sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(e)));
}
}
} else {
if (stage.locationsToKillWithin.isEmpty()) {
@ -858,7 +924,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
} else {
quester.getPlayer().sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(e)));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "killAtLocation") + " "
+ ChatColor.AQUA + "<mob>" + ChatColor.GRAY + ": "
@ -868,7 +938,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, e, null);
} else {
quester.getPlayer().sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(e)));
}
}
}
}
@ -903,20 +977,28 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
index++;
if (delivered < amt) {
String message = ChatColor.GREEN + Lang.get(quester.getPlayer(), "deliver")
+ ChatColor.GREEN + ": " + is.getAmount() + "/" + is.getAmount();
+ ChatColor.GREEN + ": " + delivered + "/" + is.getAmount();
message = message.replace("<npc>", getNPCName(npc));
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
if (getSettings().canTranslateItems() && !is.hasItemMeta() && !is.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(is)));
}
} else {
String message = ChatColor.GREEN + Lang.get(quester.getPlayer(), "deliver")
+ ChatColor.GREEN + ": " + is.getAmount() + "/" + is.getAmount();
+ ChatColor.GREEN + ": " + delivered + "/" + is.getAmount();
message = message.replace("<npc>", getNPCName(npc));
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
if (getSettings().canTranslateItems() && !is.hasItemMeta() && !is.getItemMeta().hasDisplayName()) {
localeQuery.sendMessage(quester.getPlayer(), message, is.getType(), is.getDurability(), is.getEnchantments());
} else {
quester.getPlayer().sendMessage(message.replace("<item>", ItemUtil.getName(is)));
}
}
}
for (Integer n : stage.citizensToInteract) {
@ -973,11 +1055,19 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
if (e2.getValue() < e.getValue()) {
String message = ChatColor.GREEN + Lang.get(quester.getPlayer(), "tame") + " " + "<mob>"
+ ChatColor.GREEN + ": " + e2.getValue() + "/" + e.getValue();
localeQuery.sendMessage(quester.getPlayer(), message, e.getKey(), null);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getKey(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(e.getKey())));
}
} else {
String message = ChatColor.GRAY + Lang.get(quester.getPlayer(), "tame") + " " + "<mob>"
+ ChatColor.GRAY + ": " + e2.getValue() + "/" + e.getValue();
localeQuery.sendMessage(quester.getPlayer(), message, e.getKey(), null);
if (getSettings().canTranslateItems()) {
localeQuery.sendMessage(quester.getPlayer(), message, e.getKey(), null);
} else {
quester.getPlayer().sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(e.getKey())));
}
}
}
}
@ -3139,6 +3229,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
return hero.getHeroClass().getName().equalsIgnoreCase(primaryClass);
}
@SuppressWarnings("deprecation")
public boolean testSecondaryHeroesClass(String secondaryClass, UUID uuid) {
Hero hero = getHero(uuid);
return hero.getSecondClass().getName().equalsIgnoreCase(secondaryClass);

View File

@ -22,7 +22,7 @@ public class Settings {
private String redoEffect = "angry_villager";
private boolean showQuestReqs = true;
private boolean showQuestTitles = true;
private boolean translateItems = false;
private boolean translateNames = false;
private boolean translateSubCommands = false;
private boolean useCompass = true;
private boolean useGPS = true;
@ -115,11 +115,23 @@ public class Settings {
public void setShowQuestTitles(boolean showQuestTitles) {
this.showQuestTitles = showQuestTitles;
}
/**
* @deprecated As of release 2.6.4, use {@link #canTranslateNames()}
*/
public boolean canTranslateItems() {
return translateItems;
return translateNames;
}
/**
* @deprecated As of release 2.6.4, use {@link #setTranslateNames()}
*/
public void setTranslateItems(boolean translateItems) {
this.translateItems = translateItems;
this.translateNames = translateItems;
}
public boolean canTranslateNames() {
return translateNames;
}
public void setTranslateNames(boolean translateItems) {
this.translateNames = translateItems;
}
public boolean canTranslateSubCommands() {
return translateSubCommands;
@ -162,7 +174,7 @@ public class Settings {
redoEffect = config.getString("npc-effects.redo-quest", "angry_villager");
showQuestReqs = config.getBoolean("show-requirements", true);
showQuestTitles = config.getBoolean("show-titles", true);
translateItems = config.getBoolean("translate-items", false);
translateNames = config.getBoolean("translate-names", true);
translateSubCommands = config.getBoolean("translate-subcommands", false);
useCompass = config.getBoolean("use-compass", true);
useGPS = config.getBoolean("use-gps-plugin", true);

View File

@ -87,15 +87,20 @@ public class NpcListener implements Listener {
for (Integer n : quester.getCurrentStage(quest).getItemDeliveryTargets()) {
if (n.equals(clicked.getId())) {
String text = "";
if (hand.hasItemMeta()) {
boolean hasMeta = hand.hasItemMeta();
if (hasMeta) {
text += ChatColor.LIGHT_PURPLE + "" + ChatColor.ITALIC + (hand.getItemMeta().hasDisplayName() ? hand.getItemMeta().getDisplayName() + ChatColor.GRAY + " (" : "");
}
text += ChatColor.AQUA + "<item>" + (hand.getDurability() != 0 ? (":" + ChatColor.BLUE + hand.getDurability()) : "") + ChatColor.GRAY;
if (hand.hasItemMeta()) {
if (hasMeta) {
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(), null);
if (plugin.getSettings().canTranslateItems() && !hasMeta && !hand.getItemMeta().hasDisplayName()) {
plugin.getLocaleQuery().sendMessage(player, Lang.get(player, "questInvalidDeliveryItem").replace("<item>", text), hand.getType(), hand.getDurability(), null);
} else {
player.sendMessage(Lang.get(player, "questInvalidDeliveryItem").replace("<item>", text).replace("<item>", ItemUtil.getName(hand)));
}
switch(reasonCode) {
case 1:
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "one item is null"));
@ -128,7 +133,7 @@ public class NpcListener implements Listener {
default:
player.sendMessage(ChatColor.GRAY + Lang.get(player, "difference").replace("<data>", "unknown"));
}
if (hand.hasItemMeta()) {
if (hasMeta) {
if (hand.getType().equals(Material.ENCHANTED_BOOK)) {
EnchantmentStorageMeta esmeta = (EnchantmentStorageMeta) hand.getItemMeta();
if (esmeta.hasStoredEnchants()) {

View File

@ -86,6 +86,7 @@ public class PlayerListener implements Listener {
plugin = newPlugin;
}
@SuppressWarnings("deprecation") // since 1.13
@EventHandler(priority = EventPriority.HIGHEST)
public void onInventoryClickEvent(InventoryClickEvent evt) {
InventoryAction ac = evt.getAction();

View File

@ -72,77 +72,74 @@ public class LocaleQuery {
* @param enchantments Enchantments for the item being translated
*/
@SuppressWarnings("deprecation")
public void sendMessage(Player player, String message, Material material, short durability, Map<Enchantment, Integer> enchantments) {
public boolean sendMessage(Player player, String message, Material material, short durability, Map<Enchantment, Integer> enchantments) {
if (material == null) {
return;
return false;
}
if (plugin.getSettings().canTranslateItems()) {
String matKey = "";
String[] enchKeys = enchantments != null ? new String[enchantments.size()] : null;
if (oldVersion) {
if (material.isBlock()) {
if (durability >= 0 && oldBlocks.containsKey(material.name() + "." + durability)) {
matKey = oldBlocks.get(material.name() + "." + durability);
} else if (oldBlocks.containsKey(material.name())) {
matKey = oldBlocks.get(material.name());
} else {
plugin.getLogger().severe("Block not found: " + material.name() + "." + durability);
return;
}
String matKey = "";
String[] enchKeys = enchantments != null ? new String[enchantments.size()] : null;
if (oldVersion) {
if (material.isBlock()) {
if (durability >= 0 && oldBlocks.containsKey(material.name() + "." + durability)) {
matKey = oldBlocks.get(material.name() + "." + durability);
} else if (oldBlocks.containsKey(material.name())) {
matKey = oldBlocks.get(material.name());
} else {
ItemStack i = new ItemStack(material, 1, durability);
if (durability >= 0 && i.getItemMeta() instanceof PotionMeta) {
if (hasBasePotionData) {
if (material.equals(Material.POTION)) {
matKey = oldPotions.get(((PotionMeta)i.getItemMeta()).getBasePotionData().getType().name());
} else if (material.equals(Material.LINGERING_POTION)) {
matKey = oldLingeringPotions.get(((PotionMeta)i.getItemMeta()).getBasePotionData().getType().name());
} else if (material.equals(Material.SPLASH_POTION)) {
matKey = oldSplashPotions.get(((PotionMeta)i.getItemMeta()).getBasePotionData().getType().name());
}
}
} else if (durability >= 0 && oldItems.containsKey(material.name() + "." + durability)) {
matKey = oldItems.get(material.name() + "." + durability);
} else if (oldItems.containsKey(material.name())) {
matKey = oldItems.get(material.name());
} else {
plugin.getLogger().severe("Item not found: " + material.name() + "." + durability);
return;
}
}
if (enchantments != null && !enchantments.isEmpty()) {
int count = 0;
for (Enchantment e : enchantments.keySet()) {
enchKeys[count] = "enchantment." + e.getName().toLowerCase().replace("_", ".")
.replace("environmental", "all").replace("protection", "protect");
count++;
}
plugin.getLogger().severe("Block not found: " + material.name() + "." + durability);
return false;
}
} else {
try {
matKey = queryByType(material);
} catch (Exception ex) {
plugin.getLogger().severe("Unable to query Material: " + material.name());
return;
}
if (enchantments != null && !enchantments.isEmpty()) {
int count = 0;
for (Enchantment e : enchantments.keySet()) {
enchKeys[count] = "enchantment.minecraft." + e.toString().toLowerCase();
count++;
ItemStack i = new ItemStack(material, 1, durability);
if (durability >= 0 && i.getItemMeta() instanceof PotionMeta) {
if (hasBasePotionData) {
if (material.equals(Material.POTION)) {
matKey = oldPotions.get(((PotionMeta)i.getItemMeta()).getBasePotionData().getType().name());
} else if (material.equals(Material.LINGERING_POTION)) {
matKey = oldLingeringPotions.get(((PotionMeta)i.getItemMeta()).getBasePotionData().getType().name());
} else if (material.equals(Material.SPLASH_POTION)) {
matKey = oldSplashPotions.get(((PotionMeta)i.getItemMeta()).getBasePotionData().getType().name());
}
}
} else if (durability >= 0 && oldItems.containsKey(material.name() + "." + durability)) {
matKey = oldItems.get(material.name() + "." + durability);
} else if (oldItems.containsKey(material.name())) {
matKey = oldItems.get(material.name());
} else {
plugin.getLogger().severe("Item not found: " + material.name() + "." + durability);
return false;
}
}
String msg = message.replace("<item>", "\",{\"translate\":\"" + matKey + "\"},\"");
if (enchKeys != null && enchKeys.length > 0) {
for (String ek : enchKeys) {
msg.replaceFirst("<enchantment>", "\",{\"translate\":\"" + ek + "\"},\"");
if (enchantments != null && !enchantments.isEmpty()) {
int count = 0;
for (Enchantment e : enchantments.keySet()) {
enchKeys[count] = "enchantment." + e.getName().toLowerCase().replace("_", ".")
.replace("environmental", "all").replace("protection", "protect");
count++;
}
}
} else {
try {
matKey = queryByType(material);
} catch (Exception ex) {
plugin.getLogger().severe("Unable to query Material: " + material.name());
return false;
}
if (enchantments != null && !enchantments.isEmpty()) {
int count = 0;
for (Enchantment e : enchantments.keySet()) {
enchKeys[count] = "enchantment.minecraft." + e.toString().toLowerCase();
count++;
}
}
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw " + player.getName() + " [\"" + msg + "\"]");
return;
}
player.sendMessage(message.replace("<item>", Quester.prettyItemString(material.name())));
String msg = message.replace("<item>", "\",{\"translate\":\"" + matKey + "\"},\"");
if (enchKeys != null && enchKeys.length > 0) {
for (String ek : enchKeys) {
msg.replaceFirst("<enchantment>", "\",{\"translate\":\"" + ek + "\"},\"");
}
}
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw " + player.getName() + " [\"" + msg + "\"]");
return true;
}
/**
@ -154,32 +151,27 @@ public class LocaleQuery {
* @param type The entity type to be translated
* @param extra Career, Ocelot, or Rabbit type if applicable
*/
public void sendMessage(Player player, String message, EntityType type, String extra) {
public boolean sendMessage(Player player, String message, EntityType type, String extra) {
if (type == null ) {
return;
return false;
}
if (plugin.getSettings().canTranslateItems()) {
String key = "";
if (oldVersion) {
if (type.name().equals("VILLAGER") && Career.valueOf(extra) != null) {
key = oldEntities.get(type.name() + "." + Career.valueOf(extra).name());
} else if (type.name().equals("OCELOT") && Ocelot.Type.valueOf(extra) != null){
key = oldEntities.get(type.name() + "." + Ocelot.Type.valueOf(extra).name());
} else if (type.name().equals("RABBIT") && Rabbit.Type.valueOf(extra).equals(Rabbit.Type.THE_KILLER_BUNNY)) {
key = oldEntities.get(type.name() + "." + Rabbit.Type.valueOf(extra).name());
} else {
key = oldEntities.get(type.name());
}
String key = "";
if (oldVersion) {
if (type.name().equals("VILLAGER") && Career.valueOf(extra) != null) {
key = oldEntities.get(type.name() + "." + Career.valueOf(extra).name());
} else if (type.name().equals("OCELOT") && Ocelot.Type.valueOf(extra) != null){
key = oldEntities.get(type.name() + "." + Ocelot.Type.valueOf(extra).name());
} else if (type.name().equals("RABBIT") && Rabbit.Type.valueOf(extra).equals(Rabbit.Type.THE_KILLER_BUNNY)) {
key = oldEntities.get(type.name() + "." + Rabbit.Type.valueOf(extra).name());
} else {
key = "entity.minecraft." + type.toString().toLowerCase();
}
if (!key.equals("")) {
String msg = message.replace("<mob>", "\",{\"translate\":\"" + key + "\"},\"");
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw " + player.getName() + " [\"" + msg + "\"]");
return;
key = oldEntities.get(type.name());
}
} else {
key = "entity.minecraft." + type.toString().toLowerCase();
}
player.sendMessage(message.replace("<mob>", Quester.prettyMobString(type)));
String msg = message.replace("<mob>", "\",{\"translate\":\"" + key + "\"},\"");
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw " + player.getName() + " [\"" + msg + "\"]");
return true;
}
/**

View File

@ -15,7 +15,7 @@ npc-effects:
redo-quest: angry_villager
show-requirements: true
show-titles: true
translate-items: false
translate-names: true
translate-subcommands: false
use-compass: true
use-gps-plugin: true