From 80f9eb262d8d2399270ec644b2dd4cf11c9b5e48 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 11 Jul 2021 18:26:20 -0700 Subject: [PATCH] progress --- .../queue/api/commands/IBaseCommand.java | 2 +- .../commands/leavequeue/LeaveCommand.java | 126 ++++++++++++++++++ .../commands/manage/ManageCommand.java | 66 +++++++++ .../queue/common/QueueManagerImpl.java | 2 + .../platforms/velocity/VelocityQueue.java | 6 +- .../velocity/commands/VelocitySender.java | 6 + .../velocity/players/VelocityPlayer.java | 1 + .../velocity/server/ServerBuilderImpl.java | 2 +- .../velocity/server/VelocityServerPing.java | 4 +- 9 files changed, 210 insertions(+), 5 deletions(-) create mode 100644 common/src/main/java/us/ajg0702/queue/commands/commands/leavequeue/LeaveCommand.java create mode 100644 common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java diff --git a/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java b/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java index 63fce9c..ac0ad00 100644 --- a/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java +++ b/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java @@ -19,7 +19,7 @@ public interface IBaseCommand { void addSubCommand(ISubCommand subCommand); - void execute(ICommandSender ssender, String[] args); + void execute(ICommandSender sender, String[] args); List autoComplete(ICommandSender sender, String[] args); } diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/leavequeue/LeaveCommand.java b/common/src/main/java/us/ajg0702/queue/commands/commands/leavequeue/LeaveCommand.java new file mode 100644 index 0000000..8bff705 --- /dev/null +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/leavequeue/LeaveCommand.java @@ -0,0 +1,126 @@ +package us.ajg0702.queue.commands.commands.leavequeue; + +import com.google.common.collect.ImmutableList; +import us.ajg0702.queue.api.commands.ICommandSender; +import us.ajg0702.queue.api.commands.ISubCommand; +import us.ajg0702.queue.api.players.AdaptedPlayer; +import us.ajg0702.queue.api.players.QueuePlayer; +import us.ajg0702.queue.api.queues.QueueServer; +import us.ajg0702.queue.commands.BaseCommand; +import us.ajg0702.queue.common.QueueMain; +import us.ajg0702.utils.common.Messages; + +import java.util.ArrayList; +import java.util.List; + +public class LeaveCommand extends BaseCommand { + + + private final QueueMain main; + + public LeaveCommand(QueueMain main) { + this.main = main; + } + + @Override + public String getName() { + return "leavequeue"; + } + + @Override + public ImmutableList getAliases() { + return ImmutableList.of("leaveq"); + } + + @Override + public ImmutableList getSubCommands() { + return ImmutableList.of(); + } + + @Override + public String getPermission() { + return null; + } + + @Override + public Messages getMessages() { + return main.getMessages(); + } + + @Override + public void addSubCommand(ISubCommand subCommand) { + + } + + @Override + public void execute(ICommandSender sender, String[] args) { + System.out.println("leave command"); + if(!sender.isPlayer()) { + System.out.println("not player"); + sender.sendMessage(getMessages().getComponent("errors.player-only")); + return; + } + System.out.println("player"); + AdaptedPlayer player = main.getPlatformMethods().senderToPlayer(sender); + List servers = main.getQueueManager().getPlayerQueues(player); + + if(servers.size() == 0) { + sender.sendMessage(getMessages().getComponent("commands.leave.no-queues")); + return; + } + + System.out.println("0"); + + if(servers.size() == 1) { + servers.get(0).removePlayer(player); + sender.sendMessage(getMessages().getComponent("commands.leave-queue", "SERVER:"+servers.get(0).getAlias())); + return; + } + + System.out.println("1"); + + if(args.length <= 0) { + sender.sendMessage(getMessages().getComponent("commands.leave.more-args", "QUEUES:"+getQueueList(servers))); + return; + } + + String leaving = args[0]; + QueueServer leavingServer = main.getQueueManager().findServer(leaving); + if(leavingServer == null) { + sender.sendMessage(getMessages().getComponent("commands.leave.not-queued", "QUEUES:"+getQueueList(servers))); + return; + } + QueuePlayer queuePlayer = leavingServer.findPlayer(player); + if(queuePlayer == null) { + sender.sendMessage(getMessages().getComponent("commands.leave.not-queued", "QUEUES:"+getQueueList(servers))); + return; + } + + System.out.println("2"); + + leavingServer.removePlayer(queuePlayer); + sender.sendMessage(getMessages().getComponent("commands.leave-queue", "SERVER:"+leavingServer.getAlias())); + + } + + private String getQueueList(List servers) { + StringBuilder queueList = new StringBuilder(); + for(QueueServer server : servers) { + queueList.append(getMessages().getString("commands.leave.queues-list-format").replaceAll("\\{NAME}", server.getName())); + } + if(queueList.length() > 2) { + queueList = new StringBuilder(queueList.substring(0, queueList.length() - 2)); + } + return queueList.toString(); + } + + @Override + public List autoComplete(ICommandSender sender, String[] args) { + List servers = main.getQueueManager().findPlayerInQueues(main.getPlatformMethods().senderToPlayer(sender)); + List serverNames = new ArrayList<>(); + for(QueuePlayer queuePlayer : servers) { + serverNames.add(queuePlayer.getQueueServer().getName()); + } + return serverNames; + } +} diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java new file mode 100644 index 0000000..49413c9 --- /dev/null +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java @@ -0,0 +1,66 @@ +package us.ajg0702.queue.commands.commands.manage; + +import com.google.common.collect.ImmutableList; +import us.ajg0702.queue.api.commands.ICommandSender; +import us.ajg0702.queue.api.commands.ISubCommand; +import us.ajg0702.queue.commands.BaseCommand; +import us.ajg0702.queue.commands.SubCommand; +import us.ajg0702.queue.common.QueueMain; +import us.ajg0702.utils.common.Messages; + +import java.util.ArrayList; +import java.util.List; + +public class ManageCommand extends BaseCommand { + + QueueMain main; + + public ManageCommand(QueueMain main) { + this.main = main; + + + } + + + @Override + public String getName() { + return "ajqueue"; + } + + @Override + public ImmutableList getAliases() { + return ImmutableList.of("ajq"); + } + + List subCommands = new ArrayList<>(); + + @Override + public ImmutableList getSubCommands() { + return ImmutableList.copyOf(subCommands); + } + + @Override + public String getPermission() { + return "ajqueue.manage"; + } + + @Override + public Messages getMessages() { + return main.getMessages(); + } + + @Override + public void addSubCommand(ISubCommand subCommand) { + subCommands.add(subCommand); + } + + @Override + public void execute(ICommandSender sender, String[] args) { + + } + + @Override + public List autoComplete(ICommandSender sender, String[] args) { + return null; + } +} diff --git a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java index 807d7d6..a2f9800 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java @@ -1,6 +1,8 @@ package us.ajg0702.queue.common; import com.google.common.collect.ImmutableList; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; import us.ajg0702.queue.api.QueueManager; import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.QueuePlayer; diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityQueue.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityQueue.java index a47e924..260b357 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityQueue.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityQueue.java @@ -8,6 +8,7 @@ import com.velocitypowered.api.plugin.Plugin; import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.proxy.ProxyServer; import us.ajg0702.queue.commands.BaseCommand; +import us.ajg0702.queue.commands.commands.leavequeue.LeaveCommand; import us.ajg0702.queue.commands.commands.queue.QueueCommand; import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.platforms.velocity.commands.VelocityCommand; @@ -56,7 +57,10 @@ public class VelocityQueue { CommandManager commandManager = proxyServer.getCommandManager(); - List commands = Arrays.asList(new QueueCommand(main)); + List commands = Arrays.asList( + new QueueCommand(main), + new LeaveCommand(main) + ); for(BaseCommand command : commands) { commandManager.register( diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/commands/VelocitySender.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/commands/VelocitySender.java index f6810bc..3c9f92b 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/commands/VelocitySender.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/commands/VelocitySender.java @@ -3,6 +3,7 @@ package us.ajg0702.queue.platforms.velocity.commands; import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.proxy.ConsoleCommandSource; import com.velocitypowered.api.proxy.ProxyServer; +import net.kyori.adventure.text.Component; import us.ajg0702.queue.api.commands.ICommandSender; public class VelocitySender implements ICommandSender { @@ -23,6 +24,11 @@ public class VelocitySender implements ICommandSender { return !(handle instanceof ConsoleCommandSource); } + @Override + public void sendMessage(Component message) { + handle.sendMessage(message); + } + @Override public CommandSource getHandle() { return handle; diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/players/VelocityPlayer.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/players/VelocityPlayer.java index 9fb40c5..343def1 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/players/VelocityPlayer.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/players/VelocityPlayer.java @@ -1,6 +1,7 @@ package us.ajg0702.queue.platforms.velocity.players; import com.velocitypowered.api.proxy.Player; +import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.server.RegisteredServer; import net.kyori.adventure.audience.Audience; diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/ServerBuilderImpl.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/ServerBuilderImpl.java index ae98f3d..aebd796 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/ServerBuilderImpl.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/ServerBuilderImpl.java @@ -38,7 +38,7 @@ public class ServerBuilderImpl implements ServerBuilder { @Override public AdaptedServer getServer(String name) { Optional serverOptional = proxyServer.getServer(name); - if(serverOptional.isEmpty()) return null; + if(serverOptional.isPresent()) return null; return new VelocityServer(serverOptional.get()); } diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java index 06c3b70..402dc8e 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java @@ -27,14 +27,14 @@ public class VelocityServerPing implements AdaptedServerPing { @Override public int getPlayerCount() { Optional players = handle.getPlayers(); - if(players.isEmpty()) return 0; + if(players.isPresent()) return 0; return players.get().getOnline(); } @Override public int getMaxPlayers() { Optional players = handle.getPlayers(); - if(players.isEmpty()) return 0; + if(players.isPresent()) return 0; return players.get().getMax(); }