From 9f4f2aca94194ce0aca506dd4b8473dce90fb0ab Mon Sep 17 00:00:00 2001 From: davchoo Date: Thu, 28 Jul 2022 14:33:22 -0400 Subject: [PATCH] Revert "Crop and reorder skull textures to eliminate unused space" This reverts commit 15fd5353e1c2b8bcffd6d5986095a3646a6e7bf9. --- .../geyser/pack/SkullResourcePackManager.java | 33 +++++++++---------- .../models/blocks/player_skull.geo.json | 33 +++---------------- .../models/blocks/player_skull_floor.geo.json | 31 +++-------------- .../models/blocks/player_skull_hand.geo.json | 31 +++-------------- .../models/blocks/player_skull_wall.geo.json | 31 +++-------------- 5 files changed, 32 insertions(+), 127 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/pack/SkullResourcePackManager.java b/core/src/main/java/org/geysermc/geyser/pack/SkullResourcePackManager.java index 0fda6e49d..e61b9190d 100644 --- a/core/src/main/java/org/geysermc/geyser/pack/SkullResourcePackManager.java +++ b/core/src/main/java/org/geysermc/geyser/pack/SkullResourcePackManager.java @@ -53,7 +53,7 @@ import java.util.zip.ZipOutputStream; public class SkullResourcePackManager { - private static final long RESOURCE_PACK_VERSION = 9; + private static final long RESOURCE_PACK_VERSION = 6; private static final Path SKULL_SKIN_CACHE_PATH = GeyserImpl.getInstance().getBootstrap().getConfigFolder().resolve("cache").resolve("player_skulls"); @@ -112,24 +112,21 @@ public class SkullResourcePackManager { } BufferedImage image = SkinProvider.requestImage(skinUrl, null); - // Resize skins to 48x16 to save on space and memory - BufferedImage skullTexture = new BufferedImage(48, 16, image.getType()); - // Reorder skin parts to fit into the space - // Right, Front, Left, Back, Top, Bottom - head - // Right, Front, Left, Back, Top, Bottom - hat - Graphics g = skullTexture.createGraphics(); - // Right, Front, Left, Back of the head - g.drawImage(image, 0, 0, 32, 8, 0, 8, 32, 16, null); - // Right, Front, Left, Back of the hat - g.drawImage(image, 0, 8, 32, 16, 32, 8, 64, 16, null); - // Top and bottom of the head - g.drawImage(image, 32, 0, 48, 8, 8, 0, 24, 8, null); - // Top and bottom of the hat - g.drawImage(image, 32, 8, 48, 16, 40, 0, 56, 8, null); - g.dispose(); - image.flush(); + if (image.getHeight() != 64) { + // We have to resize legacy skins to 64x64 for them to be displayed properly + BufferedImage modernSkin = new BufferedImage(64, 64, image.getType()); - ImageIO.write(skullTexture, "png", skinPath.toFile()); + Graphics g = modernSkin.createGraphics(); + g.drawImage(image, 0, 0, null); + g.setColor(new Color(0, 0, 0, 0)); + g.fillRect(0, 32, 64, 32); + g.dispose(); + + image.flush(); + image = modernSkin; + } + + ImageIO.write(image, "png", skinPath.toFile()); SKULL_SKINS.put(skinHash, skinPath); GeyserImpl.getInstance().getLogger().debug("Cached player skull to " + skinPath + " for " + skinHash); } diff --git a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull.geo.json b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull.geo.json index 18bd5ea12..2681b406f 100644 --- a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull.geo.json +++ b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull.geo.json @@ -4,8 +4,8 @@ { "description": { "identifier": "geometry.geyser.player_skull", - "texture_width": 48, - "texture_height": 16 + "texture_width": 64, + "texture_height": 64 }, "bones": [ { @@ -33,18 +33,7 @@ "parent": "root_z", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 8, -4], - "size": [8, 8, 8], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [0, 0], "uv_size": [8, 8]}, - "south": {"uv": [24, 0], "uv_size": [8, 8]}, - "west": {"uv": [16, 0], "uv_size": [8, 8]}, - "up": {"uv": [32, 0], "uv_size": [8, 8]}, - "down": {"uv": [40, 8], "uv_size": [8, -8]} - } - } + {"origin": [-4, 8, -4], "size": [8, 8, 8], "uv": [0, 0]} ] }, { @@ -52,22 +41,10 @@ "parent": "player_skull", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 8, -4], - "size": [8, 8, 8], - "inflate": 0.25, - "uv": { - "north": {"uv": [8, 8], "uv_size": [8, 8]}, - "east": {"uv": [0, 8], "uv_size": [8, 8]}, - "south": {"uv": [24, 8], "uv_size": [8, 8]}, - "west": {"uv": [16, 8], "uv_size": [8, 8]}, - "up": {"uv": [32, 8], "uv_size": [8, 8]}, - "down": {"uv": [40, 16], "uv_size": [8, -8]} - } - } + {"origin": [-4, 8, -4], "size": [8, 8, 8], "uv": [32, 0], "inflate": 0.25} ] } ] } ] -} \ No newline at end of file +} diff --git a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_floor.geo.json b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_floor.geo.json index da35cb4de..992ab4aab 100644 --- a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_floor.geo.json +++ b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_floor.geo.json @@ -4,8 +4,8 @@ { "description": { "identifier": "geometry.geyser.player_skull_floor_${quadrant}", - "texture_width": 48, - "texture_height": 16 + "texture_width": 64, + "texture_height": 64 }, "bones": [ { @@ -13,18 +13,7 @@ "pivot": [0, 24, 0], "rotation": [0, ${y_rotation}, 0], "cubes": [ - { - "origin": [-4, 0.5, -4], - "size": [8, 8, 8], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [0, 0], "uv_size": [8, 8]}, - "south": {"uv": [24, 0], "uv_size": [8, 8]}, - "west": {"uv": [16, 0], "uv_size": [8, 8]}, - "up": {"uv": [32, 0], "uv_size": [8, 8]}, - "down": {"uv": [40, 8], "uv_size": [8, -8]} - } - } + {"origin": [-4, 0.5, -4], "size": [8, 8, 8], "uv": [0, 0]} ] }, { @@ -32,19 +21,7 @@ "parent": "head", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 0.5, -4], - "size": [8, 8, 8], - "inflate": 0.5, - "uv": { - "north": {"uv": [8, 8], "uv_size": [8, 8]}, - "east": {"uv": [0, 8], "uv_size": [8, 8]}, - "south": {"uv": [24, 8], "uv_size": [8, 8]}, - "west": {"uv": [16, 8], "uv_size": [8, 8]}, - "up": {"uv": [32, 8], "uv_size": [8, 8]}, - "down": {"uv": [40, 16], "uv_size": [8, -8]} - } - } + {"origin": [-4, 0.5, -4], "size": [8, 8, 8], "uv": [32, 0], "inflate": 0.5} ] } ] diff --git a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_hand.geo.json b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_hand.geo.json index 5bd9e95a8..6ad5bea1b 100644 --- a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_hand.geo.json +++ b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_hand.geo.json @@ -4,26 +4,15 @@ { "description": { "identifier": "geometry.geyser.player_skull_hand", - "texture_width": 48, - "texture_height": 16 + "texture_width": 64, + "texture_height": 64 }, "bones": [ { "name": "head", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 4, -4], - "size": [8, 8, 8], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [0, 0], "uv_size": [8, 8]}, - "south": {"uv": [24, 0], "uv_size": [8, 8]}, - "west": {"uv": [16, 0], "uv_size": [8, 8]}, - "up": {"uv": [32, 0], "uv_size": [8, 8]}, - "down": {"uv": [40, 8], "uv_size": [8, -8]} - } - } + {"origin": [-4, 4, -4], "size": [8, 8, 8], "uv": [0, 0]} ] }, { @@ -31,19 +20,7 @@ "parent": "head", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 4, -4], - "size": [8, 8, 8], - "inflate": 0.5, - "uv": { - "north": {"uv": [8, 8], "uv_size": [8, 8]}, - "east": {"uv": [0, 8], "uv_size": [8, 8]}, - "south": {"uv": [24, 8], "uv_size": [8, 8]}, - "west": {"uv": [16, 8], "uv_size": [8, 8]}, - "up": {"uv": [32, 8], "uv_size": [8, 8]}, - "down": {"uv": [40, 16], "uv_size": [8, -8]} - } - } + {"origin": [-4, 4, -4], "size": [8, 8, 8], "uv": [32, 0], "inflate": 0.5} ] } ] diff --git a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_wall.geo.json b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_wall.geo.json index 676a6e7f1..5c39733dd 100644 --- a/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_wall.geo.json +++ b/core/src/main/resources/bedrock/skull_resource_pack/models/blocks/player_skull_wall.geo.json @@ -4,26 +4,15 @@ { "description": { "identifier": "geometry.geyser.player_skull_wall", - "texture_width": 48, - "texture_height": 16 + "texture_width": 64, + "texture_height": 64 }, "bones": [ { "name": "head", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 4, -0.5], - "size": [8, 8, 8], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [0, 0], "uv_size": [8, 8]}, - "south": {"uv": [24, 0], "uv_size": [8, 8]}, - "west": {"uv": [16, 0], "uv_size": [8, 8]}, - "up": {"uv": [32, 0], "uv_size": [8, 8]}, - "down": {"uv": [40, 8], "uv_size": [8, -8]} - } - } + {"origin": [-4, 4, -0.5], "size": [8, 8, 8], "uv": [0, 0]} ] }, { @@ -31,19 +20,7 @@ "parent": "head", "pivot": [0, 24, 0], "cubes": [ - { - "origin": [-4, 4, -0.5], - "size": [8, 8, 8], - "inflate": 0.5, - "uv": { - "north": {"uv": [8, 8], "uv_size": [8, 8]}, - "east": {"uv": [0, 8], "uv_size": [8, 8]}, - "south": {"uv": [24, 8], "uv_size": [8, 8]}, - "west": {"uv": [16, 8], "uv_size": [8, 8]}, - "up": {"uv": [32, 8], "uv_size": [8, 8]}, - "down": {"uv": [40, 16], "uv_size": [8, -8]} - } - } + {"origin": [-4, 4, -0.5], "size": [8, 8, 8], "uv": [32, 0], "inflate": 0.5} ] } ]