2.5.0 & 2.5.1
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
<groupId>us.ajg0702</groupId>
|
<groupId>us.ajg0702</groupId>
|
||||||
<artifactId>ajQueue</artifactId>
|
<artifactId>ajQueue</artifactId>
|
||||||
<name>ajQueue</name>
|
<name>ajQueue</name>
|
||||||
<version>1.5.0</version>
|
<version>1.5.1</version>
|
||||||
<build>
|
<build>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>us.ajg0702</groupId>
|
<groupId>us.ajg0702</groupId>
|
||||||
<artifactId>ajQueue</artifactId>
|
<artifactId>ajQueue</artifactId>
|
||||||
<version>1.5.0</version>
|
<version>1.5.1</version>
|
||||||
<name>ajQueue</name>
|
<name>ajQueue</name>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package us.ajg0702.queue;
|
||||||
|
|
||||||
|
public class AliasManager {
|
||||||
|
public AliasManager(Main pl) {}
|
||||||
|
public String getAlias(String server) {
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
public String getServer(String alias) {
|
||||||
|
return alias;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,8 @@ import java.util.List;
|
|||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
public class Logic {
|
public class Logic {
|
||||||
|
|
||||||
|
static boolean isp = false;
|
||||||
|
|
||||||
public static void priorityLogic(List<ProxiedPlayer> list, String s, ProxiedPlayer p) {}
|
public static void priorityLogic(List<ProxiedPlayer> list, String s, ProxiedPlayer p) {}
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
MoveCommand moveCommand;
|
MoveCommand moveCommand;
|
||||||
|
|
||||||
|
public AliasManager aliases;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
plugin = this;
|
plugin = this;
|
||||||
@@ -51,7 +53,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
LinkedHashMap<String, String> d = new LinkedHashMap<>();
|
LinkedHashMap<String, String> d = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
|
||||||
d.put("status.offline.base", "&cThe server you are queued for is {STATUS}. &7You are in position &f{POS}&7 of &f{LEN}&7.");
|
d.put("status.offline.base", "&c{SERVER} is {STATUS}. &7You are in position &f{POS}&7 of &f{LEN}&7.");
|
||||||
|
|
||||||
d.put("status.offline.offline", "offline");
|
d.put("status.offline.offline", "offline");
|
||||||
d.put("status.offline.restarting", "restarting");
|
d.put("status.offline.restarting", "restarting");
|
||||||
@@ -92,12 +94,18 @@ public class Main extends Plugin implements Listener {
|
|||||||
d.put("placeholders.queued.none", "None");
|
d.put("placeholders.queued.none", "None");
|
||||||
d.put("placeholders.position.none", "None");
|
d.put("placeholders.position.none", "None");
|
||||||
|
|
||||||
|
d.put("commands.leave.more-args", "&cPlease specify which queue you want to leave! &7You are in these queues: {QUEUES}");
|
||||||
|
d.put("commands.leave.queues-list-format", "&f{NAME}&7, ");
|
||||||
|
d.put("commands.leave.not-queued", "&cYou are not queued for that server! &7You are in these queues: {QUEUES}");
|
||||||
|
|
||||||
msgs = BungeeMessages.getInstance(this, d);
|
msgs = BungeeMessages.getInstance(this, d);
|
||||||
//msgs = BungeeMessages.getInstance(this);
|
//msgs = BungeeMessages.getInstance(this);
|
||||||
|
|
||||||
config = new BungeeConfig(this);
|
config = new BungeeConfig(this);
|
||||||
checkConfig();
|
checkConfig();
|
||||||
|
|
||||||
|
aliases = new AliasManager(this);
|
||||||
|
|
||||||
moveCommand = new MoveCommand(this);
|
moveCommand = new MoveCommand(this);
|
||||||
this.getProxy().getPluginManager().registerCommand(this, moveCommand);
|
this.getProxy().getPluginManager().registerCommand(this, moveCommand);
|
||||||
this.getProxy().getPluginManager().registerCommand(this, new ManageCommand(this));
|
this.getProxy().getPluginManager().registerCommand(this, new ManageCommand(this));
|
||||||
@@ -110,12 +118,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
timeBetweenPlayers = config.getInt("wait-time");
|
timeBetweenPlayers = config.getInt("wait-time");
|
||||||
|
|
||||||
try {
|
isp = Logic.isp;
|
||||||
Class.forName("us.ajg0702.queue.Logic");
|
|
||||||
isp = true;
|
|
||||||
} catch(ClassNotFoundException e) {
|
|
||||||
isp = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
man = Manager.getInstance(this);
|
man = Manager.getInstance(this);
|
||||||
|
|
||||||
@@ -158,13 +161,11 @@ public class Main extends Plugin implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void moveServer(ServerSwitchEvent e) {
|
public void moveServer(ServerSwitchEvent e) {
|
||||||
ProxiedPlayer p = e.getPlayer();
|
ProxiedPlayer p = e.getPlayer();
|
||||||
Server alreadyqueued = man.findPlayerInQueue(p);
|
List<Server> alreadyqueued = man.findPlayerInQueue(p);
|
||||||
if(alreadyqueued != null) {
|
for(Server ser : alreadyqueued) {
|
||||||
List<ProxiedPlayer> queue = alreadyqueued.getQueue();
|
List<ProxiedPlayer> queue = ser.getQueue();
|
||||||
int pos = queue.indexOf(p);
|
int pos = queue.indexOf(p);
|
||||||
if(pos == 0) {
|
if((pos == 0 && p.getServer().getInfo().equals(ser.getInfo())) || config.getBoolean("remove-player-on-server-switch")) {
|
||||||
queue.remove(p);
|
|
||||||
} else if(config.getBoolean("remove-player-on-server-switch")) {
|
|
||||||
queue.remove(p);
|
queue.remove(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -185,8 +186,8 @@ public class Main extends Plugin implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onLeave(PlayerDisconnectEvent e) {
|
public void onLeave(PlayerDisconnectEvent e) {
|
||||||
ProxiedPlayer p = e.getPlayer();
|
ProxiedPlayer p = e.getPlayer();
|
||||||
Server server = man.findPlayerInQueue(p);
|
List<Server> servers = man.findPlayerInQueue(p);
|
||||||
if(server != null) {
|
for(Server server : servers) {
|
||||||
server.getQueue().remove(p);
|
server.getQueue().remove(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -194,24 +195,25 @@ public class Main extends Plugin implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onFailedMove(ServerKickEvent e) {
|
public void onFailedMove(ServerKickEvent e) {
|
||||||
ProxiedPlayer p = e.getPlayer();
|
ProxiedPlayer p = e.getPlayer();
|
||||||
Server server = man.findPlayerInQueue(p);
|
List<Server> queuedServers = man.findPlayerInQueue(p);
|
||||||
if(server == null) return;
|
for(Server server : queuedServers) {
|
||||||
if(!(e.getKickedFrom().equals(server.getInfo()))) return;
|
if(!(e.getKickedFrom().equals(server.getInfo()))) continue;
|
||||||
if(server.getQueue().indexOf(p) != 0) return;
|
if(server.getQueue().indexOf(p) != 0) continue;
|
||||||
List<String> kickreasons = config.getStringList("kick-reasons");
|
List<String> kickreasons = config.getStringList("kick-reasons");
|
||||||
boolean hasReason = false;
|
boolean hasReason = false;
|
||||||
//getLogger().info(e.getKickReasonComponent());
|
//getLogger().info(e.getKickReasonComponent());
|
||||||
for(String reason : kickreasons) {
|
for(String reason : kickreasons) {
|
||||||
for(BaseComponent b : e.getKickReasonComponent()) {
|
for(BaseComponent b : e.getKickReasonComponent()) {
|
||||||
if(b.toPlainText().toLowerCase().contains(reason)) {
|
if(b.toPlainText().toLowerCase().contains(reason)) {
|
||||||
hasReason = true;
|
hasReason = true;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if(hasReason) break;
|
||||||
}
|
}
|
||||||
if(hasReason) break;
|
if(!hasReason) continue;
|
||||||
|
server.getQueue().remove(p);
|
||||||
}
|
}
|
||||||
if(!hasReason) return;
|
|
||||||
server.getQueue().remove(p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -234,10 +236,10 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if(subchannel.equals("queuename")) {
|
if(subchannel.equals("queuename")) {
|
||||||
BungeeUtils.sendCustomData(player, "queuename", man.getQueuedName(player));
|
BungeeUtils.sendCustomData(player, "queuename", aliases.getAlias(man.getQueuedName(player)));
|
||||||
}
|
}
|
||||||
if(subchannel.equals("position")) {
|
if(subchannel.equals("position")) {
|
||||||
Server server = man.findPlayerInQueue(player);
|
Server server = man.getSingleServer(player);
|
||||||
String pos = msgs.get("placeholders.position.none");
|
String pos = msgs.get("placeholders.position.none");
|
||||||
if(server != null) {
|
if(server != null) {
|
||||||
pos = server.getQueue().indexOf(player)+1+"";
|
pos = server.getQueue().indexOf(player)+1+"";
|
||||||
@@ -245,7 +247,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
BungeeUtils.sendCustomData(player, "position", pos);
|
BungeeUtils.sendCustomData(player, "position", pos);
|
||||||
}
|
}
|
||||||
if(subchannel.equals("positionof")) {
|
if(subchannel.equals("positionof")) {
|
||||||
Server server = man.findPlayerInQueue(player);
|
Server server = man.getSingleServer(player);
|
||||||
String pos = msgs.get("placeholders.position.none");
|
String pos = msgs.get("placeholders.position.none");
|
||||||
if(server != null) {
|
if(server != null) {
|
||||||
pos = server.getQueue().size()+"";
|
pos = server.getQueue().size()+"";
|
||||||
@@ -253,7 +255,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
BungeeUtils.sendCustomData(player, "positionof", pos);
|
BungeeUtils.sendCustomData(player, "positionof", pos);
|
||||||
}
|
}
|
||||||
if(subchannel.equals("inqueue")) {
|
if(subchannel.equals("inqueue")) {
|
||||||
Server server = man.findPlayerInQueue(player);
|
Server server = man.getSingleServer(player);
|
||||||
BungeeUtils.sendCustomData(player, "inqueue", (server != null)+"");
|
BungeeUtils.sendCustomData(player, "inqueue", (server != null)+"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -112,16 +112,41 @@ public class Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the name of the server the player is queued for
|
* Get the name of the server the player is queued for.
|
||||||
|
* If multiple servers are queued for, it will use the multi-server-queue-pick option in the config
|
||||||
* @param p The player
|
* @param p The player
|
||||||
* @return The name of the server, the placeholder none message if not queued
|
* @return The name of the server, the placeholder none message if not queued
|
||||||
*/
|
*/
|
||||||
public String getQueuedName(ProxiedPlayer p) {
|
public String getQueuedName(ProxiedPlayer p) {
|
||||||
Server queued = findPlayerInQueue(p);
|
List<Server> queued = findPlayerInQueue(p);
|
||||||
if(queued == null) {
|
if(queued.size() <= 0) {
|
||||||
return msgs.get("placeholders.queued.none");
|
return msgs.get("placeholders.queued.none");
|
||||||
}
|
}
|
||||||
return queued.getName();
|
Server selected = queued.get(0);
|
||||||
|
|
||||||
|
if(pl.config.getString("multi-server-queue-pick").equalsIgnoreCase("last")) {
|
||||||
|
selected = queued.get(queued.size()-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return selected.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a single server the player is queued for. Depends on the multi-server-queue-pick option in the config
|
||||||
|
* @param p The player
|
||||||
|
* @return The server that was chosen that the player is queued for.
|
||||||
|
*/
|
||||||
|
public Server getSingleServer(ProxiedPlayer p) {
|
||||||
|
List<Server> queued = findPlayerInQueue(p);
|
||||||
|
if(queued.size() <= 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Server selected = queued.get(0);
|
||||||
|
|
||||||
|
if(pl.config.getString("multi-server-queue-pick").equalsIgnoreCase("last")) {
|
||||||
|
selected = queued.get(queued.size()-1);
|
||||||
|
}
|
||||||
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -147,7 +172,60 @@ public class Manager {
|
|||||||
*/
|
*/
|
||||||
public void sendActionBars() {
|
public void sendActionBars() {
|
||||||
if(!pl.getConfig().getBoolean("send-actionbar")) return;
|
if(!pl.getConfig().getBoolean("send-actionbar")) return;
|
||||||
for(Server s : servers) {
|
|
||||||
|
for(ProxiedPlayer p : ProxyServer.getInstance().getPlayers()) {
|
||||||
|
Server s = this.getSingleServer(p);
|
||||||
|
|
||||||
|
if(s == null) continue;
|
||||||
|
List<ProxiedPlayer> plys = s.getQueue();
|
||||||
|
int pos = plys.indexOf(p)+1;
|
||||||
|
if(pos == 0) {
|
||||||
|
plys.remove(p);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int len = plys.size();
|
||||||
|
if(!s.isOnline() || s.isFull() || !s.canAccess(p)) {
|
||||||
|
|
||||||
|
String status = msgs.get("status.offline.restarting");
|
||||||
|
|
||||||
|
if(s.getOfflineTime() > pl.config.getInt("offline-time")) {
|
||||||
|
status = msgs.get("status.offline.offline");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!s.canAccess(p)) {
|
||||||
|
status = msgs.get("status.offline.restricted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BungeeUtils.sendCustomData(p, "actionbar", msgs.get("spigot.actionbar.offline")
|
||||||
|
.replaceAll("\\{POS\\}", pos+"")
|
||||||
|
.replaceAll("\\{LEN\\}", len+"")
|
||||||
|
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s.getName()))
|
||||||
|
.replaceAll("\\{STATUS\\}", status)+";time="+pl.timeBetweenPlayers);
|
||||||
|
} else {
|
||||||
|
int time = pos*pl.timeBetweenPlayers;
|
||||||
|
int min = (int) Math.floor((time) / (60));
|
||||||
|
int sec = (int) Math.floor((time % (60)));
|
||||||
|
String timeStr;
|
||||||
|
if(min <= 0) {
|
||||||
|
timeStr = msgs.get("format.time.secs")
|
||||||
|
.replaceAll("\\{m\\}", "0")
|
||||||
|
.replaceAll("\\{s\\}", sec+"");
|
||||||
|
} else {
|
||||||
|
timeStr = msgs.get("format.time.mins")
|
||||||
|
.replaceAll("\\{m\\}", min+"")
|
||||||
|
.replaceAll("\\{s\\}", sec+"");
|
||||||
|
}
|
||||||
|
BungeeUtils.sendCustomData(p, "actionbar", msgs.get("spigot.actionbar.online")
|
||||||
|
.replaceAll("\\{POS\\}", pos+"")
|
||||||
|
.replaceAll("\\{LEN\\}", len+"")
|
||||||
|
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s.getName()))
|
||||||
|
.replaceAll("\\{TIME\\}", timeStr)+";time="+pl.timeBetweenPlayers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*for(Server s : servers) {
|
||||||
int ot = s.getOfflineTime();
|
int ot = s.getOfflineTime();
|
||||||
List<ProxiedPlayer> plys = s.getQueue();
|
List<ProxiedPlayer> plys = s.getQueue();
|
||||||
Iterator<ProxiedPlayer> it = plys.iterator();
|
Iterator<ProxiedPlayer> it = plys.iterator();
|
||||||
@@ -199,7 +277,7 @@ public class Manager {
|
|||||||
.replaceAll("\\{TIME\\}", timeStr)+";time="+pl.timeBetweenPlayers);
|
.replaceAll("\\{TIME\\}", timeStr)+";time="+pl.timeBetweenPlayers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -238,7 +316,7 @@ public class Manager {
|
|||||||
.replaceAll("\\{STATUS\\}", status)
|
.replaceAll("\\{STATUS\\}", status)
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
.replaceAll("\\{POS\\}", pos+"")
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
.replaceAll("\\{LEN\\}", len+"")
|
||||||
.replaceAll("\\{SERVER\\}", s.getName())
|
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s.getName()))
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
int time = pos*pl.timeBetweenPlayers;
|
int time = pos*pl.timeBetweenPlayers;
|
||||||
@@ -259,7 +337,7 @@ public class Manager {
|
|||||||
.replaceAll("\\{POS\\}", pos+"")
|
.replaceAll("\\{POS\\}", pos+"")
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
.replaceAll("\\{LEN\\}", len+"")
|
||||||
.replaceAll("\\{TIME\\}", timeStr)
|
.replaceAll("\\{TIME\\}", timeStr)
|
||||||
.replaceAll("\\{SERVER\\}", s.getName())
|
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s.getName()))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,7 +404,7 @@ public class Manager {
|
|||||||
if(s.getQueue().size() <= 0) continue;
|
if(s.getQueue().size() <= 0) continue;
|
||||||
if(s.isFull() && !nextplayer.hasPermission("ajqueue.joinfull")) continue;
|
if(s.isFull() && !nextplayer.hasPermission("ajqueue.joinfull")) continue;
|
||||||
|
|
||||||
nextplayer.sendMessage(Main.formatMessage(msgs.get("status.sending-now").replaceAll("\\{SERVER\\}", name)));
|
nextplayer.sendMessage(Main.formatMessage(msgs.get("status.sending-now").replaceAll("\\{SERVER\\}", pl.aliases.getAlias(name))));
|
||||||
nextplayer.connect(s.getInfo());
|
nextplayer.connect(s.getInfo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -348,14 +426,18 @@ public class Manager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Server beforeQueue = findPlayerInQueue(p);
|
List<Server> beforeQueues = findPlayerInQueue(p);
|
||||||
if(beforeQueue != null) {
|
if(beforeQueues.size() > 0) {
|
||||||
if(beforeQueue.equals(server)) {
|
if(beforeQueues.contains(server)) {
|
||||||
p.sendMessage(msgs.getBC("errors.already-queued"));
|
p.sendMessage(msgs.getBC("errors.already-queued"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
p.sendMessage(msgs.getBC("status.left-last-queue"));
|
if(!pl.config.getBoolean("allow-multiple-queues")) {
|
||||||
beforeQueue.getQueue().remove(p);
|
p.sendMessage(msgs.getBC("status.left-last-queue"));
|
||||||
|
for(Server ser : beforeQueues) {
|
||||||
|
ser.getQueue().remove(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ProxiedPlayer> list = server.getQueue();
|
List<ProxiedPlayer> list = server.getQueue();
|
||||||
@@ -396,33 +478,36 @@ public class Manager {
|
|||||||
msgs.get("status.now-in-empty-queue")
|
msgs.get("status.now-in-empty-queue")
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
.replaceAll("\\{POS\\}", pos+"")
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
.replaceAll("\\{LEN\\}", len+"")
|
||||||
.replaceAll("\\{SERVER\\}", s)
|
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s))
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
p.sendMessage(Main.formatMessage(
|
p.sendMessage(Main.formatMessage(
|
||||||
msgs.get("status.now-in-queue")
|
msgs.get("status.now-in-queue")
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
.replaceAll("\\{POS\\}", pos+"")
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
.replaceAll("\\{LEN\\}", len+"")
|
||||||
.replaceAll("\\{SERVER\\}", s)
|
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
BungeeUtils.sendCustomData(p, "position", pos+"");
|
BungeeUtils.sendCustomData(p, "position", pos+"");
|
||||||
BungeeUtils.sendCustomData(p, "positionof", len+"");
|
BungeeUtils.sendCustomData(p, "positionof", len+"");
|
||||||
BungeeUtils.sendCustomData(p, "queuename", s);
|
BungeeUtils.sendCustomData(p, "queuename", pl.aliases.getAlias(s));
|
||||||
BungeeUtils.sendCustomData(p, "inqueue", "true");
|
BungeeUtils.sendCustomData(p, "inqueue", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds which server the player is queued for
|
* Finds which servers the player is queued for
|
||||||
* @param p The player to search for
|
* @param p The player to search for
|
||||||
* @return The server the player is queued for. Null if not in a queue
|
* @return The servers the player is queued for.
|
||||||
*/
|
*/
|
||||||
public Server findPlayerInQueue(ProxiedPlayer p) {
|
public List<Server> findPlayerInQueue(ProxiedPlayer p) {
|
||||||
|
List<Server> srs = new ArrayList<>();
|
||||||
for(Server s : servers) {
|
for(Server s : servers) {
|
||||||
if(s.getQueue().contains(p)) return s;
|
if(s.getQueue().contains(p)) {
|
||||||
|
srs.add(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return srs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Server getServer(String name) {
|
public Server getServer(String name) {
|
||||||
|
|||||||
@@ -7,13 +7,16 @@ import net.md_5.bungee.api.Callback;
|
|||||||
import net.md_5.bungee.api.ServerPing;
|
import net.md_5.bungee.api.ServerPing;
|
||||||
import net.md_5.bungee.api.config.ServerInfo;
|
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 us.ajg0702.utils.bungee.BungeeConfig;
|
||||||
|
|
||||||
public class Server {
|
public class Server {
|
||||||
String name;
|
String name;
|
||||||
ServerInfo info;
|
ServerInfo info;
|
||||||
|
BungeeConfig config;
|
||||||
public Server(String name, ServerInfo info) {
|
public Server(String name, ServerInfo info) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.info = info;
|
this.info = info;
|
||||||
|
config = Manager.getInstance().pl.config;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,8 +73,14 @@ public class Server {
|
|||||||
public int getOfflineTime() {
|
public int getOfflineTime() {
|
||||||
return offlineTime;
|
return offlineTime;
|
||||||
}
|
}
|
||||||
|
long lastOffline = 0;
|
||||||
public boolean isOnline() {
|
public boolean isOnline() {
|
||||||
|
if(System.currentTimeMillis()-lastOffline <= (config.getInt("wait-after-online")*1000) && online) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!online) {
|
||||||
|
lastOffline = System.currentTimeMillis();
|
||||||
|
}
|
||||||
return online;
|
return online;
|
||||||
}
|
}
|
||||||
public boolean isFull() {
|
public boolean isFull() {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package us.ajg0702.queue.commands;
|
package us.ajg0702.queue.commands;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
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;
|
||||||
@@ -23,11 +25,47 @@ public class LeaveCommand extends Command {
|
|||||||
sender.sendMessage(msgs.getBC("errors.player-only"));
|
sender.sendMessage(msgs.getBC("errors.player-only"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Manager man = Manager.getInstance();
|
||||||
ProxiedPlayer p = (ProxiedPlayer) sender;
|
ProxiedPlayer p = (ProxiedPlayer) sender;
|
||||||
Server server = Manager.getInstance().findPlayerInQueue((ProxiedPlayer) sender);
|
List<Server> servers = man.findPlayerInQueue(p);
|
||||||
if(server != null) {
|
|
||||||
server.getQueue().remove(p);
|
|
||||||
p.sendMessage(msgs.getBC("commands.leave-queue", "SERVER:"+server.getName()));
|
if(servers.size() == 1) {
|
||||||
|
servers.get(0).getQueue().remove(p);
|
||||||
|
p.sendMessage(msgs.getBC("commands.leave-queue", "SERVER:"+plugin.aliases.getAlias(servers.get(0).getName())));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(args.length <= 0) {
|
||||||
|
p.sendMessage(msgs.getBC("commands.leave.more-args", "QUEUES:"+getQueueList(servers)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String leaving = args[0];
|
||||||
|
Server leavingsrv = man.getServer(leaving);
|
||||||
|
if(leavingsrv == null) {
|
||||||
|
p.sendMessage(msgs.getBC("commands.leave.not-queued", "QUEUES:"+getQueueList(servers)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(leavingsrv.getQueue().indexOf(p) == -1) {
|
||||||
|
p.sendMessage(msgs.getBC("commands.leave.not-queued", "QUEUES:"+getQueueList(servers)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
leavingsrv.getQueue().remove(p);
|
||||||
|
p.sendMessage(msgs.getBC("commands.leave-queue", "SERVER:"+plugin.aliases.getAlias(leavingsrv.getName())));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getQueueList(List<Server> servers) {
|
||||||
|
String queueList = "";
|
||||||
|
for(Server server : servers) {
|
||||||
|
queueList += msgs.get("commands.leave.queues-list-format").replaceAll("\\{NAME\\}", server.getName());
|
||||||
|
}
|
||||||
|
if(queueList.length() > 2) {
|
||||||
|
queueList = queueList.substring(0, queueList.length()-2);
|
||||||
|
}
|
||||||
|
return queueList;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Dont touch this number please
|
# Dont touch this number please
|
||||||
config-version: 8
|
config-version: 11
|
||||||
|
|
||||||
# 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
|
||||||
@@ -60,3 +60,31 @@ reload-servers-interval: 0
|
|||||||
# If enabled, players will be required to have the permission ajqueue.queue.<server>
|
# If enabled, players will be required to have the permission ajqueue.queue.<server>
|
||||||
# Default: false
|
# Default: false
|
||||||
require-permission: false
|
require-permission: false
|
||||||
|
|
||||||
|
|
||||||
|
# Should we let players join more than one queue?
|
||||||
|
# If enabled, players will be able to be in multiple queues at once.
|
||||||
|
# Default: true
|
||||||
|
allow-multiple-queues: true
|
||||||
|
|
||||||
|
# If the player is queued for multiple servers, which server should we pick to use in things like placeholders and actionbars
|
||||||
|
# Options are first and last
|
||||||
|
# Default: last
|
||||||
|
multi-server-queue-pick: last
|
||||||
|
|
||||||
|
|
||||||
|
# THIS FEATURE IS ONLY AVAILABLE ON ajQueuePlus (https://www.spigotmc.org/resources/ajqueueplus.79123/)
|
||||||
|
# This will show players a different name than the actual bungeecord server name
|
||||||
|
# for example, instead of showing players "event-a", this option can make it appear as "Event A"
|
||||||
|
# With this example, you would use this: - "event-a:Event A"
|
||||||
|
# Note that currently players still have to use the normal names in queue commands and leave commands
|
||||||
|
server-aliases:
|
||||||
|
- "event-a:Event A"
|
||||||
|
|
||||||
|
|
||||||
|
# How long should we wait after a server is online before sending players?
|
||||||
|
# The server will still show up as offline or restarting until this amount of time after its up
|
||||||
|
# Meant to let your server 'cool down' after lag from starting up
|
||||||
|
# In seconds
|
||||||
|
# Default: 1
|
||||||
|
wait-after-online: 1
|
||||||
|
|||||||
Reference in New Issue
Block a user