As some of you might have already realized, the plugin's original idea is that instead of editing a chat event, it intercepts outgoing chat packets from the server. This means it will work for ANY message the client receives. However, those messages sent in packets are wrapped in JSON. My plugin's core consists of a class whose sole purpose is to parse the JSON strings of the packet into another JSON string which replaced existing occurences of placeholders with their replacement. However, it look like I only made it to search the JSON String in a "shallow" way. Here's an example to show you what I mean:
While this would be parsed properly:
http://i.imgur.com/3dTTDBk.png
This wouldn't!
http://i.imgur.com/DltcGaB.png
All of this because my original code would only look for a text element inside each object of the JsonArray, while, as you can see, the other objects contains no text field, rather another "extra" array with a text object inside it. This time, I modified my code to recursively search the entire JSON string. It will take a bit more time for the parser to work, but that shouldn't be an issue anyway as it will only postpone the chat for about 1-2 ms, and as it's running in an async thread, it should have no impact on actual server performance.