minecraft-src/net/minecraft/data/models/ItemModelGenerators.java
2025-07-04 02:49:36 +03:00

486 lines
30 KiB
Java

package net.minecraft.data.models;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Supplier;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.data.models.model.ModelLocationUtils;
import net.minecraft.data.models.model.ModelTemplate;
import net.minecraft.data.models.model.ModelTemplates;
import net.minecraft.data.models.model.TextureMapping;
import net.minecraft.data.models.model.TextureSlot;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.equipment.EquipmentModel;
import net.minecraft.world.item.equipment.EquipmentModels;
import net.minecraft.world.item.equipment.Equippable;
public class ItemModelGenerators {
public static final ResourceLocation TRIM_TYPE_PREDICATE_ID = ResourceLocation.withDefaultNamespace("trim_type");
private static final List<ItemModelGenerators.TrimModelData> GENERATED_TRIM_MODELS = List.of(
new ItemModelGenerators.TrimModelData("quartz", 0.1F, Map.of()),
new ItemModelGenerators.TrimModelData("iron", 0.2F, Map.of(EquipmentModels.IRON, "iron_darker")),
new ItemModelGenerators.TrimModelData("netherite", 0.3F, Map.of(EquipmentModels.NETHERITE, "netherite_darker")),
new ItemModelGenerators.TrimModelData("redstone", 0.4F, Map.of()),
new ItemModelGenerators.TrimModelData("copper", 0.5F, Map.of()),
new ItemModelGenerators.TrimModelData("gold", 0.6F, Map.of(EquipmentModels.GOLD, "gold_darker")),
new ItemModelGenerators.TrimModelData("emerald", 0.7F, Map.of()),
new ItemModelGenerators.TrimModelData("diamond", 0.8F, Map.of(EquipmentModels.DIAMOND, "diamond_darker")),
new ItemModelGenerators.TrimModelData("lapis", 0.9F, Map.of()),
new ItemModelGenerators.TrimModelData("amethyst", 1.0F, Map.of())
);
private final BiConsumer<ResourceLocation, Supplier<JsonElement>> output;
public ItemModelGenerators(BiConsumer<ResourceLocation, Supplier<JsonElement>> output) {
this.output = output;
}
private void generateFlatItem(Item item, ModelTemplate modelTemplate) {
modelTemplate.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(item), this.output);
}
private void generateFlatItem(Item item, String modelLocationSuffix, ModelTemplate modelTemplate) {
modelTemplate.create(
ModelLocationUtils.getModelLocation(item, modelLocationSuffix), TextureMapping.layer0(TextureMapping.getItemTexture(item, modelLocationSuffix)), this.output
);
}
private void generateFlatItem(Item item, Item layerZeroItem, ModelTemplate modelTemplate) {
modelTemplate.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(layerZeroItem), this.output);
}
private void generateItemWithOverlay(Item item) {
this.generateLayeredItem(ModelLocationUtils.getModelLocation(item), TextureMapping.getItemTexture(item), TextureMapping.getItemTexture(item, "_overlay"));
}
private void generateCompassItem(Item item) {
for (int i = 0; i < 32; i++) {
if (i != 16) {
this.generateFlatItem(item, String.format(Locale.ROOT, "_%02d", i), ModelTemplates.FLAT_ITEM);
}
}
}
private void generateClockItem(Item item) {
for (int i = 1; i < 64; i++) {
this.generateFlatItem(item, String.format(Locale.ROOT, "_%02d", i), ModelTemplates.FLAT_ITEM);
}
}
private void generateLayeredItem(ResourceLocation modelLocation, ResourceLocation layer0, ResourceLocation layer1) {
ModelTemplates.TWO_LAYERED_ITEM.create(modelLocation, TextureMapping.layered(layer0, layer1), this.output);
}
private void generateLayeredItem(ResourceLocation modelLocation, ResourceLocation layer0, ResourceLocation layer1, ResourceLocation layer2) {
ModelTemplates.THREE_LAYERED_ITEM.create(modelLocation, TextureMapping.layered(layer0, layer1, layer2), this.output);
}
private ResourceLocation getItemModelForTrimMaterial(ResourceLocation modelLocation, String trimId) {
return modelLocation.withSuffix("_" + trimId + "_trim");
}
private JsonObject generateBaseArmorTrimTemplate(ResourceLocation modelLocation, Map<TextureSlot, ResourceLocation> modelGetter, ResourceLocation name) {
JsonObject jsonObject = ModelTemplates.TWO_LAYERED_ITEM.createBaseTemplate(modelLocation, modelGetter);
JsonArray jsonArray = new JsonArray();
for (ItemModelGenerators.TrimModelData trimModelData : GENERATED_TRIM_MODELS) {
JsonObject jsonObject2 = new JsonObject();
JsonObject jsonObject3 = new JsonObject();
jsonObject3.addProperty(TRIM_TYPE_PREDICATE_ID.getPath(), trimModelData.itemModelIndex());
jsonObject2.add("predicate", jsonObject3);
jsonObject2.addProperty("model", this.getItemModelForTrimMaterial(modelLocation, trimModelData.name(name)).toString());
jsonArray.add(jsonObject2);
}
jsonObject.add("overrides", jsonArray);
return jsonObject;
}
private void generateArmorTrims(Item item, ResourceLocation modelId, EquipmentModel model, EquipmentSlot slot) {
List<EquipmentModel.Layer> list = model.getLayers(EquipmentModel.LayerType.HUMANOID);
if (!list.isEmpty()) {
boolean bl = list.size() == 2 && ((EquipmentModel.Layer)list.getFirst()).dyeable().isPresent();
ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(item);
ResourceLocation resourceLocation2 = TextureMapping.getItemTexture(item);
ResourceLocation resourceLocation3 = TextureMapping.getItemTexture(item, "_overlay");
if (bl) {
ModelTemplates.TWO_LAYERED_ITEM
.create(
resourceLocation,
TextureMapping.layered(resourceLocation2, resourceLocation3),
this.output,
(resourceLocation2x, map) -> this.generateBaseArmorTrimTemplate(resourceLocation2x, map, modelId)
);
} else {
ModelTemplates.FLAT_ITEM
.create(
resourceLocation,
TextureMapping.layer0(resourceLocation2),
this.output,
(resourceLocation2x, map) -> this.generateBaseArmorTrimTemplate(resourceLocation2x, map, modelId)
);
}
String string = switch (slot) {
case HEAD -> "helmet";
case CHEST -> "chestplate";
case LEGS -> "leggings";
case FEET -> "boots";
default -> throw new UnsupportedOperationException();
};
for (ItemModelGenerators.TrimModelData trimModelData : GENERATED_TRIM_MODELS) {
String string2 = trimModelData.name(modelId);
ResourceLocation resourceLocation4 = this.getItemModelForTrimMaterial(resourceLocation, string2);
String string3 = string + "_trim_" + string2;
ResourceLocation resourceLocation5 = ResourceLocation.withDefaultNamespace(string3).withPrefix("trims/items/");
if (bl) {
this.generateLayeredItem(resourceLocation4, resourceLocation2, resourceLocation3, resourceLocation5);
} else {
this.generateLayeredItem(resourceLocation4, resourceLocation2, resourceLocation5);
}
}
}
}
public void run() {
this.generateFlatItem(Items.ACACIA_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CHERRY_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ACACIA_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CHERRY_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.AMETHYST_SHARD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.APPLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ARMADILLO_SCUTE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ARMOR_STAND, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ARROW, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BAKED_POTATO, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BAMBOO, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.BEEF, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BEETROOT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BEETROOT_SOUP, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BIRCH_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BIRCH_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BLACK_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BLAZE_POWDER, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BLAZE_ROD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.BLUE_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BONE_MEAL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BORDURE_INDENTED_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BOOK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BOWL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BREAD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BRICK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BREEZE_ROD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.BROWN_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CARROT_ON_A_STICK, ModelTemplates.FLAT_HANDHELD_ROD_ITEM);
this.generateFlatItem(Items.WARPED_FUNGUS_ON_A_STICK, ModelTemplates.FLAT_HANDHELD_ROD_ITEM);
this.generateFlatItem(Items.CHARCOAL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CHEST_MINECART, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CHICKEN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CHORUS_FRUIT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CLAY_BALL, ModelTemplates.FLAT_ITEM);
this.generateClockItem(Items.CLOCK);
this.generateFlatItem(Items.COAL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COD_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COMMAND_BLOCK_MINECART, ModelTemplates.FLAT_ITEM);
this.generateCompassItem(Items.COMPASS);
this.generateCompassItem(Items.RECOVERY_COMPASS);
this.generateFlatItem(Items.COOKED_BEEF, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKED_CHICKEN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKED_COD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKED_MUTTON, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKED_PORKCHOP, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKED_RABBIT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKED_SALMON, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COOKIE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RAW_COPPER, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COPPER_INGOT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CREEPER_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CYAN_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DARK_OAK_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DARK_OAK_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DIAMOND, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DIAMOND_AXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.DIAMOND_HOE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.DIAMOND_HORSE_ARMOR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DIAMOND_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.DIAMOND_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.DIAMOND_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.DRAGON_BREATH, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DRIED_KELP, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.EGG, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.EMERALD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ENCHANTED_BOOK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ENDER_EYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ENDER_PEARL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.END_CRYSTAL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.EXPERIENCE_BOTTLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FERMENTED_SPIDER_EYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FIELD_MASONED_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FIREWORK_ROCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FIRE_CHARGE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FLINT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FLINT_AND_STEEL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FLOW_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FLOWER_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FURNACE_MINECART, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GHAST_TEAR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLASS_BOTTLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLISTERING_MELON_SLICE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLOBE_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLOW_BERRIES, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLOWSTONE_DUST, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLOW_INK_SAC, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GLOW_ITEM_FRAME, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RAW_GOLD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GOLDEN_APPLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GOLDEN_AXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.GOLDEN_CARROT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GOLDEN_HOE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.GOLDEN_HORSE_ARMOR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GOLDEN_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.GOLDEN_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.GOLDEN_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.GOLD_INGOT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GOLD_NUGGET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GRAY_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GREEN_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GUNPOWDER, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GUSTER_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HEART_OF_THE_SEA, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HONEYCOMB, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HONEY_BOTTLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HOPPER_MINECART, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.INK_SAC, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RAW_IRON, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.IRON_AXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.IRON_HOE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.IRON_HORSE_ARMOR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.IRON_INGOT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.IRON_NUGGET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.IRON_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.IRON_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.IRON_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.ITEM_FRAME, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.JUNGLE_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.JUNGLE_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.KNOWLEDGE_BOOK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LAPIS_LAZULI, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LAVA_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LEATHER, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LEATHER_HORSE_ARMOR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LIGHT_BLUE_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LIGHT_GRAY_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LIME_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MAGENTA_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MAGMA_CREAM, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MANGROVE_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MANGROVE_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BAMBOO_RAFT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BAMBOO_CHEST_RAFT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MAP, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MELON_SLICE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MILK_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MINECART, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MOJANG_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MUSHROOM_STEW, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DISC_FRAGMENT_5, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MUSIC_DISC_11, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_13, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_BLOCKS, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_CAT, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_CHIRP, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_CREATOR, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_CREATOR_MUSIC_BOX, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_FAR, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_MALL, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_MELLOHI, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_PIGSTEP, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_PRECIPICE, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_STAL, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_STRAD, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_WAIT, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_WARD, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_OTHERSIDE, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_RELIC, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUSIC_DISC_5, ModelTemplates.MUSIC_DISC);
this.generateFlatItem(Items.MUTTON, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NAME_TAG, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NAUTILUS_SHELL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NETHERITE_AXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.NETHERITE_HOE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.NETHERITE_INGOT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NETHERITE_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.NETHERITE_SCRAP, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NETHERITE_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.NETHERITE_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.NETHER_BRICK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NETHER_STAR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.OAK_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.OAK_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ORANGE_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PAINTING, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PALE_OAK_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PALE_OAK_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PAPER, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PHANTOM_MEMBRANE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PIGLIN_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PINK_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.POISONOUS_POTATO, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.POPPED_CHORUS_FRUIT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PORKCHOP, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.POWDER_SNOW_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PRISMARINE_CRYSTALS, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PRISMARINE_SHARD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PUFFERFISH, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PUFFERFISH_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PUMPKIN_PIE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PURPLE_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.QUARTZ, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RABBIT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RABBIT_FOOT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RABBIT_HIDE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RABBIT_STEW, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RED_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ROTTEN_FLESH, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SADDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SALMON, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SALMON_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TURTLE_SCUTE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SHEARS, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SHULKER_SHELL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SKULL_BANNER_PATTERN, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SLIME_BALL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SNOWBALL, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ECHO_SHARD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SPECTRAL_ARROW, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SPIDER_EYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SPRUCE_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SPRUCE_CHEST_BOAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SPYGLASS, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.STICK, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.STONE_AXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.STONE_HOE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.STONE_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.STONE_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.STONE_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.SUGAR, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SUSPICIOUS_STEW, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TNT_MINECART, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TOTEM_OF_UNDYING, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TRIDENT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TROPICAL_FISH, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TROPICAL_FISH_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.AXOLOTL_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TADPOLE_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WATER_BUCKET, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WHEAT, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WHITE_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WIND_CHARGE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MACE, ModelTemplates.FLAT_HANDHELD_MACE_ITEM);
this.generateItemWithOverlay(Items.WOLF_ARMOR);
this.generateFlatItem(Items.WOODEN_AXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.WOODEN_HOE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.WOODEN_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.WOODEN_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.WOODEN_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.WRITABLE_BOOK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WRITTEN_BOOK, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.YELLOW_DYE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.COAST_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RIB_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DEBUG_STICK, Items.STICK, ModelTemplates.FLAT_HANDHELD_ITEM);
this.generateFlatItem(Items.ENCHANTED_GOLDEN_APPLE, Items.GOLDEN_APPLE, ModelTemplates.FLAT_ITEM);
Map<ResourceLocation, EquipmentModel> map = new HashMap();
EquipmentModels.bootstrap(map::put);
for (Item item : BuiltInRegistries.ITEM) {
Equippable equippable = item.components().get(DataComponents.EQUIPPABLE);
if (equippable != null && equippable.slot().getType() == EquipmentSlot.Type.HUMANOID_ARMOR && equippable.model().isPresent()) {
ResourceLocation resourceLocation = (ResourceLocation)equippable.model().get();
EquipmentModel equipmentModel = (EquipmentModel)map.get(resourceLocation);
if (equipmentModel == null) {
throw new IllegalStateException("Referenced equipment model does not exist: " + resourceLocation);
}
this.generateArmorTrims(item, resourceLocation, equipmentModel, equippable.slot());
}
}
this.generateFlatItem(Items.ANGLER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ARCHER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ARMS_UP_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BLADE_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BREWER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BURN_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.DANGER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.EXPLORER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FLOW_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.FRIEND_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GUSTER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HEART_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HEARTBREAK_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.HOWL_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MINER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MOURNER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PLENTY_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PRIZE_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SCRAPE_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SHEAF_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SHELTER_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SKULL_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.SNORT_POTTERY_SHERD, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.TRIAL_KEY, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.OMINOUS_TRIAL_KEY, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.OMINOUS_BOTTLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BLACK_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.WHITE_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GRAY_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LIGHT_GRAY_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LIGHT_BLUE_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BLUE_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.CYAN_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.YELLOW_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.RED_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PURPLE_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.MAGENTA_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.PINK_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.GREEN_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.LIME_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.BROWN_BUNDLE, ModelTemplates.FLAT_ITEM);
this.generateFlatItem(Items.ORANGE_BUNDLE, ModelTemplates.FLAT_ITEM);
}
record TrimModelData(String name, float itemModelIndex, Map<ResourceLocation, String> overrideArmorMaterials) {
public String name(ResourceLocation name) {
return (String)this.overrideArmorMaterials.getOrDefault(name, this.name);
}
}
}