diff --git a/src/main/java/kamkeel/command/CommandKamkeel.java b/src/main/java/kamkeel/command/CommandKamkeel.java index 9597fe049..b2eacc390 100644 --- a/src/main/java/kamkeel/command/CommandKamkeel.java +++ b/src/main/java/kamkeel/command/CommandKamkeel.java @@ -31,6 +31,7 @@ public class CommandKamkeel extends CommandBase{ registerCommand(new CloneCommand()); registerCommand(new ConfigCommand()); registerCommand(new AnimationCommand()); + registerCommand(new OverlayCommand()); } public void registerCommand(CommandKamkeelBase command){ diff --git a/src/main/java/kamkeel/command/OverlayCommand.java b/src/main/java/kamkeel/command/OverlayCommand.java new file mode 100644 index 000000000..5808b1e40 --- /dev/null +++ b/src/main/java/kamkeel/command/OverlayCommand.java @@ -0,0 +1,194 @@ +package kamkeel.command; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.api.ISkinOverlay; +import noppes.npcs.client.EntityUtil; +import noppes.npcs.constants.EnumAvailabilityDialog; +import noppes.npcs.constants.EnumAvailabilityQuest; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.*; +import noppes.npcs.entity.EntityDialogNpc; + +import java.util.Collection; +import java.util.List; + +public class OverlayCommand extends CommandKamkeelBase { + + @Override + public String getCommandName() { + return "overlay"; + } + + @Override + public String getDescription() { + return "Overlay operations"; + } + + @SubCommand( + desc = "set an overlay to a player", + usage = " " + ) + public void set(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + int overlayID; + try { + overlayID = Integer.parseInt(args[1]); + } catch (NumberFormatException ex) { + sendError(sender, "Overlay num must be an integer: " + args[1]); + return; + } + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; + } + for(PlayerData playerdata : data){ + SkinOverlay skinOverlay = new SkinOverlay(args[2]); + playerdata.skinOverlays.add(overlayID, skinOverlay); + playerdata.save(); + sendResult(sender, String.format("Overlay added to Player '\u00A7b%s\u00A77' on ID \u00A7d%d", playerdata.playername, overlayID)); + return; + } + } + + @SubCommand( + desc = "remove an overlay from a player", + usage = " " + ) + public void remove(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + int overlayID; + try { + overlayID = Integer.parseInt(args[1]); + } catch (NumberFormatException ex) { + sendError(sender, "Overlay num must be an integer: " + args[1]); + return; + } + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; + } + for(PlayerData playerdata : data){ + if(playerdata.skinOverlays.has(overlayID)){ + playerdata.skinOverlays.remove(overlayID); + playerdata.save(); + sendResult(sender, String.format("Overlay removed to Player '\u00A7b%s\u00A77' on ID \u00A7d%d", playerdata.playername, overlayID)); + } + else { + sendResult(sender, String.format("No overlay found for Player '\u00A7b%s\u00A77' on ID \u00A7d%d", playerdata.playername, overlayID)); + } + return; + } + } + + @SubCommand( + desc = "modify an overlay for a player", + usage = " " + ) + public void modify(ICommandSender sender, String args[]) throws CommandException{ + String playername=args[0]; + int overlayID; + try { + overlayID = Integer.parseInt(args[1]); + } catch (NumberFormatException ex) { + sendError(sender, "Overlay num must be an integer: " + args[1]); + return; + } + List data = PlayerDataController.Instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + sendError(sender, "Unknown player: " + playername); + return; + } + + if(!args[2].equalsIgnoreCase("blend") && !args[2].equalsIgnoreCase("glow")){ + sendError(sender, "Unknown Entry: " + args[2]); + return; + } + boolean isBlend = args[2].equalsIgnoreCase("blend"); + + if(!args[3].equalsIgnoreCase("true") && !args[3].equalsIgnoreCase("false")){ + sendError(sender, "Unknown Bool: " + args[3]); + return; + } + + boolean isTrue = args[3].equalsIgnoreCase("true"); + + for(PlayerData playerdata : data){ + if(!playerdata.skinOverlays.has(overlayID)){ + sendError(sender, String.format("Player '\u00A7b%s\u00A7c' does not have Overlay ID \u00A7d%d", playerdata.playername, overlayID)); + return; + } + + ISkinOverlay skinOverlay = playerdata.skinOverlays.get(overlayID); + if(skinOverlay == null){ + sendError(sender, String.format("Player '\u00A7b%s\u00A7c' does not have Overlay ID \u00A7d%d", playerdata.playername, overlayID)); + return; + } + + if(isBlend){ + skinOverlay.setBlend(isTrue); + } + else{ + skinOverlay.setGlow(isTrue); + } + playerdata.skinOverlays.add(overlayID, skinOverlay); + playerdata.save(); + sendResult(sender, String.format("Overlay ID \u00A7d%d \u00A77Player '\u00A7b%s\u00A77' Updated ", overlayID, playerdata.playername)); + return; + } + } + + @SubCommand( + desc = "clears all overlays from a player", + usage = "" + ) + 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.skinOverlays.clear(); + playerdata.save(); + sendResult(sender, String.format("Overlays cleared from Player '\u00A7b%s\u00A77'", playerdata.playername)); + return; + } + } + + @SubCommand( + desc = "List all overlays on a player", + usage = "" + ) + public void info(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){ + sendResult(sender, "--------------------"); + if(playerdata.skinOverlays.size() == 0){ + sendResult(sender, String.format("No Overlays found for Player '\u00A7b%s\u00A77'", playerdata.playername)); + } + else { + for(ISkinOverlay overlay : playerdata.skinOverlays.overlayList.values()){ + if(overlay != null){ + sendResult(sender, String.format("%s", overlay.getTexture())); + } + } + } + sendResult(sender, "--------------------"); + return; + } + } +}