Merge branch 'dev' into 'master'
1.9.8 See merge request ajg0702/ajqueue!15
This commit is contained in:
+11
-3
@@ -5,10 +5,11 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "us.ajg0702"
|
group = "us.ajg0702"
|
||||||
version = "1.9.7"
|
version = "1.9.8"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
|
|
||||||
maven { url = uri("https://jitpack.io") }
|
maven { url = uri("https://jitpack.io") }
|
||||||
maven { url = uri("https://gitlab.com/api/v4/projects/19978391/packages/maven") }
|
maven { url = uri("https://gitlab.com/api/v4/projects/19978391/packages/maven") }
|
||||||
@@ -17,17 +18,23 @@ repositories {
|
|||||||
maven { url = uri("https://repo.codemc.org/repository/maven-public") }
|
maven { url = uri("https://repo.codemc.org/repository/maven-public") }
|
||||||
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") }
|
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") }
|
||||||
maven { url = uri("https://repo.codemc.io/repository/nms/") }
|
maven { url = uri("https://repo.codemc.io/repository/nms/") }
|
||||||
|
maven { url = uri("https://repo.ajg0702.us") }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
testImplementation("junit:junit:4.12")
|
||||||
|
testImplementation("net.kyori:adventure-text-serializer-bungeecord:4.0.0-SNAPSHOT")
|
||||||
|
testImplementation("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT")
|
||||||
|
|
||||||
compileOnly("com.github.MyzelYam:PremiumVanishAPI:2.0.3")
|
compileOnly("com.github.MyzelYam:PremiumVanishAPI:2.0.3")
|
||||||
compileOnly("net.md-5:bungeecord-api:1.14-SNAPSHOT")
|
compileOnly("net.md-5:bungeecord-api:1.14-SNAPSHOT")
|
||||||
compileOnly(group = "org.spigotmc", name = "spigot", version = "1.16.5-R0.1-SNAPSHOT")
|
compileOnly(group = "org.spigotmc", name = "spigot", version = "1.16.5-R0.1-SNAPSHOT")
|
||||||
compileOnly("me.clip:placeholderapi:2.10.4")
|
compileOnly("me.clip:placeholderapi:2.10.4")
|
||||||
|
compileOnly("net.kyori:adventure-text-serializer-bungeecord:4.0.0-SNAPSHOT")
|
||||||
|
|
||||||
implementation("us.ajg0702:ajUtils:1.0.0")
|
implementation("us.ajg0702:ajUtils:1.0.4")
|
||||||
implementation("org.bstats:bstats-bungeecord:2.2.1")
|
implementation("org.bstats:bstats-bungeecord:2.2.1")
|
||||||
|
implementation("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -43,6 +50,7 @@ tasks.withType<ProcessResources> {
|
|||||||
tasks.shadowJar {
|
tasks.shadowJar {
|
||||||
relocate("us.ajg0702.utils", "us.ajg0702.queue.utils")
|
relocate("us.ajg0702.utils", "us.ajg0702.queue.utils")
|
||||||
relocate("org.bstats", "us.ajg0702.bstats")
|
relocate("org.bstats", "us.ajg0702.bstats")
|
||||||
|
relocate("net.kyori", "us.ajg0702.queue.kyori")
|
||||||
archiveFileName.set("${baseName}-${version}.${extension}")
|
archiveFileName.set("${baseName}-${version}.${extension}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,10 +23,7 @@ import us.ajg0702.queue.commands.LeaveCommand;
|
|||||||
import us.ajg0702.queue.commands.ListCommand;
|
import us.ajg0702.queue.commands.ListCommand;
|
||||||
import us.ajg0702.queue.commands.ManageCommand;
|
import us.ajg0702.queue.commands.ManageCommand;
|
||||||
import us.ajg0702.queue.commands.MoveCommand;
|
import us.ajg0702.queue.commands.MoveCommand;
|
||||||
import us.ajg0702.utils.bungee.BungeeConfig;
|
import us.ajg0702.utils.bungee.*;
|
||||||
import us.ajg0702.utils.bungee.BungeeMessages;
|
|
||||||
import us.ajg0702.utils.bungee.BungeeStats;
|
|
||||||
import us.ajg0702.utils.bungee.BungeeUtils;
|
|
||||||
|
|
||||||
public class Main extends Plugin implements Listener {
|
public class Main extends Plugin implements Listener {
|
||||||
|
|
||||||
@@ -68,7 +65,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
d.put("status.online.base", "&7You are in position &f{POS}&7 of &f{LEN}&7. Estimated time: {TIME}");
|
d.put("status.online.base", "&7You are in position &f{POS}&7 of &f{LEN}&7. Estimated time: {TIME}");
|
||||||
d.put("status.left-last-queue", "&aYou left the last queue you were in.");
|
d.put("status.left-last-queue", "&aYou left the last queue you were in.");
|
||||||
d.put("status.now-in-queue", "&aYou are now queued for {SERVER}! &7You are in position &f{POS}&7 of &f{LEN}&7.\n&7Type &f/leavequeue&7 to leave the queue!");
|
d.put("status.now-in-queue", "&aYou are now queued for {SERVER}! &7You are in position &f{POS}&7 of &f{LEN}&7.\n&7Type &f/leavequeue&7 or &f<click:run_command:/leavequeue {SERVERNAME}>click here</click>&7 to leave the queue!");
|
||||||
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..");
|
||||||
|
|
||||||
@@ -116,7 +113,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
d.put("commands.send.player-not-found", "&cThat player could not be found. Make sure they are online!");
|
d.put("commands.send.player-not-found", "&cThat player could not be found. Make sure they are online!");
|
||||||
|
|
||||||
d.put("commands.listqueues.header", "&9Queues:");
|
d.put("commands.listqueues.header", "&9Queues:");
|
||||||
d.put("commands.listqueues.format", "{COLOR}{NAME}&7: {COUNT} queued");
|
d.put("commands.listqueues.format", "<hover:show_text:'&7Status: {STATUS}'>{COLOR}{NAME}&7: {COUNT} queued</hover>");
|
||||||
|
|
||||||
d.put("max-tries-reached", "&cUnable to connect to {SERVER}. Max retries reached.");
|
d.put("max-tries-reached", "&cUnable to connect to {SERVER}. Max retries reached.");
|
||||||
d.put("auto-queued", "&aYou've been auto-queued for {SERVER} because you were kicked.");
|
d.put("auto-queued", "&aYou've been auto-queued for {SERVER} because you were kicked.");
|
||||||
@@ -194,7 +191,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
List<String> svs = config.getStringList("queue-servers");
|
List<String> svs = config.getStringList("queue-servers");
|
||||||
for(String s : svs) {
|
for(String s : svs) {
|
||||||
if(!s.contains(":")) continue;
|
if(!s.contains(":")) continue;
|
||||||
String[] parts = s.split("\\:");
|
String[] parts = s.split(":");
|
||||||
String from = parts[0];
|
String from = parts[0];
|
||||||
String to = parts[1];
|
String to = parts[1];
|
||||||
if(from.equalsIgnoreCase(servername)) {
|
if(from.equalsIgnoreCase(servername)) {
|
||||||
@@ -222,15 +219,15 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
if(!queuedServers.contains(man.getServer(e.getKickedFrom().getName())) && config.getBoolean("auto-add-to-queue-on-kick")) {
|
if(!queuedServers.contains(man.getServer(e.getKickedFrom().getName())) && config.getBoolean("auto-add-to-queue-on-kick")) {
|
||||||
|
|
||||||
String plainReason = "";
|
StringBuilder plainReason = new StringBuilder();
|
||||||
for(BaseComponent b : e.getKickReasonComponent()) {
|
for(BaseComponent b : e.getKickReasonComponent()) {
|
||||||
plainReason += b.toPlainText();
|
plainReason.append(b.toPlainText());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> reasons = config.getStringList("auto-add-kick-reasons");
|
List<String> reasons = config.getStringList("auto-add-kick-reasons");
|
||||||
boolean shouldqueue = false;
|
boolean shouldqueue = false;
|
||||||
for(String reason : reasons) {
|
for(String reason : reasons) {
|
||||||
if(plainReason.toLowerCase().contains(reason.toLowerCase())) {
|
if(plainReason.toString().toLowerCase().contains(reason.toLowerCase())) {
|
||||||
shouldqueue = true;
|
shouldqueue = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -254,31 +251,22 @@ public class Main extends Plugin implements Listener {
|
|||||||
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");
|
||||||
//getLogger().info(e.getKickReasonComponent());
|
//getLogger().info(e.getKickReasonComponent());
|
||||||
String plainReason = "";
|
StringBuilder plainReason = new StringBuilder();
|
||||||
for(BaseComponent b : e.getKickReasonComponent()) {
|
for(BaseComponent b : e.getKickReasonComponent()) {
|
||||||
plainReason += b.toPlainText();
|
plainReason.append(b.toPlainText());
|
||||||
}
|
}
|
||||||
for(String reason : kickreasons) {
|
for(String reason : kickreasons) {
|
||||||
if(plainReason.toLowerCase().contains(reason.toLowerCase())) {
|
if(plainReason.toString().toLowerCase().contains(reason.toLowerCase())) {
|
||||||
server.getQueue().remove(p);
|
server.getQueue().remove(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(config.getBoolean("send-fail-debug")) {
|
if(config.getBoolean("send-fail-debug")) {
|
||||||
String r = "";
|
StringBuilder r = new StringBuilder();
|
||||||
for(BaseComponent b : e.getKickReasonComponent()) {
|
for(BaseComponent b : e.getKickReasonComponent()) {
|
||||||
r += b.toPlainText();
|
r.append(b.toPlainText());
|
||||||
}
|
}
|
||||||
getLogger().warning("Failed to send "+p.getName()+" to "+e.getKickedFrom().getName()+" because "+r);
|
getLogger().warning("Failed to send "+p.getName()+" to "+e.getKickedFrom().getName()+" because "+r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(plainReason.toLowerCase().contains("whitelist") && plainReason.contains("&ajq;")) {
|
|
||||||
String rawlist = plainReason.split("&ajq;")[1];
|
|
||||||
List<String> list = new ArrayList<>();
|
|
||||||
for(String s : rawlist.split(",")) {
|
|
||||||
list.add(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,7 +314,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
}
|
}
|
||||||
if(subchannel.equals("position")) {
|
if(subchannel.equals("position")) {
|
||||||
QueueServer server = man.getSingleServer(player);
|
QueueServer server = man.getSingleServer(player);
|
||||||
String pos = msgs.get("placeholders.position.none");
|
String pos = msgs.getString("placeholders.position.none");
|
||||||
if(server != null) {
|
if(server != null) {
|
||||||
pos = server.getQueue().indexOf(player)+1+"";
|
pos = server.getQueue().indexOf(player)+1+"";
|
||||||
}
|
}
|
||||||
@@ -334,7 +322,7 @@ public class Main extends Plugin implements Listener {
|
|||||||
}
|
}
|
||||||
if(subchannel.equals("positionof")) {
|
if(subchannel.equals("positionof")) {
|
||||||
QueueServer server = man.getSingleServer(player);
|
QueueServer server = man.getSingleServer(player);
|
||||||
String pos = msgs.get("placeholders.position.none");
|
String pos = msgs.getString("placeholders.position.none");
|
||||||
if(server != null) {
|
if(server != null) {
|
||||||
pos = server.getQueue().size()+"";
|
pos = server.getQueue().size()+"";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,17 +40,9 @@ public class Manager {
|
|||||||
msgs = BungeeMessages.getInstance();
|
msgs = BungeeMessages.getInstance();
|
||||||
reloadIntervals();
|
reloadIntervals();
|
||||||
if(!pl.config.getBoolean("wait-to-load-servers")) {
|
if(!pl.config.getBoolean("wait-to-load-servers")) {
|
||||||
pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
pl.getProxy().getScheduler().schedule(pl, this::reloadServers, 0, TimeUnit.MILLISECONDS);
|
||||||
public void run() {
|
|
||||||
reloadServers();
|
|
||||||
}
|
|
||||||
}, 0, TimeUnit.MILLISECONDS);
|
|
||||||
} else {
|
} else {
|
||||||
pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
pl.getProxy().getScheduler().schedule(pl, this::reloadServers, pl.config.getInt("wait-to-load-servers-delay"), TimeUnit.MILLISECONDS);
|
||||||
public void run() {
|
|
||||||
reloadServers();
|
|
||||||
}
|
|
||||||
}, pl.config.getInt("wait-to-load-servers-delay"), TimeUnit.MILLISECONDS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,76 +80,52 @@ public class Manager {
|
|||||||
if(sendId != -1) {
|
if(sendId != -1) {
|
||||||
try {
|
try {
|
||||||
pl.getProxy().getScheduler().cancel(sendId);
|
pl.getProxy().getScheduler().cancel(sendId);
|
||||||
} catch(IllegalArgumentException e) {}
|
} catch(IllegalArgumentException ignored) {}
|
||||||
sendId = -1;
|
sendId = -1;
|
||||||
}
|
}
|
||||||
if(updateId != -1) {
|
if(updateId != -1) {
|
||||||
try {
|
try {
|
||||||
pl.getProxy().getScheduler().cancel(updateId);
|
pl.getProxy().getScheduler().cancel(updateId);
|
||||||
} catch(IllegalArgumentException e) {}
|
} catch(IllegalArgumentException ignored) {}
|
||||||
updateId = -1;
|
updateId = -1;
|
||||||
}
|
}
|
||||||
if(messagerId != -1) {
|
if(messagerId != -1) {
|
||||||
try {
|
try {
|
||||||
pl.getProxy().getScheduler().cancel(messagerId);
|
pl.getProxy().getScheduler().cancel(messagerId);
|
||||||
} catch(IllegalArgumentException e) {}
|
} catch(IllegalArgumentException ignored) {}
|
||||||
messagerId = -1;
|
messagerId = -1;
|
||||||
}
|
}
|
||||||
if(actionbarId != -1) {
|
if(actionbarId != -1) {
|
||||||
try {
|
try {
|
||||||
pl.getProxy().getScheduler().cancel(actionbarId);
|
pl.getProxy().getScheduler().cancel(actionbarId);
|
||||||
} catch(IllegalArgumentException e) {}
|
} catch(IllegalArgumentException ignored) {}
|
||||||
actionbarId = -1;
|
actionbarId = -1;
|
||||||
}
|
}
|
||||||
if(srvRefId != -1) {
|
if(srvRefId != -1) {
|
||||||
try {
|
try {
|
||||||
pl.getProxy().getScheduler().cancel(srvRefId);
|
pl.getProxy().getScheduler().cancel(srvRefId);
|
||||||
} catch(IllegalArgumentException e) {}
|
} catch(IllegalArgumentException ignored) {}
|
||||||
srvRefId = -1;
|
srvRefId = -1;
|
||||||
}
|
}
|
||||||
if(queueEventId != -1) {
|
if(queueEventId != -1) {
|
||||||
try {
|
try {
|
||||||
pl.getProxy().getScheduler().cancel(queueEventId);
|
pl.getProxy().getScheduler().cancel(queueEventId);
|
||||||
} catch(IllegalArgumentException e) {}
|
} catch(IllegalArgumentException ignored) {}
|
||||||
queueEventId = -1;
|
queueEventId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
queueEventId = pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
queueEventId = pl.getProxy().getScheduler().schedule(pl, this::sendQueueEvents, 2, 2, TimeUnit.SECONDS).getId();
|
||||||
public void run() {
|
|
||||||
sendQueueEvents();
|
|
||||||
}
|
|
||||||
}, 2, 2, TimeUnit.SECONDS).getId();
|
|
||||||
|
|
||||||
sendId = pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
sendId = pl.getProxy().getScheduler().schedule(pl, this::sendPlayers, 2, Math.round(pl.timeBetweenPlayers*1000), TimeUnit.MILLISECONDS).getId();
|
||||||
public void run() {
|
|
||||||
sendPlayers();
|
|
||||||
}
|
|
||||||
}, 2, Math.round(pl.timeBetweenPlayers*1000), TimeUnit.MILLISECONDS).getId();
|
|
||||||
|
|
||||||
updateId = pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
updateId = pl.getProxy().getScheduler().schedule(pl, this::updateServers, 0, Math.max(Math.round(pl.timeBetweenPlayers), 2), TimeUnit.SECONDS).getId();
|
||||||
public void run() {
|
|
||||||
updateServers();
|
|
||||||
}
|
|
||||||
}, 0, Math.max(Math.round(pl.timeBetweenPlayers), 2), TimeUnit.SECONDS).getId();
|
|
||||||
//pl.getLogger().info("Time: "+pl.timeBetweenPlayers);
|
//pl.getLogger().info("Time: "+pl.timeBetweenPlayers);
|
||||||
|
|
||||||
messagerId = pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
messagerId = pl.getProxy().getScheduler().schedule(pl, this::sendMessages, 0, pl.getConfig().getInt("message-time"), TimeUnit.SECONDS).getId();
|
||||||
public void run() {
|
actionbarId = pl.getProxy().getScheduler().schedule(pl, this::sendActionBars, 0, 2, TimeUnit.SECONDS).getId();
|
||||||
sendMessages();
|
|
||||||
}
|
|
||||||
}, 0, pl.getConfig().getInt("message-time"), TimeUnit.SECONDS).getId();
|
|
||||||
actionbarId = pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
sendActionBars();
|
|
||||||
}
|
|
||||||
}, 0, 2, TimeUnit.SECONDS).getId();
|
|
||||||
|
|
||||||
if(pl.config.getInt("reload-servers-interval") > 0) {
|
if(pl.config.getInt("reload-servers-interval") > 0) {
|
||||||
srvRefId = pl.getProxy().getScheduler().schedule(pl, new Runnable() {
|
srvRefId = pl.getProxy().getScheduler().schedule(pl, this::updateServers, pl.config.getInt("reload-servers-interval"), pl.config.getInt("reload-servers-interval"), TimeUnit.SECONDS).getId();
|
||||||
public void run() {
|
|
||||||
updateServers();
|
|
||||||
}
|
|
||||||
}, pl.config.getInt("reload-servers-interval"), pl.config.getInt("reload-servers-interval"), TimeUnit.SECONDS).getId();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,7 +138,7 @@ public class Manager {
|
|||||||
public String getQueuedName(ProxiedPlayer p) {
|
public String getQueuedName(ProxiedPlayer p) {
|
||||||
List<QueueServer> queued = findPlayerInQueue(p);
|
List<QueueServer> queued = findPlayerInQueue(p);
|
||||||
if(queued.size() <= 0) {
|
if(queued.size() <= 0) {
|
||||||
return msgs.get("placeholders.queued.none");
|
return msgs.getString("placeholders.queued.none");
|
||||||
}
|
}
|
||||||
QueueServer selected = queued.get(0);
|
QueueServer selected = queued.get(0);
|
||||||
|
|
||||||
@@ -277,28 +245,7 @@ public class Manager {
|
|||||||
int len = plys.size();
|
int len = plys.size();
|
||||||
if(!s.isJoinable(p)) {
|
if(!s.isJoinable(p)) {
|
||||||
|
|
||||||
String status = "unknown";
|
String status = s.getStatusString(p);
|
||||||
|
|
||||||
|
|
||||||
if(!s.canAccess(p)) {
|
|
||||||
status = msgs.get("status.offline.restricted");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s.isFull()) {
|
|
||||||
status = msgs.get("status.offline.full");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s.isPaused()) {
|
|
||||||
status = msgs.get("status.offline.paused");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!s.isOnline()) {
|
|
||||||
status = msgs.get("status.offline.restarting");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s.getOfflineTime() > pl.config.getInt("offline-time")) {
|
|
||||||
status = msgs.get("status.offline.offline");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
p.sendMessage(ChatMessageType.ACTION_BAR, msgs.getBC("spigot.actionbar.offline",
|
p.sendMessage(ChatMessageType.ACTION_BAR, msgs.getBC("spigot.actionbar.offline",
|
||||||
@@ -308,17 +255,17 @@ public class Manager {
|
|||||||
"STATUS:"+status));
|
"STATUS:"+status));
|
||||||
} else {
|
} else {
|
||||||
int time = (int) Math.round(pos*pl.timeBetweenPlayers);
|
int time = (int) Math.round(pos*pl.timeBetweenPlayers);
|
||||||
int min = (int) Math.floor((time) / (60));
|
int min = (int) Math.floor((time) / (60.0));
|
||||||
int sec = (int) Math.floor((time % (60)));
|
int sec = (int) Math.floor((time % (60.0)));
|
||||||
String timeStr;
|
String timeStr;
|
||||||
if(min <= 0) {
|
if(min <= 0) {
|
||||||
timeStr = msgs.get("format.time.secs")
|
timeStr = msgs.getString("format.time.secs")
|
||||||
.replaceAll("\\{m\\}", "0")
|
.replaceAll("\\{m}", "0")
|
||||||
.replaceAll("\\{s\\}", sec+"");
|
.replaceAll("\\{s}", sec+"");
|
||||||
} else {
|
} else {
|
||||||
timeStr = msgs.get("format.time.mins")
|
timeStr = msgs.getString("format.time.mins")
|
||||||
.replaceAll("\\{m\\}", min+"")
|
.replaceAll("\\{m}", min+"")
|
||||||
.replaceAll("\\{s\\}", sec+"");
|
.replaceAll("\\{s}", sec+"");
|
||||||
}
|
}
|
||||||
p.sendMessage(ChatMessageType.ACTION_BAR, msgs.getBC("spigot.actionbar.online",
|
p.sendMessage(ChatMessageType.ACTION_BAR, msgs.getBC("spigot.actionbar.online",
|
||||||
"POS:"+pos,
|
"POS:"+pos,
|
||||||
@@ -332,10 +279,11 @@ public class Manager {
|
|||||||
|
|
||||||
|
|
||||||
public synchronized void sendQueueEvents() {
|
public synchronized void sendQueueEvents() {
|
||||||
for(Iterator<QueueServer> it = servers.iterator(); it.hasNext();) {
|
for (QueueServer s : servers) {
|
||||||
QueueServer s = it.next();
|
for (ProxiedPlayer player : s.getQueue()) {
|
||||||
for(Iterator<ProxiedPlayer> pit = s.getQueue().iterator(); pit.hasNext();) {
|
if (player == null) continue;
|
||||||
BungeeUtils.sendCustomData(pit.next(), "inqueueevent", "true");
|
if (!player.isConnected()) continue;
|
||||||
|
BungeeUtils.sendCustomData(player, "inqueueevent", "true");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -369,57 +317,38 @@ public class Manager {
|
|||||||
int pos = plys.indexOf(ply)+1;
|
int pos = plys.indexOf(ply)+1;
|
||||||
if(pos == 0) return;
|
if(pos == 0) return;
|
||||||
int len = plys.size();
|
int len = plys.size();
|
||||||
int ot = s.getOfflineTime();
|
|
||||||
if(!s.isJoinable(ply)) {
|
if(!s.isJoinable(ply)) {
|
||||||
|
|
||||||
String status = msgs.get("status.offline.restarting");
|
String status = s.getStatusString(ply);
|
||||||
|
|
||||||
if(ot > pl.config.getInt("offline-time")) {
|
|
||||||
status = msgs.get("status.offline.offline");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s.isFull() && s.isOnline()) {
|
|
||||||
status = msgs.get("status.offline.full");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!s.canAccess(ply)) {
|
|
||||||
status = msgs.get("status.offline.restricted");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s.isPaused()) {
|
|
||||||
status = msgs.get("status.offline.paused");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(status.isEmpty()) return;
|
if(status.isEmpty()) return;
|
||||||
|
|
||||||
ply.sendMessage(Main.formatMessage(
|
ply.sendMessage(msgs.getBC("status.offline.base",
|
||||||
msgs.get("status.offline.base")
|
"STATUS:"+status,
|
||||||
.replaceAll("\\{STATUS\\}", status)
|
"POS:"+pos,
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
"LEN:"+len,
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
"SERVER:"+pl.aliases.getAlias(s.getName())
|
||||||
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s.getName()))
|
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
if(msgs.get("spigot.actionbar.offline").isEmpty()) return;
|
if(msgs.getString("spigot.actionbar.offline").isEmpty()) return;
|
||||||
int time = (int) Math.round(pos*pl.timeBetweenPlayers);
|
int time = (int) Math.round(pos*pl.timeBetweenPlayers);
|
||||||
int min = (int) Math.floor((time) / (60));
|
int min = (int) Math.floor((time) / (60.0));
|
||||||
int sec = (int) Math.floor((time % (60)));
|
int sec = (int) Math.floor((time % (60.0)));
|
||||||
String timeStr;
|
String timeStr;
|
||||||
if(min <= 0) {
|
if(min <= 0) {
|
||||||
timeStr = msgs.get("format.time.secs")
|
timeStr = msgs.getString("format.time.secs")
|
||||||
.replaceAll("\\{m\\}", "0")
|
.replaceAll("\\{m}", "0")
|
||||||
.replaceAll("\\{s\\}", sec+"");
|
.replaceAll("\\{s}", sec+"");
|
||||||
} else {
|
} else {
|
||||||
timeStr = msgs.get("format.time.mins")
|
timeStr = msgs.getString("format.time.mins")
|
||||||
.replaceAll("\\{m\\}", min+"")
|
.replaceAll("\\{m}", min+"")
|
||||||
.replaceAll("\\{s\\}", sec+"");
|
.replaceAll("\\{s}", sec+"");
|
||||||
}
|
}
|
||||||
ply.sendMessage(Main.formatMessage(
|
ply.sendMessage(msgs.getBC("status.online.base",
|
||||||
msgs.get("status.online.base")
|
"TIME:"+timeStr,
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
"POS:"+pos,
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
"LEN:"+len,
|
||||||
.replaceAll("\\{TIME\\}", timeStr)
|
"SERVER:"+pl.aliases.getAlias(s.getName())
|
||||||
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s.getName()))
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -443,9 +372,8 @@ public class Manager {
|
|||||||
* Updates info about servers.
|
* Updates info about servers.
|
||||||
*/
|
*/
|
||||||
public synchronized void updateServers() {
|
public synchronized void updateServers() {
|
||||||
Iterator<QueueServer> it = servers.iterator();
|
for (QueueServer server : servers) {
|
||||||
while(it.hasNext()) {
|
server.update();
|
||||||
it.next().update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -475,7 +403,6 @@ public class Manager {
|
|||||||
if(selectednum > online && findServer(si.getName()).isJoinable(p)) {
|
if(selectednum > online && findServer(si.getName()).isJoinable(p)) {
|
||||||
selected = si;
|
selected = si;
|
||||||
selectednum = online;
|
selectednum = online;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -541,25 +468,6 @@ public class Manager {
|
|||||||
if(!s.canAccess(nextplayer)) continue;
|
if(!s.canAccess(nextplayer)) continue;
|
||||||
|
|
||||||
|
|
||||||
/*if(nextplayer == null) {
|
|
||||||
pl.getLogger().info("nextplayer is null");
|
|
||||||
}
|
|
||||||
if(nextplayer.getServer() == null) {
|
|
||||||
pl.getLogger().info("getServer is null");
|
|
||||||
}
|
|
||||||
if(nextplayer.getServer().getInfo() == null) {
|
|
||||||
pl.getLogger().info("getInfo is null");
|
|
||||||
}
|
|
||||||
if(nextplayer.getServer().getInfo().getName() == null) {
|
|
||||||
pl.getLogger().info("getName is null");
|
|
||||||
}
|
|
||||||
if(s == null) {
|
|
||||||
pl.getLogger().info("s is null");
|
|
||||||
}
|
|
||||||
if(s.getName() == null) {
|
|
||||||
pl.getLogger().info("s.getName() is null");
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if(s.getQueue().size() <= 0) continue;
|
if(s.getQueue().size() <= 0) continue;
|
||||||
while(!nextplayer.isConnected()) {
|
while(!nextplayer.isConnected()) {
|
||||||
s.getQueue().remove(nextplayer);
|
s.getQueue().remove(nextplayer);
|
||||||
@@ -653,13 +561,12 @@ public class Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<ProxiedPlayer> list = server.getQueue();
|
List<ProxiedPlayer> list = server.getQueue();
|
||||||
if(list.indexOf(p) != -1) {
|
if(list.contains(p)) {
|
||||||
int pos = list.indexOf(p)+1;
|
int pos = list.indexOf(p)+1;
|
||||||
int len = list.size();
|
int len = list.size();
|
||||||
p.sendMessage(Main.formatMessage(
|
p.sendMessage(msgs.getBC("errors.already-queued",
|
||||||
msgs.get("errors.already-queued")
|
"POS:"+pos,
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
"LEN:"+len
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
|
||||||
));
|
));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -692,11 +599,9 @@ public class Manager {
|
|||||||
int len = list.size();
|
int len = list.size();
|
||||||
|
|
||||||
|
|
||||||
boolean sendInstant = pl.config.getStringList("send-instantly").indexOf(server.getName()) != -1 || server.isJoinable(p);
|
boolean sendInstant = pl.config.getStringList("send-instantly").contains(server.getName()) || server.isJoinable(p);
|
||||||
boolean sendInstantp = list.size() <= 1 && server.canAccess(p);
|
boolean sendInstantp = list.size() <= 1 && server.canAccess(p);
|
||||||
boolean timeGood = pl.config.getBoolean("check-last-player-sent-time") ?
|
boolean timeGood = !pl.config.getBoolean("check-last-player-sent-time") || System.currentTimeMillis() - server.getLastSentTime() > Math.floor(pl.getConfig().getDouble("wait-time") * 1000);
|
||||||
System.currentTimeMillis() - server.getLastSentTime() > Math.floor(pl.getConfig().getDouble("wait-time")*1000)
|
|
||||||
: true;
|
|
||||||
|
|
||||||
if((sendInstant && (sendInstantp && timeGood))) {
|
if((sendInstant && (sendInstantp && timeGood))) {
|
||||||
sendPlayers(s);
|
sendPlayers(s);
|
||||||
@@ -706,12 +611,11 @@ public class Manager {
|
|||||||
p.sendMessage(m);
|
p.sendMessage(m);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//p.sendMessage(Main.formatMessage("now in queue, not send instant"));
|
p.sendMessage(msgs.getBC("status.now-in-queue",
|
||||||
p.sendMessage(Main.formatMessage(
|
"POS:"+pos,
|
||||||
msgs.get("status.now-in-queue")
|
"LEN:"+len,
|
||||||
.replaceAll("\\{POS\\}", pos+"")
|
"SERVER:"+pl.aliases.getAlias(server.getName()),
|
||||||
.replaceAll("\\{LEN\\}", len+"")
|
"SERVERNAME:"+server.getName()
|
||||||
.replaceAll("\\{SERVER\\}", pl.aliases.getAlias(s))
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
//p.sendMessage(Main.formatMessage(sendInstant+" && ("+sendInstantp+" && " + timeGood+")"));
|
//p.sendMessage(Main.formatMessage(sendInstant+" && ("+sendInstantp+" && " + timeGood+")"));
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package us.ajg0702.queue;
|
package us.ajg0702.queue;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import net.md_5.bungee.api.Callback;
|
import net.md_5.bungee.api.Callback;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
@@ -11,6 +8,7 @@ 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;
|
import us.ajg0702.utils.bungee.BungeeConfig;
|
||||||
|
import us.ajg0702.utils.bungee.BungeeMessages;
|
||||||
|
|
||||||
public class QueueServer {
|
public class QueueServer {
|
||||||
|
|
||||||
@@ -18,7 +16,7 @@ public class QueueServer {
|
|||||||
List<ServerInfo> servers;
|
List<ServerInfo> servers;
|
||||||
|
|
||||||
public QueueServer(String name, ServerInfo info) {
|
public QueueServer(String name, ServerInfo info) {
|
||||||
init(name, Arrays.asList(info));
|
init(name, Collections.singletonList(info));
|
||||||
}
|
}
|
||||||
public QueueServer(String name, List<ServerInfo> infos) {
|
public QueueServer(String name, List<ServerInfo> infos) {
|
||||||
init(name, infos);
|
init(name, infos);
|
||||||
@@ -56,35 +54,59 @@ public class QueueServer {
|
|||||||
if(Main.plugin.getConfig().getBoolean("pinger-debug")) {
|
if(Main.plugin.getConfig().getBoolean("pinger-debug")) {
|
||||||
Main.plugin.getLogger().info("[pinger] ["+info.getName()+"] sending ping");
|
Main.plugin.getLogger().info("[pinger] ["+info.getName()+"] sending ping");
|
||||||
}
|
}
|
||||||
info.ping(new Callback<ServerPing>() {
|
info.ping((result, error) -> {
|
||||||
@Override
|
if(Manager.getInstance() == null || Main.plugin.getConfig() == null) {
|
||||||
public void done(ServerPing result, Throwable error) {
|
ProxyServer.getInstance().getLogger()
|
||||||
if(Manager.getInstance() == null || Main.plugin.getConfig() == null) {
|
.warning("[ajQueue] Something used update() too early! The plugin hasnt fully loaded yet!");
|
||||||
ProxyServer.getInstance().getLogger()
|
return;
|
||||||
.warning("[ajQueue] Something used update() too early! The plugin hasnt fully loaded yet!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
boolean online = error == null;
|
|
||||||
BungeeConfig config = Main.plugin.getConfig();
|
|
||||||
|
|
||||||
if(config.getBoolean("pinger-debug")) {
|
|
||||||
if(error != null) {
|
|
||||||
ProxyServer.getInstance().getLogger().info("[ajQueue] [pinger] ["+name+"] Status: "+online+". Error: ");
|
|
||||||
error.printStackTrace();
|
|
||||||
} else {
|
|
||||||
ProxyServer.getInstance().getLogger().info("[ajQueue] [pinger] ["+name+"] Status: "+online+". motd: "
|
|
||||||
+result.getDescriptionComponent()+" players:"+result.getPlayers());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
pings.put(info, online ? result : null);
|
|
||||||
if(pings.size() == servers.size()) allDonePing();
|
|
||||||
}
|
}
|
||||||
|
boolean online = error == null;
|
||||||
|
BungeeConfig config = Main.plugin.getConfig();
|
||||||
|
|
||||||
|
if(config.getBoolean("pinger-debug")) {
|
||||||
|
if(error != null) {
|
||||||
|
ProxyServer.getInstance().getLogger().info("[ajQueue] [pinger] ["+name+"] Status: offline. Error: ");
|
||||||
|
error.printStackTrace();
|
||||||
|
} else {
|
||||||
|
ProxyServer.getInstance().getLogger().info("[ajQueue] [pinger] ["+name+"] Status: online. motd: "
|
||||||
|
+result.getDescriptionComponent()+" players:"+result.getPlayers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pings.put(info, online ? result : null);
|
||||||
|
if(pings.size() == servers.size()) allDonePing();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getStatusString(ProxiedPlayer p) {
|
||||||
|
BungeeMessages msgs = Main.plugin.msgs;
|
||||||
|
|
||||||
|
if(getOfflineTime() > Main.plugin.getConfig().getInt("offline-time")) {
|
||||||
|
return msgs.getString("status.offline.offline");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isOnline()) {
|
||||||
|
return msgs.getString("status.offline.restarting");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isPaused()) {
|
||||||
|
return msgs.getString("status.offline.paused");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isFull()) {
|
||||||
|
return msgs.getString("status.offline.full");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(p != null && !canAccess(p)) {
|
||||||
|
return msgs.getString("status.offline.restricted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return "Online";
|
||||||
|
}
|
||||||
|
|
||||||
public HashMap<ServerInfo, ServerPing> getLastPings() {
|
public HashMap<ServerInfo, ServerPing> getLastPings() {
|
||||||
return pings;
|
return pings;
|
||||||
}
|
}
|
||||||
@@ -108,7 +130,7 @@ public class QueueServer {
|
|||||||
lastUpdate = System.currentTimeMillis();
|
lastUpdate = System.currentTimeMillis();
|
||||||
offlineTime = 0;
|
offlineTime = 0;
|
||||||
} else {
|
} else {
|
||||||
int timesincelast = Math.round((System.currentTimeMillis() - lastUpdate)/1000);
|
int timesincelast = (int) Math.round((System.currentTimeMillis() - lastUpdate*1.0)/1000);
|
||||||
lastUpdate = System.currentTimeMillis();
|
lastUpdate = System.currentTimeMillis();
|
||||||
if(!online) {
|
if(!online) {
|
||||||
offlineTime += timesincelast;
|
offlineTime += timesincelast;
|
||||||
@@ -144,7 +166,7 @@ public class QueueServer {
|
|||||||
|
|
||||||
|
|
||||||
List<ProxiedPlayer> queue = new ArrayList<>();
|
List<ProxiedPlayer> queue = new ArrayList<>();
|
||||||
public List<ProxiedPlayer> getQueue() {
|
public synchronized List<ProxiedPlayer> getQueue() {
|
||||||
return queue;
|
return queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,13 +63,13 @@ public class LeaveCommand extends Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getQueueList(List<QueueServer> servers) {
|
private String getQueueList(List<QueueServer> servers) {
|
||||||
String queueList = "";
|
StringBuilder queueList = new StringBuilder();
|
||||||
for(QueueServer server : servers) {
|
for(QueueServer server : servers) {
|
||||||
queueList += msgs.get("commands.leave.queues-list-format").replaceAll("\\{NAME\\}", server.getName());
|
queueList.append(msgs.getString("commands.leave.queues-list-format").replaceAll("\\{NAME\\}", server.getName()));
|
||||||
}
|
}
|
||||||
if(queueList.length() > 2) {
|
if(queueList.length() > 2) {
|
||||||
queueList = queueList.substring(0, queueList.length()-2);
|
queueList = new StringBuilder(queueList.substring(0, queueList.length() - 2));
|
||||||
}
|
}
|
||||||
return queueList;
|
return queueList.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.chat.BaseComponent;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
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;
|
||||||
@@ -9,6 +10,9 @@ import us.ajg0702.queue.Manager;
|
|||||||
import us.ajg0702.queue.QueueServer;
|
import us.ajg0702.queue.QueueServer;
|
||||||
import us.ajg0702.utils.bungee.BungeeMessages;
|
import us.ajg0702.utils.bungee.BungeeMessages;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class ListCommand extends Command {
|
public class ListCommand extends Command {
|
||||||
Main pl;
|
Main pl;
|
||||||
BungeeMessages msgs;
|
BungeeMessages msgs;
|
||||||
@@ -31,7 +35,7 @@ public class ListCommand extends Command {
|
|||||||
spp = (ProxiedPlayer) sender;
|
spp = (ProxiedPlayer) sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
String m = msgs.get("commands.listqueues.header");
|
ArrayList<BaseComponent> m = new ArrayList<>(Arrays.asList(msgs.getBC("commands.listqueues.header")));
|
||||||
for(QueueServer s : Manager.getInstance().getServers()) {
|
for(QueueServer s : Manager.getInstance().getServers()) {
|
||||||
String color = "&a";
|
String color = "&a";
|
||||||
if(!s.isOnline()) {
|
if(!s.isOnline()) {
|
||||||
@@ -39,13 +43,17 @@ public class ListCommand extends Command {
|
|||||||
} else if(!s.isJoinable(spp)) {
|
} else if(!s.isJoinable(spp)) {
|
||||||
color = "&e";
|
color = "&e";
|
||||||
}
|
}
|
||||||
m += "\n"+msgs.get("commands.listqueues.format")
|
|
||||||
.replaceAll("\\{COLOR\\}", msgs.color(color))
|
m.addAll(Arrays.asList(TextComponent.fromLegacyText("\n")));
|
||||||
.replaceAll("\\{NAME\\}", s.getName())
|
m.addAll(Arrays.asList(msgs.getBC("commands.listqueues.format",
|
||||||
.replaceAll("\\{COUNT\\}", s.getQueue().size()+"");
|
"COLOR:" + msgs.color(color),
|
||||||
|
"NAME:" + s.getName(),
|
||||||
|
"COUNT:" + s.getQueue().size(),
|
||||||
|
"STATUS:" + s.getStatusString(spp)
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(TextComponent.fromLegacyText(m));
|
sender.sendMessage(m.toArray(new BaseComponent[m.size()-1]));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
package us.ajg0702.queue.commands;
|
package us.ajg0702.queue.commands;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.PatternReplacementResult;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
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 net.md_5.bungee.api.plugin.Command;
|
import net.md_5.bungee.api.plugin.Command;
|
||||||
@@ -13,6 +18,7 @@ import us.ajg0702.utils.bungee.BungeeMessages;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class ManageCommand extends Command implements TabExecutor {
|
public class ManageCommand extends Command implements TabExecutor {
|
||||||
|
|
||||||
@@ -53,24 +59,42 @@ public class ManageCommand extends Command implements TabExecutor {
|
|||||||
int total = 0;
|
int total = 0;
|
||||||
for(QueueServer server : Manager.getInstance().getServers()) {
|
for(QueueServer server : Manager.getInstance().getServers()) {
|
||||||
|
|
||||||
String msg = msgs.get("list.format").replaceAll("\\{SERVER\\}", server.getName());
|
Component msg = msgs.getComponent("list.format",
|
||||||
String playerlist = "";
|
"SERVER:"+server.getName()
|
||||||
|
);
|
||||||
|
Component playerList = Component.empty();
|
||||||
List<ProxiedPlayer> players = server.getQueue();
|
List<ProxiedPlayer> players = server.getQueue();
|
||||||
if(msg.contains("{LIST}")) {
|
boolean none = true;
|
||||||
for(ProxiedPlayer p : players) {
|
for(ProxiedPlayer p : players) {
|
||||||
playerlist += msgs.get("list.playerlist").replaceAll("\\{NAME\\}", p.getDisplayName());
|
playerList = playerList.append(msgs.getComponent("list.playerlist",
|
||||||
}
|
"NAME:" + p.getDisplayName()
|
||||||
if(playerlist.equalsIgnoreCase("")) {
|
));
|
||||||
playerlist = msgs.get("list.none")+", ";
|
none = false;
|
||||||
}
|
|
||||||
playerlist = playerlist.substring(0, playerlist.length()-2);
|
|
||||||
msg = msg.replaceAll("\\{LIST\\}", playerlist);
|
|
||||||
}
|
}
|
||||||
|
if(none) {
|
||||||
|
playerList = playerList.append(msgs.getComponent("list.none"));
|
||||||
|
playerList = playerList.append(Component.text(", "));
|
||||||
|
}
|
||||||
|
Component finalPlayerList = playerList;
|
||||||
|
msg = msg.replaceText(b -> b.match(Pattern.compile("\\{LIST}")).replacement(finalPlayerList));
|
||||||
|
char[] commaCountString = PlainTextComponentSerializer.plainText().serialize(msg).toCharArray();
|
||||||
|
int commas = 0;
|
||||||
|
for(Character fChar : commaCountString) {
|
||||||
|
if(fChar == ',') commas++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int finalCommas = commas;
|
||||||
|
msg = msg.replaceText(b -> b.match(",(?!.*,)").replacement("").condition((r, c, re) -> {
|
||||||
|
if(c == finalCommas) {
|
||||||
|
return PatternReplacementResult.REPLACE;
|
||||||
|
}
|
||||||
|
return PatternReplacementResult.CONTINUE;
|
||||||
|
}));
|
||||||
total += players.size();
|
total += players.size();
|
||||||
msg = msg.replaceAll("\\{COUNT\\}", players.size()+"");
|
msg = msg.replaceText(b -> b.match(Pattern.compile("\\{COUNT}")).replacement(players.size()+""));
|
||||||
sender.sendMessage(Main.formatMessage(msg));
|
sender.sendMessage(msgs.getBC(msg));
|
||||||
}
|
}
|
||||||
sender.sendMessage(Main.formatMessage(msgs.get("list.total").replaceAll("\\{TOTAL\\}", total+"")));
|
sender.sendMessage(msgs.getBC("list.total", "TOTAL:"+total));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(args[0].equalsIgnoreCase("p")) {
|
if(args[0].equalsIgnoreCase("p")) {
|
||||||
@@ -121,7 +145,7 @@ public class ManageCommand extends Command implements TabExecutor {
|
|||||||
srv.setPaused(!srv.isPaused());
|
srv.setPaused(!srv.isPaused());
|
||||||
sender.sendMessage(msgs.getBC("commands.pause.success",
|
sender.sendMessage(msgs.getBC("commands.pause.success",
|
||||||
"SERVER:"+srv.getName(),
|
"SERVER:"+srv.getName(),
|
||||||
"PAUSED:"+msgs.get("commands.pause.paused."+srv.isPaused())
|
"PAUSED:"+msgs.getString("commands.pause.paused."+srv.isPaused())
|
||||||
));
|
));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -152,7 +176,7 @@ public class ManageCommand extends Command implements TabExecutor {
|
|||||||
srv.setPaused(args[2].equalsIgnoreCase("on") || args[2].equalsIgnoreCase("true"));
|
srv.setPaused(args[2].equalsIgnoreCase("on") || args[2].equalsIgnoreCase("true"));
|
||||||
sender.sendMessage(msgs.getBC("commands.pause.success",
|
sender.sendMessage(msgs.getBC("commands.pause.success",
|
||||||
"SERVER:"+srv.getName(),
|
"SERVER:"+srv.getName(),
|
||||||
"PAUSED:"+msgs.get("commands.pause.paused."+srv.isPaused())
|
"PAUSED:"+msgs.getString("commands.pause.paused."+srv.isPaused())
|
||||||
));
|
));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -172,13 +196,12 @@ public class ManageCommand extends Command implements TabExecutor {
|
|||||||
|
|
||||||
ProxiedPlayer ply = pl.getProxy().getPlayer(args[1]);
|
ProxiedPlayer ply = pl.getProxy().getPlayer(args[1]);
|
||||||
Manager.getInstance().addToQueue(ply, args[2]);
|
Manager.getInstance().addToQueue(ply, args[2]);
|
||||||
sender.sendMessage(Main.formatMessage(
|
sender.sendMessage(msgs.getBC("send",
|
||||||
msgs.get("send")
|
"PLAYER:"+ply.getDisplayName(),
|
||||||
.replaceAll("\\{PLAYER\\}", ply.getDisplayName())
|
"SERVER:"+args[2])
|
||||||
.replaceAll("\\{SERVER\\}", args[2]))
|
);
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
} else if(pl.getProxy().getServers().keySet().contains(args[1])) {
|
} else if(pl.getProxy().getServers().containsKey(args[1])) {
|
||||||
|
|
||||||
ServerInfo from = pl.getProxy().getServerInfo(args[1]);
|
ServerInfo from = pl.getProxy().getServerInfo(args[1]);
|
||||||
if(from == null) {
|
if(from == null) {
|
||||||
|
|||||||
@@ -33,13 +33,8 @@ public class MoveCommand extends Command implements TabExecutor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Manager.getInstance().addToQueue(p, args[0]);
|
Manager.getInstance().addToQueue(p, args[0]);
|
||||||
} else if(args.length == 0) {
|
} else {
|
||||||
sender.sendMessage(msgs.getBC("commands.joinqueue.usage"));
|
sender.sendMessage(msgs.getBC("commands.joinqueue.usage"));
|
||||||
/*Server server = Manager.getInstance().findPlayerInQueue((ProxiedPlayer) sender);
|
|
||||||
if(server != null) {
|
|
||||||
server.getQueue().remove(p);
|
|
||||||
p.sendMessage(msgs.getBC("commands.leave-queue"));
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.PatternReplacementResult;
|
||||||
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class RegexTest {
|
||||||
|
@Test
|
||||||
|
public void regex() throws Exception {
|
||||||
|
Component msg = Component.text("&b{SERVER} &7({COUNT}): {LIST}");
|
||||||
|
Component playerList = Component.empty();
|
||||||
|
List<String> players = Arrays.asList("bot01", "bot02", "bot03", "bot04", "bot05", "bot06");
|
||||||
|
for(String p : players) {
|
||||||
|
playerList = playerList.append(Component.text("&9"+p+"&7, "));
|
||||||
|
}
|
||||||
|
Component finalPlayerList = playerList;
|
||||||
|
msg = msg.replaceText(b -> b.match(Pattern.compile("\\{LIST}")).replacement(finalPlayerList));
|
||||||
|
char[] commaCountString = PlainTextComponentSerializer.plainText().serialize(msg).toCharArray();
|
||||||
|
int commas = 0;
|
||||||
|
for(Character fChar : commaCountString) {
|
||||||
|
if(fChar == ',') commas++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int finalCommas = commas;
|
||||||
|
msg = msg.replaceText(b -> b.match(",(?!.*,)").replacement("").condition((r, c, re) -> {
|
||||||
|
if(c == finalCommas) {
|
||||||
|
return PatternReplacementResult.REPLACE;
|
||||||
|
}
|
||||||
|
return PatternReplacementResult.CONTINUE;
|
||||||
|
}));
|
||||||
|
msg = msg.replaceText(b -> b.match(Pattern.compile("\\{COUNT}")).replacement(players.size()+""));
|
||||||
|
|
||||||
|
|
||||||
|
String f = PlainTextComponentSerializer.plainText().serialize(msg);
|
||||||
|
System.out.println(f);
|
||||||
|
int c = 0;
|
||||||
|
for(Character fChar : f.toCharArray()) {
|
||||||
|
if(fChar == ',') c++;
|
||||||
|
}
|
||||||
|
if(c != 5) {
|
||||||
|
throw new Exception("Wrong comma count! Had "+c+" when expected 5");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user