1
0
mirror of https://github.com/GeyserMC/PackConverter.git synced 2025-12-19 14:59:21 +00:00

A start on 1.21.9

This commit is contained in:
Aurora
2025-10-01 14:13:35 +01:00
parent a344cd37f7
commit 10aa072c81
8 changed files with 302 additions and 127 deletions

View File

@@ -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<ChainData> 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) {}
}

View File

@@ -45,7 +45,11 @@ public class ChestDoubleTransformer implements TextureTransformer {
private static final List<ChestData> 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

View File

@@ -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<ChestData> 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) {
}
}

View File

@@ -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<ChestData> 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) {
}
}

View File

@@ -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<String, String> 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");
}
}

View File

@@ -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<ChestData> 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) {
}
}

View File

@@ -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),

View File

@@ -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",