Skip to content

Fix Java player skins not rendering on Bedrock when texture signature is absent#6487

Closed
rozqn wants to merge 1 commit into
GeyserMC:masterfrom
rozqn:fix/player-skin-missing-signature
Closed

Fix Java player skins not rendering on Bedrock when texture signature is absent#6487
rozqn wants to merge 1 commit into
GeyserMC:masterfrom
rozqn:fix/player-skin-missing-signature

Conversation

@rozqn

@rozqn rozqn commented Jun 27, 2026

Copy link
Copy Markdown

Problem

PlayerEntity's GameProfile constructor calls profile.getTextures(true), which requires a valid texture signature. Every other texture call site uses false:

  • skin/SkinManager.javaprofile.getTextures(false)
  • entity/type/player/AvatarEntity.javaprofile.getTextures(false)

When a player's textures property has no signature (signature=null), getTextures(true) throws, the catch sets textures = null, and that player renders as the default (Steve) skin for Bedrock viewers.

This reproduces consistently on Minecraft Java 26.2 (tested via the #6452 preview build): Java players' profiles arrive with the texture value present but signature=null, so all Java players show as default skins to Bedrock players.

Debug log:

Error loading textures for player! GameProfile{name=..., properties=[Property{name=textures, value=<valid skin+cape>, signature=null}]}

Fix

Use profile.getTextures(false) in PlayerEntity, matching the other call sites. The skin/cape URLs are still present and usable without signature verification.

Testing

Built and ran on a Paper 26.2 server with Geyser + Floodgate. Java players' skins and capes now render correctly for Bedrock players.

PlayerEntity requested signed textures via getTextures(true), while every other
call site (SkinManager, AvatarEntity) uses getTextures(false). When a profile's
textures property has no signature, getTextures(true) throws, textures is set to
null, and the player falls back to the default skin for Bedrock viewers.
@Tim203

Tim203 commented Jun 27, 2026

Copy link
Copy Markdown
Member

This is intentional, unless the method throws an exception that we don't catch.
This looks unlikely though, given that you provided a debug log with the exact message that would be logged when it was catched properly.
Players need to have a skin texture that's signed by Mojang, this is what a vanilla Minecraft client does too.
Are you using a modified client, or am I missing something here?

@rozqn rozqn closed this Jun 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants