From 08fdc1603eab41dd2341e10b2fae63422684ff1d Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 20:03:40 +0200 Subject: [PATCH 01/30] Update AlertCommand --- .../bungeecore/commands/AlertCommand.java | 39 +++++-------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/AlertCommand.java b/src/de/steamwar/bungeecore/commands/AlertCommand.java index a271cf8e..9eb32d3f 100644 --- a/src/de/steamwar/bungeecore/commands/AlertCommand.java +++ b/src/de/steamwar/bungeecore/commands/AlertCommand.java @@ -21,49 +21,28 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.bot.SteamwarDiscordBot; +import de.steamwar.command.SWCommand; +import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; -public class AlertCommand extends BasicCommand { +public class AlertCommand extends SWCommand { public AlertCommand() { super("alert", "bungeecore.alert", "broadcast", "bbc"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(args.length == 0){ - Message.send("USAGE_ALERT", sender); + @Register(description = "USAGE_ALERT") + public void broadcast(CommandSender sender, @OptionalValue("") @StaticValue("-discord") String sendToDiscord, String... message) { + if (message.length == 0) { + ChatSender.of(sender).system(new Message("USAGE_ALERT")); return; } - String s; - boolean discordAnnounce = false; - if (args[0].equals("-discord")) { - if (args.length == 1) { - Message.send("USAGE_ALERT", sender); - return; - } - discordAnnounce = true; - s = join(1, args); - } else { - s = join(0, args); - } - + String s = String.join(" ", message); Message.broadcast("ALERT", ChatColor.translateAlternateColorCodes('&', s)); - if (discordAnnounce && SteamwarDiscordBot.instance() != null) { + if ("-discord".equals(sendToDiscord) && SteamwarDiscordBot.instance() != null) { SteamwarDiscordBot.instance().getAnnouncementListener().announce(s); } } - - private String join(int startIndex, String... strings) { - StringBuilder st = new StringBuilder(); - for (int i = startIndex; i < strings.length; i++) { - if (i != startIndex) { - st.append(" "); - } - st.append(strings[i]); - } - return st.toString(); - } } From 546e507939c3dd0bee49b2270d9e47ebee571e73 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 20:46:13 +0200 Subject: [PATCH 02/30] Update BugCommand --- .../bungeecore/commands/BugCommand.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/BugCommand.java b/src/de/steamwar/bungeecore/commands/BugCommand.java index 2f607853..96484236 100644 --- a/src/de/steamwar/bungeecore/commands/BugCommand.java +++ b/src/de/steamwar/bungeecore/commands/BugCommand.java @@ -19,27 +19,22 @@ package de.steamwar.bungeecore.commands; -import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.SWException; import de.steamwar.bungeecore.sql.SteamwarUser; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.SWCommand; +import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class BugCommand extends BasicCommand { +public class BugCommand extends SWCommand { public BugCommand() { super("bug", null); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - - ProxiedPlayer player = (ProxiedPlayer) sender; + @Register + public void bugMessage(ProxiedPlayer player, String... message) { String server = player.getServer().getInfo().getName(); - String message = String.join(" ", args); SteamwarUser user = SteamwarUser.get(player.getUniqueId()); - SWException.log(server, message, player.getName() + " " + user.getId()); - Message.send("BUG_MESSAGE", player); + SWException.log(server, String.join(" ", message), player.getName() + " " + user.getId()); + ChatSender.of(player).system("BUG_MESSAGE"); } } From d94080a0cba038bf506dfd5df352286723a2339c Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 21:20:45 +0200 Subject: [PATCH 03/30] Update CheckCommand --- .../bungeecore/commands/CheckCommand.java | 143 ++++++++---------- 1 file changed, 59 insertions(+), 84 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/CheckCommand.java b/src/de/steamwar/bungeecore/commands/CheckCommand.java index ec5b5cbc..02fc7a87 100644 --- a/src/de/steamwar/bungeecore/commands/CheckCommand.java +++ b/src/de/steamwar/bungeecore/commands/CheckCommand.java @@ -26,6 +26,7 @@ import de.steamwar.bungeecore.sql.CheckedSchematic; import de.steamwar.bungeecore.sql.SchematicNode; import de.steamwar.bungeecore.sql.SchematicType; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; @@ -41,7 +42,7 @@ import java.util.*; import java.util.concurrent.TimeUnit; import java.util.logging.Level; -public class CheckCommand extends BasicCommand { +public class CheckCommand extends SWCommand { private static Map> checkQuestions = new HashMap<>(); private static Map> ranks = new HashMap<>(); @@ -77,55 +78,8 @@ public class CheckCommand extends BasicCommand { Message.send("CHECK_REMINDER", player, Message.parse("CHECK_REMINDER_HOVER", player), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check list"), schematics.size() - currentCheckers.size()); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) sender; - - if(args.length == 0){ - help(sender); - return; - } - - switch(args[0].toLowerCase()){ - case "list": - list(player); - break; - case "schematic": - schematic(player, args[1]); - break; - case "next": - case "accept": - next(player, args); - break; - case "cancel": - abort(player); - break; - case "decline": - decline(player, args); - break; - default: - help(player); - } - } - - public static List getSchemsToCheck(){ - List schematicList = new LinkedList<>(); - - for (SchematicType type : SchematicType.values()) { - if (type.check()) - schematicList.addAll(SchematicNode.getAllSchematicsOfType(type.toDB())); - } - return schematicList; - } - - public static String getChecker(SchematicNode schematic) { - if (currentSchems.get(schematic.getId()) == null) return null; - return currentSchems.get(schematic.getId()).checker.getName(); - } - - private void list(ProxiedPlayer player) { + @Register(value = "list", description = "CHECK_HELP_LIST") + public void list(ProxiedPlayer player) { List schematicList = getSchemsToCheck(); Message.sendPrefixless("CHECK_LIST_HEADER", player, schematicList.size()); @@ -153,7 +107,8 @@ public class CheckCommand extends BasicCommand { } } - private void schematic(ProxiedPlayer player, String schemID){ + @Register(value = "schematic", noTabComplete = true) + public void schematic(ProxiedPlayer player, String schemID) { if(isChecking(player)){ Message.send("CHECK_SCHEMATIC_ALREADY_CHECKING", player); return; @@ -171,6 +126,57 @@ public class CheckCommand extends BasicCommand { new CheckSession(player, schem); } + @Register(value = "cancel", description = "CHECK_HELP_CANCEL") + @Register("abort") + public void abortCommand(ProxiedPlayer player) { + abort(player); + } + + public static void abort(ProxiedPlayer player) { + if(notChecking(player)) + return; + + Message.send("CHECK_ABORT", player); + currentCheckers.get(player.getUniqueId()).abort(); + } + + @Register(value = "next", description = "CHECK_HELP_NEXT") + public void next(ProxiedPlayer player) { + next(player, new String[0]); + } + + @Register(value = "accept") + public void accept(ProxiedPlayer player, @OptionalValue("") String rank) { + if (rank.equals("")) { + next(player, new String[0]); + } else { + next(player, new String[]{rank}); + } + } + + @Register(value = "decline", description = "CHECK_HELP_DECLINE") + public void decline(ProxiedPlayer player, String... message) { + if(notChecking(player)) + return; + + currentCheckers.get(player.getUniqueId()).decline(String.join(" ", message)); + } + + public static List getSchemsToCheck(){ + List schematicList = new LinkedList<>(); + + for (SchematicType type : SchematicType.values()) { + if (type.check()) + schematicList.addAll(SchematicNode.getAllSchematicsOfType(type.toDB())); + } + return schematicList; + } + + public static String getChecker(SchematicNode schematic) { + if (currentSchems.get(schematic.getId()) == null) return null; + return currentSchems.get(schematic.getId()).checker.getName(); + } + private static boolean notChecking(ProxiedPlayer player){ if(!isChecking(player)){ Message.send("CHECK_NOT_CHECKING", player); @@ -184,9 +190,9 @@ public class CheckCommand extends BasicCommand { return; int rank = 0; - if(args.length > 1){ + if(args.length > 0){ try{ - rank = Integer.parseInt(args[1]); + rank = Integer.parseInt(args[0]); }catch(NumberFormatException e){ Message.send("CHECK_INVALID_RANK", player); return; @@ -196,37 +202,6 @@ public class CheckCommand extends BasicCommand { currentCheckers.get(player.getUniqueId()).next(rank); } - public static void abort(ProxiedPlayer player){ - if(notChecking(player)) - return; - - Message.send("CHECK_ABORT", player); - currentCheckers.get(player.getUniqueId()).abort(); - } - - private void decline(ProxiedPlayer player, String[] args){ - if(notChecking(player)) - return; - - if(args.length < 2) { - help(player); - return; - } - - StringBuilder message = new StringBuilder(); - for (int i = 1; i < args.length; i++) - message.append(args[i]).append(" "); - - currentCheckers.get(player.getUniqueId()).decline(message.toString()); - } - - private void help(CommandSender sender){ - Message.sendPrefixless("CHECK_HELP_LIST", sender); - Message.sendPrefixless("CHECK_HELP_NEXT", sender); - Message.sendPrefixless("CHECK_HELP_DECLINE", sender); - Message.sendPrefixless("CHECK_HELP_CANCEL", sender); - } - private static class CheckSession{ private final ProxiedPlayer checker; private final SchematicNode schematic; From 568f1bf598b15d536c0db7a67c0325fc019e0f80 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 21:30:55 +0200 Subject: [PATCH 04/30] Update DevCommand --- .../bungeecore/commands/DevCommand.java | 96 +++++++++++-------- 1 file changed, 54 insertions(+), 42 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/DevCommand.java b/src/de/steamwar/bungeecore/commands/DevCommand.java index 753fdc4d..56a6bbfe 100644 --- a/src/de/steamwar/bungeecore/commands/DevCommand.java +++ b/src/de/steamwar/bungeecore/commands/DevCommand.java @@ -21,6 +21,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.sql.Punishment; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.*; import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; @@ -34,76 +35,87 @@ import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; -public class DevCommand extends BasicCommand { +public class DevCommand extends SWCommand { private final File devServerDir = new File("/configs/DevServer"); private final Map devServers = new HashMap<>(); public DevCommand() { - super("dev", ""); + super("dev"); } - @Override - public void execute(CommandSender s, String[] args) { - if (!(s instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) s; - - ChatSender sender = ChatSender.of(player); - if (sender.user().isPunishedWithMessage(sender, Punishment.PunishmentType.NoDevServer)) { - return; - } - + @Register + public void simpleCommand(@Guard ProxiedPlayer player) { updateDevServers(); - if(devServers.isEmpty()) { + ChatSender sender = ChatSender.of(player); + if (devServers.isEmpty()) { sender.system("DEV_NO_SERVER"); + return; } else if (devServers.size() == 1) { player.connect(devServers.values().stream().findAny().get()); - } else if (args.length == 0) { - ServerInfo info = devServers.get(player.getName().toLowerCase()); - if (info == null) { - sender.system("DEV_UNKNOWN_SERVER"); - return; - } - - player.connect(info); - } else { - ServerInfo info = devServers.get(args[0].toLowerCase()); - if (info == null) { - sender.system("DEV_NO_SERVER"); - return; - } - - player.connect(info); + return; } + + ServerInfo info = devServers.get(player.getName().toLowerCase()); + if (info == null) { + sender.system("DEV_UNKNOWN_SERVER"); + return; + } + + player.connect(info); } - @Override - public Iterable onTabComplete(CommandSender sender, String[] args) { - if (!(sender instanceof ProxiedPlayer) || args.length > 1) { - return Collections.emptyList(); + @Register + public void selectedCommand(@Guard ProxiedPlayer player, @Mapper("dev") String name) { + updateDevServers(); + ChatSender sender = ChatSender.of(player); + ServerInfo info = devServers.get(name.toLowerCase()); + if (info == null) { + sender.system("DEV_NO_SERVER"); + return; } - updateDevServers(); - return devServers.keySet().stream().filter(s -> { - if (args.length == 0) return true; - return s.startsWith(args[0].toLowerCase()); - }).collect(Collectors.toList()); + player.connect(info); + } + + @ClassGuard(value = GuardChecker.class, local = true) + public GuardChecker punishmentGuardChecker() { + return (commandSender, guardCheckType, previousArguments, s) -> { + ChatSender sender = ChatSender.of(commandSender); + if (guardCheckType == GuardCheckType.COMMAND) { + if (sender.user().isPunishedWithMessage(sender, Punishment.PunishmentType.NoDevServer)) { + return GuardResult.DENIED; + } + } else { + if (sender.user().isPunished(Punishment.PunishmentType.NoDevServer)) { + return GuardResult.DENIED; + } + } + return GuardResult.ALLOWED; + }; + } + + @Mapper(value = "dev", local = true) + public TypeMapper devServers() { + return SWCommandUtils.createMapper(s -> s, s -> { + updateDevServers(); + return devServers.keySet(); + }); } private void updateDevServers() { String[] serverFiles = devServerDir.list(); Map devServerFiles = new HashMap<>(); - if(serverFiles != null) { - for(String serverFile : serverFiles) { + if (serverFiles != null) { + for (String serverFile : serverFiles) { String[] server = serverFile.split("\\."); devServerFiles.put(server[0], Integer.parseInt(server[1])); } } devServers.entrySet().removeIf(entry -> { - if(!devServerFiles.containsKey(entry.getKey())) { + if (!devServerFiles.containsKey(entry.getKey())) { ProxyServer.getInstance().getServers().remove(entry.getValue().getName()); return true; } From d0ac81aa93a56c9096f52f93ed5eebad65567522 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 21:31:48 +0200 Subject: [PATCH 05/30] Update EventreloadCommand --- .../steamwar/bungeecore/commands/EventreloadCommand.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/EventreloadCommand.java b/src/de/steamwar/bungeecore/commands/EventreloadCommand.java index 239b9def..9d5008a3 100644 --- a/src/de/steamwar/bungeecore/commands/EventreloadCommand.java +++ b/src/de/steamwar/bungeecore/commands/EventreloadCommand.java @@ -20,15 +20,16 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.sql.EventFight; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; -public class EventreloadCommand extends BasicCommand { +public class EventreloadCommand extends SWCommand { public EventreloadCommand() { super("eventreload", "bungeecore.softreload"); } - @Override - public void execute(CommandSender sender, String[] args) { + @Register + public void execute(CommandSender sender) { EventFight.loadAllComingFights(); } } From d85b93364ef52ff7cff75329b67dac26900beea4 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 21:42:05 +0200 Subject: [PATCH 06/30] Update EventRescheduleCommand --- .../commands/EventRescheduleCommand.java | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/EventRescheduleCommand.java b/src/de/steamwar/bungeecore/commands/EventRescheduleCommand.java index 06934f37..bc7465c2 100644 --- a/src/de/steamwar/bungeecore/commands/EventRescheduleCommand.java +++ b/src/de/steamwar/bungeecore/commands/EventRescheduleCommand.java @@ -23,35 +23,29 @@ import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.Event; import de.steamwar.bungeecore.sql.EventFight; import de.steamwar.bungeecore.sql.Team; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeMapper; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.sql.Timestamp; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.ListIterator; +import java.util.stream.Collectors; +import java.util.stream.Stream; -public class EventRescheduleCommand extends BasicCommand { +public class EventRescheduleCommand extends SWCommand { public EventRescheduleCommand() { super("eventreschedule", "bungeecore.softreload"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) sender; - - if(args.length != 2){ - Message.send("EVENTRESCHEDULE_USAGE", player); - return; - } - - Team teamBlue = Team.get(args[0]); - Team teamRed = Team.get(args[1]); + @Register + public void reschedule(ProxiedPlayer player, Team teamBlue, Team teamRed) { Event event = Event.get(); - if(teamBlue == null || teamRed == null || event == null){ + if(event == null){ Message.send("EVENTRESCHEDULE_UNKNOWN_TEAM", player); return; } @@ -74,4 +68,22 @@ public class EventRescheduleCommand extends BasicCommand { Message.send("EVENTRESCHEDULE_NO_FIGHT", player); } + + @Register + public TypeMapper teamTypeMapper() { + return new TypeMapper() { + @Override + public Team map(CommandSender commandSender, String[] previousArguments, String s) { + return Team.get(s); + } + + @Override + public Collection tabCompletes(CommandSender sender, String[] previousArguments, String s) { + Event event = Event.get(); + if (event == null) return null; + List fights = EventFight.getEvent(event.getEventID()); + return fights.stream().flatMap(fight -> Stream.of(fight.getTeamBlue(), fight.getTeamRed())).map(Team::get).map(Team::getTeamKuerzel).distinct().collect(Collectors.toList()); + } + }; + } } From 99f5fbc3b87cbdc399afe17d7745863ba2e66410 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 21:49:20 +0200 Subject: [PATCH 07/30] Update GDPRQuery --- .../steamwar/bungeecore/commands/GDPRQuery.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/GDPRQuery.java b/src/de/steamwar/bungeecore/commands/GDPRQuery.java index 444a22c8..671d5a2d 100644 --- a/src/de/steamwar/bungeecore/commands/GDPRQuery.java +++ b/src/de/steamwar/bungeecore/commands/GDPRQuery.java @@ -4,6 +4,7 @@ import de.steamwar.bungeecore.BungeeCore; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.Statement; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -12,19 +13,20 @@ import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -public class GDPRQuery extends BasicCommand { +public class GDPRQuery extends SWCommand { public GDPRQuery() { super("gdprquery", "bungeecore.softreload"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; + @Register + public void generate(ProxiedPlayer player) { + generate(player, player); + } - ProxiedPlayer player = (ProxiedPlayer) sender; - SteamwarUser user = args.length == 0 ? SteamwarUser.get(player.getUniqueId()) : SteamwarUser.get(args[0]); + @Register + public void generate(ProxiedPlayer player, ProxiedPlayer forPlayer) { + SteamwarUser user = SteamwarUser.get(forPlayer); if(user == null) { Message.send("UNKNOWN_PLAYER", player); return; From 4fc0e69a472ba3bc0860cdbb3965e534582b58cc Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 21:56:04 +0200 Subject: [PATCH 08/30] Update IgnoreCommand --- .../bungeecore/commands/IgnoreCommand.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/IgnoreCommand.java b/src/de/steamwar/bungeecore/commands/IgnoreCommand.java index 9151fdef..0c11ee0c 100644 --- a/src/de/steamwar/bungeecore/commands/IgnoreCommand.java +++ b/src/de/steamwar/bungeecore/commands/IgnoreCommand.java @@ -22,28 +22,26 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.IgnoreSystem; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; +import de.steamwar.command.SWCommandUtils; +import de.steamwar.command.TypeMapper; +import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class IgnoreCommand extends BasicCommand { +import java.util.stream.Collectors; + +public class IgnoreCommand extends SWCommand { public IgnoreCommand() { super("ignore", null); } - @Override - public void execute(CommandSender sender, String[] args) { - if(args.length < 1) { - Message.send("USAGE_IGNORE", sender); - return; - } - - if (!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer p = (ProxiedPlayer) sender; + @Register(description = "USAGE_IGNORE") + public void genericCommand(ProxiedPlayer p, @Mapper("player") String toIgnore) { SteamwarUser user = SteamwarUser.get(p.getUniqueId()); - SteamwarUser target = SteamwarUser.get(args[0]); + SteamwarUser target = SteamwarUser.get(toIgnore); if(target == null){ Message.send("UNKNOWN_PLAYER", p); return; @@ -60,4 +58,9 @@ public class IgnoreCommand extends BasicCommand { IgnoreSystem.ignore(user, target); Message.send("IGNORE_MESSAGE", p, target.getUserName()); } + + @Mapper(value = "player", local = true) + public TypeMapper playerTypeMapper() { + return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList())); + } } From 19616aef841deff5c1a11bf1724e6c84174ca2e2 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:04:43 +0200 Subject: [PATCH 09/30] Update KickCommand --- .../bungeecore/commands/KickCommand.java | 38 ++++++++----------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/KickCommand.java b/src/de/steamwar/bungeecore/commands/KickCommand.java index cb27fab5..54a2e495 100644 --- a/src/de/steamwar/bungeecore/commands/KickCommand.java +++ b/src/de/steamwar/bungeecore/commands/KickCommand.java @@ -21,48 +21,40 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.BungeeCore; import de.steamwar.bungeecore.Message; +import de.steamwar.command.SWCommand; +import de.steamwar.command.SWCommandUtils; +import de.steamwar.command.TypeMapper; +import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; -import java.util.ArrayList; +import java.util.stream.Collectors; -public class KickCommand extends BasicCommand { +public class KickCommand extends SWCommand { public KickCommand() { super("kick", "bungeecore.kick"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(args.length == 0){ - Message.send("KICK_USAGE", sender); - return; - } - - ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]); + @Register(description = "KICK_USAGE") + public void genericCommand(CommandSender sender, @Mapper("player") String player, String... message) { + ProxiedPlayer target = ProxyServer.getInstance().getPlayer(player); if(target == null){ Message.send("KICK_OFFLINE", sender); return; } - if(args.length == 1){ + if (message.length == 0) { target.disconnect(Message.parseToComponent("KICK_NORMAL", true, target)); - }else{ - StringBuilder msgBuilder = new StringBuilder(); - msgBuilder.append(BungeeCore.CHAT_PREFIX).append("§c"); - for (int i = 1; i < args.length; i++){ - msgBuilder.append(args[i]).append(" "); - } - target.disconnect(BungeeCore.stringToText(msgBuilder.toString())); + } else { + target.disconnect(BungeeCore.stringToText(BungeeCore.CHAT_PREFIX + "§c" + String.join(" ", message))); } Message.send("KICK_CONFIRM", sender, target.getName()); } - @Override - public Iterable onTabComplete(CommandSender commandSender, String[] args) { - if(args.length == 1) - return allPlayers(args[0]); - return new ArrayList<>(); + @Mapper(value = "player", local = true) + public TypeMapper playerTypeMapper() { + return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList())); } } From c6f9019ce35732db946d0e4350de0a4d76026904 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:06:21 +0200 Subject: [PATCH 10/30] Update ListCommand --- src/de/steamwar/bungeecore/commands/ListCommand.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ListCommand.java b/src/de/steamwar/bungeecore/commands/ListCommand.java index 631f4080..6caa4a14 100644 --- a/src/de/steamwar/bungeecore/commands/ListCommand.java +++ b/src/de/steamwar/bungeecore/commands/ListCommand.java @@ -22,6 +22,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Servertype; import de.steamwar.bungeecore.Subserver; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; @@ -33,7 +34,7 @@ import java.util.List; import java.util.TreeMap; import java.util.stream.Collectors; -public class ListCommand extends BasicCommand { +public class ListCommand extends SWCommand { public ListCommand() { super("list", ""); @@ -60,8 +61,8 @@ public class ListCommand extends BasicCommand { return playerMap; } - @Override - public void execute(CommandSender commandSender, String[] strings) { + @Register + public void genericCommand(CommandSender commandSender) { TreeMap> playerMap = getCustomTablist(); for (String server : playerMap.navigableKeySet()) { String serverName = server; From 7236885590fb59c509b1745951aced907c486cd3 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:07:29 +0200 Subject: [PATCH 11/30] Update LocalCommand --- .../steamwar/bungeecore/commands/LocalCommand.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/LocalCommand.java b/src/de/steamwar/bungeecore/commands/LocalCommand.java index 28717f7b..ab77eb3e 100644 --- a/src/de/steamwar/bungeecore/commands/LocalCommand.java +++ b/src/de/steamwar/bungeecore/commands/LocalCommand.java @@ -20,20 +20,18 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.listeners.ChatListener; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class LocalCommand extends BasicCommand { +public class LocalCommand extends SWCommand { public LocalCommand() { super("local", null, "bc", "bauchat"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - - ChatListener.localChat((ProxiedPlayer) sender, String.join(" ", args)); + @Register + public void genericCommand(ProxiedPlayer player, String... message) { + ChatListener.localChat(player, String.join(" ", message)); } } From 9f5e714912509216eda6cd65d0c7b7f32694b321 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:10:09 +0200 Subject: [PATCH 12/30] Update MsgCommand --- .../bungeecore/commands/MsgCommand.java | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/MsgCommand.java b/src/de/steamwar/bungeecore/commands/MsgCommand.java index 0107b788..f5f7a9cc 100644 --- a/src/de/steamwar/bungeecore/commands/MsgCommand.java +++ b/src/de/steamwar/bungeecore/commands/MsgCommand.java @@ -21,34 +21,23 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.listeners.ChatListener; import de.steamwar.bungeecore.sql.IgnoreSystem; +import de.steamwar.command.SWCommand; import de.steamwar.messages.ChatSender; -import net.md_5.bungee.api.CommandSender; -import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; -import java.util.ArrayList; -import java.util.Arrays; import java.util.stream.Stream; import static de.steamwar.bungeecore.Storage.lastChats; -public class MsgCommand extends BasicCommand { +public class MsgCommand extends SWCommand { public MsgCommand() { super("msg", "", "w", "tell"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - - if (args.length < 2) { - ChatSender.of(sender).system("MSG_USAGE"); - return; - } - - msg((ProxiedPlayer) sender, ProxyServer.getInstance().getPlayer(args[0]), Arrays.copyOfRange(args, 1, args.length)); + @Register(description = "MSG_USAGE") + public void genericCommand(ProxiedPlayer sender, ProxiedPlayer target, String... message) { + msg(sender, target, message); } public static void msg(ProxiedPlayer player, ProxiedPlayer target, String[] args) { @@ -69,14 +58,6 @@ public class MsgCommand extends BasicCommand { lastChats.put(target, player); } - @Override - public Iterable onTabComplete(CommandSender commandSender, String[] args) { - if(args.length == 1){ - return allPlayers(args[0]); - } - return new ArrayList<>(); - } - public static void remove(ProxiedPlayer player){ lastChats.remove(player); } From 6c301c987dbf053aa700de6788b471fef5823e9e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:11:21 +0200 Subject: [PATCH 13/30] Update PingCommand --- .../steamwar/bungeecore/commands/PingCommand.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/PingCommand.java b/src/de/steamwar/bungeecore/commands/PingCommand.java index 014a6df1..04c22fa1 100644 --- a/src/de/steamwar/bungeecore/commands/PingCommand.java +++ b/src/de/steamwar/bungeecore/commands/PingCommand.java @@ -20,20 +20,17 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class PingCommand extends BasicCommand { +public class PingCommand extends SWCommand { public PingCommand() { - super("ping", ""); + super("ping"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(sender instanceof ProxiedPlayer){ - ProxiedPlayer player = (ProxiedPlayer) sender; - Message.send("PING_RESPONSE", player, player.getPing()); - } + @Register + public void genericCommand(ProxiedPlayer player) { + Message.send("PING_RESPONSE", player, player.getPing()); } } From 4134e564cc1a5c8fa79cefb29930cf3d5ef49f56 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:12:25 +0200 Subject: [PATCH 14/30] Update PlaytimeCommand --- .../bungeecore/commands/PlaytimeCommand.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/PlaytimeCommand.java b/src/de/steamwar/bungeecore/commands/PlaytimeCommand.java index 23e16a09..c9c3850d 100644 --- a/src/de/steamwar/bungeecore/commands/PlaytimeCommand.java +++ b/src/de/steamwar/bungeecore/commands/PlaytimeCommand.java @@ -21,6 +21,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import org.apache.commons.lang3.LocaleUtils; @@ -29,21 +30,18 @@ import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; -public class PlaytimeCommand extends BasicCommand{ +public class PlaytimeCommand extends SWCommand { public PlaytimeCommand() { - super("playtime", null); + super("playtime"); } - @Override - public void execute(CommandSender sender, String[] strings) { - if(!(sender instanceof ProxiedPlayer)) - return; - - NumberFormat format = NumberFormat.getNumberInstance(((ProxiedPlayer)sender).getLocale()); + @Register + public void genericCommand(ProxiedPlayer player) { + NumberFormat format = NumberFormat.getNumberInstance((player).getLocale()); format.setMaximumFractionDigits(2); - String formattedText = format.format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600)); + String formattedText = format.format((SteamwarUser.get(player).getOnlinetime() / (double) 3600)); - Message.send("HOURS_PLAYED", sender, formattedText); + Message.send("HOURS_PLAYED", player, formattedText); } } From fd14666880b904b0ad98e0141358812c1af2cda2 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 15 Jun 2022 20:18:31 +0200 Subject: [PATCH 15/30] Update PollCommand --- .../bungeecore/commands/PollCommand.java | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/PollCommand.java b/src/de/steamwar/bungeecore/commands/PollCommand.java index 3a84f50b..e6fb7550 100644 --- a/src/de/steamwar/bungeecore/commands/PollCommand.java +++ b/src/de/steamwar/bungeecore/commands/PollCommand.java @@ -23,35 +23,29 @@ import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.listeners.PollSystem; import de.steamwar.bungeecore.sql.PollAnswer; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.GuardCheckType; +import de.steamwar.command.GuardChecker; +import de.steamwar.command.GuardResult; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class PollCommand extends BasicCommand { +public class PollCommand extends SWCommand { public PollCommand() { - super("poll", ""); + super("poll"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - - ProxiedPlayer player = (ProxiedPlayer) sender; - - if(PollSystem.noCurrentPoll()){ - Message.send("POLL_NO_POLL", player); - return; - } - - if(args.length == 0){ - PollSystem.sendPoll(player); - return; - } + @Register + public void genericCommand(@Guard ProxiedPlayer player) { + PollSystem.sendPoll(player); + } + @Register(noTabComplete = true) + public void answerPoll(@Guard ProxiedPlayer player, String answerString) { int answer; try { - answer = Integer.parseUnsignedInt(args[0]); + answer = Integer.parseUnsignedInt(answerString); if(answer < 1 || answer > PollSystem.answers()) throw new NumberFormatException(); }catch(NumberFormatException e){ @@ -67,4 +61,17 @@ public class PollCommand extends BasicCommand { pollAnswer.setAnswer(answer); } + + @ClassGuard(value = ProxiedPlayer.class, local = true) + public GuardChecker noPoll() { + return (commandSender, guardCheckType, previousArguments, s) -> { + if(PollSystem.noCurrentPoll()){ + if (guardCheckType == GuardCheckType.COMMAND) { + Message.send("POLL_NO_POLL", commandSender); + } + return GuardResult.DENIED; + } + return GuardResult.ALLOWED; + }; + } } From a7541dc0c31bf398133914b45bcb204b56edb7ee Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 10:57:12 +0200 Subject: [PATCH 16/30] Update PollresultCommand --- .../commands/PollresultCommand.java | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/PollresultCommand.java b/src/de/steamwar/bungeecore/commands/PollresultCommand.java index df77cb8b..4011f4c7 100644 --- a/src/de/steamwar/bungeecore/commands/PollresultCommand.java +++ b/src/de/steamwar/bungeecore/commands/PollresultCommand.java @@ -22,33 +22,39 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.listeners.PollSystem; import de.steamwar.bungeecore.sql.PollAnswer; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.GuardCheckType; +import de.steamwar.command.GuardChecker; +import de.steamwar.command.GuardResult; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Map; -public class PollresultCommand extends BasicCommand { +public class PollresultCommand extends SWCommand { public PollresultCommand() { super("pollresult", "bungeecore.pollresults"); } - @Override - public void execute(CommandSender sender, String[] strings) { - if(!(sender instanceof ProxiedPlayer)) - return; - - if(PollSystem.noCurrentPoll()) { - Message.send("POLLRESULT_NOPOLL", sender); - return; - } - - ProxiedPlayer player = (ProxiedPlayer) sender; - + @Register + public void genericCommand(@Guard ProxiedPlayer player) { Map voted = PollAnswer.getCurrentResults(); Message.send("POLLRESULT_HEADER", player, voted.values().stream().reduce(Integer::sum).orElse(0), PollSystem.getQuestion()); for (Map.Entry e: voted.entrySet()) { - Message.send("POLLRESULT_LIST", sender, e.getKey(), e.getValue()); + Message.send("POLLRESULT_LIST", player, e.getKey(), e.getValue()); } } + + @ClassGuard(value = ProxiedPlayer.class, local = true) + public GuardChecker noPoll() { + return (commandSender, guardCheckType, previousArguments, s) -> { + if(PollSystem.noCurrentPoll()){ + if (guardCheckType == GuardCheckType.COMMAND) { + Message.send("POLL_NO_POLL", commandSender); + } + return GuardResult.DENIED; + } + return GuardResult.ALLOWED; + }; + } } From e4c07bc2113bd3077c7a8d212309e196c5c77b79 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:04:59 +0200 Subject: [PATCH 17/30] Update PunishmentCommand --- .../commands/PunishmentCommand.java | 63 ++++++++++--------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/PunishmentCommand.java b/src/de/steamwar/bungeecore/commands/PunishmentCommand.java index a02b48fc..888e43c0 100644 --- a/src/de/steamwar/bungeecore/commands/PunishmentCommand.java +++ b/src/de/steamwar/bungeecore/commands/PunishmentCommand.java @@ -22,6 +22,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.Punishment; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -34,65 +35,67 @@ import java.util.Date; public class PunishmentCommand { public PunishmentCommand(String command, Punishment.PunishmentType punishmentType) { - new BasicCommand(command, "bungeecore.ban") { - @Override - public void execute(CommandSender sender, String[] args) { - if (punishmentType.isNeedsAdmin() && !SteamwarUser.get((ProxiedPlayer) sender).getUserGroup().isAdminGroup()) { - return; - } - if (args.length < 3) { - Message.send("PUNISHMENT_USAGE", sender, command); + new SWCommand(command, "bungeecore.ban") { + @Register(description = "PUNISHMENT_USAGE") + public void genericCommand(ProxiedPlayer player, String toPunish, String date, String... message) { + if (punishmentType.isNeedsAdmin() && !SteamwarUser.get(player).getUserGroup().isAdminGroup()) { return; } - SteamwarUser target = unsafeUser(sender, args[0]); + SteamwarUser target = unsafeUser(player, toPunish); if (target == null) return; - Timestamp banTime = parseTime(sender, args[1]); + Timestamp banTime = parseTime(player, date); if (banTime == null) return; - StringBuilder reason = new StringBuilder(); - for (int i = 2; i < args.length; i++) { - reason.append(args[i]).append(" "); - } - boolean isPerma = args[1].equalsIgnoreCase("perma"); - String msg = reason.toString(); - target.punish(punishmentType, banTime, msg, SteamwarUser.get(sender.getName()).getId(), isPerma); - Message.team(punishmentType.getTeamMessage(), new Message("PREFIX"), target.getUserName(), sender.getName(), new Message((isPerma ? "PUNISHMENT_PERMA" : "PUNISHMENT_UNTIL"), banTime), msg); + boolean isPerma = date.equalsIgnoreCase("perma"); + String msg = String.join(" ", message); + target.punish(punishmentType, banTime, msg, SteamwarUser.get(player.getName()).getId(), isPerma); + Message.team(punishmentType.getTeamMessage(), new Message("PREFIX"), target.getUserName(), player.getName(), new Message((isPerma ? "PUNISHMENT_PERMA" : "PUNISHMENT_UNTIL"), banTime), msg); } }; if (punishmentType.getUnpunishmentMessage() == null) { return; } String antiCommand = "un" + command; - new BasicCommand(antiCommand, "bungeecore.ban") { - @Override - public void execute(CommandSender sender, String[] args) { - if (punishmentType.isNeedsAdmin() && !SteamwarUser.get((ProxiedPlayer) sender).getUserGroup().isAdminGroup()) { - return; - } - if (args.length < 1) { - Message.send("UNPUNISHMENT_USAGE", sender, antiCommand); + new SWCommand(antiCommand, "bungeecore.ban") { + @Register(description = "PUNISHMENT_USAGE") + public void genericCommand(ProxiedPlayer player, String toUnpunish) { + if (punishmentType.isNeedsAdmin() && !SteamwarUser.get(player).getUserGroup().isAdminGroup()) { return; } - SteamwarUser target = existingUser(sender, args[0]); + SteamwarUser target = existingUser(player, toUnpunish); if (target == null) return; if (!target.isPunished(punishmentType)) { - Message.send(punishmentType.getUsageNotPunished(), sender); + Message.send(punishmentType.getUsageNotPunished(), player); return; } - Message.send(punishmentType.getUnpunishmentMessage(), sender, target.getUserName()); - target.punish(punishmentType, Timestamp.from(new Date().toInstant()), antiCommand, SteamwarUser.get(sender.getName()).getId(), false); + Message.send(punishmentType.getUnpunishmentMessage(), player, target.getUserName()); + target.punish(punishmentType, Timestamp.from(new Date().toInstant()), antiCommand, SteamwarUser.get(player.getName()).getId(), false); } }; } + protected SteamwarUser existingUser(CommandSender sender, String arg){ + SteamwarUser target = SteamwarUser.get(arg); + if(target == null) + Message.send("UNKNOWN_PLAYER", sender); + return target; + } + + protected SteamwarUser unsafeUser(CommandSender sender, String arg){ + SteamwarUser target = SteamwarUser.getOrCreateOfflinePlayer(arg); + if(target == null) + Message.send("UNKNOWN_PLAYER", sender); + return target; + } + public static Timestamp parseTime(CommandSender sender, String arg) { if (arg.equalsIgnoreCase("perma")) { return Punishment.PERMA_TIME; From 21f020e13d0111ca4363f93fd35137717fba84d6 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:08:12 +0200 Subject: [PATCH 18/30] Update RankCommand --- .../bungeecore/commands/RankCommand.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/RankCommand.java b/src/de/steamwar/bungeecore/commands/RankCommand.java index f76932e0..eca55186 100644 --- a/src/de/steamwar/bungeecore/commands/RankCommand.java +++ b/src/de/steamwar/bungeecore/commands/RankCommand.java @@ -23,32 +23,36 @@ import de.steamwar.bungeecore.ArenaMode; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.UserElo; +import de.steamwar.command.SWCommand; +import de.steamwar.command.SWCommandUtils; +import de.steamwar.command.TypeMapper; +import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Optional; +import java.util.stream.Collectors; -public class RankCommand extends BasicCommand { +public class RankCommand extends SWCommand { public RankCommand() { - super("rank", null); + super("rank"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; + @Register + public void ownRank(ProxiedPlayer player) { + rank(player, player.getName()); + } - ProxiedPlayer player = (ProxiedPlayer) sender; - SteamwarUser user = SteamwarUser.get(player.getUniqueId()); - if (args.length > 0) { - SteamwarUser nUser = SteamwarUser.get(args[0]); - if (nUser == null) { - Message.send("RANK_PLAYER_NOT_FOUND", player); - return; - } - Message.send("RANK_PLAYER_FOUND", player, nUser.getUserName()); - user = nUser; + @Register + public void rank(ProxiedPlayer player, @Mapper("player") String s) { + SteamwarUser user = SteamwarUser.get(s); + if (user == null) { + Message.send("RANK_PLAYER_NOT_FOUND", player); + return; + } + if (!player.getName().equals(s)) { + Message.send("RANK_PLAYER_FOUND", player, user.getUserName()); } for(ArenaMode mode : ArenaMode.getAllModes()) { if (!mode.isRanked()) @@ -67,4 +71,9 @@ public class RankCommand extends BasicCommand { Message.send("RANK_EMBLEM", player, UserElo.getEmblemProgression(player, mode.getChatName(), user.getId())); } } + + @Mapper(value = "player", local = true) + public TypeMapper playerTypeMapper() { + return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList())); + } } From 84ead29ddbc103278ab5bf9b074b734c8a2fb39b Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:09:24 +0200 Subject: [PATCH 19/30] Update RCommand --- .../bungeecore/commands/RCommand.java | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/RCommand.java b/src/de/steamwar/bungeecore/commands/RCommand.java index 62e5af8b..32f1a64d 100644 --- a/src/de/steamwar/bungeecore/commands/RCommand.java +++ b/src/de/steamwar/bungeecore/commands/RCommand.java @@ -19,28 +19,19 @@ package de.steamwar.bungeecore.commands; -import de.steamwar.messages.ChatSender; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.connection.ProxiedPlayer; import static de.steamwar.bungeecore.Storage.lastChats; -public class RCommand extends BasicCommand { +public class RCommand extends SWCommand { public RCommand() { super("r", "", "reply"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - - if(args.length == 0){ - ChatSender.of(sender).system("R_USAGE"); - return; - } - - MsgCommand.msg((ProxiedPlayer) sender, lastChats.get(sender), args); + @Register(description = "R_USAGE") + public void genericCommand(ProxiedPlayer player, String... message) { + MsgCommand.msg(player, lastChats.get(player), message); } } From 67d816e90b6f93fd906db725bbb66e2b684a2989 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:10:19 +0200 Subject: [PATCH 20/30] Update RegelnCommand --- .../steamwar/bungeecore/commands/RegelnCommand.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/RegelnCommand.java b/src/de/steamwar/bungeecore/commands/RegelnCommand.java index 37755f4e..2721b732 100644 --- a/src/de/steamwar/bungeecore/commands/RegelnCommand.java +++ b/src/de/steamwar/bungeecore/commands/RegelnCommand.java @@ -20,21 +20,18 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class RegelnCommand extends BasicCommand { +public class RegelnCommand extends SWCommand { public RegelnCommand() { - super("regeln", null); + super("regeln"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) sender; - + @Register + public void genericCommand(ProxiedPlayer player) { Message.send("REGELN_RULES", player); Message.sendPrefixless("REGELN_AS", player, Message.parse("REGELN_AS_HOVER", player), new ClickEvent(ClickEvent.Action.OPEN_URL, Message.parse("REGELN_AS_URL", player))); Message.sendPrefixless("REGELN_MWG", player, Message.parse("REGELN_MWG_HOVER", player), new ClickEvent(ClickEvent.Action.OPEN_URL, Message.parse("REGELN_MWG_URL", player))); From 279577a536c5b70b2e94b1e83483d2e4c18296eb Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:15:43 +0200 Subject: [PATCH 21/30] Update ReplayCommand --- .../bungeecore/commands/ReplayCommand.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ReplayCommand.java b/src/de/steamwar/bungeecore/commands/ReplayCommand.java index ef6e5c06..1130108a 100644 --- a/src/de/steamwar/bungeecore/commands/ReplayCommand.java +++ b/src/de/steamwar/bungeecore/commands/ReplayCommand.java @@ -27,6 +27,7 @@ import de.steamwar.bungeecore.sql.Fight; import de.steamwar.bungeecore.sql.Punishment; import de.steamwar.bungeecore.sql.SchematicType; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -35,18 +36,14 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class ReplayCommand extends BasicCommand { +public class ReplayCommand extends SWCommand { public ReplayCommand() { - super("replay", null); + super("replay"); } - @Override - public void execute(CommandSender s, String[] args) { - if(!(s instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) s; - + @Register + public void genericCommand(ProxiedPlayer player, @OptionalValue("") String optionalMap) { ChatSender sender = ChatSender.of(player); if (sender.user().isPunishedWithMessage(sender, Punishment.PunishmentType.NoFightServer)) return; @@ -57,8 +54,8 @@ public class ReplayCommand extends BasicCommand { ServerStarter starter = new ServerStarter().replay(fight.getFightID()).blueLeader(player); String map = mode.getRandomMap(); - if (args.length > 0) { - String tMap = mode.hasMap(args[0]); + if (!optionalMap.equals("")) { + String tMap = mode.hasMap(optionalMap); if (tMap != null) map = tMap; } From 160136833e5a36d7074077c9678d7b26d2a2798e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:16:47 +0200 Subject: [PATCH 22/30] Update ServerSwitchCommand --- .../bungeecore/commands/ServerSwitchCommand.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ServerSwitchCommand.java b/src/de/steamwar/bungeecore/commands/ServerSwitchCommand.java index 7fef9003..19974fd0 100644 --- a/src/de/steamwar/bungeecore/commands/ServerSwitchCommand.java +++ b/src/de/steamwar/bungeecore/commands/ServerSwitchCommand.java @@ -19,12 +19,13 @@ package de.steamwar.bungeecore.commands; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class ServerSwitchCommand extends BasicCommand { +public class ServerSwitchCommand extends SWCommand { private String serverName; @@ -33,12 +34,9 @@ public class ServerSwitchCommand extends BasicCommand { serverName = name; } - @Override - public void execute(CommandSender sender, String[] strings) { - if(sender instanceof ProxiedPlayer){ - ProxiedPlayer player = (ProxiedPlayer) sender; - ServerInfo target = ProxyServer.getInstance().getServerInfo(serverName); - player.connect(target); - } + @Register + public void genericCommand(ProxiedPlayer player) { + ServerInfo target = ProxyServer.getInstance().getServerInfo(serverName); + player.connect(target); } } From b4b46b56a4ade8b40a9d55425bfd3a7b5c412a76 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:18:13 +0200 Subject: [PATCH 23/30] Update ServerTeamchatCommand --- .../bungeecore/commands/ServerTeamchatCommand.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ServerTeamchatCommand.java b/src/de/steamwar/bungeecore/commands/ServerTeamchatCommand.java index 26b4db1d..ea4ce9f2 100644 --- a/src/de/steamwar/bungeecore/commands/ServerTeamchatCommand.java +++ b/src/de/steamwar/bungeecore/commands/ServerTeamchatCommand.java @@ -20,23 +20,24 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.listeners.ChatListener; +import de.steamwar.command.SWCommand; import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.CommandSender; -public class ServerTeamchatCommand extends BasicCommand { +public class ServerTeamchatCommand extends SWCommand { public ServerTeamchatCommand() { super("stc", "bungeecore.teamchat","serverteamchat"); } - @Override - public void execute(CommandSender s, String[] args) { - ChatSender sender = ChatSender.of(s); - if(args.length == 0) { + @Register(description = "STC_USAGE") + public void genericCommand(CommandSender commandSender, String... message) { + ChatSender sender = ChatSender.of(commandSender); + if(message.length == 0) { sender.system("STC_USAGE"); return; } - ChatListener.sendChat(sender, ChatSender.serverteamReceivers(), "CHAT_SERVERTEAM", null, String.join(" ", args)); + ChatListener.sendChat(sender, ChatSender.serverteamReceivers(), "CHAT_SERVERTEAM", null, String.join(" ", message)); } } From 4cd0150042ed597c7f310bbe60edbb14f7a51e00 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:19:03 +0200 Subject: [PATCH 24/30] Update SetLocaleCommand --- .../bungeecore/commands/SetLocaleCommand.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/SetLocaleCommand.java b/src/de/steamwar/bungeecore/commands/SetLocaleCommand.java index 9ffbcbc0..798a58cc 100644 --- a/src/de/steamwar/bungeecore/commands/SetLocaleCommand.java +++ b/src/de/steamwar/bungeecore/commands/SetLocaleCommand.java @@ -19,25 +19,22 @@ package de.steamwar.bungeecore.commands; +import de.steamwar.command.SWCommand; import de.steamwar.messages.ChatSender; -import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Objects; -public class SetLocaleCommand extends BasicCommand { +public class SetLocaleCommand extends SWCommand { public SetLocaleCommand() { super("setlocale", null, "setlanguage"); } - @Override - public void execute(CommandSender s, String[] strings) { - if (!(s instanceof ProxiedPlayer)) - return; - - ChatSender sender = ChatSender.of(s); - sender.user().setLocale(Objects.requireNonNull(((ProxiedPlayer) s).getLocale()), true); + @Register + public void genericCommand(ProxiedPlayer player) { + ChatSender sender = ChatSender.of(player); + sender.user().setLocale(Objects.requireNonNull(player.getLocale()), true); sender.system("LOCK_LOCALE_CHANGED"); } } From 29ed8b16b8fe60b48c396ba1e731d1e5ea242149 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 11:19:50 +0200 Subject: [PATCH 25/30] Update StatCommand --- src/de/steamwar/bungeecore/commands/StatCommand.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/StatCommand.java b/src/de/steamwar/bungeecore/commands/StatCommand.java index b633fb51..753f2537 100644 --- a/src/de/steamwar/bungeecore/commands/StatCommand.java +++ b/src/de/steamwar/bungeecore/commands/StatCommand.java @@ -21,6 +21,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Node; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.CommandSender; import java.io.BufferedReader; @@ -28,14 +29,14 @@ import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; -public class StatCommand extends BasicCommand { +public class StatCommand extends SWCommand { public StatCommand() { super("stat", "bungeecore.softreload", "stats"); } - @Override - public void execute(CommandSender sender, String[] args) { + @Register + public void genericCommand(CommandSender sender) { Map serverCount = new HashMap<>(); try { Process process = new ProcessBuilder("ps", "x").start(); @@ -53,5 +54,4 @@ public class StatCommand extends BasicCommand { Node.forEach(node -> Message.send("STAT_SERVER", sender, node.getName(), node.getLoad(), serverCount.getOrDefault(node.getName(), 0))); } - } From 9e867a74578e51c51a618d90d6eb88a0427cda5f Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 12:15:50 +0200 Subject: [PATCH 26/30] Update TutorialCommand --- .../bungeecore/commands/TutorialCommand.java | 93 +++++++++---------- 1 file changed, 46 insertions(+), 47 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/TutorialCommand.java b/src/de/steamwar/bungeecore/commands/TutorialCommand.java index 4f557426..8ad13935 100644 --- a/src/de/steamwar/bungeecore/commands/TutorialCommand.java +++ b/src/de/steamwar/bungeecore/commands/TutorialCommand.java @@ -26,7 +26,9 @@ import de.steamwar.bungeecore.inventory.SWListInv; import de.steamwar.bungeecore.inventory.SWStreamInv; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Tutorial; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.GuardChecker; +import de.steamwar.command.GuardResult; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -38,66 +40,63 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.stream.Collectors; -public class TutorialCommand extends BasicCommand { +public class TutorialCommand extends SWCommand { public TutorialCommand() { super("tutorial", null); + addDefaultHelpMessage("TUTORIAL_CREATE_HELP"); + addDefaultHelpMessage("TUTORIAL_OWN_HELP"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) sender; + @Register + public void genericCommand(ProxiedPlayer player) { + openInventory(player, true, false); + } - if(args.length == 0) { - openInventory(player, true, false); + @Register("rate") + public void rate(ProxiedPlayer player) { + player.chat("/tutorial rate"); + } + + @Register("rate") + public void rate(ProxiedPlayer player, int id) { + Tutorial tutorial = Tutorial.get(id); + if(tutorial == null) { + BungeeCore.get().getLogger().log(Level.SEVERE, "rate executed with nonexistent id: " + id); return; } - switch(args[0].toLowerCase()) { - case "rate": - if(args.length < 2) { - player.chat("/tutorial rate"); - return; - } + rate(player, tutorial); + } - int id; - try { - id = Integer.parseInt(args[1]); - } catch (NumberFormatException e) { - BungeeCore.get().getLogger().log(Level.SEVERE, "rate executed with non number: " + args[1]); - return; - } + @Register(value = "create", description = "TUTORIAL_CREATE_HELP") + public void create(ProxiedPlayer player, String material, String... name) { + create(player, String.join(" ", name), material.toUpperCase()); + } - Tutorial tutorial = Tutorial.get(id); - if(tutorial == null) { - BungeeCore.get().getLogger().log(Level.SEVERE, "rate executed with nonexistent id: " + id); - return; - } + @Register("own") + public void own(ProxiedPlayer player) { + openInventory(player, false, true); + } - rate(player, tutorial); - break; - case "create": - if(args.length < 3) { - Message.send("TUTORIAL_CREATE_HELP", player); - return; - } + @Register("unreleased") + public void unreleased(@Guard("unreleased") ProxiedPlayer player) { + openInventory(player, false, false); + } - create(player, Arrays.stream(args).skip(2).collect(Collectors.joining(" ")), args[1].toUpperCase()); - break; - case "own": - openInventory(player, false, true); - break; - case "unreleased": - if (SteamwarUser.get(player.getUniqueId()).getUserGroup().isTeamGroup()) { - openInventory(player, false, false); - break; + @Guard("unreleased") + public GuardChecker unreleasedChecker() { + return (commandSender, guardCheckType, previousArguments, s) -> { + if (commandSender instanceof ProxiedPlayer) { + if (SteamwarUser.get(((ProxiedPlayer) commandSender).getUniqueId()).getUserGroup().isTeamGroup()) { + return GuardResult.ALLOWED; + } else { + return GuardResult.DENIED_WITH_HELP; } - default: - Message.send("TUTORIAL_CREATE_HELP", player); - Message.send("TUTORIAL_OWN_HELP", player); - } + } else { + return GuardResult.ALLOWED; + } + }; } private void openInventory(ProxiedPlayer player, boolean released, boolean own) { From 595929f4b2a256345490afbc8c6dc99cbb154b03 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 12:17:01 +0200 Subject: [PATCH 27/30] Update UnIgnoreCommand --- .../bungeecore/commands/UnIgnoreCommand.java | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/UnIgnoreCommand.java b/src/de/steamwar/bungeecore/commands/UnIgnoreCommand.java index d7350ff2..d0755bdb 100644 --- a/src/de/steamwar/bungeecore/commands/UnIgnoreCommand.java +++ b/src/de/steamwar/bungeecore/commands/UnIgnoreCommand.java @@ -22,28 +22,20 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.IgnoreSystem; import de.steamwar.bungeecore.sql.SteamwarUser; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class UnIgnoreCommand extends BasicCommand { +public class UnIgnoreCommand extends SWCommand { public UnIgnoreCommand() { - super("unignore", null); + super("unignore"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(args.length < 1) { - Message.send("UNIGNORE_USAGE", sender); - return; - } - - if (!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer p = (ProxiedPlayer) sender; + @Register(description = "UNIGNORE_USAGE") + public void genericCommand(ProxiedPlayer p, String toUnIgnore) { SteamwarUser user = SteamwarUser.get(p.getUniqueId()); - SteamwarUser target = SteamwarUser.get(args[0]); + SteamwarUser target = SteamwarUser.get(toUnIgnore); if(target == null){ Message.send("UNIGNORE_NOT_PLAYER", p); return; @@ -55,5 +47,4 @@ public class UnIgnoreCommand extends BasicCommand { IgnoreSystem.unIgnore(user, target); Message.send("UNIGNORE_UNIGNORED", p, target.getUserName()); } - } From 99807470ec57372b763e97d9f780838cd0b9cefe Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 12:18:15 +0200 Subject: [PATCH 28/30] Update VerifyCommand --- .../bungeecore/commands/VerifyCommand.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/VerifyCommand.java b/src/de/steamwar/bungeecore/commands/VerifyCommand.java index cbc5430e..cff943cd 100644 --- a/src/de/steamwar/bungeecore/commands/VerifyCommand.java +++ b/src/de/steamwar/bungeecore/commands/VerifyCommand.java @@ -23,27 +23,25 @@ import de.steamwar.bungeecore.BungeeCore; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.bot.AuthManager; import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.command.SWCommand; +import jdk.nashorn.internal.runtime.Property; import net.dv8tion.jda.api.entities.Member; import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Base64; -public class VerifyCommand extends BasicCommand { +public class VerifyCommand extends SWCommand { public VerifyCommand() { - super("verify", ""); + super("verify"); } - @Override - public void execute(CommandSender sender, String[] strings) { - if(strings.length < 1) { - Message.send("VERIFY_USAGE", sender); - return; - } - + @Register(description = "VERIFY_USAGE") + public void genericCommand(ProxiedPlayer sender, String code) { byte[] bytes; try { - bytes = Base64.getDecoder().decode(strings[0]); + bytes = Base64.getDecoder().decode(code); } catch (IllegalArgumentException e) { Message.send("VERIFY_INVALID", sender); return; @@ -54,7 +52,7 @@ public class VerifyCommand extends BasicCommand { return; } if(bytes[0] == 'D' && bytes[1] == 'C') { - Member member = AuthManager.connectAuth(SteamwarUser.get(sender.getName()), strings[0]); + Member member = AuthManager.connectAuth(SteamwarUser.get(sender.getName()), code); if(member != null) { BungeeCore.log(sender.getName() + " Verified with Discorduser: " + member.getIdLong()); Message.send("VERIFY_SUCCESS", sender, member.getUser().getAsTag()); From d64a483bb62224be6346e55d0f12c5e46bd84a6f Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 12:19:23 +0200 Subject: [PATCH 29/30] Update WebregisterCommand --- .../commands/WebregisterCommand.java | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/WebregisterCommand.java b/src/de/steamwar/bungeecore/commands/WebregisterCommand.java index b26883c3..6197f0ff 100644 --- a/src/de/steamwar/bungeecore/commands/WebregisterCommand.java +++ b/src/de/steamwar/bungeecore/commands/WebregisterCommand.java @@ -21,31 +21,22 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.SWException; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.SWCommand; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class WebregisterCommand extends BasicCommand { +public class WebregisterCommand extends SWCommand { public WebregisterCommand() { super("webregister", null, "web", "webpw"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - - ProxiedPlayer player = (ProxiedPlayer) sender; - if(args.length != 1){ - Message.send("WEB_USAGE", player); - return; - } - - ProcessBuilder pb = new ProcessBuilder("php", "/var/www/register.php", player.getName(), args[0]); + @Register(description = "WEB_USAGE") + public void genericCommand(ProxiedPlayer player, String email) { + ProcessBuilder pb = new ProcessBuilder("php", "/var/www/register.php", player.getName(), email); pb.redirectErrorStream(true); try { Process regProcess = pb.start(); From 4766e0ab961766d8d1ba909c1447c774673d106e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 16 Jun 2022 12:21:46 +0200 Subject: [PATCH 30/30] Update WhoisCommand --- .../bungeecore/commands/WhoisCommand.java | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/WhoisCommand.java b/src/de/steamwar/bungeecore/commands/WhoisCommand.java index 1303059c..e1815726 100644 --- a/src/de/steamwar/bungeecore/commands/WhoisCommand.java +++ b/src/de/steamwar/bungeecore/commands/WhoisCommand.java @@ -23,6 +23,10 @@ import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.Punishment; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Team; +import de.steamwar.command.SWCommand; +import de.steamwar.command.SWCommandUtils; +import de.steamwar.command.TypeMapper; +import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -32,52 +36,46 @@ import java.text.DecimalFormat; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; -public class WhoisCommand extends BasicCommand { - public WhoisCommand(){ +public class WhoisCommand extends SWCommand { + public WhoisCommand() { super("whois", "bungeecore.teamchat"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) sender; - - if(args.length == 0){ - Message.send("WHOIS_USAGE", player); - return; - } - - SteamwarUser user = SteamwarUser.get(args[0]); - if(user == null){ + @Register("WHOIS_USAGE") + public void genericCommand(ProxiedPlayer player, @Mapper("player") String target, @OptionalValue("") @StaticValue({"-all", "-a", ""}) String displayAll) { + SteamwarUser user = SteamwarUser.get(target); + if (user == null) { try { - int id = Integer.parseInt(args[0]); + int id = Integer.parseInt(target); user = SteamwarUser.get(id); - }catch (NumberFormatException ignored) {} + } catch (NumberFormatException ignored) { + } } if (user == null) { try { - long id = Long.parseLong(args[0]); + long id = Long.parseLong(target); user = SteamwarUser.get(id); } catch (NumberFormatException ignored) { // Ignored } } - if(user == null) { + if (user == null) { Message.send("UNKNOWN_PLAYER", player); return; } - boolean all = false; - if(args.length > 1 && args[1].startsWith("-")) { - all = args[1].contains("a"); - } - + boolean all = displayAll.contains("-"); sendUserinfo(player, user, all); } + @Mapper(value = "player", local = true) + public TypeMapper playerTypeMapper() { + return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList())); + } + private static void sendUserinfo(ProxiedPlayer player, SteamwarUser user, boolean all) { Message.send("WHOIS_USERNAME", player, user.getUserName()); Message.send("WHOIS_UUID", player, Message.parse("WHOIS_UUID_HOVER", player), new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, user.getUuid().toString()), user.getUuid().toString()); @@ -86,7 +84,7 @@ public class WhoisCommand extends BasicCommand { Message.send("WHOIS_DISCORD_ID", player, user.getDiscordId()); } Timestamp firstJoin = user.getFirstjoin(); - if(firstJoin == null) + if (firstJoin == null) Message.send("WHOIS_JOINED_FIRST", player, "0000-00-00 00:00:00"); else Message.send("WHOIS_JOINED_FIRST", player, firstJoin.toString());