Merge branch 'dev' of gitlab.com:ajg0702/ajqueue into dev
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
package us.ajg0702.queue.api;
|
||||
|
||||
import us.ajg0702.queue.api.commands.IBaseCommand;
|
||||
|
||||
public interface Implementation {
|
||||
void registerCommand(IBaseCommand command);
|
||||
void unregisterCommand(String name);
|
||||
default void unregisterCommand(IBaseCommand command) {
|
||||
unregisterCommand(command.getName());
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package us.ajg0702.queue.commands.commands.SlashServer;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import us.ajg0702.queue.api.commands.ICommandSender;
|
||||
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;
|
||||
import java.util.Locale;
|
||||
|
||||
public class SlashServerCommand extends BaseCommand {
|
||||
|
||||
final QueueMain main;
|
||||
final String server;
|
||||
public SlashServerCommand(QueueMain main, String server) {
|
||||
this.main = main;
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImmutableList<String> getAliases() {
|
||||
return ImmutableList.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermission() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Messages getMessages() {
|
||||
return main.getMessages();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(ICommandSender sender, String[] args) {
|
||||
if(!sender.isPlayer()) {
|
||||
sender.sendMessage(getMessages().getComponent("errors.player-only"));
|
||||
return;
|
||||
}
|
||||
main.getQueueManager().addToQueue(main.getPlatformMethods().senderToPlayer(sender), server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> autoComplete(ICommandSender sender, String[] args) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,7 @@ public class Pause extends SubCommand {
|
||||
List<QueueServer> servers;
|
||||
QueueServer queueServer = main.getQueueManager().findServer(args[0]);
|
||||
if(queueServer == null && !args[0].equalsIgnoreCase("all")) {
|
||||
sender.sendMessage(getMessages().getComponent("commands.pause.no-server", "SERVER:"+args[1]));
|
||||
sender.sendMessage(getMessages().getComponent("commands.pause.no-server", "SERVER:"+args[0]));
|
||||
return;
|
||||
} else if(queueServer == null && args[0].equalsIgnoreCase("all")) {
|
||||
servers = main.getQueueManager().getServers();
|
||||
|
||||
@@ -54,6 +54,7 @@ public class Reload extends SubCommand {
|
||||
main.getTaskManager().rescheduleTasks();
|
||||
main.getQueueManager().reloadServers();
|
||||
main.getMessages().reload();
|
||||
main.getSlashServerManager().reload();
|
||||
|
||||
main.getUpdater().setEnabled(main.getConfig().getBoolean("enable-updater"));
|
||||
|
||||
|
||||
@@ -43,8 +43,13 @@ public class Send extends SubCommand {
|
||||
public void execute(ICommandSender sender, String[] args) {
|
||||
if(!checkPermission(sender)) return;
|
||||
|
||||
if(args.length < 2) {
|
||||
sender.sendMessage(getMessages().getComponent("commands.send.usage"));
|
||||
return;
|
||||
}
|
||||
|
||||
if(main.getQueueManager().findServer(args[1]) == null) {
|
||||
sender.sendMessage(getMessages().getComponent("errors.server-not-exist", "SERVER:"+args[2]));
|
||||
sender.sendMessage(getMessages().getComponent("errors.server-not-exist", "SERVER:"+args[1]));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -53,7 +58,7 @@ public class Send extends SubCommand {
|
||||
|
||||
AdaptedPlayer ply = main.getPlatformMethods().getPlayer(args[0]);
|
||||
if(ply == null) {
|
||||
sender.sendMessage(Component.text("player not found"));
|
||||
sender.sendMessage(Component.text("player not found (even though it was in playerNames)"));
|
||||
return;
|
||||
}
|
||||
if(ply.getName() == null) {
|
||||
|
||||
@@ -107,6 +107,16 @@ public class QueueMain extends AjQueueAPI {
|
||||
return updater;
|
||||
}
|
||||
|
||||
private final Implementation implementation;
|
||||
public Implementation getImplementation() {
|
||||
return implementation;
|
||||
}
|
||||
|
||||
private SlashServerManager slashServerManager;
|
||||
public SlashServerManager getSlashServerManager() {
|
||||
return slashServerManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
taskManager.shutdown();
|
||||
@@ -117,7 +127,8 @@ public class QueueMain extends AjQueueAPI {
|
||||
private final File dataFolder;
|
||||
|
||||
|
||||
public QueueMain(QueueLogger logger, PlatformMethods platformMethods, File dataFolder) {
|
||||
public QueueMain(Implementation implementation, QueueLogger logger, PlatformMethods platformMethods, File dataFolder) {
|
||||
this.implementation = implementation;
|
||||
|
||||
logicGetter = new LogicGetterImpl();
|
||||
|
||||
@@ -147,6 +158,8 @@ public class QueueMain extends AjQueueAPI {
|
||||
return;
|
||||
}
|
||||
|
||||
slashServerManager = new SlashServerManager(this);
|
||||
|
||||
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
messages.getComponent("one").replaceText(b -> b.match(Pattern.compile("\\e")).replacement("a"));
|
||||
@@ -232,6 +245,7 @@ public class QueueMain extends AjQueueAPI {
|
||||
d.put("commands.pause.paused.false", "&aun-paused");
|
||||
|
||||
d.put("commands.send.player-not-found", "&cThat player could not be found. Make sure they are online!");
|
||||
d.put("commands.send.usage", "<red>Usage: /ajqueue send <player> <server>");
|
||||
|
||||
d.put("commands.listqueues.header", "&9Queues:");
|
||||
d.put("commands.listqueues.format", "<hover:show_text:'&7Status: {STATUS}'>{COLOR}{NAME}&7: {COUNT} queued</hover>");
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class QueueManagerImpl implements QueueManager {
|
||||
|
||||
private List<QueueServer> servers = new CopyOnWriteArrayList<>();
|
||||
private CopyOnWriteArrayList<QueueServer> servers = new CopyOnWriteArrayList<>();
|
||||
|
||||
private final QueueMain main;
|
||||
private final Messages msgs;
|
||||
@@ -272,7 +272,7 @@ public class QueueManagerImpl implements QueueManager {
|
||||
|
||||
List<QueueServer> oldServers = ImmutableList.copyOf(servers);
|
||||
|
||||
servers = buildServers();
|
||||
servers = new CopyOnWriteArrayList<>(buildServers());
|
||||
|
||||
List<String> groupsRaw = main.getConfig().getStringList("server-groups");
|
||||
for(String groupRaw : groupsRaw) {
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package us.ajg0702.queue.common;
|
||||
|
||||
import us.ajg0702.queue.api.Implementation;
|
||||
import us.ajg0702.queue.commands.commands.SlashServer.SlashServerCommand;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SlashServerManager {
|
||||
|
||||
private final List<SlashServerCommand> serverCommands = new ArrayList<>();
|
||||
|
||||
private final QueueMain main;
|
||||
private final Implementation implementation;
|
||||
public SlashServerManager(QueueMain main) {
|
||||
this.main = main;
|
||||
this.implementation = this.main.getImplementation();
|
||||
reload();
|
||||
}
|
||||
public void reload() {
|
||||
serverCommands.forEach(implementation::unregisterCommand);
|
||||
serverCommands.clear();
|
||||
|
||||
List<String> slashServerServers = main.getConfig().getStringList("slash-servers");
|
||||
for(String server : slashServerServers) {
|
||||
SlashServerCommand command = new SlashServerCommand(main, server);
|
||||
serverCommands.add(command);
|
||||
implementation.registerCommand(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
# Dont touch this number please
|
||||
config-version: 28
|
||||
config-version: 29
|
||||
|
||||
|
||||
# This is the main config for ajQueue.
|
||||
@@ -262,3 +262,9 @@ velocity-kick-message: false
|
||||
|
||||
# Should the updater be enabled?
|
||||
enable-updater: true
|
||||
|
||||
# What servers should we make slash server commands for?
|
||||
# For example, if survival is in this list, then if a player executes /survival
|
||||
# then they will be put in the queue for survival
|
||||
# This works for both servers and groups
|
||||
slash-servers: []
|
||||
+26
-3
@@ -11,6 +11,7 @@ import net.md_5.bungee.event.EventHandler;
|
||||
import org.bstats.bungeecord.Metrics;
|
||||
import org.bstats.charts.SimplePie;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import us.ajg0702.queue.api.Implementation;
|
||||
import us.ajg0702.queue.api.commands.IBaseCommand;
|
||||
import us.ajg0702.queue.api.util.QueueLogger;
|
||||
import us.ajg0702.queue.commands.BaseCommand;
|
||||
@@ -25,14 +26,18 @@ import us.ajg0702.queue.platforms.bungeecord.server.BungeeServer;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class BungeeQueue extends Plugin implements Listener {
|
||||
public class BungeeQueue extends Plugin implements Listener, Implementation {
|
||||
|
||||
private QueueMain main;
|
||||
|
||||
List<IBaseCommand> commands;
|
||||
|
||||
Map<String, BungeeCommand> commandMap;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
QueueLogger logger = new BungeeLogger(getLogger());
|
||||
@@ -41,6 +46,7 @@ public class BungeeQueue extends Plugin implements Listener {
|
||||
adventure = BungeeAudiences.create(this);
|
||||
|
||||
main = new QueueMain(
|
||||
this,
|
||||
logger,
|
||||
new BungeeMethods(this, getProxy(), logger),
|
||||
dataFolder
|
||||
@@ -56,9 +62,10 @@ public class BungeeQueue extends Plugin implements Listener {
|
||||
new ManageCommand(main)
|
||||
);
|
||||
|
||||
commandMap = new HashMap<>();
|
||||
|
||||
for(IBaseCommand command : commands) {
|
||||
getProxy().getPluginManager()
|
||||
.registerCommand(this, new BungeeCommand((BaseCommand) command));
|
||||
registerCommand(command);
|
||||
}
|
||||
|
||||
getProxy().getPluginManager().registerListener(this, this);
|
||||
@@ -129,4 +136,20 @@ public class BungeeQueue extends Plugin implements Listener {
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterCommand(String name) {
|
||||
BungeeCommand bungeeCommand = commandMap.get(name);
|
||||
if(bungeeCommand == null) return;
|
||||
getProxy().getPluginManager().unregisterCommand(bungeeCommand);
|
||||
commandMap.remove(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCommand(IBaseCommand command) {
|
||||
BungeeCommand bungeeCommand = new BungeeCommand((BaseCommand) command);
|
||||
commandMap.put(command.getName(), bungeeCommand);
|
||||
getProxy().getPluginManager()
|
||||
.registerCommand(this, bungeeCommand);
|
||||
}
|
||||
}
|
||||
|
||||
+21
-9
@@ -18,6 +18,7 @@ import net.kyori.adventure.text.Component;
|
||||
import org.bstats.charts.SimplePie;
|
||||
import org.bstats.velocity.Metrics;
|
||||
import org.slf4j.Logger;
|
||||
import us.ajg0702.queue.api.Implementation;
|
||||
import us.ajg0702.queue.api.commands.IBaseCommand;
|
||||
import us.ajg0702.queue.commands.BaseCommand;
|
||||
import us.ajg0702.queue.commands.commands.leavequeue.LeaveCommand;
|
||||
@@ -44,7 +45,7 @@ import java.util.Optional;
|
||||
authors = {"ajgeiss0702"}
|
||||
)
|
||||
|
||||
public class VelocityQueue {
|
||||
public class VelocityQueue implements Implementation {
|
||||
final ProxyServer proxyServer;
|
||||
final VelocityLogger logger;
|
||||
|
||||
@@ -66,9 +67,12 @@ public class VelocityQueue {
|
||||
|
||||
List<IBaseCommand> commands;
|
||||
|
||||
CommandManager commandManager;
|
||||
|
||||
@Subscribe
|
||||
public void onProxyInit(ProxyInitializeEvent e) {
|
||||
main = new QueueMain(
|
||||
this,
|
||||
logger,
|
||||
new VelocityMethods(this, proxyServer, logger),
|
||||
dataFolder
|
||||
@@ -81,7 +85,7 @@ public class VelocityQueue {
|
||||
new ManageCommand(main)
|
||||
);
|
||||
|
||||
CommandManager commandManager = proxyServer.getCommandManager();
|
||||
commandManager = proxyServer.getCommandManager();
|
||||
|
||||
|
||||
proxyServer.getChannelRegistrar().register(MinecraftChannelIdentifier.create("ajqueue", "tospigot"));
|
||||
@@ -89,12 +93,7 @@ public class VelocityQueue {
|
||||
|
||||
|
||||
for(IBaseCommand command : commands) {
|
||||
commandManager.register(
|
||||
commandManager.metaBuilder(command.getName())
|
||||
.aliases(command.getAliases().toArray(new String[]{}))
|
||||
.build(),
|
||||
new VelocityCommand(main, (BaseCommand) command)
|
||||
);
|
||||
registerCommand(command);
|
||||
}
|
||||
|
||||
|
||||
@@ -138,7 +137,6 @@ public class VelocityQueue {
|
||||
main.getEventHandler().onPlayerLeave(new VelocityPlayer(e.getPlayer()));
|
||||
}
|
||||
|
||||
@SuppressWarnings("SimplifyOptionalCallChains")
|
||||
@Subscribe
|
||||
public void onKick(KickedFromServerEvent e) {
|
||||
if(!e.getPlayer().getCurrentServer().isPresent()) return; // if the player is kicked on initial join, we dont care
|
||||
@@ -152,4 +150,18 @@ public class VelocityQueue {
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterCommand(String name) {
|
||||
commandManager.unregister(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCommand(IBaseCommand command) {
|
||||
commandManager.register(
|
||||
commandManager.metaBuilder(command.getName())
|
||||
.aliases(command.getAliases().toArray(new String[]{}))
|
||||
.build(),
|
||||
new VelocityCommand(main, (BaseCommand) command)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user