lot of progress

This commit is contained in:
ajgeiss0702
2021-07-11 16:09:38 -07:00
parent 7a6d97229a
commit 7e9bdaaf27
25 changed files with 775 additions and 56 deletions
@@ -0,0 +1,59 @@
package us.ajg0702.queue.commands;
import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.commands.IBaseCommand;
import us.ajg0702.queue.api.commands.ICommandSender;
import us.ajg0702.queue.api.commands.ISubCommand;
import us.ajg0702.utils.common.Messages;
import java.util.List;
public class BaseCommand implements IBaseCommand {
@Override
public String getName() {
return null;
}
@Override
public ImmutableList<String> getAliases() {
return null;
}
@Override
public ImmutableList<ISubCommand> getSubCommands() {
return null;
}
@Override
public String getPermission() {
return null;
}
@Override
public Messages getMessages() {
return null;
}
@Override
public void addSubCommand(ISubCommand subCommand) {
}
@Override
public void execute(ICommandSender sender, String[] args) {
}
public boolean checkPermission(ICommandSender sender) {
if(getPermission() != null && !sender.hasPermission(getPermission())) {
sender.sendMessage(getMessages().getComponent("noperm"));
return false;
}
return true;
}
@Override
public List<String> autoComplete(ICommandSender sender, String[] args) {
return null;
}
}
@@ -0,0 +1,7 @@
package us.ajg0702.queue.commands;
import us.ajg0702.queue.api.commands.ISubCommand;
public class SubCommand extends BaseCommand implements ISubCommand {
}
@@ -0,0 +1,82 @@
package us.ajg0702.queue.commands.commands.queue;
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.commands.BaseCommand;
import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.utils.common.Messages;
import java.util.ArrayList;
import java.util.List;
public class QueueCommand extends BaseCommand {
private final QueueMain main;
public QueueCommand(QueueMain main) {
this.main = main;
}
@Override
public String getName() {
return "queue";
}
@Override
public ImmutableList<String> getAliases() {
return ImmutableList.of("move", "server", "joinqueue", "joinq");
}
@Override
public ImmutableList<ISubCommand> getSubCommands() {
return ImmutableList.<ISubCommand>builder().build();
}
@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) {
if(!checkPermission(sender)) return;
if(!sender.isPlayer()) {
sender.sendMessage(getMessages().getComponent("errors.player-only"));
return;
}
AdaptedPlayer player = main.getPlatformMethods().senderToPlayer(sender);
if(args.length > 0) {
if(main.getConfig().getBoolean("require-permission") && !player.hasPermission("ajqueue.queue."+args[0])) {
sender.sendMessage(getMessages().getComponent("noperm"));
return;
}
main.getQueueManager().addToQueue(player, args[0]);
} else {
sender.sendMessage(getMessages().getComponent("commands.joinqueue.usage"));
}
}
@Override
public List<String> autoComplete(ICommandSender sender, String[] args) {
if(!main.getConfig().getBoolean("tab-complete-queues")) {
return new ArrayList<>();
}
if(args.length == 1) {
return main.getQueueManager().getServerNames();
}
return new ArrayList<>();
}
}
@@ -1,12 +1,20 @@
package us.ajg0702.queue.common;
import org.spongepowered.configurate.ConfigurateException;
import us.ajg0702.queue.api.*;
import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.Logic;
import us.ajg0702.queue.api.PlatformMethods;
import us.ajg0702.queue.api.QueueManager;
import us.ajg0702.queue.api.server.ServerBuilder;
import us.ajg0702.queue.logic.LogicGetter;
import us.ajg0702.utils.common.Config;
import us.ajg0702.utils.common.Messages;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Logger;
public class QueueMain {
@@ -41,20 +49,36 @@ public class QueueMain {
return getLogic().isPremium();
}
private PlatformMethods platformMethods;
private final PlatformMethods platformMethods;
public PlatformMethods getPlatformMethods() {
return platformMethods;
}
private Logger logger;
private final Logger logger;
public Logger getLogger() {
return logger;
}
private List<CompletableFuture<ServerBuilder>> serverCompletableFutures = new ArrayList<>();
private ServerBuilder serverBuilder;
public ServerBuilder getServerBuilder() {
return serverBuilder;
}
public CompletableFuture<ServerBuilder> getFutureServerBuilder() {
CompletableFuture<ServerBuilder> completableFuture = new CompletableFuture<>();
if(serverBuilder != null) {
completableFuture.complete(serverBuilder);
}
serverCompletableFutures.add(completableFuture);
return completableFuture;
}
public void setServerBuilder(ServerBuilder serverBuilder) {
if(this.serverBuilder != null) throw new IllegalStateException("SeverBuilder already set");
this.serverBuilder = serverBuilder;
for(CompletableFuture<ServerBuilder> future : serverCompletableFutures) {
future.complete(serverBuilder);
}
}
private QueueManager queueManager;
public QueueManager getQueueManager() {
@@ -62,10 +86,15 @@ public class QueueMain {
}
public QueueMain(Logger logger, ServerBuilder serverBuilder, PlatformMethods platformMethods, File dataFolder) {
private File dataFolder;
public QueueMain(Logger logger, PlatformMethods platformMethods, File dataFolder) {
this.logger = logger;
this.serverBuilder = serverBuilder;
this.platformMethods = platformMethods;
this.dataFolder = dataFolder;
constructMessages();
try {
config = new Config(dataFolder, logger);
@@ -79,7 +108,14 @@ public class QueueMain {
queueManager = new QueueManagerImpl(this);
logic = new LogicGetter().constructLogic();
aliasManager = new LogicGetter().constructAliasManager(config);
}
private void constructMessages() {
LinkedHashMap<String, String> d = new LinkedHashMap<>();
d.put("status.offline.base", "&c{SERVER} is {STATUS}. &7You are in position &f{POS}&7 of &f{LEN}&7.");
@@ -6,13 +6,14 @@ 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.api.server.AdaptedServer;
import us.ajg0702.queue.api.server.AdaptedServerInfo;
import us.ajg0702.queue.api.server.ServerBuilder;
import us.ajg0702.queue.common.players.QueuePlayerImpl;
import us.ajg0702.utils.bungee.BungeeUtils;
import us.ajg0702.utils.common.Messages;
import us.ajg0702.utils.common.TimeUtils;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class QueueManagerImpl implements QueueManager {
@@ -24,6 +25,16 @@ public class QueueManagerImpl implements QueueManager {
public QueueManagerImpl(QueueMain main) {
this.main = main;
this.msgs = main.getMessages();
CompletableFuture<ServerBuilder> serverBuilderFuture = main.getFutureServerBuilder();
serverBuilderFuture.thenRunAsync(() -> {
try {
servers = serverBuilderFuture.get().buildServers();
// TODO: groups
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});
}
@Override
@@ -107,12 +118,14 @@ public class QueueManagerImpl implements QueueManager {
"SERVER:"+server.getAlias()));
}
} else {
player.sendMessage(msgs.getComponent("status.now-in-queue",
"POS:"+pos,
"LEN:"+len,
"SERVER:"+server.getAlias(),
"SERVERNAME:"+server.getName()
));
player.sendMessage(
msgs.getComponent("status.now-in-queue",
"POS:"+pos,
"LEN:"+len,
"SERVER:"+server.getAlias(),
"SERVERNAME:"+server.getName()
)
);
}
main.getPlatformMethods().sendJoinQueueChannelMessages(server, queuePlayer);
@@ -167,7 +180,7 @@ public class QueueManagerImpl implements QueueManager {
servers.clear();
servers.addAll(main.getServerBuilder().getServers());
servers.addAll(main.getServerBuilder().buildServers());
List<String> groupsraw = main.getConfig().getStringList("server-groups");
for(String groupraw : groupsraw) {