diff --git a/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java index e4a686222..a185c9171 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.commands.skills; -import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill; import com.gmail.nossr50.listeners.InteractionManager; @@ -46,7 +45,7 @@ public class MmoInfoCommand implements TabExecutor { player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.DetailsHeader")); player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.Mystery")); return true; - } else if (InteractionManager.getAbstractByName(args[0]) != null || PrimarySkillType.SUBSKILL_NAMES.contains(args[0])) { + } else if (InteractionManager.getAbstractByName(args[0]) != null || pluginRef.getSkillTools().isSubSkillNameExact(args[0])) { displayInfo(player, args[0]); return true; } @@ -64,7 +63,7 @@ public class MmoInfoCommand implements TabExecutor { public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { switch (args.length) { case 1: - return StringUtil.copyPartialMatches(args[0], PrimarySkillType.SUBSKILL_NAMES, new ArrayList<>(PrimarySkillType.SUBSKILL_NAMES.size())); + return StringUtil.copyPartialMatches(args[0], pluginRef.getSkillTools().EXACT_SUBSKILL_NAMES, new ArrayList<>(pluginRef.getSkillTools().EXACT_SUBSKILL_NAMES.size())); default: return ImmutableList.of(); } diff --git a/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java b/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java index 363549892..493751ae9 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java @@ -13,6 +13,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.StringUtils; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -38,8 +39,10 @@ public class SkillTools { private final mcMMO pluginRef; private final int ENCHANT_SPEED_VAR; + //TODO: Should these be hash sets instead of lists? public final List LOCALIZED_SKILL_NAMES; - public final List SUBSKILL_NAMES; + public final List FORMATTED_SUBSKILL_NAMES; + public final Set EXACT_SUBSKILL_NAMES; public final List CHILD_SKILLS; public final List NON_CHILD_SKILLS; public final List COMBAT_SKILLS; @@ -63,7 +66,6 @@ public class SkillTools { initPrimaryChildMap(); initPrimaryToolMap(); initSuperAbilityParentRelationships(); - buildSubSkillNameList(); List childSkills = new ArrayList<>(); List nonChildSkills = new ArrayList<>(); @@ -81,7 +83,8 @@ public class SkillTools { MISC_SKILLS = ImmutableList.of(PrimarySkillType.ACROBATICS, PrimarySkillType.ALCHEMY, PrimarySkillType.REPAIR, PrimarySkillType.SALVAGE, PrimarySkillType.SMELTING); LOCALIZED_SKILL_NAMES = ImmutableList.copyOf(buildLocalizedPrimarySkillNames()); - SUBSKILL_NAMES = ImmutableList.copyOf(buildSubSkillNameList()); + FORMATTED_SUBSKILL_NAMES = ImmutableList.copyOf(buildFormattedSubSkillNameList()); + EXACT_SUBSKILL_NAMES = ImmutableSet.copyOf(buildExactSubSkillNameList()); CHILD_SKILLS = ImmutableList.copyOf(childSkills); NON_CHILD_SKILLS = ImmutableList.copyOf(nonChildSkills); @@ -100,6 +103,15 @@ public class SkillTools { primarySkillToolMap.put(PrimarySkillType.MINING, ToolType.PICKAXE); } + /** + * See if a skill enum exists + * @param subSkillName + * @return + */ + public boolean isSubSkillNameExact(String subSkillName) { + return EXACT_SUBSKILL_NAMES.contains(subSkillName); + } + private void initSuperAbilityParentRelationships() { superAbilityParentRelationshipMap = new HashMap<>(); mainActivatedAbilityChildMap = new HashMap<>(); @@ -183,7 +195,7 @@ public class SkillTools { * Used in tab completion mostly * @return a list of formatted sub skill names */ - private ArrayList buildSubSkillNameList() { + private ArrayList buildFormattedSubSkillNameList() { ArrayList subSkillNameList = new ArrayList<>(); for(SubSkillType subSkillType : SubSkillType.values()) { @@ -193,6 +205,16 @@ public class SkillTools { return subSkillNameList; } + private HashSet buildExactSubSkillNameList() { + HashSet subSkillNameExactSet = new HashSet<>(); + + for(SubSkillType subSkillType : SubSkillType.values()) { + subSkillNameExactSet.add(subSkillType.toString()); + } + + return subSkillNameExactSet; + } + /** * Builds a map containing the relationships of SubSkillTypes to PrimarySkillTypes * Disgusting Hacky Fix until the new skill system is in place