GeyserMC / Geyser

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
https://geysermc.org
MIT License
4.7k stars 673 forks source link

Wolf and cat collars default to white and reset to white instead of red #4455

Closed swiffyjk closed 4 months ago

swiffyjk commented 6 months ago

Describe the bug

On Java clients, wolves and cats have a red collar by default and this shows up fine on said clients. On Bedrock clients, wolves and cats show up with white collars by default (even if tamed on Bedrock) but show up with red collars on Java. A Bedrock client cannot dye this collar red. If, however, a Bedrock client dyes a wolf with a red collar to another colour, this will appear fine and will not reset to white. If after dyeing it this way, a Bedrock client dyes it red again, it does show red temporarily, but it will appear white after a relog, restart, or sometimes after sleeping.

To Reproduce

(fabric-api, floodgate, geyser, and hurricane-fabric installed on their latest versions)

  1. Spawn a wolf on either Java or Bedrock
  2. Restart the server or go to sleep if the bug doesn't immediately trigger
  3. View the wolf on a Bedrock client - its collar will be white instead of red

Expected behaviour

The wolf or cat's collar should spawn as red, and shouldn't reset back to white after being re-dyed red

Screenshots / Videos

image image

Server Version and Plugins

Geyser-Fabric Minecraft Version: 1.20.4 Fabric Loader Version: 0.15.7

Geyser Dump

https://dump.geysermc.org/m82L6TSe76psjsp5MSAxoEZVKKCKOUZJ

Geyser Version

2.2.2-SNAPSHOT (git-master-f8e6d26)

Minecraft: Bedrock Edition Device/Version

1.20.62 on PS4/Windows11

Additional Context

No response

swiffyjk commented 6 months ago

Extra info: This bug happens with the latest Geyser version on Fabric, including without Floodgate, GeyserOptionalPack or Hurricane-Fabric. It happens no matter the config or minecraft config (to my testing.) It happens in any gamemode. There are no visible errors related to the wolf's metadata or collar colour in the terminal with debug-mode enabled. When the wolf's collar is dyed white, it looks the exact same as it would if it was red on Bedrock. Dyeing the wolf collar white still shows up as white. The wolf collar is still visible and the eye change with taming is still visible but the collar white instead of red. The most sure-fire way to trigger the bug on a re-dyed red collar is by rejoining on a Bedrock client, but unloading the chunks by travelling out far enough also works. If a Java client tames a wolf in front of the Bedrock client, the collar will still appear white. I've attached a video of the bug: https://github.com/GeyserMC/Geyser/assets/80045453/14cd6d68-47fc-4635-8583-7b2d7995c595

onebeastchris commented 6 months ago

Entities seem to have different metadata in 1.20.60; which wasn't properly addressed yet - this is likely one of the results of it. I'll look into it shortly. Thanks for the bug report & detailed testing!