diff --git a/pom.xml b/pom.xml index 3c015f62..e799d6c7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.loohp InteractiveChat - 3.2.9.16 + 3.2.9.17 src/main/java diff --git a/src/main/java/com/loohp/interactivechat/Bungee/InteractiveChatBungee.java b/src/main/java/com/loohp/interactivechat/Bungee/InteractiveChatBungee.java index 20852991..5250d27e 100644 --- a/src/main/java/com/loohp/interactivechat/Bungee/InteractiveChatBungee.java +++ b/src/main/java/com/loohp/interactivechat/Bungee/InteractiveChatBungee.java @@ -486,7 +486,7 @@ public void write(ChannelHandlerContext channelHandlerContext, Object obj, Chann Chat packet = (Chat) obj; forwardedMessages.get(player.getUniqueId()).add(packet.getMessage()); } - super.write(channelHandlerContext, obj, channelPromise); // send it to client + super.write(channelHandlerContext, obj, channelPromise); } }); } @@ -524,7 +524,7 @@ public void write(ChannelHandlerContext channelHandlerContext, Object obj, Chann Chat packet = (Chat) obj; if (packet.getMessage().contains("")) { packet.setMessage(packet.getMessage().replace("", "")); - } else if (player.getServer() != null) { + } else if (hasInteractiveChat(player.getServer())) { UUID messageId = UUID.randomUUID(); messageQueue.add(messageId); //ProxyServer.getInstance().getConsole().sendMessage(new TextComponent(messageId.toString() + " -> " + packet.getMessage())); @@ -541,7 +541,7 @@ public void run() { return; } } - super.write(channelHandlerContext, obj, channelPromise); // send it to client + super.write(channelHandlerContext, obj, channelPromise); } }); } @@ -595,4 +595,15 @@ public void run() { }, 1000); } + private boolean hasInteractiveChat(Server server) { + if (server == null || server.getInfo() == null) { + return false; + } + BackendInteractiveChatData data = serverInteractiveChatInfo.get(server.getInfo().getName()); + if (data == null) { + return false; + } + return data.hasInteractiveChat(); + } + } \ No newline at end of file diff --git a/src/main/java/com/loohp/interactivechat/Modules/PlayernameDisplay.java b/src/main/java/com/loohp/interactivechat/Modules/PlayernameDisplay.java index 680f5174..cfb61022 100644 --- a/src/main/java/com/loohp/interactivechat/Modules/PlayernameDisplay.java +++ b/src/main/java/com/loohp/interactivechat/Modules/PlayernameDisplay.java @@ -113,6 +113,7 @@ public static BaseComponent processPlayer(String placeholder, ICPlayer player, S } String lastColor = ""; + StringBuilder sb = new StringBuilder(); for (int i = 0; i < trim.size(); i++) { diff --git a/src/main/java/com/loohp/interactivechat/Modules/ProcessBungeeRequestedMessage.java b/src/main/java/com/loohp/interactivechat/Modules/ProcessBungeeRequestedMessage.java index 033918e7..e1ab3d63 100644 --- a/src/main/java/com/loohp/interactivechat/Modules/ProcessBungeeRequestedMessage.java +++ b/src/main/java/com/loohp/interactivechat/Modules/ProcessBungeeRequestedMessage.java @@ -5,6 +5,7 @@ import java.util.Optional; import java.util.concurrent.TimeUnit; +import org.apache.commons.text.StringEscapeUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -18,13 +19,14 @@ import com.loohp.interactivechat.Utils.MCVersion; import com.loohp.interactivechat.Utils.PlayerUtils; +import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; public class ProcessBungeeRequestedMessage { public static String processAndRespond(Player reciever, String component) throws Exception { - BaseComponent basecomponent = ChatComponentUtils.join(ComponentSerializer.parse(ChatColorUtils.filterIllegalColorCodes(component))); + BaseComponent basecomponent = ChatComponentUtils.join(ComponentSerializer.parse(ChatColorUtils.filterIllegalColorCodes(StringEscapeUtils.unescapeJava(component)))); BaseComponent originalComponent = ChatComponentUtils.clone(basecomponent); try { @@ -89,6 +91,8 @@ public static String processAndRespond(Player reciever, String component) throws basecomponent = PlayernameDisplay.process(basecomponent, rawMessageKey, sender, unix); } + System.out.println(ComponentSerializer.toString(basecomponent).replace(ChatColor.COLOR_CHAR, '&')); + if (InteractiveChat.AllowMention && sender.isPresent()) { basecomponent = MentionDisplay.process(basecomponent, reciever, sender.get(), rawMessageKey, unix, !Bukkit.isPrimaryThread()); } diff --git a/src/main/java/com/loohp/interactivechat/Utils/ChatColorUtils.java b/src/main/java/com/loohp/interactivechat/Utils/ChatColorUtils.java index 7125ae21..9cb41c5c 100644 --- a/src/main/java/com/loohp/interactivechat/Utils/ChatColorUtils.java +++ b/src/main/java/com/loohp/interactivechat/Utils/ChatColorUtils.java @@ -130,7 +130,7 @@ public static boolean isLegal(String color) { if (color.matches("§[0-9a-fk-or]")) { return true; } - if (color.matches("§x§[0-9A-F]§[0-9A-F]§[0-9A-F]§[0-9A-F]§[0-9A-F]§[0-9A-F]")) { + if (color.matches("§x(§[0-9a-fA-F]){6}")) { return true; } return false; diff --git a/src/main/java/com/loohp/interactivechat/Utils/ChatComponentUtils.java b/src/main/java/com/loohp/interactivechat/Utils/ChatComponentUtils.java index db484278..b269efe0 100644 --- a/src/main/java/com/loohp/interactivechat/Utils/ChatComponentUtils.java +++ b/src/main/java/com/loohp/interactivechat/Utils/ChatComponentUtils.java @@ -25,6 +25,7 @@ import net.md_5.bungee.api.chat.hover.content.Entity; import net.md_5.bungee.api.chat.hover.content.Item; import net.md_5.bungee.api.chat.hover.content.Text; +import net.md_5.bungee.chat.ComponentSerializer; public class ChatComponentUtils { @@ -306,7 +307,7 @@ public static BaseComponent cleanUpLegacyText(BaseComponent basecomponent, Playe } BaseComponent current = null; - for (BaseComponent base : CustomStringUtils.loadExtras(basecomponent)) { + for (BaseComponent base : list) { List thislist = new LinkedList(); if (base instanceof TextComponent) { List texts = Stream.of(TextComponent.fromLegacyText(base.toLegacyText())).map(each -> (TextComponent) each).collect(Collectors.toList());