almost done :)

This commit is contained in:
ajgeiss0702
2021-07-29 14:17:25 -07:00
parent e9785ffe4e
commit 07721809fb
28 changed files with 835 additions and 65 deletions
@@ -50,6 +50,7 @@ public class ListCommand extends BaseCommand {
public void execute(ICommandSender sender, String[] args) {
if(!checkPermission(sender)) return;
AdaptedPlayer spp = null;
if(sender.isPlayer()) {
spp = main.getPlatformMethods().senderToPlayer(sender);
@@ -1,17 +1,22 @@
package us.ajg0702.queue.common;
import com.google.common.collect.ImmutableList;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import us.ajg0702.queue.api.EventHandler;
import us.ajg0702.queue.api.commands.IBaseCommand;
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.commands.commands.PlayerSender;
import us.ajg0702.queue.common.players.QueuePlayerImpl;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class EventHandlerImpl implements EventHandler {
@@ -91,7 +96,6 @@ public class EventHandlerImpl implements EventHandler {
}
}
@Override
public void onPlayerJoin(AdaptedPlayer player) {
ImmutableList<QueuePlayer> queues = main.getQueueManager().findPlayerInQueues(player);
@@ -109,5 +113,84 @@ public class EventHandlerImpl implements EventHandler {
for(QueuePlayer queuePlayer : queues) {
((QueuePlayerImpl) queuePlayer).setLeaveTime(System.currentTimeMillis());
}
main.getQueueManager().clear(player);
}
@Override
public void onPlayerJoinServer(AdaptedPlayer player) {
ImmutableList<QueuePlayer> alreadyqueued = main.getQueueManager().findPlayerInQueues(player);
for(QueuePlayer queuePlayer : alreadyqueued) {
QueueServer server = queuePlayer.getQueueServer();
int pos = queuePlayer.getPosition();
if((pos <= 1 && server.getServerNames().contains(player.getServerName())) || main.getConfig().getBoolean("remove-player-on-server-switch")) {
server.removePlayer(player);
server.setLastSentTime(System.currentTimeMillis());
}
}
String serverName = player.getServerName();
List<String> svs = main.getConfig().getStringList("queue-servers");
for(String s : svs) {
if(!s.contains(":")) continue;
String[] parts = s.split(":");
String from = parts[0];
String to = parts[1];
if(from.equalsIgnoreCase(serverName)) {
main.getQueueManager().addToQueue(player, to);
}
}
}
@Override
public void onServerKick(AdaptedPlayer player, AdaptedServer from, Component reason, boolean moving) {
if(!player.isConnected()) return;
String plainReason = PlainTextComponentSerializer.plainText().serialize(reason);
if(!moving && main.getConfig().getBoolean("send-fail-debug")) {
main.getLogger().warning("Failed to send "+player.getName()+" to "+from.getName()+". Kicked with reason: "+plainReason);
}
ImmutableList<QueueServer> queuedServers = main.getQueueManager().getPlayerQueues(player);
if(!queuedServers.contains(main.getQueueManager().findServer(from.getName())) && main.getConfig().getBoolean("auto-add-to-queue-on-kick")) {
List<String> reasons = main.getConfig().getStringList("auto-add-kick-reasons");
boolean shouldqueue = false;
for(String kickReason : reasons) {
if(plainReason.toLowerCase().contains(kickReason.toLowerCase())) {
shouldqueue = true;
break;
}
}
if(shouldqueue || reasons.isEmpty()) {
main.getTaskManager().runLater(() -> {
if(!player.isConnected()) return;
String toName = from.getName();
player.sendMessage(main.getMessages().getComponent("auto-queued", "SERVER:"+toName));
main.getQueueManager().addToQueue(player, toName);
}, (long) (main.getConfig().getDouble("auto-add-to-queue-on-kick-delay")*1000), TimeUnit.MILLISECONDS);
return;
}
}
for(QueueServer server : queuedServers) {
if(!(server.getServerNames().contains(from.getName()))) continue;
QueuePlayer queuePlayer = server.findPlayer(player);
if(queuePlayer.getPosition() != 1) continue;
List<String> kickReasons = main.getConfig().getStringList("kick-reasons");
for(String kickReason : kickReasons) {
if(plainReason.toLowerCase().contains(kickReason.toLowerCase())) {
server.removePlayer(queuePlayer);
}
}
}
}
}
@@ -15,6 +15,7 @@ import us.ajg0702.utils.common.TimeUtils;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class QueueManagerImpl implements QueueManager {
@@ -27,47 +28,12 @@ public class QueueManagerImpl implements QueueManager {
this.main = main;
this.msgs = main.getMessages();
CompletableFuture<ServerBuilder> serverBuilderFuture = main.getFutureServerBuilder();
serverBuilderFuture.thenRunAsync(() -> {
try {
servers = serverBuilderFuture.get().buildServers();
List<String> groupsRaw = main.getConfig().getStringList("server-groups");
for(String groupRaw : groupsRaw) {
if(groupRaw.isEmpty()) {
main.getLogger().warning("Empty group string! If you dont want server groups, set server-groups like this: server-groups: []");
continue;
}
int delay = main.getConfig().getBoolean("wait-to-load-servers") ? main.getConfig().getInt("wait-to-load-servers-delay") : 0;
String groupName = groupRaw.split(":")[0];
String[] serversRaw = groupRaw.split(":")[1].split(",");
if(main.getServerBuilder().getServer(groupName) != null) {
main.getLogger().warning("The name of a group ('"+groupName+"') cannot be the same as the name of a server!");
continue;
}
List<AdaptedServer> groupServers = new ArrayList<>();
for(String serverRaw : serversRaw) {
AdaptedServer si = main.getServerBuilder().getServer(serverRaw);
if(si == null) {
main.getLogger().warning("Could not find server named '"+serverRaw+"' in servergroup '"+groupName+"'!");
continue;
}
groupServers.add(si);
}
if(groupServers.size() == 0) {
main.getLogger().warning("Server group '"+groupName+"' has no servers! Ignoring it.");
continue;
}
servers.add(new QueueServerImpl(groupName, main, groupServers));
}
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});
main.getTaskManager().runLater(() -> {
CompletableFuture<ServerBuilder> serverBuilderFuture = main.getFutureServerBuilder();
serverBuilderFuture.thenRunAsync(this::reloadServers);
}, delay, TimeUnit.MILLISECONDS);
}
@Override
@@ -261,7 +227,7 @@ public class QueueManagerImpl implements QueueManager {
continue;
}
this.servers.add(main.getServerBuilder().buildGroup(groupName, groupServers));
this.servers.add(new QueueServerImpl(groupName, main, groupServers));
}
}
@@ -515,4 +481,9 @@ public class QueueManagerImpl implements QueueManager {
}
return ImmutableList.copyOf(srs);
}
@Override
public void clear(AdaptedPlayer player) {
sendingNowAntiSpam.remove(player);
}
}
@@ -109,6 +109,10 @@ public class TaskManager {
return scheduleAtFixedRate(executor, command, 0, period, unit);
}
public ScheduledFuture<?> runLater(Runnable runnable, long delay, TimeUnit unit) {
return executor.schedule(runnable, delay, unit);
}
private ScheduledFuture<?> scheduleAtFixedRate(ScheduledExecutorService executor, Runnable command, long initialDelay, long period, TimeUnit unit) {
return executor.scheduleAtFixedRate(() -> {