AdvancedPlugins / Chat

The Best Chat Plugin for Spigot Servers, including AI chat monitoring, endless formatting capabilities, custom commands and way more
4 stars 5 forks source link

External emojis cloning properties from channel clickable #40

Closed Schroddinger closed 3 months ago

Schroddinger commented 5 months ago

Describe the bug

The channel shows the following message on hover (which is correct). image

When an external plugin like Oraxen, uses emojis on the chat, said emoji will also display the channel message on hover. It can also be clicked and it will execute the command to change channels. image

How to reproduce

  1. Install a plugin like Oraxen to manage emojis.
  2. In Oraxen's settings.yml set chat_handler to legacy mode.
  3. In AdvancedChat configure hover and click actions in the channel prefix.

In Oraxen:

Chat:
  # If glyphs do not show up in chat, try setting this to LEGACY
  chat_handler: LEGACY # Valid once are MODERN & LEGACY

In AdvancedChat:

prefix:
  enabled: true
  channelPrefix: "%channel_color%[&f%channel_name%%channel_color%] "
  hover: 
    - '<yellow>Join %channel_id%</yellow> <white>%channel_name%</white>'
  click: 'RUN_COMMAND:/channel join %channel_id%'

Screenshots / Videos

No response

Server Log

No response

ThomasWega commented 4 months ago

Hey! We have completely revamped our colors logic. When new update hits, please try this again, it should be fixed hopefully.

ThomasWega commented 4 months ago

Hey! What about now, on the latest version?

Schroddinger commented 4 months ago

I've run the last server in a dev environment and got this when trying to send a message containing the emoji:

[16:21:34 ERROR]: Could not pass event AsyncPlayerChatEvent to AdvancedChat v1.1.6
net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.internal.parser.ParsingExceptionImpl: Legacy formatting codes have been detected in a MiniMessage string - this is unsupported behaviour. Please refer to the Adventure documentation (https://docs.advntr.dev) for more information.
        test §f
             ^^
        at net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.internal.parser.TokenParser.parseString(TokenParser.java:170) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.internal.parser.TokenParser.resolvePreProcessTags(TokenParser.java:112) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.MiniMessageParser.parseToTree(MiniMessageParser.java:195) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.MiniMessageParser.parseFormat(MiniMessageParser.java:209) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.MiniMessageImpl.deserialize(MiniMessageImpl.java:79) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.impl.kyori.adventure.text.minimessage.MiniMessageImpl.deserialize(MiniMessageImpl.java:45) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.utils.MiniMessageConverter.getFromLegacy(MiniMessageConverter.java:49) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.utils.TextNew.render(TextNew.java:70) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.utils.TextNew.stripColor(TextNew.java:62) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.abilities.custom.OnMessageTrigger.stripMsg(OnMessageTrigger.java:60) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.abilities.custom.OnMessageTrigger.activate(OnMessageTrigger.java:30) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.listeners.ChatListener.onChat(ChatListener.java:51) ~[AdvancedChat-1.1.6.jar:?]
        at net.advancedplugins.chat.Core.lambda$registerChatListener$2(Core.java:427) ~[AdvancedChat-1.1.6.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:git-Purpur-2169]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.4.jar:git-Purpur-2169]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.4.jar:git-Purpur-2169]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.adventure.ChatProcessor.post(ChatProcessor.java:416) ~[purpur-1.20.4.jar:git-Purpur-2169]
        at io.papermc.paper.adventure.ChatProcessor.process(ChatProcessor.java:102) ~[purpur-1.20.4.jar:git-Purpur-2169]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.chat(ServerGamePacketListenerImpl.java:2389) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.broadcastChatMessage(ServerGamePacketListenerImpl.java:2518) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChat$14(ServerGamePacketListenerImpl.java:2238) ~[?:?]
        at net.minecraft.util.FutureChain.lambda$append$1(FutureChain.java:27) ~[purpur-1.20.4.jar:git-Purpur-2169]
        at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?]
        at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]

Is that §f from AdvancedChat?

ThomasWega commented 4 months ago

Should be good now in 1.2.0. Merge somehow broke a PR

Schroddinger commented 4 months ago

Yup, now it works, and no information is cloned into the emoji.

image

ThomasWega commented 3 months ago

Perfect. Thank you. And sorry for the delay. We've needed to completely revamp the color logic. People mixing minimessage, legacy and legacy but with custom format line &#HEX all in the same message is such a mess to handle.