From c3f83302c5b15b293847611561a0823db8ae3742 Mon Sep 17 00:00:00 2001 From: GJ Date: Thu, 7 Feb 2013 11:57:54 -0500 Subject: [PATCH] Abstract our Spout commands. --- .../nossr50/spout/commands/MchudCommand.java | 57 +++------- .../nossr50/spout/commands/SpoutCommand.java | 53 +++++++++ .../nossr50/spout/commands/XplockCommand.java | 103 ++++++------------ 3 files changed, 101 insertions(+), 112 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/spout/commands/SpoutCommand.java diff --git a/src/main/java/com/gmail/nossr50/spout/commands/MchudCommand.java b/src/main/java/com/gmail/nossr50/spout/commands/MchudCommand.java index 303488a51..839f3fee2 100644 --- a/src/main/java/com/gmail/nossr50/spout/commands/MchudCommand.java +++ b/src/main/java/com/gmail/nossr50/spout/commands/MchudCommand.java @@ -1,56 +1,29 @@ package com.gmail.nossr50.spout.commands; import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.commands.CommandHelper; -import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.locale.LocaleLoader; -import com.gmail.nossr50.spout.SpoutConfig; import com.gmail.nossr50.spout.huds.HudType; -import com.gmail.nossr50.spout.huds.SpoutHud; -import com.gmail.nossr50.util.Users; -public class MchudCommand implements CommandExecutor { +public class MchudCommand extends SpoutCommand { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (CommandHelper.noConsoleUsage(sender)) { - return true; - } + protected boolean noArguments(Command command, CommandSender sender, String[] args) { + return false; + } - if (!mcMMO.spoutEnabled || !SpoutConfig.getInstance().getXPBarEnabled()) { - sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); - return true; - } - - PlayerProfile playerProfile = Users.getPlayer((Player) sender).getProfile(); - SpoutHud spoutHud = playerProfile.getSpoutHud(); - - if (spoutHud == null) { - sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); - return true; - } - - switch (args.length) { - case 1: - for (HudType hudType : HudType.values()) { - if (hudType.toString().equalsIgnoreCase(args[0])) { - playerProfile.setHudType(hudType); - spoutHud.initializeXpBar(); - spoutHud.updateXpBar(); - - return true; - } + @Override + protected boolean oneArgument(Command command, CommandSender sender, String[] args) { + for (HudType hudType : HudType.values()) { + if (hudType.toString().equalsIgnoreCase(args[0])) { + playerProfile.setHudType(hudType); + spoutHud.initializeXpBar(); + spoutHud.updateXpBar(); + return true; } - - sender.sendMessage(LocaleLoader.getString("Commands.mchud.Invalid")); - return true; - - default: - return false; } + + sender.sendMessage(LocaleLoader.getString("Commands.mchud.Invalid")); + return true; } } diff --git a/src/main/java/com/gmail/nossr50/spout/commands/SpoutCommand.java b/src/main/java/com/gmail/nossr50/spout/commands/SpoutCommand.java new file mode 100644 index 000000000..b22305b62 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/spout/commands/SpoutCommand.java @@ -0,0 +1,53 @@ +package com.gmail.nossr50.spout.commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.commands.CommandHelper; +import com.gmail.nossr50.datatypes.PlayerProfile; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.spout.SpoutConfig; +import com.gmail.nossr50.spout.huds.SpoutHud; +import com.gmail.nossr50.util.Users; + +public abstract class SpoutCommand implements CommandExecutor { + protected PlayerProfile playerProfile; + protected SpoutHud spoutHud; + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (CommandHelper.noConsoleUsage(sender)) { + return true; + } + + if (!mcMMO.spoutEnabled || !SpoutConfig.getInstance().getXPBarEnabled()) { + sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); + return true; + } + + playerProfile = Users.getPlayer((Player) sender).getProfile(); + spoutHud = playerProfile.getSpoutHud(); + + if (spoutHud == null) { + sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); + return true; + } + + switch (args.length) { + case 0: + return noArguments(command, sender, args); + + case 1: + return oneArgument(command, sender, args); + + default: + return false; + } + } + + protected abstract boolean noArguments(Command command, CommandSender sender, String[] args); + protected abstract boolean oneArgument(Command command, CommandSender sender, String[] args); +} diff --git a/src/main/java/com/gmail/nossr50/spout/commands/XplockCommand.java b/src/main/java/com/gmail/nossr50/spout/commands/XplockCommand.java index 2d8d43c38..179d736b8 100644 --- a/src/main/java/com/gmail/nossr50/spout/commands/XplockCommand.java +++ b/src/main/java/com/gmail/nossr50/spout/commands/XplockCommand.java @@ -1,100 +1,63 @@ package com.gmail.nossr50.spout.commands; import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.commands.CommandHelper; -import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.utilities.SkillTools; import com.gmail.nossr50.skills.utilities.SkillType; -import com.gmail.nossr50.spout.SpoutConfig; -import com.gmail.nossr50.spout.huds.SpoutHud; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; -import com.gmail.nossr50.util.Users; -public class XplockCommand implements CommandExecutor { +public class XplockCommand extends SpoutCommand { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (CommandHelper.noConsoleUsage(sender)) { + protected boolean noArguments(Command command, CommandSender sender, String[] args) { + if (spoutHud.getXpBarLocked()) { + unlockXpBar(sender); return true; } - if (!mcMMO.spoutEnabled || !SpoutConfig.getInstance().getXPBarEnabled()) { - sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); + lockXpBar(sender, spoutHud.getLastGained()); + return true; + } + + @Override + protected boolean oneArgument(Command command, CommandSender sender, String[] args) { + if (args[0].equalsIgnoreCase("on")) { + lockXpBar(sender, spoutHud.getLastGained()); return true; } - PlayerProfile playerProfile = Users.getPlayer((Player) sender).getProfile(); - SpoutHud spoutHud = playerProfile.getSpoutHud(); - SkillType lastGained; - - if (spoutHud == null) { - sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); + if (args[0].equalsIgnoreCase("off")) { + unlockXpBar(sender); return true; } - switch (args.length) { - case 0: - if (spoutHud.getXpBarLocked()) { - spoutHud.toggleXpBarLocked(); - sender.sendMessage(LocaleLoader.getString("Commands.xplock.unlocked")); - return true; - } - - lastGained = spoutHud.getLastGained(); - - if (lastGained == null) { - return false; - } - - spoutHud.toggleXpBarLocked(); - spoutHud.setSkillLock(lastGained); - spoutHud.updateXpBar(); - - sender.sendMessage(LocaleLoader.getString("Commands.xplock.locked", Misc.getCapitalized(lastGained.toString()))); + if (!SkillTools.isSkill(args[0])) { + sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid")); return true; + } - case 1: - if (args[0].equalsIgnoreCase("on")) { - lastGained = spoutHud.getLastGained(); + if (!Permissions.hasPermission(sender, "mcmmo.commands.xplock." + args[0].toLowerCase())) { + sender.sendMessage(command.getPermissionMessage()); + return true; + } - spoutHud.setXpBarLocked(true); - spoutHud.setSkillLock(lastGained); - spoutHud.updateXpBar(); - - sender.sendMessage(LocaleLoader.getString("Commands.xplock.locked", Misc.getCapitalized(lastGained.toString()))); - return true; - } - - if (args[0].equalsIgnoreCase("off")) { - spoutHud.setXpBarLocked(false); - sender.sendMessage(LocaleLoader.getString("Commands.xplock.unlocked")); - return true; - } - - if (!SkillTools.isSkill(args[0])) { - sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid")); - return true; - } - - if (!Permissions.hasPermission(sender, "mcmmo.commands.xplock." + args[0].toLowerCase())) { - sender.sendMessage(command.getPermissionMessage()); - } + lockXpBar(sender, SkillTools.getSkillType(args[0])); + return true; + } + private void lockXpBar(CommandSender sender, SkillType skill) { + if (skill != null) { spoutHud.setXpBarLocked(true); - spoutHud.setSkillLock(SkillTools.getSkillType(args[0])); + spoutHud.setSkillLock(skill); spoutHud.updateXpBar(); - - sender.sendMessage(LocaleLoader.getString("Commands.xplock.locked", Misc.getCapitalized(args[0]))); - return true; - - default: - return false; + sender.sendMessage(LocaleLoader.getString("Commands.xplock.locked", Misc.getCapitalized(skill.toString()))); } } + + private void unlockXpBar(CommandSender sender) { + spoutHud.setXpBarLocked(false); + sender.sendMessage(LocaleLoader.getString("Commands.xplock.unlocked")); + } }