From a5771d03c303a6f8b10fdbd849a64072dcbc13cf Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Fri, 8 Jul 2022 10:54:20 -0500 Subject: [PATCH] Add %ajqueue_status_% placeholder --- api/build.gradle.kts | 2 +- .../ajg0702/queue/api/queues/QueueServer.java | 14 ++++++++ common/build.gradle.kts | 2 +- .../queue/common/EventHandlerImpl.java | 11 ++++++ .../us/ajg0702/queue/common/QueueMain.java | 10 +++++- .../queue/common/queues/QueueServerImpl.java | 34 +++++++++++++++++++ free/build.gradle.kts | 2 +- platforms/bungeecord/build.gradle.kts | 2 +- platforms/velocity/build.gradle.kts | 2 +- premium/build.gradle.kts | 2 +- spigot/build.gradle.kts | 2 +- .../us/ajg0702/queue/spigot/Placeholders.java | 18 ++++++---- .../us/ajg0702/queue/spigot/SpigotMain.java | 18 ++++++++-- 13 files changed, 102 insertions(+), 17 deletions(-) diff --git a/api/build.gradle.kts b/api/build.gradle.kts index a6ce712..c4cf23b 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { implementation("net.kyori:adventure-text-serializer-plain:4.9.3") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.22") + compileOnly("us.ajg0702:ajUtils:1.2.10") } publishing { diff --git a/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java b/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java index dba7633..17ab09e 100644 --- a/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java +++ b/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java @@ -36,6 +36,20 @@ public interface QueueServer { */ String getStatusString(); + /** + * Get the status of the server as a string (not from the messages file) + * @param p The player that you are checking for. Used for checking restricted servers + * @return The status of the server as a string + */ + String getStatus(AdaptedPlayer p); + + /** + * Get the status of the server as a string (not from the messages file) + * Does not check if the player has access using restricted mode. May show online if it is restricted + * @return The status of the server as a string + */ + String getStatus(); + /** * Sends a server ping and uses the response to update online status, player count status, and whitelist status */ diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 4cfdce4..0d606cf 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { compileOnly("net.kyori:adventure-text-serializer-plain:4.9.3") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.22") + compileOnly("us.ajg0702:ajUtils:1.2.10") compileOnly("org.slf4j:slf4j-log4j12:1.7.29") diff --git a/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java b/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java index 8797c86..20ac404 100644 --- a/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java @@ -116,6 +116,17 @@ public class EventHandlerImpl implements EventHandler { if(server == null) return; main.getPlatformMethods().sendPluginMessage(recievingPlayer, "queuedfor", srv, server.getQueue().size()+""); } + if(subchannel.equals("status")) { + String srv = in.readUTF(); + QueueServer server = main.getQueueManager().findServer(srv); + if(server == null) return; + main.getPlatformMethods().sendPluginMessage( + recievingPlayer, + "status", + srv, + main.getMessages().getRawString("placeholders.status."+server.getStatus(recievingPlayer)) + ); + } if(subchannel.equals("leavequeue")) { String[] args = new String[1]; try { diff --git a/common/src/main/java/us/ajg0702/queue/common/QueueMain.java b/common/src/main/java/us/ajg0702/queue/common/QueueMain.java index 1fdde20..8396b27 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueMain.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueMain.java @@ -180,7 +180,7 @@ public class QueueMain extends AjQueueAPI { } private void constructMessages() { - LinkedHashMap d = new LinkedHashMap<>(); + LinkedHashMap d = new LinkedHashMap<>(); d.put("status.offline.base", "&c{SERVER} is {STATUS}. &7You are in position &f{POS}&7 of &f{LEN}&7."); @@ -237,6 +237,14 @@ public class QueueMain extends AjQueueAPI { d.put("placeholders.position.none", "None"); d.put("placeholders.estimated_time.none", "None"); + d.put("placeholders.status.online", "&aOnline"); + d.put("placeholders.status.offline", "&cOffline"); + d.put("placeholders.status.restarting", "&cRestarting"); + d.put("placeholders.status.full", "&eFull"); + d.put("placeholders.status.restricted", "&eRestricted"); + d.put("placeholders.status.paused", "&ePaused"); + d.put("placeholders.status.whitelisted", "&eWhitelisted"); + d.put("title.title", ""); d.put("title.subtitle", "You are #{POS} in the queue!"); diff --git a/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java b/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java index 0362452..bfa72b5 100644 --- a/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java @@ -157,6 +157,40 @@ public class QueueServerImpl implements QueueServer { return getStatusString(null); } + @Override + public String getStatus(AdaptedPlayer p) { + if(getOfflineTime() > main.getConfig().getInt("offline-time")) { + return "offline"; + } + + if(!isOnline()) { + return "restarting"; + } + + if(isPaused()) { + return "paused"; + } + + if(p != null && isWhitelisted() && !getWhitelistedPlayers().contains(p.getUniqueId())) { + return "whitelisted"; + } + + if(isFull() && !canJoinFull(p)) { + return "full"; + } + + if(p != null && !canAccess(p)) { + return "restricted"; + } + + return "online"; + } + + @Override + public String getStatus() { + return null; + } + @Override public void updatePing() { boolean pingerDebug = main.getConfig().getBoolean("pinger-debug"); diff --git a/free/build.gradle.kts b/free/build.gradle.kts index 2cb06f7..b856e4a 100644 --- a/free/build.gradle.kts +++ b/free/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { compileOnly("com.google.guava:guava:30.1.1-jre") compileOnly("org.spongepowered:configurate-yaml:4.0.0") - implementation("us.ajg0702:ajUtils:1.1.22") + implementation("us.ajg0702:ajUtils:1.2.10") implementation(project(":platforms:velocity")) implementation(project(":platforms:bungeecord")) diff --git a/platforms/bungeecord/build.gradle.kts b/platforms/bungeecord/build.gradle.kts index 3827d38..e334486 100644 --- a/platforms/bungeecord/build.gradle.kts +++ b/platforms/bungeecord/build.gradle.kts @@ -16,7 +16,7 @@ repositories { dependencies { compileOnly("net.kyori:adventure-api:4.9.3") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.22") + compileOnly("us.ajg0702:ajUtils:1.2.10") compileOnly("net.md-5:bungeecord-api:1.16-R0.4") diff --git a/platforms/velocity/build.gradle.kts b/platforms/velocity/build.gradle.kts index 9909cca..bb9615d 100644 --- a/platforms/velocity/build.gradle.kts +++ b/platforms/velocity/build.gradle.kts @@ -16,7 +16,7 @@ repositories { dependencies { compileOnly("net.kyori:adventure-api:4.9.3") compileOnly("com.google.guava:guava:30.1.1-jre") - compileOnly("us.ajg0702:ajUtils:1.1.22") + compileOnly("us.ajg0702:ajUtils:1.2.10") compileOnly("com.velocitypowered:velocity-api:3.0.0") annotationProcessor("com.velocitypowered:velocity-api:3.0.0") diff --git a/premium/build.gradle.kts b/premium/build.gradle.kts index 2019d31..a3ea1d1 100644 --- a/premium/build.gradle.kts +++ b/premium/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { compileOnly("me.TechsCode:FakeUltraPerms:1.0.2") - compileOnly("us.ajg0702:ajUtils:1.1.22") + compileOnly("us.ajg0702:ajUtils:1.2.10") compileOnly("net.kyori:adventure-api:4.9.3") diff --git a/spigot/build.gradle.kts b/spigot/build.gradle.kts index e5916bd..95fecf4 100644 --- a/spigot/build.gradle.kts +++ b/spigot/build.gradle.kts @@ -24,7 +24,7 @@ dependencies { compileOnly("org.spongepowered:configurate-yaml:4.0.0") - compileOnly("us.ajg0702:ajUtils:1.1.22") + compileOnly("us.ajg0702:ajUtils:1.2.10") compileOnly(group = "org.spigotmc", name = "spigot", version = "1.16.5-R0.1-SNAPSHOT") compileOnly("me.clip:placeholderapi:2.10.4") diff --git a/spigot/src/main/java/us/ajg0702/queue/spigot/Placeholders.java b/spigot/src/main/java/us/ajg0702/queue/spigot/Placeholders.java index 1a5d757..fb5c169 100644 --- a/spigot/src/main/java/us/ajg0702/queue/spigot/Placeholders.java +++ b/spigot/src/main/java/us/ajg0702/queue/spigot/Placeholders.java @@ -175,6 +175,9 @@ public class Placeholders extends PlaceholderExpansion { if(identifier.matches("queuedfor_*.*")) { return "0"; } + if(identifier.matches("status_*.*")) { + return "Loading"; + } } @@ -185,22 +188,25 @@ public class Placeholders extends PlaceholderExpansion { private String parsePlaceholder(Player player, String identifier) { if(identifier.equalsIgnoreCase("queued")) { plugin.sendMessage(player, "queuename", ""); - } + } else if(identifier.equalsIgnoreCase("position")) { plugin.sendMessage(player, "position", ""); - } + } else if(identifier.equalsIgnoreCase("of")) { plugin.sendMessage(player, "positionof", ""); - } + } else if(identifier.equalsIgnoreCase("inqueue")) { plugin.sendMessage(player, "inqueue", ""); - } + } else if(identifier.equalsIgnoreCase("estimated_time")) { plugin.sendMessage(player, "estimated_time", ""); - } + } else if(identifier.matches("queuedfor_*.*")) { plugin.sendMessage(player, "queuedfor", identifier.split("_")[1]); - } + } else + if(identifier.matches("status_*.*")) { + plugin.sendMessage(player, "status", identifier.split("_")[1]); + } return null; diff --git a/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java b/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java index 0a8783b..66baa35 100644 --- a/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java +++ b/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java @@ -178,6 +178,20 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List phs.put("estimated_time", time); placeholders.responseCache.put(p, phs); } + if(subchannel.equals("status")) { + String playername = in.readUTF(); + String server = in.readUTF(); + + Player p = Bukkit.getPlayer(playername); + if(p == null) return; + if(!p.isOnline()) return; + + String status = in.readUTF(); + HashMap phs = placeholders.responseCache.get(p); + if(phs == null) phs = new HashMap<>(); + phs.put("status_"+server, status+""); + placeholders.responseCache.put(p, phs); + } } @@ -207,9 +221,7 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List @EventHandler public void onJoin(PlayerJoinEvent e) { if(hasProxy) return; - Bukkit.getScheduler().runTask(this, () -> { - sendMessage(e.getPlayer(), "ack", ""); - }); + Bukkit.getScheduler().runTask(this, () -> sendMessage(e.getPlayer(), "ack", "")); } @EventHandler(priority = EventPriority.HIGH)