diff --git a/api/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java index 55a254b..b7d7305 100755 --- a/api/src/main/java/com/alttd/chat/config/Config.java +++ b/api/src/main/java/com/alttd/chat/config/Config.java @@ -1,10 +1,11 @@ package com.alttd.chat.config; import com.alttd.chat.objects.channels.CustomChannel; +import com.alttd.chat.util.ALogger; import com.alttd.chat.util.Utility; import com.google.common.collect.Lists; import io.leangen.geantyref.TypeToken; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.ConfigurationOptions; import org.spongepowered.configurate.serialize.SerializationException; @@ -19,6 +20,7 @@ import java.lang.reflect.Modifier; import java.util.*; import java.util.regex.Pattern; +@SuppressWarnings("unused") public final class Config { private static final Pattern PATH_PATTERN = Pattern.compile("\\."); private static final String HEADER = ""; @@ -31,6 +33,7 @@ public final class Config { static boolean verbose; public static File CONFIGPATH; + public static void init() { CONFIGPATH = new File(File.separator + "mnt" + File.separator + "configs" + File.separator + "ChatPlugin"); CONFIG_FILE = new File(CONFIGPATH, "config.yml"); @@ -39,24 +42,24 @@ public final class Config { .nodeStyle(NodeStyle.BLOCK) .build(); if (!CONFIG_FILE.getParentFile().exists()) { - if(!CONFIG_FILE.getParentFile().mkdirs()) { + if (!CONFIG_FILE.getParentFile().mkdirs()) { return; } } if (!CONFIG_FILE.exists()) { try { - if(!CONFIG_FILE.createNewFile()) { + if (!CONFIG_FILE.createNewFile()) { return; } } catch (IOException error) { - error.printStackTrace(); + ALogger.error(error.getMessage(), error); } } try { config = configLoader.load(ConfigurationOptions.defaults().header(HEADER).shouldCopyDefaults(false)); } catch (IOException e) { - e.printStackTrace(); + ALogger.error(e.getMessage(), e); } verbose = getBoolean("verbose", true); @@ -66,7 +69,7 @@ public final class Config { try { configLoader.save(config); } catch (IOException e) { - e.printStackTrace(); + ALogger.error(e.getMessage(), e); } } @@ -78,7 +81,7 @@ public final class Config { method.setAccessible(true); method.invoke(instance); } catch (InvocationTargetException | IllegalAccessException ex) { - ex.printStackTrace(); + ALogger.error(ex.getMessage(), ex); } } } @@ -86,7 +89,7 @@ public final class Config { try { configLoader.save(config); } catch (IOException ex) { - ex.printStackTrace(); + ALogger.error(ex.getMessage(), ex); } } @@ -94,7 +97,7 @@ public final class Config { try { configLoader.save(config); } catch (IOException ex) { - ex.printStackTrace(); + ALogger.error(ex.getMessage(), ex); } } @@ -103,21 +106,22 @@ public final class Config { } private static void set(String path, Object def) { - if(config.node(splitPath(path)).virtual()) { + if (config.node(splitPath(path)).virtual()) { try { config.node(splitPath(path)).set(def); } catch (SerializationException e) { - e.printStackTrace(); + ALogger.error(e.getMessage(), e); } } } private static void setString(String path, String def) { try { - if(config.node(splitPath(path)).virtual()) + if (config.node(splitPath(path)).virtual()) { config.node(splitPath(path)).set(io.leangen.geantyref.TypeToken.get(String.class), def); - } catch(SerializationException ex) { - ex.printStackTrace(); + } + } catch (SerializationException ex) { + ALogger.error(ex.getMessage(), ex); } } @@ -150,21 +154,23 @@ public final class Config { try { set(path, def); return config.node(splitPath(path)).getList(TypeToken.get(String.class)); - } catch(SerializationException ex) { - ex.printStackTrace(); + } catch (SerializationException ex) { + ALogger.error(ex.getMessage(), ex); } return new ArrayList<>(); } private static ConfigurationNode getNode(String path) { - if(config.node(splitPath(path)).virtual()) { + if (config.node(splitPath(path)).virtual()) { //new RegexConfig("Dummy"); } config.childrenMap(); return config.node(splitPath(path)); } - /** ONLY EDIT ANYTHING BELOW THIS LINE **/ + /** + * ONLY EDIT ANYTHING BELOW THIS LINE + **/ public static List PREFIXGROUPS = new ArrayList<>(); public static List CONFLICTINGPREFIXGROUPS = new ArrayList<>(); public static List STAFFGROUPS = new ArrayList<>(); @@ -173,13 +179,14 @@ public final class Config { public static UUID CONSOLEUUID = UUID.randomUUID(); public static int EMOTELIMIT = 3; public static String MENTIONPLAYERTAG = "@"; + private static void settings() { PREFIXGROUPS = getList("settings.prefix-groups", - Lists.newArrayList("discord", "socialmedia", "eventteam", "eventleader", "youtube", "twitch", "developer")); + Lists.newArrayList("discord", "socialmedia", "eventteam", "eventleader", "youtube", "twitch", "developer")); CONFLICTINGPREFIXGROUPS = getList("settings.prefix-conflicts-groups", - Lists.newArrayList("eventteam", "eventleader")); + Lists.newArrayList("eventteam", "eventleader")); STAFFGROUPS = getList("settings.staff-groups", - Lists.newArrayList("trainee", "moderator", "headmod", "admin", "manager", "owner")); + Lists.newArrayList("trainee", "moderator", "headmod", "admin", "manager", "owner")); CONSOLENAME = getString("settings.console-name", CONSOLENAME); CONSOLEUUID = UUID.fromString(getString("settings.console-uuid", CONSOLEUUID.toString())); MINIMIUMSTAFFRANK = getString("settings.minimum-staff-rank", MINIMIUMSTAFFRANK); @@ -193,6 +200,7 @@ public final class Config { public static String MESSAGERECIEVER = " >( on -> Me) "; public static String MESSAGESPY = "( -> ) "; public static String RECEIVER_DOES_NOT_EXIST = " is not a valid player."; + private static void messageCommand() { MESSAGECOMMANDALIASES.clear(); REPLYCOMMANDALIASES.clear(); @@ -210,6 +218,7 @@ public final class Config { public static String GCNOTENABLED = "You don't have global chat enabled."; public static String GCONCOOLDOWN = "You have to wait seconds before using this feature again."; public static int GCCOOLDOWN = 30; + private static void globalChat() { GCFORMAT = getString("commands.globalchat.format", GCFORMAT); GCPERMISSION = getString("commands.globalchat.view-chat-permission", GCPERMISSION); @@ -221,6 +230,7 @@ public final class Config { public static String CHATFORMAT = " > >: "; public static String URLFORMAT = ">"; + private static void Chat() { CHATFORMAT = getString("chat.format", CHATFORMAT); URLFORMAT = getString("chat.urlformat", URLFORMAT); @@ -228,17 +238,20 @@ public final class Config { public static List GACECOMMANDALIASES = new ArrayList<>(); public static String GACFORMAT = "( on -> Team) "; + private static void globalAdminChat() { GACECOMMANDALIASES = getList("commands.globaladminchat.aliases", Lists.newArrayList("acg")); GACFORMAT = getString("commands.globaladminchat.format", GACFORMAT); } public static String MESSAGECHANNEL = "altitude:chatplugin"; + private static void messageChannels() { MESSAGECHANNEL = getString("settings.message-channel", MESSAGECHANNEL); } public static ConfigurationNode REGEXNODE = null; + private static void RegexNOde() { REGEXNODE = getNode("regex-settings"); } @@ -247,6 +260,7 @@ public final class Config { public static String SERVERSWTICHMESSAGETO = "* leaves to ..."; public static String SERVERJOINMESSAGE = "* appears from thin air..."; public static String SERVERLEAVEMESSAGE = "* vanishes in the mist..."; + private static void JoinLeaveMessages() { SERVERSWTICHMESSAGEFROM = getString("messages.switch-server-from", SERVERSWTICHMESSAGEFROM); SERVERSWTICHMESSAGETO = getString("messages.switch-server-to", SERVERSWTICHMESSAGETO); @@ -260,7 +274,7 @@ public final class Config { public static String NO_PERMISSION = "You don't have permission to use this command."; public static String NO_CONSOLE = "This command can not be used by console"; public static String CREATED_PARTY = "You created a chat party called: " + - "'' with the password: ''"; + "'' with the password: ''"; public static String NOT_IN_A_PARTY = "You're not in a chat party."; public static String NOT_YOUR_PARTY = "You don't own this chat party."; public static String NOT_A_PARTY = "This chat party does not exist."; @@ -283,23 +297,24 @@ public final class Config { public static String ALREADY_IN_THIS_PARTY = "You're already in !"; public static String SENT_PARTY_INV = "You send a chat party invite to !"; public static String JOIN_PARTY_CLICK_MESSAGE = " '>" + - "You received an invite to join , click this message to accept."; + "You received an invite to join , click this message to accept."; public static String PARTY_MEMBER_LOGGED_ON = "[ChatParty] joined Altitude..."; public static String PARTY_MEMBER_LOGGED_OFF = "[ChatParty] left Altitude..."; public static String RENAMED_PARTY = "[ChatParty] changed the party name from to !"; public static String CHANGED_PASSWORD = "Password was set to "; public static String DISBAND_PARTY_CONFIRM = "Are you sure you want to disband your party? " + - "Type /party disband confirm to confirm."; + "Type /party disband confirm to confirm."; public static String DISBANDED_PARTY = "[ChatParty] has disbanded , everyone has been removed."; public static String PARTY_INFO = """ - Chat party info: - Name: - Password: - Owner: - Members: """; - public static Component ONLINE_PREFIX = null; - public static Component OFFLINE_PREFIX = null; + Chat party info: + Name: + Password: + Owner: + Members: """; + public static ComponentLike ONLINE_PREFIX = null; + public static ComponentLike OFFLINE_PREFIX = null; public static String PARTY_TOGGLED = "Party chat toggled ."; + private static void party() { PARTY_FORMAT = getString("party.format", PARTY_FORMAT); PARTY_SPY = getString("party.spy", PARTY_SPY); @@ -349,6 +364,7 @@ public final class Config { public static String PARTY_HELP_REMOVE = "Remove a member from your party: /party remove "; public static String PARTY_HELP_DISBAND = "Remove everyone from your party and disband it: /party disband"; public static String PARTY_HELP_CHAT = "Talk in party chat: /p "; + private static void partyHelp() { PARTY_HELP_WRAPPER = getString("party.help.wrapper", PARTY_HELP_WRAPPER); PARTY_HELP_HELP = getString("party.help.help", PARTY_HELP_HELP); @@ -366,10 +382,11 @@ public final class Config { } public static String CUSTOM_CHANNEL_TOGGLED = "Toggled ."; - public static Component TOGGLED_ON = null; - public static Component TOGGLED_OFF = null; + public static ComponentLike TOGGLED_ON = null; + public static ComponentLike TOGGLED_OFF = null; public static double LOCAL_DISTANCE; public static String CHANNEL_SPY = "SPY: () "; + private static void chatChannels() { ConfigurationNode node = getNode("chat-channels"); if (node.empty()) { @@ -383,10 +400,10 @@ public final class Config { String channelName = Objects.requireNonNull(configurationNode.key()).toString(); String key = "chat-channels." + channelName + "."; new CustomChannel(channelName, - getString(key + "format", ""), - getList(key + "servers", Collections.EMPTY_LIST), - getBoolean(key + "proxy", false), - getBoolean(key + "local", false) + getString(key + "format", ""), + getList(key + "servers", Collections.EMPTY_LIST), + getBoolean(key + "proxy", false), + getBoolean(key + "local", false) ); } @@ -399,6 +416,7 @@ public final class Config { public static String SERVERMUTEPERMISSION = "chat.command.mute-server"; public static String SPYPERMISSION = "chat.socialspy"; + private static void permissions() { SERVERMUTEPERMISSION = getString("permissions.server-mute", SERVERMUTEPERMISSION); SPYPERMISSION = getString("permissions.spy-permission", SPYPERMISSION); @@ -409,6 +427,7 @@ public final class Config { public static String DATABASE = "database"; public static String USERNAME = "root"; public static String PASSWORD = "root"; + private static void database() { IP = getString("database.ip", IP); PORT = getString("database.port", PORT); @@ -418,6 +437,7 @@ public final class Config { } public static String NOTIFICATIONFORMAT = "[] "; + private static void notificationSettings() { NOTIFICATIONFORMAT = getString("settings.blockedmessage-notification", NOTIFICATIONFORMAT); } @@ -431,6 +451,7 @@ public final class Config { public static String mailSent = "Successfully send mail to : <#2e8b57>"; public static List mailCommandAlias = new ArrayList<>(); public static int mailDisplayDelay = 5; + private static void mailSettings() { mailHeader = getString("settings.mail.header", mailHeader); mailBody = getString("settings.mail.message", mailBody); @@ -445,6 +466,7 @@ public final class Config { public static HashMap serverChannelId = new HashMap<>(); public static String REPORT_SENT = "Your report was sent, staff will contact you asap to help resolve your issue!"; public static String REPORT_TOO_SHORT = "Please ensure your report is descriptive. We require at least 3 words per report"; + private static void loadChannelIds() { serverChannelId.clear(); serverChannelId.put("general", getLong("discord-channel-id.general", (long) -1)); @@ -452,8 +474,9 @@ public final class Config { Map objectMap = node.childrenMap(); for (Object o : objectMap.keySet()) { String key = (String) o; - if (key.equalsIgnoreCase("general")) + if (key.equalsIgnoreCase("general")) { continue; + } ConfigurationNode configurationNode = objectMap.get(o); long channelId = configurationNode.getLong(); serverChannelId.put(key.toLowerCase(), channelId); @@ -478,6 +501,7 @@ public final class Config { public static String HELP_REPORT = "/report "; public static String FIRST_JOIN = "* Welcome to Altitude! They've joined for the first time."; + private static void loadMessages() { HELP_REPORT = getString("settings.mail.mail-sent", HELP_REPORT); FIRST_JOIN = getString("settings.first-join.message", FIRST_JOIN); @@ -486,6 +510,7 @@ public final class Config { public static String EMOTELIST_HEADER = "Available Chat Emotes"; public static String EMOTELIST_ITEM = "\"> : "; public static String EMOTELIST_FOOTER = "----<< Prev / Next >>----"; + private static void emoteListCommand() { EMOTELIST_HEADER = getString("commands.emotelist.header", EMOTELIST_HEADER); EMOTELIST_ITEM = getString("commands.emotelist.item", EMOTELIST_ITEM); @@ -521,6 +546,7 @@ public final class Config { public static List NICK_BLOCKED_COLOR_CODESLIST = new ArrayList<>(); public static List NICK_ALLOWED_COLOR_CODESLIST = new ArrayList<>(); public static String NICK_CURRENT = "Current nickname: (\">)"; + private static void nicknameSettings() { NICK_CHANGED = getString("nicknames.messages.nick-changed", NICK_CHANGED); NICK_NOT_CHANGED = getString("nicknames.messages.nick-not-changed", NICK_NOT_CHANGED); diff --git a/api/src/main/java/com/alttd/chat/objects/ChatUser.java b/api/src/main/java/com/alttd/chat/objects/ChatUser.java index 56185c0..3d4ee4d 100755 --- a/api/src/main/java/com/alttd/chat/objects/ChatUser.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java @@ -3,7 +3,7 @@ package com.alttd.chat.objects; import com.alttd.chat.database.Queries; import com.alttd.chat.objects.channels.Channel; import com.alttd.chat.util.Utility; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import java.util.ArrayList; import java.util.List; @@ -13,20 +13,20 @@ import java.util.stream.Collectors; public class ChatUser { private final UUID uuid; // player uuid private int partyId; // the party they are in - private Channel toggledChannel; + private final Channel toggledChannel; private String name; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview - private Component displayName; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview -// private Component prefix; // doesn't need saving, we get this from luckperms -// private Component staffPrefix; // doesn't need saving, we get this from luckperms -// private Component prefixAll; // doesn't need saving, we get this from luckperms + private ComponentLike displayName; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview + // private Component prefix; // doesn't need saving, we get this from luckperms + // private Component staffPrefix; // doesn't need saving, we get this from luckperms + // private Component prefixAll; // doesn't need saving, we get this from luckperms //private boolean toggleGc; // should be saved, this toggles if the player can see and use global chat private String replyTarget; // reply target for use in /msg i don't mind setting this to null on login, feedback? private String replyContinueTarget; // reply target for use in /c private long gcCooldown; // the time when they last used gc, is used for the cooldown, i wouldn't save this, but setting this to the login time means they can't use gc for 30 seconds after logging in private boolean spy; - private List mails; // mails aren't finalized yet, so for now a table sender, reciever, sendtime, readtime(if emtpy mail isn't read yet?, could also do a byte to control this), the actual message - private List ignoredPlayers; // a list of UUID, a new table non unique, where one is is the player select * from ignores where ignoredby = thisplayer? where the result is the uuid of the player ignored by this player? - private List ignoredBy; // a list of UUID, same table as above but select * from ignores where ignored = thisplayer? result should be the other user that ignored this player? + private final List mails; // mails aren't finalized yet, so for now a table sender, reciever, sendtime, readtime(if emtpy mail isn't read yet?, could also do a byte to control this), the actual message + private final List ignoredPlayers; // a list of UUID, a new table non unique, where one is is the player select * from ignores where ignoredby = thisplayer? where the result is the uuid of the player ignored by this player? + private final List ignoredBy; // a list of UUID, same table as above but select * from ignores where ignored = thisplayer? result should be the other user that ignored this player? private boolean isMuted; public ChatUser(UUID uuid, int partyId, Channel toggledChannel) { @@ -40,10 +40,10 @@ public class ChatUser { } setDisplayName(name); -// prefix = Utility.getPrefix(uuid, true); // TODO we need to update this, so cache and update when needed or always request it? -// staffPrefix = Utility.getStaffPrefix(uuid); -// -// prefixAll = Utility.getPrefix(uuid, false); + // prefix = Utility.getPrefix(uuid, true); // TODO we need to update this, so cache and update when needed or always request it? + // staffPrefix = Utility.getStaffPrefix(uuid); + // + // prefixAll = Utility.getPrefix(uuid, false); replyTarget = ""; replyContinueTarget = ""; @@ -71,12 +71,7 @@ public class ChatUser { return toggledChannel; } - public void setToggledChannel(Channel channel) { - toggledChannel = channel; - Queries.setToggledChannel(toggledChannel, uuid); //TODO: Async pls - no CompleteableFuture<>! - } - - public Component getDisplayName() { + public ComponentLike getDisplayName() { return displayName; } @@ -84,17 +79,17 @@ public class ChatUser { this.displayName = Utility.applyColor(displayName); } - public Component getPrefix() { + public ComponentLike getPrefix() { //return prefix; return Utility.getPrefix(uuid, true); // No longer cache this data } - public Component getStaffPrefix() { + public ComponentLike getStaffPrefix() { //return staffPrefix; return Utility.getStaffPrefix(uuid); } - public Component getPrefixAll() { + public ComponentLike getPrefixAll() { //return prefixAll; return Utility.getPrefix(uuid, false); } @@ -145,10 +140,6 @@ public class ChatUser { return ignoredBy; } - public void addIgnoredBy(UUID uuid) { - ignoredBy.add(uuid); - } - public long getGcCooldown() { return gcCooldown; } diff --git a/api/src/main/java/com/alttd/chat/objects/EmoteList.java b/api/src/main/java/com/alttd/chat/objects/EmoteList.java index aa13531..8c93b18 100644 --- a/api/src/main/java/com/alttd/chat/objects/EmoteList.java +++ b/api/src/main/java/com/alttd/chat/objects/EmoteList.java @@ -4,9 +4,9 @@ import com.alttd.chat.config.Config; import com.alttd.chat.managers.RegexManager; import com.alttd.chat.util.Utility; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; -import org.bukkit.Bukkit; import java.util.HashMap; import java.util.Map; @@ -16,7 +16,7 @@ public class EmoteList { public static final Map emoteLists = new HashMap<>(); public static final int pageSize = 7; -// public static int pages = RegexManager.getEmoteFilters().size() / pageSize;// TODO reload this when config is reloaded. + // public static int pages = RegexManager.getEmoteFilters().size() / pageSize;// TODO reload this when config is reloaded. public static EmoteList getEmoteList(UUID uuid) { synchronized (emoteLists) { @@ -25,22 +25,23 @@ public class EmoteList { } private int page; - public Component showEmotePage() { + + public ComponentLike showEmotePage() { int startIndex = page * pageSize; int pages = RegexManager.getEmoteFilters().size() / pageSize; int endIndex = Math.min(startIndex + pageSize, RegexManager.getEmoteFilters().size()); TagResolver placeholders = TagResolver.resolver( Placeholder.unparsed("page", String.valueOf(page)), Placeholder.unparsed("pages", String.valueOf(pages)) - ); - Component list = Utility.parseMiniMessage(Config.EMOTELIST_HEADER, placeholders); + ); + Component list = Utility.parseMiniMessage(Config.EMOTELIST_HEADER, placeholders).asComponent(); for (int i = startIndex; i < endIndex; i++) { ChatFilter emote = RegexManager.getEmoteFilters().get(i); TagResolver emotes = TagResolver.resolver( Placeholder.parsed("regex", emote.getRegex()), Placeholder.parsed("emote", emote.getReplacement()) - ); + ); list = list.append(Utility.parseMiniMessage(Config.EMOTELIST_ITEM, emotes)); } list = list.append(Utility.parseMiniMessage(Config.EMOTELIST_FOOTER, placeholders)); @@ -60,5 +61,4 @@ public class EmoteList { this.page = Math.max(page - 1, 0); } - } diff --git a/api/src/main/java/com/alttd/chat/objects/ModifiableString.java b/api/src/main/java/com/alttd/chat/objects/ModifiableString.java index 7ed12cf..f6cec5c 100644 --- a/api/src/main/java/com/alttd/chat/objects/ModifiableString.java +++ b/api/src/main/java/com/alttd/chat/objects/ModifiableString.java @@ -3,10 +3,6 @@ package com.alttd.chat.objects; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; -import org.intellij.lang.annotations.RegExp; - -import javax.annotation.RegEx; -import java.util.regex.Pattern; public class ModifiableString { private Component text; diff --git a/api/src/main/java/com/alttd/chat/objects/PartyUser.java b/api/src/main/java/com/alttd/chat/objects/PartyUser.java index 82f9f10..09382f4 100644 --- a/api/src/main/java/com/alttd/chat/objects/PartyUser.java +++ b/api/src/main/java/com/alttd/chat/objects/PartyUser.java @@ -1,21 +1,21 @@ package com.alttd.chat.objects; import com.alttd.chat.util.Utility; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import java.util.UUID; public class PartyUser { protected UUID uuid; - protected Component displayName; + protected ComponentLike displayName; protected String playerName; public PartyUser(UUID uuid, String displayName, String playerName) { this(uuid, Utility.applyColor(displayName), playerName); } - public PartyUser(UUID uuid, Component displayName, String playerName) { + public PartyUser(UUID uuid, ComponentLike displayName, String playerName) { this.uuid = uuid; this.displayName = displayName; this.playerName = playerName; @@ -25,7 +25,7 @@ public class PartyUser { return uuid; } - public Component getDisplayName() { + public ComponentLike getDisplayName() { return displayName; } diff --git a/api/src/main/java/com/alttd/chat/util/Utility.java b/api/src/main/java/com/alttd/chat/util/Utility.java index 89d410e..25b258d 100755 --- a/api/src/main/java/com/alttd/chat/util/Utility.java +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -3,11 +3,11 @@ package com.alttd.chat.util; import com.alttd.chat.ChatAPI; import com.alttd.chat.config.Config; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.tag.standard.StandardTags; -import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.luckperms.api.LuckPerms; import net.luckperms.api.model.group.Group; import net.luckperms.api.model.user.User; @@ -16,19 +16,17 @@ import net.luckperms.api.node.Node; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.util.stream.Collectors; public class Utility { private static final List EMPTY_LIST = new ArrayList<>(); static final Pattern DEFAULT_URL_PATTERN = Pattern.compile("(https?://)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)"); - static final Pattern URL_SCHEME_PATTERN = Pattern.compile("^[a-z][a-z0-9+\\-.]*:"); private static MiniMessage miniMessage = null; public static String stringRegen = "\\{#[A-Fa-f0-9]{6}(<)?(>)?}"; public static HashMap colors; - private static LegacyComponentSerializer legacySerializer; + static { // this might be in minimessage already? colors = new HashMap<>(); colors.put("&0", ""); @@ -48,41 +46,44 @@ public class Utility { colors.put("&e", ""); colors.put("&f", ""); } - + public static HashMap>> formattingPerms = new HashMap<>(); + static { formattingPerms.put("chat.format.color", - new Pair<>(StandardTags.color(), colors.values().stream().toList())); + new Pair<>(StandardTags.color(), colors.values().stream().toList())); formattingPerms.put("chat.format.bold", - new Pair<>(StandardTags.decorations(TextDecoration.BOLD), List.of("", ""))); + new Pair<>(StandardTags.decorations(TextDecoration.BOLD), List.of("", ""))); formattingPerms.put("chat.format.italic", - new Pair<>(StandardTags.decorations(TextDecoration.ITALIC), List.of("", ""))); + new Pair<>(StandardTags.decorations(TextDecoration.ITALIC), List.of("", ""))); formattingPerms.put("chat.format.underlined", - new Pair<>(StandardTags.decorations(TextDecoration.UNDERLINED), List.of("", ""))); + new Pair<>(StandardTags.decorations(TextDecoration.UNDERLINED), List.of("", ""))); formattingPerms.put("chat.format.strikethrough", - new Pair<>(StandardTags.decorations(TextDecoration.STRIKETHROUGH), List.of("", ""))); + new Pair<>(StandardTags.decorations(TextDecoration.STRIKETHROUGH), List.of("", ""))); formattingPerms.put("chat.format.obfuscated", - new Pair<>(StandardTags.decorations(TextDecoration.OBFUSCATED), List.of("", ""))); + new Pair<>(StandardTags.decorations(TextDecoration.OBFUSCATED), List.of("", ""))); formattingPerms.put("chat.format.gradient", - new Pair<>(StandardTags.gradient(), EMPTY_LIST)); + new Pair<>(StandardTags.gradient(), EMPTY_LIST)); formattingPerms.put("chat.format.font", - new Pair<>(StandardTags.font(), EMPTY_LIST)); + new Pair<>(StandardTags.font(), EMPTY_LIST)); formattingPerms.put("chat.format.rainbow", - new Pair<>(StandardTags.rainbow(), List.of(""))); + new Pair<>(StandardTags.rainbow(), List.of(""))); formattingPerms.put("chat.format.hover", - new Pair<>(StandardTags.hoverEvent(), EMPTY_LIST)); + new Pair<>(StandardTags.hoverEvent(), EMPTY_LIST)); formattingPerms.put("chat.format.click", - new Pair<>(StandardTags.clickEvent(), EMPTY_LIST)); + new Pair<>(StandardTags.clickEvent(), EMPTY_LIST)); formattingPerms.put("chat.format.transition", - new Pair<>(StandardTags.transition(), EMPTY_LIST)); + new Pair<>(StandardTags.transition(), EMPTY_LIST)); formattingPerms.put("chat.format.reset", - new Pair<>(StandardTags.reset(), List.of("", ""))); + new Pair<>(StandardTags.reset(), List.of("", ""))); formattingPerms.put("chat.format.newline", - new Pair<>(StandardTags.newline(), List.of(""))); + new Pair<>(StandardTags.newline(), List.of(""))); } public static String parseColors(String message) { - if (message == null) return ""; + if (message == null) { + return ""; + } // split string in sections and check those vs looping hashmap?:/ // think this is better, but will check numbers on this for (String key : colors.keySet()) { @@ -93,15 +94,17 @@ public class Utility { return message; } - public static Component getPrefix(UUID uuid, boolean single) { + public static ComponentLike getPrefix(UUID uuid, boolean single) { StringBuilder prefix = new StringBuilder(); LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); List prefixGroups = Config.PREFIXGROUPS; - if(user == null) return Component.empty(); - if(!single) { + if (user == null) { + return Component.empty(); + } + if (!single) { Collection inheritedGroups = user.getInheritedGroups(user.getQueryOptions()); - if(inheritedGroups.stream().map(Group::getName).collect(Collectors.toList()).contains("eventleader")) { + if (inheritedGroups.stream().anyMatch(group -> group.getName().equals("eventleader"))) { prefixGroups.remove("eventteam"); // hardcoded for now, new prefix system would load this from config } inheritedGroups.stream() @@ -113,21 +116,23 @@ public class Utility { }); } prefix.append(getUserPrefix(user)); -// prefix.append(user.getCachedData().getMetaData().getPrefix()); return applyColor(prefix.toString()); } - public static Component getStaffPrefix(UUID uuid) { + public static ComponentLike getStaffPrefix(UUID uuid) { StringBuilder prefix = new StringBuilder(); LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); - if(user == null) return Component.empty(); - if(user.getCachedData().getPermissionData().checkPermission("group." + Config.MINIMIUMSTAFFRANK).asBoolean()) { + if (user == null) { + return Component.empty(); + } + if (user.getCachedData().getPermissionData().checkPermission("group." + Config.MINIMIUMSTAFFRANK).asBoolean()) { Group group = luckPerms.getGroupManager().getGroup(user.getPrimaryGroup()); - if(group != null) + if (group != null) { prefix.append(getGroupPrefix(group)); -// prefix.append(group.getCachedData().getMetaData().getPrefix()); + } + // prefix.append(group.getCachedData().getMetaData().getPrefix()); } return applyColor(prefix.toString()); } @@ -138,26 +143,32 @@ public class Utility { if (group == null) { return ""; } - return ChatAPI.get().getPrefixes().get(group.getName()).replace("", user.getCachedData().getMetaData().getPrefix()); - } - - public static String getGroupPrefix(String groupName) { - Group group = ChatAPI.get().getLuckPerms().getGroupManager().getGroup(groupName); - if (group == null) { + String prefix = user.getCachedData().getMetaData().getPrefix(); + if (prefix == null) { + ALogger.warn("User " + user.getUsername() + " has no prefix set!"); return ""; } - return getGroupPrefix(group); + return ChatAPI.get().getPrefixes().get(group.getName()).replace("", prefix); } public static String getGroupPrefix(Group group) { - return ChatAPI.get().getPrefixes().get(group.getName()).replace("", group.getCachedData().getMetaData().getPrefix()); + String prefix = group.getCachedData().getMetaData().getPrefix(); + if (prefix == null) { + ALogger.warn("Group " + group.getName() + " has no prefix set!"); + return ""; + } + return ChatAPI.get().getPrefixes().get(group.getName()).replace("", prefix); } public static String getDisplayName(UUID uuid, String playerName) { - if (!playerName.isBlank()) return playerName; + if (!playerName.isBlank()) { + return playerName; + } LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); - if(user == null) return ""; + if (user == null) { + return ""; + } return user.getUsername(); } @@ -165,20 +176,22 @@ public class Utility { ChatAPI.get().getLuckPerms().getUserManager().modifyUser(uuid, user -> { // Add the permission user.data().add(Node.builder(permission) - .value(!user.getCachedData().getPermissionData().checkPermission(permission).asBoolean()).build()); + .value(!user.getCachedData().getPermissionData().checkPermission(permission).asBoolean()).build()); }); } public static boolean hasPermission(UUID uuid, String permission) { LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); - if(user == null) return false; + if (user == null) { + return false; + } return user.getCachedData().getPermissionData().checkPermission(permission).asBoolean(); } - public static Component applyColor(String message) { + public static ComponentLike applyColor(String message) { String hexColor1 = ""; - String hexColor2 = ""; + String hexColor2; StringBuilder stringBuilder = new StringBuilder(); message = parseColors(message); boolean startsWithColor = false; @@ -196,7 +209,7 @@ public class Utility { for (String s : split) { nextIndex += s.length(); int tmp = message.indexOf("}", nextIndex); - if (tmp < message.length() && tmp>=0) { + if (tmp < message.length() && tmp >= 0) { list.add(message.substring(nextIndex, tmp + 1)); nextIndex = tmp + 1; } @@ -220,7 +233,7 @@ public class Utility { } else if (bigger || lesser) { hexColor2 = s.substring(1, s.length() - 2); } else { - hexColor2 = s.substring(1, s.length() -1); + hexColor2 = s.substring(1, s.length() - 1); } if (firstLoop) { @@ -241,12 +254,12 @@ public class Utility { lastColorMatters = bigger; i++; } - if (split.length > i){ + if (split.length > i) { stringBuilder.append("<").append(hexColor1).append(">").append(split[i]); } } - return stringBuilder.length() == 0 ? Utility.parseMiniMessage(message) - : Utility.parseMiniMessage(stringBuilder.toString()); + return stringBuilder.isEmpty() ? Utility.parseMiniMessage(message) + : Utility.parseMiniMessage(stringBuilder.toString()); } public static boolean checkNickBrightEnough(String nickname) { @@ -294,10 +307,9 @@ public class Utility { Matcher matcher = DEFAULT_URL_PATTERN.matcher(message); while (matcher.find()) { String url = matcher.group(); - String displayUrl = url; String urlFormat = Config.URLFORMAT; message = message.replace(url, urlFormat - .replaceAll("", "" + displayUrl + "") + .replaceAll("", "" + url + "") .replaceAll("", formatUrl(url))); } return message; @@ -310,11 +322,11 @@ public class Utility { return "https://" + url; } - public static Component parseMiniMessage(String message) { + public static ComponentLike parseMiniMessage(String message) { return getMiniMessage().deserialize(message); } - public static Component parseMiniMessage(String message, TagResolver placeholders) { + public static ComponentLike parseMiniMessage(String message, TagResolver placeholders) { if (placeholders == null) { return getMiniMessage().deserialize(message); } else { @@ -322,7 +334,7 @@ public class Utility { } } - public static Component parseMiniMessage(String message, TagResolver ... placeholders) { + public static ComponentLike parseMiniMessage(String message, TagResolver... placeholders) { if (placeholders == null) { return getMiniMessage().deserialize(message); } else { @@ -335,7 +347,9 @@ public class Utility { } public static MiniMessage getMiniMessage() { - if (miniMessage == null) miniMessage = MiniMessage.miniMessage(); + if (miniMessage == null) { + miniMessage = MiniMessage.miniMessage(); + } return miniMessage; } diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index 996a3de..a2b4c08 100755 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -16,13 +16,10 @@ import com.alttd.chat.util.ServerName; import com.alttd.chat.util.Utility; import org.bukkit.Bukkit; import org.bukkit.command.CommandExecutor; -import org.bukkit.command.PluginCommand; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; -import java.io.File; -import java.util.List; +import java.util.Objects; public class ChatPlugin extends JavaPlugin { @@ -31,7 +28,6 @@ public class ChatPlugin extends JavaPlugin { private ChatAPI chatAPI; private ChatHandler chatHandler; - private String messageChannel; private ServerConfig serverConfig; @Override @@ -44,7 +40,7 @@ public class ChatPlugin extends JavaPlugin { serverConfig = new ServerConfig(ServerName.getServerName()); ChatLogHandler chatLogHandler = ChatLogHandler.getInstance(true); registerListener(new PlayerListener(serverConfig), new ChatListener(chatLogHandler), new BookListener(), new ShutdownListener(chatLogHandler, this)); - if(serverConfig.GLOBALCHAT) { + if (serverConfig.GLOBALCHAT) { registerCommand("globalchat", new GlobalChat()); registerCommand("toggleglobalchat", new ToggleGlobalChat()); } @@ -56,7 +52,6 @@ public class ChatPlugin extends JavaPlugin { registerCommand("muteserver", new MuteServer()); registerCommand("spy", new Spy()); registerCommand("chatclear", new ChatClear()); -// registerCommand("chatparty", new ChatParty()); registerCommand("p", new PartyChat()); registerCommand("emotes", new Emotes()); for (Channel channel : Channel.getChannels()) { @@ -66,7 +61,7 @@ public class ChatPlugin extends JavaPlugin { this.getServer().getCommandMap().register(channel.getChannelName().toLowerCase(), new ChatChannel(customChannel)); } - messageChannel = Config.MESSAGECHANNEL; + String messageChannel = Config.MESSAGECHANNEL; getServer().getMessenger().registerOutgoingPluginChannel(this, messageChannel); getServer().getMessenger().registerIncomingPluginChannel(this, messageChannel, new PluginMessage()); @@ -88,23 +83,13 @@ public class ChatPlugin extends JavaPlugin { } public void registerCommand(String commandName, CommandExecutor commandExecutor) { - getCommand(commandName).setExecutor(commandExecutor); - } - - public void registerCommand(String commandName, CommandExecutor commandExecutor, List aliases) { - PluginCommand command = getCommand(commandName); - command.setAliases(aliases); - command.setExecutor(commandExecutor); + Objects.requireNonNull(getCommand(commandName)).setExecutor(commandExecutor); } public static ChatPlugin getInstance() { return instance; } - public ChatAPI getChatAPI() { - return chatAPI; - } - public ChatHandler getChatHandler() { return chatHandler; } @@ -125,7 +110,7 @@ public class ChatPlugin extends JavaPlugin { chatAPI.reloadConfig(); chatAPI.reloadChatFilters(); serverConfig = new ServerConfig(ServerName.getServerName()); - Bukkit.broadcast(Utility.parseMiniMessage("Reloaded ChatPlugin Config."), "command.chat.reloadchat"); + Bukkit.broadcast(Utility.parseMiniMessage("Reloaded ChatPlugin Config.").asComponent(), "command.chat.reloadchat"); ALogger.info("Reloaded ChatPlugin config."); } } diff --git a/galaxy/src/main/java/com/alttd/chat/commands/ChatChannel.java b/galaxy/src/main/java/com/alttd/chat/commands/ChatChannel.java index 636c02a..15f1e2a 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/ChatChannel.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/ChatChannel.java @@ -11,14 +11,16 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class ChatChannel extends BukkitCommand { CustomChannel channel; String command; ToggleableForCustomChannel toggleableForCustomChannel; - private static List activeCommands = new ArrayList<>(); + private static final List activeCommands = new ArrayList<>(); public ChatChannel(CustomChannel channel) { super(channel.getChannelName().toLowerCase()); @@ -33,15 +35,15 @@ public class ChatChannel extends BukkitCommand { @Override public boolean execute(@NotNull CommandSender sender, @NotNull String command, @NotNull String[] args) { - if(!(sender instanceof Player player)) { // must be a player + if (!(sender instanceof Player player)) { // must be a player return true; } - if(args.length == 0 && player.hasPermission(channel.getPermission())) { + if (args.length == 0 && player.hasPermission(channel.getPermission())) { player.sendRichMessage(Config.CUSTOM_CHANNEL_TOGGLED, TagResolver.resolver( Placeholder.unparsed("channel", channel.getChannelName()), Placeholder.component("status", toggleableForCustomChannel.toggle(player.getUniqueId()) - ? Config.TOGGLED_ON : Config.TOGGLED_OFF))); + ? Config.TOGGLED_ON : Config.TOGGLED_OFF))); return false; } diff --git a/galaxy/src/main/java/com/alttd/chat/commands/ChatClear.java b/galaxy/src/main/java/com/alttd/chat/commands/ChatClear.java index ab5d90e..be6728f 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/ChatClear.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/ChatClear.java @@ -1,6 +1,5 @@ package com.alttd.chat.commands; -import com.alttd.chat.util.Utility; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -9,26 +8,29 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class ChatClear implements CommandExecutor { - private static final Component component = MiniMessage.miniMessage().deserialize("\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n"); + private static final Component component = MiniMessage.miniMessage().deserialize("\n".repeat(100)); MiniMessage miniMessage = MiniMessage.miniMessage(); @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!sender.hasPermission("chat.command.clear-chat")) { - sender.sendMessage(Utility.parseMiniMessage("You don't have permission to use this command.")); + sender.sendRichMessage("You don't have permission to use this command."); return true; } - for (Player player : Bukkit.getOnlinePlayers()) - if (!player.hasPermission("chat.clear-bypass")) + for (Player player : Bukkit.getOnlinePlayers()) { + if (!player.hasPermission("chat.clear-bypass")) { player.sendMessage(component); + } + } Bukkit.getServer().sendMessage(miniMessage.deserialize( - " cleared chat.", - Placeholder.component("player",sender.name())) - ); + " cleared chat.", + Placeholder.component("player", sender.name())) + ); return true; } } diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Continue.java b/galaxy/src/main/java/com/alttd/chat/commands/Continue.java index feb483e..7c86cea 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/Continue.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/Continue.java @@ -8,17 +8,22 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class Continue implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player player)) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { return true; } ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - if (user.getReplyContinueTarget() == null) return false; - if(args.length == 0) return false; // todo error message or command info + if (user.getReplyContinueTarget() == null) { + return false; + } + if (args.length == 0) { + return false; // todo error message or command info + } String message = StringUtils.join(args, " ", 0, args.length); ChatPlugin.getInstance().getChatHandler().continuePrivateMessage(player, user.getReplyContinueTarget(), message); diff --git a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java index 4c25fdf..18e788a 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java @@ -7,15 +7,18 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; public class GlobalChat implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player player)) { // must be a player + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { // must be a player return true; } - if(args.length == 0) return false; + if (args.length == 0) { + return false; + } String message = StringUtils.join(args, " ", 0, args.length); diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Ignore.java b/galaxy/src/main/java/com/alttd/chat/commands/Ignore.java index 7ae536c..6445249 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/Ignore.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/Ignore.java @@ -5,19 +5,17 @@ import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.objects.ChatUser; -import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; -import java.util.List; import java.util.UUID; public class Ignore implements CommandExecutor { @@ -29,11 +27,13 @@ public class Ignore implements CommandExecutor { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player player)) { // must be a player + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { return true; } - if(args.length > 1) return false; // todo error message or command info + if (args.length > 1) { + return false; // todo error message or command info + } String targetName = args[0]; if (targetName.equals("?")) { new BukkitRunnable() { @@ -44,7 +44,7 @@ public class Ignore implements CommandExecutor { StringBuilder ignoredMessage = new StringBuilder(); if (userNames.isEmpty()) { - player.sendMessage(Utility.parseMiniMessage("You don't have anyone ignored!")); //TODO load from config + player.sendRichMessage("You don't have anyone ignored!"); //TODO load from config return; } @@ -52,21 +52,21 @@ public class Ignore implements CommandExecutor { userNames.forEach(username -> ignoredMessage.append(username).append("\n")); ignoredMessage.delete(ignoredMessage.length() - 1, ignoredMessage.length()); - player.sendMessage(Utility.parseMiniMessage(ignoredMessage.toString())); + player.sendRichMessage(ignoredMessage.toString()); } }.runTaskAsynchronously(plugin); return false; } Player targetPlayer = Bukkit.getPlayer(targetName); - if(targetPlayer == null) { // can't ignore offline players + if (targetPlayer == null) { // can't ignore offline players sender.sendMessage("You can't ignore offline players"); //sender.sendMessage("Target not found..."); // TODO load from config and minimessage return false; } UUID target = targetPlayer.getUniqueId(); - if(targetPlayer.hasPermission("chat.ignorebypass") || target.equals(player.getUniqueId())) { + if (targetPlayer.hasPermission("chat.ignorebypass") || target.equals(player.getUniqueId())) { sender.sendMessage("You can't ignore this player"); // TODO load from config and minimessage return false; } @@ -74,9 +74,9 @@ public class Ignore implements CommandExecutor { @Override public void run() { ChatUser chatUser = ChatUserManager.getChatUser(player.getUniqueId()); - if(!chatUser.getIgnoredPlayers().contains(target)) { + if (!chatUser.getIgnoredPlayers().contains(target)) { chatUser.addIgnoredPlayers(target); - Queries.ignoreUser(((Player) sender).getUniqueId(), target); + Queries.ignoreUser(player.getUniqueId(), target); sender.sendMessage("You have ignored " + targetName + "."); // TODO load from config and minimessage sendPluginMessage("ignore", player, target); } else { diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Message.java b/galaxy/src/main/java/com/alttd/chat/commands/Message.java index 2e47684..2375441 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/Message.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/Message.java @@ -8,15 +8,18 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class Message implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player player)) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { return true; } - if(args.length < 2) return false; // todo error message or command info + if (args.length < 2) { + return false; // todo error message or command info + } ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); user.setReplyContinueTarget(args[0]); diff --git a/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java b/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java index 7844265..48618ba 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/MuteServer.java @@ -3,22 +3,22 @@ package com.alttd.chat.commands; import com.alttd.chat.ChatPlugin; import com.alttd.chat.config.Config; import com.alttd.chat.util.Utility; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.ComponentLike; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; import java.util.UUID; public class MuteServer implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player player)) { // must be a player + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { // must be a player return true; } new BukkitRunnable() { @@ -26,13 +26,13 @@ public class MuteServer implements CommandExecutor { public void run() { UUID uuid = player.getUniqueId(); if (!Utility.hasPermission(uuid, Config.SERVERMUTEPERMISSION)) { - sender.sendMessage(Utility.parseMiniMessage("You don't have permission to use this command.")); + sender.sendRichMessage("You don't have permission to use this command."); return; } ChatPlugin.getInstance().toggleServerMuted(); - Component component; + ComponentLike component; if (ChatPlugin.getInstance().serverMuted()) { component = Utility.parseMiniMessage(Utility.getDisplayName(player.getUniqueId(), player.getName()) + " muted chat."); } else { diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Reply.java b/galaxy/src/main/java/com/alttd/chat/commands/Reply.java index 2053fb4..65a2d06 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/Reply.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/Reply.java @@ -8,18 +8,22 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; public class Reply implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { return true; } - Player player = (Player) sender; ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - if (user.getReplyTarget() == null) return false; - if(args.length == 0) return false; // todo error message or command info + if (user.getReplyTarget() == null) { + return false; + } + if (args.length == 0) { + return false; // todo error message or command info + } String message = StringUtils.join(args, " ", 0, args.length); ChatPlugin.getInstance().getChatHandler().privateMessage(player, user.getReplyTarget(), message); diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Spy.java b/galaxy/src/main/java/com/alttd/chat/commands/Spy.java index 4950a62..e9a073e 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/Spy.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/Spy.java @@ -1,30 +1,29 @@ package com.alttd.chat.commands; import com.alttd.chat.ChatPlugin; -import com.alttd.chat.config.Config; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.objects.ChatUser; import com.alttd.chat.util.Utility; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; import java.util.UUID; public class Spy implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) { // must be a player + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { return true; } new BukkitRunnable() { @Override public void run() { - UUID uuid = ((Player) sender).getUniqueId(); + UUID uuid = player.getUniqueId(); ChatUser user = ChatUserManager.getChatUser(uuid); user.toggleSpy(); sender.sendMessage(Utility.parseMiniMessage("You have turned spy " + (user.isSpy() ? "on." : "off."))); // TODO load from config and minimessage diff --git a/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java b/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java index 6e12fb6..3fcb548 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java @@ -2,38 +2,31 @@ package com.alttd.chat.commands; import com.alttd.chat.ChatPlugin; import com.alttd.chat.config.Config; -import com.alttd.chat.database.Queries; import com.alttd.chat.managers.ChatUserManager; -import com.alttd.chat.objects.ChatUser; import com.alttd.chat.util.Utility; -import jdk.jshell.execution.Util; -import net.kyori.adventure.text.minimessage.MiniMessage; -import org.apache.commons.lang3.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; -import java.util.Objects; import java.util.UUID; public class ToggleGlobalChat implements CommandExecutor { @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) { // must be a player + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player)) { return true; } new BukkitRunnable() { @Override public void run() { UUID uuid = ((Player) sender).getUniqueId(); - ChatUser chatUser = ChatUserManager.getChatUser(uuid); - //chatUser.toggleGc(); + ChatUserManager.getChatUser(uuid); Utility.flipPermission(uuid, Config.GCPERMISSION); - //Queries.setGlobalChatState(chatUser.isGcOn(), chatUser.getUuid()); - sender.sendMessage(Utility.parseMiniMessage("You have turned globalchat " + (!Utility.hasPermission(uuid, Config.GCPERMISSION) ? "on." : "off."))); // TODO load from config and minimessage + sender.sendRichMessage("You have turned globalchat " + (!Utility.hasPermission(uuid, Config.GCPERMISSION) ? "on." : "off.")); // TODO load from config and minimessage } }.runTaskAsynchronously(ChatPlugin.getInstance()); return false; diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Unignore.java b/galaxy/src/main/java/com/alttd/chat/commands/Unignore.java index e5461ca..30e3171 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/Unignore.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/Unignore.java @@ -3,21 +3,17 @@ package com.alttd.chat.commands; import com.alttd.chat.ChatPlugin; import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; -import com.alttd.chat.listeners.PluginMessage; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.objects.ChatUser; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.minimessage.MiniMessage; -import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.command.PluginCommand; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -30,22 +26,20 @@ public class Unignore implements CommandExecutor { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player player)) { // must be a player + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player player)) { // must be a player return true; } - if(args.length > 1) return false; // todo error message or command info + if (args.length > 1) { + return false; // todo error message or command info + } String targetName = args[0]; UUID target = Bukkit.getOfflinePlayer(targetName).getUniqueId(); - if(target == null) { - //sender.sendMessage("Target not found..."); // TODO load from config and minimessage - return false; - } new BukkitRunnable() { @Override public void run() { ChatUser chatUser = ChatUserManager.getChatUser(player.getUniqueId()); - if(chatUser.getIgnoredPlayers().contains(target)) { + if (chatUser.getIgnoredPlayers().contains(target)) { chatUser.removeIgnoredPlayers(target); Queries.unIgnoreUser(player.getUniqueId(), target); sender.sendMessage("You no longer ignore " + targetName + "."); // TODO load from config and minimessage diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java index e54242f..733952c 100755 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -15,6 +15,7 @@ import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -28,16 +29,17 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import java.util.*; +import java.util.List; +import java.util.Objects; +import java.util.UUID; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import java.util.stream.Stream; public class ChatHandler { private final ChatPlugin plugin; - private final Component GCNOTENABLED; + private final ComponentLike GCNOTENABLED; public ChatHandler() { plugin = ChatPlugin.getInstance(); @@ -45,68 +47,68 @@ public class ChatHandler { } public void continuePrivateMessage(Player player, String target, String message) { -// ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); -// user.setReplyTarget(target); + // ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); + // user.setReplyTarget(target); TagResolver placeholders = TagResolver.resolver( Placeholder.component("message", parseMessageContent(player, message)), Placeholder.component("sendername", player.name()), Placeholder.parsed("receivername", target) - ); + ); - Component component = Utility.parseMiniMessage("", placeholders); + ComponentLike component = Utility.parseMiniMessage("", placeholders); - ModifiableString modifiableString = new ModifiableString(component); + ModifiableString modifiableString = new ModifiableString(component.asComponent()); // todo a better way for this - if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "privatemessage")) { + if (!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "privatemessage")) { GalaxyUtility.sendBlockedNotification("DM Language", - player, - Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), - target); + player, + Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), + target); return; // the message was blocked } component = modifiableString.component(); - sendPrivateMessage(player, target, "privatemessage", component); - Component spymessage = Utility.parseMiniMessage(Config.MESSAGESPY, placeholders); - for(Player pl : Bukkit.getOnlinePlayers()) { - if(pl.hasPermission(Config.SPYPERMISSION) && ChatUserManager.getChatUser(pl.getUniqueId()).isSpy() && !pl.equals(player) && !pl.getName().equalsIgnoreCase(target)) { + sendPrivateMessage(player, target, "privatemessage", component.asComponent()); + ComponentLike spymessage = Utility.parseMiniMessage(Config.MESSAGESPY, placeholders); + for (Player pl : Bukkit.getOnlinePlayers()) { + if (pl.hasPermission(Config.SPYPERMISSION) && ChatUserManager.getChatUser(pl.getUniqueId()).isSpy() && !pl.equals(player) && !pl.getName().equalsIgnoreCase(target)) { pl.sendMessage(spymessage); } } } public void privateMessage(Player player, String target, String message) { -// ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); -// user.setReplyTarget(target); + // ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); + // user.setReplyTarget(target); Component messageComponent = parseMessageContent(player, message); TagResolver placeholders = TagResolver.resolver( Placeholder.component("message", messageComponent), Placeholder.component("sendername", player.name()), Placeholder.parsed("receivername", target) - ); + ); ModifiableString modifiableString = new ModifiableString(messageComponent); // todo a better way for this - if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "privatemessage")) { + if (!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "privatemessage")) { GalaxyUtility.sendBlockedNotification("DM Language", - player, - Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), - target); + player, + Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), + target); return; // the message was blocked } messageComponent = modifiableString.component(); -// Component component = Utility.parseMiniMessage("", placeholders) -// .replaceText(TextReplacementConfig.builder().once().matchLiteral("[i]").replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand())).build()); + // Component component = Utility.parseMiniMessage("", placeholders) + // .replaceText(TextReplacementConfig.builder().once().matchLiteral("[i]").replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand())).build()); sendPrivateMessage(player, target, "privatemessage", messageComponent); - Component spymessage = Utility.parseMiniMessage(Config.MESSAGESPY, placeholders); - for(Player pl : Bukkit.getOnlinePlayers()) { - if(pl.hasPermission(Config.SPYPERMISSION) && ChatUserManager.getChatUser(pl.getUniqueId()).isSpy() && !pl.equals(player) && !pl.getName().equalsIgnoreCase(target)) { + ComponentLike spymessage = Utility.parseMiniMessage(Config.MESSAGESPY, placeholders); + for (Player pl : Bukkit.getOnlinePlayers()) { + if (pl.hasPermission(Config.SPYPERMISSION) && ChatUserManager.getChatUser(pl.getUniqueId()).isSpy() && !pl.equals(player) && !pl.getName().equalsIgnoreCase(target)) { pl.sendMessage(spymessage); } } @@ -114,7 +116,7 @@ public class ChatHandler { public void globalChat(Player player, String message) { ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - if(!Utility.hasPermission(player.getUniqueId(), Config.GCPERMISSION)) { + if (!Utility.hasPermission(player.getUniqueId(), Config.GCPERMISSION)) { player.sendMessage(GCNOTENABLED);// GC IS OFF INFORM THEM ABOUT THIS and cancel return; } @@ -124,29 +126,29 @@ public class ChatHandler { } long timeLeft = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - user.getGcCooldown()); - if(timeLeft <= Config.GCCOOLDOWN && !player.hasPermission("chat.globalchat.cooldownbypass")) { // player is on cooldown and should wait x seconds - player.sendMessage(Utility.parseMiniMessage(Config.GCONCOOLDOWN, Placeholder.parsed("cooldown", Config.GCCOOLDOWN-timeLeft+""))); + if (timeLeft <= Config.GCCOOLDOWN && !player.hasPermission("chat.globalchat.cooldownbypass")) { // player is on cooldown and should wait x seconds + player.sendRichMessage(Config.GCONCOOLDOWN, Placeholder.parsed("cooldown", Config.GCCOOLDOWN - timeLeft + "")); return; } - Component senderName = user.getDisplayName(); - Component prefix = user.getPrefix(); + ComponentLike senderName = user.getDisplayName(); + ComponentLike prefix = user.getPrefix(); TagResolver placeholders = TagResolver.resolver( Placeholder.component("sender", senderName), Placeholder.component("prefix", prefix), Placeholder.component("message", parseMessageContent(player, message)), Placeholder.parsed("server", ServerName.getServerName()) - ); + ); - Component component = Utility.parseMiniMessage(Config.GCFORMAT, placeholders); + Component component = Utility.parseMiniMessage(Config.GCFORMAT, placeholders).asComponent(); ModifiableString modifiableString = new ModifiableString(component); // todo a better way for this if (!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "globalchat")) { GalaxyUtility.sendBlockedNotification("GC Language", - player, - Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), - ""); + player, + Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), + ""); return; // the message was blocked } component = modifiableString.component(); @@ -157,7 +159,7 @@ public class ChatHandler { public void chatChannel(Player player, CustomChannel channel, String message) { if (!player.hasPermission(channel.getPermission())) { - player.sendMessage(Utility.parseMiniMessage("You don't have permission to use this channel.")); + player.sendRichMessage("You don't have permission to use this channel."); return; } @@ -167,22 +169,22 @@ public class ChatHandler { } ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - Component senderName = user.getDisplayName(); + ComponentLike senderName = user.getDisplayName(); TagResolver placeholders = TagResolver.resolver( Placeholder.component("sender", senderName), Placeholder.component("message", parseMessageContent(player, message)), Placeholder.parsed("server", ServerName.getServerName()), Placeholder.parsed("channel", channel.getChannelName()) - ); - Component component = Utility.parseMiniMessage(channel.getFormat(), placeholders); + ); + Component component = Utility.parseMiniMessage(channel.getFormat(), placeholders).asComponent(); ModifiableString modifiableString = new ModifiableString(component); - if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, channel.getChannelName())) { + if (!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, channel.getChannelName())) { GalaxyUtility.sendBlockedNotification(channel.getChannelName() + " Language", - player, - Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), - ""); + player, + Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())), + ""); ALogger.info("Refusing to send blocked chat message"); return; } @@ -203,49 +205,48 @@ public class ChatHandler { out.writeUTF(message); out.writeUTF(GsonComponentSerializer.gson().serialize( itemComponent(player.getInventory().getItemInMainHand()) - )); + )); player.sendPluginMessage(plugin, Config.MESSAGECHANNEL, out.toByteArray()); - -// if (isMuted(player, message, "[" + party.getPartyName() + " Muted] ")) return; -// -// ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); -// Component senderName = user.getDisplayName(); -// -// String updatedMessage = RegexManager.replaceText(player.getName(), player.getUniqueId(), message); -// if(updatedMessage == null) { -// GalaxyUtility.sendBlockedNotification("Party Language", player, message, ""); -// return; // the message was blocked -// } -// -// if(!player.hasPermission("chat.format")) { -// updatedMessage = Utility.stripTokens(updatedMessage); -// } -// -// if(updatedMessage.contains("[i]")) updatedMessage = updatedMessage.replaceFirst("[i]", ""); -// -// updatedMessage = Utility.formatText(updatedMessage); -// -// List Placeholders = new ArrayList<>(List.of( -// Placeholder.miniMessage("sender", senderName), -// Placeholder.miniMessage("sendername", senderName), -// Placeholder.miniMessage("partyname", party.getPartyName()), -// Placeholder.miniMessage("message", updatedMessage), -// Placeholder.miniMessage("server", Bukkit.getServerName()), -// Placeholder.miniMessage("[i]", itemComponent(player.getInventory().getItemInMainHand())))); -// -// Component component = Utility.parseMiniMessage(Config.PARTY_FORMAT, Placeholders); -//// sendPartyMessage(player, party.getPartyId(), component); -// -// Component spyMessage = Utility.parseMiniMessage(Config.PARTY_SPY, Placeholders); -// for(Player pl : Bukkit.getOnlinePlayers()) { -// if(pl.hasPermission(Config.SPYPERMISSION) && !party.getPartyUsersUuid().contains(pl.getUniqueId())) { -// pl.sendMessage(spyMessage); -// } -// } + // if (isMuted(player, message, "[" + party.getPartyName() + " Muted] ")) return; + // + // ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); + // Component senderName = user.getDisplayName(); + // + // String updatedMessage = RegexManager.replaceText(player.getName(), player.getUniqueId(), message); + // if(updatedMessage == null) { + // GalaxyUtility.sendBlockedNotification("Party Language", player, message, ""); + // return; // the message was blocked + // } + // + // if(!player.hasPermission("chat.format")) { + // updatedMessage = Utility.stripTokens(updatedMessage); + // } + // + // if(updatedMessage.contains("[i]")) updatedMessage = updatedMessage.replaceFirst("[i]", ""); + // + // updatedMessage = Utility.formatText(updatedMessage); + // + // List Placeholders = new ArrayList<>(List.of( + // Placeholder.miniMessage("sender", senderName), + // Placeholder.miniMessage("sendername", senderName), + // Placeholder.miniMessage("partyname", party.getPartyName()), + // Placeholder.miniMessage("message", updatedMessage), + // Placeholder.miniMessage("server", Bukkit.getServerName()), + // Placeholder.miniMessage("[i]", itemComponent(player.getInventory().getItemInMainHand())))); + // + // Component component = Utility.parseMiniMessage(Config.PARTY_FORMAT, Placeholders); + //// sendPartyMessage(player, party.getPartyId(), component); + // + // Component spyMessage = Utility.parseMiniMessage(Config.PARTY_SPY, Placeholders); + // for(Player pl : Bukkit.getOnlinePlayers()) { + // if(pl.hasPermission(Config.SPYPERMISSION) && !party.getPartyUsersUuid().contains(pl.getUniqueId())) { + // pl.sendMessage(spyMessage); + // } + // } } - private void sendChatChannelMessage(CustomChannel chatChannel, UUID uuid, Component component, String message) { + private void sendChatChannelMessage(CustomChannel chatChannel, UUID uuid, ComponentLike component, String message) { Player player = Bukkit.getPlayer(uuid); if (player == null) { ALogger.warn("Failed to send chat message from non existent player"); @@ -254,9 +255,9 @@ public class ChatHandler { if (!chatChannel.getServers().contains(ServerName.getServerName())) { player.sendRichMessage("Unable to send messages to in this server.", - Placeholder.parsed("channel", chatChannel.getChannelName())); + Placeholder.parsed("channel", chatChannel.getChannelName())); ALogger.info(String.format("Not sending chat message due to [%s] not being in this channels config", - ServerName.getServerName())); + ServerName.getServerName())); return; } @@ -264,16 +265,18 @@ public class ChatHandler { .filter(p -> p.hasPermission(chatChannel.getPermission())); if (!player.hasPermission("chat.ignorebypass")) { stream = stream.filter(receiver -> !ChatUserManager.getChatUser(receiver.getUniqueId()).getIgnoredPlayers().contains(uuid) - || receiver.hasPermission("chat.ignorebypass")); + || receiver.hasPermission("chat.ignorebypass")); } if (chatChannel.isLocal()) { Location location = player.getLocation(); stream = stream.filter(receiver -> { Player receiverPlayer = Bukkit.getPlayer(receiver.getUniqueId()); - if (receiverPlayer == null) + if (receiverPlayer == null) { return false; - if (!location.getWorld().getUID().equals(receiverPlayer.getLocation().getWorld().getUID())) + } + if (!location.getWorld().getUID().equals(receiverPlayer.getLocation().getWorld().getUID())) { return false; + } return !(receiverPlayer.getLocation().distance(location) > Config.LOCAL_DISTANCE); }); } @@ -285,9 +288,9 @@ public class ChatHandler { .filter(onlinePlayer -> onlinePlayer.hasPermission(Config.SPYPERMISSION)) .filter(onlinePlayer -> !recipientUUIDs.contains(onlinePlayer.getUniqueId())) .forEach(onlinePlayer -> onlinePlayer.sendRichMessage(Config.CHANNEL_SPY, - Placeholder.component("sender", player.name()), - Placeholder.parsed("channel", chatChannel.getChannelName()), - Placeholder.parsed("message", message))); + Placeholder.component("sender", player.name()), + Placeholder.parsed("channel", chatChannel.getChannelName()), + Placeholder.parsed("message", message))); } private void sendPluginMessage(Player player, String channel, Component component) { @@ -320,9 +323,11 @@ public class ChatHandler { private boolean isMuted(Player player, String message, String prefix) { ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - if (user == null) return false; + if (user == null) { + return false; + } if (user.isMuted() || (ChatPlugin.getInstance().serverMuted() && !player.hasPermission("chat.bypass-server-muted"))) { -// if (Database.get().isPlayerMuted(player.getUniqueId(), null) || (ChatPlugin.getInstance().serverMuted() && !player.hasPermission("chat.bypass-server-muted"))) { + // if (Database.get().isPlayerMuted(player.getUniqueId(), null) || (ChatPlugin.getInstance().serverMuted() && !player.hasPermission("chat.bypass-server-muted"))) { GalaxyUtility.sendBlockedNotification(prefix, player, Utility.parseMiniMessage(Utility.stripTokens(message)), ""); return true; } @@ -331,11 +336,12 @@ public class ChatHandler { public static Component itemComponent(ItemStack item) { Component component = Component.text("[i]", NamedTextColor.AQUA); - if(item.getType().equals(Material.AIR)) + if (item.getType().equals(Material.AIR)) { return component.color(NamedTextColor.WHITE); + } boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName(); - if(dname) { - component = component.append(item.getItemMeta().displayName()); + if (dname) { + component = component.append(Objects.requireNonNull(item.getItemMeta().displayName())); } else { component = component.append(Component.text(materialToName(item.getType()), NamedTextColor.WHITE)); } @@ -357,10 +363,12 @@ public class ChatHandler { int loc = sb.lastIndexOf(split); char charLoc = sb.charAt(loc); if (!(split.equalsIgnoreCase("of") || split.equalsIgnoreCase("and") || - split.equalsIgnoreCase("with") || split.equalsIgnoreCase("on"))) + split.equalsIgnoreCase("with") || split.equalsIgnoreCase("on"))) { sb.setCharAt(loc, Character.toUpperCase(charLoc)); - if (pos != splits.length - 1) + } + if (pos != splits.length - 1) { sb.append(' '); + } ++pos; } @@ -379,7 +387,7 @@ public class ChatHandler { MiniMessage miniMessage = MiniMessage.builder().tags(tagResolver.build()).build(); Component component = miniMessage.deserialize(rawMessage); - for(ChatFilter chatFilter : RegexManager.getEmoteFilters()) { + for (ChatFilter chatFilter : RegexManager.getEmoteFilters()) { component = component.replaceText( TextReplacementConfig.builder() .times(Config.EMOTELIMIT) diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java index 645cb3f..34b2abe 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java @@ -17,6 +17,7 @@ import io.papermc.paper.event.player.AsyncChatCommandDecorateEvent; import io.papermc.paper.event.player.AsyncChatDecorateEvent; import io.papermc.paper.event.player.AsyncChatEvent; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -47,28 +48,32 @@ public class ChatListener implements Listener { this.chatLogHandler = chatLogHandler; } - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onChatCommandDecorate(AsyncChatCommandDecorateEvent event) { - if (event.player() == null) return; + if (event.player() == null) { + return; + } Component formatComponent = Component.text("%message%"); - Component message = parseMessageContent(event.player(), plainTextComponentSerializer.serialize(event.originalMessage())); + ComponentLike message = parseMessageContent(event.player(), plainTextComponentSerializer.serialize(event.originalMessage())); event.result(formatComponent.replaceText(TextReplacementConfig.builder().match("%message%").replacement(message).build())); } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onChatDecorate(AsyncChatDecorateEvent event) { - if (event.player() == null) return; + if (event.player() == null) { + return; + } Component formatComponent = Component.text("%message%"); - Component message = parseMessageContent(event.player(), plainTextComponentSerializer.serialize(event.originalMessage())); + ComponentLike message = parseMessageContent(event.player(), plainTextComponentSerializer.serialize(event.originalMessage())); event.result(formatComponent.replaceText(TextReplacementConfig.builder().match("%message%").replacement(message).build())); } private final Component mention = MiniMessage.miniMessage().deserialize(Config.MENTIONPLAYERTAG); + @EventHandler(ignoreCancelled = true) public void onPlayerChat(AsyncChatEvent event) { event.setCancelled(true); //Always cancel the event because we do not want to deal with Microsoft's stupid bans @@ -86,12 +91,12 @@ public class ChatListener implements Listener { Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); - Component input = event.message().colorIfAbsent(NamedTextColor.WHITE); + ComponentLike input = event.message().colorIfAbsent(NamedTextColor.WHITE); - ModifiableString modifiableString = new ModifiableString(input); + ModifiableString modifiableString = new ModifiableString(input.asComponent()); - // todo a better way for this - if(!RegexManager.filterText(player.getName(), uuid, modifiableString, true, "chat", filterType -> { + // todo a better way for this + if (!RegexManager.filterText(player.getName(), uuid, modifiableString, true, "chat", filterType -> { if (!filterType.equals(FilterType.PUNISH)) { ALogger.warn("Received another FilterType than punish when filtering chat and executing a filter action"); return; @@ -105,9 +110,9 @@ public class ChatListener implements Listener { })) { event.setCancelled(true); GalaxyUtility.sendBlockedNotification("Language", player, - modifiableString.component(), - ""); - chatLogHandler.addChatLog(uuid, ServerName.getServerName(), PlainTextComponentSerializer.plainText().serialize(input), true); + modifiableString.component(), + ""); + chatLogHandler.addChatLog(uuid, ServerName.getServerName(), PlainTextComponentSerializer.plainText().serialize(input.asComponent()), true); return; // the message was blocked } @@ -116,7 +121,7 @@ public class ChatListener implements Listener { if (!player.hasPermission("chat.ignorebypass")) { stream = stream.filter(receiver -> !ChatUserManager.getChatUser(receiver.getUniqueId()).getIgnoredPlayers().contains(uuid) - || receiver.hasPermission("chat.ignorebypass")); + || receiver.hasPermission("chat.ignorebypass")); } Set receivers = stream.collect(Collectors.toSet()); @@ -131,7 +136,7 @@ public class ChatListener implements Listener { pingPlayer.playSound(pingPlayer.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1, 1); } chatLogHandler.addChatLog(uuid, ServerName.getServerName(), modifiableString.string(), false); - ALogger.info(PlainTextComponentSerializer.plainText().serialize(input)); + ALogger.info(PlainTextComponentSerializer.plainText().serialize(input.asComponent())); } private void pingPlayers(Set playersToPing, ModifiableString modifiableString, Player player) { @@ -147,10 +152,10 @@ public class ChatListener implements Listener { ChatUser onlinePlayerUser = ChatUserManager.getChatUser(onlinePlayer.getUniqueId()); if (namePattern.matcher(modifiableString.string()).find()) { modifiableString.replace(TextReplacementConfig.builder() - .once() - .match(namePattern) - .replacement(mention.append(onlinePlayerUser.getDisplayName())) - .build()); + .once() + .match(namePattern) + .replacement(mention.append(onlinePlayerUser.getDisplayName())) + .build()); //TODO replace all instances of \name with just name but using the match result so the capitalization doesn't change // modifiableString.replace(TextReplacementConfig.builder() // .once() @@ -161,24 +166,24 @@ public class ChatListener implements Listener { // }); if (!ChatUserManager.getChatUser(onlinePlayer.getUniqueId()).getIgnoredPlayers().contains(player.getUniqueId()) - || player.hasPermission("chat.ignorebypass")) { + || player.hasPermission("chat.ignorebypass")) { playersToPing.add(onlinePlayer); } } else if (nickPattern.matcher(modifiableString.string()).find()) { modifiableString.replace(TextReplacementConfig.builder() - .once() - .match(nickPattern) - .replacement(mention.append(onlinePlayerUser.getDisplayName())) - .build()); + .once() + .match(nickPattern) + .replacement(mention.append(onlinePlayerUser.getDisplayName())) + .build()); if (!ChatUserManager.getChatUser(onlinePlayer.getUniqueId()).getIgnoredPlayers().contains(player.getUniqueId()) - || player.hasPermission("chat.ignorebypass")) { + || player.hasPermission("chat.ignorebypass")) { playersToPing.add(onlinePlayer); } } } } - public @NotNull Component render(@NotNull Player player, @NotNull Component message) { + public @NotNull ComponentLike render(@NotNull Player player, @NotNull Component message) { ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); TagResolver placeholders = TagResolver.resolver( Placeholder.component("sender", user.getDisplayName()), @@ -187,12 +192,12 @@ public class ChatListener implements Listener { Placeholder.component("prefixall", user.getPrefixAll()), Placeholder.component("staffprefix", user.getStaffPrefix()), Placeholder.component("message", message) - ); + ); return Utility.parseMiniMessage(Config.CHATFORMAT, placeholders); } - private Component parseMessageContent(Player player, String rawMessage) { + private ComponentLike parseMessageContent(Player player, String rawMessage) { TagResolver.Builder tagResolver = TagResolver.builder(); Utility.formattingPerms.forEach((perm, pair) -> { @@ -203,7 +208,7 @@ public class ChatListener implements Listener { MiniMessage miniMessage = MiniMessage.builder().tags(tagResolver.build()).build(); Component component = miniMessage.deserialize(Utility.formatText(rawMessage)); - for(ChatFilter chatFilter : RegexManager.getEmoteFilters()) { + for (ChatFilter chatFilter : RegexManager.getEmoteFilters()) { component = component.replaceText( TextReplacementConfig.builder() .times(Config.EMOTELIMIT) @@ -213,11 +218,11 @@ public class ChatListener implements Listener { component = component .replaceText( - TextReplacementConfig.builder() - .once() - .matchLiteral("[i]") - .replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand())) - .build()); + TextReplacementConfig.builder() + .once() + .matchLiteral("[i]") + .replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand())) + .build()); return component; diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java b/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java index d571512..80a6679 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/PluginMessage.java @@ -5,17 +5,18 @@ import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.managers.PartyManager; +import com.alttd.chat.objects.ChatUser; import com.alttd.chat.objects.Party; import com.alttd.chat.objects.PartyUser; import com.alttd.chat.objects.channels.Channel; import com.alttd.chat.objects.channels.CustomChannel; -import com.alttd.chat.objects.ChatUser; import com.alttd.chat.util.ALogger; import com.alttd.chat.util.ServerName; import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.Sound; @@ -50,8 +51,9 @@ public class PluginMessage implements PluginMessageListener { player.sendMessage(GsonComponentSerializer.gson().deserialize(message)); player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1, 1); // todo load this from config ChatUser user = ChatUserManager.getChatUser(uuid); - if (!user.getReplyContinueTarget().equalsIgnoreCase(target)) + if (!user.getReplyContinueTarget().equalsIgnoreCase(target)) { user.setReplyTarget(target); + } } } case "privatemessageout": { @@ -67,13 +69,15 @@ public class PluginMessage implements PluginMessageListener { if (isTargetNotIgnored(chatUser, targetuuid)) { chatUser.setReplyTarget(target); player.sendMessage(GsonComponentSerializer.gson().deserialize(message)); -// ChatUser user = ChatUserManager.getChatUser(uuid); -// user.setReplyTarget(target); + // ChatUser user = ChatUserManager.getChatUser(uuid); + // user.setReplyTarget(target); } break; } case "globalchat": { - if (!ChatPlugin.getInstance().serverGlobalChatEnabled() || ChatPlugin.getInstance().serverMuted()) break; + if (!ChatPlugin.getInstance().serverGlobalChatEnabled() || ChatPlugin.getInstance().serverMuted()) { + break; + } UUID uuid = UUID.fromString(in.readUTF()); String message = in.readUTF(); @@ -90,7 +94,7 @@ public class PluginMessage implements PluginMessageListener { ChatUser chatUser = ChatUserManager.getChatUser(UUID.fromString(in.readUTF())); UUID targetUUID = UUID.fromString(in.readUTF()); - if(!chatUser.getIgnoredPlayers().contains(targetUUID)) { + if (!chatUser.getIgnoredPlayers().contains(targetUUID)) { chatUser.addIgnoredPlayers(targetUUID); } break; @@ -101,12 +105,14 @@ public class PluginMessage implements PluginMessageListener { break; } case "chatchannel": { - if (ChatPlugin.getInstance().serverMuted()) break; + if (ChatPlugin.getInstance().serverMuted()) { + break; + } chatChannel(in); break; } - case "tmppartyupdate" : { + case "tmppartyupdate": { int id = Integer.parseInt(in.readUTF()); new BukkitRunnable() { @Override @@ -128,8 +134,8 @@ public class PluginMessage implements PluginMessageListener { @Override public void run() { PartyUser user = party.getPartyUser(uuid); - if(user != null) { - Component component = Utility.parseMiniMessage("* " + user.getPlayerName() + " logged in to Altitude."); + if (user != null) { + ComponentLike component = Utility.parseMiniMessage("* " + user.getPlayerName() + " logged in to Altitude."); Bukkit.getOnlinePlayers().stream() .filter(p -> party.getPartyUsersUuid().contains(p.getUniqueId())) @@ -152,8 +158,8 @@ public class PluginMessage implements PluginMessageListener { @Override public void run() { PartyUser user = party.getPartyUser(uuid); - if(user != null) { - Component component = Utility.parseMiniMessage("* " + user.getPlayerName() + " logged out of Altitude."); + if (user != null) { + ComponentLike component = Utility.parseMiniMessage("* " + user.getPlayerName() + " logged out of Altitude."); Bukkit.getOnlinePlayers().stream() .filter(p -> party.getPartyUsersUuid().contains(p.getUniqueId())) @@ -171,7 +177,9 @@ public class PluginMessage implements PluginMessageListener { UUID uuid = UUID.fromString(in.readUTF()); boolean mute = in.readBoolean(); ChatUser user = ChatUserManager.getChatUser(uuid); - if (user == null) return; + if (user == null) { + return; + } user.setMuted(mute); break; default: @@ -187,8 +195,8 @@ public class PluginMessage implements PluginMessageListener { chatChannel = (CustomChannel) Channel.getChatChannel(in.readUTF()); uuid = UUID.fromString(in.readUTF()); component = GsonComponentSerializer.gson().deserialize(in.readUTF()); - } catch (Exception e) { //Idk the exception for reading too far into in.readUTF() - e.printStackTrace(); + } catch (Exception e) { + ALogger.error("Failed to read ChatChannel message.", e); } if (chatChannel == null) { diff --git a/galaxy/src/main/java/com/alttd/chat/nicknames/NickUtilities.java b/galaxy/src/main/java/com/alttd/chat/nicknames/NickUtilities.java index 35b1ac4..b4db903 100644 --- a/galaxy/src/main/java/com/alttd/chat/nicknames/NickUtilities.java +++ b/galaxy/src/main/java/com/alttd/chat/nicknames/NickUtilities.java @@ -4,100 +4,21 @@ import com.alttd.chat.ChatPlugin; import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; import com.alttd.chat.objects.Nick; +import com.alttd.chat.util.ALogger; import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; -import net.kyori.adventure.text.TextComponent; -import net.kyori.adventure.text.format.TextColor; -import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import net.kyori.adventure.text.serializer.legacy.LegacyFormat; -import net.md_5.bungee.api.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; -import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; -import java.util.ArrayList; import java.util.UUID; -public class NickUtilities -{ +public class NickUtilities { public static String stringRegen; - - public static String applyColor(String message) { - ChatColor hexColor1 = null; - ChatColor hexColor2; - StringBuilder stringBuilder = new StringBuilder(); - message = ChatColor.translateAlternateColorCodes('&', message); - boolean startsWithColor = false; - boolean lastColorMatters = false; - if (message.matches(".*" + NickUtilities.stringRegen + ".*")) { - String[] split = message.split(NickUtilities.stringRegen); - - ArrayList list = new ArrayList<>(); - int nextIndex = 0; - if (message.indexOf("}") <= 11) { - startsWithColor = true; - list.add(message.substring(0, message.indexOf("}") + 1)); - } - for (String s : split) { - nextIndex += s.length(); - int tmp = message.indexOf("}", nextIndex); - if (tmp < message.length() && tmp>=0) { - list.add(message.substring(nextIndex, tmp + 1)); - nextIndex = tmp + 1; - } - } - - int i; - boolean firstLoop = true; - if (startsWithColor) { - i = -1; - } else { - i = 0; - stringBuilder.append(split[i]); - } - - for (String s : list) { - boolean lesser = s.contains("<"); - boolean bigger = s.contains(">"); - - if (bigger && lesser) { - hexColor2 = ChatColor.of(s.substring(1, s.length() - 3)); - } else if (bigger || lesser) { - hexColor2 = ChatColor.of(s.substring(1, s.length() - 2)); - } else { - hexColor2 = ChatColor.of(s.substring(1, s.length() -1)); - } - - if (firstLoop) { - lastColorMatters = bigger; - hexColor1 = hexColor2; - firstLoop = false; - i++; - continue; - } - - if (lesser && lastColorMatters) { - stringBuilder.append(hexGradient(hexColor1.getColor(), hexColor2.getColor(), split[i])); - } else { - stringBuilder.append(hexColor1).append(split[i]); - } - - hexColor1 = hexColor2; - lastColorMatters = bigger; - i++; - } - if (split.length > i){ - stringBuilder.append(hexColor1).append(split[i]); - } - } - return stringBuilder.length()==0 ? message : stringBuilder.toString(); - } - public static String removeAllColors(String string) { for (final String colorCodes : Config.NICK_ALLOWED_COLOR_CODESLIST) { @@ -111,34 +32,11 @@ public class NickUtilities NickUtilities.stringRegen = "\\{#[A-Fa-f0-9]{6}(<)?(>)?}"; } - public static String hexGradient(Color color1, Color color2, String text){ - double r = color1.getRed(); - double g = color1.getGreen(); - double b = color1.getBlue(); - - double rDifference = (color1.getRed() - color2.getRed()) / ((double) text.length() - 1); - double gDifference = (color1.getGreen() - color2.getGreen()) / ((double) text.length() - 1); - double bDifference = (color1.getBlue() - color2.getBlue()) / ((double) text.length() - 1); - - StringBuilder stringBuilder = new StringBuilder(); - char[] chars = text.toCharArray(); - for (int i = 0; i < text.length(); i++) { - if (i > 0) { - r = r - rDifference; - g = g - gDifference; - b = b - bDifference; - } - stringBuilder.append(ChatColor.of(new Color((int) r, (int) g, (int) b))).append(chars[i]); - } - - return stringBuilder.toString(); - } - public static void updateCache() { - if (!Nicknames.getInstance().nickCacheUpdate.isEmpty()){ - Nicknames.getInstance().nickCacheUpdate.forEach(uuid ->{ + if (!Nicknames.getInstance().nickCacheUpdate.isEmpty()) { + Nicknames.getInstance().nickCacheUpdate.forEach(uuid -> { Nick nick = Queries.getNick(uuid); - if (nick == null){ + if (nick == null) { Nicknames.getInstance().NickCache.remove(uuid); } else { Nicknames.getInstance().NickCache.put(uuid, nick); @@ -174,13 +72,13 @@ public class NickUtilities return true; } - for (Nick nick : Nicknames.getInstance().NickCache.values()){ + for (Nick nick : Nicknames.getInstance().NickCache.values()) { if (!nick.getUuid().equals(target.getUniqueId()) - && ((nick.getCurrentNickNoColor() != null && nick.getCurrentNickNoColor().equalsIgnoreCase(cleanNick)) - || (nick.getNewNickNoColor() != null && nick.getNewNickNoColor().equalsIgnoreCase(cleanNick)))){ + && ((nick.getCurrentNickNoColor() != null && nick.getCurrentNickNoColor().equalsIgnoreCase(cleanNick)) + || (nick.getNewNickNoColor() != null && nick.getNewNickNoColor().equalsIgnoreCase(cleanNick)))) { UUID uuid = nick.getUuid(); UUID uniqueId = target.getUniqueId(); - if (uniqueId.equals(uuid)){ + if (uniqueId.equals(uuid)) { ChatPlugin.getInstance().getLogger().info(uuid + " " + uniqueId); } sender.sendRichMessage(Config.NICK_TAKEN); @@ -204,16 +102,16 @@ public class NickUtilities public static void bungeeMessageHandled(UUID uniqueId, Player player, String channel) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); -// out.writeUTF("Forward"); // So BungeeCord knows to forward it -// out.writeUTF("ALL"); + // out.writeUTF("Forward"); // So BungeeCord knows to forward it + // out.writeUTF("ALL"); out.writeUTF("NickName" + channel); // The channel name to check if this your data ByteArrayOutputStream msgbytes = new ByteArrayOutputStream(); DataOutputStream msgout = new DataOutputStream(msgbytes); try { msgout.writeUTF(uniqueId.toString()); - } catch (IOException exception){ - exception.printStackTrace(); + } catch (IOException exception) { + ALogger.error("Failed to write UUID to byte array", exception); return; } byte[] bytes = msgbytes.toByteArray(); diff --git a/galaxy/src/main/java/com/alttd/chat/nicknames/Nicknames.java b/galaxy/src/main/java/com/alttd/chat/nicknames/Nicknames.java index 85bc0f3..82613fa 100644 --- a/galaxy/src/main/java/com/alttd/chat/nicknames/Nicknames.java +++ b/galaxy/src/main/java/com/alttd/chat/nicknames/Nicknames.java @@ -8,6 +8,7 @@ import com.alttd.chat.events.NickEvent; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.objects.ChatUser; import com.alttd.chat.objects.Nick; +import com.alttd.chat.util.ALogger; import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; @@ -21,7 +22,6 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; import org.jetbrains.annotations.NotNull; @@ -47,7 +47,7 @@ public class Nicknames implements CommandExecutor, TabCompleter { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) { if (sender instanceof Player player) { if (args.length == 0) { - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.ALL))); + sender.sendRichMessage(helpMessage(sender, HelpType.ALL)); return true; } switch (args[0].toLowerCase()) { @@ -60,10 +60,10 @@ public class Nicknames implements CommandExecutor, TabCompleter { if (offlinePlayer.isOnline() || offlinePlayer.hasPlayedBefore()) { handleNick(player, offlinePlayer, args[2]); } else { - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.SET_OTHERS))); + sender.sendRichMessage(helpMessage(sender, HelpType.SET_OTHERS)); } } else if (args.length > 3) { - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.SET_SELF, HelpType.SET_OTHERS))); + sender.sendRichMessage(helpMessage(sender, HelpType.SET_SELF, HelpType.SET_OTHERS)); } break; case "review": @@ -72,7 +72,7 @@ public class Nicknames implements CommandExecutor, TabCompleter { ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance()); nicknamesGui.openInventory(player); } else { - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.REVIEW))); + sender.sendRichMessage(helpMessage(sender, HelpType.REVIEW)); } break; case "request": @@ -84,7 +84,7 @@ public class Nicknames implements CommandExecutor, TabCompleter { } }.runTaskAsynchronously(ChatPlugin.getInstance()); } else { - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.REQUEST))); + sender.sendRichMessage(helpMessage(sender, HelpType.REQUEST)); } break; case "try": @@ -92,17 +92,17 @@ public class Nicknames implements CommandExecutor, TabCompleter { LuckPerms api = ChatAPI.get().getLuckPerms(); if (api != null) { if (NickUtilities.validNick(player, player, args[1])) { - sender.sendMessage(Utility.parseMiniMessage(Config.NICK_TRYOUT, - Placeholder.component("prefix", Utility.applyColor(api.getUserManager().getUser(player.getUniqueId()) - .getCachedData().getMetaData().getPrefix())), // TODO pull this from chatuser? - Placeholder.component("nick", Utility.applyColor(args[1])), - Placeholder.unparsed("nickrequest", args[1]))); + sender.sendRichMessage(Config.NICK_TRYOUT, + Placeholder.component("prefix", Utility.applyColor(api.getUserManager().getUser(player.getUniqueId()) + .getCachedData().getMetaData().getPrefix())), // TODO pull this from chatuser? + Placeholder.component("nick", Utility.applyColor(args[1])), + Placeholder.unparsed("nickrequest", args[1])); } } else { - sender.sendMessage(Utility.parseMiniMessage(Config.NICK_NO_LUCKPERMS)); + sender.sendRichMessage(Config.NICK_NO_LUCKPERMS); } } else { - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.TRY))); + sender.sendRichMessage(helpMessage(sender, HelpType.TRY)); } break; case "current": @@ -111,16 +111,16 @@ public class Nicknames implements CommandExecutor, TabCompleter { TagResolver placeholders = TagResolver.resolver( Placeholder.component("nickname", chatUser.getDisplayName()), Placeholder.parsed("currentnickname", chatUser.getNickNameString()) - ); + ); player.sendRichMessage(Config.NICK_CURRENT, placeholders); } break; case "help": - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.ALL) - + "For more info on nicknames and how to use rgb colors go to: https://alttd.com/nicknames")); + sender.sendRichMessage(helpMessage(sender, HelpType.ALL) + + "For more info on nicknames and how to use rgb colors go to: https://alttd.com/nicknames"); break; default: - sender.sendMessage(Utility.parseMiniMessage(helpMessage(sender, HelpType.ALL))); + sender.sendRichMessage(helpMessage(sender, HelpType.ALL)); } } else { sender.sendMessage("Console commands are disabled."); @@ -131,7 +131,9 @@ public class Nicknames implements CommandExecutor, TabCompleter { @Override public List onTabComplete(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { List completions = new ArrayList<>(); - if (!sender.hasPermission("chat.command.nick")) return completions; + if (!sender.hasPermission("chat.command.nick")) { + return completions; + } if (args.length == 1) { List choices = new ArrayList<>(); @@ -191,15 +193,15 @@ public class Nicknames implements CommandExecutor, TabCompleter { long waitTime = Config.NICK_WAIT_TIME; if (timeSinceLastChange > waitTime || player.hasPermission("chat.command.nick.bypasswaittime")) { if (nick.hasRequest()) { - player.sendMessage(Utility.parseMiniMessage(Config.NICK_REQUEST_PLACED, - Placeholder.component("oldrequestednick", Utility.applyColor(nick.getNewNick())), - Placeholder.component("newrequestednick", Utility.applyColor(nickName)))); + player.sendRichMessage(Config.NICK_REQUEST_PLACED, + Placeholder.component("oldrequestednick", Utility.applyColor(nick.getNewNick())), + Placeholder.component("newrequestednick", Utility.applyColor(nickName))); } nick.setNewNick(nickName); nick.setRequestedDate(new Date().getTime()); } else { - player.sendMessage(Utility.parseMiniMessage(Config.NICK_TOO_SOON, - Placeholder.unparsed("time", formatTime((timeSinceLastChange-waitTime)*-1)))); + player.sendRichMessage(Config.NICK_TOO_SOON, + Placeholder.unparsed("time", formatTime((timeSinceLastChange - waitTime) * -1))); return; } } else { @@ -207,8 +209,8 @@ public class Nicknames implements CommandExecutor, TabCompleter { } Queries.newNicknameRequest(uniqueId, nickName); bungeeMessageRequest(player); - player.sendMessage(Utility.parseMiniMessage(Config.NICK_REQUESTED, - Placeholder.component("nick", Utility.applyColor(nickName)))); + player.sendRichMessage(Config.NICK_REQUESTED, + Placeholder.component("nick", Utility.applyColor(nickName))); } private void bungeeMessageRequest(Player player) { @@ -216,8 +218,8 @@ public class Nicknames implements CommandExecutor, TabCompleter { UUID uniqueId = player.getUniqueId(); -// out.writeUTF("Forward"); // So BungeeCord knows to forward it -// out.writeUTF("ALL"); + // out.writeUTF("Forward"); // So BungeeCord knows to forward it + // out.writeUTF("ALL"); out.writeUTF("NickNameRequest"); // The channel name to check if this your data ByteArrayOutputStream msgbytes = new ByteArrayOutputStream(); @@ -225,7 +227,7 @@ public class Nicknames implements CommandExecutor, TabCompleter { try { msgout.writeUTF(uniqueId.toString()); } catch (IOException exception) { - exception.printStackTrace(); + ALogger.error("Failed to write UUID to ByteArrayOutputStream", exception); return; } byte[] bytes = msgbytes.toByteArray(); @@ -244,13 +246,13 @@ public class Nicknames implements CommandExecutor, TabCompleter { long days = (timeInMillis / (1000 * 60 * 60 * 24)); StringBuilder stringBuilder = new StringBuilder(); - if (days!=0) { + if (days != 0) { stringBuilder.append(days).append(" days "); } - if (days!=0 || hour!=0) { + if (days != 0 || hour != 0) { stringBuilder.append(hour).append(" hours "); } - if (days!=0 || hour!=0 || minute != 0) { + if (days != 0 || hour != 0 || minute != 0) { stringBuilder.append(minute).append(" minutes and "); } stringBuilder.append(second).append(" seconds"); @@ -262,22 +264,22 @@ public class Nicknames implements CommandExecutor, TabCompleter { try { if (target.isOnline()) { - resetNick(target.getPlayer()); + resetNick(Objects.requireNonNull(target.getPlayer())); } Queries.removePlayerFromDataBase(target.getUniqueId()); NickCache.remove(target.getUniqueId()); nickCacheUpdate.add(target.getUniqueId()); } catch (SQLException e) { - e.printStackTrace(); + ALogger.error("Failed to remove nickname from database", e); } if (!sender.equals(target)) { - sender.sendMessage(Utility.parseMiniMessage(Config.NICK_RESET_OTHERS, - Placeholder.unparsed("player", target.getName()))); + sender.sendRichMessage(Config.NICK_RESET_OTHERS, + Placeholder.unparsed("player", Objects.requireNonNull(target.getName()))); } if (target.isOnline() && target.getPlayer() != null) { - target.getPlayer().sendMessage(Utility.parseMiniMessage(Config.NICK_RESET)); + target.getPlayer().sendRichMessage(Config.NICK_RESET); } NickEvent nickEvent = new NickEvent(sender.getName(), target.getName(), null, NickEvent.NickEventType.RESET); @@ -305,17 +307,19 @@ public class Nicknames implements CommandExecutor, TabCompleter { if (!sender.equals(target)) { sender.sendMessage(Utility.parseMiniMessage(Config.NICK_CHANGED_OTHERS, - Placeholder.unparsed("targetplayer", target.getName()), - Placeholder.unparsed("nickname", nickName))); + Placeholder.unparsed("targetplayer", Objects.requireNonNull(target.getName())), + Placeholder.unparsed("nickname", nickName))); if (target.isOnline()) { - target.getPlayer().sendMessage(Utility.parseMiniMessage(Config.NICK_TARGET_NICK_CHANGE, - Placeholder.unparsed("nickname", getNick(target.getPlayer())), - Placeholder.unparsed("sendernick", getNick(sender)), - Placeholder.unparsed("player", target.getName()))); + Objects.requireNonNull(target.getPlayer()) + .sendRichMessage(Config.NICK_TARGET_NICK_CHANGE, + Placeholder.unparsed("nickname", getNick(target.getPlayer())), + Placeholder.unparsed("sendernick", getNick(sender)), + Placeholder.unparsed("player", target.getName())); } } else if (target.isOnline()) { - target.getPlayer().sendMessage(Utility.parseMiniMessage(Config.NICK_CHANGED, - Placeholder.unparsed("nickname", getNick(target.getPlayer())))); + Objects.requireNonNull(target.getPlayer()) + .sendRichMessage(Config.NICK_CHANGED, + Placeholder.unparsed("nickname", getNick(target.getPlayer()))); } } } @@ -353,8 +357,10 @@ public class Nicknames implements CommandExecutor, TabCompleter { break; case REQUEST: if (sender.hasPermission("chat.command.nick.request")) { - message.append("/nick request - Requests a username to be reviewed by staff.\n" + - " Try using /nick try to see if you like the name, you can only change it once per day!\n"); + message.append(""" + /nick request - Requests a username to be reviewed by staff. + Try using /nick try to see if you like the name, you can only change it once per day! + """); } break; case REVIEW: @@ -381,8 +387,8 @@ public class Nicknames implements CommandExecutor, TabCompleter { public void resetNick(final Player player) { ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); user.setDisplayName(player.getName()); - player.displayName(user.getDisplayName()); -// updateCMIUser(player, null); + player.displayName(user.getDisplayName().asComponent()); + // updateCMIUser(player, null); } public String getNick(final Player player) { @@ -391,42 +397,13 @@ public class Nicknames implements CommandExecutor, TabCompleter { } public void setNick(final Player player, final String nickName) { - if (player == null) + if (player == null) { return; + } ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); user.setDisplayName(nickName); - player.displayName(user.getDisplayName()); -// updateCMIUser(player, nickName); - } - -// public static String format(final String m) { -// return NickUtilities.applyColor(m); -// } - -// public void updateCMIUser(Player player, String nickName) { -// if (!isCMIEnabled()) -// return; -// -// CMIUser cmiUser = CMI.getInstance().getPlayerManager().getUser(player); -// if (nickName == null){ -// cmiUser.setNickName(null, true); -// } else { -// cmiUser.setNickName(NickUtilities.applyColor(nickName), true); -// } -// cmiUser.updateDisplayName(); -// } - - private Boolean isCMIEnabled = null; - private Boolean isCMIEnabled() { - if (!(isCMIEnabled == null)) - return isCMIEnabled; - - Plugin plugin = Bukkit.getPluginManager().getPlugin("CMI"); - if (plugin != null && plugin.isEnabled()) - return isCMIEnabled = true; - - return isCMIEnabled = false; + player.displayName(user.getDisplayName().asComponent()); } public static Nicknames getInstance() { diff --git a/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesEvents.java b/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesEvents.java index 537177a..71ed212 100644 --- a/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesEvents.java +++ b/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesEvents.java @@ -5,9 +5,11 @@ import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; import com.alttd.chat.objects.Nick; import com.alttd.chat.util.ALogger; +import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -29,7 +31,6 @@ import java.util.UUID; public class NicknamesEvents implements Listener, PluginMessageListener { - @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onPlayerJoin(PlayerJoinEvent e) { @@ -54,9 +55,9 @@ public class NicknamesEvents implements Listener, PluginMessageListener { strippedNick = MiniMessage.miniMessage().stripTags(Nicknames.getInstance().getNick(player)); } catch (NullPointerException ignored) { } -// final String strippedNick = CMIChatColor.stripColor(Nicknames.getInstance().getNick(player)); + // final String strippedNick = CMIChatColor.stripColor(Nicknames.getInstance().getNick(player)); -// final String cmiNick = Util.CMIChatColor.deColorize(Nicknames.getInstance().getNick(player)); + // final String cmiNick = Util.CMIChatColor.deColorize(Nicknames.getInstance().getNick(player)); if (nickName == null) { Nicknames.getInstance().resetNick(player); @@ -75,8 +76,8 @@ public class NicknamesEvents implements Listener, PluginMessageListener { } if (i > 0) { - player.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_REQUESTS_ON_LOGIN, - Placeholder.unparsed("amount", String.valueOf(i)))); + player.sendRichMessage(Config.NICK_REQUESTS_ON_LOGIN, + Placeholder.unparsed("amount", String.valueOf(i))); } } } @@ -93,7 +94,7 @@ public class NicknamesEvents implements Listener, PluginMessageListener { String subChannel = in.readUTF(); ALogger.info(channel + ": " + subChannel); if (!subChannel.equals("NickNameRequest") && !subChannel.equals("NickNameAccepted") - && !subChannel.equals("NickNameDenied") && !subChannel.equals("NickNameSet")) { + && !subChannel.equals("NickNameDenied") && !subChannel.equals("NickNameSet")) { return; } UUID playerUUID; @@ -110,18 +111,18 @@ public class NicknamesEvents implements Listener, PluginMessageListener { name = offlinePlayer.getName() == null ? playerUUID.toString() : offlinePlayer.getName(); } catch (Exception e) { - e.printStackTrace(); + ALogger.error("Failed to read plugin message", e); return; } MiniMessage miniMessage = MiniMessage.miniMessage(); switch (subChannel) { case "NickNameRequest": - Component component = miniMessage.deserialize(Config.NICK_REQUEST_NEW, Placeholder.parsed("player", name)) + ComponentLike component = miniMessage.deserialize(Config.NICK_REQUEST_NEW, Placeholder.parsed("player", name)) .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, - "/nick review")) + "/nick review")) .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, - miniMessage.deserialize("Click this text to review the request!"))); + miniMessage.deserialize("Click this text to review the request!"))); ChatPlugin.getInstance().getServer().getOnlinePlayers().forEach(p -> { if (p.hasPermission("chat.command.nick.review")) { @@ -138,8 +139,9 @@ public class NicknamesEvents implements Listener, PluginMessageListener { } break; case "NickNameAccepted": - Component deserialize = miniMessage.deserialize("'s nickname was accepted!", - Placeholder.unparsed("name", name)); + + ComponentLike deserialize = Utility.parseMiniMessage("'s nickname was accepted!", + Placeholder.unparsed("name", name)); ChatPlugin.getInstance().getServer().getOnlinePlayers().forEach(p -> { if (p.hasPermission("chat.command.nick.review")) { p.sendMessage(deserialize); @@ -153,14 +155,14 @@ public class NicknamesEvents implements Listener, PluginMessageListener { Player target = Bukkit.getPlayer(playerUUID); if (target != null && nick != null && nick.getCurrentNick() != null) { Nicknames.getInstance().setNick(target, nick.getCurrentNick()); - target.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_CHANGED, - Placeholder.unparsed("nickname", nick.getCurrentNick()))); + target.sendRichMessage(Config.NICK_CHANGED, + Placeholder.unparsed("nickname", nick.getCurrentNick())); } } break; case "NickNameDenied": final Component messageDenied = miniMessage.deserialize("'s nickname was denied", - Placeholder.unparsed("name", name)); + Placeholder.unparsed("name", name)); Nick nick = Nicknames.getInstance().NickCache.get(playerUUID); ChatPlugin.getInstance().getServer().getOnlinePlayers().forEach(p -> { @@ -181,9 +183,11 @@ public class NicknamesEvents implements Listener, PluginMessageListener { if (offlinePlayer.isOnline()) { Player target = Bukkit.getPlayer(playerUUID); - if (target == null) break; - target.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_NOT_CHANGED, - Placeholder.unparsed("nickname", nick.getCurrentNick()))); + if (target == null) { + break; + } + target.sendRichMessage(Config.NICK_NOT_CHANGED, + Placeholder.unparsed("nickname", nick.getCurrentNick())); } break; } diff --git a/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesGui.java b/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesGui.java index 8c8a746..1f1feac 100644 --- a/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesGui.java +++ b/galaxy/src/main/java/com/alttd/chat/nicknames/NicknamesGui.java @@ -7,6 +7,7 @@ import com.alttd.chat.events.NickEvent; import com.alttd.chat.objects.Nick; import com.alttd.chat.util.Utility; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; @@ -40,7 +41,7 @@ public class NicknamesGui implements Listener { public NicknamesGui() { // Create a new inventory, with no owner (as this isn't a real inventory) - inv = Bukkit.createInventory(null, 36, Utility.parseMiniMessage("Nicknames GUI")); + inv = Bukkit.createInventory(null, 36, Utility.parseMiniMessage("Nicknames GUI").asComponent()); // Put the items into the inventory currentPage = 1; @@ -71,14 +72,14 @@ public class NicknamesGui implements Listener { if (currentPage != 1) { inv.setItem(28, createGuiItem(Material.PAPER, "§bPrevious page", - "§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)), - "§aPrevious page: %previousPage%".replace("%previousPage%", String.valueOf(currentPage - 1)))); + "§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)), + "§aPrevious page: %previousPage%".replace("%previousPage%", String.valueOf(currentPage - 1)))); } if (hasNextPage) { inv.setItem(36, createGuiItem(Material.PAPER, "§bNext page", - "§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)), - "§aNext page: §b%nextPage%".replace("%nextPage%", String.valueOf(currentPage + 1)))); + "§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)), + "§aNext page: §b%nextPage%".replace("%nextPage%", String.valueOf(currentPage + 1)))); } } }.runTaskAsynchronously(ChatPlugin.getInstance()); @@ -92,10 +93,11 @@ public class NicknamesGui implements Listener { meta.setOwningPlayer(offlinePlayer); String name = offlinePlayer.getName(); - if (name == null) + if (name == null) { meta.displayName(miniMessage.deserialize("UNKNOWN PLAYER NAME")); - else + } else { meta.displayName(miniMessage.deserialize(offlinePlayer.getName())); + } TagResolver resolver = TagResolver.resolver( Placeholder.component("newnick", Utility.applyColor(nick.getNewNick())), @@ -132,30 +134,42 @@ public class NicknamesGui implements Listener { // Check for clicks on items @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onInventoryClick(InventoryClickEvent e) { - if (e.getInventory() != inv) return; + if (e.getInventory() != inv) { + return; + } e.setCancelled(true); final ItemStack clickedItem = e.getCurrentItem(); - if (clickedItem == null || clickedItem.getType() == Material.AIR) return; + if (clickedItem == null || clickedItem.getType() == Material.AIR) { + return; + } final Player p = (Player) e.getWhoClicked(); if (clickedItem.getType().equals(Material.PAPER)) { - String serialize = PlainTextComponentSerializer.plainText().serialize(clickedItem.getItemMeta().displayName()); + Component component = clickedItem.getItemMeta().displayName(); + if (component == null) { + throw new IllegalStateException("Nicknames GUI: Item with no display name clicked!"); + } + String serialize = PlainTextComponentSerializer.plainText().serialize(component); if (serialize.equals("Next Page")) { setItems(currentPage + 1); } } else if (clickedItem.getType().equals(Material.PLAYER_HEAD)) { - SkullMeta meta = (SkullMeta) clickedItem.getItemMeta(); + ItemMeta itemMeta = clickedItem.getItemMeta(); + if (itemMeta == null) { + return; + } + SkullMeta meta = (SkullMeta) itemMeta; if (meta.hasEnchants()) { return; } OfflinePlayer owningPlayer = meta.getOwningPlayer(); if (owningPlayer == null) { - p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_USER_NOT_FOUND)); + p.sendRichMessage(Config.NICK_USER_NOT_FOUND); return; } @@ -171,10 +185,15 @@ public class NicknamesGui implements Listener { } else { nick = Queries.getNick(uniqueId); } + Component itemDisplayName = itemMeta.displayName(); + if (itemDisplayName == null) { + return; + } if (nick == null || !nick.hasRequest()) { - p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_ALREADY_HANDLED, - Placeholder.component("targetplayer", clickedItem.getItemMeta().displayName()))); + p.sendRichMessage(Config.NICK_ALREADY_HANDLED, + Placeholder.component("targetplayer", itemDisplayName)) + ; return; } @@ -187,20 +206,18 @@ public class NicknamesGui implements Listener { new BukkitRunnable() { @Override public void run() { - NickEvent nickEvent = new NickEvent(e.getWhoClicked().getName(), clickedItem.getItemMeta().getDisplayName(), newNick, NickEvent.NickEventType.ACCEPTED); + NickEvent nickEvent = new NickEvent(e.getWhoClicked().getName(), itemMeta.getDisplayName(), newNick, NickEvent.NickEventType.ACCEPTED); nickEvent.callEvent(); } }.runTask(ChatPlugin.getInstance()); - p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_ACCEPTED, - Placeholder.component("targetplayer", clickedItem.getItemMeta().displayName()), - Placeholder.component("newnick", Utility.applyColor(nick.getNewNick())), - Placeholder.component("oldnick", Utility.applyColor(nick.getCurrentNick() == null ? clickedItem.getItemMeta().getDisplayName() : nick.getCurrentNick())))); + p.sendRichMessage(Config.NICK_ACCEPTED, + Placeholder.component("targetplayer", itemDisplayName), + Placeholder.component("newnick", Utility.applyColor(nick.getNewNick())), + Placeholder.component("oldnick", Utility.applyColor(nick.getCurrentNick() == null ? itemMeta.getDisplayName() : nick.getCurrentNick()))); if (owningPlayer.isOnline() && owningPlayer.getPlayer() != null) { Nicknames.getInstance().setNick(owningPlayer.getPlayer(), nick.getNewNick()); -// owningPlayer.getPlayer().sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_CHANGED // This message is also send when the plugin message is received -// .replace("%nickname%", nick.getNewNick()))); } NickUtilities.bungeeMessageHandled(uniqueId, e.getWhoClicked().getServer().getPlayer(e.getWhoClicked().getName()), "Accepted"); @@ -214,18 +231,16 @@ public class NicknamesGui implements Listener { ItemStack itemStack = new ItemStack(Material.SKELETON_SKULL); ItemMeta itemMeta = itemStack.getItemMeta(); - itemMeta.displayName(clickedItem.getItemMeta().displayName()); + itemMeta.displayName(itemMeta.displayName()); itemMeta.lore(clickedItem.lore()); itemStack.setItemMeta(itemMeta); e.getInventory().setItem(e.getSlot(), itemStack); p.updateInventory(); } else { - p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_PLAYER_NOT_ONLINE, - Placeholder.component("playerName", clickedItem.getItemMeta().displayName()))); + p.sendRichMessage(Config.NICK_PLAYER_NOT_ONLINE, Placeholder.component("player", itemDisplayName)); } } else if (e.isRightClick()) { - Component displayName = clickedItem.getItemMeta().displayName(); if (owningPlayer.hasPlayedBefore()) { Queries.denyNewNickname(uniqueId); @@ -234,18 +249,18 @@ public class NicknamesGui implements Listener { new BukkitRunnable() { @Override public void run() { - NickEvent nickEvent = new NickEvent(e.getWhoClicked().getName(), clickedItem.getItemMeta().getDisplayName(), newNick, NickEvent.NickEventType.DENIED); + NickEvent nickEvent = new NickEvent(e.getWhoClicked().getName(), itemMeta.getDisplayName(), newNick, NickEvent.NickEventType.DENIED); nickEvent.callEvent(); } }.runTask(ChatPlugin.getInstance()); p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_DENIED, - Placeholder.unparsed("targetplayer", owningPlayer.getName()), - Placeholder.component("newnick", Utility.applyColor(nick.getNewNick())), - Placeholder.component("oldnick", Utility.applyColor(nick.getCurrentNick() == null ? owningPlayer.getName() : nick.getCurrentNick())))); + Placeholder.unparsed("targetplayer", owningPlayer.getName()), + Placeholder.component("newnick", Utility.applyColor(nick.getNewNick())), + Placeholder.component("oldnick", Utility.applyColor(nick.getCurrentNick() == null ? owningPlayer.getName() : nick.getCurrentNick())))); if (Nicknames.getInstance().NickCache.containsKey(uniqueId) - && Nicknames.getInstance().NickCache.get(uniqueId).getCurrentNick() != null) { + && Nicknames.getInstance().NickCache.get(uniqueId).getCurrentNick() != null) { nick.setNewNick(null); nick.setRequestedDate(0); Nicknames.getInstance().NickCache.put(uniqueId, nick); @@ -255,31 +270,31 @@ public class NicknamesGui implements Listener { if (owningPlayer.isOnline() && owningPlayer.getPlayer() != null) { Nicknames.getInstance().setNick(owningPlayer.getPlayer(), nick.getCurrentNick() == null ? owningPlayer.getName() : nick.getCurrentNick()); - owningPlayer.getPlayer().sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_NOT_CHANGED)); + owningPlayer.getPlayer().sendRichMessage(Config.NICK_NOT_CHANGED); } NickUtilities.bungeeMessageHandled(uniqueId, e.getWhoClicked().getServer().getPlayer(e.getWhoClicked().getName()), "Denied"); - final Component messageDenied = MiniMessage.miniMessage().deserialize("'s nickname was denied!", - Placeholder.unparsed("name", owningPlayer.getName())); + final ComponentLike messageDenied = MiniMessage.miniMessage().deserialize("'s nickname was denied!", + Placeholder.unparsed("name", owningPlayer.getName())); ChatPlugin.getInstance().getServer().getOnlinePlayers().forEach(p -> { if (p.hasPermission("chat.command.nick.review")) { p.sendMessage(messageDenied); } }); - ItemStack itemStack = new ItemStack(Material.SKELETON_SKULL); ItemMeta itemMeta = itemStack.getItemMeta(); - itemMeta.displayName(displayName); + itemMeta.displayName(itemDisplayName); itemMeta.lore(clickedItem.lore()); itemStack.setItemMeta(itemMeta); e.getInventory().setItem(e.getSlot(), itemStack); p.updateInventory(); } else { - if (displayName == null) - p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_PLAYER_NOT_ONLINE, Placeholder.parsed("playerName", "UNKNOWN PLAYER NAME"))); - else - p.sendMessage(MiniMessage.miniMessage().deserialize(Config.NICK_PLAYER_NOT_ONLINE, Placeholder.component("playerName", displayName))); + if (itemDisplayName == null) { + p.sendRichMessage(Config.NICK_PLAYER_NOT_ONLINE, Placeholder.parsed("player", "UNKNOWN PLAYER NAME")); + } else { + p.sendRichMessage(Config.NICK_PLAYER_NOT_ONLINE, Placeholder.component("player", itemDisplayName)); + } } } } diff --git a/galaxy/src/main/java/com/alttd/chat/util/GalaxyUtility.java b/galaxy/src/main/java/com/alttd/chat/util/GalaxyUtility.java index 475b98f..419b8a4 100644 --- a/galaxy/src/main/java/com/alttd/chat/util/GalaxyUtility.java +++ b/galaxy/src/main/java/com/alttd/chat/util/GalaxyUtility.java @@ -2,12 +2,9 @@ package com.alttd.chat.util; import com.alttd.chat.config.Config; import com.alttd.chat.managers.RegexManager; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.TextDecoration; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; -import net.kyori.adventure.text.minimessage.tag.standard.StandardTags; -import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -16,40 +13,22 @@ import java.util.List; public class GalaxyUtility { - public static void sendBlockedNotification(String prefix, Player player, String input, String target) { - TagResolver placeholders = TagResolver.resolver( - Placeholder.parsed("prefix", prefix), - Placeholder.parsed("displayname", Utility.getDisplayName(player.getUniqueId(), player.getName())), - Placeholder.parsed("target", (target.isEmpty() ? "tried to say:" : "-> " + target + ":")), - Placeholder.parsed("input", input) - ); - Component blockedNotification = Utility.parseMiniMessage(Config.NOTIFICATIONFORMAT, placeholders); - - Bukkit.getOnlinePlayers().forEach(a ->{ - if (a.hasPermission("chat.alert-blocked")) { - a.sendMessage(blockedNotification); - } - }); - player.sendMessage(Utility.parseMiniMessage("The language you used in your message is not allowed, " + - "this constitutes as your only warning. Any further attempts at bypassing the filter will result in staff intervention.")); - } - - public static void sendBlockedNotification(String prefix, Player player, Component input, String target) { + public static void sendBlockedNotification(String prefix, Player player, ComponentLike input, String target) { TagResolver placeholders = TagResolver.resolver( Placeholder.parsed("prefix", prefix), Placeholder.parsed("displayname", Utility.getDisplayName(player.getUniqueId(), player.getName())), Placeholder.parsed("target", (target.isEmpty() ? "tried to say:" : "-> " + target + ":")), Placeholder.component("input", input) - ); - Component blockedNotification = Utility.parseMiniMessage(Config.NOTIFICATIONFORMAT, placeholders); + ); + ComponentLike blockedNotification = Utility.parseMiniMessage(Config.NOTIFICATIONFORMAT, placeholders); - Bukkit.getOnlinePlayers().forEach(a ->{ + Bukkit.getOnlinePlayers().forEach(a -> { if (a.hasPermission("chat.alert-blocked")) { a.sendMessage(blockedNotification); } }); - player.sendMessage(Utility.parseMiniMessage("The language you used in your message is not allowed, " + - "this constitutes as your only warning. Any further attempts at bypassing the filter will result in staff intervention.")); + player.sendRichMessage("The language you used in your message is not allowed, " + + "this constitutes as your only warning. Any further attempts at bypassing the filter will result in staff intervention."); } public static void addAdditionalChatCompletions(Player player) { diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/PartyCommand.java b/velocity/src/main/java/com/alttd/velocitychat/commands/PartyCommand.java index 91ca768..3e5dc76 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/PartyCommand.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/PartyCommand.java @@ -7,7 +7,7 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.command.SimpleCommand; import com.velocitypowered.api.proxy.Player; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import java.util.ArrayList; @@ -39,12 +39,13 @@ public class PartyCommand implements SimpleCommand { CommandSource source = invocation.source(); if (args.length < 1) { - if (!source.hasPermission("party.use")) + if (!source.hasPermission("party.use")) { source.sendMessage(Utility.parseMiniMessage(Config.NO_PERMISSION)); - else if (source instanceof Player) + } else if (source instanceof Player) { source.sendMessage(getHelpMessage(source)); - else + } else { source.sendMessage(Utility.parseMiniMessage(Config.NO_CONSOLE)); + } return; } @@ -52,11 +53,12 @@ public class PartyCommand implements SimpleCommand { .filter(subCommand -> subCommand.getName().equalsIgnoreCase(args[0])) .findFirst() .ifPresentOrElse(subCommand -> { - if (source.hasPermission(subCommand.getPermission())) + if (source.hasPermission(subCommand.getPermission())) { subCommand.execute(args, source); - else + } else { source.sendMessage(Utility.parseMiniMessage(Config.NO_PERMISSION)); - }, () -> source.sendMessage(getHelpMessage(source))); + } + }, () -> source.sendMessage(getHelpMessage(source))); } @Override @@ -64,9 +66,9 @@ public class PartyCommand implements SimpleCommand { String[] args = invocation.arguments(); List suggest = new ArrayList<>(); - if (!invocation.source().hasPermission("party.use")) + if (!invocation.source().hasPermission("party.use")) { return suggest; - else if (args.length == 0) { + } else if (args.length == 0) { subCommands.stream() .filter(subCommand -> invocation.source().hasPermission(subCommand.getPermission())) .forEach(subCommand -> suggest.add(subCommand.getName())); @@ -83,10 +85,11 @@ public class PartyCommand implements SimpleCommand { .ifPresent(subCommand -> suggest.addAll(subCommand.suggest(args, invocation.source()))); } - if (args.length == 0) + if (args.length == 0) { return suggest; - else + } else { return finalizeSuggest(suggest, args[args.length - 1]); + } } public List finalizeSuggest(List possibleValues, String remaining) { @@ -101,19 +104,21 @@ public class PartyCommand implements SimpleCommand { return finalValues; } - public Component getHelpMessage(CommandSource source) { + public ComponentLike getHelpMessage(CommandSource source) { StringBuilder stringBuilder = new StringBuilder(); subCommands.stream() .filter(subCommand -> source.hasPermission(subCommand.getPermission())) .forEach(subCommand -> stringBuilder.append(subCommand.getHelpMessage()).append("\n")); - if (source.hasPermission("command.chat.p")) + if (source.hasPermission("command.chat.p")) { stringBuilder.append(Config.PARTY_HELP_CHAT).append("\n"); - if (stringBuilder.length() != 0) + } + if (!stringBuilder.isEmpty()) { stringBuilder.replace(stringBuilder.length() - 1, stringBuilder.length(), ""); + } return Utility.parseMiniMessage(Config.PARTY_HELP_WRAPPER, - Placeholder.component("commands", Utility.parseMiniMessage(stringBuilder.toString())) - ); + Placeholder.component("commands", Utility.parseMiniMessage(stringBuilder.toString())) + ); } -} \ No newline at end of file +} diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/VoteToMuteHelper.java b/velocity/src/main/java/com/alttd/velocitychat/commands/VoteToMuteHelper.java index 4d87162..14b8e20 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/VoteToMuteHelper.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/VoteToMuteHelper.java @@ -16,8 +16,8 @@ import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.server.RegisteredServer; -import jdk.jshell.execution.Util; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import java.time.Duration; @@ -30,7 +30,7 @@ import java.util.stream.IntStream; public class VoteToMuteHelper { - private static final Component prefix = Utility.parseMiniMessage("[VoteMute]"); + private static final Component prefix = Utility.parseMiniMessage("[VoteMute]").asComponent(); public VoteToMuteHelper(ProxyServer proxyServer) { RequiredArgumentBuilder playerNode = RequiredArgumentBuilder @@ -51,8 +51,9 @@ public class VoteToMuteHelper { .map(Player::getUsername) .toList(); - if (possibleValues.isEmpty()) + if (possibleValues.isEmpty()) { return Suggestions.empty(); + } String remaining = builder.getRemaining().toLowerCase(); possibleValues.stream() @@ -82,39 +83,39 @@ public class VoteToMuteHelper { .literal("page") .requires(commandSource -> commandSource.hasPermission("chat.vote-to-mute")) .then(RequiredArgumentBuilder.argument("page number", IntegerArgumentType.integer(1)) - .suggests(((commandContext, suggestionsBuilder) -> { - if (!(commandContext.getSource() instanceof Player player)) { - return suggestionsBuilder.buildFuture(); - } - Optional instance = VoteToMuteStarter.getInstance(player.getUniqueId()); - if (instance.isEmpty()) { - return suggestionsBuilder.buildFuture(); - } - VoteToMuteStarter voteToMuteStarter = instance.get(); - String remaining = suggestionsBuilder.getRemaining().toLowerCase(); - int totalPages = voteToMuteStarter.getTotalPages(); - IntStream.range(1, totalPages + 1) - .mapToObj(String::valueOf) - .filter((String str) -> str.toLowerCase().startsWith(remaining)) - .map(StringArgumentType::escapeIfRequired) - .forEach(suggestionsBuilder::suggest); - return suggestionsBuilder.buildFuture(); - })) - .executes(commandContext -> { - if (!(commandContext.getSource() instanceof Player player)) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("Only players can use this command.")); - return 1; - } - Optional instance = VoteToMuteStarter.getInstance(player.getUniqueId()); - if (instance.isEmpty()) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("You don't have an active vote to mute.")); - return 1; - } - int pageNumber = commandContext.getArgument("page number", Integer.class); - instance.get().showPage(pageNumber); - return 1; - }) - ).executes(commandContext -> { + .suggests(((commandContext, suggestionsBuilder) -> { + if (!(commandContext.getSource() instanceof Player player)) { + return suggestionsBuilder.buildFuture(); + } + Optional instance = VoteToMuteStarter.getInstance(player.getUniqueId()); + if (instance.isEmpty()) { + return suggestionsBuilder.buildFuture(); + } + VoteToMuteStarter voteToMuteStarter = instance.get(); + String remaining = suggestionsBuilder.getRemaining().toLowerCase(); + int totalPages = voteToMuteStarter.getTotalPages(); + IntStream.range(1, totalPages + 1) + .mapToObj(String::valueOf) + .filter((String str) -> str.toLowerCase().startsWith(remaining)) + .map(StringArgumentType::escapeIfRequired) + .forEach(suggestionsBuilder::suggest); + return suggestionsBuilder.buildFuture(); + })) + .executes(commandContext -> { + if (!(commandContext.getSource() instanceof Player player)) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("Only players can use this command.")); + return 1; + } + Optional instance = VoteToMuteStarter.getInstance(player.getUniqueId()); + if (instance.isEmpty()) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("You don't have an active vote to mute.")); + return 1; + } + int pageNumber = commandContext.getArgument("page number", Integer.class); + instance.get().showPage(pageNumber); + return 1; + }) + ).executes(commandContext -> { sendHelpMessage(commandContext.getSource()); return 1; }); @@ -123,53 +124,53 @@ public class VoteToMuteHelper { .literal("messages") .requires(commandSource -> commandSource.hasPermission("chat.vote-to-mute")) .then(RequiredArgumentBuilder.argument("list of messages", StringArgumentType.greedyString()) - .executes(commandContext -> { - if (!(commandContext.getSource() instanceof Player player)) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("Only players can use this command.")); - return 1; - } - Optional instance = VoteToMuteStarter.getInstance(player.getUniqueId()); - if (instance.isEmpty()) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("You don't have an active vote to mute.")); - return 1; - } - String listOfPages = commandContext.getArgument("list of messages", String.class); - if (!listOfPages.matches("([1-9][0-9]*, )*[1-9][0-9]*")) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("Please make sure to format the command correctly.")); - return 1; - } - VoteToMuteStarter voteToMuteStarter = instance.get(); + .executes(commandContext -> { + if (!(commandContext.getSource() instanceof Player player)) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("Only players can use this command.")); + return 1; + } + Optional instance = VoteToMuteStarter.getInstance(player.getUniqueId()); + if (instance.isEmpty()) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("You don't have an active vote to mute.")); + return 1; + } + String listOfPages = commandContext.getArgument("list of messages", String.class); + if (!listOfPages.matches("([1-9][0-9]*, )*[1-9][0-9]*")) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("Please make sure to format the command correctly.")); + return 1; + } + VoteToMuteStarter voteToMuteStarter = instance.get(); - List collect = Arrays.stream(listOfPages.split(", ")) - .map(Integer::parseInt) - .collect(Collectors.toList()); - Optional max = collect.stream().max(Integer::compare); - if (max.isEmpty()) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("Some of your selected messages do not exist.")); - return 1; - } - int highestLogEntry = max.get(); + List collect = Arrays.stream(listOfPages.split(", ")) + .map(Integer::parseInt) + .collect(Collectors.toList()); + Optional max = collect.stream().max(Integer::compare); + if (max.isEmpty()) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("Some of your selected messages do not exist.")); + return 1; + } + int highestLogEntry = max.get(); - if (voteToMuteStarter.getTotalLogEntries() < highestLogEntry) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage("Some of your selected messages do not exist.")); - return 1; - } + if (voteToMuteStarter.getTotalLogEntries() < highestLogEntry) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage("Some of your selected messages do not exist.")); + return 1; + } - Optional currentServer = player.getCurrentServer(); - if (currentServer.isEmpty()) { - sendHelpMessage(commandContext.getSource()); - return 1; - } + Optional currentServer = player.getCurrentServer(); + if (currentServer.isEmpty()) { + sendHelpMessage(commandContext.getSource()); + return 1; + } - Component chatLogs = voteToMuteStarter.getChatLogsAndClose(collect); - RegisteredServer server = currentServer.get().getServer(); - long count = getTotalEligiblePlayers(server, voteToMuteStarter.countLowerRanks()); - new ActiveVoteToMute(voteToMuteStarter.getVotedPlayer(), server, proxyServer, Duration.ofMinutes(5), - (int) count, voteToMuteStarter.countLowerRanks(), chatLogs, player) - .start(); - return 1; - }) - ).executes(commandContext -> { + Component chatLogs = voteToMuteStarter.getChatLogsAndClose(collect); + RegisteredServer server = currentServer.get().getServer(); + long count = getTotalEligiblePlayers(server, voteToMuteStarter.countLowerRanks()); + new ActiveVoteToMute(voteToMuteStarter.getVotedPlayer(), server, proxyServer, Duration.ofMinutes(5), + (int) count, voteToMuteStarter.countLowerRanks(), chatLogs, player) + .start(); + return 1; + }) + ).executes(commandContext -> { sendHelpMessage(commandContext.getSource()); return 1; }); @@ -177,47 +178,48 @@ public class VoteToMuteHelper { LiteralArgumentBuilder voteNode = LiteralArgumentBuilder .literal("vote") .then(playerNode - .then(yesNoNode - .executes(commandContext -> { - if (!(commandContext.getSource() instanceof Player player)) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage( - "Only players are allowed to vote")); - return 1; - } - String playerName = commandContext.getArgument("player", String.class); - Optional optionalActiveVoteToMute = ActiveVoteToMute.getInstance(playerName); - if (optionalActiveVoteToMute.isEmpty()) { - commandContext.getSource().sendMessage(Utility.parseMiniMessage( - "This player does not have an active vote to mute them.")); - return 1; - } - ActiveVoteToMute activeVoteToMute = optionalActiveVoteToMute.get(); + .then(yesNoNode + .executes(commandContext -> { + if (!(commandContext.getSource() instanceof Player player)) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage( + "Only players are allowed to vote")); + return 1; + } + String playerName = commandContext.getArgument("player", String.class); + Optional optionalActiveVoteToMute = ActiveVoteToMute.getInstance(playerName); + if (optionalActiveVoteToMute.isEmpty()) { + commandContext.getSource().sendMessage(Utility.parseMiniMessage( + "This player does not have an active vote to mute them.")); + return 1; + } + ActiveVoteToMute activeVoteToMute = optionalActiveVoteToMute.get(); - if (!activeVoteToMute.countLowerRanks()) { - if (!player.hasPermission("chat.vote-to-mute")) { - player.sendMessage(Utility.parseMiniMessage("You are not eligible to vote.")); - return 1; - } - } + if (!activeVoteToMute.countLowerRanks()) { + if (!player.hasPermission("chat.vote-to-mute")) { + player.sendMessage(Utility.parseMiniMessage("You are not eligible to vote.")); + return 1; + } + } - String vote = commandContext.getArgument("yesNo", String.class); - switch (vote.toLowerCase()) { - case "yes" -> { - activeVoteToMute.vote(player.getUniqueId(), true); - commandContext.getSource().sendMessage(Utility.parseMiniMessage( - "You voted to mute. Thanks for voting, staff will be online soon to review!")); - player.getCurrentServer().ifPresent(serverConnection -> notifyEligiblePlayers(serverConnection.getServer(), activeVoteToMute)); - } - case "no" -> { - activeVoteToMute.vote(player.getUniqueId(), false); - commandContext.getSource().sendMessage(Utility.parseMiniMessage( - "You voted not to mute. Thanks for voting, staff will be online soon to review!")); - } - default -> commandContext.getSource().sendMessage(Utility.parseMiniMessage( - " is not a valid vote option", Placeholder.parsed("vote", vote))); - } - return 1; - })).executes(context -> { + String vote = commandContext.getArgument("yesNo", String.class); + switch (vote.toLowerCase()) { + case "yes" -> { + activeVoteToMute.vote(player.getUniqueId(), true); + commandContext.getSource().sendMessage(Utility.parseMiniMessage( + "You voted to mute. Thanks for voting, staff will be online soon to review!")); + player.getCurrentServer().ifPresent(serverConnection -> notifyEligiblePlayers(serverConnection.getServer(), activeVoteToMute)); + } + case "no" -> { + activeVoteToMute.vote(player.getUniqueId(), false); + commandContext.getSource().sendMessage(Utility.parseMiniMessage( + "You voted not to mute. Thanks for voting, staff will be online soon to review!")); + } + default -> + commandContext.getSource().sendMessage(Utility.parseMiniMessage( + " is not a valid vote option", Placeholder.parsed("vote", vote))); + } + return 1; + })).executes(context -> { sendHelpMessage(context.getSource()); return 1; })).executes(context -> { @@ -254,14 +256,14 @@ public class VoteToMuteHelper { } private void notifyEligiblePlayers(RegisteredServer server, ActiveVoteToMute activeVoteToMute) { - Component message = Utility.parseMiniMessage(" out of players have voted to mute ", - Placeholder.component("prefix", prefix), - Placeholder.parsed("voted_for", String.valueOf(activeVoteToMute.getVotedFor())), - Placeholder.parsed("total_votes", String.valueOf(activeVoteToMute.getTotalEligibleVoters())), - Placeholder.parsed("player", activeVoteToMute.getVotedPlayer().getUsername())); + ComponentLike message = Utility.parseMiniMessage(" out of players have voted to mute ", + Placeholder.component("prefix", prefix), + Placeholder.parsed("voted_for", String.valueOf(activeVoteToMute.getVotedFor())), + Placeholder.parsed("total_votes", String.valueOf(activeVoteToMute.getTotalEligibleVoters())), + Placeholder.parsed("player", activeVoteToMute.getVotedPlayer().getUsername())); boolean countLowerRanks = activeVoteToMute.countLowerRanks(); server.getPlayersConnected().stream() - .filter(player -> countLowerRanks ? player.hasPermission("chat.backup-vote-to-mute") : player.hasPermission("chat.vote-to-mute")) + .filter(player -> countLowerRanks ? player.hasPermission("chat.backup-vote-to-mute") : player.hasPermission("chat.vote-to-mute")) .forEach(player -> player.sendMessage(message)); } diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Disband.java b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Disband.java index 004877f..3608f19 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Disband.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Disband.java @@ -46,11 +46,12 @@ public class Disband implements SubCommand { source.sendMessage(Utility.parseMiniMessage(getHelpMessage())); return; } - VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.DISBANDED_PARTY, - Placeholder.unparsed("owner", player.getUsername()), - Placeholder.unparsed("party", party.getPartyName()) - ), null); + VelocityChat.getPlugin().getChatHandler() + .sendPartyMessage(party, + Utility.parseMiniMessage(Config.DISBANDED_PARTY, + Placeholder.unparsed("owner", player.getUsername()), + Placeholder.unparsed("party", party.getPartyName()) + ).asComponent(), null); party.delete(); } diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Info.java b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Info.java index 32d0d7d..69df63a 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Info.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Info.java @@ -40,19 +40,20 @@ public class Info implements SubCommand { List displayNames = new ArrayList<>(); for (PartyUser partyUser : party.getPartyUsers()) { Optional optionalPlayer = VelocityChat.getPlugin().getProxy().getPlayer(partyUser.getUuid()); - if (optionalPlayer.isPresent() && optionalPlayer.get().isActive()) - displayNames.add(Config.ONLINE_PREFIX.append(partyUser.getDisplayName())); - else - displayNames.add(Config.OFFLINE_PREFIX.append(partyUser.getDisplayName())); + if (optionalPlayer.isPresent() && optionalPlayer.get().isActive()) { + displayNames.add(Config.ONLINE_PREFIX.asComponent().append(partyUser.getDisplayName())); + } else { + displayNames.add(Config.OFFLINE_PREFIX.asComponent().append(partyUser.getDisplayName())); + } } PartyUser owner = party.getPartyUser(party.getOwnerUuid()); source.sendMessage(Utility.parseMiniMessage(Config.PARTY_INFO, - Placeholder.unparsed("party", party.getPartyName()), - Placeholder.unparsed("password", party.getPartyPassword()), - Placeholder.component("owner", owner == null ? MiniMessage.miniMessage().deserialize("Unknown Owner") : owner.getDisplayName()), - Placeholder.component("members", Component.join(JoinConfiguration.separator(Component.text(", ")), displayNames)) - )); + Placeholder.unparsed("party", party.getPartyName()), + Placeholder.unparsed("password", party.getPartyPassword()), + Placeholder.component("owner", owner == null ? MiniMessage.miniMessage().deserialize("Unknown Owner") : owner.getDisplayName()), + Placeholder.component("members", Component.join(JoinConfiguration.separator(Component.text(", ")), displayNames)) + )); } @Override diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Join.java b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Join.java index f856481..1e35893 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Join.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Join.java @@ -43,7 +43,7 @@ public class Join implements SubCommand { return; } -// party.addUser(ChatUserManager.getChatUser(player.getUniqueId())); //Removed until we can get nicknames to translate to colors correctly + // party.addUser(ChatUserManager.getChatUser(player.getUniqueId())); //Removed until we can get nicknames to translate to colors correctly ChatUser chatUser = ChatUserManager.getChatUser(player.getUniqueId()); if (chatUser.getPartyId() == party.getPartyId()) { @@ -52,11 +52,12 @@ public class Join implements SubCommand { } party.addUser(chatUser, player.getUsername()); source.sendMessage(Utility.parseMiniMessage(Config.JOINED_PARTY, Placeholder.parsed("party_name", party.getPartyName()))); - VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.PLAYER_JOINED_PARTY, - Placeholder.component("player_name", chatUser.getDisplayName()), - Placeholder.parsed("party_name", party.getPartyName()) - ), null); + VelocityChat.getPlugin().getChatHandler() + .sendPartyMessage(party, + Utility.parseMiniMessage(Config.PLAYER_JOINED_PARTY, + Placeholder.component("player_name", chatUser.getDisplayName()), + Placeholder.parsed("party_name", party.getPartyName()) + ).asComponent(), null); } @Override diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Leave.java b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Leave.java index f37ecf6..f5992ba 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Leave.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Leave.java @@ -35,28 +35,31 @@ public class Leave implements SubCommand { return; } Optional currentServer = player.getCurrentServer(); - if (currentServer.isEmpty()) + if (currentServer.isEmpty()) { return; + } party.removeUser(player.getUniqueId()); if (party.getOwnerUuid().equals(player.getUniqueId())) { - if (party.getPartyUsers().size() > 0) { + if (!party.getPartyUsers().isEmpty()) { UUID uuid = party.setNewOwner(); source.sendMessage(Utility.parseMiniMessage(Config.NOTIFY_FINDING_NEW_OWNER)); - VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.OWNER_LEFT_PARTY, - Placeholder.unparsed("old_owner", player.getUsername()), - Placeholder.unparsed("new_owner", party.getPartyUser(uuid).getPlayerName()) - ), null); + VelocityChat.getPlugin().getChatHandler() + .sendPartyMessage(party, + Utility.parseMiniMessage(Config.OWNER_LEFT_PARTY, + Placeholder.unparsed("old_owner", player.getUsername()), + Placeholder.unparsed("new_owner", party.getPartyUser(uuid).getPlayerName()) + ).asComponent(), null); } else { party.delete(); } } else { source.sendMessage(Utility.parseMiniMessage(Config.LEFT_PARTY)); - VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.PLAYER_LEFT_PARTY, - Placeholder.unparsed("player_name", player.getUsername()) - ), null); + VelocityChat.getPlugin().getChatHandler() + .sendPartyMessage(party, + Utility.parseMiniMessage(Config.PLAYER_LEFT_PARTY, + Placeholder.unparsed("player_name", player.getUsername()) + ).asComponent(), null); } } diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Name.java b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Name.java index 2d2da86..b28ee49 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Name.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Name.java @@ -45,18 +45,19 @@ public class Name implements SubCommand { } if (PartyManager.getParty(args[1]) != null) { source.sendMessage(Utility.parseMiniMessage(Config.PARTY_EXISTS, - Placeholder.unparsed("party", args[1]) - )); + Placeholder.unparsed("party", args[1]) + )); return; } String oldName = party.getPartyName(); party.setPartyName(args[1]); - VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, Utility.parseMiniMessage(Config.RENAMED_PARTY, - Placeholder.component("owner", ChatUserManager.getChatUser(player.getUniqueId()).getDisplayName()), - Placeholder.unparsed("old_name", oldName), - Placeholder.unparsed("new_name", args[1]) - ), null); + VelocityChat.getPlugin().getChatHandler() + .sendPartyMessage(party, Utility.parseMiniMessage(Config.RENAMED_PARTY, + Placeholder.component("owner", ChatUserManager.getChatUser(player.getUniqueId()).getDisplayName()), + Placeholder.unparsed("old_name", oldName), + Placeholder.unparsed("new_name", args[1]) + ).asComponent(), null); } @Override diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Owner.java b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Owner.java index f4ac76b..f55e32f 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Owner.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/partysubcommands/Owner.java @@ -14,7 +14,6 @@ import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; public class Owner implements SubCommand { @Override @@ -44,31 +43,36 @@ public class Owner implements SubCommand { PartyUser partyUser = party.getPartyUser(args[1]); if (partyUser == null) { source.sendMessage(Utility.parseMiniMessage(Config.NOT_A_PARTY_MEMBER, - Placeholder.unparsed("player", args[1]) - )); + Placeholder.unparsed("player", args[1]) + )); return; } party.setNewOwner(partyUser.getUuid()); - VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.NEW_PARTY_OWNER, - Placeholder.unparsed("old_owner", player.getUsername()), - Placeholder.unparsed("new_owner", partyUser.getPlayerName()) - ), null); + VelocityChat.getPlugin().getChatHandler() + .sendPartyMessage(party, + Utility.parseMiniMessage(Config.NEW_PARTY_OWNER, + Placeholder.unparsed("old_owner", player.getUsername()), + Placeholder.unparsed("new_owner", partyUser.getPlayerName()) + ).asComponent(), null); } @Override public List suggest(String[] args, CommandSource source) { ArrayList suggest = new ArrayList<>(); - if (!(source instanceof Player player)) + if (!(source instanceof Player player)) { return suggest; + } UUID uuid = player.getUniqueId(); Party party = PartyManager.getParty(uuid); - if (party == null) + if (party == null) { return suggest; - if (args.length == 1 || args.length == 2) + } + if (args.length == 1 || args.length == 2) { suggest.addAll(party.getPartyUsers().stream() - .filter(partyUser -> !partyUser.getUuid().equals(uuid)) - .map(PartyUser::getPlayerName).collect(Collectors.toList())); + .filter(partyUser -> !partyUser.getUuid().equals(uuid)) + .map(PartyUser::getPlayerName) + .toList()); + } return suggest; } diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/ActiveVoteToMute.java b/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/ActiveVoteToMute.java index 65978cd..b8bd0d4 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/ActiveVoteToMute.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/ActiveVoteToMute.java @@ -10,6 +10,7 @@ import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.server.RegisteredServer; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.jetbrains.annotations.NotNull; @@ -25,12 +26,12 @@ import java.util.stream.Collectors; public class ActiveVoteToMute { private static final HashMap instances = new HashMap<>(); - private static final Component prefix = Utility.parseMiniMessage("[VoteMute]"); + private static final Component prefix = Utility.parseMiniMessage("[VoteMute]").asComponent(); private final Player votedPlayer; private final Player startedByPlayer; - private HashSet votedFor = new HashSet<>(); - private HashSet votedAgainst = new HashSet<>(); + private final HashSet votedFor = new HashSet<>(); + private final HashSet votedAgainst = new HashSet<>(); private int totalEligibleVoters; private final boolean countLowerRanks; private final RegisteredServer server; @@ -39,14 +40,16 @@ public class ActiveVoteToMute { private boolean endedVote = false; public static Optional getInstance(String username) { - if (!instances.containsKey(username)) + if (!instances.containsKey(username)) { return Optional.empty(); + } return Optional.of(instances.get(username)); } public static void removePotentialVoter(Player player, RegisteredServer previousServer) { - if (!player.hasPermission("chat.backup-vote-to-mute")) + if (!player.hasPermission("chat.backup-vote-to-mute")) { return; + } if (player.hasPermission("chat.vote-to-mute")) { instances.values().stream() .filter(activeVoteToMute -> previousServer == null || activeVoteToMute.getServer().getServerInfo().hashCode() == previousServer.getServerInfo().hashCode()) @@ -60,8 +63,9 @@ public class ActiveVoteToMute { } public static void addPotentialVoter(Player player, ServerConnection server) { - if (!player.hasPermission("chat.backup-vote-to-mute")) + if (!player.hasPermission("chat.backup-vote-to-mute")) { return; + } if (player.hasPermission("chat.vote-to-mute")) { instances.values().stream() .filter(activeVoteToMute -> activeVoteToMute.getServer().getServerInfo().hashCode() == server.getServerInfo().hashCode()) @@ -85,7 +89,7 @@ public class ActiveVoteToMute { instances.put(votedPlayer.getUsername(), this); ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.schedule(this::endVote, - duration.toMinutes(), TimeUnit.MINUTES); + duration.toMinutes(), TimeUnit.MINUTES); this.startedByPlayer = startedByPlayer; } @@ -94,22 +98,23 @@ public class ActiveVoteToMute { } private void endVote() { - if (endedVote) + if (endedVote) { return; + } instances.remove(votedPlayer.getUsername()); if (votePassed()) { mutePlayer(); return; } - Component message = Utility.parseMiniMessage(" The vote to mute has failed, they will not be muted.", - Placeholder.component("prefix", prefix), Placeholder.parsed("player", votedPlayer.getUsername())); + ComponentLike message = Utility.parseMiniMessage(" The vote to mute has failed, they will not be muted.", + Placeholder.component("prefix", prefix), Placeholder.parsed("player", votedPlayer.getUsername())); server.getPlayersConnected().stream() .filter(player -> countLowerRanks ? player.hasPermission("chat.backup-vote-to-mute") : player.hasPermission("chat.vote-to-mute")) .forEach(player -> player.sendMessage(message)); } public void start() { - Component message = getVoteStartMessage(); + ComponentLike message = getVoteStartMessage(); server.getPlayersConnected().stream() .filter(player -> countLowerRanks ? player.hasPermission("chat.backup-vote-to-mute") : player.hasPermission("chat.vote-to-mute")) .forEach(player -> player.sendMessage(message)); @@ -147,24 +152,23 @@ public class ActiveVoteToMute { } private void mutePlayer() { - Component message = Utility.parseMiniMessage(" The vote to mute has passed, they will be muted.", - Placeholder.component("prefix", prefix), Placeholder.parsed("player", votedPlayer.getUsername())); + ComponentLike message = Utility.parseMiniMessage(" The vote to mute has passed, they will be muted.", + Placeholder.component("prefix", prefix), Placeholder.parsed("player", votedPlayer.getUsername())); server.getPlayersConnected().stream() .filter(player -> countLowerRanks ? player.hasPermission("chat.backup-vote-to-mute") : player.hasPermission("chat.vote-to-mute")) .forEach(player -> player.sendMessage(message)); proxyServer.getCommandManager().executeAsync(proxyServer.getConsoleCommandSource(), - String.format("tempmute %s 1h Muted by the community - under review. -p", votedPlayer.getUsername())); - + String.format("tempmute %s 1h Muted by the community - under review. -p", votedPlayer.getUsername())); String chatLogsString = PlainTextComponentSerializer.plainText().serialize(chatLogs); EmbedBuilder embedBuilder = buildMutedEmbed(chatLogsString); ALogger.info(String.format("Player %s muted by vote\nLogs:\n%s\n\nVotes for:\n%s\nVotes against:\n%s\n", - votedPlayer.getUsername(), - chatLogsString, - parseUUIDsToPlayerOrString(votedFor), - parseUUIDsToPlayerOrString(votedAgainst) - )); + votedPlayer.getUsername(), + chatLogsString, + parseUUIDsToPlayerOrString(votedFor), + parseUUIDsToPlayerOrString(votedAgainst) + )); long id = Config.serverChannelId.get("general"); DiscordLink.getPlugin().getBot().sendEmbedToDiscord(id, embedBuilder, -1); @@ -177,14 +181,14 @@ public class ActiveVoteToMute { embedBuilder.setTitle("Player muted by vote"); embedBuilder.setColor(Color.CYAN); embedBuilder.addField("Logs", - chatLogsString.substring(0, Math.min(chatLogsString.length(), 1024)), - false); + chatLogsString.substring(0, Math.min(chatLogsString.length(), 1024)), + false); embedBuilder.addField("Server", - server.getServerInfo().getName().substring(0, 1).toUpperCase() + server.getServerInfo().getName().substring(1), - true); + server.getServerInfo().getName().substring(0, 1).toUpperCase() + server.getServerInfo().getName().substring(1), + true); embedBuilder.addField("Started by", - String.format("Username: %s\nUUID: %s", startedByPlayer.getUsername(), startedByPlayer.getUniqueId().toString()), - true); + String.format("Username: %s\nUUID: %s", startedByPlayer.getUsername(), startedByPlayer.getUniqueId().toString()), + true); return embedBuilder; } @@ -200,25 +204,27 @@ public class ActiveVoteToMute { public void addEligibleVoter(Player player) { UUID uuid = player.getUniqueId(); - if (votedAgainst.contains(uuid) || votedFor.contains(uuid)) + if (votedAgainst.contains(uuid) || votedFor.contains(uuid)) { return; + } totalEligibleVoters++; player.sendMessage(getVoteStartMessage()); } public void removeEligibleVoter(UUID uuid) { - if (votedFor.contains(uuid) || votedAgainst.contains(uuid)) + if (votedFor.contains(uuid) || votedAgainst.contains(uuid)) { return; + } totalEligibleVoters--; } - private Component getVoteStartMessage() { + private ComponentLike getVoteStartMessage() { return Utility.parseMiniMessage( String.format(""" - A vote to mute for one hour has been started, please read the logs below before voting. - - Click: Mute --- Don't mute""", - votedPlayer.getUsername(), votedPlayer.getUsername()), + A vote to mute for one hour has been started, please read the logs below before voting. + + Click: Mute --- Don't mute""", + votedPlayer.getUsername(), votedPlayer.getUsername()), Placeholder.component("prefix", prefix), Placeholder.parsed("player", votedPlayer.getUsername()), Placeholder.component("logs", chatLogs)); diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/VoteToMuteStarter.java b/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/VoteToMuteStarter.java index 57b213b..8af5d33 100644 --- a/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/VoteToMuteStarter.java +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/vote_to_mute/VoteToMuteStarter.java @@ -18,7 +18,7 @@ public class VoteToMuteStarter { private static final HashMap instanceMap = new HashMap<>(); - private static final Component prefix = Utility.parseMiniMessage("[VoteMute]"); + private static final Component prefix = Utility.parseMiniMessage("[VoteMute]").asComponent(); private final ChatLogHandler chatLogHandler; private final Player votedPlayer; private final Player commandSource; @@ -27,8 +27,9 @@ public class VoteToMuteStarter { private final boolean countLowerRanks; public static Optional getInstance(UUID uuid) { - if (!instanceMap.containsKey(uuid)) + if (!instanceMap.containsKey(uuid)) { return Optional.empty(); + } return Optional.of(instanceMap.get(uuid)); } @@ -45,14 +46,14 @@ public class VoteToMuteStarter { chatLogHandler.retrieveChatLogs(votedPlayer.getUniqueId(), Duration.ofMinutes(10), serverName).whenCompleteAsync((chatLogs, throwable) -> { if (throwable != null) { commandSource.sendMessage(Utility.parseMiniMessage(" Unable to retrieve messages for player ", - Placeholder.component("prefix", prefix), - Placeholder.parsed("player", votedPlayer.getUsername()))); + Placeholder.component("prefix", prefix), + Placeholder.parsed("player", votedPlayer.getUsername()))); return; } parseChatLogs(chatLogs); commandSource.sendMessage(Utility.parseMiniMessage( " Please select up to 10 messages other players should see to decide their vote, seperated by comma's. " + - "Example: /votetomutehelper messages 1, 2, 5, 8", Placeholder.component("prefix", prefix))); + "Example: /votetomutehelper messages 1, 2, 5, 8", Placeholder.component("prefix", prefix))); showPage(1); }); } @@ -63,13 +64,14 @@ public class VoteToMuteStarter { chatLogs.sort(Comparator.comparing(ChatLog::getTimestamp).reversed()); parsedChatLogs = IntStream.range(0, chatLogs.size()) .mapToObj(i -> Utility.parseMiniMessage( - ". : ", - TagResolver.resolver( - Placeholder.unparsed("message", chatLogs.get(i).getMessage()), - Placeholder.parsed("number", String.valueOf(i + 1)), - playerTag, prefixTag - )) - ) + ". : ", + TagResolver.resolver( + Placeholder.unparsed("message", chatLogs.get(i).getMessage()), + Placeholder.parsed("number", String.valueOf(i + 1)), + playerTag, + prefixTag + )).asComponent() + ) .toList(); } @@ -89,16 +91,17 @@ public class VoteToMuteStarter { .append(">Click to go to next page'> "); } commandSource.sendMessage(Utility.parseMiniMessage(stringBuilder.toString(), - Placeholder.parsed("player", votedPlayer.getUsername()), - Placeholder.component("prefix", prefix), - Placeholder.component("logs", chatLogsComponent))); + Placeholder.parsed("player", votedPlayer.getUsername()), + Placeholder.component("prefix", prefix), + Placeholder.component("logs", chatLogsComponent))); } /** - * Retrieves the chat logs for the given list of IDs. It removes 1 from the IDs before using them - * It removes the instance from the hashmap after this function call + * Retrieves the chat logs for the given list of IDs. It removes 1 from the IDs before using them It removes the + * instance from the hashmap after this function call * * @param ids A list of integers representing the IDs of the chat logs to retrieve. + * * @return A Component object containing the selected chat logs joined by newlines. */ public Component getChatLogsAndClose(List ids) { diff --git a/velocity/src/main/java/com/alttd/velocitychat/data/ServerWrapper.java b/velocity/src/main/java/com/alttd/velocitychat/data/ServerWrapper.java index 518a844..f850ae7 100755 --- a/velocity/src/main/java/com/alttd/velocitychat/data/ServerWrapper.java +++ b/velocity/src/main/java/com/alttd/velocitychat/data/ServerWrapper.java @@ -3,7 +3,7 @@ package com.alttd.velocitychat.data; import com.alttd.chat.config.ServerConfig; import com.alttd.chat.managers.ChatUserManager; import com.velocitypowered.api.proxy.server.RegisteredServer; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import java.util.UUID; @@ -31,8 +31,7 @@ public class ServerWrapper { return serverName; } - public boolean globalChat() - { + public boolean globalChat() { return globalChat; } @@ -40,10 +39,11 @@ public class ServerWrapper { return joinMessages; } - public void sendJoinLeaveMessage(UUID uuid, Component component) { - if(joinMessages()) + public void sendJoinLeaveMessage(UUID uuid, ComponentLike component) { + if (joinMessages()) { getRegisteredServer().getPlayersConnected().stream() .filter(p -> !ChatUserManager.getChatUser(p.getUniqueId()).getIgnoredPlayers().contains(uuid)) .forEach(p -> p.sendMessage(component)); + } } } diff --git a/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java b/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java index 107b138..ed131d9 100755 --- a/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java +++ b/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java @@ -15,6 +15,7 @@ import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ServerConnection; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -24,7 +25,10 @@ import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.jetbrains.annotations.Nullable; import java.time.Duration; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.UUID; public class ChatHandler { @@ -32,11 +36,15 @@ public class ChatHandler { UUID uuid = UUID.fromString(sender); ChatUser senderUser = ChatUserManager.getChatUser(uuid); Optional optionalPlayer = VelocityChat.getPlugin().getProxy().getPlayer(uuid); - if(optionalPlayer.isEmpty()) return; + if (optionalPlayer.isEmpty()) { + return; + } Player player = optionalPlayer.get(); Optional optionalPlayer2 = VelocityChat.getPlugin().getProxy().getPlayer(target); - if(optionalPlayer2.isEmpty()) return; + if (optionalPlayer2.isEmpty()) { + return; + } Player player2 = optionalPlayer2.get(); ChatUser targetUser = ChatUserManager.getChatUser(player2.getUniqueId()); @@ -49,12 +57,12 @@ public class ChatHandler { Placeholder.unparsed("server", player.getCurrentServer().isPresent() ? player.getCurrentServer().get().getServerInfo().getName() : "Altitude")); ServerConnection serverConnection; - if(player.getCurrentServer().isPresent() && player2.getCurrentServer().isPresent()) { + if (player.getCurrentServer().isPresent() && player2.getCurrentServer().isPresent()) { // redirect to the sender serverConnection = player.getCurrentServer().get(); Component component = Utility.parseMiniMessage(Config.MESSAGESENDER - .replaceAll("", player.getUsername()) - .replaceAll("", player2.getUsername()), Placeholders); + .replaceAll("", player.getUsername()) + .replaceAll("", player2.getUsername()), Placeholders).asComponent(); ByteArrayDataOutput buf = ByteStreams.newDataOutput(); buf.writeUTF("privatemessageout"); buf.writeUTF(player.getUniqueId().toString()); @@ -66,8 +74,8 @@ public class ChatHandler { //redirect to the receiver serverConnection = player2.getCurrentServer().get(); component = Utility.parseMiniMessage(Config.MESSAGERECIEVER - .replaceAll("", player.getUsername()) - .replaceAll("", player2.getUsername()), Placeholders); + .replaceAll("", player.getUsername()) + .replaceAll("", player2.getUsername()), Placeholders).asComponent(); buf = ByteStreams.newDataOutput(); buf.writeUTF("privatemessagein"); buf.writeUTF(player2.getUniqueId().toString()); @@ -85,25 +93,25 @@ public class ChatHandler { Placeholder.parsed("displayname", Utility.getDisplayName(player.getUniqueId(), player.getUsername())), Placeholder.unparsed("target", (target.isEmpty() ? " tried to say: " : " -> " + target + ": ")), Placeholder.unparsed("input", input) - ); - Component blockedNotification = Utility.parseMiniMessage(Config.NOTIFICATIONFORMAT, Placeholders); + ); + ComponentLike blockedNotification = Utility.parseMiniMessage(Config.NOTIFICATIONFORMAT, Placeholders); - serverConnection.getServer().getPlayersConnected().forEach(pl ->{ + serverConnection.getServer().getPlayersConnected().forEach(pl -> { if (pl.hasPermission("chat.alert-blocked")) { pl.sendMessage(blockedNotification); } }); player.sendMessage(Utility.parseMiniMessage("The language you used in your message is not allowed, " + - "this constitutes as your only warning. Any further attempts at bypassing the filter will result in staff intervention.")); + "this constitutes as your only warning. Any further attempts at bypassing the filter will result in staff intervention.")); } - public void sendPartyMessage(Party party, Component message, @Nullable List ignoredPlayers) - { + public void sendPartyMessage(Party party, Component message, @Nullable List ignoredPlayers) { VelocityChat.getPlugin().getProxy().getAllPlayers().stream() .filter(pl -> { UUID uuid = pl.getUniqueId(); - if (ignoredPlayers != null && ignoredPlayers.contains(uuid)) + if (ignoredPlayers != null && ignoredPlayers.contains(uuid)) { return false; + } return party.getPartyUsers().stream().anyMatch(pu -> pu.getUuid().equals(uuid)); }).forEach(pl -> { pl.sendMessage(message); @@ -114,7 +122,9 @@ public class ChatHandler { public void sendPartyMessage(UUID uuid, String message, Component item, ServerConnection serverConnection) { Optional optionalPlayer = VelocityChat.getPlugin().getProxy().getPlayer(uuid); - if (optionalPlayer.isEmpty()) return; + if (optionalPlayer.isEmpty()) { + return; + } Player player = optionalPlayer.get(); ChatUser user = ChatUserManager.getChatUser(uuid); Party party = PartyManager.getParty(user.getPartyId()); @@ -122,7 +132,7 @@ public class ChatHandler { player.sendMessage(Utility.parseMiniMessage(Config.NOT_IN_A_PARTY)); return; } - Component senderName = user.getDisplayName(); + ComponentLike senderName = user.getDisplayName(); TagResolver Placeholders = TagResolver.resolver( Placeholder.component("sender", senderName), @@ -130,9 +140,9 @@ public class ChatHandler { Placeholder.unparsed("partyname", party.getPartyName()), Placeholder.component("message", parseMessageContent(player, message)), Placeholder.unparsed("server", serverConnection.getServer().getServerInfo().getName()) - ); + ); - Component partyMessage = Utility.parseMiniMessage(Config.PARTY_FORMAT, Placeholders) + Component partyMessage = Utility.parseMiniMessage(Config.PARTY_FORMAT, Placeholders).asComponent() .replaceText(TextReplacementConfig.builder().once().matchLiteral("[i]").replacement(item).build()); ModifiableString modifiableString = new ModifiableString(partyMessage); @@ -145,9 +155,9 @@ public class ChatHandler { sendPartyMessage(party, partyMessage, user.getIgnoredBy()); - Component spyMessage = Utility.parseMiniMessage(Config.PARTY_SPY, Placeholders); - for(Player pl : serverConnection.getServer().getPlayersConnected()) { - if(pl.hasPermission(Config.SPYPERMISSION) && !party.getPartyUsersUuid().contains(pl.getUniqueId())) { + ComponentLike spyMessage = Utility.parseMiniMessage(Config.PARTY_SPY, Placeholders); + for (Player pl : serverConnection.getServer().getPlayersConnected()) { + if (pl.hasPermission(Config.SPYPERMISSION) && !party.getPartyUsersUuid().contains(pl.getUniqueId())) { pl.sendMessage(spyMessage); } } @@ -157,18 +167,20 @@ public class ChatHandler { public void globalAdminChat(String message) { Component component = GsonComponentSerializer.gson().deserialize(message); - VelocityChat.getPlugin().getProxy().getAllPlayers().stream().filter(target -> target.hasPermission("command.chat.globaladminchat")/*TODO permission*/).forEach(target -> { - target.sendMessage(component); - }); + VelocityChat.getPlugin().getProxy().getAllPlayers() + .stream() + .filter(target -> target.hasPermission("command.chat.globaladminchat")) + .forEach(target -> target.sendMessage(component)); } public void globalAdminChat(CommandSource commandSource, String message) { - Component senderName = Component.text(Config.CONSOLENAME); + ComponentLike senderName = Component.text(Config.CONSOLENAME); String serverName = "Altitude"; - if (commandSource instanceof Player) { - Player sender = (Player) commandSource; + if (commandSource instanceof Player sender) { ChatUser user = ChatUserManager.getChatUser(sender.getUniqueId()); - if(user == null) return; + if (user == null) { + return; + } senderName = user.getDisplayName(); serverName = sender.getCurrentServer().isPresent() ? sender.getCurrentServer().get().getServerInfo().getName() : "Altitude"; } @@ -178,15 +190,16 @@ public class ChatHandler { Placeholder.component("sender", senderName), Placeholder.unparsed("server", serverName)); - Component component = Utility.parseMiniMessage(Config.GACFORMAT, Placeholders); + ComponentLike component = Utility.parseMiniMessage(Config.GACFORMAT, Placeholders); - VelocityChat.getPlugin().getProxy().getAllPlayers().stream().filter(target -> target.hasPermission("command.chat.globaladminchat")/*TODO permission*/).forEach(target -> { - target.sendMessage(component); - }); + VelocityChat.getPlugin().getProxy().getAllPlayers() + .stream() + .filter(target -> target.hasPermission("command.chat.globaladminchat")) + .forEach(target -> target.sendMessage(component)); } public void sendMail(CommandSource commandSource, String recipient, String message) { - UUID uuid = Config.CONSOLEUUID;; + UUID uuid = Config.CONSOLEUUID; String senderName = Config.CONSOLENAME; UUID targetUUID; if (commandSource instanceof Player player) { @@ -248,7 +261,7 @@ public class ChatHandler { } private Component parseMails(List mails, boolean mark) { - Component component = Utility.parseMiniMessage(Config.mailHeader); + Component component = Utility.parseMiniMessage(Config.mailHeader).asComponent(); for (Mail mail : mails) { if (mail.isUnRead() && mark) { mail.setReadTime(System.currentTimeMillis()); @@ -262,28 +275,14 @@ public class ChatHandler { Placeholder.component("message", Utility.parseMiniMessage(mail.getMessage())), Placeholder.unparsed("date", date.toString()), Placeholder.unparsed("time_ago", getTimeAgo(Duration.between(date.toInstant(), new Date().toInstant()))) - ); - Component mailMessage = Utility.parseMiniMessage(Config.mailBody, Placeholders); + ); + ComponentLike mailMessage = Utility.parseMiniMessage(Config.mailBody, Placeholders); component = component.append(Component.newline()).append(mailMessage); } component = component.append(Component.newline()).append(Utility.parseMiniMessage(Config.mailFooter)); return component; } - public void partyChat(String partyId, UUID uuid, Component message) { - Party party = PartyManager.getParty(Integer.parseInt(partyId)); - if (party == null) { - ALogger.warn("Received a non existent party"); - return; - } - List ignoredPlayers = ChatUserManager.getChatUser(uuid).getIgnoredPlayers(); - List partyUsersUuid = party.getPartyUsersUuid(); - VelocityChat.getPlugin().getProxy().getAllPlayers().stream() - .filter(p -> partyUsersUuid.contains(p.getUniqueId())) - .filter(p -> !ignoredPlayers.contains(p.getUniqueId())) - .forEach(p -> p.sendMessage(message)); - } - public void mutePlayer(String uuid, boolean muted) { ByteArrayDataOutput buf = ByteStreams.newDataOutput(); buf.writeUTF("chatpunishments"); @@ -293,10 +292,12 @@ public class ChatHandler { private String getTimeAgo(Duration duration) { StringBuilder stringBuilder = new StringBuilder(); - if (duration.toDays() != 0) + if (duration.toDays() != 0) { stringBuilder.append(duration.toDays()).append("d "); - if (duration.toHoursPart() != 0 || !stringBuilder.isEmpty()) + } + if (duration.toHoursPart() != 0 || !stringBuilder.isEmpty()) { stringBuilder.append(duration.toHoursPart()).append("h "); + } stringBuilder.append(duration.toMinutesPart()).append("m ago"); return stringBuilder.toString(); } @@ -312,7 +313,7 @@ public class ChatHandler { MiniMessage miniMessage = MiniMessage.builder().tags(tagResolver.build()).build(); Component component = miniMessage.deserialize(rawMessage); - for(ChatFilter chatFilter : RegexManager.getEmoteFilters()) { + for (ChatFilter chatFilter : RegexManager.getEmoteFilters()) { component = component.replaceText( TextReplacementConfig.builder() .times(Config.EMOTELIMIT) diff --git a/velocity/src/main/java/com/alttd/velocitychat/listeners/ChatListener.java b/velocity/src/main/java/com/alttd/velocitychat/listeners/ChatListener.java index 56524ff..aa35134 100755 --- a/velocity/src/main/java/com/alttd/velocitychat/listeners/ChatListener.java +++ b/velocity/src/main/java/com/alttd/velocitychat/listeners/ChatListener.java @@ -8,15 +8,12 @@ import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.event.PostOrder; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.proxy.Player; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import java.util.ArrayList; -import java.util.List; -// TODO code CLEANUP public class ChatListener { - private VelocityChat plugin; + private final VelocityChat plugin; public ChatListener() { plugin = VelocityChat.getPlugin(); @@ -30,18 +27,20 @@ public class ChatListener { if (commandSource instanceof Player) { Player sender = (Player) event.getSender(); senderName = sender.getUsername(); - serverName = sender.getCurrentServer().isPresent() ? sender.getCurrentServer().get().getServerInfo().getName() : "Altitude"; + serverName = sender.getCurrentServer().isPresent() + ? sender.getCurrentServer().get().getServerInfo().getName() : "Altitude"; } - Component message = Utility.parseMiniMessage(Config.GACFORMAT, - Placeholder.parsed("sender", senderName), - Placeholder.component("message", Utility.parseMiniMessage(event.getMessage())), - Placeholder.parsed("server", serverName) - ); + ComponentLike message = Utility.parseMiniMessage(Config.GACFORMAT, + Placeholder.parsed("sender", senderName), + Placeholder.component("message", Utility.parseMiniMessage(event.getMessage())), + Placeholder.parsed("server", serverName) + ); - plugin.getProxy().getAllPlayers().stream().filter(target -> target.hasPermission("command.chat.globaladminchat")).forEach(target -> { - target.sendMessage(message); - }); + plugin.getProxy().getAllPlayers() + .stream() + .filter(target -> target.hasPermission("command.chat.globaladminchat")) + .forEach(target -> target.sendMessage(message)); } } diff --git a/velocity/src/main/java/com/alttd/velocitychat/listeners/ProxyPlayerListener.java b/velocity/src/main/java/com/alttd/velocitychat/listeners/ProxyPlayerListener.java index b269b05..9309087 100755 --- a/velocity/src/main/java/com/alttd/velocitychat/listeners/ProxyPlayerListener.java +++ b/velocity/src/main/java/com/alttd/velocitychat/listeners/ProxyPlayerListener.java @@ -1,16 +1,16 @@ package com.alttd.velocitychat.listeners; +import com.alttd.chat.config.Config; import com.alttd.chat.managers.ChatUserManager; +import com.alttd.chat.managers.PartyManager; import com.alttd.chat.objects.ChatUser; import com.alttd.chat.objects.Mail; +import com.alttd.chat.objects.Party; import com.alttd.chat.util.Utility; import com.alttd.velocitychat.VelocityChat; -import com.alttd.chat.config.Config; import com.alttd.velocitychat.commands.vote_to_mute.ActiveVoteToMute; import com.alttd.velocitychat.data.ServerWrapper; import com.alttd.velocitychat.handlers.ServerHandler; -import com.alttd.chat.managers.PartyManager; -import com.alttd.chat.objects.Party; import com.velocitypowered.api.event.PostOrder; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.connection.DisconnectEvent; @@ -21,11 +21,15 @@ import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.server.RegisteredServer; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.title.Title; -import java.util.*; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.UUID; import java.util.concurrent.TimeUnit; public class ProxyPlayerListener { @@ -35,15 +39,18 @@ public class ProxyPlayerListener { Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); Party party = PartyManager.getParty(event.getPlayer().getUniqueId()); - if (party == null) return; - ChatUser chatUser = ChatUserManager.getChatUser(uuid); - if (chatUser == null) + if (party == null) { return; + } + ChatUser chatUser = ChatUserManager.getChatUser(uuid); + if (chatUser == null) { + return; + } VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.PARTY_MEMBER_LOGGED_ON, - Placeholder.component("player", chatUser.getDisplayName()) - ), - chatUser.getIgnoredPlayers()); + Utility.parseMiniMessage(Config.PARTY_MEMBER_LOGGED_ON, + Placeholder.component("player", chatUser.getDisplayName()) + ).asComponent(), + chatUser.getIgnoredPlayers()); // TODO setup ChatUser on Proxy //VelocityChat.getPlugin().getChatHandler().addPlayer(new ChatPlayer(event.getPlayer().getUniqueId())); @@ -57,28 +64,32 @@ public class ProxyPlayerListener { if (previousServer != null) { ActiveVoteToMute.removePotentialVoter(player, previousServer); Optional currentServer = player.getCurrentServer(); - if (currentServer.isEmpty()) + if (currentServer.isEmpty()) { return; + } ActiveVoteToMute.addPotentialVoter(player, currentServer.get()); return; } Optional currentServer = player.getCurrentServer(); - if (currentServer.isEmpty()) + if (currentServer.isEmpty()) { return; + } ActiveVoteToMute.addPotentialVoter(player, currentServer.get()); ChatUser chatUser = ChatUserManager.getChatUser(player.getUniqueId()); List unReadMail = chatUser.getUnReadMail(); - if (unReadMail.isEmpty()) + if (unReadMail.isEmpty()) { return; + } VelocityChat plugin = VelocityChat.getPlugin(); plugin.getProxy().getScheduler().buildTask(plugin, () -> { - if (!player.isActive()) + if (!player.isActive()) { return; + } - Component message = Utility.parseMiniMessage(Config.mailUnread, - Placeholder.unparsed("amount", String.valueOf(unReadMail.size()))); + ComponentLike message = Utility.parseMiniMessage(Config.mailUnread, + Placeholder.unparsed("amount", String.valueOf(unReadMail.size()))); player.sendMessage(message); - player.showTitle(Title.title(message, Component.empty())); + player.showTitle(Title.title(message.asComponent(), Component.empty())); }).delay(Config.mailDisplayDelay * 50L, TimeUnit.MILLISECONDS).schedule(); } @@ -88,24 +99,25 @@ public class ProxyPlayerListener { ActiveVoteToMute.removePotentialVoter(event.getPlayer(), null); UUID uuid = event.getPlayer().getUniqueId(); Party party = PartyManager.getParty(event.getPlayer().getUniqueId()); - if (party == null) return; - ChatUser chatUser = ChatUserManager.getChatUser(uuid); - if (chatUser == null) + if (party == null) { return; + } + ChatUser chatUser = ChatUserManager.getChatUser(uuid); + if (chatUser == null) { + return; + } VelocityChat.getPlugin().getChatHandler().sendPartyMessage(party, - Utility.parseMiniMessage(Config.PARTY_MEMBER_LOGGED_OFF, - Placeholder.component("player", chatUser.getDisplayName()) - ), - chatUser.getIgnoredPlayers()); + Utility.parseMiniMessage(Config.PARTY_MEMBER_LOGGED_OFF, + Placeholder.component("player", chatUser.getDisplayName()) + ).asComponent(), + chatUser.getIgnoredPlayers()); // TODO setup ChatUser on Proxy //VelocityChat.getPlugin().getChatHandler().removePlayer(event.getPlayer().getUniqueId()); } - private static final HashSet silentJoin = new HashSet<>(); - public static void addSilentJoin(UUID uuid) - { + public static void addSilentJoin(UUID uuid) { silentJoin.add(uuid); } @@ -122,11 +134,11 @@ public class ProxyPlayerListener { Placeholder.parsed("player", player.getUsername()), Placeholder.parsed("from_server", previousServer.getServerInfo().getName()), Placeholder.parsed("to_server", event.getServer().getServerInfo().getName()) - ); + ); if (silentJoin.remove(uuid)) { - Component message = Utility.parseMiniMessage(Config.SILENT_JOIN_JOINED_FROM, - placeholders); + ComponentLike message = Utility.parseMiniMessage(Config.SILENT_JOIN_JOINED_FROM, + placeholders); event.getServer().getPlayersConnected().stream() .filter(player1 -> player1.hasPermission("command.chat.silent-join-notify")) .forEach(player1 -> player1.sendMessage(message)); @@ -134,17 +146,17 @@ public class ProxyPlayerListener { } ServerWrapper wrapper = serverHandler.getWrapper(previousServer.getServerInfo().getName()); - if(wrapper != null) { + if (wrapper != null) { wrapper.sendJoinLeaveMessage(uuid, Utility.parseMiniMessage(Config.SERVERSWTICHMESSAGETO, placeholders)); } wrapper = serverHandler.getWrapper(event.getServer().getServerInfo().getName()); - if(wrapper != null) { + if (wrapper != null) { wrapper.sendJoinLeaveMessage(uuid, Utility.parseMiniMessage(Config.SERVERSWTICHMESSAGEFROM, placeholders)); } } else { if (silentJoin.remove(uuid)) { - Component message = Utility.parseMiniMessage(Config.SILENT_JOIN_JOINED, - Placeholder.unparsed("player", player.getUsername())); + ComponentLike message = Utility.parseMiniMessage(Config.SILENT_JOIN_JOINED, + Placeholder.unparsed("player", player.getUsername())); event.getServer().getPlayersConnected().stream() .filter(player1 -> player1.hasPermission("command.chat.silent-join-notify")) .forEach(player1 -> player1.sendMessage(message)); @@ -152,7 +164,7 @@ public class ProxyPlayerListener { } ServerWrapper wrapper = serverHandler.getWrapper(event.getServer().getServerInfo().getName()); - if(wrapper != null) { + if (wrapper != null) { wrapper.sendJoinLeaveMessage(uuid, Utility.parseMiniMessage(Config.SERVERJOINMESSAGE, Placeholder.unparsed("player", player.getUsername()))); } } @@ -165,11 +177,11 @@ public class ProxyPlayerListener { RegisteredServer registeredServer = event.getPlayer().getCurrentServer().get().getServer(); ServerWrapper wrapper = serverHandler.getWrapper(registeredServer.getServerInfo().getName()); - if(wrapper != null) { + if (wrapper != null) { wrapper.sendJoinLeaveMessage(event.getPlayer().getUniqueId(), Utility.parseMiniMessage(Config.SERVERLEAVEMESSAGE, - Placeholder.unparsed("player", event.getPlayer().getUsername()), - Placeholder.unparsed("from_server", registeredServer.getServerInfo().getName()) - )); + Placeholder.unparsed("player", event.getPlayer().getUsername()), + Placeholder.unparsed("from_server", registeredServer.getServerInfo().getName()) + )); } } }