dzwdz / chat_heads

Mozilla Public License 2.0
57 stars 34 forks source link

chat heads breaks after doing /msg #30

Closed SkyTheNerd closed 1 year ago

SkyTheNerd commented 2 years ago

if you do /msg the player heads stop showing chatheads broken .

Fourmisain commented 2 years ago

That is weird, never saw this before. Which game version are you playing on? What settings do you use?

One way this could happen is if you're using default settings and the server doesn't attach sender UUIDs to messages, except for whispers (this could be an oversight on the server or plugin being used). If Chat Heads sees a UUID, it'll disable its heuristics / name matching and only match heads by their UUID (that's what "Smart heuristics" does) - but since the messages have none, they don't get any heads anymore.

One way to fix that is to turn off Smart heuristics, so it'll keep trying to use heuristics. Alternatively you could set the Sender detection to "Heuristic only", which could help in case the server sends wrong UUIDs.

Can you test if this fixes the issue for you? Because I couldn't reproduce this issue on 1.18 or 1.19 by myself.

SkyTheNerd commented 2 years ago

It works fine on a singleplayer world but the server I'm on (a paper server) breaks with these settings. image It does work if I disable Smart Heuristics though.

I'm playing on 1.19 and I'm using these mods. image

Fourmisain commented 2 years ago

It does work if I disable Smart Heuristics though.

That seems to confirm the theory of the server "leaking" the sender UUID in whispers. This might be a bug with Paper (or one of used the plugins) - or maybe that's intentional, I have no idea.

This isn't something Chat Heads can "fix" - though maybe it is a sign that the default settings should be changed. I think I'll try setting up a Paper server and do some testing on that.

But yeah, if turning off Smart Heuristics works for you, keep it that way, that's what the settings are there for. I'll keep this issue open for now as a reminder for myself.

MrSkill4ik commented 1 year ago

Is there any news on this issue?

Fourmisain commented 1 year ago

I haven't yet looked into it, but as suggested: If you're having this issue, turning off Smart Heuristics will fix it.

(Maybe I should just remove smart heuristics alltogether, since it is based on an apparent false assumption.)

Fourmisain commented 1 year ago

P.S. I just tested this on a local Paper 1.19.4 server with default settings and there this issue does not exist (the server is sending UUIDs). I'm also not seeing a setting for this either - so maybe it's a plugin?

Fourmisain commented 1 year ago

P.P.S. Tested with FreedomChat and also could not reproduce the issue (never sends UUIDs).

Fourmisain commented 1 year ago

Tested with No Chat Reports from TechnicallyCoded and after a /msg to myself, the next message kicks me from the server with the message "Received chat packet with missing or invalid signature."...?!

I think this could actually be the original cause; on 1.19 one would not have been kicked for this (and the message should have a UUID), so it looks like a bug in that plugin.

MrSkill4ik commented 1 year ago

Can I ask you for Discord, since I'm making my own chat plugin and I don't understand why when I'm in "SendMessage"(Paper) entering the player's UUID into the message, she still doesn't want to display her head?

Fourmisain commented 1 year ago

Sorry, never used Paper or wrote plugins for it. The simplest reason for why you're not seeing the head would be that the player with that UUID is not on the server. Chat Heads (or rather Minecraft itself) will only load player info for players that joined the server.


About No Chat Reports: I had to disable enforce-secure-profile and could now reproduce the issue! It looks like No Chat Reports is intentionally sending UUIDs with whispers, probably so that players can click the sender's name to respond to them. I wonder if I can somehow ignore whispers in the UUID detection...

Fourmisain commented 1 year ago

Oh, wait a second, I did not actually reproduce the issue - I accidentally left Chat Heads on UUID only mode!

This is with default settings: test

Note that I can still hover over the name (it will show the UUID with advanced tooltips) and click to respond. hover

All these messages are system (server-sent) messages without sender UUID. The whisper does contain the sender's UUID, but it is part of the message content and not actually set as the sender. So in other words, everything appears to be in order.

I think the original issue only applied to No Chat Reports 1.0.0 since there's a mention of an "issue causing /msg messages to still be using the vanilla command processor" that was fixed in 1.0.1. That means /msg did send whispers like vanilla, with sender UUID and everything - but not anymore.

So I believe this issue can be closed, unless someone can confirm that this is still happening.