1
0
mirror of https://github.com/GeyserMC/Geyser.git synced 2026-01-06 15:41:50 +00:00

Resolve skin issue on 1.21.90 - goodbye steve, see you with the next skin bug!

Fixes https://github.com/GeyserMC/Geyser/issues/5599
This commit is contained in:
onebeastchris
2025-06-17 20:10:20 +02:00
parent 55d9313967
commit 5627107a59
2 changed files with 418 additions and 1 deletions

View File

@@ -43,6 +43,7 @@ import org.geysermc.geyser.entity.type.player.SkullPlayerEntity;
import org.geysermc.geyser.session.GeyserSession;
import org.geysermc.geyser.session.auth.BedrockClientData;
import org.geysermc.geyser.text.GeyserLocale;
import org.geysermc.geyser.util.FileUtils;
import java.awt.*;
import java.io.IOException;
@@ -54,6 +55,8 @@ import java.util.function.Consumer;
public class SkinManager {
static final String GEOMETRY = new String(FileUtils.readAllBytes("bedrock/geometries/geo.json"), StandardCharsets.UTF_8);
/**
* Builds a Bedrock player list entry from our existing, cached Bedrock skin information
*/
@@ -171,7 +174,7 @@ public class SkinManager {
.skinResourcePatch(geometry.geometryName())
.skinData(ImageData.of(skin.skinData()))
.capeData(ImageData.of(cape.capeData()))
.geometryData(geometry.geometryData())
.geometryData(geometry.geometryData().isBlank() ? GEOMETRY : geometry.geometryData())
.premium(true)
.capeId(cape.capeId())
.fullSkinId(skinId)

View File

@@ -0,0 +1,414 @@
{
"format_version" : "1.12.0",
"minecraft:geometry" : [
{
"bones" : [
{
"name" : "body",
"parent" : "waist",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"name" : "waist",
"pivot" : [ 0.0, 12.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -5.0, 8.0, 3.0 ],
"size" : [ 10, 16, 1 ],
"uv" : [ 0, 0 ]
}
],
"name" : "cape",
"parent" : "body",
"pivot" : [ 0.0, 24.0, 3.0 ],
"rotation" : [ 0.0, 180.0, 0.0 ]
}
],
"description" : {
"identifier" : "geometry.cape",
"texture_height" : 32,
"texture_width" : 64
}
},
{
"bones" : [
{
"name" : "root",
"pivot" : [ 0.0, 0.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -4.0, 12.0, -2.0 ],
"size" : [ 8, 12, 4 ],
"uv" : [ 16, 16 ]
}
],
"name" : "body",
"parent" : "waist",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"name" : "waist",
"parent" : "root",
"pivot" : [ 0.0, 12.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -4.0, 24.0, -4.0 ],
"size" : [ 8, 8, 8 ],
"uv" : [ 0, 0 ]
}
],
"name" : "head",
"parent" : "body",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"name" : "cape",
"parent" : "body",
"pivot" : [ 0.0, 24, 3.0 ]
},
{
"cubes" : [
{
"inflate" : 0.50,
"origin" : [ -4.0, 24.0, -4.0 ],
"size" : [ 8, 8, 8 ],
"uv" : [ 32, 0 ]
}
],
"name" : "hat",
"parent" : "head",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ 4.0, 12.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 32, 48 ]
}
],
"name" : "leftArm",
"parent" : "body",
"pivot" : [ 5.0, 22.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ 4.0, 12.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 48, 48 ]
}
],
"name" : "leftSleeve",
"parent" : "leftArm",
"pivot" : [ 5.0, 22.0, 0.0 ]
},
{
"name" : "leftItem",
"parent" : "leftArm",
"pivot" : [ 6.0, 15.0, 1.0 ]
},
{
"cubes" : [
{
"origin" : [ -8.0, 12.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 40, 16 ]
}
],
"name" : "rightArm",
"parent" : "body",
"pivot" : [ -5.0, 22.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -8.0, 12.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 40, 32 ]
}
],
"name" : "rightSleeve",
"parent" : "rightArm",
"pivot" : [ -5.0, 22.0, 0.0 ]
},
{
"locators" : {
"lead_hold" : [ -6, 15, 1 ]
},
"name" : "rightItem",
"parent" : "rightArm",
"pivot" : [ -6, 15, 1 ]
},
{
"cubes" : [
{
"origin" : [ -0.10, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 16, 48 ]
}
],
"name" : "leftLeg",
"parent" : "root",
"pivot" : [ 1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -0.10, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 0, 48 ]
}
],
"name" : "leftPants",
"parent" : "leftLeg",
"pivot" : [ 1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -3.90, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 0, 16 ]
}
],
"name" : "rightLeg",
"parent" : "root",
"pivot" : [ -1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -3.90, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 0, 32 ]
}
],
"name" : "rightPants",
"parent" : "rightLeg",
"pivot" : [ -1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -4.0, 12.0, -2.0 ],
"size" : [ 8, 12, 4 ],
"uv" : [ 16, 32 ]
}
],
"name" : "jacket",
"parent" : "body",
"pivot" : [ 0.0, 24.0, 0.0 ]
}
],
"description" : {
"identifier" : "geometry.humanoid.custom",
"texture_height" : 64,
"texture_width" : 64,
"visible_bounds_height" : 2,
"visible_bounds_offset" : [ 0, 1, 0 ],
"visible_bounds_width" : 1
}
},
{
"bones" : [
{
"name" : "root",
"pivot" : [ 0.0, 0.0, 0.0 ]
},
{
"name" : "waist",
"parent" : "root",
"pivot" : [ 0.0, 12.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -4.0, 12.0, -2.0 ],
"size" : [ 8, 12, 4 ],
"uv" : [ 16, 16 ]
}
],
"name" : "body",
"parent" : "waist",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -4.0, 24.0, -4.0 ],
"size" : [ 8, 8, 8 ],
"uv" : [ 0, 0 ]
}
],
"name" : "head",
"parent" : "body",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.50,
"origin" : [ -4.0, 24.0, -4.0 ],
"size" : [ 8, 8, 8 ],
"uv" : [ 32, 0 ]
}
],
"name" : "hat",
"parent" : "head",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -3.90, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 0, 16 ]
}
],
"name" : "rightLeg",
"parent" : "root",
"pivot" : [ -1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -3.90, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 0, 32 ]
}
],
"name" : "rightPants",
"parent" : "rightLeg",
"pivot" : [ -1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ -0.10, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 16, 48 ]
}
],
"name" : "leftLeg",
"parent" : "root",
"pivot" : [ 1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -0.10, 0.0, -2.0 ],
"size" : [ 4, 12, 4 ],
"uv" : [ 0, 48 ]
}
],
"name" : "leftPants",
"parent" : "leftLeg",
"pivot" : [ 1.90, 12.0, 0.0 ]
},
{
"cubes" : [
{
"origin" : [ 4.0, 11.50, -2.0 ],
"size" : [ 3, 12, 4 ],
"uv" : [ 32, 48 ]
}
],
"name" : "leftArm",
"parent" : "body",
"pivot" : [ 5.0, 21.50, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ 4.0, 11.50, -2.0 ],
"size" : [ 3, 12, 4 ],
"uv" : [ 48, 48 ]
}
],
"name" : "leftSleeve",
"parent" : "leftArm",
"pivot" : [ 5.0, 21.50, 0.0 ]
},
{
"name" : "leftItem",
"parent" : "leftArm",
"pivot" : [ 6, 14.50, 1 ]
},
{
"cubes" : [
{
"origin" : [ -7.0, 11.50, -2.0 ],
"size" : [ 3, 12, 4 ],
"uv" : [ 40, 16 ]
}
],
"name" : "rightArm",
"parent" : "body",
"pivot" : [ -5.0, 21.50, 0.0 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -7.0, 11.50, -2.0 ],
"size" : [ 3, 12, 4 ],
"uv" : [ 40, 32 ]
}
],
"name" : "rightSleeve",
"parent" : "rightArm",
"pivot" : [ -5.0, 21.50, 0.0 ]
},
{
"locators" : {
"lead_hold" : [ -6, 14.50, 1 ]
},
"name" : "rightItem",
"parent" : "rightArm",
"pivot" : [ -6, 14.50, 1 ]
},
{
"cubes" : [
{
"inflate" : 0.250,
"origin" : [ -4.0, 12.0, -2.0 ],
"size" : [ 8, 12, 4 ],
"uv" : [ 16, 32 ]
}
],
"name" : "jacket",
"parent" : "body",
"pivot" : [ 0.0, 24.0, 0.0 ]
},
{
"name" : "cape",
"parent" : "body",
"pivot" : [ 0.0, 24, -3.0 ]
}
],
"description" : {
"identifier" : "geometry.humanoid.customSlim",
"texture_height" : 64,
"texture_width" : 64,
"visible_bounds_height" : 2,
"visible_bounds_offset" : [ 0, 1, 0 ],
"visible_bounds_width" : 1
}
}
]
}