From b6f4ddbb4c781fe4105bf6ab04aa88e186b5ede1 Mon Sep 17 00:00:00 2001 From: Telesphoreo Date: Thu, 24 Feb 2022 21:56:28 -0600 Subject: [PATCH] Add adminchat --- .../dev/plex/command/impl/AdminChatCMD.java | 33 +++++++++++++++ .../dev/plex/handlers/CommandHandler.java | 1 + .../dev/plex/listener/impl/ChatListener.java | 27 +++++++++++++ src/main/java/dev/plex/util/PlexUtils.java | 40 ++++++++++--------- src/main/resources/messages.yml | 3 +- 5 files changed, 85 insertions(+), 19 deletions(-) create mode 100644 src/main/java/dev/plex/command/impl/AdminChatCMD.java diff --git a/src/main/java/dev/plex/command/impl/AdminChatCMD.java b/src/main/java/dev/plex/command/impl/AdminChatCMD.java new file mode 100644 index 0000000..939bb83 --- /dev/null +++ b/src/main/java/dev/plex/command/impl/AdminChatCMD.java @@ -0,0 +1,33 @@ +package dev.plex.command.impl; + +import dev.plex.command.PlexCommand; +import dev.plex.command.annotation.CommandParameters; +import dev.plex.command.annotation.CommandPermissions; +import dev.plex.command.source.RequiredCommandSource; +import dev.plex.listener.impl.ChatListener; +import dev.plex.rank.enums.Rank; +import net.kyori.adventure.text.Component; +import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +@CommandPermissions(level = Rank.ADMIN, permission = "plex.adminchat", source = RequiredCommandSource.ANY) +@CommandParameters(name = "adminchat", description = "Talk privately with other admins", usage = "/ ", aliases = "o,ac,sc,staffchat") +public class AdminChatCMD extends PlexCommand +{ + @Override + protected Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, String[] args) + { + if (args.length == 0) + { + return usage(); + } + + ChatListener.adminChat(sender, StringUtils.join(args, " ")); + return null; + } +} diff --git a/src/main/java/dev/plex/handlers/CommandHandler.java b/src/main/java/dev/plex/handlers/CommandHandler.java index 56dd9cb..404aa9f 100644 --- a/src/main/java/dev/plex/handlers/CommandHandler.java +++ b/src/main/java/dev/plex/handlers/CommandHandler.java @@ -27,6 +27,7 @@ public class CommandHandler extends PlexBase commands.add(new DebugCMD()); } + commands.add(new AdminChatCMD()); commands.add(new AdminworldCMD()); commands.add(new AdventureCMD()); commands.add(new BanCMD()); diff --git a/src/main/java/dev/plex/listener/impl/ChatListener.java b/src/main/java/dev/plex/listener/impl/ChatListener.java index 38a5d48..b4de95e 100644 --- a/src/main/java/dev/plex/listener/impl/ChatListener.java +++ b/src/main/java/dev/plex/listener/impl/ChatListener.java @@ -3,12 +3,16 @@ package dev.plex.listener.impl; import dev.plex.cache.PlayerCache; import dev.plex.listener.PlexListener; import dev.plex.player.PlexPlayer; +import dev.plex.rank.enums.Rank; +import dev.plex.util.PlexUtils; import io.papermc.paper.chat.ChatRenderer; import io.papermc.paper.event.player.AsyncChatEvent; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.jetbrains.annotations.NotNull; @@ -31,6 +35,29 @@ public class ChatListener extends PlexListener event.renderer(renderer); } + public static void adminChat(CommandSender sender, String message) + { + for (Player player : Bukkit.getOnlinePlayers()) + { + if (plugin.getSystem().equalsIgnoreCase("ranks")) + { + PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(player.getUniqueId()); + if (plexPlayer.getRankFromString().isAtLeast(Rank.ADMIN)) + { + player.sendMessage(PlexUtils.tl("adminChatFormat", sender.getName(), message)); + } + } + else if (plugin.getSystem().equalsIgnoreCase("permissions")) + { + if (player.hasPermission("plex.adminchat")) + { + player.sendMessage(PlexUtils.tl("adminChatFormat", sender.getName(), message)); + } + } + } + Bukkit.getLogger().info(PlexUtils.tl("adminChatFormat", sender.getName(), message)); + } + public static class PlexChatRenderer implements ChatRenderer { public boolean hasPrefix; diff --git a/src/main/java/dev/plex/util/PlexUtils.java b/src/main/java/dev/plex/util/PlexUtils.java index 76ba427..88f451a 100644 --- a/src/main/java/dev/plex/util/PlexUtils.java +++ b/src/main/java/dev/plex/util/PlexUtils.java @@ -195,33 +195,37 @@ public class PlexUtils extends PlexBase Bukkit.broadcast(component); } - public static Object simpleGET(String url) throws IOException, ParseException + public static Object simpleGET(String url) { - URL u = new URL(url); - HttpURLConnection connection = (HttpURLConnection)u.openConnection(); - connection.setRequestMethod("GET"); - BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String line; - StringBuilder content = new StringBuilder(); - while ((line = in.readLine()) != null) + try { - content.append(line); + URL u = new URL(url); + HttpURLConnection connection = (HttpURLConnection)u.openConnection(); + connection.setRequestMethod("GET"); + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + StringBuilder content = new StringBuilder(); + while ((line = in.readLine()) != null) + { + content.append(line); + } + in.close(); + connection.disconnect(); + return new JSONParser().parse(content.toString()); + } + catch (IOException | ParseException ex) + { + return null; } - in.close(); - connection.disconnect(); - return new JSONParser().parse(content.toString()); } public static UUID getFromName(String name) { JSONObject profile; - try + profile = (JSONObject)simpleGET("https://api.ashcon.app/mojang/v2/user/" + name); + if (profile == null) { - profile = (JSONObject)PlexUtils.simpleGET("https://api.ashcon.app/mojang/v2/user/" + name); - } - catch (IOException | ParseException e) - { - e.printStackTrace(); + PlexLog.error("Profile from Ashcon API returned null!"); return null; } String uuidString = (String)profile.get("uuid"); diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index ce4533e..cdc4dfb 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -103,4 +103,5 @@ playerNotBanned: "That player is not banned!" teleportedToWorldSpawn: "Teleporting to the local spawn" toggleCommandSpy: "CommandSpy has been " enabled: "enabled" -disabled: "disabled" \ No newline at end of file +disabled: "disabled" +adminChatFormat: '&8[&9AdminChat&8] &4 &7ยป &6' \ No newline at end of file