GeyserMC / Geyser

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

Transparent player skin issues - player and player head rendering #1888

Open Xenapte opened 3 years ago

Xenapte commented 3 years ago

Describe the bug

Java edition players can have transparent skins on their accounts. When loaded on Java Edition the transparency is ignored and treated as white pixels - a player with a completely transparent skin will just be completely white. Same with their player heads. However on Bedrock with Geyser, that player skin is rendered truly transparent instead of white, almost like the player has invisibility effects. That means it can only be spotted by armor/item, and its name. Also player heads of that player will fail to render: while other player heads can be rendered normally like on Java, heads of a transparent player skin just use the default Steve head on Geyser Bedrock.

To Reproduce

Steps to reproduce the behavior:

  1. Get someone with a transparent skin on an online-mode server with Geyser enabled.
  2. Log on the server with both Java and Bedrock accounts.
  3. Check how that player looks like on different editions.
  4. Also try rendering its head by /give @s player_head{SkullOwner: player_name} and placing down the head.

Expected behavior

The player and player head are white on Java but not on Bedrock. The player is transparent and the head uses the default Steve skin.

Note: player head item itself is always default skin (I think it's because Bedrock does not support custom heads yet) but the player head block placed should be rendered normally if with a non-transparent skin.

Screenshots / Videos

Server Version and Plugins

I think this bug is universal (at least it occurs on both Windows 10 and Android Bedrock, with the latest Geyser-Spigot and Paper build) since Geyser does not convert the transparent pixels to white as on Java.

Camotoy commented 3 years ago

I believe I've also seen this with normal player skins.

Camotoy commented 3 years ago

Is there an example player who owns a transculent skin?

EasyClifton commented 3 years ago

You can (or at least could) set the armor model as your skin. The default model has no leggings, so there was an invisible part, and that rendered just fine on vanilla bedrock.

Xenapte commented 3 years ago

Is there an example player who owns a transculent skin?

As said above I do have someone on my server with this skin, but after asking he told me he didn't want me to post his username publicly. But here below is the skin he used (a completely translucent 64x32 image).

Translucent skin ← here it is

Also FYI I made this player login and here is his skin viewed on Java (left) and Bedrock/Geyser (right), with (bottom) and without (top) armor. Note the server is on 1.16; I just used the old textures pack on both platforms. 20210215

skictick commented 3 years ago

Is there an example player who owns a transculent skin?

As said above I do have someone on my server with this skin, but after asking he told me he didn't want me to post his username publicly. But here below is the skin he used (a completely translucent 64x32 image).

Translucent skin ← here it is

Also FYI I made this player login and here is his skin viewed on Java (left) and Bedrock/Geyser (right), with (bottom) and without (top) armor. Note the server is on 1.16; I just used the old textures pack on both platforms. 20210215

good

FPSUsername commented 3 years ago

Screenshot_2021-06-07-15-11-57-063_com mojang minecraftpe

It looks like player heads have more issues on my end. They render not only as just a Steve head instead of an UltimateHeads type, but they render a full Steve model above it.

FPSUsername commented 3 years ago

Screenshot_2021-06-07-20-11-19-735_com mojang minecraftpe

A couple of restarts later and it works fine. The only thing that doesn't work is seeing bedrock skins on Java accounts.

Kas-tle commented 4 months ago

While we should theoretically be able to change the material via OptionalPack, Bedrock unfortunately tends to just glitch out when the player material is changed.