Merge branch 'dev' into 'master'

1.9.2

See merge request ajg0702/ajqueue!2
This commit is contained in:
ajgeiss0702
2021-04-18 21:37:25 +00:00
7 changed files with 100 additions and 16 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ plugins {
} }
group = "us.ajg0702" group = "us.ajg0702"
version = "1.9.1" version = "1.9.2"
repositories { repositories {
mavenCentral() mavenCentral()
+35 -1
View File
@@ -6,6 +6,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
@@ -71,7 +72,7 @@ public class Main extends Plugin implements Listener {
d.put("status.now-in-empty-queue", ""); d.put("status.now-in-empty-queue", "");
d.put("status.sending-now", "&aSending you to &f{SERVER} &anow.."); d.put("status.sending-now", "&aSending you to &f{SERVER} &anow..");
d.put("errors.server-not-exist", "&cThat server does not exist!"); d.put("errors.server-not-exist", "&cThe server {SERVER} does not exist!");
d.put("errors.already-queued", "&cYou are already queued for that server!"); d.put("errors.already-queued", "&cYou are already queued for that server!");
d.put("errors.player-only", "&cThis command can only be executed as a player!"); d.put("errors.player-only", "&cThis command can only be executed as a player!");
d.put("errors.already-connected", "&cYou are already connected to this server!"); d.put("errors.already-connected", "&cYou are already connected to this server!");
@@ -216,6 +217,32 @@ public class Main extends Plugin implements Listener {
public void onFailedMove(ServerKickEvent e) { public void onFailedMove(ServerKickEvent e) {
ProxiedPlayer p = e.getPlayer(); ProxiedPlayer p = e.getPlayer();
List<QueueServer> queuedServers = man.findPlayerInQueue(p); List<QueueServer> queuedServers = man.findPlayerInQueue(p);
if(!queuedServers.contains(man.getServer(e.getKickedFrom().getName())) && config.getBoolean("auto-add-to-queue-on-kick")) {
String plainReason = "";
for(BaseComponent b : e.getKickReasonComponent()) {
plainReason += b.toPlainText();
}
List<String> reasons = config.getStringList("auto-add-kick-reasons");
boolean shouldqueue = false;
for(String reason : reasons) {
if(plainReason.toLowerCase().contains(reason.toLowerCase())) {
shouldqueue = true;
return;
}
}
if(shouldqueue || reasons.isEmpty()) {
plugin.getProxy().getScheduler().schedule(this, () -> {
man.addToQueue(p, e.getKickedFrom().getName());
}, (long) (config.getDouble("auto-add-to-queue-on-kick-delay")*1000), TimeUnit.MILLISECONDS);
}
}
for(QueueServer server : queuedServers) { for(QueueServer server : queuedServers) {
if(!(server.getInfos().contains(e.getKickedFrom()))) continue; if(!(server.getInfos().contains(e.getKickedFrom()))) continue;
if(server.getQueue().indexOf(p) != 0) continue; if(server.getQueue().indexOf(p) != 0) continue;
@@ -312,6 +339,13 @@ public class Main extends Plugin implements Listener {
if(server == null) return; if(server == null) return;
BungeeUtils.sendCustomData(player, "queuedfor", srv, server.getQueue().size()+""); BungeeUtils.sendCustomData(player, "queuedfor", srv, server.getQueue().size()+"");
} }
if(subchannel.equals("leavequeue")) {
String arg = "";
try {
arg = in.readUTF();
} catch(Exception ignored) {}
getProxy().getPluginManager().dispatchCommand(player, "leavequeue"+arg);
}
} catch (IOException e1) { } catch (IOException e1) {
getLogger().warning("An error occured while reading data from spigot side:"); getLogger().warning("An error occured while reading data from spigot side:");
@@ -1,6 +1,7 @@
package us.ajg0702.queue.commands; package us.ajg0702.queue.commands;
import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor; import net.md_5.bungee.api.plugin.TabExecutor;
@@ -109,7 +110,7 @@ public class ManageCommand extends Command implements TabExecutor {
return; return;
} }
if(!Manager.getInstance().getServerNames().contains(args[1])) { if(!Manager.getInstance().getServerNames().contains(args[1])) {
sender.sendMessage(msgs.getBC("errors.server-not-exist")); sender.sendMessage(msgs.getBC("errors.server-not-exist", "SERVER:"+args[1]));
return; return;
} }
QueueServer srv = Manager.getInstance().findServer(args[1]); QueueServer srv = Manager.getInstance().findServer(args[1]);
@@ -161,7 +162,12 @@ public class ManageCommand extends Command implements TabExecutor {
return; return;
} }
List<String> playerNames = getNameList(); if(Manager.getInstance().getServer(args[2]) == null) {
sender.sendMessage(msgs.getBC("errors.server-not-exist", "SERVER:"+args[2]));
return;
}
List<String> playerNames = getNameList(true);
if(playerNames.contains(args[1].toLowerCase())) { if(playerNames.contains(args[1].toLowerCase())) {
ProxiedPlayer ply = pl.getProxy().getPlayer(args[1]); ProxiedPlayer ply = pl.getProxy().getPlayer(args[1]);
@@ -172,6 +178,21 @@ public class ManageCommand extends Command implements TabExecutor {
.replaceAll("\\{SERVER\\}", args[2])) .replaceAll("\\{SERVER\\}", args[2]))
); );
return; return;
} else if(pl.getProxy().getServers().keySet().contains(args[1])) {
ServerInfo from = pl.getProxy().getServerInfo(args[1]);
if(from == null) {
sender.sendMessage(msgs.getBC("errors.server-not-exist", "SERVER:"+args[1]));
return;
}
List<ProxiedPlayer> players = new ArrayList<>(from.getPlayers());
for(ProxiedPlayer ply : players) {
Manager.getInstance().addToQueue(ply, args[2]);
}
sender.sendMessage(msgs.getBC("send", "PLAYER:"+args[1], "SERVER:"+args[2]));
return;
} else { } else {
sender.sendMessage(msgs.getBC("commands.send.player-not-found")); sender.sendMessage(msgs.getBC("commands.send.player-not-found"));
return; return;
@@ -182,11 +203,15 @@ public class ManageCommand extends Command implements TabExecutor {
sender.sendMessage(Main.formatMessage("/ajqueue <reload|list|send|pause>")); sender.sendMessage(Main.formatMessage("/ajqueue <reload|list|send|pause>"));
} }
private List<String> getNameList() { private List<String> getNameList(boolean lowercase) {
List<String> playerNames = new ArrayList<>(); List<String> playerNames = new ArrayList<>();
for(ProxiedPlayer ply : pl.getProxy().getPlayers()) { for(ProxiedPlayer ply : pl.getProxy().getPlayers()) {
if(ply == null || !ply.isConnected()) continue; if(ply == null || !ply.isConnected()) continue;
if(lowercase) {
playerNames.add(ply.getName().toLowerCase()); playerNames.add(ply.getName().toLowerCase());
} else {
playerNames.add(ply.getName());
}
} }
return playerNames; return playerNames;
} }
@@ -198,7 +223,9 @@ public class ManageCommand extends Command implements TabExecutor {
} }
if(args.length == 2) { if(args.length == 2) {
if(args[0].equalsIgnoreCase("send")) { if(args[0].equalsIgnoreCase("send")) {
return getNameList(); List<String> options = new ArrayList<>(pl.getProxy().getServers().keySet());
options.addAll(getNameList(false));
return options;
} }
if(args[0].equalsIgnoreCase("pause")) { if(args[0].equalsIgnoreCase("pause")) {
return Manager.getInstance().getServerNames(); return Manager.getInstance().getServerNames();
@@ -212,6 +239,6 @@ public class ManageCommand extends Command implements TabExecutor {
return Arrays.asList("on", "off", "true", "false"); return Arrays.asList("on", "off", "true", "false");
} }
} }
return null; return new ArrayList<>();
} }
} }
@@ -16,10 +16,16 @@ public class Commands implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player) && !(args.length > 1)) return true; if(!(sender instanceof Player)) return true;
Player player = null; Player player = (Player) sender;
if(sender instanceof Player) { if(command.getName().equals("leavequeue")) {
player = (Player) sender; StringBuilder arg = new StringBuilder();
for(String a : args) {
arg.append(" ");
arg.append(a);
}
pl.sendMessage(player, "leavequeue", arg.toString());
return true;
} }
if(args.length < 1) return false; if(args.length < 1) return false;
@@ -28,6 +28,7 @@ public class Main extends JavaPlugin implements PluginMessageListener,Listener {
getServer().getMessenger().registerOutgoingPluginChannel(this, "ajqueue:tobungee"); getServer().getMessenger().registerOutgoingPluginChannel(this, "ajqueue:tobungee");
this.getCommand("move").setExecutor(new Commands(this)); this.getCommand("move").setExecutor(new Commands(this));
this.getCommand("leavequeue").setExecutor(new Commands(this));
Bukkit.getPluginManager().registerEvents(this, this); Bukkit.getPluginManager().registerEvents(this, this);
+15 -2
View File
@@ -1,5 +1,5 @@
# Dont touch this number please # Dont touch this number please
config-version: 20 config-version: 21
# The time the server will wait between sending people in the queue # The time the server will wait between sending people in the queue
# Default: 5 # Default: 5
@@ -147,7 +147,6 @@ max-tries: 10
# Default: false # Default: false
enable-bypasspaused-permission: false enable-bypasspaused-permission: false
# Should we check to make sure that people dont get sent quicker than wait-time? # Should we check to make sure that people dont get sent quicker than wait-time?
# Default: true # Default: true
check-last-player-sent-time: true check-last-player-sent-time: true
@@ -158,4 +157,18 @@ check-last-player-sent-time: true
# Default: false # Default: false
priority-queue-debug: false priority-queue-debug: false
# When a player is kicked from a server, should we automatically add that player to the queue?
# You will still need to use another plugin to make sure the player doesnt get kicked from bungee completly.
# Default: false
auto-add-to-queue-on-kick: false
# The delay for the above option.
# In seconds, decimals supported.
auto-add-to-queue-on-kick-delay: 1
# With what kick reasons should we auto-add the player to the queue
# This wont work if auto-add-to-queue-on-kick is disabled.
# If you set it to [], then all kick messages will cause the player to be added to the queue
# This works on contains, so you dont have to include the whole kick message, just a few words.
auto-add-kick-reasons:
- "restarting"
- "closed"
+3
View File
@@ -8,3 +8,6 @@ commands:
move: move:
aliases: [server, queue, joinq, joinqueue] aliases: [server, queue, joinq, joinqueue]
description: Queue for a server description: Queue for a server
leavequeue:
aliases: [leaveq]
description: Leaves a queue