From b17845b85ca0f9bb2cb0057253c10041ca99e4a2 Mon Sep 17 00:00:00 2001 From: PsiRobot Date: Fri, 21 Apr 2023 19:36:58 +0000 Subject: [PATCH 1/2] Umbau der MissileWars Commands auf das neue Command Framework --- .../misslewars/commands/AcceptCommand.java | 66 ++++++++++++++++ .../misslewars/commands/DeclineCommand.java | 68 ++++++++++++++++ .../misslewars/commands/InviteCommand.java | 79 +++++++++++++++++++ .../misslewars/commands/SpectateCommand.java | 65 +++++++++++++++ 4 files changed, 278 insertions(+) create mode 100644 src/de/steamwar/misslewars/commands/AcceptCommand.java create mode 100644 src/de/steamwar/misslewars/commands/DeclineCommand.java create mode 100644 src/de/steamwar/misslewars/commands/InviteCommand.java create mode 100644 src/de/steamwar/misslewars/commands/SpectateCommand.java diff --git a/src/de/steamwar/misslewars/commands/AcceptCommand.java b/src/de/steamwar/misslewars/commands/AcceptCommand.java new file mode 100644 index 0000000..b411460 --- /dev/null +++ b/src/de/steamwar/misslewars/commands/AcceptCommand.java @@ -0,0 +1,66 @@ +/* + * + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * / + */ + +package de.steamwar.misslewars.commands; + +import de.steamwar.misslewars.Config; +import de.steamwar.misslewars.MWTeam; +import de.steamwar.misslewars.MissileWars; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class AcceptCommand extends SWCommand { + public AcceptCommand() { + super("accept"); + } + + @Register + public void onCommand(@Validator Player player, String... varargs) { + MWTeam teamInvitation = MissileWars.getInvitation(player); + if (teamInvitation == null) { + player.sendMessage("§cDu wurdest nicht eingeladen."); + } + else { + teamInvitation.acceptInvite(player); + message(teamInvitation, "§7Der Spieler §e" + player.getName() + "§7 ist dem Team §abeigetreten§7."); + } + } + + @ClassValidator(value = Player.class, local = true) + public TypeValidator validator() { + return new TypeValidator() { + @Override + public boolean validate(CommandSender commandSender, Player player, MessageSender messageSender) { + if (Config.isChallenge()) { + messageSender.send("§cDieser Command ist deaktiviert."); + return false; + } + return true; + } + }; + } + + private void message(MWTeam mwTeam, String s) { + mwTeam.getPlayers().forEach(player -> player.sendMessage(s)); + } +} diff --git a/src/de/steamwar/misslewars/commands/DeclineCommand.java b/src/de/steamwar/misslewars/commands/DeclineCommand.java new file mode 100644 index 0000000..a667c80 --- /dev/null +++ b/src/de/steamwar/misslewars/commands/DeclineCommand.java @@ -0,0 +1,68 @@ +/* + * + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * / + */ + +package de.steamwar.misslewars.commands; + +import de.steamwar.misslewars.Config; +import de.steamwar.misslewars.MWTeam; +import de.steamwar.misslewars.MissileWars; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + + +public class DeclineCommand extends SWCommand { + public DeclineCommand() { + super("decline"); + } + + @Register + public void onCommand(@Validator Player player, String... varargs) { + MWTeam teamInvitation = MissileWars.getInvitation(player); + if (teamInvitation == null) { + player.sendMessage("§cDu wurdest nicht eingeladen."); + } + else { + MWTeam.removeInvitations(player); + message(teamInvitation, "§7Der Spieler §e" + player.getName() + "§7 hat die Einladung §cabgelehnt§7."); + } + } + + @ClassValidator(value = Player.class, local = true) + public TypeValidator validator() { + return new TypeValidator() { + @Override + public boolean validate(CommandSender commandSender, Player player, MessageSender messageSender) { + if (!Config.isChallenge()) { + messageSender.send("§cDieser Command ist deaktiviert."); + return false; + } + return true; + } + }; + } + + private void message(MWTeam mwTeam, String s) { + mwTeam.getPlayers().forEach(player -> player.sendMessage(s)); + } + +} diff --git a/src/de/steamwar/misslewars/commands/InviteCommand.java b/src/de/steamwar/misslewars/commands/InviteCommand.java new file mode 100644 index 0000000..a6b22f3 --- /dev/null +++ b/src/de/steamwar/misslewars/commands/InviteCommand.java @@ -0,0 +1,79 @@ +package de.steamwar.misslewars.commands; + +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; +import de.steamwar.misslewars.Config; +import de.steamwar.misslewars.MWTeam; +import de.steamwar.misslewars.MissileWars; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class InviteCommand extends SWCommand implements TabCompleter { + + public InviteCommand() { + super("invite", "inv"); + } + + @Register + public void onCommand(@Validator Player player, String playerName, String... varargs) { + MWTeam team = MissileWars.getTeam(player); + Player invitedPlayer = Bukkit.getPlayer(playerName); + if (!Config.RedLeader.equals(player.getUniqueId()) && !Config.BlueLeader.equals(player.getUniqueId()) || team == null) { + player.sendMessage("§cDu kannst keine Spieler einladen."); + } + else if (invitedPlayer == null) { + player.sendMessage("§cDieser Spieler ist nicht online."); + } + else if (MissileWars.getTeam(invitedPlayer) != null) { + player.sendMessage("§cDieser Spieler ist bereits in einem Team."); + } + else if (MissileWars.getInvitation(invitedPlayer) != null) { + player.sendMessage("§cDieser Spieler wurde bereits eingeladen."); + } + else { + team.invitePlayer(invitedPlayer); + player.sendMessage("§7Du hast §e" + invitedPlayer.getName() + " §7eingeladen."); + invitedPlayer.sendMessage("§7Du wurdest von §e" + player.getName() + "§7 in das Team §e" + MissileWars.getTeam(player).getColoredName() + "§7 eingeladen."); + invitedPlayer.sendMessage("§8/§eaccept §8- §7Zum akzeptieren."); + invitedPlayer.sendMessage("§8/§edecline §8- §7Zum ablehnen."); + } + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + if (args.length == 1) { + return Bukkit.getOnlinePlayers() + .stream() + .filter(p -> MissileWars.getTeam(p) != null) + .filter(p -> MissileWars.getInvitation(p) != null) + .map(Player::getName) + .collect(Collectors.toList()); + } + return new ArrayList<>(); + } + + @ClassValidator(value = Player.class, local = true) + public TypeValidator validator() { + return new TypeValidator() { + @Override + public boolean validate(CommandSender commandSender, Player player, MessageSender messageSender) { + if (Config.isChallenge()) { + messageSender.send("§cDieser Command ist deaktiviert."); + return false; + } + return true; + } + }; + } + + private void message(MWTeam mwTeam, String s) { + mwTeam.getPlayers().forEach(player -> player.sendMessage(s)); + } +} diff --git a/src/de/steamwar/misslewars/commands/SpectateCommand.java b/src/de/steamwar/misslewars/commands/SpectateCommand.java new file mode 100644 index 0000000..07b0763 --- /dev/null +++ b/src/de/steamwar/misslewars/commands/SpectateCommand.java @@ -0,0 +1,65 @@ +/* + * + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * / + */ + +package de.steamwar.misslewars.commands; + +import de.steamwar.misslewars.Config; +import de.steamwar.misslewars.MWTeam; +import de.steamwar.misslewars.MissileWars; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; +import org.bukkit.GameMode; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + + +public class SpectateCommand extends SWCommand { + public SpectateCommand() { + super("spectate", "spec"); + } + + @Register + public void onCommand(@Validator Player player, String... varargs) { + MWTeam mwTeam = MissileWars.getTeam(player); + if (mwTeam == null) return; + if (mwTeam.size() == 1) { + player.sendMessage("§cDu bist alleine im Team, zuschauen ist daher nicht möglich."); + } + MissileWars.leave(player); + player.setGameMode(GameMode.SPECTATOR); + player.getInventory().clear(); + player.updateInventory(); + } + + @ClassValidator(value = Player.class, local = true) + public TypeValidator validator() { + return new TypeValidator() { + @Override + public boolean validate(CommandSender commandSender, Player player, MessageSender messageSender) { + if (Config.isChallenge()) { + messageSender.send("§cDieser Command ist deaktiviert."); + return false; + } + return true; + } + }; + } +} -- 2.39.2 From b38baa5b7bc370d732272ec2549a0a623c054859 Mon Sep 17 00:00:00 2001 From: PsiRobot Date: Fri, 21 Apr 2023 20:49:19 +0000 Subject: [PATCH 2/2] Fix formatting issues --- src/de/steamwar/misslewars/MissileWars.java | 18 ++-- .../misslewars/commands/AcceptCommand.java | 11 +-- .../commands/CommandAcceptDecline.java | 64 ------------- .../misslewars/commands/CommandInvite.java | 95 ------------------- .../misslewars/commands/CommandSpectate.java | 55 ----------- .../misslewars/commands/DeclineCommand.java | 13 +-- .../misslewars/commands/InviteCommand.java | 74 ++++++++++----- .../misslewars/commands/SpectateCommand.java | 11 +-- 8 files changed, 71 insertions(+), 270 deletions(-) delete mode 100644 src/de/steamwar/misslewars/commands/CommandAcceptDecline.java delete mode 100644 src/de/steamwar/misslewars/commands/CommandInvite.java delete mode 100644 src/de/steamwar/misslewars/commands/CommandSpectate.java diff --git a/src/de/steamwar/misslewars/MissileWars.java b/src/de/steamwar/misslewars/MissileWars.java index c677f08..4811fbb 100644 --- a/src/de/steamwar/misslewars/MissileWars.java +++ b/src/de/steamwar/misslewars/MissileWars.java @@ -19,9 +19,10 @@ package de.steamwar.misslewars; -import de.steamwar.misslewars.commands.CommandAcceptDecline; -import de.steamwar.misslewars.commands.CommandInvite; -import de.steamwar.misslewars.commands.CommandSpectate; +import de.steamwar.misslewars.commands.AcceptCommand; +import de.steamwar.misslewars.commands.DeclineCommand; +import de.steamwar.misslewars.commands.InviteCommand; +import de.steamwar.misslewars.commands.SpectateCommand; import de.steamwar.misslewars.countdowns.EndCountdown; import de.steamwar.misslewars.countdowns.ItemCountdown; import de.steamwar.misslewars.countdowns.WaitingCountdown; @@ -73,15 +74,12 @@ public class MissileWars extends JavaPlugin { new WaitingListener(); new FightListener(); new ChatListener(); - getCommand("spectate").setExecutor(new CommandSpectate()); + new SpectateCommand(); // Invitation Commands - CommandInvite commandInvite = new CommandInvite(); - getCommand("invite").setExecutor(commandInvite); - getCommand("invite").setTabCompleter(commandInvite); - - getCommand("accept").setExecutor(new CommandAcceptDecline()); - getCommand("decline").setExecutor(new CommandAcceptDecline()); + new InviteCommand(); + new AcceptCommand(); + new DeclineCommand(); new WaitingCountdown(); new ItemCountdown(); diff --git a/src/de/steamwar/misslewars/commands/AcceptCommand.java b/src/de/steamwar/misslewars/commands/AcceptCommand.java index b411460..db34a53 100644 --- a/src/de/steamwar/misslewars/commands/AcceptCommand.java +++ b/src/de/steamwar/misslewars/commands/AcceptCommand.java @@ -2,7 +2,7 @@ * * This file is a part of the SteamWar software. * - * Copyright (C) 2020 SteamWar.de-Serverteam + * Copyright (C) 2023 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -16,20 +16,20 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * / */ package de.steamwar.misslewars.commands; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; import de.steamwar.misslewars.Config; import de.steamwar.misslewars.MWTeam; import de.steamwar.misslewars.MissileWars; -import de.steamwar.command.SWCommand; -import de.steamwar.command.TypeValidator; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class AcceptCommand extends SWCommand { + public AcceptCommand() { super("accept"); } @@ -39,8 +39,7 @@ public class AcceptCommand extends SWCommand { MWTeam teamInvitation = MissileWars.getInvitation(player); if (teamInvitation == null) { player.sendMessage("§cDu wurdest nicht eingeladen."); - } - else { + } else { teamInvitation.acceptInvite(player); message(teamInvitation, "§7Der Spieler §e" + player.getName() + "§7 ist dem Team §abeigetreten§7."); } diff --git a/src/de/steamwar/misslewars/commands/CommandAcceptDecline.java b/src/de/steamwar/misslewars/commands/CommandAcceptDecline.java deleted file mode 100644 index 2245310..0000000 --- a/src/de/steamwar/misslewars/commands/CommandAcceptDecline.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * This file is a part of the SteamWar software. - * - * Copyright (C) 2020 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * / - */ - -package de.steamwar.misslewars.commands; - -import de.steamwar.misslewars.Config; -import de.steamwar.misslewars.MWTeam; -import de.steamwar.misslewars.MissileWars; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class CommandAcceptDecline implements CommandExecutor { - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player)) return false; - Player player = (Player) sender; - if (!Config.isChallenge()) { - player.sendMessage("§cDieser Command ist deaktiviert."); - return false; - } - - MWTeam teamInvitation = MissileWars.getInvitation(player); - if (teamInvitation == null) { - player.sendMessage("§cDu wurdest nicht eingeladen."); - return false; - } - - if (command.getName().equalsIgnoreCase("accept")) { - teamInvitation.acceptInvite(player); - message(teamInvitation, "§7Der Spieler §e" + player.getName() + "§7 ist dem Team §abeigetreten§7."); - } else { - MWTeam.removeInvitations(player); - message(teamInvitation, "§7Der Spieler §e" + player.getName() + "§7 hat die Einladung §cabgelehnt§7."); - } - return false; - } - - private void message(MWTeam mwTeam, String s) { - mwTeam.getPlayers().forEach(player -> player.sendMessage(s)); - } - -} diff --git a/src/de/steamwar/misslewars/commands/CommandInvite.java b/src/de/steamwar/misslewars/commands/CommandInvite.java deleted file mode 100644 index a34b9ed..0000000 --- a/src/de/steamwar/misslewars/commands/CommandInvite.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * - * This file is a part of the SteamWar software. - * - * Copyright (C) 2020 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * / - */ - -package de.steamwar.misslewars.commands; - -import de.steamwar.misslewars.Config; -import de.steamwar.misslewars.MWTeam; -import de.steamwar.misslewars.MissileWars; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -public class CommandInvite implements CommandExecutor, TabCompleter { - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player)) return false; - Player player = (Player) sender; - if (!Config.isChallenge()) { - player.sendMessage("§cDieser Command ist deaktiviert."); - return false; - } - - MWTeam team = MissileWars.getTeam(player); - if (!Config.RedLeader.equals(player.getUniqueId()) && !Config.BlueLeader.equals(player.getUniqueId()) || team == null) { - player.sendMessage("§cDu kannst keine Spieler einladen."); - return false; - } - - if (args.length != 1) { - player.sendMessage("§c/invite "); - return false; - } - - Player invitedPlayer = Bukkit.getPlayer(args[0]); - if (invitedPlayer == null) { - player.sendMessage("§cDieser Spieler ist nicht online."); - return false; - } - if (MissileWars.getTeam(invitedPlayer) != null) { - player.sendMessage("§cDieser Spieler ist bereits in einem Team."); - return false; - } - if (MissileWars.getInvitation(invitedPlayer) != null) { - player.sendMessage("§cDieser Spieler wurde bereits eingeladen."); - return false; - } - - team.invitePlayer(invitedPlayer); - player.sendMessage("§7Du hast §e" + invitedPlayer.getName() + " §7eingeladen."); - invitedPlayer.sendMessage("§7Du wurdest von §e" + player.getName() + "§7 in das Team §e" + MissileWars.getTeam(player).getColoredName() + "§7 eingeladen."); - invitedPlayer.sendMessage("§8/§eaccept §8- §7Zum akzeptieren."); - invitedPlayer.sendMessage("§8/§edecline §8- §7Zum ablehnen."); - return false; - } - - @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 1) { - return Bukkit.getOnlinePlayers() - .stream() - .filter(p -> MissileWars.getTeam(p) != null) - .filter(p -> MissileWars.getInvitation(p) != null) - .map(Player::getName) - .collect(Collectors.toList()); - } - return new ArrayList<>(); - } - -} diff --git a/src/de/steamwar/misslewars/commands/CommandSpectate.java b/src/de/steamwar/misslewars/commands/CommandSpectate.java deleted file mode 100644 index 4a8c1f2..0000000 --- a/src/de/steamwar/misslewars/commands/CommandSpectate.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - This file is a part of the SteamWar software. - - Copyright (C) 2020 SteamWar.de-Serverteam - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -package de.steamwar.misslewars.commands; - -import de.steamwar.misslewars.Config; -import de.steamwar.misslewars.MWTeam; -import de.steamwar.misslewars.MissileWars; -import org.bukkit.GameMode; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class CommandSpectate implements CommandExecutor { - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player)) return false; - Player player = (Player) sender; - if (Config.isChallenge()) { - player.sendMessage("§cDieser Command ist deaktiviert."); - return false; - } - - MWTeam mwTeam = MissileWars.getTeam(player); - if (mwTeam == null) return false; - if (mwTeam.size() == 1) { - player.sendMessage("§cDu bist alleine im Team, zuschauen ist daher nicht möglich."); - return false; - } - MissileWars.leave(player); - player.setGameMode(GameMode.SPECTATOR); - player.getInventory().clear(); - player.updateInventory(); - return true; - } - -} diff --git a/src/de/steamwar/misslewars/commands/DeclineCommand.java b/src/de/steamwar/misslewars/commands/DeclineCommand.java index a667c80..0041788 100644 --- a/src/de/steamwar/misslewars/commands/DeclineCommand.java +++ b/src/de/steamwar/misslewars/commands/DeclineCommand.java @@ -2,7 +2,7 @@ * * This file is a part of the SteamWar software. * - * Copyright (C) 2020 SteamWar.de-Serverteam + * Copyright (C) 2023 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -16,21 +16,20 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * / */ package de.steamwar.misslewars.commands; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; import de.steamwar.misslewars.Config; import de.steamwar.misslewars.MWTeam; import de.steamwar.misslewars.MissileWars; -import de.steamwar.command.SWCommand; -import de.steamwar.command.TypeValidator; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; - public class DeclineCommand extends SWCommand { + public DeclineCommand() { super("decline"); } @@ -40,8 +39,7 @@ public class DeclineCommand extends SWCommand { MWTeam teamInvitation = MissileWars.getInvitation(player); if (teamInvitation == null) { player.sendMessage("§cDu wurdest nicht eingeladen."); - } - else { + } else { MWTeam.removeInvitations(player); message(teamInvitation, "§7Der Spieler §e" + player.getName() + "§7 hat die Einladung §cabgelehnt§7."); } @@ -64,5 +62,4 @@ public class DeclineCommand extends SWCommand { private void message(MWTeam mwTeam, String s) { mwTeam.getPlayers().forEach(player -> player.sendMessage(s)); } - } diff --git a/src/de/steamwar/misslewars/commands/InviteCommand.java b/src/de/steamwar/misslewars/commands/InviteCommand.java index a6b22f3..52e3af1 100644 --- a/src/de/steamwar/misslewars/commands/InviteCommand.java +++ b/src/de/steamwar/misslewars/commands/InviteCommand.java @@ -1,43 +1,58 @@ +/* + * + * This file is a part of the SteamWar software. + * + * Copyright (C) 2023 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + package de.steamwar.misslewars.commands; +import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeMapper; import de.steamwar.command.TypeValidator; import de.steamwar.misslewars.Config; import de.steamwar.misslewars.MWTeam; import de.steamwar.misslewars.MissileWars; import org.bukkit.Bukkit; -import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; import java.util.stream.Collectors; -public class InviteCommand extends SWCommand implements TabCompleter { +public class InviteCommand extends SWCommand { public InviteCommand() { super("invite", "inv"); } @Register - public void onCommand(@Validator Player player, String playerName, String... varargs) { + public void onCommand(@Validator Player player, @AllowNull @OptionalValue("") Player invitedPlayer) { MWTeam team = MissileWars.getTeam(player); - Player invitedPlayer = Bukkit.getPlayer(playerName); + if (!Config.RedLeader.equals(player.getUniqueId()) && !Config.BlueLeader.equals(player.getUniqueId()) || team == null) { player.sendMessage("§cDu kannst keine Spieler einladen."); - } - else if (invitedPlayer == null) { + } else if (invitedPlayer == null) { player.sendMessage("§cDieser Spieler ist nicht online."); - } - else if (MissileWars.getTeam(invitedPlayer) != null) { + } else if (MissileWars.getTeam(invitedPlayer) != null) { player.sendMessage("§cDieser Spieler ist bereits in einem Team."); - } - else if (MissileWars.getInvitation(invitedPlayer) != null) { + } else if (MissileWars.getInvitation(invitedPlayer) != null) { player.sendMessage("§cDieser Spieler wurde bereits eingeladen."); - } - else { + } else { team.invitePlayer(invitedPlayer); player.sendMessage("§7Du hast §e" + invitedPlayer.getName() + " §7eingeladen."); invitedPlayer.sendMessage("§7Du wurdest von §e" + player.getName() + "§7 in das Team §e" + MissileWars.getTeam(player).getColoredName() + "§7 eingeladen."); @@ -46,17 +61,24 @@ public class InviteCommand extends SWCommand implements TabCompleter { } } - @Override - public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 1) { - return Bukkit.getOnlinePlayers() - .stream() - .filter(p -> MissileWars.getTeam(p) != null) - .filter(p -> MissileWars.getInvitation(p) != null) - .map(Player::getName) - .collect(Collectors.toList()); - } - return new ArrayList<>(); + @ClassMapper(value = Player.class, local = true) + public TypeMapper typeMapper() { + return new TypeMapper() { + @Override + public Player map(CommandSender commandSender, String[] previousArguments, String s) { + return Bukkit.getPlayer(s); + } + + @Override + public Collection tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) { + return Bukkit.getOnlinePlayers() + .stream() + .filter(p -> MissileWars.getTeam(p) != null) + .filter(p -> MissileWars.getInvitation(p) != null) + .map(Player::getName) + .collect(Collectors.toList()); + } + }; } @ClassValidator(value = Player.class, local = true) diff --git a/src/de/steamwar/misslewars/commands/SpectateCommand.java b/src/de/steamwar/misslewars/commands/SpectateCommand.java index 07b0763..1fdbc6b 100644 --- a/src/de/steamwar/misslewars/commands/SpectateCommand.java +++ b/src/de/steamwar/misslewars/commands/SpectateCommand.java @@ -2,7 +2,7 @@ * * This file is a part of the SteamWar software. * - * Copyright (C) 2020 SteamWar.de-Serverteam + * Copyright (C) 2023 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -16,28 +16,27 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * / */ package de.steamwar.misslewars.commands; +import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; import de.steamwar.misslewars.Config; import de.steamwar.misslewars.MWTeam; import de.steamwar.misslewars.MissileWars; -import de.steamwar.command.SWCommand; -import de.steamwar.command.TypeValidator; import org.bukkit.GameMode; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; - public class SpectateCommand extends SWCommand { + public SpectateCommand() { super("spectate", "spec"); } @Register - public void onCommand(@Validator Player player, String... varargs) { + public void onCommand(@Validator Player player) { MWTeam mwTeam = MissileWars.getTeam(player); if (mwTeam == null) return; if (mwTeam.size() == 1) { -- 2.39.2