From d9e98cea3e4d98be205a431f99576ca9197c87bc Mon Sep 17 00:00:00 2001 From: Ilya Andreev Date: Thu, 16 Jun 2022 22:14:11 +0300 Subject: [PATCH 1/5] Fix EN locale --- spigot/src/main/resources/locale/en.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spigot/src/main/resources/locale/en.yml b/spigot/src/main/resources/locale/en.yml index db2d262f..5bd17d16 100644 --- a/spigot/src/main/resources/locale/en.yml +++ b/spigot/src/main/resources/locale/en.yml @@ -11,21 +11,21 @@ messages: not-enough-money: '&cYou need {money} money to send message in this chat.' clearchat-command: - usage: '&cUsing: /{label} [all]' + usage: '&cUsage: /{label} [all]' clear-chat-for-all: '&aChat cleared by {player}.' clear-chat-for-yourself: '&aChat cleared.' msg-command: - usage: '&cUsing: /{label} ' + usage: '&cUsage: /{label} ' player-not-found: '&cPlayer not found.' cannot-message-yourself: '&cYou cannot message yourself.' reply-command: - usage: '&cUsing: /{label} ' + usage: '&cUsage: /{label} ' target-not-found: '&cPlayer not found.' ignore-command: - usage: '&cUsing: /{label} ' + usage: '&cUsage: /{label} ' player-not-found: '&cPlayer not found.' ignore-list: '&eYou''re now ignoring: &6{players}.' ignore-list-delimiter: '&8, &6' @@ -34,17 +34,17 @@ messages: cannot-ignore-yourself: '&cYou cannot ignore yourself.' swears-command: - usage: '&cUsing: /{label} add ' + usage: '&cUsage: /{label} add ' add-word: '&aYou added word {word} to whitelist.' chat-command: - usage: '&cUsing: /{label} ' + usage: '&cUsage: /{label} ' chat-not-found: '&cChat with this name was not found.' chat-switched: '&aYou have switched to chat "{chat}".' no-chat-permission: '&cYou don''have permission for this chat.' prefix-command: - usage: '&cUsing: /{label} <|clear>' + usage: '&cUsage: /{label} <|clear>' no-permissions-others: '&cYou don''t have permission to changing prefixes of other players.' player-not-found: '&cPlayer not found.' length-limit-min: '&cPrefix cannot be shorter than {limit} symbols.' @@ -53,7 +53,7 @@ messages: prefix-set: '&aYou set prefix &r{prefix} &afor player {player}.' suffix-command: - usage: '&cUsing: /{label} <|clear>' + usage: '&cUsage: /{label} <|clear>' no-permissions-others: '&cYou don''t have permission to changing suffixes of other players.' player-not-found: '&cPlayer not found.' length-limit-min: '&cSuffix cannot be shorter than {limit} symbols.' From 66d462e7b9cc78d2bce7168aaf72519d275dfff3 Mon Sep 17 00:00:00 2001 From: Kapitowa Date: Thu, 16 Jun 2022 22:41:01 +0300 Subject: [PATCH 2/5] fix hex colors in pm message for recipient --- .../chatty/commands/pm/PrivateMessageCommand.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spigot/src/main/java/ru/mrbrikster/chatty/commands/pm/PrivateMessageCommand.java b/spigot/src/main/java/ru/mrbrikster/chatty/commands/pm/PrivateMessageCommand.java index da2d70df..7142cb11 100644 --- a/spigot/src/main/java/ru/mrbrikster/chatty/commands/pm/PrivateMessageCommand.java +++ b/spigot/src/main/java/ru/mrbrikster/chatty/commands/pm/PrivateMessageCommand.java @@ -10,7 +10,7 @@ import ru.mrbrikster.chatty.Chatty; import ru.mrbrikster.chatty.chat.JsonStorage; import ru.mrbrikster.chatty.dependencies.PlayerTagManager; -import ru.mrbrikster.chatty.json.fanciful.FancyMessage; +import ru.mrbrikster.chatty.json.FormattedMessage; import ru.mrbrikster.chatty.moderation.AdvertisementModerationMethod; import ru.mrbrikster.chatty.moderation.ModerationManager; import ru.mrbrikster.chatty.moderation.SwearModerationMethod; @@ -119,8 +119,8 @@ protected void handlePrivateMessage(@NotNull CommandSender sender, @NotNull Comm recipientFormat = TextUtil.stripHex(recipientFormat); recipient.sendMessage(recipientFormat); } else { - new FancyMessage(recipientFormat) - .send(recipient, sender instanceof Player ? ((Player) sender) : null); + FormattedMessage formattedMessage = new FormattedMessage(recipientFormat); + formattedMessage.toFancyMessage().send((Player) recipient, (Player) sender); String soundName = configuration.getNode("pm.sound").getAsString(null); if (soundName != null) { From fa5ba36cef53be4874bf90e882d174e6e8837c51 Mon Sep 17 00:00:00 2001 From: Ilya Andreev Date: Thu, 16 Jun 2022 23:01:51 +0300 Subject: [PATCH 3/5] Message directly in chat command --- .../mrbrikster/chatty/chat/ChatListener.java | 15 +++++++-- .../mrbrikster/chatty/chat/ChatManager.java | 31 +++++++++++++++---- .../event/ChattyAsyncPlayerChatEvent.java | 28 +++++++++++++++++ 3 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 spigot/src/main/java/ru/mrbrikster/chatty/chat/event/ChattyAsyncPlayerChatEvent.java diff --git a/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java b/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java index 2a6f7c82..748897ab 100644 --- a/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java +++ b/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java @@ -17,6 +17,7 @@ import ru.mrbrikster.chatty.Chatty; import ru.mrbrikster.chatty.api.events.ChattyMessageEvent; import ru.mrbrikster.chatty.bungee.BungeeBroadcaster; +import ru.mrbrikster.chatty.chat.event.ChattyAsyncPlayerChatEvent; import ru.mrbrikster.chatty.dependencies.DependencyManager; import ru.mrbrikster.chatty.dependencies.PlayerTagManager; import ru.mrbrikster.chatty.dependencies.VaultHook; @@ -97,9 +98,17 @@ public void execute(@NotNull Listener listener, @NotNull Event event) { private void onChat(AsyncPlayerChatEvent event) { final Player player = event.getPlayer(); - Pair chatMessagePair = getChat(player, event.getMessage()); - Chat chat = chatMessagePair.getA(); - String message = chatMessagePair.getB(); + Chat chat; + String message; + + if (event instanceof ChattyAsyncPlayerChatEvent) { + chat = ((ChattyAsyncPlayerChatEvent) event).getChat(); + message = event.getMessage(); + } else { + Pair chatMessagePair = getChat(player, event.getMessage()); + chat = chatMessagePair.getA(); + message = chatMessagePair.getB(); + } if (chat == null) { event.setCancelled(true); diff --git a/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatManager.java b/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatManager.java index 1c93138f..8f4ac11f 100644 --- a/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatManager.java +++ b/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatManager.java @@ -3,13 +3,16 @@ import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import net.amoebaman.util.ArrayWrapper; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.player.AsyncPlayerChatEvent; import ru.mrbrikster.baseplugin.commands.BukkitCommand; import ru.mrbrikster.baseplugin.config.Configuration; import ru.mrbrikster.baseplugin.config.ConfigurationNode; import ru.mrbrikster.chatty.Chatty; import ru.mrbrikster.chatty.chat.Chat.ChatBuilder; +import ru.mrbrikster.chatty.chat.event.ChattyAsyncPlayerChatEvent; import ru.mrbrikster.chatty.util.Sound; import lombok.Getter; @@ -20,10 +23,7 @@ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.regex.Pattern; public class ChatManager { @@ -121,8 +121,27 @@ public void handle(CommandSender sender, String label, String[] args) { } if (chat.isWriteAllowed((Player) sender)) { - jsonStorage.setProperty((Player) sender, "chat", new JsonPrimitive(chat.getName())); - sender.sendMessage(Chatty.instance().messages().get("chat-command.chat-switched").replace("{chat}", chat.getDisplayName())); + if (args.length == 0) { + jsonStorage.setProperty((Player) sender, "chat", new JsonPrimitive(chat.getName())); + sender.sendMessage(Chatty.instance().messages().get("chat-command.chat-switched").replace("{chat}", chat.getDisplayName())); + } else { + Bukkit.getScheduler().runTaskAsynchronously(Chatty.instance(), () -> { + AsyncPlayerChatEvent event = new ChattyAsyncPlayerChatEvent( + (Player) sender, + String.join(" ", args), + chat); + + Bukkit.getPluginManager().callEvent(event); + + if (!event.isCancelled()) { + for (Player recipient : event.getRecipients()) { + recipient.sendMessage(String.format(event.getFormat(), + event.getPlayer().getDisplayName(), + event.getMessage())); + } + } + }); + } } else { sender.sendMessage(Chatty.instance().messages().get("chat-command.no-chat-permission")); } diff --git a/spigot/src/main/java/ru/mrbrikster/chatty/chat/event/ChattyAsyncPlayerChatEvent.java b/spigot/src/main/java/ru/mrbrikster/chatty/chat/event/ChattyAsyncPlayerChatEvent.java new file mode 100644 index 00000000..73c84caa --- /dev/null +++ b/spigot/src/main/java/ru/mrbrikster/chatty/chat/event/ChattyAsyncPlayerChatEvent.java @@ -0,0 +1,28 @@ +package ru.mrbrikster.chatty.chat.event; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.jetbrains.annotations.NotNull; +import ru.mrbrikster.chatty.chat.Chat; + +import lombok.Getter; + +import java.util.HashSet; + +public class ChattyAsyncPlayerChatEvent extends AsyncPlayerChatEvent { + + private @Getter final Chat chat; + + /**. + * @param who the chat sender + * @param message the message sent + * @param chat the chat to send message + */ + public ChattyAsyncPlayerChatEvent(@NotNull Player who, @NotNull String message, Chat chat) { + super(true, who, message, new HashSet<>(Bukkit.getOnlinePlayers())); + + this.chat = chat; + } + +} From 568365b0bdbcc705a2f3f9369793f3fa2ebac82a Mon Sep 17 00:00:00 2001 From: Kapitowa Date: Thu, 16 Jun 2022 23:06:49 +0300 Subject: [PATCH 4/5] fix rare UnknownFormatConversionException --- .../main/java/ru/mrbrikster/chatty/chat/ChatListener.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java b/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java index 2a6f7c82..efc6e924 100644 --- a/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java +++ b/spigot/src/main/java/ru/mrbrikster/chatty/chat/ChatListener.java @@ -32,6 +32,7 @@ import java.util.IdentityHashMap; import java.util.List; import java.util.Map; +import java.util.UnknownFormatConversionException; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -384,7 +385,12 @@ private void performJsonMessage(AsyncPlayerChatEvent event, Chat chat) { String strippedHexFormat = TextUtil.stripHex(format); if (!strippedHexFormat.equals(format)) { - event.setFormat(strippedHexFormat); + try { + event.setFormat(strippedHexFormat); + } + catch (UnknownFormatConversionException exception) { + //do nothing if strippedHexFormat is broken + } } } From 74d4e1332ae8e911b7338eff177a0718c22ab1c6 Mon Sep 17 00:00:00 2001 From: Ilya Andreev Date: Thu, 16 Jun 2022 23:09:53 +0300 Subject: [PATCH 5/5] Bump new version --- build.gradle | 2 +- spigot/src/main/resources/config.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 9b4fe0e1..3c7bdf9d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ allprojects { group = 'ru.mrbrikster' - version = '2.19.10' + version = '2.19.11' } subprojects { diff --git a/spigot/src/main/resources/config.yml b/spigot/src/main/resources/config.yml index bcd7850a..93c0c30e 100644 --- a/spigot/src/main/resources/config.yml +++ b/spigot/src/main/resources/config.yml @@ -78,7 +78,7 @@ general: # *cooldown* - message cooldown in seconds (bypass permission - chatty.cooldown.). # *money* - message price (depends on Vault). # *permission* - check permissions for this chat? Default: true. -# *command* - Command that is used to switch to chat to use it by default if symbol is not specified. Default: empty. +# *command* - Command that is used to switch chat to use it by default if symbol is not specified OR to write at chat: / . Default: empty. # *aliases* - Aliases for command. Default: empty. chats: local: