diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 2d5c04e..0e66d6d 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -137,10 +137,9 @@ public class FightSystem extends JavaPlugin { new LeaveCommand(); new KitCommand(); new RemoveCommand(); - new AcceptCommand(); + new RequestsCommand(); new WGCommand(); new TBCommand(); - new DeclineCommand(); new GamemodeCommand(); new ReadyCommand(); new AkCommand(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index 98b92ac..664a643 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -247,7 +247,18 @@ AMONG_US_IMPOSTER_AMONG_MESSAGE = §4There is an Imposter among us§8! §7Kill h # Invites -JOIN_REQUEST=§7Request participation -JOIN_REQUEST_TITLE=Request participation -JOIN_REQUEST_ALREADY=§cYou have already sent a participation request +JOIN_REQUEST=§7Request join +JOIN_REQUEST_TITLE=Request join +JOIN_REQUEST_ALREADY=§cYou have already sent a join request JOIN_REQUEST_TEAM=§eJoin {0} +JOIN_REQUEST_NOTIFICATION=§e{0} §7requests joining team {1}§8. §7Accept or decline using §8/§erequests + +REQUESTS=§7Open join requests +REQUESTS_TITLE=Open join requests +REQUEST_DECLINED=§cJoin of {0} declined +YOUR_REQUEST_DECLINED=§cYour join request was declined +REQUESTS_LEFT_CLICK=§eLeft click §7to §eaccept§8! +REQUESTS_RIGHT_CLICK=§eRight click §7to §edecline§8! + +NO_JOIN_REQUEST=§cThe player did not request joining +NO_CONFIRMATION=§cNo confirmation necessary \ No newline at end of file diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties index fb8b946..0e61182 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties @@ -235,14 +235,14 @@ JOIN_REQUEST=§7Teambeitritt anfragen JOIN_REQUEST_TITLE=Teambeitritt anfragen JOIN_REQUEST_ALREADY=§cDu hast bereits ein Team um Beitritt angefragt JOIN_REQUEST_TEAM={0} §ebeitreten +JOIN_REQUEST_NOTIFICATION=§e{0} §7möchte Team {1} §7beitreten§8. §7Akzeptiere oder lehne ab mit §8/§erequests REQUESTS=§7Offene Beitrittsanfragen REQUESTS_TITLE=Offene Beitrittsanfragen REQUEST_DECLINED=§cBeitritt von {0} abgelehnt YOUR_REQUEST_DECLINED=§cDeine Betrittsanfrage wurde abgelehnt +REQUESTS_LEFT_CLICK=§eLinksklick §7um §eanzunehmen§8! +REQUESTS_RIGHT_CLICK=§eRechtsklick §7um §eabzulehnen§8! -UNKNOWN_PLAYER=§cUnbekannter Spieler NO_JOIN_REQUEST=§cDer Spieler hat noch keinen Beitritt angefragt NO_CONFIRMATION=§cKeine Zustimmung nötig -ACCEPT_USAGE=§8/§7accept §8[§eSpieler§8] -DECLINE_USAGE=§8/§7decline §8[§eSpieler§8] diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/DeclineCommand.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/DeclineCommand.java deleted file mode 100644 index fdf9afe..0000000 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/DeclineCommand.java +++ /dev/null @@ -1,41 +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.fightsystem.commands; - -import de.steamwar.fightsystem.ArenaMode; -import de.steamwar.fightsystem.fight.JoinRequest; -import de.steamwar.fightsystem.states.FightState; -import de.steamwar.fightsystem.states.StateDependentCommand; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; - -public class DeclineCommand implements CommandExecutor { - - public DeclineCommand() { - new StateDependentCommand(ArenaMode.VariableTeams, FightState.Setup, "decline", this); - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - AcceptCommand.onJoinRequest(sender, args, "DECLINE_USAGE", JoinRequest::decline); - return false; - } -} diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java index fd0de29..7ec6598 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java @@ -24,6 +24,7 @@ import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.fight.*; import de.steamwar.fightsystem.listener.PersonalKitCreator; import de.steamwar.fightsystem.states.FightState; +import de.steamwar.fightsystem.utils.ColorConverter; import de.steamwar.inventory.*; import de.steamwar.message.Message; import de.steamwar.sql.PersonalKit; @@ -44,9 +45,10 @@ public class GUI { private static final Message msg = FightSystem.getMessage(); + @SuppressWarnings("deprecation") private static void addTeamRequest(Player p, SWInventory inv, int pos, FightTeam team) { - int colorCode = team.getColor().ordinal(); - inv.setItem(pos, SWItem.getDye(colorCode), (byte)colorCode, msg.parse("JOIN_REQUEST_TEAM", p, team.getColoredName()), click -> { + byte colorCode = ColorConverter.chat2dye(team.getColor()).getDyeData(); + inv.setItem(pos, SWItem.getDye(colorCode), colorCode, msg.parse("JOIN_REQUEST_TEAM", p, team.getColoredName()), click -> { p.closeInventory(); new JoinRequest(p, team); }); @@ -82,10 +84,10 @@ public class GUI { } public static void chooseJoinRequests(Player p){ - List> players = JoinRequest.openRequests(Fight.getPlayerTeam(p)); + List> players = JoinRequest.openRequests(p, Fight.getPlayerTeam(p)); SWListInv inv = new SWListInv<>(p, msg.parse("REQUESTS_TITLE", p), players, (ClickType click, Player player) -> { p.closeInventory(); - AcceptCommand.onJoinRequest(p, player, click.isLeftClick() ? JoinRequest::accept : JoinRequest::decline); + RequestsCommand.onJoinRequest(p, player, click.isLeftClick() ? JoinRequest::accept : JoinRequest::decline); }); inv.setCallback(-999, (ClickType click) -> p.closeInventory()); inv.open(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/AcceptCommand.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/RequestsCommand.java similarity index 73% rename from FightSystem_Core/src/de/steamwar/fightsystem/commands/AcceptCommand.java rename to FightSystem_Core/src/de/steamwar/fightsystem/commands/RequestsCommand.java index 508a831..6ccaec9 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/AcceptCommand.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/RequestsCommand.java @@ -26,7 +26,6 @@ import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.fight.JoinRequest; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentCommand; -import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -34,38 +33,23 @@ import org.bukkit.entity.Player; import java.util.function.BiConsumer; -public class AcceptCommand implements CommandExecutor { +public class RequestsCommand implements CommandExecutor { - public AcceptCommand() { - new StateDependentCommand(ArenaMode.VariableTeams, FightState.Setup, "accept", this); + public RequestsCommand() { + new StateDependentCommand(ArenaMode.VariableTeams, FightState.Setup, "requests", this); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - onJoinRequest(sender, args, "ACCEPT_USAGE", JoinRequest::accept); - return false; - } - - public static void onJoinRequest(CommandSender sender, String[] args, String usage, BiConsumer handleJoinRequest) { - if(!(sender instanceof Player)) { - return; - } + if(!(sender instanceof Player)) + return false; Player player = (Player) sender; + if(Commands.checkGetLeader(player) == null) - return; + return false; - if(args.length == 0) { - FightSystem.getMessage().send(usage, sender); - return; - } - - Player target = Bukkit.getPlayer(args[0]); - if(target == null) { - FightSystem.getMessage().send("UNKNOWN_PLAYER", player); - return; - } - - onJoinRequest(player, target, handleJoinRequest); + GUI.chooseJoinRequests(player); + return false; } public static void onJoinRequest(Player player, Player target, BiConsumer handleJoinRequest) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/JoinRequest.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/JoinRequest.java index 7381290..d86df76 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/JoinRequest.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/JoinRequest.java @@ -24,6 +24,7 @@ import de.steamwar.fightsystem.states.FightState; import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWListInv; import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.ClickEvent; import org.bukkit.entity.Player; import java.util.*; @@ -33,16 +34,20 @@ public class JoinRequest { private static final Map activeRequests = new HashMap<>(); - public static List> openRequests(FightTeam team) { - //TODO set lore - return activeRequests.values().stream().filter(request -> request.waitOnApproval.contains(team)).map(request -> new SWListInv.SWListEntry<>(SWItem.getPlayerSkull(request.player), request.player)).collect(Collectors.toList()); + public static List> openRequests(Player p, FightTeam team) { + return activeRequests.values().stream().filter( + request -> request.waitOnApproval.contains(team) + ).map(request -> { + SWItem item = SWItem.getPlayerSkull(request.player); + item.setLore(Arrays.asList( + FightSystem.getMessage().parse("REQUESTS_LEFT_CLICK", p), + FightSystem.getMessage().parse("REQUESTS_RIGHT_CLICK", p) + )); + return new SWListInv.SWListEntry<>(item, request.player); + }).collect(Collectors.toList()); } public static void clearRequests() { - //TODO notify players - activeRequests.forEach((player, joinRequest) -> { - - }); activeRequests.clear(); } @@ -58,9 +63,19 @@ public class JoinRequest { this.player = player; this.team = team; this.waitOnApproval = new HashSet<>(FightState.ingame() ? Fight.teams() : Collections.singleton(team)); - //TODO send request out + for(FightTeam t : waitOnApproval) { + FightPlayer leader = t.getLeader(); + if(leader == null) + continue; - activeRequests.put(player, new JoinRequest(player, team)); + Player leaderPlayer = leader.getPlayer(); + if(leaderPlayer == null) + continue; + + FightSystem.getMessage().sendPrefixless("JOIN_REQUEST_NOTIFICATION", leaderPlayer, "REQUESTS", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/requests"), player.getName(), team.getColoredName()); + } + + activeRequests.put(player, this); } public boolean required(FightTeam decider) { diff --git a/FightSystem_Core/src/plugin.yml b/FightSystem_Core/src/plugin.yml index 6aa27b1..e405591 100644 --- a/FightSystem_Core/src/plugin.yml +++ b/FightSystem_Core/src/plugin.yml @@ -12,8 +12,7 @@ api-version: "1.13" commands: ak: - accept: - decline: + requests: leave: ready: kit: