Improved Tab Completion for Skill Unlocking

This commit is contained in:
Ka0rX 2023-03-28 16:10:43 +01:00
parent 9544745cb4
commit 9facd8d3df

View File

@ -32,7 +32,7 @@ public class SkillCommandTreeNode extends CommandTreeNode {
super(parent, type); super(parent, type);
this.change = change; this.change = change;
addParameter(Parameter.PLAYER); addParameter(Parameter.PLAYER);
addParameter(new Parameter("<attribute>", addParameter(new Parameter("<skill>",
(explorer, list) -> MMOCore.plugin.skillManager.getAll().forEach(skill -> list.add(skill.getHandler().getId().toUpperCase())))); (explorer, list) -> MMOCore.plugin.skillManager.getAll().forEach(skill -> list.add(skill.getHandler().getId().toUpperCase()))));
addParameter(Parameter.AMOUNT); addParameter(Parameter.AMOUNT);
} }
@ -90,11 +90,13 @@ public class SkillCommandTreeNode extends CommandTreeNode {
super(parent, id); super(parent, id);
this.lock = lock; this.lock = lock;
addParameter(Parameter.PLAYER); addParameter(Parameter.PLAYER);
addParameter(new Parameter("<skill>",
(explorer, list) -> MMOCore.plugin.skillManager.getAll().forEach(skill -> list.add(skill.getHandler().getId().toUpperCase()))));
} }
@Override @Override
public CommandResult execute(CommandSender sender, String[] args) { public CommandResult execute(CommandSender sender, String[] args) {
if (args.length < 4) if (args.length < 5)
return CommandResult.THROW_USAGE; return CommandResult.THROW_USAGE;
Player player = Bukkit.getPlayer(args[3]); Player player = Bukkit.getPlayer(args[3]);
if (player == null) { if (player == null) {
@ -108,11 +110,21 @@ public class SkillCommandTreeNode extends CommandTreeNode {
sender.sendMessage(ChatColor.RED + "The player's class doesn't have a skill called " + args[4] + "."); sender.sendMessage(ChatColor.RED + "The player's class doesn't have a skill called " + args[4] + ".");
return CommandResult.FAILURE; return CommandResult.FAILURE;
} }
if (lock) if (lock) {
if (!playerData.getMMOPlayerData().hasUnlocked(skill.getSkill())) {
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SKILL, ChatColor.RED + "The skill " + skill.getSkill().getName() + " is already locked" + " for " + player.getName());
return CommandResult.SUCCESS;
}
playerData.getMMOPlayerData().lock(skill.getSkill()); playerData.getMMOPlayerData().lock(skill.getSkill());
else
} else {
if (playerData.getMMOPlayerData().hasUnlocked(skill.getSkill())) {
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SKILL, ChatColor.RED + "The skill " + skill.getSkill().getName() + " is already unlocked" + " for " + player.getName());
return CommandResult.SUCCESS;
}
playerData.getMMOPlayerData().unlock(skill.getSkill()); playerData.getMMOPlayerData().unlock(skill.getSkill());
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SKILL, ChatColor.GOLD+"The skill " + skill.getSkill().getName() + " is now " + (lock ? "locked" : "unlocked" + " for " + player.getName())); }
CommandVerbose.verbose(sender, CommandVerbose.CommandType.SKILL, ChatColor.GOLD + "The skill " + skill.getSkill().getName() + " is now " + (lock ? "locked" : "unlocked" + " for " + player.getName()));
return CommandResult.SUCCESS; return CommandResult.SUCCESS;
} }
} }