diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChainTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChainTransformer.java new file mode 100644 index 0000000..47a69f7 --- /dev/null +++ b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChainTransformer.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2025 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/PackConverter + * + */ + +package org.geysermc.pack.converter.type.texture.transformer.type.block; + +import net.kyori.adventure.key.Key; +import org.geysermc.pack.converter.type.texture.transformer.TextureTransformer; +import org.geysermc.pack.converter.type.texture.transformer.TransformContext; +import org.geysermc.pack.converter.util.ImageUtil; +import org.jetbrains.annotations.NotNull; +import team.unnamed.creative.texture.Texture; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.List; + +public class ChainTransformer implements TextureTransformer { + private static final List CHAIN_DATA = List.of( + new ChainData("chain"), + new ChainData("copper_chain"), + new ChainData("exposed_copper_chain"), + new ChainData("weathered_copper_chain"), + new ChainData("oxidized_copper_chain") + ); + + private static final String JAVA_NAME = "block/%s.png"; + private static final String BEDROCK_1 = "blocks/%s1.png"; + private static final String BEDROCK_2 = "blocks/%s2.png"; + + @Override + public void transform(@NotNull TransformContext context) throws IOException { + for (ChainData chainData : CHAIN_DATA) { + Key javaKey = Key.key(Key.MINECRAFT_NAMESPACE, JAVA_NAME.formatted(chainData.name())); + + Texture javaTexture = context.poll(javaKey); + if (javaTexture == null) continue; + + BufferedImage javaImage = this.readImage(javaTexture); + + float scale = javaImage.getHeight() / 16f; + + Key bedrock1Key = Key.key(Key.MINECRAFT_NAMESPACE, BEDROCK_1.formatted(chainData.name())); + Key bedrock2Key = Key.key(Key.MINECRAFT_NAMESPACE, BEDROCK_2.formatted(chainData.name())); + + BufferedImage bedrock1Image = new BufferedImage(javaImage.getWidth(), javaImage.getHeight(), BufferedImage.TYPE_INT_ARGB); + BufferedImage bedrock2Image = new BufferedImage(javaImage.getWidth(), javaImage.getHeight(), BufferedImage.TYPE_INT_ARGB); + + // Yes, 2 than 1, since the numbers are in the wrong order on bedrock, fun. + bedrock2Image.getGraphics().drawImage( + ImageUtil.crop( + javaImage, + 0, + 0, + (int) (3 * scale), + javaImage.getHeight() + ), + 0, + 0, + null + ); + bedrock1Image.getGraphics().drawImage( + ImageUtil.crop( + javaImage, + (int) (3 * scale), + 0, + (int) (6 * scale), + javaImage.getHeight() + ), + 0, + 0, + null + ); + + context.offer(bedrock1Key, bedrock1Image, "png"); + context.offer(bedrock2Key, bedrock2Image, "png"); + } + } + + public record ChainData(String name) {} +} diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestDoubleTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestDoubleTransformer.java index b9c6e30..4ba70d9 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestDoubleTransformer.java +++ b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestDoubleTransformer.java @@ -45,7 +45,11 @@ public class ChestDoubleTransformer implements TextureTransformer { private static final List CHEST_DATA = List.of( new ChestData("entity/chest/normal_left.png", "entity/chest/normal_right.png", "entity/chest/double_normal.png"), new ChestData("entity/chest/trapped_left.png", "entity/chest/trapped_right.png", "entity/chest/trapped_double.png"), - new ChestData("entity/chest/christmas_left.png", "entity/chest/christmas_right.png", "entity/chest/christmas_double.png") + new ChestData("entity/chest/christmas_left.png", "entity/chest/christmas_right.png", "entity/chest/christmas_double.png"), + new ChestData("entity/chest/copper_left.png", "entity/chest/copper_right.png", "entity/chest/copper_default_double.png"), + new ChestData("entity/chest/copper_exposed_left.png", "entity/chest/copper_exposed_right.png", "entity/chest/copper_exposed_double.png"), + new ChestData("entity/chest/copper_weathered_left.png", "entity/chest/copper_weathered_right.png", "entity/chest/copper_weathered_double.png"), + new ChestData("entity/chest/copper_oxidized_left.png", "entity/chest/copper_oxidized_right.png", "entity/chest/copper_oxidized_double.png") ); @Override diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestFrontTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestFrontTransformer.java deleted file mode 100644 index 3a0f8a7..0000000 --- a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestFrontTransformer.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * @author GeyserMC - * @link https://github.com/GeyserMC/PackConverter - * - */ - -package org.geysermc.pack.converter.type.texture.transformer.type.block; - -import com.google.auto.service.AutoService; -import net.kyori.adventure.key.Key; -import org.geysermc.pack.converter.type.texture.transformer.TextureTransformer; -import org.geysermc.pack.converter.type.texture.transformer.TransformContext; -import org.geysermc.pack.converter.util.ImageUtil; -import org.geysermc.pack.converter.util.KeyUtil; -import org.jetbrains.annotations.NotNull; -import team.unnamed.creative.texture.Texture; - -import java.awt.Graphics; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.util.List; - -@AutoService(TextureTransformer.class) -public class ChestFrontTransformer implements TextureTransformer { - private static final List CHESTS = List.of( - new ChestData("entity/chest/normal.png", "blocks/chest_front.png"), - new ChestData("entity/chest/trapped.png", "blocks/trapped_chest_front.png"), - new ChestData("entity/chest/ender.png", "blocks/ender_chest_front.png") - ); - - @Override - public void transform(@NotNull TransformContext context) throws IOException { - for (ChestData chest : CHESTS) { - Texture texture = context.peek(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.javaName())); - if (texture == null) { - continue; - } - - context.debug(String.format("Creating chest front texture %s", chest.bedrockName())); - - BufferedImage fromImage = ImageUtil.ensureMinWidth(this.readImage(texture), 64); - - int factor = fromImage.getWidth() / 64; - - BufferedImage newImage = new BufferedImage((14 * factor), (14 * factor), BufferedImage.TYPE_INT_ARGB); - Graphics graphics = newImage.getGraphics(); - - graphics.drawImage(ImageUtil.crop(fromImage, (14 * factor), (14 * factor), (14 * factor), (5 * factor)), 0, 0, null); - graphics.drawImage(ImageUtil.crop(fromImage, (14 * factor), (34 * factor), (14 * factor), (9 * factor)), 0, (5 * factor), null); - graphics.drawImage(ImageUtil.crop(fromImage , factor, factor, (2 * factor), (4 * factor)), (6 * factor), (3 * factor), null); - - context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.bedrockName()), newImage, "png"); - } - } - - record ChestData(@NotNull String javaName, @NotNull String bedrockName) { - } -} diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestInventoryTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestInventoryTransformer.java new file mode 100644 index 0000000..42b9c40 --- /dev/null +++ b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestInventoryTransformer.java @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/PackConverter + * + */ + +package org.geysermc.pack.converter.type.texture.transformer.type.block; + +import com.google.auto.service.AutoService; +import net.kyori.adventure.key.Key; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.geysermc.pack.converter.type.texture.transformer.TextureTransformer; +import org.geysermc.pack.converter.type.texture.transformer.TransformContext; +import org.geysermc.pack.converter.util.ImageUtil; +import org.geysermc.pack.converter.util.KeyUtil; +import org.jetbrains.annotations.NotNull; +import team.unnamed.creative.texture.Texture; + +import java.awt.Graphics; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.List; + +@AutoService(TextureTransformer.class) +public class ChestInventoryTransformer implements TextureTransformer { + private static final List CHESTS = List.of( + new ChestData( + "entity/chest/normal.png", + "blocks/chest_front.png", + "blocks/chest_side.png", + "blocks/chest_top.png" + ), + new ChestData( + "entity/chest/trapped.png", + "blocks/trapped_chest_front.png", + null, // Bedrock uses normal chest stuff here, so we can just skip this + null + ), + new ChestData( + "entity/chest/ender.png", + "blocks/ender_chest_front.png", + "blocks/ender_chest_side.png", + "blocks/ender_chest_top.png" + ), + new ChestData( + "entity/chest/copper.png", + "blocks/copper_chest_inventory_front.png", + "blocks/copper_chest_inventory_side.png", + "blocks/copper_chest_inventory_top.png" + ), + new ChestData( + "entity/chest/copper_exposed.png", + "blocks/exposed_copper_chest_inventory_front.png", + "blocks/exposed_copper_chest_inventory_side.png", + "blocks/exposed_copper_chest_inventory_top.png" + ), + new ChestData( + "entity/chest/copper_weathered.png", + "blocks/weathered_copper_chest_inventory_front.png", + "blocks/weathered_copper_chest_inventory_side.png", + "blocks/weathered_copper_chest_inventory_top.png" + ), + new ChestData( + "entity/chest/copper_oxidized.png", + "blocks/oxidized_copper_chest_inventory_front.png", + "blocks/oxidized_copper_chest_inventory_side.png", + "blocks/oxidized_copper_chest_inventory_top.png" + ) + ); + + @Override + public void transform(@NotNull TransformContext context) throws IOException { + for (ChestData chest : CHESTS) { + Texture texture = context.peek(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.javaName())); + if (texture == null) { + continue; + } + + context.debug(String.format("Creating chest inventory textures %s", chest.javaName())); + + BufferedImage fromImage = ImageUtil.ensureMinWidth(this.readImage(texture), 64); + + float scale = fromImage.getWidth() / 64f; + + BufferedImage frontImage = new BufferedImage((int) (14 * scale), (int) (14 * scale), BufferedImage.TYPE_INT_ARGB); + Graphics graphics = frontImage.getGraphics(); + + graphics.drawImage(ImageUtil.crop(fromImage, (int) (14 * scale), (int) (14 * scale), (int) (14 * scale), (int) (5 * scale)), 0, 0, null); + graphics.drawImage(ImageUtil.crop(fromImage, (int) (14 * scale), (int) (34 * scale), (int) (14 * scale), (int) (9 * scale)), 0, (int) (5 * scale), null); + graphics.drawImage(ImageUtil.crop(fromImage, (int) scale, (int) scale, (int) (2 * scale), (int) (4 * scale)), (int) (6 * scale), (int) (3 * scale), null); + + context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.bedrockFront()), frontImage, "png"); + + if (chest.bedrockSide() != null) { + BufferedImage sideImage = new BufferedImage((int) (14 * scale), (int) (14 * scale), BufferedImage.TYPE_INT_ARGB); + + graphics = sideImage.getGraphics(); + graphics.drawImage(ImageUtil.crop(fromImage, (int) (28 * scale), (int) (14 * scale), (int) (14 * scale), (int) (5 * scale)), 0, 0, null); + graphics.drawImage(ImageUtil.crop(fromImage, (int) (28 * scale), (int) (34 * scale), (int) (14 * scale), (int) (9 * scale)), 0, (int) (5 * scale), null); + + context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.bedrockSide()), sideImage, "png"); + } + + if (chest.bedrockTop() != null) { + BufferedImage topImage = new BufferedImage((int) (14 * scale), (int) (14 * scale), BufferedImage.TYPE_INT_ARGB); + + graphics = topImage.getGraphics(); + graphics.drawImage(ImageUtil.crop(fromImage, (int) (28 * scale), 0, (int) (14 * scale), (int) (14 * scale)), 0, 0, null); + + context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.bedrockTop()), topImage, "png"); + } + } + } + + record ChestData(@NotNull String javaName, @NotNull String bedrockFront, @Nullable String bedrockSide, @Nullable String bedrockTop) { + } +} diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestNormalTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestNormalTransformer.java index 7b9d71d..e1233fb 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestNormalTransformer.java +++ b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestNormalTransformer.java @@ -39,6 +39,7 @@ import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.List; +import java.util.Map; @AutoService(TextureTransformer.class) public class ChestNormalTransformer implements TextureTransformer { @@ -48,7 +49,15 @@ public class ChestNormalTransformer implements TextureTransformer { "christmas", "ender", "normal", - "trapped" + "trapped", + "copper", + "copper_exposed", + "copper_weathered", + "copper_oxidized" + ); + + private static final Map MAPPINGS = Map.of( + "copper", "copper_default" ); @Override @@ -87,7 +96,7 @@ public class ChestNormalTransformer implements TextureTransformer { graphics.drawImage(ImageUtil.crop(chestImage, 0, 0, (6 * factor), (6 * factor)), 0, 0, null); - context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, CHEST_PATH + "/" + variant + ".png"), newChestImage, "png"); + context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, CHEST_PATH + "/" + MAPPINGS.getOrDefault(variant, variant) + ".png"), newChestImage, "png"); } } diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestSideTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/entity/CopperGolemTransformer.java similarity index 50% rename from converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestSideTransformer.java rename to converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/entity/CopperGolemTransformer.java index fde2e37..130605b 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/block/ChestSideTransformer.java +++ b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/entity/CopperGolemTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org + * Copyright (c) 2025 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -24,54 +24,36 @@ * */ -package org.geysermc.pack.converter.type.texture.transformer.type.block; +package org.geysermc.pack.converter.type.texture.transformer.type.entity; -import com.google.auto.service.AutoService; import net.kyori.adventure.key.Key; import org.geysermc.pack.converter.type.texture.transformer.TextureTransformer; import org.geysermc.pack.converter.type.texture.transformer.TransformContext; -import org.geysermc.pack.converter.util.ImageUtil; -import org.geysermc.pack.converter.util.KeyUtil; import org.jetbrains.annotations.NotNull; import team.unnamed.creative.texture.Texture; -import java.awt.Graphics; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; -import java.util.List; -@AutoService(TextureTransformer.class) -public class ChestSideTransformer implements TextureTransformer { - private static final List CHESTS = List.of( - new ChestData("entity/chest/normal.png", "blocks/chest_side.png"), - new ChestData("entity/chest/ender.png", "blocks/ender_chest_side.png") - ); +public class CopperGolemTransformer implements TextureTransformer { + private static final Key POPPY = Key.key(Key.MINECRAFT_NAMESPACE, "block/poppy.png"); + private static final Key COPPER_POPPY = Key.key(Key.MINECRAFT_NAMESPACE, "entity/copper_golem/copper_golem_flower.png"); @Override public void transform(@NotNull TransformContext context) throws IOException { - for (ChestData chest : CHESTS) { - Texture texture = context.peek(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.javaName())); - if (texture == null) { - continue; - } + if (context.isTexturePresent(POPPY)) { + Texture texture = context.peek(POPPY); + if (texture == null) return; + BufferedImage javaImage = this.readImage(texture); - context.debug(String.format("Creating chest side texture %s", chest.bedrockName())); + float scale = javaImage.getHeight() / 16f; - BufferedImage fromImage = ImageUtil.ensureMinWidth(this.readImage(texture), 64); + BufferedImage bedrockImage = new BufferedImage((int) (scale * 4), (int) (scale * 4), BufferedImage.TYPE_INT_ARGB); - int factor = fromImage.getWidth() / 64; + bedrockImage.getGraphics().drawImage(javaImage, (int) (44 * scale), (int) (33 * scale), null); - BufferedImage newImage = new BufferedImage((14 * factor), (14 * factor), BufferedImage.TYPE_INT_ARGB); - - Graphics graphics = newImage.getGraphics(); - graphics.drawImage(ImageUtil.crop(fromImage, (28 * factor), (14 * factor), (14 * factor), (5 * factor)), 0, 0, null); - graphics.drawImage(ImageUtil.crop(fromImage, (28 * factor), (34 * factor), (14 * factor), (9 * factor)), 0, (5 * factor), null); - - context.offer(KeyUtil.key(Key.MINECRAFT_NAMESPACE, chest.bedrockName()), newImage, "png"); + context.offer(COPPER_POPPY, bedrockImage, "png"); } } - - record ChestData(@NotNull String javaName, @NotNull String bedrockName) { - - } } diff --git a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/particle/BaseParticleTransformer.java b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/particle/BaseParticleTransformer.java index d57dc54..ccfb211 100644 --- a/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/particle/BaseParticleTransformer.java +++ b/converter/src/main/java/org/geysermc/pack/converter/type/texture/transformer/type/particle/BaseParticleTransformer.java @@ -58,7 +58,7 @@ public class BaseParticleTransformer implements TextureTransformer { new MultiTextureData("particle/note", "particle/critical_hit", "particle/enchanted_hit"), new MultiTextureData("particle/heart", "particle/angry", "particle/glint", null), // TODO: Villager? new MultiTextureData(null, null, "particle/glow"), - new MultiTextureData("particle/drip_hang", "particle/drip_fall", "particle/drip_land"), + new MultiTextureData("particle/drip_hang", "particle/drip_fall", "particle/drip_land", null, "particle/copper_fire_flame", null), // TODO: Copper lava?? new AtlasTextureData("effect", 8), new AtlasTextureData("spell", 8), new AtlasTextureData("explosion", 16), diff --git a/converter/src/main/resources/mappings/textures.json b/converter/src/main/resources/mappings/textures.json index 021194f..d93dfa0 100644 --- a/converter/src/main/resources/mappings/textures.json +++ b/converter/src/main/resources/mappings/textures.json @@ -982,6 +982,14 @@ "chest_boat/oak": "boat/chest_boat_oak", "chest_boat/pale_oak": "boat/chest_boat_pale_oak", "chest_boat/spruce": "boat/chest_boat_spruce", + "copper_golem/copper_golem": "copper_golem/copper_golem", + "copper_golem/copper_golem_eyes": "copper_golem/copper_golem_eyes", + "copper_golem/exposed_copper_golem": "copper_golem/copper_golem_exposed", + "copper_golem/exposed_copper_golem_eyes": "copper_golem/copper_golem_eyes_exposed", + "copper_golem/weathered_copper_golem": "copper_golem/copper_golem_weathered", + "copper_golem/weathered_copper_golem_eyes": "copper_golem/copper_golem_eyes_weathered", + "copper_golem/oxidized_copper_golem": "copper_golem/copper_golem_oxidized", + "copper_golem/oxidized_copper_golem_eyes": "copper_golem/copper_golem_eyes_oxidized", "creeper/creeper": ["creeper/creeper", "skulls/creeper"], "end_crystal/end_crystal": "endercrystal/endercrystal", "end_crystal/end_crystal_beam": "endercrystal/endercrystal_beam", @@ -1152,6 +1160,7 @@ "ghast/happy_ghast": "happy_ghast/happy_ghast", "ghast/happy_ghast_baby": "happy_ghast/ghastling", "ghast/happy_ghast_ropes": "happy_ghast/happy_ghast_ropes", + "equipment/happy_ghast_body/black_harness": "harness/harness_black", "equipment/happy_ghast_body/blue_harness": "harness/harness_blue", "equipment/happy_ghast_body/brown_harness": "harness/harness_brown", @@ -1167,7 +1176,12 @@ "equipment/happy_ghast_body/purple_harness": "harness/harness_purple", "equipment/happy_ghast_body/red_harness": "harness/harness_red", "equipment/happy_ghast_body/white_harness": "harness/harness_white", - "equipment/happy_ghast_body/yellow_harness": "harness/harness_yellow" + "equipment/happy_ghast_body/yellow_harness": "harness/harness_yellow", + + "equipment/horse_body/copper": "horse2/armor/horse_armor_copper", + "equipment/horse_body/iron": "horse2/armor/horse_armor_iron", + "equipment/horse_body/gold": "horse2/armor/horse_armor_gold", + "equipment/horse_body/diamond": "horse2/armor/horse_armor_diamond" }, "environment": { "clouds": "clouds", @@ -1292,7 +1306,7 @@ "cooked_porkchop": "porkchop_cooked", "cooked_rabbit": "rabbit_cooked", "cooked_salmon": "fish_salmon_cooked", - "cyan_dye": "dye_powder_cyan", + "cyan_dye": "dye_powder_cyan_new", "dandelion_yellow": "dye_powder_yellow", "dark_oak_door": "door_dark_oak", "enchanted_book": "book_enchanted", @@ -1316,8 +1330,8 @@ "golden_pickaxe": "gold_pickaxe", "golden_shovel": "gold_shovel", "golden_sword": "gold_sword", - "gray_dye": "dye_powder_gray", - "green_dye": "dye_powder_green", + "gray_dye": "dye_powder_gray_new", + "green_dye": "dye_powder_green_new", "hopper_minecart": "minecart_hopper", "ink_sac": "dye_powder_black", "iron_door": "door_iron", @@ -1340,11 +1354,11 @@ "light_13": "light_block_13", "light_14": "light_block_14", "light_15": "light_block_15", - "light_blue_dye": "dye_powder_light_blue", - "light_gray_dye": "dye_powder_silver", - "lime_dye": "dye_powder_lime", + "light_blue_dye": "dye_powder_light_blue_new", + "light_gray_dye": "dye_powder_silver_new", + "lime_dye": "dye_powder_lime_new", "lingering_potion": "potion_bottle_lingering", - "magenta_dye": "dye_powder_magenta", + "magenta_dye": "dye_powder_magenta_new", "map": "map_empty", "melon_seeds": "seeds_melon", "milk_bucket": "bucket_milk", @@ -1363,8 +1377,8 @@ "music_disc_ward": "record_ward", "mutton": "mutton_raw", "oak_door": "door_wood", - "orange_dye": "dye_powder_orange", - "pink_dye": "dye_powder_pink", + "orange_dye": "dye_powder_orange_new", + "pink_dye": "dye_powder_pink_new", "poisonous_potato": "potato_poisonous", "porkchop": "porkchop_raw", "potion": "potion_bottle_empty", @@ -1372,9 +1386,9 @@ "pufferfish": "fish_pufferfish_raw", "pufferfish_bucket": "bucket_pufferfish", "pumpkin_seeds": "seeds_pumpkin", - "purple_dye": "dye_powder_purple", + "purple_dye": "dye_powder_purple_new", "rabbit": "rabbit_raw", - "red_dye": "dye_powder_red", + "red_dye": "dye_powder_red_new", "redstone": "redstone_dust", "rose_red": "dye_powder_red", "salmon": "fish_salmon_raw", @@ -1395,7 +1409,7 @@ "wooden_sword": "wood_sword", "writable_book": "book_writable", "written_book": "book_written", - "yellow_dye": "dye_powder_yellow", + "yellow_dye": "dye_powder_yellow_new", "oak_boat": "boat_oak", "acacia_boat": "boat_acacia", "birch_boat": "boat_birch", @@ -1710,6 +1724,7 @@ "cave_spider_spawn_egg": "spawn_eggs/spawn_egg_cave_spider", "chicken_spawn_egg": "spawn_eggs/spawn_egg_chicken", "cod_spawn_egg": "spawn_eggs/spawn_egg_cod", + "copper_golem_spawn_egg": "spawn_eggs/spawn_egg_copper_golem", "cow_spawn_egg": "spawn_eggs/spawn_egg_cow", "creaking_spawn_egg": "spawn_eggs/spawn_egg_creaking", "creeper_spawn_egg": "spawn_eggs/spawn_egg_creeper", @@ -1828,6 +1843,7 @@ "trims": { "color_palettes/amethyst": "color_palettes/amethyst", "color_palettes/copper": "color_palettes/copper", + "color_palettes/copper_darker": "color_palettes/copper_darker", "color_palettes/diamond": "color_palettes/diamond", "color_palettes/diamond_darker": "color_palettes/diamond_darker", "color_palettes/emerald": "color_palettes/emerald", @@ -1888,6 +1904,8 @@ "entity/equipment/humanoid/chainmail": "models/armor/chain_1", "entity/equipment/humanoid_leggings/chainmail": "models/armor/chain_2", + "entity/equipment/humanoid/copper": "models/armor/copper_1", + "entity/equipment/humanoid_leggings/copper": "models/armor/copper_2", "entity/equipment/humanoid/iron": "models/armor/iron_1", "entity/equipment/humanoid_leggings/iron": "models/armor/iron_2", "entity/equipment/humanoid/gold": "models/armor/gold_1", @@ -1897,6 +1915,7 @@ "entity/equipment/humanoid/netherite": "models/armor/netherite_1", "entity/equipment/humanoid_leggings/netherite": "models/armor/netherite_2", "entity/equipment/humanoid/turtle_scute": "models/armor/turtle_1", + "entity/equipment/wings/elytra": "models/armor/elytra", "gui/sprites/hud/locator_bar_background": "ui/locator_bg",