Merge branch 'dev' into 'master'
1.9.2 See merge request ajg0702/ajqueue!2
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "us.ajg0702"
|
group = "us.ajg0702"
|
||||||
version = "1.9.1"
|
version = "1.9.2"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@@ -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,7 +217,33 @@ 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);
|
||||||
for(QueueServer server : queuedServers) {
|
|
||||||
|
|
||||||
|
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) {
|
||||||
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;
|
||||||
List<String> kickreasons = config.getStringList("kick-reasons");
|
List<String> kickreasons = config.getStringList("kick-reasons");
|
||||||
@@ -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]);
|
||||||
@@ -160,8 +161,13 @@ public class ManageCommand extends Command implements TabExecutor {
|
|||||||
sender.sendMessage(msgs.getBC("noperm"));
|
sender.sendMessage(msgs.getBC("noperm"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Manager.getInstance().getServer(args[2]) == null) {
|
||||||
|
sender.sendMessage(msgs.getBC("errors.server-not-exist", "SERVER:"+args[2]));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<String> playerNames = getNameList();
|
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;
|
||||||
playerNames.add(ply.getName().toLowerCase());
|
if(lowercase) {
|
||||||
|
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);
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -7,4 +7,7 @@ softdepend: [PlaceholderAPI]
|
|||||||
commands:
|
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
|
||||||
Reference in New Issue
Block a user