diff --git a/src/main/java/kamkeel/command/AnimationCommand.java b/src/main/java/kamkeel/command/AnimationCommand.java index 71773c93a..184d98874 100644 --- a/src/main/java/kamkeel/command/AnimationCommand.java +++ b/src/main/java/kamkeel/command/AnimationCommand.java @@ -2,100 +2,142 @@ package kamkeel.command; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; +import noppes.npcs.api.ISkinOverlay; +import noppes.npcs.api.handler.data.IAnimation; import noppes.npcs.controllers.AnimationController; import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.QuestController; -import noppes.npcs.controllers.data.Animation; import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.controllers.data.SkinOverlay; -import java.util.Arrays; import java.util.List; public class AnimationCommand extends CommandKamkeelBase { - public Animation selectedAnimation; - public List data; - - @Override - public String getCommandName() { - return "animation"; - } - - @Override - public String getDescription() { - return "Animation operations"; - } - - @Override - public String getUsage() { - return " "; - } - @Override - public boolean runSubCommands(){ - return false; + public String getCommandName() { + return "animation"; } @Override - public void processCommand(ICommandSender sender, String[] args) throws CommandException { - String playername = args[0]; - - data = PlayerDataController.Instance.getPlayersData(sender, playername); - if (data.isEmpty()) { - throw new CommandException("Unknown player: " + playername); + public String getDescription() { + return "Animation operations"; + } + + @SubCommand( + desc = "set an animation to a player", + usage = " " + ) + public void set(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + int animationId; + try { + animationId = Integer.parseInt(args[1]); + } catch (NumberFormatException ex) { + sendError(sender, "Animation num must be an integer: " + args[1]); + return; + } + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; } - - processSubCommand(sender, args[1], Arrays.copyOfRange(args, 2, args.length)); - data.get(0).animationData.updateClient(); - data.get(0).save(); - } -// @SubCommand(desc = "enable animation") -// public void on(ICommandSender sender, String[] args) throws CommandException { -// data.get(0).animationData.setEnabled(true); -// sendMessage(sender, String.format("Animations enabled for Player %s", data.get(0).player.getCommandSenderName())); -// -// } -// -// @SubCommand( -// desc = "Set animation", -// usage = "" -// ) -// public void set(ICommandSender sender, String[] args) throws CommandException { -// if(args.length != 1){ -// throw new CommandException("Please include the animation name:" + " set "); -// } -// String animationName = args[0]; -// selectedAnimation = AnimationController.getInstance().getAnimationFromName(animationName); -// if (selectedAnimation == null) { -// throw new CommandException("Unknown animation: " + animationName); -// } -// -// data.get(0).animationData.setAnimation(selectedAnimation); -// sendMessage(sender, String.format("Animation %s set for Player %s", selectedAnimation.getName(), data.get(0).player.getCommandSenderName())); -// } -// -// @SubCommand(desc = "disable animation") -// public void off(ICommandSender sender, String[] args) throws CommandException { -// data.get(0).animationData.setEnabled(false); -// sendMessage(sender, String.format("Animations disabled for Player %s", data.get(0).player.getCommandSenderName())); -// } -// -// @SubCommand(desc = "play animation") -// public void clear(ICommandSender sender, String[] args) throws CommandException { -// data.get(0).animationData.setEnabled(false); -// data.get(0).animationData.setAnimation(null); -// sendMessage(sender, String.format("Animations cleared for Player %s", data.get(0).player.getCommandSenderName())); -// -// } + IAnimation animation = AnimationController.getInstance().get(animationId); + if(animation == null){ + sendError(sender, "No Animation ID found: " + animationId); + return; + } + + for(PlayerData playerdata : data){ + playerdata.animationData.setEnabled(false); + playerdata.animationData.setAnimation(animation); + playerdata.animationData.updateClient(); + playerdata.save(); + sendResult(sender, String.format("Animation set to Player '\u00A7b%s\u00A77' on ID \u00A7d%d", playerdata.playername, animationId)); + return; + } + } @SubCommand( - desc="reload animations from disk", - permission = 4 + desc = "clear an animation from a player", + usage = "" ) - public void reload(ICommandSender sender, String args[]){ - new AnimationController(); + public void clear(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; + } + + for(PlayerData playerdata : data){ + playerdata.animationData.setEnabled(false); + playerdata.animationData.setAnimation(null); + playerdata.animationData.updateClient(); + playerdata.save(); + sendResult(sender, String.format("Animation cleared from Player '\u00A7b%s\u00A77'", playerdata.playername)); + return; + } + } + + @SubCommand( + desc = "enable an animation on a player", + usage = "" + ) + public void enable(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; + } + + for(PlayerData playerdata : data){ + if(playerdata.animationData.getAnimation() == null){ + sendError(sender, String.format("Player '\u00A7b%s\u00A74' does not have an animation set", playerdata.playername)); + return; + } + + playerdata.animationData.setEnabled(true); + playerdata.animationData.updateClient(); + playerdata.save(); + sendResult(sender, String.format("Animation Enabled for Player '\u00A7b%s\u00A77'", playerdata.playername)); + return; + } + } + + @SubCommand( + desc = "disable an animation on a player", + usage = "" + ) + public void disable(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; + } + + for(PlayerData playerdata : data){ + if(playerdata.animationData.getAnimation() == null){ + sendError(sender, String.format("Player '\u00A7b%s\u00A74' does not have an animation set", playerdata.playername)); + return; + } + + playerdata.animationData.setEnabled(false); + playerdata.animationData.updateClient(); + playerdata.save(); + sendResult(sender, String.format("Animation Disabled for Player '\u00A7b%s\u00A77'", playerdata.playername)); + return; + } + } + + @SubCommand( + desc = "reload animations" + ) + public void reload(ICommandSender sender, String args[]) { AnimationController.Instance.load(); sendResult(sender, "Animations Reloaded"); } + }