package net.minecraft.util.datafix.schemas; import com.google.common.collect.Maps; import com.mojang.datafixers.DSL; import com.mojang.datafixers.schemas.Schema; import com.mojang.datafixers.types.templates.TypeTemplate; import com.mojang.datafixers.types.templates.Hook.HookFunction; import com.mojang.datafixers.util.Pair; import java.util.Map; import java.util.function.Supplier; import net.minecraft.util.datafix.fixes.References; public class V1460 extends NamespacedSchema { public V1460(int p_17553_, Schema p_17554_) { super(p_17553_, p_17554_); } protected static void registerMob(Schema p_17561_, Map> p_17562_, String p_17563_) { p_17561_.registerSimple(p_17562_, p_17563_); } protected static void registerInventory(Schema p_17576_, Map> p_17577_, String p_17578_) { p_17576_.register(p_17577_, p_17578_, () -> V1458.nameableInventory(p_17576_)); } @Override public Map> registerEntities(Schema p_17658_) { Map> map = Maps.newHashMap(); p_17658_.register(map, "minecraft:area_effect_cloud", p_326692_ -> DSL.optionalFields("Particle", References.PARTICLE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:armor_stand"); p_17658_.register(map, "minecraft:arrow", p_17683_ -> DSL.optionalFields("inBlockState", References.BLOCK_STATE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:bat"); registerMob(p_17658_, map, "minecraft:blaze"); p_17658_.registerSimple(map, "minecraft:boat"); registerMob(p_17658_, map, "minecraft:cave_spider"); p_17658_.register( map, "minecraft:chest_minecart", p_17680_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_), "Items", DSL.list(References.ITEM_STACK.in(p_17658_))) ); registerMob(p_17658_, map, "minecraft:chicken"); p_17658_.register( map, "minecraft:commandblock_minecart", p_390346_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_), "LastOutput", References.TEXT_COMPONENT.in(p_17658_)) ); registerMob(p_17658_, map, "minecraft:cow"); registerMob(p_17658_, map, "minecraft:creeper"); p_17658_.register( map, "minecraft:donkey", p_390366_ -> DSL.optionalFields("Items", DSL.list(References.ITEM_STACK.in(p_17658_)), "SaddleItem", References.ITEM_STACK.in(p_17658_)) ); p_17658_.registerSimple(map, "minecraft:dragon_fireball"); p_17658_.registerSimple(map, "minecraft:egg"); registerMob(p_17658_, map, "minecraft:elder_guardian"); p_17658_.registerSimple(map, "minecraft:ender_crystal"); registerMob(p_17658_, map, "minecraft:ender_dragon"); p_17658_.register(map, "minecraft:enderman", p_17677_ -> DSL.optionalFields("carriedBlockState", References.BLOCK_STATE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:endermite"); p_17658_.registerSimple(map, "minecraft:ender_pearl"); p_17658_.registerSimple(map, "minecraft:evocation_fangs"); registerMob(p_17658_, map, "minecraft:evocation_illager"); p_17658_.registerSimple(map, "minecraft:eye_of_ender_signal"); p_17658_.register( map, "minecraft:falling_block", p_17668_ -> DSL.optionalFields("BlockState", References.BLOCK_STATE.in(p_17658_), "TileEntityData", References.BLOCK_ENTITY.in(p_17658_)) ); p_17658_.registerSimple(map, "minecraft:fireball"); p_17658_.register(map, "minecraft:fireworks_rocket", p_390348_ -> DSL.optionalFields("FireworksItem", References.ITEM_STACK.in(p_17658_))); p_17658_.register(map, "minecraft:furnace_minecart", p_17654_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:ghast"); registerMob(p_17658_, map, "minecraft:giant"); registerMob(p_17658_, map, "minecraft:guardian"); p_17658_.register( map, "minecraft:hopper_minecart", p_17651_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_), "Items", DSL.list(References.ITEM_STACK.in(p_17658_))) ); p_17658_.register( map, "minecraft:horse", p_390377_ -> DSL.optionalFields("ArmorItem", References.ITEM_STACK.in(p_17658_), "SaddleItem", References.ITEM_STACK.in(p_17658_)) ); registerMob(p_17658_, map, "minecraft:husk"); registerMob(p_17658_, map, "minecraft:illusion_illager"); p_17658_.register(map, "minecraft:item", p_17645_ -> DSL.optionalFields("Item", References.ITEM_STACK.in(p_17658_))); p_17658_.register(map, "minecraft:item_frame", p_17642_ -> DSL.optionalFields("Item", References.ITEM_STACK.in(p_17658_))); p_17658_.registerSimple(map, "minecraft:leash_knot"); p_17658_.register( map, "minecraft:llama", p_390355_ -> DSL.optionalFields( "Items", DSL.list(References.ITEM_STACK.in(p_17658_)), "SaddleItem", References.ITEM_STACK.in(p_17658_), "DecorItem", References.ITEM_STACK.in(p_17658_) ) ); p_17658_.registerSimple(map, "minecraft:llama_spit"); registerMob(p_17658_, map, "minecraft:magma_cube"); p_17658_.register(map, "minecraft:minecart", p_17634_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:mooshroom"); p_17658_.register( map, "minecraft:mule", p_390362_ -> DSL.optionalFields("Items", DSL.list(References.ITEM_STACK.in(p_17658_)), "SaddleItem", References.ITEM_STACK.in(p_17658_)) ); registerMob(p_17658_, map, "minecraft:ocelot"); p_17658_.registerSimple(map, "minecraft:painting"); registerMob(p_17658_, map, "minecraft:parrot"); registerMob(p_17658_, map, "minecraft:pig"); registerMob(p_17658_, map, "minecraft:polar_bear"); p_17658_.register(map, "minecraft:potion", p_17624_ -> DSL.optionalFields("Potion", References.ITEM_STACK.in(p_17658_))); registerMob(p_17658_, map, "minecraft:rabbit"); registerMob(p_17658_, map, "minecraft:sheep"); registerMob(p_17658_, map, "minecraft:shulker"); p_17658_.registerSimple(map, "minecraft:shulker_bullet"); registerMob(p_17658_, map, "minecraft:silverfish"); registerMob(p_17658_, map, "minecraft:skeleton"); p_17658_.register(map, "minecraft:skeleton_horse", p_17665_ -> DSL.optionalFields("SaddleItem", References.ITEM_STACK.in(p_17658_))); registerMob(p_17658_, map, "minecraft:slime"); p_17658_.registerSimple(map, "minecraft:small_fireball"); p_17658_.registerSimple(map, "minecraft:snowball"); registerMob(p_17658_, map, "minecraft:snowman"); p_17658_.register( map, "minecraft:spawner_minecart", p_17614_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_), References.UNTAGGED_SPAWNER.in(p_17658_)) ); p_17658_.register(map, "minecraft:spectral_arrow", p_17609_ -> DSL.optionalFields("inBlockState", References.BLOCK_STATE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:spider"); registerMob(p_17658_, map, "minecraft:squid"); registerMob(p_17658_, map, "minecraft:stray"); p_17658_.registerSimple(map, "minecraft:tnt"); p_17658_.register(map, "minecraft:tnt_minecart", p_17604_ -> DSL.optionalFields("DisplayState", References.BLOCK_STATE.in(p_17658_))); registerMob(p_17658_, map, "minecraft:vex"); p_17658_.register( map, "minecraft:villager", p_390353_ -> DSL.optionalFields( "Inventory", DSL.list(References.ITEM_STACK.in(p_17658_)), "Offers", DSL.optionalFields("Recipes", DSL.list(References.VILLAGER_TRADE.in(p_17658_))) ) ); registerMob(p_17658_, map, "minecraft:villager_golem"); registerMob(p_17658_, map, "minecraft:vindication_illager"); registerMob(p_17658_, map, "minecraft:witch"); registerMob(p_17658_, map, "minecraft:wither"); registerMob(p_17658_, map, "minecraft:wither_skeleton"); p_17658_.registerSimple(map, "minecraft:wither_skull"); registerMob(p_17658_, map, "minecraft:wolf"); p_17658_.registerSimple(map, "minecraft:xp_bottle"); p_17658_.registerSimple(map, "minecraft:xp_orb"); registerMob(p_17658_, map, "minecraft:zombie"); p_17658_.register(map, "minecraft:zombie_horse", p_390379_ -> DSL.optionalFields("SaddleItem", References.ITEM_STACK.in(p_17658_))); registerMob(p_17658_, map, "minecraft:zombie_pigman"); p_17658_.register( map, "minecraft:zombie_villager", p_390357_ -> DSL.optionalFields("Offers", DSL.optionalFields("Recipes", DSL.list(References.VILLAGER_TRADE.in(p_17658_)))) ); return map; } @Override public Map> registerBlockEntities(Schema p_17656_) { Map> map = Maps.newHashMap(); registerInventory(p_17656_, map, "minecraft:furnace"); registerInventory(p_17656_, map, "minecraft:chest"); registerInventory(p_17656_, map, "minecraft:trapped_chest"); p_17656_.registerSimple(map, "minecraft:ender_chest"); p_17656_.register(map, "minecraft:jukebox", p_17586_ -> DSL.optionalFields("RecordItem", References.ITEM_STACK.in(p_17656_))); registerInventory(p_17656_, map, "minecraft:dispenser"); registerInventory(p_17656_, map, "minecraft:dropper"); p_17656_.register(map, "minecraft:sign", () -> V99.sign(p_17656_)); p_17656_.register(map, "minecraft:mob_spawner", p_17574_ -> References.UNTAGGED_SPAWNER.in(p_17656_)); p_17656_.register(map, "minecraft:piston", p_17559_ -> DSL.optionalFields("blockState", References.BLOCK_STATE.in(p_17656_))); registerInventory(p_17656_, map, "minecraft:brewing_stand"); p_17656_.register(map, "minecraft:enchanting_table", () -> V1458.nameable(p_17656_)); p_17656_.registerSimple(map, "minecraft:end_portal"); p_17656_.register(map, "minecraft:beacon", () -> V1458.nameable(p_17656_)); p_17656_.register(map, "minecraft:skull", () -> DSL.optionalFields("custom_name", References.TEXT_COMPONENT.in(p_17656_))); p_17656_.registerSimple(map, "minecraft:daylight_detector"); registerInventory(p_17656_, map, "minecraft:hopper"); p_17656_.registerSimple(map, "minecraft:comparator"); p_17656_.register(map, "minecraft:banner", () -> V1458.nameable(p_17656_)); p_17656_.registerSimple(map, "minecraft:structure_block"); p_17656_.registerSimple(map, "minecraft:end_gateway"); p_17656_.register(map, "minecraft:command_block", () -> DSL.optionalFields("LastOutput", References.TEXT_COMPONENT.in(p_17656_))); registerInventory(p_17656_, map, "minecraft:shulker_box"); p_17656_.registerSimple(map, "minecraft:bed"); return map; } @Override public void registerTypes(Schema p_17660_, Map> p_17661_, Map> p_17662_) { p_17660_.registerType( false, References.LEVEL, () -> DSL.optionalFields("CustomBossEvents", DSL.compoundList(DSL.optionalFields("Name", References.TEXT_COMPONENT.in(p_17660_)))) ); p_17660_.registerType(false, References.RECIPE, () -> DSL.constType(namespacedString())); p_17660_.registerType( false, References.PLAYER, () -> DSL.optionalFields( Pair.of("RootVehicle", DSL.optionalFields("Entity", References.ENTITY_TREE.in(p_17660_))), Pair.of("ender_pearls", DSL.list(References.ENTITY_TREE.in(p_17660_))), Pair.of("Inventory", DSL.list(References.ITEM_STACK.in(p_17660_))), Pair.of("EnderItems", DSL.list(References.ITEM_STACK.in(p_17660_))), Pair.of("ShoulderEntityLeft", References.ENTITY_TREE.in(p_17660_)), Pair.of("ShoulderEntityRight", References.ENTITY_TREE.in(p_17660_)), Pair.of( "recipeBook", DSL.optionalFields("recipes", DSL.list(References.RECIPE.in(p_17660_)), "toBeDisplayed", DSL.list(References.RECIPE.in(p_17660_))) ) ) ); p_17660_.registerType( false, References.CHUNK, () -> DSL.fields( "Level", DSL.optionalFields( "Entities", DSL.list(References.ENTITY_TREE.in(p_17660_)), "TileEntities", DSL.list(DSL.or(References.BLOCK_ENTITY.in(p_17660_), DSL.remainder())), "TileTicks", DSL.list(DSL.fields("i", References.BLOCK_NAME.in(p_17660_))), "Sections", DSL.list(DSL.optionalFields("Palette", DSL.list(References.BLOCK_STATE.in(p_17660_)))) ) ) ); p_17660_.registerType( true, References.BLOCK_ENTITY, () -> DSL.optionalFields("components", References.DATA_COMPONENTS.in(p_17660_), DSL.taggedChoiceLazy("id", namespacedString(), p_17662_)) ); p_17660_.registerType( true, References.ENTITY_TREE, () -> DSL.optionalFields("Passengers", DSL.list(References.ENTITY_TREE.in(p_17660_)), References.ENTITY.in(p_17660_)) ); p_17660_.registerType( true, References.ENTITY, () -> DSL.and( References.ENTITY_EQUIPMENT.in(p_17660_), DSL.optionalFields("CustomName", References.TEXT_COMPONENT.in(p_17660_), DSL.taggedChoiceLazy("id", namespacedString(), p_17661_)) ) ); p_17660_.registerType( true, References.ITEM_STACK, () -> DSL.hook(DSL.optionalFields("id", References.ITEM_NAME.in(p_17660_), "tag", V99.itemStackTag(p_17660_)), V705.ADD_NAMES, HookFunction.IDENTITY) ); p_17660_.registerType(false, References.HOTBAR, () -> DSL.compoundList(DSL.list(References.ITEM_STACK.in(p_17660_)))); p_17660_.registerType(false, References.OPTIONS, DSL::remainder); p_17660_.registerType( false, References.STRUCTURE, () -> DSL.optionalFields( "entities", DSL.list(DSL.optionalFields("nbt", References.ENTITY_TREE.in(p_17660_))), "blocks", DSL.list(DSL.optionalFields("nbt", References.BLOCK_ENTITY.in(p_17660_))), "palette", DSL.list(References.BLOCK_STATE.in(p_17660_)) ) ); p_17660_.registerType(false, References.BLOCK_NAME, () -> DSL.constType(namespacedString())); p_17660_.registerType(false, References.ITEM_NAME, () -> DSL.constType(namespacedString())); p_17660_.registerType(false, References.BLOCK_STATE, DSL::remainder); p_17660_.registerType(false, References.FLAT_BLOCK_STATE, DSL::remainder); Supplier supplier = () -> DSL.compoundList(References.ITEM_NAME.in(p_17660_), DSL.constType(DSL.intType())); p_17660_.registerType( false, References.STATS, () -> DSL.optionalFields( "stats", DSL.optionalFields( Pair.of("minecraft:mined", DSL.compoundList(References.BLOCK_NAME.in(p_17660_), DSL.constType(DSL.intType()))), Pair.of("minecraft:crafted", supplier.get()), Pair.of("minecraft:used", supplier.get()), Pair.of("minecraft:broken", supplier.get()), Pair.of("minecraft:picked_up", supplier.get()), Pair.of("minecraft:dropped", supplier.get()), Pair.of("minecraft:killed", DSL.compoundList(References.ENTITY_NAME.in(p_17660_), DSL.constType(DSL.intType()))), Pair.of("minecraft:killed_by", DSL.compoundList(References.ENTITY_NAME.in(p_17660_), DSL.constType(DSL.intType()))), Pair.of("minecraft:custom", DSL.compoundList(DSL.constType(namespacedString()), DSL.constType(DSL.intType()))) ) ) ); p_17660_.registerType(false, References.SAVED_DATA_COMMAND_STORAGE, DSL::remainder); p_17660_.registerType(false, References.SAVED_DATA_TICKETS, DSL::remainder); p_17660_.registerType( false, References.SAVED_DATA_MAP_DATA, () -> DSL.optionalFields("banners", DSL.list(DSL.optionalFields("Name", References.TEXT_COMPONENT.in(p_17660_)))) ); p_17660_.registerType(false, References.SAVED_DATA_MAP_INDEX, DSL::remainder); p_17660_.registerType(false, References.SAVED_DATA_RAIDS, DSL::remainder); p_17660_.registerType(false, References.SAVED_DATA_RANDOM_SEQUENCES, DSL::remainder); p_17660_.registerType( false, References.SAVED_DATA_SCOREBOARD, () -> DSL.optionalFields( "data", DSL.optionalFields( "Objectives", DSL.list(References.OBJECTIVE.in(p_17660_)), "Teams", DSL.list(References.TEAM.in(p_17660_)), "PlayerScores", DSL.list(DSL.optionalFields("display", References.TEXT_COMPONENT.in(p_17660_))) ) ) ); p_17660_.registerType( false, References.SAVED_DATA_STRUCTURE_FEATURE_INDICES, () -> DSL.optionalFields("data", DSL.optionalFields("Features", DSL.compoundList(References.STRUCTURE_FEATURE.in(p_17660_)))) ); p_17660_.registerType(false, References.STRUCTURE_FEATURE, DSL::remainder); Map> map = V1451_6.createCriterionTypes(p_17660_); p_17660_.registerType( false, References.OBJECTIVE, () -> DSL.hook( DSL.optionalFields("CriteriaType", DSL.taggedChoiceLazy("type", DSL.string(), map), "DisplayName", References.TEXT_COMPONENT.in(p_17660_)), V1451_6.UNPACK_OBJECTIVE_ID, V1451_6.REPACK_OBJECTIVE_ID ) ); p_17660_.registerType( false, References.TEAM, () -> DSL.optionalFields( "MemberNamePrefix", References.TEXT_COMPONENT.in(p_17660_), "MemberNameSuffix", References.TEXT_COMPONENT.in(p_17660_), "DisplayName", References.TEXT_COMPONENT.in(p_17660_) ) ); p_17660_.registerType( true, References.UNTAGGED_SPAWNER, () -> DSL.optionalFields( "SpawnPotentials", DSL.list(DSL.fields("Entity", References.ENTITY_TREE.in(p_17660_))), "SpawnData", References.ENTITY_TREE.in(p_17660_) ) ); p_17660_.registerType( false, References.ADVANCEMENTS, () -> DSL.optionalFields( "minecraft:adventure/adventuring_time", DSL.optionalFields("criteria", DSL.compoundList(References.BIOME.in(p_17660_), DSL.constType(DSL.string()))), "minecraft:adventure/kill_a_mob", DSL.optionalFields("criteria", DSL.compoundList(References.ENTITY_NAME.in(p_17660_), DSL.constType(DSL.string()))), "minecraft:adventure/kill_all_mobs", DSL.optionalFields("criteria", DSL.compoundList(References.ENTITY_NAME.in(p_17660_), DSL.constType(DSL.string()))), "minecraft:husbandry/bred_all_animals", DSL.optionalFields("criteria", DSL.compoundList(References.ENTITY_NAME.in(p_17660_), DSL.constType(DSL.string()))) ) ); p_17660_.registerType(false, References.BIOME, () -> DSL.constType(namespacedString())); p_17660_.registerType(false, References.ENTITY_NAME, () -> DSL.constType(namespacedString())); p_17660_.registerType(false, References.POI_CHUNK, DSL::remainder); p_17660_.registerType(false, References.WORLD_GEN_SETTINGS, DSL::remainder); p_17660_.registerType(false, References.ENTITY_CHUNK, () -> DSL.optionalFields("Entities", DSL.list(References.ENTITY_TREE.in(p_17660_)))); p_17660_.registerType(true, References.DATA_COMPONENTS, DSL::remainder); p_17660_.registerType( true, References.VILLAGER_TRADE, () -> DSL.optionalFields( "buy", References.ITEM_STACK.in(p_17660_), "buyB", References.ITEM_STACK.in(p_17660_), "sell", References.ITEM_STACK.in(p_17660_) ) ); p_17660_.registerType(true, References.PARTICLE, () -> DSL.constType(DSL.string())); p_17660_.registerType(true, References.TEXT_COMPONENT, () -> DSL.constType(DSL.string())); p_17660_.registerType( true, References.ENTITY_EQUIPMENT, () -> DSL.and( DSL.optional(DSL.field("ArmorItems", DSL.list(References.ITEM_STACK.in(p_17660_)))), DSL.optional(DSL.field("HandItems", DSL.list(References.ITEM_STACK.in(p_17660_)))), DSL.optional(DSL.field("body_armor_item", References.ITEM_STACK.in(p_17660_))), DSL.optional(DSL.field("saddle", References.ITEM_STACK.in(p_17660_))) ) ); } }