Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-26 00:00:41 +01:00
Fix capes being scaled wrong and invisible skins (#1940)
* Fix capes being scaled wrong and invisible skins * Flush old image objects * Remove alpha workaround and fix more scaling issues * Remove unnecessary scale * Reduce diff Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
Dieser Commit ist enthalten in:
Ursprung
e4e9758950
Commit
e0e435fdc5
@ -413,14 +413,23 @@ public class SkinProvider {
|
|||||||
// if the requested image is a cape
|
// if the requested image is a cape
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
if (image.getWidth() > 64) {
|
if (image.getWidth() > 64) {
|
||||||
image = scale(image, 64, 32);
|
// Prevent weirdly-scaled capes from being cut off
|
||||||
|
BufferedImage newImage = new BufferedImage(128, 64, BufferedImage.TYPE_INT_ARGB);
|
||||||
|
Graphics g = newImage.createGraphics();
|
||||||
|
g.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
|
||||||
|
g.dispose();
|
||||||
|
image.flush();
|
||||||
|
image = scale(newImage, 64, 32);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Very rarely, skins can be larger than Minecraft's default.
|
// Very rarely, skins can be larger than Minecraft's default.
|
||||||
// Bedrock will not render anything above a width of 128.
|
// Bedrock will not render anything above a width of 128.
|
||||||
if (image.getWidth() > 128) {
|
if (image.getWidth() > 128) {
|
||||||
image = scale(image, 128, image.getHeight() / (image.getWidth() / 128));
|
// On Height: Scale by the amount we divided width by, or simply cut down to 128
|
||||||
|
image = scale(image, 128, image.getHeight() >= 256 ? (image.getHeight() / (image.getWidth() / 128)) : 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO remove alpha channel
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] data = bufferedImageToImageData(image);
|
byte[] data = bufferedImageToImageData(image);
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren