From 18a65c1b80d5c3d595e012197859d49b56141682 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 4 Jul 2025 03:15:13 +0300 Subject: [PATCH] 1.21.4 --- assets/minecraft/atlases/armor_trims.json | 3 +- assets/minecraft/atlases/blocks.json | 3 +- .../blockstates/chiseled_resin_bricks.json | 7 + .../blockstates/closed_eyeblossom.json | 7 + .../minecraft/blockstates/creaking_heart.json | 36 +- assets/minecraft/blockstates/end_gateway.json | 2 +- .../blockstates/open_eyeblossom.json | 7 + .../blockstates/potted_closed_eyeblossom.json | 7 + .../blockstates/potted_open_eyeblossom.json | 7 + assets/minecraft/blockstates/resin_block.json | 7 + .../blockstates/resin_brick_slab.json | 13 + .../blockstates/resin_brick_stairs.json | 209 + .../blockstates/resin_brick_wall.json | 90 + .../minecraft/blockstates/resin_bricks.json | 7 + assets/minecraft/blockstates/resin_clump.json | 150 + .../minecraft/blockstates/trapped_chest.json | 2 +- .../equipment/armadillo_scute.json | 0 .../{models => }/equipment/black_carpet.json | 0 .../{models => }/equipment/blue_carpet.json | 0 .../{models => }/equipment/brown_carpet.json | 0 .../{models => }/equipment/chainmail.json | 0 .../{models => }/equipment/cyan_carpet.json | 0 .../{models => }/equipment/diamond.json | 0 .../{models => }/equipment/elytra.json | 0 .../{models => }/equipment/gold.json | 0 .../{models => }/equipment/gray_carpet.json | 0 .../{models => }/equipment/green_carpet.json | 0 .../{models => }/equipment/iron.json | 0 .../{models => }/equipment/leather.json | 0 .../equipment/light_blue_carpet.json | 0 .../equipment/light_gray_carpet.json | 0 .../{models => }/equipment/lime_carpet.json | 0 .../equipment/magenta_carpet.json | 0 .../{models => }/equipment/netherite.json | 0 .../{models => }/equipment/orange_carpet.json | 0 .../{models => }/equipment/pink_carpet.json | 0 .../{models => }/equipment/purple_carpet.json | 0 .../{models => }/equipment/red_carpet.json | 0 .../{models => }/equipment/trader_llama.json | 0 .../{models => }/equipment/turtle_scute.json | 0 .../{models => }/equipment/white_carpet.json | 0 .../{models => }/equipment/yellow_carpet.json | 0 assets/minecraft/items/acacia_boat.json | 6 + assets/minecraft/items/acacia_button.json | 6 + assets/minecraft/items/acacia_chest_boat.json | 6 + assets/minecraft/items/acacia_door.json | 6 + assets/minecraft/items/acacia_fence.json | 6 + assets/minecraft/items/acacia_fence_gate.json | 6 + .../minecraft/items/acacia_hanging_sign.json | 6 + assets/minecraft/items/acacia_leaves.json | 12 + assets/minecraft/items/acacia_log.json | 6 + assets/minecraft/items/acacia_planks.json | 6 + .../items/acacia_pressure_plate.json | 6 + assets/minecraft/items/acacia_sapling.json | 6 + assets/minecraft/items/acacia_sign.json | 6 + assets/minecraft/items/acacia_slab.json | 6 + assets/minecraft/items/acacia_stairs.json | 6 + assets/minecraft/items/acacia_trapdoor.json | 6 + assets/minecraft/items/acacia_wood.json | 6 + assets/minecraft/items/activator_rail.json | 6 + assets/minecraft/items/air.json | 6 + assets/minecraft/items/allay_spawn_egg.json | 16 + assets/minecraft/items/allium.json | 6 + assets/minecraft/items/amethyst_block.json | 6 + assets/minecraft/items/amethyst_cluster.json | 6 + assets/minecraft/items/amethyst_shard.json | 6 + assets/minecraft/items/ancient_debris.json | 6 + assets/minecraft/items/andesite.json | 6 + assets/minecraft/items/andesite_slab.json | 6 + assets/minecraft/items/andesite_stairs.json | 6 + assets/minecraft/items/andesite_wall.json | 6 + .../minecraft/items/angler_pottery_sherd.json | 6 + assets/minecraft/items/anvil.json | 6 + assets/minecraft/items/apple.json | 6 + .../minecraft/items/archer_pottery_sherd.json | 6 + assets/minecraft/items/armadillo_scute.json | 6 + .../minecraft/items/armadillo_spawn_egg.json | 16 + assets/minecraft/items/armor_stand.json | 6 + .../items/arms_up_pottery_sherd.json | 6 + assets/minecraft/items/arrow.json | 6 + assets/minecraft/items/axolotl_bucket.json | 6 + assets/minecraft/items/axolotl_spawn_egg.json | 16 + assets/minecraft/items/azalea.json | 6 + assets/minecraft/items/azalea_leaves.json | 6 + assets/minecraft/items/azure_bluet.json | 6 + assets/minecraft/items/baked_potato.json | 6 + assets/minecraft/items/bamboo.json | 6 + assets/minecraft/items/bamboo_block.json | 6 + assets/minecraft/items/bamboo_button.json | 6 + assets/minecraft/items/bamboo_chest_raft.json | 6 + assets/minecraft/items/bamboo_door.json | 6 + assets/minecraft/items/bamboo_fence.json | 6 + assets/minecraft/items/bamboo_fence_gate.json | 6 + .../minecraft/items/bamboo_hanging_sign.json | 6 + assets/minecraft/items/bamboo_mosaic.json | 6 + .../minecraft/items/bamboo_mosaic_slab.json | 6 + .../minecraft/items/bamboo_mosaic_stairs.json | 6 + assets/minecraft/items/bamboo_planks.json | 6 + .../items/bamboo_pressure_plate.json | 6 + assets/minecraft/items/bamboo_raft.json | 6 + assets/minecraft/items/bamboo_sign.json | 6 + assets/minecraft/items/bamboo_slab.json | 6 + assets/minecraft/items/bamboo_stairs.json | 6 + assets/minecraft/items/bamboo_trapdoor.json | 6 + assets/minecraft/items/barrel.json | 6 + assets/minecraft/items/barrier.json | 6 + assets/minecraft/items/basalt.json | 6 + assets/minecraft/items/bat_spawn_egg.json | 16 + assets/minecraft/items/beacon.json | 6 + assets/minecraft/items/bedrock.json | 6 + assets/minecraft/items/bee_nest.json | 20 + assets/minecraft/items/bee_spawn_egg.json | 16 + assets/minecraft/items/beef.json | 6 + assets/minecraft/items/beehive.json | 20 + assets/minecraft/items/beetroot.json | 6 + assets/minecraft/items/beetroot_seeds.json | 6 + assets/minecraft/items/beetroot_soup.json | 6 + assets/minecraft/items/bell.json | 6 + assets/minecraft/items/big_dripleaf.json | 6 + assets/minecraft/items/birch_boat.json | 6 + assets/minecraft/items/birch_button.json | 6 + assets/minecraft/items/birch_chest_boat.json | 6 + assets/minecraft/items/birch_door.json | 6 + assets/minecraft/items/birch_fence.json | 6 + assets/minecraft/items/birch_fence_gate.json | 6 + .../minecraft/items/birch_hanging_sign.json | 6 + assets/minecraft/items/birch_leaves.json | 12 + assets/minecraft/items/birch_log.json | 6 + assets/minecraft/items/birch_planks.json | 6 + .../minecraft/items/birch_pressure_plate.json | 6 + assets/minecraft/items/birch_sapling.json | 6 + assets/minecraft/items/birch_sign.json | 6 + assets/minecraft/items/birch_slab.json | 6 + assets/minecraft/items/birch_stairs.json | 6 + assets/minecraft/items/birch_trapdoor.json | 6 + assets/minecraft/items/birch_wood.json | 6 + assets/minecraft/items/black_banner.json | 10 + assets/minecraft/items/black_bed.json | 10 + assets/minecraft/items/black_bundle.json | 39 + assets/minecraft/items/black_candle.json | 6 + assets/minecraft/items/black_carpet.json | 6 + assets/minecraft/items/black_concrete.json | 6 + .../items/black_concrete_powder.json | 6 + assets/minecraft/items/black_dye.json | 6 + .../items/black_glazed_terracotta.json | 6 + assets/minecraft/items/black_shulker_box.json | 10 + .../minecraft/items/black_stained_glass.json | 6 + .../items/black_stained_glass_pane.json | 6 + assets/minecraft/items/black_terracotta.json | 6 + assets/minecraft/items/black_wool.json | 6 + assets/minecraft/items/blackstone.json | 6 + assets/minecraft/items/blackstone_slab.json | 6 + assets/minecraft/items/blackstone_stairs.json | 6 + assets/minecraft/items/blackstone_wall.json | 6 + .../minecraft/items/blade_pottery_sherd.json | 6 + assets/minecraft/items/blast_furnace.json | 6 + assets/minecraft/items/blaze_powder.json | 6 + assets/minecraft/items/blaze_rod.json | 6 + assets/minecraft/items/blaze_spawn_egg.json | 16 + assets/minecraft/items/blue_banner.json | 10 + assets/minecraft/items/blue_bed.json | 10 + assets/minecraft/items/blue_bundle.json | 39 + assets/minecraft/items/blue_candle.json | 6 + assets/minecraft/items/blue_carpet.json | 6 + assets/minecraft/items/blue_concrete.json | 6 + .../minecraft/items/blue_concrete_powder.json | 6 + assets/minecraft/items/blue_dye.json | 6 + .../items/blue_glazed_terracotta.json | 6 + assets/minecraft/items/blue_ice.json | 6 + assets/minecraft/items/blue_orchid.json | 6 + assets/minecraft/items/blue_shulker_box.json | 10 + .../minecraft/items/blue_stained_glass.json | 6 + .../items/blue_stained_glass_pane.json | 6 + assets/minecraft/items/blue_terracotta.json | 6 + assets/minecraft/items/blue_wool.json | 6 + assets/minecraft/items/bogged_spawn_egg.json | 16 + .../bolt_armor_trim_smithing_template.json | 6 + assets/minecraft/items/bone.json | 6 + assets/minecraft/items/bone_block.json | 6 + assets/minecraft/items/bone_meal.json | 6 + assets/minecraft/items/book.json | 6 + assets/minecraft/items/bookshelf.json | 6 + .../bordure_indented_banner_pattern.json | 6 + assets/minecraft/items/bow.json | 35 + assets/minecraft/items/bowl.json | 6 + assets/minecraft/items/brain_coral.json | 6 + assets/minecraft/items/brain_coral_block.json | 6 + assets/minecraft/items/brain_coral_fan.json | 6 + assets/minecraft/items/bread.json | 6 + assets/minecraft/items/breeze_rod.json | 6 + assets/minecraft/items/breeze_spawn_egg.json | 16 + .../minecraft/items/brewer_pottery_sherd.json | 6 + assets/minecraft/items/brewing_stand.json | 6 + assets/minecraft/items/brick.json | 6 + assets/minecraft/items/brick_slab.json | 6 + assets/minecraft/items/brick_stairs.json | 6 + assets/minecraft/items/brick_wall.json | 6 + assets/minecraft/items/bricks.json | 6 + assets/minecraft/items/brown_banner.json | 10 + assets/minecraft/items/brown_bed.json | 10 + assets/minecraft/items/brown_bundle.json | 39 + assets/minecraft/items/brown_candle.json | 6 + assets/minecraft/items/brown_carpet.json | 6 + assets/minecraft/items/brown_concrete.json | 6 + .../items/brown_concrete_powder.json | 6 + assets/minecraft/items/brown_dye.json | 6 + .../items/brown_glazed_terracotta.json | 6 + assets/minecraft/items/brown_mushroom.json | 6 + .../minecraft/items/brown_mushroom_block.json | 6 + assets/minecraft/items/brown_shulker_box.json | 10 + .../minecraft/items/brown_stained_glass.json | 6 + .../items/brown_stained_glass_pane.json | 6 + assets/minecraft/items/brown_terracotta.json | 6 + assets/minecraft/items/brown_wool.json | 6 + assets/minecraft/items/brush.json | 35 + assets/minecraft/items/bubble_coral.json | 6 + .../minecraft/items/bubble_coral_block.json | 6 + assets/minecraft/items/bubble_coral_fan.json | 6 + assets/minecraft/items/bucket.json | 6 + assets/minecraft/items/budding_amethyst.json | 6 + assets/minecraft/items/bundle.json | 39 + .../minecraft/items/burn_pottery_sherd.json | 6 + assets/minecraft/items/cactus.json | 6 + assets/minecraft/items/cake.json | 6 + assets/minecraft/items/calcite.json | 6 + .../items/calibrated_sculk_sensor.json | 6 + assets/minecraft/items/camel_spawn_egg.json | 16 + assets/minecraft/items/campfire.json | 6 + assets/minecraft/items/candle.json | 6 + assets/minecraft/items/carrot.json | 6 + assets/minecraft/items/carrot_on_a_stick.json | 6 + assets/minecraft/items/cartography_table.json | 6 + assets/minecraft/items/carved_pumpkin.json | 6 + assets/minecraft/items/cat_spawn_egg.json | 16 + assets/minecraft/items/cauldron.json | 6 + .../items/cave_spider_spawn_egg.json | 16 + assets/minecraft/items/chain.json | 6 + .../minecraft/items/chain_command_block.json | 6 + assets/minecraft/items/chainmail_boots.json | 89 + .../minecraft/items/chainmail_chestplate.json | 89 + assets/minecraft/items/chainmail_helmet.json | 89 + .../minecraft/items/chainmail_leggings.json | 89 + assets/minecraft/items/charcoal.json | 6 + assets/minecraft/items/cherry_boat.json | 6 + assets/minecraft/items/cherry_button.json | 6 + assets/minecraft/items/cherry_chest_boat.json | 6 + assets/minecraft/items/cherry_door.json | 6 + assets/minecraft/items/cherry_fence.json | 6 + assets/minecraft/items/cherry_fence_gate.json | 6 + .../minecraft/items/cherry_hanging_sign.json | 6 + assets/minecraft/items/cherry_leaves.json | 6 + assets/minecraft/items/cherry_log.json | 6 + assets/minecraft/items/cherry_planks.json | 6 + .../items/cherry_pressure_plate.json | 6 + assets/minecraft/items/cherry_sapling.json | 6 + assets/minecraft/items/cherry_sign.json | 6 + assets/minecraft/items/cherry_slab.json | 6 + assets/minecraft/items/cherry_stairs.json | 6 + assets/minecraft/items/cherry_trapdoor.json | 6 + assets/minecraft/items/cherry_wood.json | 6 + assets/minecraft/items/chest.json | 32 + assets/minecraft/items/chest_minecart.json | 6 + assets/minecraft/items/chicken.json | 6 + assets/minecraft/items/chicken_spawn_egg.json | 16 + assets/minecraft/items/chipped_anvil.json | 6 + .../minecraft/items/chiseled_bookshelf.json | 6 + assets/minecraft/items/chiseled_copper.json | 6 + .../minecraft/items/chiseled_deepslate.json | 6 + .../items/chiseled_nether_bricks.json | 6 + .../items/chiseled_polished_blackstone.json | 6 + .../items/chiseled_quartz_block.json | 6 + .../items/chiseled_red_sandstone.json | 6 + .../items/chiseled_resin_bricks.json | 6 + .../minecraft/items/chiseled_sandstone.json | 6 + .../items/chiseled_stone_bricks.json | 6 + assets/minecraft/items/chiseled_tuff.json | 6 + .../minecraft/items/chiseled_tuff_bricks.json | 6 + assets/minecraft/items/chorus_flower.json | 6 + assets/minecraft/items/chorus_fruit.json | 6 + assets/minecraft/items/chorus_plant.json | 6 + assets/minecraft/items/clay.json | 6 + assets/minecraft/items/clay_ball.json | 6 + assets/minecraft/items/clock.json | 937 +++ assets/minecraft/items/closed_eyeblossom.json | 6 + assets/minecraft/items/coal.json | 6 + assets/minecraft/items/coal_block.json | 6 + assets/minecraft/items/coal_ore.json | 6 + assets/minecraft/items/coarse_dirt.json | 6 + .../coast_armor_trim_smithing_template.json | 6 + assets/minecraft/items/cobbled_deepslate.json | 6 + .../items/cobbled_deepslate_slab.json | 6 + .../items/cobbled_deepslate_stairs.json | 6 + .../items/cobbled_deepslate_wall.json | 6 + assets/minecraft/items/cobblestone.json | 6 + assets/minecraft/items/cobblestone_slab.json | 6 + .../minecraft/items/cobblestone_stairs.json | 6 + assets/minecraft/items/cobblestone_wall.json | 6 + assets/minecraft/items/cobweb.json | 6 + assets/minecraft/items/cocoa_beans.json | 6 + assets/minecraft/items/cod.json | 6 + assets/minecraft/items/cod_bucket.json | 6 + assets/minecraft/items/cod_spawn_egg.json | 16 + assets/minecraft/items/command_block.json | 6 + .../items/command_block_minecart.json | 6 + assets/minecraft/items/comparator.json | 6 + assets/minecraft/items/compass.json | 733 +++ assets/minecraft/items/composter.json | 6 + assets/minecraft/items/conduit.json | 9 + assets/minecraft/items/cooked_beef.json | 6 + assets/minecraft/items/cooked_chicken.json | 6 + assets/minecraft/items/cooked_cod.json | 6 + assets/minecraft/items/cooked_mutton.json | 6 + assets/minecraft/items/cooked_porkchop.json | 6 + assets/minecraft/items/cooked_rabbit.json | 6 + assets/minecraft/items/cooked_salmon.json | 6 + assets/minecraft/items/cookie.json | 6 + assets/minecraft/items/copper_block.json | 6 + assets/minecraft/items/copper_bulb.json | 6 + assets/minecraft/items/copper_door.json | 6 + assets/minecraft/items/copper_grate.json | 6 + assets/minecraft/items/copper_ingot.json | 6 + assets/minecraft/items/copper_ore.json | 6 + assets/minecraft/items/copper_trapdoor.json | 6 + assets/minecraft/items/cornflower.json | 6 + assets/minecraft/items/cow_spawn_egg.json | 16 + .../items/cracked_deepslate_bricks.json | 6 + .../items/cracked_deepslate_tiles.json | 6 + .../items/cracked_nether_bricks.json | 6 + .../cracked_polished_blackstone_bricks.json | 6 + .../minecraft/items/cracked_stone_bricks.json | 6 + assets/minecraft/items/crafter.json | 6 + assets/minecraft/items/crafting_table.json | 6 + assets/minecraft/items/creaking_heart.json | 6 + .../minecraft/items/creaking_spawn_egg.json | 16 + .../items/creeper_banner_pattern.json | 6 + assets/minecraft/items/creeper_head.json | 10 + assets/minecraft/items/creeper_spawn_egg.json | 16 + assets/minecraft/items/crimson_button.json | 6 + assets/minecraft/items/crimson_door.json | 6 + assets/minecraft/items/crimson_fence.json | 6 + .../minecraft/items/crimson_fence_gate.json | 6 + assets/minecraft/items/crimson_fungus.json | 6 + .../minecraft/items/crimson_hanging_sign.json | 6 + assets/minecraft/items/crimson_hyphae.json | 6 + assets/minecraft/items/crimson_nylium.json | 6 + assets/minecraft/items/crimson_planks.json | 6 + .../items/crimson_pressure_plate.json | 6 + assets/minecraft/items/crimson_roots.json | 6 + assets/minecraft/items/crimson_sign.json | 6 + assets/minecraft/items/crimson_slab.json | 6 + assets/minecraft/items/crimson_stairs.json | 6 + assets/minecraft/items/crimson_stem.json | 6 + assets/minecraft/items/crimson_trapdoor.json | 6 + assets/minecraft/items/crossbow.json | 54 + assets/minecraft/items/crying_obsidian.json | 6 + assets/minecraft/items/cut_copper.json | 6 + assets/minecraft/items/cut_copper_slab.json | 6 + assets/minecraft/items/cut_copper_stairs.json | 6 + assets/minecraft/items/cut_red_sandstone.json | 6 + .../items/cut_red_sandstone_slab.json | 6 + assets/minecraft/items/cut_sandstone.json | 6 + .../minecraft/items/cut_sandstone_slab.json | 6 + assets/minecraft/items/cyan_banner.json | 10 + assets/minecraft/items/cyan_bed.json | 10 + assets/minecraft/items/cyan_bundle.json | 39 + assets/minecraft/items/cyan_candle.json | 6 + assets/minecraft/items/cyan_carpet.json | 6 + assets/minecraft/items/cyan_concrete.json | 6 + .../minecraft/items/cyan_concrete_powder.json | 6 + assets/minecraft/items/cyan_dye.json | 6 + .../items/cyan_glazed_terracotta.json | 6 + assets/minecraft/items/cyan_shulker_box.json | 10 + .../minecraft/items/cyan_stained_glass.json | 6 + .../items/cyan_stained_glass_pane.json | 6 + assets/minecraft/items/cyan_terracotta.json | 6 + assets/minecraft/items/cyan_wool.json | 6 + assets/minecraft/items/damaged_anvil.json | 6 + assets/minecraft/items/dandelion.json | 6 + .../minecraft/items/danger_pottery_sherd.json | 6 + assets/minecraft/items/dark_oak_boat.json | 6 + assets/minecraft/items/dark_oak_button.json | 6 + .../minecraft/items/dark_oak_chest_boat.json | 6 + assets/minecraft/items/dark_oak_door.json | 6 + assets/minecraft/items/dark_oak_fence.json | 6 + .../minecraft/items/dark_oak_fence_gate.json | 6 + .../items/dark_oak_hanging_sign.json | 6 + assets/minecraft/items/dark_oak_leaves.json | 12 + assets/minecraft/items/dark_oak_log.json | 6 + assets/minecraft/items/dark_oak_planks.json | 6 + .../items/dark_oak_pressure_plate.json | 6 + assets/minecraft/items/dark_oak_sapling.json | 6 + assets/minecraft/items/dark_oak_sign.json | 6 + assets/minecraft/items/dark_oak_slab.json | 6 + assets/minecraft/items/dark_oak_stairs.json | 6 + assets/minecraft/items/dark_oak_trapdoor.json | 6 + assets/minecraft/items/dark_oak_wood.json | 6 + assets/minecraft/items/dark_prismarine.json | 6 + .../minecraft/items/dark_prismarine_slab.json | 6 + .../items/dark_prismarine_stairs.json | 6 + assets/minecraft/items/daylight_detector.json | 6 + assets/minecraft/items/dead_brain_coral.json | 6 + .../items/dead_brain_coral_block.json | 6 + .../minecraft/items/dead_brain_coral_fan.json | 6 + assets/minecraft/items/dead_bubble_coral.json | 6 + .../items/dead_bubble_coral_block.json | 6 + .../items/dead_bubble_coral_fan.json | 6 + assets/minecraft/items/dead_bush.json | 6 + assets/minecraft/items/dead_fire_coral.json | 6 + .../items/dead_fire_coral_block.json | 6 + .../minecraft/items/dead_fire_coral_fan.json | 6 + assets/minecraft/items/dead_horn_coral.json | 6 + .../items/dead_horn_coral_block.json | 6 + .../minecraft/items/dead_horn_coral_fan.json | 6 + assets/minecraft/items/dead_tube_coral.json | 6 + .../items/dead_tube_coral_block.json | 6 + .../minecraft/items/dead_tube_coral_fan.json | 6 + assets/minecraft/items/debug_stick.json | 6 + assets/minecraft/items/decorated_pot.json | 9 + assets/minecraft/items/deepslate.json | 6 + .../minecraft/items/deepslate_brick_slab.json | 6 + .../items/deepslate_brick_stairs.json | 6 + .../minecraft/items/deepslate_brick_wall.json | 6 + assets/minecraft/items/deepslate_bricks.json | 6 + .../minecraft/items/deepslate_coal_ore.json | 6 + .../minecraft/items/deepslate_copper_ore.json | 6 + .../items/deepslate_diamond_ore.json | 6 + .../items/deepslate_emerald_ore.json | 6 + .../minecraft/items/deepslate_gold_ore.json | 6 + .../minecraft/items/deepslate_iron_ore.json | 6 + .../minecraft/items/deepslate_lapis_ore.json | 6 + .../items/deepslate_redstone_ore.json | 6 + .../minecraft/items/deepslate_tile_slab.json | 6 + .../items/deepslate_tile_stairs.json | 6 + .../minecraft/items/deepslate_tile_wall.json | 6 + assets/minecraft/items/deepslate_tiles.json | 6 + assets/minecraft/items/detector_rail.json | 6 + assets/minecraft/items/diamond.json | 6 + assets/minecraft/items/diamond_axe.json | 6 + assets/minecraft/items/diamond_block.json | 6 + assets/minecraft/items/diamond_boots.json | 89 + .../minecraft/items/diamond_chestplate.json | 89 + assets/minecraft/items/diamond_helmet.json | 89 + assets/minecraft/items/diamond_hoe.json | 6 + .../minecraft/items/diamond_horse_armor.json | 6 + assets/minecraft/items/diamond_leggings.json | 89 + assets/minecraft/items/diamond_ore.json | 6 + assets/minecraft/items/diamond_pickaxe.json | 6 + assets/minecraft/items/diamond_shovel.json | 6 + assets/minecraft/items/diamond_sword.json | 6 + assets/minecraft/items/diorite.json | 6 + assets/minecraft/items/diorite_slab.json | 6 + assets/minecraft/items/diorite_stairs.json | 6 + assets/minecraft/items/diorite_wall.json | 6 + assets/minecraft/items/dirt.json | 6 + assets/minecraft/items/dirt_path.json | 6 + assets/minecraft/items/disc_fragment_5.json | 6 + assets/minecraft/items/dispenser.json | 6 + assets/minecraft/items/dolphin_spawn_egg.json | 16 + assets/minecraft/items/donkey_spawn_egg.json | 16 + assets/minecraft/items/dragon_breath.json | 6 + assets/minecraft/items/dragon_egg.json | 6 + assets/minecraft/items/dragon_head.json | 10 + assets/minecraft/items/dried_kelp.json | 6 + assets/minecraft/items/dried_kelp_block.json | 6 + assets/minecraft/items/dripstone_block.json | 6 + assets/minecraft/items/dropper.json | 6 + assets/minecraft/items/drowned_spawn_egg.json | 16 + .../dune_armor_trim_smithing_template.json | 6 + assets/minecraft/items/echo_shard.json | 6 + assets/minecraft/items/egg.json | 6 + .../items/elder_guardian_spawn_egg.json | 16 + assets/minecraft/items/elytra.json | 14 + assets/minecraft/items/emerald.json | 6 + assets/minecraft/items/emerald_block.json | 6 + assets/minecraft/items/emerald_ore.json | 6 + assets/minecraft/items/enchanted_book.json | 6 + .../items/enchanted_golden_apple.json | 6 + assets/minecraft/items/enchanting_table.json | 6 + assets/minecraft/items/end_crystal.json | 6 + assets/minecraft/items/end_portal_frame.json | 6 + assets/minecraft/items/end_rod.json | 6 + assets/minecraft/items/end_stone.json | 6 + .../minecraft/items/end_stone_brick_slab.json | 6 + .../items/end_stone_brick_stairs.json | 6 + .../minecraft/items/end_stone_brick_wall.json | 6 + assets/minecraft/items/end_stone_bricks.json | 6 + assets/minecraft/items/ender_chest.json | 10 + .../items/ender_dragon_spawn_egg.json | 16 + assets/minecraft/items/ender_eye.json | 6 + assets/minecraft/items/ender_pearl.json | 6 + .../minecraft/items/enderman_spawn_egg.json | 16 + .../minecraft/items/endermite_spawn_egg.json | 16 + assets/minecraft/items/evoker_spawn_egg.json | 16 + assets/minecraft/items/experience_bottle.json | 6 + .../items/explorer_pottery_sherd.json | 6 + .../items/exposed_chiseled_copper.json | 6 + assets/minecraft/items/exposed_copper.json | 6 + .../minecraft/items/exposed_copper_bulb.json | 6 + .../minecraft/items/exposed_copper_door.json | 6 + .../minecraft/items/exposed_copper_grate.json | 6 + .../items/exposed_copper_trapdoor.json | 6 + .../minecraft/items/exposed_cut_copper.json | 6 + .../items/exposed_cut_copper_slab.json | 6 + .../items/exposed_cut_copper_stairs.json | 6 + .../eye_armor_trim_smithing_template.json | 6 + assets/minecraft/items/farmland.json | 6 + assets/minecraft/items/feather.json | 6 + .../minecraft/items/fermented_spider_eye.json | 6 + assets/minecraft/items/fern.json | 13 + .../items/field_masoned_banner_pattern.json | 6 + assets/minecraft/items/filled_map.json | 16 + assets/minecraft/items/fire_charge.json | 6 + assets/minecraft/items/fire_coral.json | 6 + assets/minecraft/items/fire_coral_block.json | 6 + assets/minecraft/items/fire_coral_fan.json | 6 + assets/minecraft/items/firework_rocket.json | 6 + assets/minecraft/items/firework_star.json | 16 + assets/minecraft/items/fishing_rod.json | 14 + assets/minecraft/items/fletching_table.json | 6 + assets/minecraft/items/flint.json | 6 + assets/minecraft/items/flint_and_steel.json | 6 + .../flow_armor_trim_smithing_template.json | 6 + .../minecraft/items/flow_banner_pattern.json | 6 + .../minecraft/items/flow_pottery_sherd.json | 6 + .../items/flower_banner_pattern.json | 6 + assets/minecraft/items/flower_pot.json | 6 + assets/minecraft/items/flowering_azalea.json | 6 + .../items/flowering_azalea_leaves.json | 6 + assets/minecraft/items/fox_spawn_egg.json | 16 + .../minecraft/items/friend_pottery_sherd.json | 6 + assets/minecraft/items/frog_spawn_egg.json | 16 + assets/minecraft/items/frogspawn.json | 6 + assets/minecraft/items/furnace.json | 6 + assets/minecraft/items/furnace_minecart.json | 6 + assets/minecraft/items/ghast_spawn_egg.json | 16 + assets/minecraft/items/ghast_tear.json | 6 + assets/minecraft/items/gilded_blackstone.json | 6 + assets/minecraft/items/glass.json | 6 + assets/minecraft/items/glass_bottle.json | 6 + assets/minecraft/items/glass_pane.json | 6 + .../items/glistering_melon_slice.json | 6 + .../minecraft/items/globe_banner_pattern.json | 6 + assets/minecraft/items/glow_berries.json | 6 + assets/minecraft/items/glow_ink_sac.json | 6 + assets/minecraft/items/glow_item_frame.json | 6 + assets/minecraft/items/glow_lichen.json | 6 + .../minecraft/items/glow_squid_spawn_egg.json | 16 + assets/minecraft/items/glowstone.json | 6 + assets/minecraft/items/glowstone_dust.json | 6 + assets/minecraft/items/goat_horn.json | 14 + assets/minecraft/items/goat_spawn_egg.json | 16 + assets/minecraft/items/gold_block.json | 6 + assets/minecraft/items/gold_ingot.json | 6 + assets/minecraft/items/gold_nugget.json | 6 + assets/minecraft/items/gold_ore.json | 6 + assets/minecraft/items/golden_apple.json | 6 + assets/minecraft/items/golden_axe.json | 6 + assets/minecraft/items/golden_boots.json | 89 + assets/minecraft/items/golden_carrot.json | 6 + assets/minecraft/items/golden_chestplate.json | 89 + assets/minecraft/items/golden_helmet.json | 89 + assets/minecraft/items/golden_hoe.json | 6 + .../minecraft/items/golden_horse_armor.json | 6 + assets/minecraft/items/golden_leggings.json | 89 + assets/minecraft/items/golden_pickaxe.json | 6 + assets/minecraft/items/golden_shovel.json | 6 + assets/minecraft/items/golden_sword.json | 6 + assets/minecraft/items/granite.json | 6 + assets/minecraft/items/granite_slab.json | 6 + assets/minecraft/items/granite_stairs.json | 6 + assets/minecraft/items/granite_wall.json | 6 + assets/minecraft/items/grass_block.json | 13 + assets/minecraft/items/gravel.json | 6 + assets/minecraft/items/gray_banner.json | 10 + assets/minecraft/items/gray_bed.json | 10 + assets/minecraft/items/gray_bundle.json | 39 + assets/minecraft/items/gray_candle.json | 6 + assets/minecraft/items/gray_carpet.json | 6 + assets/minecraft/items/gray_concrete.json | 6 + .../minecraft/items/gray_concrete_powder.json | 6 + assets/minecraft/items/gray_dye.json | 6 + .../items/gray_glazed_terracotta.json | 6 + assets/minecraft/items/gray_shulker_box.json | 10 + .../minecraft/items/gray_stained_glass.json | 6 + .../items/gray_stained_glass_pane.json | 6 + assets/minecraft/items/gray_terracotta.json | 6 + assets/minecraft/items/gray_wool.json | 6 + assets/minecraft/items/green_banner.json | 10 + assets/minecraft/items/green_bed.json | 10 + assets/minecraft/items/green_bundle.json | 39 + assets/minecraft/items/green_candle.json | 6 + assets/minecraft/items/green_carpet.json | 6 + assets/minecraft/items/green_concrete.json | 6 + .../items/green_concrete_powder.json | 6 + assets/minecraft/items/green_dye.json | 6 + .../items/green_glazed_terracotta.json | 6 + assets/minecraft/items/green_shulker_box.json | 10 + .../minecraft/items/green_stained_glass.json | 6 + .../items/green_stained_glass_pane.json | 6 + assets/minecraft/items/green_terracotta.json | 6 + assets/minecraft/items/green_wool.json | 6 + assets/minecraft/items/grindstone.json | 6 + .../minecraft/items/guardian_spawn_egg.json | 16 + assets/minecraft/items/gunpowder.json | 6 + .../items/guster_banner_pattern.json | 6 + .../minecraft/items/guster_pottery_sherd.json | 6 + assets/minecraft/items/hanging_roots.json | 6 + assets/minecraft/items/hay_block.json | 6 + assets/minecraft/items/heart_of_the_sea.json | 6 + .../minecraft/items/heart_pottery_sherd.json | 6 + .../items/heartbreak_pottery_sherd.json | 6 + assets/minecraft/items/heavy_core.json | 6 + .../items/heavy_weighted_pressure_plate.json | 6 + assets/minecraft/items/hoglin_spawn_egg.json | 16 + assets/minecraft/items/honey_block.json | 6 + assets/minecraft/items/honey_bottle.json | 6 + assets/minecraft/items/honeycomb.json | 6 + assets/minecraft/items/honeycomb_block.json | 6 + assets/minecraft/items/hopper.json | 6 + assets/minecraft/items/hopper_minecart.json | 6 + assets/minecraft/items/horn_coral.json | 6 + assets/minecraft/items/horn_coral_block.json | 6 + assets/minecraft/items/horn_coral_fan.json | 6 + assets/minecraft/items/horse_spawn_egg.json | 16 + .../host_armor_trim_smithing_template.json | 6 + .../minecraft/items/howl_pottery_sherd.json | 6 + assets/minecraft/items/husk_spawn_egg.json | 16 + assets/minecraft/items/ice.json | 6 + .../items/infested_chiseled_stone_bricks.json | 6 + .../minecraft/items/infested_cobblestone.json | 6 + .../items/infested_cracked_stone_bricks.json | 6 + .../minecraft/items/infested_deepslate.json | 6 + .../items/infested_mossy_stone_bricks.json | 6 + assets/minecraft/items/infested_stone.json | 6 + .../items/infested_stone_bricks.json | 6 + assets/minecraft/items/ink_sac.json | 6 + assets/minecraft/items/iron_axe.json | 6 + assets/minecraft/items/iron_bars.json | 6 + assets/minecraft/items/iron_block.json | 6 + assets/minecraft/items/iron_boots.json | 89 + assets/minecraft/items/iron_chestplate.json | 89 + assets/minecraft/items/iron_door.json | 6 + .../minecraft/items/iron_golem_spawn_egg.json | 16 + assets/minecraft/items/iron_helmet.json | 89 + assets/minecraft/items/iron_hoe.json | 6 + assets/minecraft/items/iron_horse_armor.json | 6 + assets/minecraft/items/iron_ingot.json | 6 + assets/minecraft/items/iron_leggings.json | 89 + assets/minecraft/items/iron_nugget.json | 6 + assets/minecraft/items/iron_ore.json | 6 + assets/minecraft/items/iron_pickaxe.json | 6 + assets/minecraft/items/iron_shovel.json | 6 + assets/minecraft/items/iron_sword.json | 6 + assets/minecraft/items/iron_trapdoor.json | 6 + assets/minecraft/items/item_frame.json | 6 + assets/minecraft/items/jack_o_lantern.json | 6 + assets/minecraft/items/jigsaw.json | 6 + assets/minecraft/items/jukebox.json | 6 + assets/minecraft/items/jungle_boat.json | 6 + assets/minecraft/items/jungle_button.json | 6 + assets/minecraft/items/jungle_chest_boat.json | 6 + assets/minecraft/items/jungle_door.json | 6 + assets/minecraft/items/jungle_fence.json | 6 + assets/minecraft/items/jungle_fence_gate.json | 6 + .../minecraft/items/jungle_hanging_sign.json | 6 + assets/minecraft/items/jungle_leaves.json | 12 + assets/minecraft/items/jungle_log.json | 6 + assets/minecraft/items/jungle_planks.json | 6 + .../items/jungle_pressure_plate.json | 6 + assets/minecraft/items/jungle_sapling.json | 6 + assets/minecraft/items/jungle_sign.json | 6 + assets/minecraft/items/jungle_slab.json | 6 + assets/minecraft/items/jungle_stairs.json | 6 + assets/minecraft/items/jungle_trapdoor.json | 6 + assets/minecraft/items/jungle_wood.json | 6 + assets/minecraft/items/kelp.json | 6 + assets/minecraft/items/knowledge_book.json | 6 + assets/minecraft/items/ladder.json | 6 + assets/minecraft/items/lantern.json | 6 + assets/minecraft/items/lapis_block.json | 6 + assets/minecraft/items/lapis_lazuli.json | 6 + assets/minecraft/items/lapis_ore.json | 6 + .../minecraft/items/large_amethyst_bud.json | 6 + assets/minecraft/items/large_fern.json | 13 + assets/minecraft/items/lava_bucket.json | 6 + assets/minecraft/items/lead.json | 6 + assets/minecraft/items/leather.json | 6 + assets/minecraft/items/leather_boots.json | 161 + .../minecraft/items/leather_chestplate.json | 161 + assets/minecraft/items/leather_helmet.json | 161 + .../minecraft/items/leather_horse_armor.json | 12 + assets/minecraft/items/leather_leggings.json | 161 + assets/minecraft/items/lectern.json | 6 + assets/minecraft/items/lever.json | 6 + assets/minecraft/items/light.json | 125 + assets/minecraft/items/light_blue_banner.json | 10 + assets/minecraft/items/light_blue_bed.json | 10 + assets/minecraft/items/light_blue_bundle.json | 39 + assets/minecraft/items/light_blue_candle.json | 6 + assets/minecraft/items/light_blue_carpet.json | 6 + .../minecraft/items/light_blue_concrete.json | 6 + .../items/light_blue_concrete_powder.json | 6 + assets/minecraft/items/light_blue_dye.json | 6 + .../items/light_blue_glazed_terracotta.json | 6 + .../items/light_blue_shulker_box.json | 10 + .../items/light_blue_stained_glass.json | 6 + .../items/light_blue_stained_glass_pane.json | 6 + .../items/light_blue_terracotta.json | 6 + assets/minecraft/items/light_blue_wool.json | 6 + assets/minecraft/items/light_gray_banner.json | 10 + assets/minecraft/items/light_gray_bed.json | 10 + assets/minecraft/items/light_gray_bundle.json | 39 + assets/minecraft/items/light_gray_candle.json | 6 + assets/minecraft/items/light_gray_carpet.json | 6 + .../minecraft/items/light_gray_concrete.json | 6 + .../items/light_gray_concrete_powder.json | 6 + assets/minecraft/items/light_gray_dye.json | 6 + .../items/light_gray_glazed_terracotta.json | 6 + .../items/light_gray_shulker_box.json | 10 + .../items/light_gray_stained_glass.json | 6 + .../items/light_gray_stained_glass_pane.json | 6 + .../items/light_gray_terracotta.json | 6 + assets/minecraft/items/light_gray_wool.json | 6 + .../items/light_weighted_pressure_plate.json | 6 + assets/minecraft/items/lightning_rod.json | 6 + assets/minecraft/items/lilac.json | 6 + .../minecraft/items/lily_of_the_valley.json | 6 + assets/minecraft/items/lily_pad.json | 12 + assets/minecraft/items/lime_banner.json | 10 + assets/minecraft/items/lime_bed.json | 10 + assets/minecraft/items/lime_bundle.json | 39 + assets/minecraft/items/lime_candle.json | 6 + assets/minecraft/items/lime_carpet.json | 6 + assets/minecraft/items/lime_concrete.json | 6 + .../minecraft/items/lime_concrete_powder.json | 6 + assets/minecraft/items/lime_dye.json | 6 + .../items/lime_glazed_terracotta.json | 6 + assets/minecraft/items/lime_shulker_box.json | 10 + .../minecraft/items/lime_stained_glass.json | 6 + .../items/lime_stained_glass_pane.json | 6 + assets/minecraft/items/lime_terracotta.json | 6 + assets/minecraft/items/lime_wool.json | 6 + assets/minecraft/items/lingering_potion.json | 12 + assets/minecraft/items/llama_spawn_egg.json | 16 + assets/minecraft/items/lodestone.json | 6 + assets/minecraft/items/loom.json | 6 + assets/minecraft/items/mace.json | 6 + assets/minecraft/items/magenta_banner.json | 10 + assets/minecraft/items/magenta_bed.json | 10 + assets/minecraft/items/magenta_bundle.json | 39 + assets/minecraft/items/magenta_candle.json | 6 + assets/minecraft/items/magenta_carpet.json | 6 + assets/minecraft/items/magenta_concrete.json | 6 + .../items/magenta_concrete_powder.json | 6 + assets/minecraft/items/magenta_dye.json | 6 + .../items/magenta_glazed_terracotta.json | 6 + .../minecraft/items/magenta_shulker_box.json | 10 + .../items/magenta_stained_glass.json | 6 + .../items/magenta_stained_glass_pane.json | 6 + .../minecraft/items/magenta_terracotta.json | 6 + assets/minecraft/items/magenta_wool.json | 6 + assets/minecraft/items/magma_block.json | 6 + assets/minecraft/items/magma_cream.json | 6 + .../minecraft/items/magma_cube_spawn_egg.json | 16 + assets/minecraft/items/mangrove_boat.json | 6 + assets/minecraft/items/mangrove_button.json | 6 + .../minecraft/items/mangrove_chest_boat.json | 6 + assets/minecraft/items/mangrove_door.json | 6 + assets/minecraft/items/mangrove_fence.json | 6 + .../minecraft/items/mangrove_fence_gate.json | 6 + .../items/mangrove_hanging_sign.json | 6 + assets/minecraft/items/mangrove_leaves.json | 12 + assets/minecraft/items/mangrove_log.json | 6 + assets/minecraft/items/mangrove_planks.json | 6 + .../items/mangrove_pressure_plate.json | 6 + .../minecraft/items/mangrove_propagule.json | 6 + assets/minecraft/items/mangrove_roots.json | 6 + assets/minecraft/items/mangrove_sign.json | 6 + assets/minecraft/items/mangrove_slab.json | 6 + assets/minecraft/items/mangrove_stairs.json | 6 + assets/minecraft/items/mangrove_trapdoor.json | 6 + assets/minecraft/items/mangrove_wood.json | 6 + assets/minecraft/items/map.json | 6 + .../minecraft/items/medium_amethyst_bud.json | 6 + assets/minecraft/items/melon.json | 6 + assets/minecraft/items/melon_seeds.json | 6 + assets/minecraft/items/melon_slice.json | 6 + assets/minecraft/items/milk_bucket.json | 6 + assets/minecraft/items/minecart.json | 6 + .../minecraft/items/miner_pottery_sherd.json | 6 + .../items/mojang_banner_pattern.json | 6 + .../minecraft/items/mooshroom_spawn_egg.json | 16 + assets/minecraft/items/moss_block.json | 6 + assets/minecraft/items/moss_carpet.json | 6 + assets/minecraft/items/mossy_cobblestone.json | 6 + .../items/mossy_cobblestone_slab.json | 6 + .../items/mossy_cobblestone_stairs.json | 6 + .../items/mossy_cobblestone_wall.json | 6 + .../items/mossy_stone_brick_slab.json | 6 + .../items/mossy_stone_brick_stairs.json | 6 + .../items/mossy_stone_brick_wall.json | 6 + .../minecraft/items/mossy_stone_bricks.json | 6 + .../items/mourner_pottery_sherd.json | 6 + assets/minecraft/items/mud.json | 6 + assets/minecraft/items/mud_brick_slab.json | 6 + assets/minecraft/items/mud_brick_stairs.json | 6 + assets/minecraft/items/mud_brick_wall.json | 6 + assets/minecraft/items/mud_bricks.json | 6 + .../minecraft/items/muddy_mangrove_roots.json | 6 + assets/minecraft/items/mule_spawn_egg.json | 16 + assets/minecraft/items/mushroom_stem.json | 6 + assets/minecraft/items/mushroom_stew.json | 6 + assets/minecraft/items/music_disc_11.json | 6 + assets/minecraft/items/music_disc_13.json | 6 + assets/minecraft/items/music_disc_5.json | 6 + assets/minecraft/items/music_disc_blocks.json | 6 + assets/minecraft/items/music_disc_cat.json | 6 + assets/minecraft/items/music_disc_chirp.json | 6 + .../minecraft/items/music_disc_creator.json | 6 + .../items/music_disc_creator_music_box.json | 6 + assets/minecraft/items/music_disc_far.json | 6 + assets/minecraft/items/music_disc_mall.json | 6 + .../minecraft/items/music_disc_mellohi.json | 6 + .../minecraft/items/music_disc_otherside.json | 6 + .../minecraft/items/music_disc_pigstep.json | 6 + .../minecraft/items/music_disc_precipice.json | 6 + assets/minecraft/items/music_disc_relic.json | 6 + assets/minecraft/items/music_disc_stal.json | 6 + assets/minecraft/items/music_disc_strad.json | 6 + assets/minecraft/items/music_disc_wait.json | 6 + assets/minecraft/items/music_disc_ward.json | 6 + assets/minecraft/items/mutton.json | 6 + assets/minecraft/items/mycelium.json | 6 + assets/minecraft/items/name_tag.json | 6 + assets/minecraft/items/nautilus_shell.json | 6 + assets/minecraft/items/nether_brick.json | 6 + .../minecraft/items/nether_brick_fence.json | 6 + assets/minecraft/items/nether_brick_slab.json | 6 + .../minecraft/items/nether_brick_stairs.json | 6 + assets/minecraft/items/nether_brick_wall.json | 6 + assets/minecraft/items/nether_bricks.json | 6 + assets/minecraft/items/nether_gold_ore.json | 6 + assets/minecraft/items/nether_quartz_ore.json | 6 + assets/minecraft/items/nether_sprouts.json | 6 + assets/minecraft/items/nether_star.json | 6 + assets/minecraft/items/nether_wart.json | 6 + assets/minecraft/items/nether_wart_block.json | 6 + assets/minecraft/items/netherite_axe.json | 6 + assets/minecraft/items/netherite_block.json | 6 + assets/minecraft/items/netherite_boots.json | 89 + .../minecraft/items/netherite_chestplate.json | 89 + assets/minecraft/items/netherite_helmet.json | 89 + assets/minecraft/items/netherite_hoe.json | 6 + assets/minecraft/items/netherite_ingot.json | 6 + .../minecraft/items/netherite_leggings.json | 89 + assets/minecraft/items/netherite_pickaxe.json | 6 + assets/minecraft/items/netherite_scrap.json | 6 + assets/minecraft/items/netherite_shovel.json | 6 + assets/minecraft/items/netherite_sword.json | 6 + .../netherite_upgrade_smithing_template.json | 6 + assets/minecraft/items/netherrack.json | 6 + assets/minecraft/items/note_block.json | 6 + assets/minecraft/items/oak_boat.json | 6 + assets/minecraft/items/oak_button.json | 6 + assets/minecraft/items/oak_chest_boat.json | 6 + assets/minecraft/items/oak_door.json | 6 + assets/minecraft/items/oak_fence.json | 6 + assets/minecraft/items/oak_fence_gate.json | 6 + assets/minecraft/items/oak_hanging_sign.json | 6 + assets/minecraft/items/oak_leaves.json | 12 + assets/minecraft/items/oak_log.json | 6 + assets/minecraft/items/oak_planks.json | 6 + .../minecraft/items/oak_pressure_plate.json | 6 + assets/minecraft/items/oak_sapling.json | 6 + assets/minecraft/items/oak_sign.json | 6 + assets/minecraft/items/oak_slab.json | 6 + assets/minecraft/items/oak_stairs.json | 6 + assets/minecraft/items/oak_trapdoor.json | 6 + assets/minecraft/items/oak_wood.json | 6 + assets/minecraft/items/observer.json | 6 + assets/minecraft/items/obsidian.json | 6 + assets/minecraft/items/ocelot_spawn_egg.json | 16 + assets/minecraft/items/ochre_froglight.json | 6 + assets/minecraft/items/ominous_bottle.json | 6 + assets/minecraft/items/ominous_trial_key.json | 6 + assets/minecraft/items/open_eyeblossom.json | 6 + assets/minecraft/items/orange_banner.json | 10 + assets/minecraft/items/orange_bed.json | 10 + assets/minecraft/items/orange_bundle.json | 39 + assets/minecraft/items/orange_candle.json | 6 + assets/minecraft/items/orange_carpet.json | 6 + assets/minecraft/items/orange_concrete.json | 6 + .../items/orange_concrete_powder.json | 6 + assets/minecraft/items/orange_dye.json | 6 + .../items/orange_glazed_terracotta.json | 6 + .../minecraft/items/orange_shulker_box.json | 10 + .../minecraft/items/orange_stained_glass.json | 6 + .../items/orange_stained_glass_pane.json | 6 + assets/minecraft/items/orange_terracotta.json | 6 + assets/minecraft/items/orange_tulip.json | 6 + assets/minecraft/items/orange_wool.json | 6 + assets/minecraft/items/oxeye_daisy.json | 6 + .../items/oxidized_chiseled_copper.json | 6 + assets/minecraft/items/oxidized_copper.json | 6 + .../minecraft/items/oxidized_copper_bulb.json | 6 + .../minecraft/items/oxidized_copper_door.json | 6 + .../items/oxidized_copper_grate.json | 6 + .../items/oxidized_copper_trapdoor.json | 6 + .../minecraft/items/oxidized_cut_copper.json | 6 + .../items/oxidized_cut_copper_slab.json | 6 + .../items/oxidized_cut_copper_stairs.json | 6 + assets/minecraft/items/packed_ice.json | 6 + assets/minecraft/items/packed_mud.json | 6 + assets/minecraft/items/painting.json | 6 + assets/minecraft/items/pale_hanging_moss.json | 6 + assets/minecraft/items/pale_moss_block.json | 6 + assets/minecraft/items/pale_moss_carpet.json | 6 + assets/minecraft/items/pale_oak_boat.json | 6 + assets/minecraft/items/pale_oak_button.json | 6 + .../minecraft/items/pale_oak_chest_boat.json | 6 + assets/minecraft/items/pale_oak_door.json | 6 + assets/minecraft/items/pale_oak_fence.json | 6 + .../minecraft/items/pale_oak_fence_gate.json | 6 + .../items/pale_oak_hanging_sign.json | 6 + assets/minecraft/items/pale_oak_leaves.json | 6 + assets/minecraft/items/pale_oak_log.json | 6 + assets/minecraft/items/pale_oak_planks.json | 6 + .../items/pale_oak_pressure_plate.json | 6 + assets/minecraft/items/pale_oak_sapling.json | 6 + assets/minecraft/items/pale_oak_sign.json | 6 + assets/minecraft/items/pale_oak_slab.json | 6 + assets/minecraft/items/pale_oak_stairs.json | 6 + assets/minecraft/items/pale_oak_trapdoor.json | 6 + assets/minecraft/items/pale_oak_wood.json | 6 + assets/minecraft/items/panda_spawn_egg.json | 16 + assets/minecraft/items/paper.json | 6 + assets/minecraft/items/parrot_spawn_egg.json | 16 + .../items/pearlescent_froglight.json | 6 + assets/minecraft/items/peony.json | 6 + .../minecraft/items/petrified_oak_slab.json | 6 + assets/minecraft/items/phantom_membrane.json | 6 + assets/minecraft/items/phantom_spawn_egg.json | 16 + assets/minecraft/items/pig_spawn_egg.json | 16 + .../items/piglin_banner_pattern.json | 6 + .../items/piglin_brute_spawn_egg.json | 16 + assets/minecraft/items/piglin_head.json | 10 + assets/minecraft/items/piglin_spawn_egg.json | 16 + .../minecraft/items/pillager_spawn_egg.json | 16 + assets/minecraft/items/pink_banner.json | 10 + assets/minecraft/items/pink_bed.json | 10 + assets/minecraft/items/pink_bundle.json | 39 + assets/minecraft/items/pink_candle.json | 6 + assets/minecraft/items/pink_carpet.json | 6 + assets/minecraft/items/pink_concrete.json | 6 + .../minecraft/items/pink_concrete_powder.json | 6 + assets/minecraft/items/pink_dye.json | 6 + .../items/pink_glazed_terracotta.json | 6 + assets/minecraft/items/pink_petals.json | 6 + assets/minecraft/items/pink_shulker_box.json | 10 + .../minecraft/items/pink_stained_glass.json | 6 + .../items/pink_stained_glass_pane.json | 6 + assets/minecraft/items/pink_terracotta.json | 6 + assets/minecraft/items/pink_tulip.json | 6 + assets/minecraft/items/pink_wool.json | 6 + assets/minecraft/items/piston.json | 6 + assets/minecraft/items/pitcher_plant.json | 6 + assets/minecraft/items/pitcher_pod.json | 6 + assets/minecraft/items/player_head.json | 10 + .../minecraft/items/plenty_pottery_sherd.json | 6 + assets/minecraft/items/podzol.json | 6 + assets/minecraft/items/pointed_dripstone.json | 6 + assets/minecraft/items/poisonous_potato.json | 6 + .../minecraft/items/polar_bear_spawn_egg.json | 16 + assets/minecraft/items/polished_andesite.json | 6 + .../items/polished_andesite_slab.json | 6 + .../items/polished_andesite_stairs.json | 6 + assets/minecraft/items/polished_basalt.json | 6 + .../minecraft/items/polished_blackstone.json | 6 + .../items/polished_blackstone_brick_slab.json | 6 + .../polished_blackstone_brick_stairs.json | 6 + .../items/polished_blackstone_brick_wall.json | 6 + .../items/polished_blackstone_bricks.json | 6 + .../items/polished_blackstone_button.json | 6 + .../polished_blackstone_pressure_plate.json | 6 + .../items/polished_blackstone_slab.json | 6 + .../items/polished_blackstone_stairs.json | 6 + .../items/polished_blackstone_wall.json | 6 + .../minecraft/items/polished_deepslate.json | 6 + .../items/polished_deepslate_slab.json | 6 + .../items/polished_deepslate_stairs.json | 6 + .../items/polished_deepslate_wall.json | 6 + assets/minecraft/items/polished_diorite.json | 6 + .../items/polished_diorite_slab.json | 6 + .../items/polished_diorite_stairs.json | 6 + assets/minecraft/items/polished_granite.json | 6 + .../items/polished_granite_slab.json | 6 + .../items/polished_granite_stairs.json | 6 + assets/minecraft/items/polished_tuff.json | 6 + .../minecraft/items/polished_tuff_slab.json | 6 + .../minecraft/items/polished_tuff_stairs.json | 6 + .../minecraft/items/polished_tuff_wall.json | 6 + .../minecraft/items/popped_chorus_fruit.json | 6 + assets/minecraft/items/poppy.json | 6 + assets/minecraft/items/porkchop.json | 6 + assets/minecraft/items/potato.json | 6 + assets/minecraft/items/potion.json | 12 + .../minecraft/items/powder_snow_bucket.json | 6 + assets/minecraft/items/powered_rail.json | 6 + assets/minecraft/items/prismarine.json | 6 + .../items/prismarine_brick_slab.json | 6 + .../items/prismarine_brick_stairs.json | 6 + assets/minecraft/items/prismarine_bricks.json | 6 + .../minecraft/items/prismarine_crystals.json | 6 + assets/minecraft/items/prismarine_shard.json | 6 + assets/minecraft/items/prismarine_slab.json | 6 + assets/minecraft/items/prismarine_stairs.json | 6 + assets/minecraft/items/prismarine_wall.json | 6 + .../minecraft/items/prize_pottery_sherd.json | 6 + assets/minecraft/items/pufferfish.json | 6 + assets/minecraft/items/pufferfish_bucket.json | 6 + .../minecraft/items/pufferfish_spawn_egg.json | 16 + assets/minecraft/items/pumpkin.json | 6 + assets/minecraft/items/pumpkin_pie.json | 6 + assets/minecraft/items/pumpkin_seeds.json | 6 + assets/minecraft/items/purple_banner.json | 10 + assets/minecraft/items/purple_bed.json | 10 + assets/minecraft/items/purple_bundle.json | 39 + assets/minecraft/items/purple_candle.json | 6 + assets/minecraft/items/purple_carpet.json | 6 + assets/minecraft/items/purple_concrete.json | 6 + .../items/purple_concrete_powder.json | 6 + assets/minecraft/items/purple_dye.json | 6 + .../items/purple_glazed_terracotta.json | 6 + .../minecraft/items/purple_shulker_box.json | 10 + .../minecraft/items/purple_stained_glass.json | 6 + .../items/purple_stained_glass_pane.json | 6 + assets/minecraft/items/purple_terracotta.json | 6 + assets/minecraft/items/purple_wool.json | 6 + assets/minecraft/items/purpur_block.json | 6 + assets/minecraft/items/purpur_pillar.json | 6 + assets/minecraft/items/purpur_slab.json | 6 + assets/minecraft/items/purpur_stairs.json | 6 + assets/minecraft/items/quartz.json | 6 + assets/minecraft/items/quartz_block.json | 6 + assets/minecraft/items/quartz_bricks.json | 6 + assets/minecraft/items/quartz_pillar.json | 6 + assets/minecraft/items/quartz_slab.json | 6 + assets/minecraft/items/quartz_stairs.json | 6 + assets/minecraft/items/rabbit.json | 6 + assets/minecraft/items/rabbit_foot.json | 6 + assets/minecraft/items/rabbit_hide.json | 6 + assets/minecraft/items/rabbit_spawn_egg.json | 16 + assets/minecraft/items/rabbit_stew.json | 6 + assets/minecraft/items/rail.json | 6 + .../raiser_armor_trim_smithing_template.json | 6 + assets/minecraft/items/ravager_spawn_egg.json | 16 + assets/minecraft/items/raw_copper.json | 6 + assets/minecraft/items/raw_copper_block.json | 6 + assets/minecraft/items/raw_gold.json | 6 + assets/minecraft/items/raw_gold_block.json | 6 + assets/minecraft/items/raw_iron.json | 6 + assets/minecraft/items/raw_iron_block.json | 6 + assets/minecraft/items/recovery_compass.json | 241 + assets/minecraft/items/red_banner.json | 10 + assets/minecraft/items/red_bed.json | 10 + assets/minecraft/items/red_bundle.json | 39 + assets/minecraft/items/red_candle.json | 6 + assets/minecraft/items/red_carpet.json | 6 + assets/minecraft/items/red_concrete.json | 6 + .../minecraft/items/red_concrete_powder.json | 6 + assets/minecraft/items/red_dye.json | 6 + .../items/red_glazed_terracotta.json | 6 + assets/minecraft/items/red_mushroom.json | 6 + .../minecraft/items/red_mushroom_block.json | 6 + .../items/red_nether_brick_slab.json | 6 + .../items/red_nether_brick_stairs.json | 6 + .../items/red_nether_brick_wall.json | 6 + assets/minecraft/items/red_nether_bricks.json | 6 + assets/minecraft/items/red_sand.json | 6 + assets/minecraft/items/red_sandstone.json | 6 + .../minecraft/items/red_sandstone_slab.json | 6 + .../minecraft/items/red_sandstone_stairs.json | 6 + .../minecraft/items/red_sandstone_wall.json | 6 + assets/minecraft/items/red_shulker_box.json | 10 + assets/minecraft/items/red_stained_glass.json | 6 + .../items/red_stained_glass_pane.json | 6 + assets/minecraft/items/red_terracotta.json | 6 + assets/minecraft/items/red_tulip.json | 6 + assets/minecraft/items/red_wool.json | 6 + assets/minecraft/items/redstone.json | 6 + assets/minecraft/items/redstone_block.json | 6 + assets/minecraft/items/redstone_lamp.json | 6 + assets/minecraft/items/redstone_ore.json | 6 + assets/minecraft/items/redstone_torch.json | 6 + .../minecraft/items/reinforced_deepslate.json | 6 + assets/minecraft/items/repeater.json | 6 + .../items/repeating_command_block.json | 6 + assets/minecraft/items/resin_block.json | 6 + assets/minecraft/items/resin_brick.json | 6 + assets/minecraft/items/resin_brick_slab.json | 6 + .../minecraft/items/resin_brick_stairs.json | 6 + assets/minecraft/items/resin_brick_wall.json | 6 + assets/minecraft/items/resin_bricks.json | 6 + assets/minecraft/items/resin_clump.json | 6 + assets/minecraft/items/respawn_anchor.json | 6 + .../rib_armor_trim_smithing_template.json | 6 + assets/minecraft/items/rooted_dirt.json | 6 + assets/minecraft/items/rose_bush.json | 6 + assets/minecraft/items/rotten_flesh.json | 6 + assets/minecraft/items/saddle.json | 6 + assets/minecraft/items/salmon.json | 6 + assets/minecraft/items/salmon_bucket.json | 6 + assets/minecraft/items/salmon_spawn_egg.json | 16 + assets/minecraft/items/sand.json | 6 + assets/minecraft/items/sandstone.json | 6 + assets/minecraft/items/sandstone_slab.json | 6 + assets/minecraft/items/sandstone_stairs.json | 6 + assets/minecraft/items/sandstone_wall.json | 6 + assets/minecraft/items/scaffolding.json | 6 + .../minecraft/items/scrape_pottery_sherd.json | 6 + assets/minecraft/items/sculk.json | 6 + assets/minecraft/items/sculk_catalyst.json | 6 + assets/minecraft/items/sculk_sensor.json | 6 + assets/minecraft/items/sculk_shrieker.json | 6 + assets/minecraft/items/sculk_vein.json | 6 + assets/minecraft/items/sea_lantern.json | 6 + assets/minecraft/items/sea_pickle.json | 6 + assets/minecraft/items/seagrass.json | 6 + .../sentry_armor_trim_smithing_template.json | 6 + .../shaper_armor_trim_smithing_template.json | 6 + .../minecraft/items/sheaf_pottery_sherd.json | 6 + assets/minecraft/items/shears.json | 6 + assets/minecraft/items/sheep_spawn_egg.json | 16 + .../items/shelter_pottery_sherd.json | 6 + assets/minecraft/items/shield.json | 20 + assets/minecraft/items/short_grass.json | 13 + assets/minecraft/items/shroomlight.json | 6 + assets/minecraft/items/shulker_box.json | 10 + assets/minecraft/items/shulker_shell.json | 6 + assets/minecraft/items/shulker_spawn_egg.json | 16 + .../silence_armor_trim_smithing_template.json | 6 + .../minecraft/items/silverfish_spawn_egg.json | 16 + .../items/skeleton_horse_spawn_egg.json | 16 + assets/minecraft/items/skeleton_skull.json | 10 + .../minecraft/items/skeleton_spawn_egg.json | 16 + .../minecraft/items/skull_banner_pattern.json | 6 + .../minecraft/items/skull_pottery_sherd.json | 6 + assets/minecraft/items/slime_ball.json | 6 + assets/minecraft/items/slime_block.json | 6 + assets/minecraft/items/slime_spawn_egg.json | 16 + .../minecraft/items/small_amethyst_bud.json | 6 + assets/minecraft/items/small_dripleaf.json | 6 + assets/minecraft/items/smithing_table.json | 6 + assets/minecraft/items/smoker.json | 6 + assets/minecraft/items/smooth_basalt.json | 6 + assets/minecraft/items/smooth_quartz.json | 6 + .../minecraft/items/smooth_quartz_slab.json | 6 + .../minecraft/items/smooth_quartz_stairs.json | 6 + .../minecraft/items/smooth_red_sandstone.json | 6 + .../items/smooth_red_sandstone_slab.json | 6 + .../items/smooth_red_sandstone_stairs.json | 6 + assets/minecraft/items/smooth_sandstone.json | 6 + .../items/smooth_sandstone_slab.json | 6 + .../items/smooth_sandstone_stairs.json | 6 + assets/minecraft/items/smooth_stone.json | 6 + assets/minecraft/items/smooth_stone_slab.json | 6 + assets/minecraft/items/sniffer_egg.json | 6 + assets/minecraft/items/sniffer_spawn_egg.json | 16 + .../minecraft/items/snort_pottery_sherd.json | 6 + .../snout_armor_trim_smithing_template.json | 6 + assets/minecraft/items/snow.json | 6 + assets/minecraft/items/snow_block.json | 6 + .../minecraft/items/snow_golem_spawn_egg.json | 16 + assets/minecraft/items/snowball.json | 6 + assets/minecraft/items/soul_campfire.json | 6 + assets/minecraft/items/soul_lantern.json | 6 + assets/minecraft/items/soul_sand.json | 6 + assets/minecraft/items/soul_soil.json | 6 + assets/minecraft/items/soul_torch.json | 6 + assets/minecraft/items/spawner.json | 6 + assets/minecraft/items/spectral_arrow.json | 6 + assets/minecraft/items/spider_eye.json | 6 + assets/minecraft/items/spider_spawn_egg.json | 16 + .../spire_armor_trim_smithing_template.json | 6 + assets/minecraft/items/splash_potion.json | 12 + assets/minecraft/items/sponge.json | 6 + assets/minecraft/items/spore_blossom.json | 6 + assets/minecraft/items/spruce_boat.json | 6 + assets/minecraft/items/spruce_button.json | 6 + assets/minecraft/items/spruce_chest_boat.json | 6 + assets/minecraft/items/spruce_door.json | 6 + assets/minecraft/items/spruce_fence.json | 6 + assets/minecraft/items/spruce_fence_gate.json | 6 + .../minecraft/items/spruce_hanging_sign.json | 6 + assets/minecraft/items/spruce_leaves.json | 12 + assets/minecraft/items/spruce_log.json | 6 + assets/minecraft/items/spruce_planks.json | 6 + .../items/spruce_pressure_plate.json | 6 + assets/minecraft/items/spruce_sapling.json | 6 + assets/minecraft/items/spruce_sign.json | 6 + assets/minecraft/items/spruce_slab.json | 6 + assets/minecraft/items/spruce_stairs.json | 6 + assets/minecraft/items/spruce_trapdoor.json | 6 + assets/minecraft/items/spruce_wood.json | 6 + assets/minecraft/items/spyglass.json | 23 + assets/minecraft/items/squid_spawn_egg.json | 16 + assets/minecraft/items/stick.json | 6 + assets/minecraft/items/sticky_piston.json | 6 + assets/minecraft/items/stone.json | 6 + assets/minecraft/items/stone_axe.json | 6 + assets/minecraft/items/stone_brick_slab.json | 6 + .../minecraft/items/stone_brick_stairs.json | 6 + assets/minecraft/items/stone_brick_wall.json | 6 + assets/minecraft/items/stone_bricks.json | 6 + assets/minecraft/items/stone_button.json | 6 + assets/minecraft/items/stone_hoe.json | 6 + assets/minecraft/items/stone_pickaxe.json | 6 + .../minecraft/items/stone_pressure_plate.json | 6 + assets/minecraft/items/stone_shovel.json | 6 + assets/minecraft/items/stone_slab.json | 6 + assets/minecraft/items/stone_stairs.json | 6 + assets/minecraft/items/stone_sword.json | 6 + assets/minecraft/items/stonecutter.json | 6 + assets/minecraft/items/stray_spawn_egg.json | 16 + assets/minecraft/items/strider_spawn_egg.json | 16 + assets/minecraft/items/string.json | 6 + .../minecraft/items/stripped_acacia_log.json | 6 + .../minecraft/items/stripped_acacia_wood.json | 6 + .../items/stripped_bamboo_block.json | 6 + .../minecraft/items/stripped_birch_log.json | 6 + .../minecraft/items/stripped_birch_wood.json | 6 + .../minecraft/items/stripped_cherry_log.json | 6 + .../minecraft/items/stripped_cherry_wood.json | 6 + .../items/stripped_crimson_hyphae.json | 6 + .../items/stripped_crimson_stem.json | 6 + .../items/stripped_dark_oak_log.json | 6 + .../items/stripped_dark_oak_wood.json | 6 + .../minecraft/items/stripped_jungle_log.json | 6 + .../minecraft/items/stripped_jungle_wood.json | 6 + .../items/stripped_mangrove_log.json | 6 + .../items/stripped_mangrove_wood.json | 6 + assets/minecraft/items/stripped_oak_log.json | 6 + assets/minecraft/items/stripped_oak_wood.json | 6 + .../items/stripped_pale_oak_log.json | 6 + .../items/stripped_pale_oak_wood.json | 6 + .../minecraft/items/stripped_spruce_log.json | 6 + .../minecraft/items/stripped_spruce_wood.json | 6 + .../items/stripped_warped_hyphae.json | 6 + .../minecraft/items/stripped_warped_stem.json | 6 + assets/minecraft/items/structure_block.json | 6 + assets/minecraft/items/structure_void.json | 6 + assets/minecraft/items/sugar.json | 6 + assets/minecraft/items/sugar_cane.json | 6 + assets/minecraft/items/sunflower.json | 6 + assets/minecraft/items/suspicious_gravel.json | 6 + assets/minecraft/items/suspicious_sand.json | 6 + assets/minecraft/items/suspicious_stew.json | 6 + assets/minecraft/items/sweet_berries.json | 6 + assets/minecraft/items/tadpole_bucket.json | 6 + assets/minecraft/items/tadpole_spawn_egg.json | 16 + assets/minecraft/items/tall_grass.json | 13 + assets/minecraft/items/target.json | 6 + assets/minecraft/items/terracotta.json | 6 + .../tide_armor_trim_smithing_template.json | 6 + assets/minecraft/items/tinted_glass.json | 6 + assets/minecraft/items/tipped_arrow.json | 12 + assets/minecraft/items/tnt.json | 6 + assets/minecraft/items/tnt_minecart.json | 6 + assets/minecraft/items/torch.json | 6 + assets/minecraft/items/torchflower.json | 6 + assets/minecraft/items/torchflower_seeds.json | 6 + assets/minecraft/items/totem_of_undying.json | 6 + .../items/trader_llama_spawn_egg.json | 16 + assets/minecraft/items/trapped_chest.json | 32 + assets/minecraft/items/trial_key.json | 6 + assets/minecraft/items/trial_spawner.json | 6 + assets/minecraft/items/trident.json | 37 + assets/minecraft/items/tripwire_hook.json | 6 + assets/minecraft/items/tropical_fish.json | 6 + .../minecraft/items/tropical_fish_bucket.json | 6 + .../items/tropical_fish_spawn_egg.json | 16 + assets/minecraft/items/tube_coral.json | 6 + assets/minecraft/items/tube_coral_block.json | 6 + assets/minecraft/items/tube_coral_fan.json | 6 + assets/minecraft/items/tuff.json | 6 + assets/minecraft/items/tuff_brick_slab.json | 6 + assets/minecraft/items/tuff_brick_stairs.json | 6 + assets/minecraft/items/tuff_brick_wall.json | 6 + assets/minecraft/items/tuff_bricks.json | 6 + assets/minecraft/items/tuff_slab.json | 6 + assets/minecraft/items/tuff_stairs.json | 6 + assets/minecraft/items/tuff_wall.json | 6 + assets/minecraft/items/turtle_egg.json | 6 + assets/minecraft/items/turtle_helmet.json | 89 + assets/minecraft/items/turtle_scute.json | 6 + assets/minecraft/items/turtle_spawn_egg.json | 16 + assets/minecraft/items/twisting_vines.json | 6 + assets/minecraft/items/vault.json | 6 + assets/minecraft/items/verdant_froglight.json | 6 + .../vex_armor_trim_smithing_template.json | 6 + assets/minecraft/items/vex_spawn_egg.json | 16 + .../minecraft/items/villager_spawn_egg.json | 16 + .../minecraft/items/vindicator_spawn_egg.json | 16 + assets/minecraft/items/vine.json | 12 + .../items/wandering_trader_spawn_egg.json | 16 + .../ward_armor_trim_smithing_template.json | 6 + assets/minecraft/items/warden_spawn_egg.json | 16 + assets/minecraft/items/warped_button.json | 6 + assets/minecraft/items/warped_door.json | 6 + assets/minecraft/items/warped_fence.json | 6 + assets/minecraft/items/warped_fence_gate.json | 6 + assets/minecraft/items/warped_fungus.json | 6 + .../items/warped_fungus_on_a_stick.json | 6 + .../minecraft/items/warped_hanging_sign.json | 6 + assets/minecraft/items/warped_hyphae.json | 6 + assets/minecraft/items/warped_nylium.json | 6 + assets/minecraft/items/warped_planks.json | 6 + .../items/warped_pressure_plate.json | 6 + assets/minecraft/items/warped_roots.json | 6 + assets/minecraft/items/warped_sign.json | 6 + assets/minecraft/items/warped_slab.json | 6 + assets/minecraft/items/warped_stairs.json | 6 + assets/minecraft/items/warped_stem.json | 6 + assets/minecraft/items/warped_trapdoor.json | 6 + assets/minecraft/items/warped_wart_block.json | 6 + assets/minecraft/items/water_bucket.json | 6 + .../items/waxed_chiseled_copper.json | 6 + .../minecraft/items/waxed_copper_block.json | 6 + assets/minecraft/items/waxed_copper_bulb.json | 6 + assets/minecraft/items/waxed_copper_door.json | 6 + .../minecraft/items/waxed_copper_grate.json | 6 + .../items/waxed_copper_trapdoor.json | 6 + assets/minecraft/items/waxed_cut_copper.json | 6 + .../items/waxed_cut_copper_slab.json | 6 + .../items/waxed_cut_copper_stairs.json | 6 + .../items/waxed_exposed_chiseled_copper.json | 6 + .../minecraft/items/waxed_exposed_copper.json | 6 + .../items/waxed_exposed_copper_bulb.json | 6 + .../items/waxed_exposed_copper_door.json | 6 + .../items/waxed_exposed_copper_grate.json | 6 + .../items/waxed_exposed_copper_trapdoor.json | 6 + .../items/waxed_exposed_cut_copper.json | 6 + .../items/waxed_exposed_cut_copper_slab.json | 6 + .../waxed_exposed_cut_copper_stairs.json | 6 + .../items/waxed_oxidized_chiseled_copper.json | 6 + .../items/waxed_oxidized_copper.json | 6 + .../items/waxed_oxidized_copper_bulb.json | 6 + .../items/waxed_oxidized_copper_door.json | 6 + .../items/waxed_oxidized_copper_grate.json | 6 + .../items/waxed_oxidized_copper_trapdoor.json | 6 + .../items/waxed_oxidized_cut_copper.json | 6 + .../items/waxed_oxidized_cut_copper_slab.json | 6 + .../waxed_oxidized_cut_copper_stairs.json | 6 + .../waxed_weathered_chiseled_copper.json | 6 + .../items/waxed_weathered_copper.json | 6 + .../items/waxed_weathered_copper_bulb.json | 6 + .../items/waxed_weathered_copper_door.json | 6 + .../items/waxed_weathered_copper_grate.json | 6 + .../waxed_weathered_copper_trapdoor.json | 6 + .../items/waxed_weathered_cut_copper.json | 6 + .../waxed_weathered_cut_copper_slab.json | 6 + .../waxed_weathered_cut_copper_stairs.json | 6 + ...ayfinder_armor_trim_smithing_template.json | 6 + .../items/weathered_chiseled_copper.json | 6 + assets/minecraft/items/weathered_copper.json | 6 + .../items/weathered_copper_bulb.json | 6 + .../items/weathered_copper_door.json | 6 + .../items/weathered_copper_grate.json | 6 + .../items/weathered_copper_trapdoor.json | 6 + .../minecraft/items/weathered_cut_copper.json | 6 + .../items/weathered_cut_copper_slab.json | 6 + .../items/weathered_cut_copper_stairs.json | 6 + assets/minecraft/items/weeping_vines.json | 6 + assets/minecraft/items/wet_sponge.json | 6 + assets/minecraft/items/wheat.json | 6 + assets/minecraft/items/wheat_seeds.json | 6 + assets/minecraft/items/white_banner.json | 10 + assets/minecraft/items/white_bed.json | 10 + assets/minecraft/items/white_bundle.json | 39 + assets/minecraft/items/white_candle.json | 6 + assets/minecraft/items/white_carpet.json | 6 + assets/minecraft/items/white_concrete.json | 6 + .../items/white_concrete_powder.json | 6 + assets/minecraft/items/white_dye.json | 6 + .../items/white_glazed_terracotta.json | 6 + assets/minecraft/items/white_shulker_box.json | 10 + .../minecraft/items/white_stained_glass.json | 6 + .../items/white_stained_glass_pane.json | 6 + assets/minecraft/items/white_terracotta.json | 6 + assets/minecraft/items/white_tulip.json | 6 + assets/minecraft/items/white_wool.json | 6 + .../wild_armor_trim_smithing_template.json | 6 + assets/minecraft/items/wind_charge.json | 6 + assets/minecraft/items/witch_spawn_egg.json | 16 + assets/minecraft/items/wither_rose.json | 6 + .../items/wither_skeleton_skull.json | 10 + .../items/wither_skeleton_spawn_egg.json | 16 + assets/minecraft/items/wither_spawn_egg.json | 16 + assets/minecraft/items/wolf_armor.json | 25 + assets/minecraft/items/wolf_spawn_egg.json | 16 + assets/minecraft/items/wooden_axe.json | 6 + assets/minecraft/items/wooden_hoe.json | 6 + assets/minecraft/items/wooden_pickaxe.json | 6 + assets/minecraft/items/wooden_shovel.json | 6 + assets/minecraft/items/wooden_sword.json | 6 + assets/minecraft/items/writable_book.json | 6 + assets/minecraft/items/written_book.json | 6 + assets/minecraft/items/yellow_banner.json | 10 + assets/minecraft/items/yellow_bed.json | 10 + assets/minecraft/items/yellow_bundle.json | 39 + assets/minecraft/items/yellow_candle.json | 6 + assets/minecraft/items/yellow_carpet.json | 6 + assets/minecraft/items/yellow_concrete.json | 6 + .../items/yellow_concrete_powder.json | 6 + assets/minecraft/items/yellow_dye.json | 6 + .../items/yellow_glazed_terracotta.json | 6 + .../minecraft/items/yellow_shulker_box.json | 10 + .../minecraft/items/yellow_stained_glass.json | 6 + .../items/yellow_stained_glass_pane.json | 6 + assets/minecraft/items/yellow_terracotta.json | 6 + assets/minecraft/items/yellow_wool.json | 6 + assets/minecraft/items/zoglin_spawn_egg.json | 16 + assets/minecraft/items/zombie_head.json | 10 + .../items/zombie_horse_spawn_egg.json | 16 + assets/minecraft/items/zombie_spawn_egg.json | 16 + .../items/zombie_villager_spawn_egg.json | 16 + .../items/zombified_piglin_spawn_egg.json | 16 + assets/minecraft/lang/deprecated.json | 16 +- assets/minecraft/lang/en_us.json | 42 +- assets/minecraft/models/block/air.json | 3 + .../models/block/chiseled_resin_bricks.json | 6 + .../models/block/closed_eyeblossom.json | 6 + .../models/block/cross_emissive.json | 46 + .../models/block/custom_fence_inventory.json | 3 + .../models/block/custom_fence_side_east.json | 3 + .../models/block/custom_fence_side_north.json | 3 + .../models/block/custom_fence_side_south.json | 3 + .../models/block/custom_fence_side_west.json | 3 + .../minecraft/models/block/end_gateway.json | 5 + .../block/flower_pot_cross_emissive.json | 95 + .../models/block/open_eyeblossom.json | 7 + .../block/potted_closed_eyeblossom.json | 6 + .../models/block/potted_open_eyeblossom.json | 7 + .../minecraft/models/block/resin_block.json | 6 + .../models/block/resin_brick_slab.json | 8 + .../models/block/resin_brick_slab_top.json | 8 + .../models/block/resin_brick_stairs.json | 8 + .../block/resin_brick_stairs_inner.json | 8 + .../block/resin_brick_stairs_outer.json | 8 + .../block/resin_brick_wall_inventory.json | 6 + .../models/block/resin_brick_wall_post.json | 6 + .../models/block/resin_brick_wall_side.json | 6 + .../block/resin_brick_wall_side_tall.json | 6 + .../minecraft/models/block/resin_bricks.json | 6 + .../minecraft/models/block/resin_clump.json | 16 + assets/minecraft/models/block/sculk_vein.json | 2 +- ...e_chiseled_bookshelf_slot_bottom_left.json | 2 +- ...te_chiseled_bookshelf_slot_bottom_mid.json | 6 +- ..._chiseled_bookshelf_slot_bottom_right.json | 6 +- ...late_chiseled_bookshelf_slot_top_left.json | 6 +- ...plate_chiseled_bookshelf_slot_top_mid.json | 6 +- ...ate_chiseled_bookshelf_slot_top_right.json | 6 +- .../minecraft/models/block/trapped_chest.json | 5 + .../minecraft/models/item/acacia_button.json | 3 - .../minecraft/models/item/acacia_fence.json | 3 - .../models/item/acacia_fence_gate.json | 3 - .../minecraft/models/item/acacia_leaves.json | 3 - assets/minecraft/models/item/acacia_log.json | 3 - .../minecraft/models/item/acacia_planks.json | 3 - .../models/item/acacia_pressure_plate.json | 3 - assets/minecraft/models/item/acacia_slab.json | 3 - .../minecraft/models/item/acacia_stairs.json | 3 - .../models/item/acacia_trapdoor.json | 3 - assets/minecraft/models/item/acacia_wood.json | 3 - assets/minecraft/models/item/air.json | 3 + .../models/item/allay_spawn_egg.json | 3 - .../minecraft/models/item/amethyst_block.json | 3 - .../minecraft/models/item/ancient_debris.json | 3 - assets/minecraft/models/item/andesite.json | 3 - .../minecraft/models/item/andesite_slab.json | 3 - .../models/item/andesite_stairs.json | 3 - .../minecraft/models/item/andesite_wall.json | 3 - assets/minecraft/models/item/anvil.json | 3 - .../models/item/armadillo_spawn_egg.json | 3 - .../models/item/axolotl_spawn_egg.json | 3 - assets/minecraft/models/item/azalea.json | 3 - .../minecraft/models/item/azalea_leaves.json | 3 - .../minecraft/models/item/bamboo_block.json | 3 - .../minecraft/models/item/bamboo_button.json | 3 - .../minecraft/models/item/bamboo_fence.json | 3 - .../models/item/bamboo_fence_gate.json | 3 - .../minecraft/models/item/bamboo_mosaic.json | 3 - .../models/item/bamboo_mosaic_slab.json | 3 - .../models/item/bamboo_mosaic_stairs.json | 3 - .../minecraft/models/item/bamboo_planks.json | 3 - .../models/item/bamboo_pressure_plate.json | 3 - assets/minecraft/models/item/bamboo_slab.json | 3 - .../minecraft/models/item/bamboo_stairs.json | 3 - .../models/item/bamboo_trapdoor.json | 3 - assets/minecraft/models/item/barrel.json | 3 - assets/minecraft/models/item/basalt.json | 3 - .../minecraft/models/item/bat_spawn_egg.json | 3 - assets/minecraft/models/item/beacon.json | 3 - assets/minecraft/models/item/bedrock.json | 3 - assets/minecraft/models/item/bee_nest.json | 17 - .../minecraft/models/item/bee_nest_empty.json | 10 - .../minecraft/models/item/bee_nest_honey.json | 10 - .../minecraft/models/item/bee_spawn_egg.json | 3 - assets/minecraft/models/item/beehive.json | 17 - .../minecraft/models/item/beehive_empty.json | 10 - .../minecraft/models/item/beehive_honey.json | 10 - .../minecraft/models/item/birch_button.json | 3 - assets/minecraft/models/item/birch_fence.json | 3 - .../models/item/birch_fence_gate.json | 3 - .../minecraft/models/item/birch_leaves.json | 3 - assets/minecraft/models/item/birch_log.json | 3 - .../minecraft/models/item/birch_planks.json | 3 - .../models/item/birch_pressure_plate.json | 3 - assets/minecraft/models/item/birch_slab.json | 3 - .../minecraft/models/item/birch_stairs.json | 3 - .../minecraft/models/item/birch_trapdoor.json | 3 - assets/minecraft/models/item/birch_wood.json | 3 - .../minecraft/models/item/black_banner.json | 3 - .../models/item/black_bundle_open_back.json | 6 +- .../models/item/black_bundle_open_front.json | 6 +- .../minecraft/models/item/black_carpet.json | 3 - .../minecraft/models/item/black_concrete.json | 3 - .../models/item/black_concrete_powder.json | 3 - .../models/item/black_glazed_terracotta.json | 3 - .../models/item/black_stained_glass.json | 3 - .../models/item/black_terracotta.json | 3 - assets/minecraft/models/item/black_wool.json | 3 - assets/minecraft/models/item/blackstone.json | 3 - .../models/item/blackstone_slab.json | 3 - .../models/item/blackstone_stairs.json | 3 - .../models/item/blackstone_wall.json | 3 - .../minecraft/models/item/blast_furnace.json | 3 - .../models/item/blaze_spawn_egg.json | 3 - assets/minecraft/models/item/blue_banner.json | 3 - .../models/item/blue_bundle_open_back.json | 6 +- .../models/item/blue_bundle_open_front.json | 6 +- assets/minecraft/models/item/blue_carpet.json | 3 - .../minecraft/models/item/blue_concrete.json | 3 - .../models/item/blue_concrete_powder.json | 3 - .../models/item/blue_glazed_terracotta.json | 3 - assets/minecraft/models/item/blue_ice.json | 3 - .../models/item/blue_stained_glass.json | 3 - .../models/item/blue_terracotta.json | 3 - assets/minecraft/models/item/blue_wool.json | 3 - .../models/item/bogged_spawn_egg.json | 3 - assets/minecraft/models/item/bone_block.json | 3 - assets/minecraft/models/item/bookshelf.json | 3 - assets/minecraft/models/item/bow.json | 24 +- .../minecraft/models/item/bow_pulling_0.json | 10 +- .../minecraft/models/item/bow_pulling_1.json | 10 +- .../minecraft/models/item/bow_pulling_2.json | 10 +- .../models/item/brain_coral_block.json | 3 - .../models/item/breeze_spawn_egg.json | 3 - assets/minecraft/models/item/brick_slab.json | 3 - .../minecraft/models/item/brick_stairs.json | 3 - assets/minecraft/models/item/brick_wall.json | 3 - assets/minecraft/models/item/bricks.json | 3 - .../minecraft/models/item/broken_elytra.json | 6 - .../minecraft/models/item/brown_banner.json | 3 - .../models/item/brown_bundle_open_back.json | 6 +- .../models/item/brown_bundle_open_front.json | 6 +- .../minecraft/models/item/brown_carpet.json | 3 - .../minecraft/models/item/brown_concrete.json | 3 - .../models/item/brown_concrete_powder.json | 3 - .../models/item/brown_glazed_terracotta.json | 3 - .../models/item/brown_mushroom_block.json | 3 - .../models/item/brown_stained_glass.json | 3 - .../models/item/brown_terracotta.json | 3 - assets/minecraft/models/item/brown_wool.json | 3 - assets/minecraft/models/item/brush.json | 22 +- .../models/item/bubble_coral_block.json | 3 - .../models/item/budding_amethyst.json | 3 - .../models/item/bundle_open_back.json | 6 +- .../models/item/bundle_open_front.json | 6 +- assets/minecraft/models/item/cactus.json | 3 - assets/minecraft/models/item/calcite.json | 3 - .../models/item/calibrated_sculk_sensor.json | 3 - .../models/item/camel_spawn_egg.json | 3 - .../models/item/cartography_table.json | 3 - .../minecraft/models/item/carved_pumpkin.json | 3 - .../minecraft/models/item/cat_spawn_egg.json | 3 - .../models/item/cave_spider_spawn_egg.json | 3 - .../models/item/chain_command_block.json | 3 - .../models/item/chainmail_boots.json | 62 - .../item/chainmail_boots_resin_trim.json | 7 + .../models/item/chainmail_chestplate.json | 62 - .../item/chainmail_chestplate_resin_trim.json | 7 + .../models/item/chainmail_helmet.json | 62 - .../item/chainmail_helmet_resin_trim.json | 7 + .../models/item/chainmail_leggings.json | 62 - .../item/chainmail_leggings_resin_trim.json | 7 + .../minecraft/models/item/cherry_button.json | 3 - .../minecraft/models/item/cherry_fence.json | 3 - .../models/item/cherry_fence_gate.json | 3 - .../minecraft/models/item/cherry_leaves.json | 3 - assets/minecraft/models/item/cherry_log.json | 3 - .../minecraft/models/item/cherry_planks.json | 3 - .../models/item/cherry_pressure_plate.json | 3 - assets/minecraft/models/item/cherry_slab.json | 3 - .../minecraft/models/item/cherry_stairs.json | 3 - .../models/item/cherry_trapdoor.json | 3 - assets/minecraft/models/item/cherry_wood.json | 3 - assets/minecraft/models/item/chest.json | 42 +- .../models/item/chicken_spawn_egg.json | 3 - .../minecraft/models/item/chipped_anvil.json | 3 - .../models/item/chiseled_bookshelf.json | 3 - .../models/item/chiseled_copper.json | 3 - .../models/item/chiseled_deepslate.json | 3 - .../models/item/chiseled_nether_bricks.json | 3 - .../item/chiseled_polished_blackstone.json | 3 - .../models/item/chiseled_quartz_block.json | 3 - .../models/item/chiseled_red_sandstone.json | 3 - .../models/item/chiseled_sandstone.json | 3 - .../models/item/chiseled_stone_bricks.json | 3 - .../minecraft/models/item/chiseled_tuff.json | 3 - .../models/item/chiseled_tuff_bricks.json | 3 - .../minecraft/models/item/chorus_flower.json | 3 - .../minecraft/models/item/chorus_plant.json | 3 - assets/minecraft/models/item/clay.json | 3 - assets/minecraft/models/item/clock.json | 73 - assets/minecraft/models/item/clock_00.json | 6 + .../models/item/closed_eyeblossom.json | 6 + assets/minecraft/models/item/coal_block.json | 3 - assets/minecraft/models/item/coal_ore.json | 3 - assets/minecraft/models/item/coarse_dirt.json | 3 - .../models/item/cobbled_deepslate.json | 3 - .../models/item/cobbled_deepslate_slab.json | 3 - .../models/item/cobbled_deepslate_stairs.json | 3 - .../models/item/cobbled_deepslate_wall.json | 3 - assets/minecraft/models/item/cobblestone.json | 3 - .../models/item/cobblestone_slab.json | 3 - .../models/item/cobblestone_stairs.json | 3 - .../models/item/cobblestone_wall.json | 3 - .../minecraft/models/item/cod_spawn_egg.json | 3 - .../minecraft/models/item/command_block.json | 3 - assets/minecraft/models/item/compass.json | 41 - assets/minecraft/models/item/compass_16.json | 6 + assets/minecraft/models/item/composter.json | 3 - assets/minecraft/models/item/conduit.json | 1 - .../minecraft/models/item/copper_block.json | 3 - assets/minecraft/models/item/copper_bulb.json | 3 - .../minecraft/models/item/copper_grate.json | 3 - assets/minecraft/models/item/copper_ore.json | 3 - .../models/item/copper_trapdoor.json | 3 - .../minecraft/models/item/cow_spawn_egg.json | 3 - .../models/item/cracked_deepslate_bricks.json | 3 - .../models/item/cracked_deepslate_tiles.json | 3 - .../models/item/cracked_nether_bricks.json | 3 - .../cracked_polished_blackstone_bricks.json | 3 - .../models/item/cracked_stone_bricks.json | 3 - assets/minecraft/models/item/crafter.json | 3 - .../minecraft/models/item/crafting_table.json | 3 - .../minecraft/models/item/creaking_heart.json | 3 - .../models/item/creaking_spawn_egg.json | 3 - .../minecraft/models/item/creeper_head.json | 3 - .../models/item/creeper_spawn_egg.json | 3 - .../minecraft/models/item/crimson_button.json | 3 - .../minecraft/models/item/crimson_fence.json | 3 - .../models/item/crimson_fence_gate.json | 3 - .../minecraft/models/item/crimson_hyphae.json | 3 - .../minecraft/models/item/crimson_nylium.json | 3 - .../minecraft/models/item/crimson_planks.json | 3 - .../models/item/crimson_pressure_plate.json | 3 - .../minecraft/models/item/crimson_slab.json | 3 - .../minecraft/models/item/crimson_stairs.json | 3 - .../minecraft/models/item/crimson_stem.json | 3 - .../models/item/crimson_trapdoor.json | 3 - assets/minecraft/models/item/crossbow.json | 37 +- .../minecraft/models/item/crossbow_arrow.json | 10 +- .../models/item/crossbow_firework.json | 10 +- .../models/item/crossbow_pulling_0.json | 10 +- .../models/item/crossbow_pulling_1.json | 10 +- .../models/item/crossbow_pulling_2.json | 10 +- .../models/item/crying_obsidian.json | 3 - assets/minecraft/models/item/cut_copper.json | 3 - .../models/item/cut_copper_slab.json | 3 - .../models/item/cut_copper_stairs.json | 3 - .../models/item/cut_red_sandstone.json | 3 - .../models/item/cut_red_sandstone_slab.json | 3 - .../minecraft/models/item/cut_sandstone.json | 3 - .../models/item/cut_sandstone_slab.json | 3 - assets/minecraft/models/item/cyan_banner.json | 3 - .../models/item/cyan_bundle_open_back.json | 6 +- .../models/item/cyan_bundle_open_front.json | 6 +- assets/minecraft/models/item/cyan_carpet.json | 3 - .../minecraft/models/item/cyan_concrete.json | 3 - .../models/item/cyan_concrete_powder.json | 3 - .../models/item/cyan_glazed_terracotta.json | 3 - .../models/item/cyan_stained_glass.json | 3 - .../models/item/cyan_terracotta.json | 3 - assets/minecraft/models/item/cyan_wool.json | 3 - .../minecraft/models/item/damaged_anvil.json | 3 - .../models/item/dark_oak_button.json | 3 - .../minecraft/models/item/dark_oak_fence.json | 3 - .../models/item/dark_oak_fence_gate.json | 3 - .../models/item/dark_oak_leaves.json | 3 - .../minecraft/models/item/dark_oak_log.json | 3 - .../models/item/dark_oak_planks.json | 3 - .../models/item/dark_oak_pressure_plate.json | 3 - .../minecraft/models/item/dark_oak_slab.json | 3 - .../models/item/dark_oak_stairs.json | 3 - .../models/item/dark_oak_trapdoor.json | 3 - .../minecraft/models/item/dark_oak_wood.json | 3 - .../models/item/dark_prismarine.json | 3 - .../models/item/dark_prismarine_slab.json | 3 - .../models/item/dark_prismarine_stairs.json | 3 - .../models/item/daylight_detector.json | 3 - .../models/item/dead_brain_coral_block.json | 3 - .../models/item/dead_bubble_coral_block.json | 3 - .../models/item/dead_fire_coral_block.json | 3 - .../models/item/dead_horn_coral_block.json | 3 - .../models/item/dead_tube_coral_block.json | 3 - .../minecraft/models/item/decorated_pot.json | 1 - assets/minecraft/models/item/deepslate.json | 3 - .../models/item/deepslate_brick_slab.json | 3 - .../models/item/deepslate_brick_stairs.json | 3 - .../models/item/deepslate_brick_wall.json | 3 - .../models/item/deepslate_bricks.json | 3 - .../models/item/deepslate_coal_ore.json | 3 - .../models/item/deepslate_copper_ore.json | 3 - .../models/item/deepslate_diamond_ore.json | 3 - .../models/item/deepslate_emerald_ore.json | 3 - .../models/item/deepslate_gold_ore.json | 3 - .../models/item/deepslate_iron_ore.json | 3 - .../models/item/deepslate_lapis_ore.json | 3 - .../models/item/deepslate_redstone_ore.json | 3 - .../models/item/deepslate_tile_slab.json | 3 - .../models/item/deepslate_tile_stairs.json | 3 - .../models/item/deepslate_tile_wall.json | 3 - .../models/item/deepslate_tiles.json | 3 - .../minecraft/models/item/diamond_block.json | 3 - .../minecraft/models/item/diamond_boots.json | 62 - ...m.json => diamond_boots_diamond_trim.json} | 0 .../models/item/diamond_boots_resin_trim.json | 7 + .../models/item/diamond_chestplate.json | 62 - ...n => diamond_chestplate_diamond_trim.json} | 0 .../item/diamond_chestplate_resin_trim.json | 7 + .../minecraft/models/item/diamond_helmet.json | 62 - ....json => diamond_helmet_diamond_trim.json} | 0 .../item/diamond_helmet_resin_trim.json | 7 + .../models/item/diamond_leggings.json | 62 - ...son => diamond_leggings_diamond_trim.json} | 0 .../item/diamond_leggings_resin_trim.json | 7 + assets/minecraft/models/item/diamond_ore.json | 3 - assets/minecraft/models/item/diorite.json | 3 - .../minecraft/models/item/diorite_slab.json | 3 - .../minecraft/models/item/diorite_stairs.json | 3 - .../minecraft/models/item/diorite_wall.json | 3 - assets/minecraft/models/item/dirt.json | 3 - assets/minecraft/models/item/dirt_path.json | 3 - assets/minecraft/models/item/dispenser.json | 3 - .../models/item/dolphin_spawn_egg.json | 3 - .../models/item/donkey_spawn_egg.json | 3 - assets/minecraft/models/item/dragon_egg.json | 3 - .../models/item/dried_kelp_block.json | 3 - .../models/item/dripstone_block.json | 3 - assets/minecraft/models/item/dropper.json | 3 - .../models/item/drowned_spawn_egg.json | 3 - .../models/item/elder_guardian_spawn_egg.json | 3 - assets/minecraft/models/item/elytra.json | 18 +- .../minecraft/models/item/elytra_broken.json | 6 + .../minecraft/models/item/emerald_block.json | 3 - assets/minecraft/models/item/emerald_ore.json | 3 - .../models/item/enchanting_table.json | 3 - .../models/item/end_portal_frame.json | 3 - assets/minecraft/models/item/end_rod.json | 3 - assets/minecraft/models/item/end_stone.json | 3 - .../models/item/end_stone_brick_slab.json | 3 - .../models/item/end_stone_brick_stairs.json | 3 - .../models/item/end_stone_brick_wall.json | 3 - .../models/item/end_stone_bricks.json | 3 - assets/minecraft/models/item/ender_chest.json | 10 +- .../models/item/ender_dragon_spawn_egg.json | 3 - .../models/item/enderman_spawn_egg.json | 3 - .../models/item/endermite_spawn_egg.json | 3 - .../models/item/evoker_spawn_egg.json | 3 - .../models/item/exposed_chiseled_copper.json | 3 - .../minecraft/models/item/exposed_copper.json | 3 - .../models/item/exposed_copper_bulb.json | 3 - .../models/item/exposed_copper_grate.json | 3 - .../models/item/exposed_copper_trapdoor.json | 3 - .../models/item/exposed_cut_copper.json | 3 - .../models/item/exposed_cut_copper_slab.json | 3 - .../item/exposed_cut_copper_stairs.json | 3 - assets/minecraft/models/item/farmland.json | 3 - assets/minecraft/models/item/filled_map.json | 12 +- .../models/item/fire_coral_block.json | 3 - .../minecraft/models/item/firework_star.json | 12 +- assets/minecraft/models/item/fishing_rod.json | 18 +- .../models/item/fishing_rod_cast.json | 10 +- .../models/item/fletching_table.json | 3 - .../models/item/flowering_azalea.json | 3 - .../models/item/flowering_azalea_leaves.json | 3 - .../minecraft/models/item/fox_spawn_egg.json | 3 - .../minecraft/models/item/frog_spawn_egg.json | 3 - assets/minecraft/models/item/furnace.json | 3 - .../models/item/ghast_spawn_egg.json | 3 - .../models/item/gilded_blackstone.json | 3 - assets/minecraft/models/item/glass.json | 3 - .../models/item/glow_squid_spawn_egg.json | 3 - assets/minecraft/models/item/glowstone.json | 3 - assets/minecraft/models/item/goat_horn.json | 10 +- .../minecraft/models/item/goat_spawn_egg.json | 3 - assets/minecraft/models/item/gold_block.json | 3 - assets/minecraft/models/item/gold_ore.json | 3 - .../minecraft/models/item/golden_boots.json | 62 - ..._trim.json => golden_boots_gold_trim.json} | 0 .../models/item/golden_boots_resin_trim.json | 7 + .../models/item/golden_chestplate.json | 62 - ....json => golden_chestplate_gold_trim.json} | 0 .../item/golden_chestplate_resin_trim.json | 7 + .../minecraft/models/item/golden_helmet.json | 62 - ...trim.json => golden_helmet_gold_trim.json} | 0 .../models/item/golden_helmet_resin_trim.json | 7 + .../models/item/golden_leggings.json | 62 - ...im.json => golden_leggings_gold_trim.json} | 0 .../item/golden_leggings_resin_trim.json | 7 + assets/minecraft/models/item/granite.json | 3 - .../minecraft/models/item/granite_slab.json | 3 - .../minecraft/models/item/granite_stairs.json | 3 - .../minecraft/models/item/granite_wall.json | 3 - assets/minecraft/models/item/grass_block.json | 3 - assets/minecraft/models/item/gravel.json | 3 - assets/minecraft/models/item/gray_banner.json | 3 - .../models/item/gray_bundle_open_back.json | 6 +- .../models/item/gray_bundle_open_front.json | 6 +- assets/minecraft/models/item/gray_carpet.json | 3 - .../minecraft/models/item/gray_concrete.json | 3 - .../models/item/gray_concrete_powder.json | 3 - .../models/item/gray_glazed_terracotta.json | 3 - .../models/item/gray_stained_glass.json | 3 - .../models/item/gray_terracotta.json | 3 - assets/minecraft/models/item/gray_wool.json | 3 - .../minecraft/models/item/green_banner.json | 3 - .../models/item/green_bundle_open_back.json | 6 +- .../models/item/green_bundle_open_front.json | 6 +- .../minecraft/models/item/green_carpet.json | 3 - .../minecraft/models/item/green_concrete.json | 3 - .../models/item/green_concrete_powder.json | 3 - .../models/item/green_glazed_terracotta.json | 3 - .../models/item/green_stained_glass.json | 3 - .../models/item/green_terracotta.json | 3 - assets/minecraft/models/item/green_wool.json | 3 - assets/minecraft/models/item/grindstone.json | 3 - .../models/item/guardian_spawn_egg.json | 3 - assets/minecraft/models/item/hay_block.json | 3 - assets/minecraft/models/item/heavy_core.json | 3 - .../item/heavy_weighted_pressure_plate.json | 3 - .../models/item/hoglin_spawn_egg.json | 3 - assets/minecraft/models/item/honey_block.json | 3 - .../models/item/honeycomb_block.json | 3 - .../models/item/horn_coral_block.json | 3 - .../models/item/horse_spawn_egg.json | 3 - .../minecraft/models/item/husk_spawn_egg.json | 3 - assets/minecraft/models/item/ice.json | 3 - .../item/infested_chiseled_stone_bricks.json | 3 - .../models/item/infested_cobblestone.json | 3 - .../item/infested_cracked_stone_bricks.json | 3 - .../models/item/infested_deepslate.json | 3 - .../item/infested_mossy_stone_bricks.json | 3 - .../minecraft/models/item/infested_stone.json | 3 - .../models/item/infested_stone_bricks.json | 3 - assets/minecraft/models/item/iron_block.json | 3 - assets/minecraft/models/item/iron_boots.json | 62 - ...er_trim.json => iron_boots_iron_trim.json} | 0 .../models/item/iron_boots_resin_trim.json | 7 + .../models/item/iron_chestplate.json | 62 - ...im.json => iron_chestplate_iron_trim.json} | 0 .../item/iron_chestplate_resin_trim.json | 7 + .../models/item/iron_golem_spawn_egg.json | 3 - assets/minecraft/models/item/iron_helmet.json | 62 - ...r_trim.json => iron_helmet_iron_trim.json} | 0 .../models/item/iron_helmet_resin_trim.json | 7 + .../minecraft/models/item/iron_leggings.json | 62 - ...trim.json => iron_leggings_iron_trim.json} | 0 .../models/item/iron_leggings_resin_trim.json | 7 + assets/minecraft/models/item/iron_ore.json | 3 - .../minecraft/models/item/iron_trapdoor.json | 3 - .../minecraft/models/item/jack_o_lantern.json | 3 - assets/minecraft/models/item/jigsaw.json | 3 - assets/minecraft/models/item/jukebox.json | 3 - .../minecraft/models/item/jungle_button.json | 3 - .../minecraft/models/item/jungle_fence.json | 3 - .../models/item/jungle_fence_gate.json | 3 - .../minecraft/models/item/jungle_leaves.json | 3 - assets/minecraft/models/item/jungle_log.json | 3 - .../minecraft/models/item/jungle_planks.json | 3 - .../models/item/jungle_pressure_plate.json | 3 - assets/minecraft/models/item/jungle_slab.json | 3 - .../minecraft/models/item/jungle_stairs.json | 3 - .../models/item/jungle_trapdoor.json | 3 - assets/minecraft/models/item/jungle_wood.json | 3 - assets/minecraft/models/item/lapis_block.json | 3 - assets/minecraft/models/item/lapis_ore.json | 3 - .../minecraft/models/item/leather_boots.json | 62 - .../models/item/leather_boots_resin_trim.json | 8 + .../models/item/leather_chestplate.json | 62 - .../item/leather_chestplate_resin_trim.json | 8 + .../minecraft/models/item/leather_helmet.json | 62 - .../item/leather_helmet_resin_trim.json | 8 + .../models/item/leather_leggings.json | 62 - .../item/leather_leggings_resin_trim.json | 8 + assets/minecraft/models/item/lectern.json | 3 - assets/minecraft/models/item/light.json | 22 +- .../models/item/light_blue_banner.json | 3 - .../item/light_blue_bundle_open_back.json | 6 +- .../item/light_blue_bundle_open_front.json | 6 +- .../models/item/light_blue_carpet.json | 3 - .../models/item/light_blue_concrete.json | 3 - .../item/light_blue_concrete_powder.json | 3 - .../item/light_blue_glazed_terracotta.json | 3 - .../models/item/light_blue_stained_glass.json | 3 - .../models/item/light_blue_terracotta.json | 3 - .../models/item/light_blue_wool.json | 3 - .../models/item/light_gray_banner.json | 3 - .../item/light_gray_bundle_open_back.json | 6 +- .../item/light_gray_bundle_open_front.json | 6 +- .../models/item/light_gray_carpet.json | 3 - .../models/item/light_gray_concrete.json | 3 - .../item/light_gray_concrete_powder.json | 3 - .../item/light_gray_glazed_terracotta.json | 3 - .../models/item/light_gray_stained_glass.json | 3 - .../models/item/light_gray_terracotta.json | 3 - .../models/item/light_gray_wool.json | 3 - .../item/light_weighted_pressure_plate.json | 3 - .../minecraft/models/item/lightning_rod.json | 3 - assets/minecraft/models/item/lime_banner.json | 3 - .../models/item/lime_bundle_open_back.json | 6 +- .../models/item/lime_bundle_open_front.json | 6 +- assets/minecraft/models/item/lime_carpet.json | 3 - .../minecraft/models/item/lime_concrete.json | 3 - .../models/item/lime_concrete_powder.json | 3 - .../models/item/lime_glazed_terracotta.json | 3 - .../models/item/lime_stained_glass.json | 3 - .../models/item/lime_terracotta.json | 3 - assets/minecraft/models/item/lime_wool.json | 3 - .../models/item/lingering_potion.json | 12 +- .../models/item/llama_spawn_egg.json | 3 - assets/minecraft/models/item/lodestone.json | 3 - assets/minecraft/models/item/loom.json | 3 - .../minecraft/models/item/magenta_banner.json | 3 - .../models/item/magenta_bundle_open_back.json | 6 +- .../item/magenta_bundle_open_front.json | 6 +- .../minecraft/models/item/magenta_carpet.json | 3 - .../models/item/magenta_concrete.json | 3 - .../models/item/magenta_concrete_powder.json | 3 - .../item/magenta_glazed_terracotta.json | 3 - .../models/item/magenta_stained_glass.json | 3 - .../models/item/magenta_terracotta.json | 3 - .../minecraft/models/item/magenta_wool.json | 3 - assets/minecraft/models/item/magma_block.json | 3 - .../models/item/magma_cube_spawn_egg.json | 3 - .../models/item/mangrove_button.json | 3 - .../minecraft/models/item/mangrove_fence.json | 3 - .../models/item/mangrove_fence_gate.json | 3 - .../models/item/mangrove_leaves.json | 3 - .../minecraft/models/item/mangrove_log.json | 3 - .../models/item/mangrove_planks.json | 3 - .../models/item/mangrove_pressure_plate.json | 3 - .../minecraft/models/item/mangrove_roots.json | 3 - .../minecraft/models/item/mangrove_slab.json | 3 - .../models/item/mangrove_stairs.json | 3 - .../models/item/mangrove_trapdoor.json | 3 - .../minecraft/models/item/mangrove_wood.json | 3 - assets/minecraft/models/item/melon.json | 3 - .../models/item/mooshroom_spawn_egg.json | 3 - assets/minecraft/models/item/moss_block.json | 3 - assets/minecraft/models/item/moss_carpet.json | 3 - .../models/item/mossy_cobblestone.json | 3 - .../models/item/mossy_cobblestone_slab.json | 3 - .../models/item/mossy_cobblestone_stairs.json | 3 - .../models/item/mossy_cobblestone_wall.json | 3 - .../models/item/mossy_stone_brick_slab.json | 3 - .../models/item/mossy_stone_brick_stairs.json | 3 - .../models/item/mossy_stone_brick_wall.json | 3 - .../models/item/mossy_stone_bricks.json | 3 - assets/minecraft/models/item/mud.json | 3 - .../minecraft/models/item/mud_brick_slab.json | 3 - .../models/item/mud_brick_stairs.json | 3 - .../minecraft/models/item/mud_brick_wall.json | 3 - assets/minecraft/models/item/mud_bricks.json | 3 - .../models/item/muddy_mangrove_roots.json | 3 - .../minecraft/models/item/mule_spawn_egg.json | 3 - .../minecraft/models/item/mushroom_stem.json | 3 - assets/minecraft/models/item/mycelium.json | 3 - .../models/item/nether_brick_fence.json | 3 - .../models/item/nether_brick_slab.json | 3 - .../models/item/nether_brick_stairs.json | 3 - .../models/item/nether_brick_wall.json | 3 - .../minecraft/models/item/nether_bricks.json | 3 - .../models/item/nether_gold_ore.json | 3 - .../models/item/nether_quartz_ore.json | 3 - .../models/item/nether_wart_block.json | 3 - .../models/item/netherite_block.json | 3 - .../models/item/netherite_boots.json | 62 - ...on => netherite_boots_netherite_trim.json} | 0 .../item/netherite_boots_resin_trim.json | 7 + .../models/item/netherite_chestplate.json | 62 - ... netherite_chestplate_netherite_trim.json} | 0 .../item/netherite_chestplate_resin_trim.json | 7 + .../models/item/netherite_helmet.json | 62 - ...n => netherite_helmet_netherite_trim.json} | 0 .../item/netherite_helmet_resin_trim.json | 7 + .../models/item/netherite_leggings.json | 62 - ...=> netherite_leggings_netherite_trim.json} | 0 .../item/netherite_leggings_resin_trim.json | 7 + assets/minecraft/models/item/netherrack.json | 3 - assets/minecraft/models/item/note_block.json | 3 - assets/minecraft/models/item/oak_button.json | 3 - assets/minecraft/models/item/oak_fence.json | 3 - .../minecraft/models/item/oak_fence_gate.json | 3 - assets/minecraft/models/item/oak_leaves.json | 3 - assets/minecraft/models/item/oak_log.json | 3 - assets/minecraft/models/item/oak_planks.json | 3 - .../models/item/oak_pressure_plate.json | 3 - assets/minecraft/models/item/oak_slab.json | 3 - assets/minecraft/models/item/oak_stairs.json | 3 - .../minecraft/models/item/oak_trapdoor.json | 3 - assets/minecraft/models/item/oak_wood.json | 3 - assets/minecraft/models/item/observer.json | 3 - assets/minecraft/models/item/obsidian.json | 3 - .../models/item/ocelot_spawn_egg.json | 3 - .../models/item/ochre_froglight.json | 3 - .../models/item/open_eyeblossom.json | 7 + .../minecraft/models/item/orange_banner.json | 3 - .../models/item/orange_bundle_open_back.json | 6 +- .../models/item/orange_bundle_open_front.json | 6 +- .../minecraft/models/item/orange_carpet.json | 3 - .../models/item/orange_concrete.json | 3 - .../models/item/orange_concrete_powder.json | 3 - .../models/item/orange_glazed_terracotta.json | 3 - .../models/item/orange_stained_glass.json | 3 - .../models/item/orange_terracotta.json | 3 - assets/minecraft/models/item/orange_wool.json | 3 - .../models/item/oxidized_chiseled_copper.json | 3 - .../models/item/oxidized_copper.json | 3 - .../models/item/oxidized_copper_bulb.json | 3 - .../models/item/oxidized_copper_grate.json | 3 - .../models/item/oxidized_copper_trapdoor.json | 3 - .../models/item/oxidized_cut_copper.json | 3 - .../models/item/oxidized_cut_copper_slab.json | 3 - .../item/oxidized_cut_copper_stairs.json | 3 - assets/minecraft/models/item/packed_ice.json | 3 - assets/minecraft/models/item/packed_mud.json | 3 - .../models/item/pale_moss_block.json | 3 - .../models/item/pale_moss_carpet.json | 3 - .../models/item/pale_oak_button.json | 3 - .../minecraft/models/item/pale_oak_fence.json | 3 - .../models/item/pale_oak_fence_gate.json | 3 - .../models/item/pale_oak_leaves.json | 3 - .../minecraft/models/item/pale_oak_log.json | 3 - .../models/item/pale_oak_planks.json | 3 - .../models/item/pale_oak_pressure_plate.json | 3 - .../minecraft/models/item/pale_oak_slab.json | 3 - .../models/item/pale_oak_stairs.json | 3 - .../models/item/pale_oak_trapdoor.json | 3 - .../minecraft/models/item/pale_oak_wood.json | 3 - .../models/item/panda_spawn_egg.json | 3 - .../models/item/parrot_spawn_egg.json | 3 - .../models/item/pearlescent_froglight.json | 3 - .../models/item/petrified_oak_slab.json | 3 - .../models/item/phantom_spawn_egg.json | 3 - .../minecraft/models/item/pig_spawn_egg.json | 3 - .../models/item/piglin_brute_spawn_egg.json | 3 - assets/minecraft/models/item/piglin_head.json | 3 - .../models/item/piglin_spawn_egg.json | 3 - .../models/item/pillager_spawn_egg.json | 3 - assets/minecraft/models/item/pink_banner.json | 3 - .../models/item/pink_bundle_open_back.json | 6 +- .../models/item/pink_bundle_open_front.json | 6 +- assets/minecraft/models/item/pink_carpet.json | 3 - .../minecraft/models/item/pink_concrete.json | 3 - .../models/item/pink_concrete_powder.json | 3 - .../models/item/pink_glazed_terracotta.json | 3 - .../models/item/pink_stained_glass.json | 3 - .../models/item/pink_terracotta.json | 3 - assets/minecraft/models/item/pink_wool.json | 3 - assets/minecraft/models/item/piston.json | 3 - assets/minecraft/models/item/player_head.json | 3 - assets/minecraft/models/item/podzol.json | 3 - .../models/item/polar_bear_spawn_egg.json | 3 - .../models/item/polished_andesite.json | 3 - .../models/item/polished_andesite_slab.json | 3 - .../models/item/polished_andesite_stairs.json | 3 - .../models/item/polished_basalt.json | 3 - .../models/item/polished_blackstone.json | 3 - .../item/polished_blackstone_brick_slab.json | 3 - .../polished_blackstone_brick_stairs.json | 3 - .../item/polished_blackstone_brick_wall.json | 3 - .../item/polished_blackstone_bricks.json | 3 - .../item/polished_blackstone_button.json | 3 - .../polished_blackstone_pressure_plate.json | 3 - .../models/item/polished_blackstone_slab.json | 3 - .../item/polished_blackstone_stairs.json | 3 - .../models/item/polished_blackstone_wall.json | 3 - .../models/item/polished_deepslate.json | 3 - .../models/item/polished_deepslate_slab.json | 3 - .../item/polished_deepslate_stairs.json | 3 - .../models/item/polished_deepslate_wall.json | 3 - .../models/item/polished_diorite.json | 3 - .../models/item/polished_diorite_slab.json | 3 - .../models/item/polished_diorite_stairs.json | 3 - .../models/item/polished_granite.json | 3 - .../models/item/polished_granite_slab.json | 3 - .../models/item/polished_granite_stairs.json | 3 - .../minecraft/models/item/polished_tuff.json | 3 - .../models/item/polished_tuff_slab.json | 3 - .../models/item/polished_tuff_stairs.json | 3 - .../models/item/polished_tuff_wall.json | 3 - assets/minecraft/models/item/potion.json | 12 +- assets/minecraft/models/item/prismarine.json | 3 - .../models/item/prismarine_brick_slab.json | 3 - .../models/item/prismarine_brick_stairs.json | 3 - .../models/item/prismarine_bricks.json | 3 - .../models/item/prismarine_slab.json | 3 - .../models/item/prismarine_stairs.json | 3 - .../models/item/prismarine_wall.json | 3 - .../models/item/pufferfish_spawn_egg.json | 3 - assets/minecraft/models/item/pumpkin.json | 3 - .../minecraft/models/item/purple_banner.json | 3 - .../models/item/purple_bundle_open_back.json | 6 +- .../models/item/purple_bundle_open_front.json | 6 +- .../minecraft/models/item/purple_carpet.json | 3 - .../models/item/purple_concrete.json | 3 - .../models/item/purple_concrete_powder.json | 3 - .../models/item/purple_glazed_terracotta.json | 3 - .../models/item/purple_stained_glass.json | 3 - .../models/item/purple_terracotta.json | 3 - assets/minecraft/models/item/purple_wool.json | 3 - .../minecraft/models/item/purpur_block.json | 3 - .../minecraft/models/item/purpur_pillar.json | 3 - assets/minecraft/models/item/purpur_slab.json | 3 - .../minecraft/models/item/purpur_stairs.json | 3 - .../minecraft/models/item/quartz_block.json | 3 - .../minecraft/models/item/quartz_bricks.json | 3 - .../minecraft/models/item/quartz_pillar.json | 3 - assets/minecraft/models/item/quartz_slab.json | 3 - .../minecraft/models/item/quartz_stairs.json | 3 - .../models/item/rabbit_spawn_egg.json | 3 - .../models/item/ravager_spawn_egg.json | 3 - .../models/item/raw_copper_block.json | 3 - .../minecraft/models/item/raw_gold_block.json | 3 - .../minecraft/models/item/raw_iron_block.json | 3 - .../models/item/recovery_compass.json | 41 - .../models/item/recovery_compass_16.json | 6 + assets/minecraft/models/item/red_banner.json | 3 - .../models/item/red_bundle_open_back.json | 6 +- .../models/item/red_bundle_open_front.json | 6 +- assets/minecraft/models/item/red_carpet.json | 3 - .../minecraft/models/item/red_concrete.json | 3 - .../models/item/red_concrete_powder.json | 3 - .../models/item/red_glazed_terracotta.json | 3 - .../models/item/red_mushroom_block.json | 3 - .../models/item/red_nether_brick_slab.json | 3 - .../models/item/red_nether_brick_stairs.json | 3 - .../models/item/red_nether_brick_wall.json | 3 - .../models/item/red_nether_bricks.json | 3 - assets/minecraft/models/item/red_sand.json | 3 - .../minecraft/models/item/red_sandstone.json | 3 - .../models/item/red_sandstone_slab.json | 3 - .../models/item/red_sandstone_stairs.json | 3 - .../models/item/red_sandstone_wall.json | 3 - .../models/item/red_stained_glass.json | 3 - .../minecraft/models/item/red_terracotta.json | 3 - assets/minecraft/models/item/red_wool.json | 3 - .../minecraft/models/item/redstone_block.json | 3 - .../minecraft/models/item/redstone_lamp.json | 3 - .../minecraft/models/item/redstone_ore.json | 3 - .../models/item/reinforced_deepslate.json | 3 - .../models/item/repeating_command_block.json | 3 - assets/minecraft/models/item/resin_brick.json | 6 + assets/minecraft/models/item/resin_clump.json | 6 + .../minecraft/models/item/respawn_anchor.json | 3 - assets/minecraft/models/item/rooted_dirt.json | 3 - .../models/item/salmon_spawn_egg.json | 3 - assets/minecraft/models/item/sand.json | 3 - assets/minecraft/models/item/sandstone.json | 3 - .../minecraft/models/item/sandstone_slab.json | 3 - .../models/item/sandstone_stairs.json | 3 - .../minecraft/models/item/sandstone_wall.json | 3 - assets/minecraft/models/item/scaffolding.json | 3 - assets/minecraft/models/item/sculk.json | 3 - .../minecraft/models/item/sculk_catalyst.json | 3 - .../minecraft/models/item/sculk_sensor.json | 3 - .../minecraft/models/item/sculk_shrieker.json | 3 - assets/minecraft/models/item/sea_lantern.json | 3 - .../models/item/sheep_spawn_egg.json | 3 - assets/minecraft/models/item/shield.json | 11 +- .../models/item/shield_blocking.json | 1 - assets/minecraft/models/item/shroomlight.json | 3 - .../models/item/shulker_spawn_egg.json | 3 - .../models/item/silverfish_spawn_egg.json | 3 - .../models/item/skeleton_horse_spawn_egg.json | 3 - .../minecraft/models/item/skeleton_skull.json | 3 - .../models/item/skeleton_spawn_egg.json | 3 - assets/minecraft/models/item/slime_block.json | 3 - .../models/item/slime_spawn_egg.json | 3 - .../minecraft/models/item/smithing_table.json | 3 - assets/minecraft/models/item/smoker.json | 3 - .../minecraft/models/item/smooth_basalt.json | 3 - .../minecraft/models/item/smooth_quartz.json | 3 - .../models/item/smooth_quartz_slab.json | 3 - .../models/item/smooth_quartz_stairs.json | 3 - .../models/item/smooth_red_sandstone.json | 3 - .../item/smooth_red_sandstone_slab.json | 3 - .../item/smooth_red_sandstone_stairs.json | 3 - .../models/item/smooth_sandstone.json | 3 - .../models/item/smooth_sandstone_slab.json | 3 - .../models/item/smooth_sandstone_stairs.json | 3 - .../minecraft/models/item/smooth_stone.json | 3 - .../models/item/smooth_stone_slab.json | 3 - .../models/item/sniffer_spawn_egg.json | 3 - assets/minecraft/models/item/snow.json | 3 - assets/minecraft/models/item/snow_block.json | 3 - .../models/item/snow_golem_spawn_egg.json | 3 - assets/minecraft/models/item/soul_sand.json | 3 - assets/minecraft/models/item/soul_soil.json | 3 - assets/minecraft/models/item/spawner.json | 3 - .../models/item/spider_spawn_egg.json | 3 - .../minecraft/models/item/splash_potion.json | 12 +- assets/minecraft/models/item/sponge.json | 3 - .../minecraft/models/item/spore_blossom.json | 3 - .../minecraft/models/item/spruce_button.json | 3 - .../minecraft/models/item/spruce_fence.json | 3 - .../models/item/spruce_fence_gate.json | 3 - .../minecraft/models/item/spruce_leaves.json | 3 - assets/minecraft/models/item/spruce_log.json | 3 - .../minecraft/models/item/spruce_planks.json | 3 - .../models/item/spruce_pressure_plate.json | 3 - assets/minecraft/models/item/spruce_slab.json | 3 - .../minecraft/models/item/spruce_stairs.json | 3 - .../models/item/spruce_trapdoor.json | 3 - assets/minecraft/models/item/spruce_wood.json | 3 - .../models/item/spyglass_in_hand.json | 3 +- .../models/item/squid_spawn_egg.json | 3 - .../minecraft/models/item/sticky_piston.json | 3 - assets/minecraft/models/item/stone.json | 3 - .../models/item/stone_brick_slab.json | 3 - .../models/item/stone_brick_stairs.json | 3 - .../models/item/stone_brick_wall.json | 3 - .../minecraft/models/item/stone_bricks.json | 3 - .../minecraft/models/item/stone_button.json | 3 - .../models/item/stone_pressure_plate.json | 3 - assets/minecraft/models/item/stone_slab.json | 3 - .../minecraft/models/item/stone_stairs.json | 3 - assets/minecraft/models/item/stonecutter.json | 3 - .../models/item/stray_spawn_egg.json | 3 - .../models/item/strider_spawn_egg.json | 3 - .../models/item/stripped_acacia_log.json | 3 - .../models/item/stripped_acacia_wood.json | 3 - .../models/item/stripped_bamboo_block.json | 3 - .../models/item/stripped_birch_log.json | 3 - .../models/item/stripped_birch_wood.json | 3 - .../models/item/stripped_cherry_log.json | 3 - .../models/item/stripped_cherry_wood.json | 3 - .../models/item/stripped_crimson_hyphae.json | 3 - .../models/item/stripped_crimson_stem.json | 3 - .../models/item/stripped_dark_oak_log.json | 3 - .../models/item/stripped_dark_oak_wood.json | 3 - .../models/item/stripped_jungle_log.json | 3 - .../models/item/stripped_jungle_wood.json | 3 - .../models/item/stripped_mangrove_log.json | 3 - .../models/item/stripped_mangrove_wood.json | 3 - .../models/item/stripped_oak_log.json | 3 - .../models/item/stripped_oak_wood.json | 3 - .../models/item/stripped_pale_oak_log.json | 3 - .../models/item/stripped_pale_oak_wood.json | 3 - .../models/item/stripped_spruce_log.json | 3 - .../models/item/stripped_spruce_wood.json | 3 - .../models/item/stripped_warped_hyphae.json | 3 - .../models/item/stripped_warped_stem.json | 3 - .../models/item/structure_block.json | 3 - .../models/item/suspicious_gravel.json | 3 - .../models/item/suspicious_sand.json | 3 - .../models/item/tadpole_spawn_egg.json | 3 - assets/minecraft/models/item/target.json | 3 - .../models/item/template_banner.json | 1 - .../minecraft/models/item/template_bed.json | 1 - .../item/template_bundle_open_back.json | 8 + .../item/template_bundle_open_front.json | 8 + .../minecraft/models/item/template_chest.json | 34 + .../models/item/template_shulker_box.json | 1 - .../minecraft/models/item/template_skull.json | 1 - assets/minecraft/models/item/terracotta.json | 3 - .../minecraft/models/item/tinted_glass.json | 3 - .../minecraft/models/item/tipped_arrow.json | 12 +- assets/minecraft/models/item/tnt.json | 3 - .../models/item/trader_llama_spawn_egg.json | 3 - .../minecraft/models/item/trapped_chest.json | 7 +- .../minecraft/models/item/trial_spawner.json | 3 - .../models/item/trident_in_hand.json | 11 +- .../models/item/trident_throwing.json | 1 - .../models/item/tropical_fish_spawn_egg.json | 3 - .../models/item/tube_coral_block.json | 3 - assets/minecraft/models/item/tuff.json | 3 - .../models/item/tuff_brick_slab.json | 3 - .../models/item/tuff_brick_stairs.json | 3 - .../models/item/tuff_brick_wall.json | 3 - assets/minecraft/models/item/tuff_bricks.json | 3 - assets/minecraft/models/item/tuff_slab.json | 3 - assets/minecraft/models/item/tuff_stairs.json | 3 - assets/minecraft/models/item/tuff_wall.json | 3 - .../minecraft/models/item/turtle_helmet.json | 62 - .../models/item/turtle_helmet_resin_trim.json | 7 + .../models/item/turtle_spawn_egg.json | 3 - assets/minecraft/models/item/vault.json | 3 - .../models/item/verdant_froglight.json | 3 - .../minecraft/models/item/vex_spawn_egg.json | 3 - .../models/item/villager_spawn_egg.json | 3 - .../models/item/vindicator_spawn_egg.json | 3 - .../item/wandering_trader_spawn_egg.json | 3 - .../models/item/warden_spawn_egg.json | 3 - .../minecraft/models/item/warped_button.json | 3 - .../minecraft/models/item/warped_fence.json | 3 - .../models/item/warped_fence_gate.json | 3 - .../minecraft/models/item/warped_hyphae.json | 3 - .../minecraft/models/item/warped_nylium.json | 3 - .../minecraft/models/item/warped_planks.json | 3 - .../models/item/warped_pressure_plate.json | 3 - assets/minecraft/models/item/warped_slab.json | 3 - .../minecraft/models/item/warped_stairs.json | 3 - assets/minecraft/models/item/warped_stem.json | 3 - .../models/item/warped_trapdoor.json | 3 - .../models/item/warped_wart_block.json | 3 - .../models/item/waxed_chiseled_copper.json | 3 - .../models/item/waxed_copper_block.json | 3 - .../models/item/waxed_copper_bulb.json | 3 - .../models/item/waxed_copper_door.json | 3 - .../models/item/waxed_copper_grate.json | 3 - .../models/item/waxed_copper_trapdoor.json | 3 - .../models/item/waxed_cut_copper.json | 3 - .../models/item/waxed_cut_copper_slab.json | 3 - .../models/item/waxed_cut_copper_stairs.json | 3 - .../item/waxed_exposed_chiseled_copper.json | 3 - .../models/item/waxed_exposed_copper.json | 3 - .../item/waxed_exposed_copper_bulb.json | 3 - .../item/waxed_exposed_copper_door.json | 3 - .../item/waxed_exposed_copper_grate.json | 3 - .../item/waxed_exposed_copper_trapdoor.json | 3 - .../models/item/waxed_exposed_cut_copper.json | 3 - .../item/waxed_exposed_cut_copper_slab.json | 3 - .../item/waxed_exposed_cut_copper_stairs.json | 3 - .../item/waxed_oxidized_chiseled_copper.json | 3 - .../models/item/waxed_oxidized_copper.json | 3 - .../item/waxed_oxidized_copper_bulb.json | 3 - .../item/waxed_oxidized_copper_door.json | 3 - .../item/waxed_oxidized_copper_grate.json | 3 - .../item/waxed_oxidized_copper_trapdoor.json | 3 - .../item/waxed_oxidized_cut_copper.json | 3 - .../item/waxed_oxidized_cut_copper_slab.json | 3 - .../waxed_oxidized_cut_copper_stairs.json | 3 - .../item/waxed_weathered_chiseled_copper.json | 3 - .../models/item/waxed_weathered_copper.json | 3 - .../item/waxed_weathered_copper_bulb.json | 3 - .../item/waxed_weathered_copper_door.json | 3 - .../item/waxed_weathered_copper_grate.json | 3 - .../item/waxed_weathered_copper_trapdoor.json | 3 - .../item/waxed_weathered_cut_copper.json | 3 - .../item/waxed_weathered_cut_copper_slab.json | 3 - .../waxed_weathered_cut_copper_stairs.json | 3 - .../item/weathered_chiseled_copper.json | 3 - .../models/item/weathered_copper.json | 3 - .../models/item/weathered_copper_bulb.json | 3 - .../models/item/weathered_copper_grate.json | 3 - .../item/weathered_copper_trapdoor.json | 3 - .../models/item/weathered_cut_copper.json | 3 - .../item/weathered_cut_copper_slab.json | 3 - .../item/weathered_cut_copper_stairs.json | 3 - assets/minecraft/models/item/wet_sponge.json | 3 - .../minecraft/models/item/white_banner.json | 3 - .../models/item/white_bundle_open_back.json | 6 +- .../models/item/white_bundle_open_front.json | 6 +- .../minecraft/models/item/white_carpet.json | 3 - .../minecraft/models/item/white_concrete.json | 3 - .../models/item/white_concrete_powder.json | 3 - .../models/item/white_glazed_terracotta.json | 3 - .../models/item/white_stained_glass.json | 3 - .../models/item/white_terracotta.json | 3 - assets/minecraft/models/item/white_wool.json | 3 - .../models/item/witch_spawn_egg.json | 3 - .../models/item/wither_skeleton_skull.json | 3 - .../item/wither_skeleton_spawn_egg.json | 3 - .../models/item/wither_spawn_egg.json | 3 - assets/minecraft/models/item/wolf_armor.json | 3 +- .../models/item/wolf_armor_dyed.json | 7 + .../minecraft/models/item/wolf_spawn_egg.json | 3 - .../minecraft/models/item/yellow_banner.json | 3 - .../models/item/yellow_bundle_open_back.json | 6 +- .../models/item/yellow_bundle_open_front.json | 6 +- .../minecraft/models/item/yellow_carpet.json | 3 - .../models/item/yellow_concrete.json | 3 - .../models/item/yellow_concrete_powder.json | 3 - .../models/item/yellow_glazed_terracotta.json | 3 - .../models/item/yellow_stained_glass.json | 3 - .../models/item/yellow_terracotta.json | 3 - assets/minecraft/models/item/yellow_wool.json | 3 - .../models/item/zoglin_spawn_egg.json | 3 - assets/minecraft/models/item/zombie_head.json | 3 - .../models/item/zombie_horse_spawn_egg.json | 3 - .../models/item/zombie_spawn_egg.json | 3 - .../item/zombie_villager_spawn_egg.json | 3 - .../item/zombified_piglin_spawn_egg.json | 3 - .../minecraft/particles/pale_oak_leaves.json | 16 + assets/minecraft/textures/block/bricks.png | 4 +- .../textures/block/chiseled_nether_bricks.png | 4 +- .../textures/block/chiseled_resin_bricks.png | 3 + .../textures/block/closed_eyeblossom.png | 3 + .../textures/block/cracked_nether_bricks.png | 4 +- .../textures/block/creaking_heart_top.png | 4 +- .../block/exposed_copper_bulb_lit_powered.png | 4 +- .../textures/block/nether_bricks.png | 4 +- .../textures/block/open_eyeblossom.png | 3 + .../block/open_eyeblossom_emissive.png | 3 + .../textures/block/red_nether_bricks.png | 4 +- .../minecraft/textures/block/resin_block.png | 3 + .../minecraft/textures/block/resin_bricks.png | 3 + .../minecraft/textures/block/resin_clump.png | 3 + .../entity/signs/hanging/pale_oak.png | 4 +- .../textures/entity/signs/pale_oak.png | 4 +- .../textures/entity/slime/magmacube.png | 4 +- .../textures/gui/container/brewing_stand.png | 4 +- .../advancements/box_obtained.png.mcmeta | 10 + .../advancements/box_unobtained.png.mcmeta | 10 + .../container/bundle/slot_background.png | 4 +- .../bundle/slot_background.png.mcmeta | 10 + .../container/bundle/slot_highlight_back.png | 4 +- .../container/bundle/slot_highlight_front.png | 4 +- .../sprites/container/horse/armor_slot.png | 3 - .../container/horse/llama_armor_slot.png | 3 - .../sprites/container/horse/saddle_slot.png | 3 - .../sprites/container/loom/banner_slot.png | 3 - .../gui/sprites/container/loom/dye_slot.png | 3 - .../sprites/container/loom/pattern_slot.png | 3 - .../container/slot/amethyst_shard.png} | 0 .../sprites/container/slot/axe.png} | 0 .../gui/sprites/container/slot/banner.png | 3 + .../sprites/container/slot/banner_pattern.png | 3 + .../sprites/container/slot/boots.png} | 0 .../sprites/container/slot/brewing_fuel.png | 3 + .../sprites/container/slot/chestplate.png} | 0 .../sprites/container/slot/diamond.png} | 0 .../gui/sprites/container/slot/dye.png | 3 + .../sprites/container/slot/emerald.png} | 0 .../sprites/container/slot/helmet.png} | 0 .../sprites/container/slot/hoe.png} | 0 .../sprites/container/slot/horse_armor.png | 3 + .../sprites/container/slot/ingot.png} | 0 .../sprites/container/slot/lapis_lazuli.png} | 0 .../sprites/container/slot/leggings.png} | 0 .../sprites/container/slot/llama_armor.png | 3 + .../sprites/container/slot/pickaxe.png} | 0 .../gui/sprites/container/slot/potion.png | 3 + .../sprites/container/slot/quartz.png} | 0 .../sprites/container/slot/redstone_dust.png} | 0 .../gui/sprites/container/slot/saddle.png | 3 + .../sprites/container/slot/shield.png} | 0 .../sprites/container/slot/shovel.png} | 0 .../slot/smithing_template_armor_trim.png} | 0 .../smithing_template_netherite_upgrade.png} | 0 .../sprites/container/slot/sword.png} | 0 .../textures/gui/sprites/toast/system.png | 4 +- .../gui/sprites/toast/system.png.mcmeta | 15 + .../gui/sprites/toast/tutorial.png.mcmeta | 10 + .../textures/item/black_bundle_open_front.png | 2 +- .../textures/item/blue_bundle_open_front.png | 2 +- .../textures/item/brown_bundle_open_front.png | 4 +- .../textures/item/bundle_open_front.png | 2 +- .../textures/item/cyan_bundle_open_front.png | 2 +- .../{broken_elytra.png => elytra_broken.png} | 0 .../textures/item/gray_bundle_open_front.png | 2 +- .../textures/item/green_bundle_open_front.png | 2 +- .../item/light_blue_bundle_open_front.png | 2 +- .../item/light_gray_bundle_open_front.png | 2 +- .../textures/item/lime_bundle_open_front.png | 2 +- .../item/magenta_bundle_open_front.png | 4 +- .../item/orange_bundle_open_front.png | 2 +- .../textures/item/pale_oak_chest_boat.png | 4 +- .../textures/item/pale_oak_hanging_sign.png | 4 +- .../minecraft/textures/item/pale_oak_sign.png | 4 +- .../textures/item/pink_bundle_open_front.png | 2 +- .../item/purple_bundle_open_front.png | 2 +- .../textures/item/red_bundle_open_front.png | 4 +- .../minecraft/textures/item/resin_brick.png | 3 + .../minecraft/textures/item/resin_clump.png | 3 + .../textures/item/white_bundle_open_front.png | 2 +- .../item/yellow_bundle_open_front.png | 2 +- .../textures/particle/pale_oak_0.png | 3 + .../textures/particle/pale_oak_1.png | 3 + .../textures/particle/pale_oak_10.png | 3 + .../textures/particle/pale_oak_11.png | 3 + .../textures/particle/pale_oak_2.png | 3 + .../textures/particle/pale_oak_3.png | 3 + .../textures/particle/pale_oak_4.png | 3 + .../textures/particle/pale_oak_5.png | 3 + .../textures/particle/pale_oak_6.png | 3 + .../textures/particle/pale_oak_7.png | 3 + .../textures/particle/pale_oak_8.png | 3 + .../textures/particle/pale_oak_9.png | 3 + .../textures/trims/color_palettes/resin.png | 3 + com/mojang/blaze3d/platform/GlConst.java | 1 + com/mojang/blaze3d/platform/NativeImage.java | 89 +- com/mojang/blaze3d/platform/Window.java | 8 + com/mojang/blaze3d/systems/RenderSystem.java | 33 +- com/mojang/blaze3d/vertex/BufferBuilder.java | 10 +- .../vertex/SheetedDecalTextureGenerator.java | 3 +- com/mojang/blaze3d/vertex/VertexBuffer.java | 37 +- com/mojang/blaze3d/vertex/VertexConsumer.java | 24 +- com/mojang/math/MatrixUtil.java | 4 + com/mojang/realmsclient/RealmsMainScreen.java | 69 +- .../gui/screens/AddRealmPopupScreen.java | 2 +- .../gui/screens/RealmsBackupScreen.java | 12 +- .../gui/screens/RealmsBrokenWorldScreen.java | 3 +- .../screens/RealmsConfigureWorldScreen.java | 20 +- .../gui/screens/RealmsCreateRealmScreen.java | 4 +- .../RealmsDownloadLatestWorldScreen.java | 6 +- .../screens/RealmsNotificationsScreen.java | 3 +- .../screens/RealmsPendingInvitesScreen.java | 8 +- .../gui/screens/RealmsPlayerScreen.java | 8 +- .../gui/screens/RealmsResetWorldScreen.java | 17 +- .../RealmsSelectFileToUploadScreen.java | 16 +- .../RealmsSelectWorldTemplateScreen.java | 22 +- .../gui/screens/RealmsSettingsScreen.java | 9 +- .../gui/screens/RealmsSlotOptionsScreen.java | 26 +- .../screens/RealmsSubscriptionInfoScreen.java | 10 +- .../gui/screens/RealmsTermsScreen.java | 4 +- .../gui/screens/RealmsUploadScreen.java | 4 +- .../adventure/adventuring_time.json | 19 + .../advancement/adventure/kill_a_mob.json | 15 + .../advancement/adventure/kill_all_mobs.json | 17 + .../chiseled_resin_bricks.json | 32 + ...bricks_from_resin_bricks_stonecutting.json | 32 + .../building_blocks/pale_oak_planks.json | 0 .../building_blocks/pale_oak_slab.json | 0 .../building_blocks/pale_oak_stairs.json | 0 .../building_blocks/pale_oak_wood.json | 0 .../recipes/building_blocks/resin_block.json | 32 + .../building_blocks/resin_brick_slab.json | 32 + ...k_slab_from_resin_bricks_stonecutting.json | 32 + .../building_blocks/resin_brick_stairs.json | 32 + ...stairs_from_resin_bricks_stonecutting.json | 32 + .../recipes/building_blocks/resin_bricks.json | 32 + .../stripped_pale_oak_wood.json | 0 .../recipes/decorations/pale_moss_carpet.json | 0 .../recipes/decorations/pale_oak_fence.json | 0 .../decorations/pale_oak_hanging_sign.json | 0 .../recipes/decorations/pale_oak_sign.json | 0 .../recipes/decorations/resin_brick_wall.json | 32 + ...k_wall_from_resin_bricks_stonecutting.json | 32 + ...uspicious_stew_from_closed_eyeblossom.json | 32 + .../suspicious_stew_from_open_eyeblossom.json | 32 + .../recipes/misc/creaking_heart.json | 32 + .../misc/gray_dye_from_closed_eyeblossom.json | 32 + .../misc/orange_dye_from_open_eyeblossom.json | 32 + .../advancement/recipes/misc/resin_brick.json | 32 + .../advancement/recipes/misc/resin_clump.json | 32 + .../recipes/redstone/pale_oak_button.json | 0 .../recipes/redstone/pale_oak_door.json | 0 .../recipes/redstone/pale_oak_fence_gate.json | 0 .../redstone/pale_oak_pressure_plate.json | 0 .../recipes/redstone/pale_oak_trapdoor.json | 0 .../recipes/transportation/pale_oak_boat.json | 0 .../transportation/pale_oak_chest_boat.json | 0 .../minecart_improvements/pack.mcmeta | 2 +- .../redstone_experiments/pack.mcmeta | 2 +- .../datapacks/trade_rebalance/pack.mcmeta | 2 +- .../adventure/adventuring_time.json | 1050 ---- .../advancement/adventure/kill_a_mob.json | 577 -- .../advancement/adventure/kill_all_mobs.json | 653 -- .../loot_table/blocks/creaking_heart.json | 33 - .../loot_table/blocks/pale_hanging_moss.json | 44 - .../loot_table/blocks/pale_moss_block.json | 21 - .../loot_table/blocks/pale_moss_carpet.json | 30 - .../loot_table/blocks/pale_oak_button.json | 21 - .../loot_table/blocks/pale_oak_door.json | 30 - .../loot_table/blocks/pale_oak_fence.json | 21 - .../blocks/pale_oak_fence_gate.json | 21 - .../blocks/pale_oak_hanging_sign.json | 21 - .../loot_table/blocks/pale_oak_leaves.json | 136 - .../loot_table/blocks/pale_oak_log.json | 21 - .../loot_table/blocks/pale_oak_planks.json | 21 - .../blocks/pale_oak_pressure_plate.json | 21 - .../loot_table/blocks/pale_oak_sapling.json | 21 - .../loot_table/blocks/pale_oak_sign.json | 21 - .../loot_table/blocks/pale_oak_slab.json | 35 - .../loot_table/blocks/pale_oak_stairs.json | 21 - .../loot_table/blocks/pale_oak_trapdoor.json | 21 - .../loot_table/blocks/pale_oak_wood.json | 21 - .../blocks/potted_pale_oak_sapling.json | 36 - .../blocks/stripped_pale_oak_log.json | 21 - .../blocks/stripped_pale_oak_wood.json | 21 - .../tags/block/ceiling_hanging_signs.json | 5 - .../block/combination_step_sound_blocks.json | 5 - .../data/minecraft/tags/block/dirt.json | 5 - .../minecraft/tags/block/fence_gates.json | 5 - .../minecraft/tags/block/flower_pots.json | 5 - .../data/minecraft/tags/block/leaves.json | 5 - .../minecraft/tags/block/logs_that_burn.json | 5 - .../minecraft/tags/block/mineable/axe.json | 5 - .../minecraft/tags/block/mineable/hoe.json | 7 - .../tags/block/overworld_natural_logs.json | 5 - .../data/minecraft/tags/block/planks.json | 5 - .../data/minecraft/tags/block/saplings.json | 5 - .../minecraft/tags/block/standing_signs.json | 5 - .../minecraft/tags/block/sword_efficient.json | 5 - .../tags/block/wall_hanging_signs.json | 5 - .../data/minecraft/tags/block/wall_signs.json | 5 - .../minecraft/tags/block/wooden_buttons.json | 5 - .../minecraft/tags/block/wooden_doors.json | 5 - .../minecraft/tags/block/wooden_fences.json | 5 - .../tags/block/wooden_pressure_plates.json | 5 - .../minecraft/tags/block/wooden_slabs.json | 5 - .../minecraft/tags/block/wooden_stairs.json | 5 - .../tags/block/wooden_trapdoors.json | 5 - .../data/minecraft/tags/entity_type/boat.json | 5 - .../data/minecraft/tags/item/boats.json | 5 - .../data/minecraft/tags/item/chest_boats.json | 5 - .../data/minecraft/tags/item/dirt.json | 5 - .../data/minecraft/tags/item/fence_gates.json | 5 - .../minecraft/tags/item/hanging_signs.json | 5 - .../data/minecraft/tags/item/leaves.json | 5 - .../minecraft/tags/item/logs_that_burn.json | 5 - .../data/minecraft/tags/item/planks.json | 5 - .../data/minecraft/tags/item/saplings.json | 5 - .../data/minecraft/tags/item/signs.json | 5 - .../minecraft/tags/item/wooden_buttons.json | 5 - .../minecraft/tags/item/wooden_doors.json | 5 - .../minecraft/tags/item/wooden_fences.json | 5 - .../tags/item/wooden_pressure_plates.json | 5 - .../minecraft/tags/item/wooden_slabs.json | 5 - .../minecraft/tags/item/wooden_stairs.json | 5 - .../minecraft/tags/item/wooden_trapdoors.json | 5 - .../biome/has_structure/trial_chambers.json | 5 - .../tags/worldgen/biome/is_forest.json | 5 - .../tags/worldgen/biome/is_overworld.json | 5 - .../worldgen/biome/stronghold_biased_to.json | 5 - .../overworld.json | 3 - .../datapacks/winter_drop/pack.mcmeta | 13 - data/minecraft/enchantment/frost_walker.json | 27 +- data/minecraft/enchantment/power.json | 2 +- .../blocks/chiseled_resin_bricks.json | 21 + .../loot_table/blocks/closed_eyeblossom.json | 21 + .../loot_table/blocks/creaking_heart.json | 66 + .../loot_table/blocks/open_eyeblossom.json | 21 + .../loot_table/blocks/pale_hanging_moss.json | 40 + .../loot_table/blocks/pale_moss_block.json | 17 + .../loot_table/blocks/pale_moss_carpet.json | 26 + .../loot_table/blocks/pale_oak_button.json | 17 + .../loot_table/blocks/pale_oak_door.json | 26 + .../loot_table/blocks/pale_oak_fence.json | 17 + .../blocks/pale_oak_fence_gate.json | 17 + .../blocks/pale_oak_hanging_sign.json | 17 + .../loot_table/blocks/pale_oak_leaves.json | 132 + .../loot_table/blocks/pale_oak_log.json | 17 + .../loot_table/blocks/pale_oak_planks.json | 17 + .../blocks/pale_oak_pressure_plate.json | 17 + .../loot_table/blocks/pale_oak_sapling.json | 17 + .../loot_table/blocks/pale_oak_sign.json | 17 + .../loot_table/blocks/pale_oak_slab.json | 31 + .../loot_table/blocks/pale_oak_stairs.json | 17 + .../loot_table/blocks/pale_oak_trapdoor.json | 17 + .../loot_table/blocks/pale_oak_wood.json | 17 + .../blocks/potted_closed_eyeblossom.json | 36 + .../blocks/potted_open_eyeblossom.json | 36 + .../blocks/potted_pale_oak_sapling.json | 32 + .../loot_table/blocks/resin_block.json | 21 + .../loot_table/blocks/resin_brick_slab.json | 21 + .../loot_table/blocks/resin_brick_stairs.json | 21 + .../loot_table/blocks/resin_brick_wall.json | 21 + .../loot_table/blocks/resin_bricks.json | 21 + .../loot_table/blocks/resin_clump.json | 110 + .../blocks/stripped_pale_oak_log.json | 17 + .../blocks/stripped_pale_oak_wood.json | 17 + .../loot_table/chests/woodland_mansion.json | 16 + .../entities/creaking_transient.json | 4 - .../recipe/chiseled_resin_bricks.json | 15 + ...bricks_from_resin_bricks_stonecutting.json | 8 + data/minecraft/recipe/creaking_heart.json | 17 + .../gray_dye_from_closed_eyeblossom.json | 12 + .../orange_dye_from_open_eyeblossom.json | 12 + .../recipe/pale_moss_carpet.json | 0 .../minecraft => }/recipe/pale_oak_boat.json | 0 .../recipe/pale_oak_button.json | 0 .../recipe/pale_oak_chest_boat.json | 0 .../minecraft => }/recipe/pale_oak_door.json | 0 .../minecraft => }/recipe/pale_oak_fence.json | 0 .../recipe/pale_oak_fence_gate.json | 0 .../recipe/pale_oak_hanging_sign.json | 0 .../recipe/pale_oak_planks.json | 0 .../recipe/pale_oak_pressure_plate.json | 0 .../minecraft => }/recipe/pale_oak_sign.json | 0 .../minecraft => }/recipe/pale_oak_slab.json | 0 .../recipe/pale_oak_stairs.json | 0 .../recipe/pale_oak_trapdoor.json | 0 .../minecraft => }/recipe/pale_oak_wood.json | 0 data/minecraft/recipe/resin_block.json | 16 + data/minecraft/recipe/resin_brick.json | 10 + data/minecraft/recipe/resin_brick_slab.json | 14 + ...k_slab_from_resin_bricks_stonecutting.json | 8 + data/minecraft/recipe/resin_brick_stairs.json | 16 + ...stairs_from_resin_bricks_stonecutting.json | 8 + data/minecraft/recipe/resin_brick_wall.json | 15 + ...k_wall_from_resin_bricks_stonecutting.json | 8 + data/minecraft/recipe/resin_bricks.json | 15 + data/minecraft/recipe/resin_clump.json | 11 + .../recipe/stripped_pale_oak_wood.json | 0 .../recipe/suspicious_stew_from_allium.json | 2 +- .../suspicious_stew_from_azure_bluet.json | 1 + ...uspicious_stew_from_closed_eyeblossom.json | 23 + .../suspicious_stew_from_cornflower.json | 2 +- ...spicious_stew_from_lily_of_the_valley.json | 2 +- .../suspicious_stew_from_open_eyeblossom.json | 23 + .../suspicious_stew_from_orange_tulip.json | 2 +- .../suspicious_stew_from_oxeye_daisy.json | 1 + .../suspicious_stew_from_pink_tulip.json | 2 +- .../suspicious_stew_from_red_tulip.json | 2 +- .../suspicious_stew_from_white_tulip.json | 2 +- .../suspicious_stew_from_wither_rose.json | 1 + .../city/entrance/entrance_connector.nbt | 4 +- .../city/entrance/entrance_path_1.nbt | 4 +- .../city/entrance/entrance_path_2.nbt | 4 +- .../city/entrance/entrance_path_3.nbt | 4 +- .../city/entrance/entrance_path_4.nbt | 4 +- .../city/entrance/entrance_path_5.nbt | 4 +- .../city_center/city_center_1.nbt | 4 +- .../city_center/city_center_2.nbt | 4 +- .../city_center/city_center_3.nbt | 4 +- .../city_center/walls/bottom_1.nbt | 4 +- .../city_center/walls/bottom_2.nbt | 4 +- .../city_center/walls/bottom_left_corner.nbt | 4 +- .../city_center/walls/bottom_right_corner.nbt | 4 +- .../walls/bottom_right_corner_1.nbt | 4 +- .../walls/bottom_right_corner_2.nbt | 4 +- .../ancient_city/city_center/walls/left.nbt | 4 +- .../ancient_city/city_center/walls/right.nbt | 4 +- .../ancient_city/city_center/walls/top.nbt | 4 +- .../city_center/walls/top_left_corner.nbt | 4 +- .../city_center/walls/top_right_corner.nbt | 4 +- .../ancient_city/structures/barracks.nbt | 4 +- .../ancient_city/structures/camp_1.nbt | 4 +- .../ancient_city/structures/camp_2.nbt | 4 +- .../ancient_city/structures/camp_3.nbt | 4 +- .../ancient_city/structures/chamber_1.nbt | 4 +- .../ancient_city/structures/chamber_2.nbt | 4 +- .../ancient_city/structures/chamber_3.nbt | 4 +- .../ancient_city/structures/ice_box_1.nbt | 4 +- .../structures/large_pillar_1.nbt | 4 +- .../ancient_city/structures/large_ruin_1.nbt | 4 +- .../structures/medium_pillar_1.nbt | 4 +- .../ancient_city/structures/medium_ruin_1.nbt | 4 +- .../ancient_city/structures/medium_ruin_2.nbt | 4 +- .../ancient_city/structures/sauna_1.nbt | 4 +- .../ancient_city/structures/small_ruin_1.nbt | 4 +- .../ancient_city/structures/small_ruin_2.nbt | 4 +- .../ancient_city/structures/small_statue.nbt | 4 +- .../ancient_city/structures/tall_ruin_1.nbt | 4 +- .../ancient_city/structures/tall_ruin_2.nbt | 4 +- .../ancient_city/structures/tall_ruin_3.nbt | 4 +- .../ancient_city/structures/tall_ruin_4.nbt | 4 +- .../walls/intact_corner_wall_1.nbt | 4 +- .../walls/intact_horizontal_wall_1.nbt | 4 +- .../walls/intact_horizontal_wall_2.nbt | 2 +- .../walls/intact_horizontal_wall_bridge.nbt | 4 +- .../intact_horizontal_wall_passage_1.nbt | 4 +- .../walls/intact_horizontal_wall_stairs_1.nbt | 4 +- .../walls/intact_horizontal_wall_stairs_2.nbt | 4 +- .../walls/intact_horizontal_wall_stairs_3.nbt | 4 +- .../walls/intact_horizontal_wall_stairs_4.nbt | 4 +- .../walls/intact_intersection_wall_1.nbt | 4 +- .../walls/intact_lshape_wall_1.nbt | 4 +- .../walls/ruined_corner_wall_1.nbt | 4 +- .../walls/ruined_corner_wall_2.nbt | 4 +- .../walls/ruined_horizontal_wall_stairs_1.nbt | 4 +- .../walls/ruined_horizontal_wall_stairs_2.nbt | 4 +- .../walls/ruined_horizontal_wall_stairs_3.nbt | 4 +- .../walls/ruined_horizontal_wall_stairs_4.nbt | 4 +- .../structure/bastion/blocks/air.nbt | 4 +- .../structure/bastion/blocks/gold.nbt | 4 +- .../bastion/bridge/bridge_pieces/bridge.nbt | 4 +- .../bridge/connectors/back_bridge_bottom.nbt | 4 +- .../bridge/connectors/back_bridge_top.nbt | 4 +- .../structure/bastion/bridge/legs/leg_0.nbt | 4 +- .../structure/bastion/bridge/legs/leg_1.nbt | 4 +- .../bastion/bridge/rampart_plates/plate_0.nbt | 4 +- .../bastion/bridge/ramparts/rampart_0.nbt | 4 +- .../bastion/bridge/ramparts/rampart_1.nbt | 4 +- .../bridge/starting_pieces/entrance.nbt | 4 +- .../bridge/starting_pieces/entrance_base.nbt | 4 +- .../bridge/starting_pieces/entrance_face.nbt | 4 +- .../bastion/bridge/walls/wall_base_0.nbt | 4 +- .../bastion/bridge/walls/wall_base_1.nbt | 4 +- .../bastion/hoglin_stable/air_base.nbt | 4 +- .../connectors/end_post_connector.nbt | 4 +- .../hoglin_stable/large_stables/inner_0.nbt | 4 +- .../hoglin_stable/large_stables/inner_1.nbt | 2 +- .../hoglin_stable/large_stables/inner_2.nbt | 4 +- .../hoglin_stable/large_stables/inner_3.nbt | 4 +- .../hoglin_stable/large_stables/inner_4.nbt | 4 +- .../hoglin_stable/large_stables/outer_0.nbt | 4 +- .../hoglin_stable/large_stables/outer_1.nbt | 4 +- .../hoglin_stable/large_stables/outer_2.nbt | 2 +- .../hoglin_stable/large_stables/outer_3.nbt | 4 +- .../hoglin_stable/large_stables/outer_4.nbt | 4 +- .../bastion/hoglin_stable/posts/end_post.nbt | 4 +- .../hoglin_stable/posts/stair_post.nbt | 4 +- .../rampart_plates/rampart_plate_1.nbt | 4 +- .../hoglin_stable/ramparts/ramparts_1.nbt | 2 +- .../hoglin_stable/ramparts/ramparts_2.nbt | 4 +- .../hoglin_stable/ramparts/ramparts_3.nbt | 2 +- .../hoglin_stable/small_stables/inner_0.nbt | 4 +- .../hoglin_stable/small_stables/inner_1.nbt | 4 +- .../hoglin_stable/small_stables/inner_2.nbt | 4 +- .../hoglin_stable/small_stables/inner_3.nbt | 4 +- .../hoglin_stable/small_stables/outer_0.nbt | 4 +- .../hoglin_stable/small_stables/outer_1.nbt | 4 +- .../hoglin_stable/small_stables/outer_2.nbt | 4 +- .../hoglin_stable/small_stables/outer_3.nbt | 4 +- .../hoglin_stable/stairs/stairs_1_0.nbt | 4 +- .../hoglin_stable/stairs/stairs_1_1.nbt | 4 +- .../hoglin_stable/stairs/stairs_1_2.nbt | 4 +- .../hoglin_stable/stairs/stairs_1_3.nbt | 4 +- .../hoglin_stable/stairs/stairs_1_4.nbt | 4 +- .../hoglin_stable/stairs/stairs_2_0.nbt | 4 +- .../hoglin_stable/stairs/stairs_2_1.nbt | 4 +- .../hoglin_stable/stairs/stairs_2_2.nbt | 4 +- .../hoglin_stable/stairs/stairs_2_3.nbt | 4 +- .../hoglin_stable/stairs/stairs_2_4.nbt | 2 +- .../hoglin_stable/stairs/stairs_3_0.nbt | 4 +- .../hoglin_stable/stairs/stairs_3_1.nbt | 4 +- .../hoglin_stable/stairs/stairs_3_2.nbt | 4 +- .../hoglin_stable/stairs/stairs_3_3.nbt | 4 +- .../hoglin_stable/stairs/stairs_3_4.nbt | 4 +- .../starting_pieces/stairs_0_mirrored.nbt | 4 +- .../starting_pieces/stairs_1_mirrored.nbt | 2 +- .../starting_pieces/stairs_2_mirrored.nbt | 4 +- .../starting_pieces/stairs_3_mirrored.nbt | 4 +- .../starting_pieces/stairs_4_mirrored.nbt | 4 +- .../starting_pieces/starting_stairs_0.nbt | 4 +- .../starting_pieces/starting_stairs_1.nbt | 4 +- .../starting_pieces/starting_stairs_2.nbt | 4 +- .../starting_pieces/starting_stairs_3.nbt | 4 +- .../starting_pieces/starting_stairs_4.nbt | 4 +- .../hoglin_stable/walls/side_wall_0.nbt | 4 +- .../hoglin_stable/walls/side_wall_1.nbt | 4 +- .../bastion/hoglin_stable/walls/wall_base.nbt | 2 +- .../bastion/mobs/crossbow_piglin.nbt | 2 +- .../structure/bastion/mobs/empty.nbt | 4 +- .../structure/bastion/mobs/hoglin.nbt | 4 +- .../structure/bastion/mobs/melee_piglin.nbt | 2 +- .../bastion/mobs/melee_piglin_always.nbt | 2 +- .../structure/bastion/mobs/sword_piglin.nbt | 2 +- .../treasure/bases/centers/center_0.nbt | 4 +- .../treasure/bases/centers/center_1.nbt | 4 +- .../treasure/bases/centers/center_2.nbt | 4 +- .../treasure/bases/centers/center_3.nbt | 4 +- .../bastion/treasure/bases/lava_basin.nbt | 4 +- .../bastion/treasure/big_air_full.nbt | 4 +- .../bastion/treasure/brains/center_brain.nbt | 4 +- .../connectors/center_to_wall_middle.nbt | 4 +- .../connectors/center_to_wall_top.nbt | 4 +- .../center_to_wall_top_entrance.nbt | 4 +- .../treasure/corners/bottom/corner_0.nbt | 4 +- .../treasure/corners/bottom/corner_1.nbt | 2 +- .../bastion/treasure/corners/edges/bottom.nbt | 4 +- .../bastion/treasure/corners/edges/middle.nbt | 4 +- .../bastion/treasure/corners/edges/top.nbt | 4 +- .../treasure/corners/middle/corner_0.nbt | 4 +- .../treasure/corners/middle/corner_1.nbt | 4 +- .../bastion/treasure/corners/top/corner_0.nbt | 4 +- .../bastion/treasure/corners/top/corner_1.nbt | 4 +- .../bastion/treasure/entrances/entrance_0.nbt | 4 +- .../bastion/treasure/extensions/empty.nbt | 4 +- .../bastion/treasure/extensions/fire_room.nbt | 4 +- .../bastion/treasure/extensions/house_0.nbt | 4 +- .../bastion/treasure/extensions/house_1.nbt | 4 +- .../treasure/extensions/large_bridge_0.nbt | 4 +- .../treasure/extensions/large_bridge_1.nbt | 4 +- .../treasure/extensions/large_bridge_2.nbt | 4 +- .../treasure/extensions/large_bridge_3.nbt | 4 +- .../treasure/extensions/roofed_bridge.nbt | 4 +- .../treasure/extensions/small_bridge_0.nbt | 4 +- .../treasure/extensions/small_bridge_1.nbt | 4 +- .../treasure/extensions/small_bridge_2.nbt | 4 +- .../treasure/extensions/small_bridge_3.nbt | 4 +- .../treasure/ramparts/bottom_wall_0.nbt | 2 +- .../treasure/ramparts/lava_basin_main.nbt | 4 +- .../treasure/ramparts/lava_basin_side.nbt | 4 +- .../treasure/ramparts/mid_wall_main.nbt | 4 +- .../treasure/ramparts/mid_wall_side.nbt | 4 +- .../bastion/treasure/ramparts/top_wall.nbt | 4 +- .../bastion/treasure/roofs/center_roof.nbt | 4 +- .../bastion/treasure/roofs/corner_roof.nbt | 4 +- .../bastion/treasure/roofs/wall_roof.nbt | 2 +- .../bastion/treasure/stairs/lower_stairs.nbt | 4 +- .../bastion/treasure/walls/bottom/wall_0.nbt | 4 +- .../bastion/treasure/walls/bottom/wall_1.nbt | 4 +- .../bastion/treasure/walls/bottom/wall_2.nbt | 4 +- .../bastion/treasure/walls/bottom/wall_3.nbt | 4 +- .../bastion/treasure/walls/entrance_wall.nbt | 4 +- .../bastion/treasure/walls/lava_wall.nbt | 2 +- .../bastion/treasure/walls/mid/wall_0.nbt | 4 +- .../bastion/treasure/walls/mid/wall_1.nbt | 4 +- .../bastion/treasure/walls/mid/wall_2.nbt | 4 +- .../treasure/walls/outer/bottom_corner.nbt | 4 +- .../walls/outer/medium_outer_wall.nbt | 2 +- .../treasure/walls/outer/mid_corner.nbt | 4 +- .../treasure/walls/outer/outer_wall.nbt | 4 +- .../treasure/walls/outer/tall_outer_wall.nbt | 4 +- .../treasure/walls/outer/top_corner.nbt | 4 +- .../treasure/walls/top/main_entrance.nbt | 4 +- .../bastion/treasure/walls/top/wall_0.nbt | 4 +- .../bastion/treasure/walls/top/wall_1.nbt | 4 +- .../structure/bastion/units/air_base.nbt | 4 +- .../bastion/units/center_pieces/center_0.nbt | 4 +- .../bastion/units/center_pieces/center_1.nbt | 4 +- .../bastion/units/center_pieces/center_2.nbt | 4 +- .../structure/bastion/units/edges/edge_0.nbt | 4 +- .../bastion/units/fillers/stage_0.nbt | 4 +- .../bastion/units/pathways/pathway_0.nbt | 4 +- .../bastion/units/pathways/pathway_wall_0.nbt | 4 +- .../bastion/units/rampart_plates/plate_0.nbt | 4 +- .../bastion/units/ramparts/ramparts_0.nbt | 2 +- .../bastion/units/ramparts/ramparts_1.nbt | 4 +- .../bastion/units/ramparts/ramparts_2.nbt | 4 +- .../bastion/units/stages/rot/stage_1_0.nbt | 4 +- .../bastion/units/stages/stage_0_0.nbt | 4 +- .../bastion/units/stages/stage_0_1.nbt | 4 +- .../bastion/units/stages/stage_0_2.nbt | 4 +- .../bastion/units/stages/stage_0_3.nbt | 4 +- .../bastion/units/stages/stage_1_0.nbt | 4 +- .../bastion/units/stages/stage_1_1.nbt | 4 +- .../bastion/units/stages/stage_1_2.nbt | 4 +- .../bastion/units/stages/stage_1_3.nbt | 4 +- .../bastion/units/stages/stage_2_0.nbt | 4 +- .../bastion/units/stages/stage_2_1.nbt | 4 +- .../bastion/units/stages/stage_3_0.nbt | 4 +- .../bastion/units/stages/stage_3_1.nbt | 4 +- .../bastion/units/stages/stage_3_2.nbt | 4 +- .../bastion/units/stages/stage_3_3.nbt | 4 +- .../bastion/units/wall_units/edge_0_large.nbt | 2 +- .../bastion/units/wall_units/unit_0.nbt | 4 +- .../bastion/units/walls/connected_wall.nbt | 2 +- .../bastion/units/walls/wall_base.nbt | 4 +- .../structure/end_city/base_floor.nbt | 2 +- .../structure/end_city/base_roof.nbt | 4 +- .../structure/end_city/bridge_end.nbt | 4 +- .../end_city/bridge_gentle_stairs.nbt | 4 +- .../structure/end_city/bridge_piece.nbt | 4 +- .../end_city/bridge_steep_stairs.nbt | 4 +- .../structure/end_city/fat_tower_base.nbt | 4 +- .../structure/end_city/fat_tower_middle.nbt | 4 +- .../structure/end_city/fat_tower_top.nbt | 4 +- .../structure/end_city/second_floor_1.nbt | 4 +- .../structure/end_city/second_floor_2.nbt | 4 +- .../structure/end_city/second_roof.nbt | 2 +- data/minecraft/structure/end_city/ship.nbt | 4 +- .../structure/end_city/third_floor_1.nbt | 4 +- .../structure/end_city/third_floor_2.nbt | 4 +- .../structure/end_city/third_roof.nbt | 4 +- .../structure/end_city/tower_base.nbt | 4 +- .../structure/end_city/tower_floor.nbt | 4 +- .../structure/end_city/tower_piece.nbt | 4 +- .../structure/end_city/tower_top.nbt | 4 +- data/minecraft/structure/fossil/skull_1.nbt | 4 +- .../structure/fossil/skull_1_coal.nbt | 4 +- data/minecraft/structure/fossil/skull_2.nbt | 4 +- .../structure/fossil/skull_2_coal.nbt | 4 +- data/minecraft/structure/fossil/skull_3.nbt | 4 +- .../structure/fossil/skull_3_coal.nbt | 4 +- data/minecraft/structure/fossil/skull_4.nbt | 4 +- .../structure/fossil/skull_4_coal.nbt | 4 +- data/minecraft/structure/fossil/spine_1.nbt | 4 +- .../structure/fossil/spine_1_coal.nbt | 4 +- data/minecraft/structure/fossil/spine_2.nbt | 4 +- .../structure/fossil/spine_2_coal.nbt | 4 +- data/minecraft/structure/fossil/spine_3.nbt | 4 +- .../structure/fossil/spine_3_coal.nbt | 4 +- data/minecraft/structure/fossil/spine_4.nbt | 4 +- .../structure/fossil/spine_4_coal.nbt | 4 +- data/minecraft/structure/igloo/bottom.nbt | 4 +- data/minecraft/structure/igloo/middle.nbt | 4 +- data/minecraft/structure/igloo/top.nbt | 4 +- .../structure/nether_fossils/fossil_1.nbt | 4 +- .../structure/nether_fossils/fossil_10.nbt | 4 +- .../structure/nether_fossils/fossil_11.nbt | 4 +- .../structure/nether_fossils/fossil_12.nbt | 4 +- .../structure/nether_fossils/fossil_13.nbt | 4 +- .../structure/nether_fossils/fossil_14.nbt | 2 +- .../structure/nether_fossils/fossil_2.nbt | 4 +- .../structure/nether_fossils/fossil_3.nbt | 2 +- .../structure/nether_fossils/fossil_4.nbt | 4 +- .../structure/nether_fossils/fossil_5.nbt | 4 +- .../structure/nether_fossils/fossil_6.nbt | 4 +- .../structure/nether_fossils/fossil_7.nbt | 4 +- .../structure/nether_fossils/fossil_8.nbt | 4 +- .../structure/nether_fossils/fossil_9.nbt | 4 +- .../structure/pillager_outpost/base_plate.nbt | 4 +- .../pillager_outpost/feature_cage1.nbt | 4 +- .../pillager_outpost/feature_cage2.nbt | 4 +- .../feature_cage_with_allays.nbt | 2 +- .../pillager_outpost/feature_logs.nbt | 4 +- .../pillager_outpost/feature_plate.nbt | 4 +- .../pillager_outpost/feature_targets.nbt | 4 +- .../pillager_outpost/feature_tent1.nbt | 4 +- .../pillager_outpost/feature_tent2.nbt | 4 +- .../structure/pillager_outpost/watchtower.nbt | 4 +- .../pillager_outpost/watchtower_overgrown.nbt | 4 +- .../ruined_portal/giant_portal_1.nbt | 4 +- .../ruined_portal/giant_portal_2.nbt | 4 +- .../ruined_portal/giant_portal_3.nbt | 4 +- .../structure/ruined_portal/portal_1.nbt | 2 +- .../structure/ruined_portal/portal_10.nbt | 4 +- .../structure/ruined_portal/portal_2.nbt | 4 +- .../structure/ruined_portal/portal_3.nbt | 2 +- .../structure/ruined_portal/portal_4.nbt | 2 +- .../structure/ruined_portal/portal_5.nbt | 4 +- .../structure/ruined_portal/portal_6.nbt | 4 +- .../structure/ruined_portal/portal_7.nbt | 4 +- .../structure/ruined_portal/portal_8.nbt | 4 +- .../structure/ruined_portal/portal_9.nbt | 4 +- .../shipwreck/rightsideup_backhalf.nbt | 2 +- .../rightsideup_backhalf_degraded.nbt | 4 +- .../shipwreck/rightsideup_fronthalf.nbt | 4 +- .../rightsideup_fronthalf_degraded.nbt | 4 +- .../structure/shipwreck/rightsideup_full.nbt | 4 +- .../shipwreck/rightsideup_full_degraded.nbt | 4 +- .../structure/shipwreck/sideways_backhalf.nbt | 4 +- .../shipwreck/sideways_backhalf_degraded.nbt | 4 +- .../shipwreck/sideways_fronthalf.nbt | 4 +- .../shipwreck/sideways_fronthalf_degraded.nbt | 4 +- .../structure/shipwreck/sideways_full.nbt | 4 +- .../shipwreck/sideways_full_degraded.nbt | 4 +- .../shipwreck/upsidedown_backhalf.nbt | 4 +- .../upsidedown_backhalf_degraded.nbt | 2 +- .../shipwreck/upsidedown_fronthalf.nbt | 4 +- .../upsidedown_fronthalf_degraded.nbt | 4 +- .../structure/shipwreck/upsidedown_full.nbt | 4 +- .../shipwreck/upsidedown_full_degraded.nbt | 4 +- .../structure/shipwreck/with_mast.nbt | 4 +- .../shipwreck/with_mast_degraded.nbt | 4 +- .../trail_ruins/buildings/group_full_1.nbt | 4 +- .../trail_ruins/buildings/group_full_2.nbt | 4 +- .../trail_ruins/buildings/group_full_3.nbt | 4 +- .../trail_ruins/buildings/group_full_4.nbt | 4 +- .../trail_ruins/buildings/group_full_5.nbt | 4 +- .../trail_ruins/buildings/group_hall_1.nbt | 4 +- .../trail_ruins/buildings/group_hall_2.nbt | 4 +- .../trail_ruins/buildings/group_hall_3.nbt | 4 +- .../trail_ruins/buildings/group_hall_4.nbt | 4 +- .../trail_ruins/buildings/group_hall_5.nbt | 4 +- .../trail_ruins/buildings/group_lower_1.nbt | 4 +- .../trail_ruins/buildings/group_lower_2.nbt | 4 +- .../trail_ruins/buildings/group_lower_3.nbt | 4 +- .../trail_ruins/buildings/group_lower_4.nbt | 4 +- .../trail_ruins/buildings/group_lower_5.nbt | 4 +- .../trail_ruins/buildings/group_room_1.nbt | 4 +- .../trail_ruins/buildings/group_room_2.nbt | 4 +- .../trail_ruins/buildings/group_room_3.nbt | 4 +- .../trail_ruins/buildings/group_room_4.nbt | 4 +- .../trail_ruins/buildings/group_room_5.nbt | 4 +- .../trail_ruins/buildings/group_upper_1.nbt | 4 +- .../trail_ruins/buildings/group_upper_2.nbt | 4 +- .../trail_ruins/buildings/group_upper_3.nbt | 4 +- .../trail_ruins/buildings/group_upper_4.nbt | 4 +- .../trail_ruins/buildings/group_upper_5.nbt | 4 +- .../trail_ruins/buildings/large_room_1.nbt | 4 +- .../trail_ruins/buildings/large_room_2.nbt | 4 +- .../trail_ruins/buildings/large_room_3.nbt | 4 +- .../trail_ruins/buildings/large_room_4.nbt | 4 +- .../trail_ruins/buildings/large_room_5.nbt | 4 +- .../trail_ruins/buildings/one_room_1.nbt | 4 +- .../trail_ruins/buildings/one_room_2.nbt | 4 +- .../trail_ruins/buildings/one_room_3.nbt | 4 +- .../trail_ruins/buildings/one_room_4.nbt | 4 +- .../trail_ruins/buildings/one_room_5.nbt | 4 +- .../structure/trail_ruins/decor/decor_1.nbt | 4 +- .../structure/trail_ruins/decor/decor_2.nbt | 4 +- .../structure/trail_ruins/decor/decor_3.nbt | 4 +- .../structure/trail_ruins/decor/decor_4.nbt | 4 +- .../structure/trail_ruins/decor/decor_5.nbt | 4 +- .../structure/trail_ruins/decor/decor_6.nbt | 4 +- .../structure/trail_ruins/decor/decor_7.nbt | 4 +- .../trail_ruins/roads/long_road_end.nbt | 4 +- .../trail_ruins/roads/road_end_1.nbt | 4 +- .../trail_ruins/roads/road_section_1.nbt | 4 +- .../trail_ruins/roads/road_section_2.nbt | 4 +- .../trail_ruins/roads/road_section_3.nbt | 4 +- .../trail_ruins/roads/road_section_4.nbt | 4 +- .../trail_ruins/roads/road_spacer_1.nbt | 4 +- .../structure/trail_ruins/tower/hall_1.nbt | 4 +- .../structure/trail_ruins/tower/hall_2.nbt | 4 +- .../structure/trail_ruins/tower/hall_3.nbt | 4 +- .../structure/trail_ruins/tower/hall_4.nbt | 4 +- .../structure/trail_ruins/tower/hall_5.nbt | 4 +- .../trail_ruins/tower/large_hall_1.nbt | 4 +- .../trail_ruins/tower/large_hall_2.nbt | 4 +- .../trail_ruins/tower/large_hall_3.nbt | 4 +- .../trail_ruins/tower/large_hall_4.nbt | 4 +- .../trail_ruins/tower/large_hall_5.nbt | 4 +- .../trail_ruins/tower/one_room_1.nbt | 4 +- .../trail_ruins/tower/one_room_2.nbt | 4 +- .../trail_ruins/tower/one_room_3.nbt | 4 +- .../trail_ruins/tower/one_room_4.nbt | 4 +- .../trail_ruins/tower/one_room_5.nbt | 4 +- .../trail_ruins/tower/platform_1.nbt | 4 +- .../trail_ruins/tower/platform_2.nbt | 4 +- .../trail_ruins/tower/platform_3.nbt | 4 +- .../trail_ruins/tower/platform_4.nbt | 2 +- .../trail_ruins/tower/platform_5.nbt | 4 +- .../structure/trail_ruins/tower/stable_1.nbt | 4 +- .../structure/trail_ruins/tower/stable_2.nbt | 4 +- .../structure/trail_ruins/tower/stable_3.nbt | 4 +- .../structure/trail_ruins/tower/stable_4.nbt | 4 +- .../structure/trail_ruins/tower/stable_5.nbt | 2 +- .../structure/trail_ruins/tower/tower_1.nbt | 4 +- .../structure/trail_ruins/tower/tower_2.nbt | 4 +- .../structure/trail_ruins/tower/tower_3.nbt | 4 +- .../structure/trail_ruins/tower/tower_4.nbt | 4 +- .../structure/trail_ruins/tower/tower_5.nbt | 4 +- .../trail_ruins/tower/tower_top_1.nbt | 4 +- .../trail_ruins/tower/tower_top_2.nbt | 4 +- .../trail_ruins/tower/tower_top_3.nbt | 4 +- .../trail_ruins/tower/tower_top_4.nbt | 4 +- .../trail_ruins/tower/tower_top_5.nbt | 4 +- .../chamber/addon/c1_breeze.nbt | 4 +- .../chamber/addon/full_corner_column.nbt | 4 +- .../chamber/addon/full_stacked_walkway.nbt | 4 +- .../chamber/addon/full_stacked_walkway_2.nbt | 4 +- .../chamber/addon/grate_bridge.nbt | 4 +- .../chamber/addon/hanging_platform.nbt | 4 +- .../chamber/addon/lower_staircase_down.nbt | 4 +- .../chamber/addon/short_grate_platform.nbt | 4 +- .../chamber/addon/short_platform.nbt | 4 +- .../chamber/addon/walkway_with_bridge_1.nbt | 2 +- .../trial_chambers/chamber/assembly.nbt | 4 +- .../chamber/assembly/cover_1.nbt | 4 +- .../chamber/assembly/cover_2.nbt | 4 +- .../chamber/assembly/cover_3.nbt | 4 +- .../chamber/assembly/cover_4.nbt | 4 +- .../chamber/assembly/cover_5.nbt | 4 +- .../chamber/assembly/cover_6.nbt | 4 +- .../chamber/assembly/cover_7.nbt | 4 +- .../chamber/assembly/full_column.nbt | 4 +- .../chamber/assembly/hanging_1.nbt | 4 +- .../chamber/assembly/hanging_2.nbt | 4 +- .../chamber/assembly/hanging_3.nbt | 4 +- .../chamber/assembly/hanging_4.nbt | 4 +- .../chamber/assembly/hanging_5.nbt | 4 +- .../chamber/assembly/left_staircase_1.nbt | 4 +- .../chamber/assembly/left_staircase_2.nbt | 4 +- .../chamber/assembly/left_staircase_3.nbt | 4 +- .../chamber/assembly/platform_1.nbt | 4 +- .../chamber/assembly/right_staircase_1.nbt | 4 +- .../chamber/assembly/right_staircase_2.nbt | 4 +- .../chamber/assembly/right_staircase_3.nbt | 4 +- .../chamber/assembly/spawner_1.nbt | 4 +- .../trial_chambers/chamber/chamber_1.nbt | 4 +- .../trial_chambers/chamber/chamber_2.nbt | 4 +- .../trial_chambers/chamber/chamber_4.nbt | 4 +- .../trial_chambers/chamber/chamber_8.nbt | 2 +- .../trial_chambers/chamber/entrance_cap.nbt | 4 +- .../trial_chambers/chamber/eruption.nbt | 4 +- .../chamber/eruption/breeze_slice_1.nbt | 4 +- .../chamber/eruption/center_1.nbt | 4 +- .../chamber/eruption/quadrant_1.nbt | 4 +- .../chamber/eruption/quadrant_2.nbt | 4 +- .../chamber/eruption/quadrant_3.nbt | 4 +- .../chamber/eruption/quadrant_4.nbt | 4 +- .../chamber/eruption/quadrant_5.nbt | 4 +- .../chamber/eruption/slice_1.nbt | 4 +- .../chamber/eruption/slice_2.nbt | 4 +- .../chamber/eruption/slice_3.nbt | 4 +- .../trial_chambers/chamber/pedestal.nbt | 4 +- .../chamber/pedestal/center_1.nbt | 4 +- .../chamber/pedestal/ominous_slice_1.nbt | 4 +- .../chamber/pedestal/quadrant_1.nbt | 4 +- .../chamber/pedestal/quadrant_2.nbt | 4 +- .../chamber/pedestal/quadrant_3.nbt | 4 +- .../chamber/pedestal/slice_1.nbt | 4 +- .../chamber/pedestal/slice_2.nbt | 4 +- .../chamber/pedestal/slice_3.nbt | 2 +- .../chamber/pedestal/slice_4.nbt | 4 +- .../chamber/pedestal/slice_5.nbt | 2 +- .../trial_chambers/chamber/slanted.nbt | 4 +- .../trial_chambers/chamber/slanted/center.nbt | 4 +- .../chamber/slanted/hallway_1.nbt | 4 +- .../chamber/slanted/hallway_2.nbt | 4 +- .../chamber/slanted/hallway_3.nbt | 4 +- .../chamber/slanted/ominous_upper_arm_1.nbt | 4 +- .../chamber/slanted/quadrant_1.nbt | 2 +- .../chamber/slanted/quadrant_2.nbt | 2 +- .../chamber/slanted/quadrant_3.nbt | 2 +- .../chamber/slanted/quadrant_4.nbt | 4 +- .../trial_chambers/chamber/slanted/ramp_1.nbt | 4 +- .../trial_chambers/chamber/slanted/ramp_2.nbt | 4 +- .../trial_chambers/chamber/slanted/ramp_3.nbt | 4 +- .../trial_chambers/chamber/slanted/ramp_4.nbt | 4 +- .../chests/connectors/supply.nbt | 4 +- .../trial_chambers/chests/supply.nbt | 4 +- .../corridor/addon/arrow_dispenser.nbt | 4 +- .../corridor/addon/bridge_lower.nbt | 4 +- .../corridor/addon/chandelier_upper.nbt | 4 +- .../corridor/addon/decoration_upper.nbt | 4 +- .../corridor/addon/display_1.nbt | 4 +- .../corridor/addon/display_2.nbt | 4 +- .../corridor/addon/display_3.nbt | 4 +- .../corridor/addon/head_upper.nbt | 4 +- .../corridor/addon/ladder_to_middle.nbt | 4 +- .../corridor/addon/open_walkway.nbt | 2 +- .../corridor/addon/open_walkway_upper.nbt | 4 +- .../corridor/addon/reward_upper.nbt | 4 +- .../corridor/addon/staircase.nbt | 4 +- .../trial_chambers/corridor/addon/wall.nbt | 4 +- .../corridor/addon/walled_walkway.nbt | 2 +- .../corridor/atrium/bogged_relief.nbt | 4 +- .../corridor/atrium/breeze_relief.nbt | 4 +- .../corridor/atrium/grand_staircase_1.nbt | 4 +- .../corridor/atrium/grand_staircase_2.nbt | 4 +- .../corridor/atrium/grand_staircase_3.nbt | 4 +- .../corridor/atrium/spider_relief.nbt | 4 +- .../corridor/atrium/spiral_relief.nbt | 4 +- .../trial_chambers/corridor/atrium_1.nbt | 4 +- .../trial_chambers/corridor/end_1.nbt | 4 +- .../trial_chambers/corridor/end_2.nbt | 4 +- .../trial_chambers/corridor/entrance_1.nbt | 4 +- .../trial_chambers/corridor/entrance_2.nbt | 4 +- .../trial_chambers/corridor/entrance_3.nbt | 4 +- .../trial_chambers/corridor/first_plate.nbt | 4 +- .../trial_chambers/corridor/second_plate.nbt | 4 +- .../trial_chambers/corridor/straight_1.nbt | 4 +- .../trial_chambers/corridor/straight_2.nbt | 4 +- .../trial_chambers/corridor/straight_3.nbt | 4 +- .../trial_chambers/corridor/straight_4.nbt | 4 +- .../trial_chambers/corridor/straight_5.nbt | 4 +- .../trial_chambers/corridor/straight_6.nbt | 4 +- .../trial_chambers/corridor/straight_7.nbt | 4 +- .../trial_chambers/corridor/straight_8.nbt | 4 +- .../structure/trial_chambers/decor/barrel.nbt | 4 +- .../trial_chambers/decor/black_bed.nbt | 4 +- .../trial_chambers/decor/blue_bed.nbt | 4 +- .../trial_chambers/decor/brown_bed.nbt | 4 +- .../trial_chambers/decor/candle_1.nbt | 4 +- .../trial_chambers/decor/candle_2.nbt | 4 +- .../trial_chambers/decor/candle_3.nbt | 4 +- .../trial_chambers/decor/candle_4.nbt | 4 +- .../trial_chambers/decor/cyan_bed.nbt | 4 +- .../trial_chambers/decor/dead_bush_pot.nbt | 4 +- .../trial_chambers/decor/disposal.nbt | 4 +- .../trial_chambers/decor/empty_pot.nbt | 4 +- .../trial_chambers/decor/flow_pot.nbt | 4 +- .../trial_chambers/decor/gray_bed.nbt | 4 +- .../trial_chambers/decor/green_bed.nbt | 4 +- .../trial_chambers/decor/guster_pot.nbt | 4 +- .../trial_chambers/decor/light_blue_bed.nbt | 4 +- .../trial_chambers/decor/light_gray_bed.nbt | 4 +- .../trial_chambers/decor/lime_bed.nbt | 4 +- .../trial_chambers/decor/magenta_bed.nbt | 4 +- .../trial_chambers/decor/orange_bed.nbt | 4 +- .../trial_chambers/decor/pink_bed.nbt | 4 +- .../trial_chambers/decor/purple_bed.nbt | 4 +- .../trial_chambers/decor/red_bed.nbt | 4 +- .../trial_chambers/decor/scrape_pot.nbt | 4 +- .../trial_chambers/decor/undecorated_pot.nbt | 4 +- .../trial_chambers/decor/white_bed.nbt | 4 +- .../trial_chambers/decor/yellow_bed.nbt | 4 +- .../trial_chambers/dispensers/chamber.nbt | 4 +- .../dispensers/floor_dispenser.nbt | 4 +- .../dispensers/wall_dispenser.nbt | 4 +- .../trial_chambers/hallway/cache_1.nbt | 4 +- .../hallway/corner_staircase.nbt | 4 +- .../hallway/corner_staircase_down.nbt | 4 +- .../hallway/corridor_connector_1.nbt | 4 +- .../trial_chambers/hallway/encounter_1.nbt | 4 +- .../trial_chambers/hallway/encounter_2.nbt | 4 +- .../trial_chambers/hallway/encounter_3.nbt | 2 +- .../trial_chambers/hallway/encounter_4.nbt | 4 +- .../trial_chambers/hallway/encounter_5.nbt | 4 +- .../trial_chambers/hallway/left_corner.nbt | 4 +- .../hallway/long_straight_staircase.nbt | 4 +- .../hallway/long_straight_staircase_down.nbt | 4 +- .../hallway/lower_hallway_connector.nbt | 4 +- .../trial_chambers/hallway/right_corner.nbt | 4 +- .../trial_chambers/hallway/rubble.nbt | 4 +- .../trial_chambers/hallway/rubble_chamber.nbt | 4 +- .../hallway/rubble_chamber_thin.nbt | 4 +- .../trial_chambers/hallway/rubble_thin.nbt | 4 +- .../trial_chambers/hallway/straight.nbt | 4 +- .../hallway/straight_staircase.nbt | 4 +- .../hallway/straight_staircase_down.nbt | 4 +- .../hallway/trapped_staircase.nbt | 4 +- .../hallway/upper_hallway_connector.nbt | 4 +- .../intersection/intersection_1.nbt | 4 +- .../intersection/intersection_2.nbt | 4 +- .../intersection/intersection_3.nbt | 4 +- .../trial_chambers/reward/ominous_vault.nbt | 4 +- .../structure/trial_chambers/reward/vault.nbt | 4 +- .../trial_chambers/spawner/breeze/breeze.nbt | 4 +- .../spawner/connectors/breeze.nbt | 4 +- .../spawner/connectors/melee.nbt | 4 +- .../spawner/connectors/ranged.nbt | 4 +- .../spawner/connectors/slow_ranged.nbt | 4 +- .../spawner/connectors/small_melee.nbt | 4 +- .../trial_chambers/spawner/melee/husk.nbt | 4 +- .../trial_chambers/spawner/melee/spider.nbt | 4 +- .../trial_chambers/spawner/melee/zombie.nbt | 4 +- .../spawner/ranged/poison_skeleton.nbt | 4 +- .../spawner/ranged/skeleton.nbt | 4 +- .../trial_chambers/spawner/ranged/stray.nbt | 4 +- .../spawner/slow_ranged/poison_skeleton.nbt | 4 +- .../spawner/slow_ranged/skeleton.nbt | 4 +- .../spawner/slow_ranged/stray.nbt | 4 +- .../spawner/small_melee/baby_zombie.nbt | 4 +- .../spawner/small_melee/cave_spider.nbt | 4 +- .../spawner/small_melee/silverfish.nbt | 4 +- .../spawner/small_melee/slime.nbt | 4 +- .../structure/underwater_ruin/big_brick_1.nbt | 4 +- .../structure/underwater_ruin/big_brick_2.nbt | 4 +- .../structure/underwater_ruin/big_brick_3.nbt | 4 +- .../structure/underwater_ruin/big_brick_8.nbt | 4 +- .../underwater_ruin/big_cracked_1.nbt | 2 +- .../underwater_ruin/big_cracked_2.nbt | 4 +- .../underwater_ruin/big_cracked_3.nbt | 4 +- .../underwater_ruin/big_cracked_8.nbt | 4 +- .../structure/underwater_ruin/big_mossy_1.nbt | 4 +- .../structure/underwater_ruin/big_mossy_2.nbt | 4 +- .../structure/underwater_ruin/big_mossy_3.nbt | 4 +- .../structure/underwater_ruin/big_mossy_8.nbt | 4 +- .../structure/underwater_ruin/big_warm_4.nbt | 4 +- .../structure/underwater_ruin/big_warm_5.nbt | 2 +- .../structure/underwater_ruin/big_warm_6.nbt | 2 +- .../structure/underwater_ruin/big_warm_7.nbt | 4 +- .../structure/underwater_ruin/brick_1.nbt | 4 +- .../structure/underwater_ruin/brick_2.nbt | 4 +- .../structure/underwater_ruin/brick_3.nbt | 4 +- .../structure/underwater_ruin/brick_4.nbt | 4 +- .../structure/underwater_ruin/brick_5.nbt | 4 +- .../structure/underwater_ruin/brick_6.nbt | 4 +- .../structure/underwater_ruin/brick_7.nbt | 4 +- .../structure/underwater_ruin/brick_8.nbt | 4 +- .../structure/underwater_ruin/cracked_1.nbt | 4 +- .../structure/underwater_ruin/cracked_2.nbt | 4 +- .../structure/underwater_ruin/cracked_3.nbt | 4 +- .../structure/underwater_ruin/cracked_4.nbt | 4 +- .../structure/underwater_ruin/cracked_5.nbt | 4 +- .../structure/underwater_ruin/cracked_6.nbt | 4 +- .../structure/underwater_ruin/cracked_7.nbt | 4 +- .../structure/underwater_ruin/cracked_8.nbt | 4 +- .../structure/underwater_ruin/mossy_1.nbt | 4 +- .../structure/underwater_ruin/mossy_2.nbt | 4 +- .../structure/underwater_ruin/mossy_3.nbt | 4 +- .../structure/underwater_ruin/mossy_4.nbt | 4 +- .../structure/underwater_ruin/mossy_5.nbt | 4 +- .../structure/underwater_ruin/mossy_6.nbt | 4 +- .../structure/underwater_ruin/mossy_7.nbt | 4 +- .../structure/underwater_ruin/mossy_8.nbt | 4 +- .../structure/underwater_ruin/warm_1.nbt | 4 +- .../structure/underwater_ruin/warm_2.nbt | 2 +- .../structure/underwater_ruin/warm_3.nbt | 4 +- .../structure/underwater_ruin/warm_4.nbt | 4 +- .../structure/underwater_ruin/warm_5.nbt | 2 +- .../structure/underwater_ruin/warm_6.nbt | 4 +- .../structure/underwater_ruin/warm_7.nbt | 4 +- .../structure/underwater_ruin/warm_8.nbt | 2 +- .../village/common/animals/cat_black.nbt | 4 +- .../village/common/animals/cat_british.nbt | 4 +- .../village/common/animals/cat_calico.nbt | 4 +- .../village/common/animals/cat_jellie.nbt | 4 +- .../village/common/animals/cat_persian.nbt | 4 +- .../village/common/animals/cat_ragdoll.nbt | 4 +- .../village/common/animals/cat_red.nbt | 2 +- .../village/common/animals/cat_siamese.nbt | 4 +- .../village/common/animals/cat_tabby.nbt | 4 +- .../village/common/animals/cat_white.nbt | 4 +- .../village/common/animals/cows_1.nbt | 4 +- .../village/common/animals/horses_1.nbt | 2 +- .../village/common/animals/horses_2.nbt | 4 +- .../village/common/animals/horses_3.nbt | 4 +- .../village/common/animals/horses_4.nbt | 4 +- .../village/common/animals/horses_5.nbt | 4 +- .../village/common/animals/pigs_1.nbt | 4 +- .../village/common/animals/sheep_1.nbt | 4 +- .../village/common/animals/sheep_2.nbt | 4 +- .../structure/village/common/iron_golem.nbt | 4 +- .../structure/village/common/well_bottom.nbt | 4 +- .../structure/village/decays/grass_11x13.nbt | 4 +- .../structure/village/decays/grass_16x16.nbt | 4 +- .../structure/village/decays/grass_9x9.nbt | 2 +- .../structure/village/desert/camel_spawn.nbt | 4 +- .../village/desert/desert_lamp_1.nbt | 4 +- .../desert/houses/desert_animal_pen_1.nbt | 4 +- .../desert/houses/desert_animal_pen_2.nbt | 4 +- .../desert/houses/desert_armorer_1.nbt | 4 +- .../desert/houses/desert_butcher_shop_1.nbt | 4 +- .../houses/desert_cartographer_house_1.nbt | 4 +- .../village/desert/houses/desert_farm_1.nbt | 4 +- .../village/desert/houses/desert_farm_2.nbt | 4 +- .../village/desert/houses/desert_fisher_1.nbt | 4 +- .../desert/houses/desert_fletcher_house_1.nbt | 4 +- .../desert/houses/desert_large_farm_1.nbt | 4 +- .../desert/houses/desert_library_1.nbt | 4 +- .../village/desert/houses/desert_mason_1.nbt | 4 +- .../desert/houses/desert_medium_house_1.nbt | 2 +- .../desert/houses/desert_medium_house_2.nbt | 4 +- .../desert/houses/desert_shepherd_house_1.nbt | 4 +- .../desert/houses/desert_small_house_1.nbt | 4 +- .../desert/houses/desert_small_house_2.nbt | 4 +- .../desert/houses/desert_small_house_3.nbt | 4 +- .../desert/houses/desert_small_house_4.nbt | 4 +- .../desert/houses/desert_small_house_5.nbt | 4 +- .../desert/houses/desert_small_house_6.nbt | 4 +- .../desert/houses/desert_small_house_7.nbt | 4 +- .../desert/houses/desert_small_house_8.nbt | 4 +- .../desert/houses/desert_tannery_1.nbt | 4 +- .../village/desert/houses/desert_temple_1.nbt | 4 +- .../village/desert/houses/desert_temple_2.nbt | 4 +- .../desert/houses/desert_tool_smith_1.nbt | 4 +- .../desert/houses/desert_weaponsmith_1.nbt | 4 +- .../village/desert/streets/corner_01.nbt | 4 +- .../village/desert/streets/corner_02.nbt | 4 +- .../village/desert/streets/crossroad_01.nbt | 4 +- .../village/desert/streets/crossroad_02.nbt | 4 +- .../village/desert/streets/crossroad_03.nbt | 4 +- .../village/desert/streets/square_01.nbt | 4 +- .../village/desert/streets/square_02.nbt | 4 +- .../village/desert/streets/straight_01.nbt | 4 +- .../village/desert/streets/straight_02.nbt | 4 +- .../village/desert/streets/straight_03.nbt | 4 +- .../village/desert/streets/turn_01.nbt | 4 +- .../desert/terminators/terminator_01.nbt | 4 +- .../desert/terminators/terminator_02.nbt | 4 +- .../town_centers/desert_meeting_point_1.nbt | 4 +- .../town_centers/desert_meeting_point_2.nbt | 4 +- .../town_centers/desert_meeting_point_3.nbt | 2 +- .../village/desert/villagers/baby.nbt | 4 +- .../village/desert/villagers/nitwit.nbt | 4 +- .../village/desert/villagers/unemployed.nbt | 2 +- .../zombie/houses/desert_medium_house_1.nbt | 2 +- .../zombie/houses/desert_medium_house_2.nbt | 4 +- .../zombie/houses/desert_small_house_1.nbt | 4 +- .../zombie/houses/desert_small_house_2.nbt | 4 +- .../zombie/houses/desert_small_house_3.nbt | 4 +- .../zombie/houses/desert_small_house_4.nbt | 4 +- .../zombie/houses/desert_small_house_5.nbt | 4 +- .../zombie/houses/desert_small_house_6.nbt | 4 +- .../zombie/houses/desert_small_house_7.nbt | 4 +- .../zombie/houses/desert_small_house_8.nbt | 4 +- .../desert/zombie/streets/corner_01.nbt | 4 +- .../desert/zombie/streets/corner_02.nbt | 4 +- .../desert/zombie/streets/crossroad_01.nbt | 4 +- .../desert/zombie/streets/crossroad_02.nbt | 4 +- .../desert/zombie/streets/crossroad_03.nbt | 4 +- .../desert/zombie/streets/square_01.nbt | 2 +- .../desert/zombie/streets/square_02.nbt | 4 +- .../desert/zombie/streets/straight_01.nbt | 4 +- .../desert/zombie/streets/straight_02.nbt | 4 +- .../desert/zombie/streets/straight_03.nbt | 4 +- .../village/desert/zombie/streets/turn_01.nbt | 4 +- .../zombie/terminators/terminator_02.nbt | 4 +- .../town_centers/desert_meeting_point_1.nbt | 4 +- .../town_centers/desert_meeting_point_2.nbt | 4 +- .../town_centers/desert_meeting_point_3.nbt | 4 +- .../desert/zombie/villagers/nitwit.nbt | 2 +- .../desert/zombie/villagers/unemployed.nbt | 2 +- .../plains/houses/plains_accessory_1.nbt | 4 +- .../plains/houses/plains_animal_pen_1.nbt | 4 +- .../plains/houses/plains_animal_pen_2.nbt | 4 +- .../plains/houses/plains_animal_pen_3.nbt | 4 +- .../plains/houses/plains_armorer_house_1.nbt | 4 +- .../plains/houses/plains_big_house_1.nbt | 4 +- .../plains/houses/plains_butcher_shop_1.nbt | 4 +- .../plains/houses/plains_butcher_shop_2.nbt | 4 +- .../plains/houses/plains_cartographer_1.nbt | 4 +- .../plains/houses/plains_fisher_cottage_1.nbt | 4 +- .../plains/houses/plains_fletcher_house_1.nbt | 4 +- .../plains/houses/plains_large_farm_1.nbt | 4 +- .../plains/houses/plains_library_1.nbt | 4 +- .../plains/houses/plains_library_2.nbt | 4 +- .../plains/houses/plains_masons_house_1.nbt | 4 +- .../plains/houses/plains_medium_house_1.nbt | 4 +- .../plains/houses/plains_medium_house_2.nbt | 4 +- .../plains/houses/plains_meeting_point_4.nbt | 4 +- .../plains/houses/plains_meeting_point_5.nbt | 4 +- .../houses/plains_shepherds_house_1.nbt | 4 +- .../plains/houses/plains_small_farm_1.nbt | 4 +- .../plains/houses/plains_small_house_1.nbt | 4 +- .../plains/houses/plains_small_house_2.nbt | 4 +- .../plains/houses/plains_small_house_3.nbt | 4 +- .../plains/houses/plains_small_house_4.nbt | 4 +- .../plains/houses/plains_small_house_5.nbt | 4 +- .../plains/houses/plains_small_house_6.nbt | 4 +- .../plains/houses/plains_small_house_7.nbt | 4 +- .../plains/houses/plains_small_house_8.nbt | 4 +- .../village/plains/houses/plains_stable_1.nbt | 2 +- .../village/plains/houses/plains_stable_2.nbt | 4 +- .../plains/houses/plains_tannery_1.nbt | 2 +- .../village/plains/houses/plains_temple_3.nbt | 4 +- .../village/plains/houses/plains_temple_4.nbt | 4 +- .../plains/houses/plains_tool_smith_1.nbt | 4 +- .../plains/houses/plains_weaponsmith_1.nbt | 4 +- .../village/plains/plains_lamp_1.nbt | 4 +- .../village/plains/streets/corner_01.nbt | 4 +- .../village/plains/streets/corner_02.nbt | 4 +- .../village/plains/streets/corner_03.nbt | 4 +- .../village/plains/streets/crossroad_01.nbt | 4 +- .../village/plains/streets/crossroad_02.nbt | 4 +- .../village/plains/streets/crossroad_03.nbt | 4 +- .../village/plains/streets/crossroad_04.nbt | 4 +- .../village/plains/streets/crossroad_05.nbt | 4 +- .../village/plains/streets/crossroad_06.nbt | 4 +- .../village/plains/streets/straight_01.nbt | 4 +- .../village/plains/streets/straight_02.nbt | 4 +- .../village/plains/streets/straight_03.nbt | 4 +- .../village/plains/streets/straight_04.nbt | 4 +- .../village/plains/streets/straight_05.nbt | 4 +- .../village/plains/streets/straight_06.nbt | 4 +- .../village/plains/streets/turn_01.nbt | 4 +- .../plains/terminators/terminator_01.nbt | 4 +- .../plains/terminators/terminator_02.nbt | 4 +- .../plains/terminators/terminator_03.nbt | 4 +- .../plains/terminators/terminator_04.nbt | 4 +- .../town_centers/plains_fountain_01.nbt | 2 +- .../town_centers/plains_meeting_point_1.nbt | 4 +- .../town_centers/plains_meeting_point_2.nbt | 4 +- .../town_centers/plains_meeting_point_3.nbt | 4 +- .../village/plains/villagers/baby.nbt | 2 +- .../village/plains/villagers/nitwit.nbt | 4 +- .../village/plains/villagers/unemployed.nbt | 4 +- .../zombie/houses/plains_animal_pen_3.nbt | 4 +- .../zombie/houses/plains_big_house_1.nbt | 4 +- .../zombie/houses/plains_butcher_shop_2.nbt | 4 +- .../zombie/houses/plains_fletcher_house_1.nbt | 4 +- .../zombie/houses/plains_medium_house_1.nbt | 4 +- .../zombie/houses/plains_medium_house_2.nbt | 4 +- .../zombie/houses/plains_meeting_point_4.nbt | 4 +- .../zombie/houses/plains_meeting_point_5.nbt | 4 +- .../houses/plains_shepherds_house_1.nbt | 2 +- .../zombie/houses/plains_small_house_1.nbt | 4 +- .../zombie/houses/plains_small_house_2.nbt | 4 +- .../zombie/houses/plains_small_house_3.nbt | 4 +- .../zombie/houses/plains_small_house_4.nbt | 4 +- .../zombie/houses/plains_small_house_5.nbt | 2 +- .../zombie/houses/plains_small_house_6.nbt | 4 +- .../zombie/houses/plains_small_house_7.nbt | 4 +- .../zombie/houses/plains_small_house_8.nbt | 4 +- .../plains/zombie/houses/plains_stable_1.nbt | 4 +- .../plains/zombie/streets/corner_01.nbt | 4 +- .../plains/zombie/streets/corner_02.nbt | 4 +- .../plains/zombie/streets/corner_03.nbt | 4 +- .../plains/zombie/streets/crossroad_01.nbt | 4 +- .../plains/zombie/streets/crossroad_02.nbt | 4 +- .../plains/zombie/streets/crossroad_03.nbt | 4 +- .../plains/zombie/streets/crossroad_04.nbt | 4 +- .../plains/zombie/streets/crossroad_05.nbt | 4 +- .../plains/zombie/streets/crossroad_06.nbt | 4 +- .../plains/zombie/streets/straight_01.nbt | 4 +- .../plains/zombie/streets/straight_02.nbt | 4 +- .../plains/zombie/streets/straight_03.nbt | 4 +- .../plains/zombie/streets/straight_04.nbt | 4 +- .../plains/zombie/streets/straight_05.nbt | 2 +- .../plains/zombie/streets/straight_06.nbt | 4 +- .../village/plains/zombie/streets/turn_01.nbt | 4 +- .../town_centers/plains_fountain_01.nbt | 4 +- .../town_centers/plains_meeting_point_1.nbt | 4 +- .../town_centers/plains_meeting_point_2.nbt | 4 +- .../town_centers/plains_meeting_point_3.nbt | 4 +- .../plains/zombie/villagers/nitwit.nbt | 4 +- .../plains/zombie/villagers/unemployed.nbt | 2 +- .../savanna/houses/savanna_animal_pen_1.nbt | 4 +- .../savanna/houses/savanna_animal_pen_2.nbt | 2 +- .../savanna/houses/savanna_animal_pen_3.nbt | 4 +- .../savanna/houses/savanna_armorer_1.nbt | 4 +- .../houses/savanna_butchers_shop_1.nbt | 4 +- .../houses/savanna_butchers_shop_2.nbt | 4 +- .../savanna/houses/savanna_cartographer_1.nbt | 4 +- .../houses/savanna_fisher_cottage_1.nbt | 4 +- .../houses/savanna_fletcher_house_1.nbt | 4 +- .../savanna/houses/savanna_large_farm_1.nbt | 2 +- .../savanna/houses/savanna_large_farm_2.nbt | 4 +- .../savanna/houses/savanna_library_1.nbt | 4 +- .../savanna/houses/savanna_mason_1.nbt | 4 +- .../savanna/houses/savanna_medium_house_1.nbt | 4 +- .../savanna/houses/savanna_medium_house_2.nbt | 4 +- .../savanna/houses/savanna_shepherd_1.nbt | 4 +- .../savanna/houses/savanna_small_farm.nbt | 4 +- .../savanna/houses/savanna_small_house_1.nbt | 4 +- .../savanna/houses/savanna_small_house_2.nbt | 4 +- .../savanna/houses/savanna_small_house_3.nbt | 4 +- .../savanna/houses/savanna_small_house_4.nbt | 2 +- .../savanna/houses/savanna_small_house_5.nbt | 4 +- .../savanna/houses/savanna_small_house_6.nbt | 4 +- .../savanna/houses/savanna_small_house_7.nbt | 4 +- .../savanna/houses/savanna_small_house_8.nbt | 4 +- .../savanna/houses/savanna_tannery_1.nbt | 4 +- .../savanna/houses/savanna_temple_1.nbt | 4 +- .../savanna/houses/savanna_temple_2.nbt | 4 +- .../savanna/houses/savanna_tool_smith_1.nbt | 2 +- .../savanna/houses/savanna_weaponsmith_1.nbt | 4 +- .../savanna/houses/savanna_weaponsmith_2.nbt | 4 +- .../village/savanna/savanna_lamp_post_01.nbt | 4 +- .../village/savanna/streets/corner_01.nbt | 4 +- .../village/savanna/streets/corner_03.nbt | 4 +- .../village/savanna/streets/crossroad_02.nbt | 4 +- .../village/savanna/streets/crossroad_03.nbt | 4 +- .../village/savanna/streets/crossroad_04.nbt | 4 +- .../village/savanna/streets/crossroad_05.nbt | 4 +- .../village/savanna/streets/crossroad_06.nbt | 4 +- .../village/savanna/streets/crossroad_07.nbt | 4 +- .../village/savanna/streets/split_01.nbt | 4 +- .../village/savanna/streets/split_02.nbt | 4 +- .../village/savanna/streets/straight_02.nbt | 4 +- .../village/savanna/streets/straight_04.nbt | 4 +- .../village/savanna/streets/straight_05.nbt | 4 +- .../village/savanna/streets/straight_06.nbt | 4 +- .../village/savanna/streets/straight_08.nbt | 4 +- .../village/savanna/streets/straight_09.nbt | 4 +- .../village/savanna/streets/straight_10.nbt | 4 +- .../village/savanna/streets/straight_11.nbt | 4 +- .../village/savanna/streets/turn_01.nbt | 4 +- .../savanna/terminators/terminator_05.nbt | 4 +- .../town_centers/savanna_meeting_point_1.nbt | 4 +- .../town_centers/savanna_meeting_point_2.nbt | 4 +- .../town_centers/savanna_meeting_point_3.nbt | 4 +- .../town_centers/savanna_meeting_point_4.nbt | 4 +- .../village/savanna/villagers/baby.nbt | 4 +- .../village/savanna/villagers/nitwit.nbt | 4 +- .../village/savanna/villagers/unemployed.nbt | 4 +- .../zombie/houses/savanna_animal_pen_2.nbt | 2 +- .../zombie/houses/savanna_animal_pen_3.nbt | 4 +- .../zombie/houses/savanna_large_farm_2.nbt | 4 +- .../zombie/houses/savanna_medium_house_1.nbt | 4 +- .../zombie/houses/savanna_medium_house_2.nbt | 4 +- .../zombie/houses/savanna_small_house_1.nbt | 4 +- .../zombie/houses/savanna_small_house_2.nbt | 4 +- .../zombie/houses/savanna_small_house_3.nbt | 4 +- .../zombie/houses/savanna_small_house_4.nbt | 4 +- .../zombie/houses/savanna_small_house_5.nbt | 4 +- .../zombie/houses/savanna_small_house_6.nbt | 4 +- .../zombie/houses/savanna_small_house_7.nbt | 4 +- .../zombie/houses/savanna_small_house_8.nbt | 4 +- .../savanna/zombie/streets/corner_01.nbt | 4 +- .../savanna/zombie/streets/corner_03.nbt | 4 +- .../savanna/zombie/streets/crossroad_02.nbt | 4 +- .../savanna/zombie/streets/crossroad_03.nbt | 4 +- .../savanna/zombie/streets/crossroad_04.nbt | 2 +- .../savanna/zombie/streets/crossroad_05.nbt | 4 +- .../savanna/zombie/streets/crossroad_06.nbt | 4 +- .../savanna/zombie/streets/crossroad_07.nbt | 4 +- .../savanna/zombie/streets/split_01.nbt | 4 +- .../savanna/zombie/streets/split_02.nbt | 4 +- .../savanna/zombie/streets/straight_02.nbt | 4 +- .../savanna/zombie/streets/straight_04.nbt | 4 +- .../savanna/zombie/streets/straight_05.nbt | 4 +- .../savanna/zombie/streets/straight_06.nbt | 4 +- .../savanna/zombie/streets/straight_08.nbt | 4 +- .../savanna/zombie/streets/straight_09.nbt | 4 +- .../savanna/zombie/streets/straight_10.nbt | 4 +- .../savanna/zombie/streets/straight_11.nbt | 4 +- .../savanna/zombie/streets/turn_01.nbt | 4 +- .../zombie/terminators/terminator_05.nbt | 2 +- .../town_centers/savanna_meeting_point_1.nbt | 4 +- .../town_centers/savanna_meeting_point_2.nbt | 4 +- .../town_centers/savanna_meeting_point_3.nbt | 4 +- .../town_centers/savanna_meeting_point_4.nbt | 4 +- .../savanna/zombie/villagers/nitwit.nbt | 4 +- .../savanna/zombie/villagers/unemployed.nbt | 4 +- .../snowy/houses/snowy_animal_pen_1.nbt | 4 +- .../snowy/houses/snowy_animal_pen_2.nbt | 4 +- .../snowy/houses/snowy_armorer_house_1.nbt | 4 +- .../snowy/houses/snowy_armorer_house_2.nbt | 4 +- .../snowy/houses/snowy_butchers_shop_1.nbt | 4 +- .../snowy/houses/snowy_butchers_shop_2.nbt | 4 +- .../houses/snowy_cartographer_house_1.nbt | 4 +- .../village/snowy/houses/snowy_farm_1.nbt | 4 +- .../village/snowy/houses/snowy_farm_2.nbt | 4 +- .../snowy/houses/snowy_fisher_cottage.nbt | 2 +- .../snowy/houses/snowy_fletcher_house_1.nbt | 4 +- .../village/snowy/houses/snowy_library_1.nbt | 4 +- .../snowy/houses/snowy_masons_house_1.nbt | 4 +- .../snowy/houses/snowy_masons_house_2.nbt | 4 +- .../snowy/houses/snowy_medium_house_1.nbt | 4 +- .../snowy/houses/snowy_medium_house_2.nbt | 4 +- .../snowy/houses/snowy_medium_house_3.nbt | 4 +- .../snowy/houses/snowy_shepherds_house_1.nbt | 4 +- .../snowy/houses/snowy_small_house_1.nbt | 4 +- .../snowy/houses/snowy_small_house_2.nbt | 4 +- .../snowy/houses/snowy_small_house_3.nbt | 4 +- .../snowy/houses/snowy_small_house_4.nbt | 4 +- .../snowy/houses/snowy_small_house_5.nbt | 4 +- .../snowy/houses/snowy_small_house_6.nbt | 4 +- .../snowy/houses/snowy_small_house_7.nbt | 4 +- .../snowy/houses/snowy_small_house_8.nbt | 4 +- .../village/snowy/houses/snowy_tannery_1.nbt | 4 +- .../village/snowy/houses/snowy_temple_1.nbt | 4 +- .../snowy/houses/snowy_tool_smith_1.nbt | 4 +- .../snowy/houses/snowy_weapon_smith_1.nbt | 4 +- .../village/snowy/snowy_lamp_post_01.nbt | 4 +- .../village/snowy/snowy_lamp_post_02.nbt | 4 +- .../village/snowy/snowy_lamp_post_03.nbt | 4 +- .../village/snowy/streets/corner_01.nbt | 4 +- .../village/snowy/streets/corner_02.nbt | 4 +- .../village/snowy/streets/corner_03.nbt | 4 +- .../village/snowy/streets/crossroad_01.nbt | 4 +- .../village/snowy/streets/crossroad_02.nbt | 2 +- .../village/snowy/streets/crossroad_03.nbt | 4 +- .../village/snowy/streets/crossroad_04.nbt | 4 +- .../village/snowy/streets/crossroad_05.nbt | 4 +- .../village/snowy/streets/crossroad_06.nbt | 4 +- .../village/snowy/streets/square_01.nbt | 4 +- .../village/snowy/streets/straight_01.nbt | 4 +- .../village/snowy/streets/straight_02.nbt | 4 +- .../village/snowy/streets/straight_03.nbt | 4 +- .../village/snowy/streets/straight_04.nbt | 4 +- .../village/snowy/streets/straight_06.nbt | 4 +- .../village/snowy/streets/straight_08.nbt | 4 +- .../village/snowy/streets/turn_01.nbt | 4 +- .../town_centers/snowy_meeting_point_1.nbt | 4 +- .../town_centers/snowy_meeting_point_2.nbt | 4 +- .../town_centers/snowy_meeting_point_3.nbt | 4 +- .../village/snowy/villagers/baby.nbt | 2 +- .../village/snowy/villagers/nitwit.nbt | 4 +- .../village/snowy/villagers/unemployed.nbt | 2 +- .../zombie/houses/snowy_medium_house_1.nbt | 4 +- .../zombie/houses/snowy_medium_house_2.nbt | 4 +- .../zombie/houses/snowy_medium_house_3.nbt | 4 +- .../zombie/houses/snowy_small_house_1.nbt | 4 +- .../zombie/houses/snowy_small_house_2.nbt | 4 +- .../zombie/houses/snowy_small_house_3.nbt | 4 +- .../zombie/houses/snowy_small_house_4.nbt | 4 +- .../zombie/houses/snowy_small_house_5.nbt | 2 +- .../zombie/houses/snowy_small_house_6.nbt | 4 +- .../zombie/houses/snowy_small_house_7.nbt | 4 +- .../zombie/houses/snowy_small_house_8.nbt | 4 +- .../snowy/zombie/streets/corner_01.nbt | 4 +- .../snowy/zombie/streets/corner_02.nbt | 4 +- .../snowy/zombie/streets/corner_03.nbt | 4 +- .../snowy/zombie/streets/crossroad_01.nbt | 4 +- .../snowy/zombie/streets/crossroad_02.nbt | 4 +- .../snowy/zombie/streets/crossroad_03.nbt | 4 +- .../snowy/zombie/streets/crossroad_04.nbt | 4 +- .../snowy/zombie/streets/crossroad_05.nbt | 4 +- .../snowy/zombie/streets/crossroad_06.nbt | 4 +- .../snowy/zombie/streets/square_01.nbt | 4 +- .../snowy/zombie/streets/straight_01.nbt | 4 +- .../snowy/zombie/streets/straight_02.nbt | 4 +- .../snowy/zombie/streets/straight_03.nbt | 4 +- .../snowy/zombie/streets/straight_04.nbt | 4 +- .../snowy/zombie/streets/straight_06.nbt | 2 +- .../snowy/zombie/streets/straight_08.nbt | 4 +- .../village/snowy/zombie/streets/turn_01.nbt | 4 +- .../town_centers/snowy_meeting_point_1.nbt | 4 +- .../town_centers/snowy_meeting_point_2.nbt | 4 +- .../town_centers/snowy_meeting_point_3.nbt | 4 +- .../village/snowy/zombie/villagers/nitwit.nbt | 2 +- .../snowy/zombie/villagers/unemployed.nbt | 4 +- .../taiga/houses/taiga_animal_pen_1.nbt | 4 +- .../village/taiga/houses/taiga_armorer_2.nbt | 4 +- .../taiga/houses/taiga_armorer_house_1.nbt | 4 +- .../taiga/houses/taiga_butcher_shop_1.nbt | 4 +- .../houses/taiga_cartographer_house_1.nbt | 4 +- .../taiga/houses/taiga_fisher_cottage_1.nbt | 4 +- .../taiga/houses/taiga_fletcher_house_1.nbt | 4 +- .../taiga/houses/taiga_large_farm_1.nbt | 2 +- .../taiga/houses/taiga_large_farm_2.nbt | 4 +- .../village/taiga/houses/taiga_library_1.nbt | 4 +- .../taiga/houses/taiga_masons_house_1.nbt | 4 +- .../taiga/houses/taiga_medium_house_1.nbt | 4 +- .../taiga/houses/taiga_medium_house_2.nbt | 4 +- .../taiga/houses/taiga_medium_house_3.nbt | 4 +- .../taiga/houses/taiga_medium_house_4.nbt | 4 +- .../taiga/houses/taiga_shepherds_house_1.nbt | 4 +- .../taiga/houses/taiga_small_farm_1.nbt | 4 +- .../taiga/houses/taiga_small_house_1.nbt | 4 +- .../taiga/houses/taiga_small_house_2.nbt | 4 +- .../taiga/houses/taiga_small_house_3.nbt | 4 +- .../taiga/houses/taiga_small_house_4.nbt | 4 +- .../taiga/houses/taiga_small_house_5.nbt | 4 +- .../village/taiga/houses/taiga_tannery_1.nbt | 4 +- .../village/taiga/houses/taiga_temple_1.nbt | 4 +- .../taiga/houses/taiga_tool_smith_1.nbt | 2 +- .../taiga/houses/taiga_weaponsmith_1.nbt | 4 +- .../taiga/houses/taiga_weaponsmith_2.nbt | 4 +- .../village/taiga/streets/corner_01.nbt | 4 +- .../village/taiga/streets/corner_02.nbt | 4 +- .../village/taiga/streets/corner_03.nbt | 4 +- .../village/taiga/streets/crossroad_01.nbt | 4 +- .../village/taiga/streets/crossroad_02.nbt | 4 +- .../village/taiga/streets/crossroad_03.nbt | 4 +- .../village/taiga/streets/crossroad_04.nbt | 4 +- .../village/taiga/streets/crossroad_05.nbt | 4 +- .../village/taiga/streets/crossroad_06.nbt | 4 +- .../village/taiga/streets/straight_01.nbt | 4 +- .../village/taiga/streets/straight_02.nbt | 4 +- .../village/taiga/streets/straight_03.nbt | 4 +- .../village/taiga/streets/straight_04.nbt | 4 +- .../village/taiga/streets/straight_05.nbt | 4 +- .../village/taiga/streets/straight_06.nbt | 4 +- .../village/taiga/streets/turn_01.nbt | 4 +- .../village/taiga/taiga_decoration_1.nbt | 4 +- .../village/taiga/taiga_decoration_2.nbt | 4 +- .../village/taiga/taiga_decoration_3.nbt | 4 +- .../village/taiga/taiga_decoration_4.nbt | 4 +- .../village/taiga/taiga_decoration_5.nbt | 4 +- .../village/taiga/taiga_decoration_6.nbt | 4 +- .../village/taiga/taiga_lamp_post_1.nbt | 4 +- .../town_centers/taiga_meeting_point_1.nbt | 4 +- .../town_centers/taiga_meeting_point_2.nbt | 4 +- .../village/taiga/villagers/baby.nbt | 2 +- .../village/taiga/villagers/nitwit.nbt | 2 +- .../village/taiga/villagers/unemployed.nbt | 4 +- .../houses/taiga_cartographer_house_1.nbt | 4 +- .../zombie/houses/taiga_fisher_cottage_1.nbt | 2 +- .../zombie/houses/taiga_large_farm_2.nbt | 4 +- .../taiga/zombie/houses/taiga_library_1.nbt | 4 +- .../zombie/houses/taiga_medium_house_1.nbt | 4 +- .../zombie/houses/taiga_medium_house_2.nbt | 4 +- .../zombie/houses/taiga_medium_house_3.nbt | 4 +- .../zombie/houses/taiga_medium_house_4.nbt | 4 +- .../zombie/houses/taiga_shepherds_house_1.nbt | 4 +- .../zombie/houses/taiga_small_house_1.nbt | 4 +- .../zombie/houses/taiga_small_house_2.nbt | 4 +- .../zombie/houses/taiga_small_house_3.nbt | 4 +- .../zombie/houses/taiga_small_house_4.nbt | 4 +- .../zombie/houses/taiga_small_house_5.nbt | 4 +- .../taiga/zombie/houses/taiga_temple_1.nbt | 4 +- .../zombie/houses/taiga_tool_smith_1.nbt | 2 +- .../zombie/houses/taiga_weaponsmith_2.nbt | 4 +- .../taiga/zombie/streets/corner_01.nbt | 4 +- .../taiga/zombie/streets/corner_02.nbt | 4 +- .../taiga/zombie/streets/corner_03.nbt | 4 +- .../taiga/zombie/streets/crossroad_01.nbt | 4 +- .../taiga/zombie/streets/crossroad_02.nbt | 4 +- .../taiga/zombie/streets/crossroad_03.nbt | 4 +- .../taiga/zombie/streets/crossroad_04.nbt | 4 +- .../taiga/zombie/streets/crossroad_05.nbt | 4 +- .../taiga/zombie/streets/crossroad_06.nbt | 4 +- .../taiga/zombie/streets/straight_01.nbt | 4 +- .../taiga/zombie/streets/straight_02.nbt | 4 +- .../taiga/zombie/streets/straight_03.nbt | 4 +- .../taiga/zombie/streets/straight_04.nbt | 4 +- .../taiga/zombie/streets/straight_05.nbt | 4 +- .../taiga/zombie/streets/straight_06.nbt | 4 +- .../village/taiga/zombie/streets/turn_01.nbt | 4 +- .../town_centers/taiga_meeting_point_1.nbt | 4 +- .../town_centers/taiga_meeting_point_2.nbt | 4 +- .../village/taiga/zombie/villagers/nitwit.nbt | 4 +- .../taiga/zombie/villagers/unemployed.nbt | 2 +- .../structure/woodland_mansion/1x1_a1.nbt | 4 +- .../structure/woodland_mansion/1x1_a2.nbt | 4 +- .../structure/woodland_mansion/1x1_a3.nbt | 4 +- .../structure/woodland_mansion/1x1_a4.nbt | 4 +- .../structure/woodland_mansion/1x1_a5.nbt | 4 +- .../structure/woodland_mansion/1x1_as1.nbt | 4 +- .../structure/woodland_mansion/1x1_as2.nbt | 4 +- .../structure/woodland_mansion/1x1_as3.nbt | 4 +- .../structure/woodland_mansion/1x1_as4.nbt | 2 +- .../structure/woodland_mansion/1x1_b1.nbt | 4 +- .../structure/woodland_mansion/1x1_b2.nbt | 4 +- .../structure/woodland_mansion/1x1_b3.nbt | 4 +- .../structure/woodland_mansion/1x1_b4.nbt | 4 +- .../structure/woodland_mansion/1x1_b5.nbt | 4 +- .../structure/woodland_mansion/1x2_a1.nbt | 4 +- .../structure/woodland_mansion/1x2_a2.nbt | 4 +- .../structure/woodland_mansion/1x2_a3.nbt | 2 +- .../structure/woodland_mansion/1x2_a4.nbt | 4 +- .../structure/woodland_mansion/1x2_a5.nbt | 4 +- .../structure/woodland_mansion/1x2_a6.nbt | 2 +- .../structure/woodland_mansion/1x2_a7.nbt | 4 +- .../structure/woodland_mansion/1x2_a8.nbt | 4 +- .../structure/woodland_mansion/1x2_a9.nbt | 4 +- .../structure/woodland_mansion/1x2_b1.nbt | 4 +- .../structure/woodland_mansion/1x2_b2.nbt | 4 +- .../structure/woodland_mansion/1x2_b3.nbt | 4 +- .../structure/woodland_mansion/1x2_b4.nbt | 4 +- .../structure/woodland_mansion/1x2_b5.nbt | 4 +- .../structure/woodland_mansion/1x2_c1.nbt | 4 +- .../structure/woodland_mansion/1x2_c2.nbt | 4 +- .../structure/woodland_mansion/1x2_c3.nbt | 4 +- .../structure/woodland_mansion/1x2_c4.nbt | 4 +- .../woodland_mansion/1x2_c_stairs.nbt | 4 +- .../structure/woodland_mansion/1x2_d1.nbt | 4 +- .../structure/woodland_mansion/1x2_d2.nbt | 4 +- .../structure/woodland_mansion/1x2_d3.nbt | 4 +- .../structure/woodland_mansion/1x2_d4.nbt | 2 +- .../structure/woodland_mansion/1x2_d5.nbt | 4 +- .../woodland_mansion/1x2_d_stairs.nbt | 4 +- .../structure/woodland_mansion/1x2_s1.nbt | 2 +- .../structure/woodland_mansion/1x2_s2.nbt | 4 +- .../structure/woodland_mansion/1x2_se1.nbt | 4 +- .../structure/woodland_mansion/2x2_a1.nbt | 4 +- .../structure/woodland_mansion/2x2_a2.nbt | 4 +- .../structure/woodland_mansion/2x2_a3.nbt | 4 +- .../structure/woodland_mansion/2x2_a4.nbt | 4 +- .../structure/woodland_mansion/2x2_b1.nbt | 4 +- .../structure/woodland_mansion/2x2_b2.nbt | 4 +- .../structure/woodland_mansion/2x2_b3.nbt | 4 +- .../structure/woodland_mansion/2x2_b4.nbt | 4 +- .../structure/woodland_mansion/2x2_b5.nbt | 4 +- .../structure/woodland_mansion/2x2_s1.nbt | 2 +- .../woodland_mansion/carpet_east.nbt | 4 +- .../woodland_mansion/carpet_north.nbt | 4 +- .../woodland_mansion/carpet_south_1.nbt | 4 +- .../woodland_mansion/carpet_south_2.nbt | 2 +- .../woodland_mansion/carpet_west_1.nbt | 2 +- .../woodland_mansion/carpet_west_2.nbt | 4 +- .../woodland_mansion/corridor_floor.nbt | 4 +- .../structure/woodland_mansion/entrance.nbt | 4 +- .../woodland_mansion/indoors_door_1.nbt | 4 +- .../woodland_mansion/indoors_door_2.nbt | 4 +- .../woodland_mansion/indoors_wall_1.nbt | 4 +- .../woodland_mansion/indoors_wall_2.nbt | 4 +- .../structure/woodland_mansion/roof.nbt | 4 +- .../woodland_mansion/roof_corner.nbt | 4 +- .../structure/woodland_mansion/roof_front.nbt | 4 +- .../woodland_mansion/roof_inner_corner.nbt | 4 +- .../structure/woodland_mansion/small_wall.nbt | 4 +- .../woodland_mansion/small_wall_corner.nbt | 4 +- .../woodland_mansion/wall_corner.nbt | 4 +- .../structure/woodland_mansion/wall_flat.nbt | 4 +- .../woodland_mansion/wall_window.nbt | 4 +- data/minecraft/tags/block/bee_attractive.json | 31 + .../tags/block/ceiling_hanging_signs.json | 1 + .../block/combination_step_sound_blocks.json | 4 +- data/minecraft/tags/block/dirt.json | 1 + data/minecraft/tags/block/fence_gates.json | 1 + data/minecraft/tags/block/flower_pots.json | 3 + data/minecraft/tags/block/flowers.json | 6 +- data/minecraft/tags/block/leaves.json | 1 + data/minecraft/tags/block/logs_that_burn.json | 1 + data/minecraft/tags/block/mineable/axe.json | 3 +- data/minecraft/tags/block/mineable/hoe.json | 3 + .../tags/block/mineable/pickaxe.json | 7 +- .../tags/block/needs_stone_tool.json | 10 +- .../block/overworld_carver_replaceables.json | 2 +- .../tags/block/overworld_natural_logs.json | 1 + .../tags/block/pale_oak_logs.json | 0 data/minecraft/tags/block/planks.json | 1 + data/minecraft/tags/block/replaceable.json | 1 + .../tags/block/replaceable_by_trees.json | 2 + data/minecraft/tags/block/saplings.json | 1 + data/minecraft/tags/block/slabs.json | 3 +- data/minecraft/tags/block/small_flowers.json | 4 +- .../tags/block/sniffer_diggable_block.json | 1 + data/minecraft/tags/block/stairs.json | 3 +- data/minecraft/tags/block/standing_signs.json | 1 + .../minecraft/tags/block/sword_efficient.json | 2 - data/minecraft/tags/block/tall_flowers.json | 9 - .../tags/block/wall_hanging_signs.json | 1 + data/minecraft/tags/block/wall_signs.json | 1 + data/minecraft/tags/block/walls.json | 3 +- data/minecraft/tags/block/wooden_buttons.json | 1 + data/minecraft/tags/block/wooden_doors.json | 1 + data/minecraft/tags/block/wooden_fences.json | 1 + .../tags/block/wooden_pressure_plates.json | 1 + data/minecraft/tags/block/wooden_slabs.json | 1 + data/minecraft/tags/block/wooden_stairs.json | 1 + .../tags/block/wooden_trapdoors.json | 1 + data/minecraft/tags/entity_type/boat.json | 1 + data/minecraft/tags/item/bee_food.json | 28 +- data/minecraft/tags/item/boats.json | 1 + data/minecraft/tags/item/chest_boats.json | 1 + data/minecraft/tags/item/dirt.json | 1 + .../tags/item/drowned_preferred_weapons.json | 5 + data/minecraft/tags/item/fence_gates.json | 1 + data/minecraft/tags/item/flowers.json | 13 - data/minecraft/tags/item/hanging_signs.json | 1 + data/minecraft/tags/item/leaves.json | 1 + data/minecraft/tags/item/logs_that_burn.json | 1 + .../tags/item/pale_oak_logs.json | 0 .../tags/item/piglin_preferred_weapons.json | 5 + .../tags/item/pillager_preferred_weapons.json | 5 + data/minecraft/tags/item/planks.json | 1 + data/minecraft/tags/item/saplings.json | 1 + data/minecraft/tags/item/signs.json | 1 + .../tags/item/skeleton_preferred_weapons.json | 5 + data/minecraft/tags/item/slabs.json | 3 +- data/minecraft/tags/item/small_flowers.json | 4 +- data/minecraft/tags/item/stairs.json | 3 +- data/minecraft/tags/item/tall_flowers.json | 9 - data/minecraft/tags/item/trim_materials.json | 13 +- data/minecraft/tags/item/trim_templates.json | 22 - data/minecraft/tags/item/walls.json | 3 +- .../wither_skeleton_disliked_weapons.json | 6 + data/minecraft/tags/item/wooden_buttons.json | 1 + data/minecraft/tags/item/wooden_doors.json | 1 + data/minecraft/tags/item/wooden_fences.json | 1 + .../tags/item/wooden_pressure_plates.json | 1 + data/minecraft/tags/item/wooden_slabs.json | 1 + data/minecraft/tags/item/wooden_stairs.json | 1 + .../minecraft/tags/item/wooden_trapdoors.json | 1 + .../biome/has_structure/trial_chambers.json | 1 + .../tags/worldgen/biome/is_forest.json | 1 + .../tags/worldgen/biome/is_overworld.json | 1 + .../worldgen/biome/stronghold_biased_to.json | 1 + data/minecraft/trim_material/amethyst.json | 3 +- data/minecraft/trim_material/copper.json | 3 +- data/minecraft/trim_material/diamond.json | 3 +- data/minecraft/trim_material/emerald.json | 3 +- data/minecraft/trim_material/gold.json | 3 +- data/minecraft/trim_material/iron.json | 3 +- data/minecraft/trim_material/lapis.json | 3 +- data/minecraft/trim_material/netherite.json | 3 +- data/minecraft/trim_material/quartz.json | 3 +- data/minecraft/trim_material/redstone.json | 3 +- data/minecraft/trim_material/resin.json | 8 + data/minecraft/worldgen/biome/badlands.json | 18 +- .../worldgen/biome/bamboo_jungle.json | 18 +- .../worldgen/biome/basalt_deltas.json | 18 +- data/minecraft/worldgen/biome/beach.json | 1 + .../worldgen/biome/birch_forest.json | 18 +- .../worldgen/biome/cherry_grove.json | 18 +- data/minecraft/worldgen/biome/cold_ocean.json | 1 + .../worldgen/biome/crimson_forest.json | 18 +- .../minecraft/worldgen/biome/dark_forest.json | 18 +- .../worldgen/biome/deep_cold_ocean.json | 1 + data/minecraft/worldgen/biome/deep_dark.json | 18 +- .../worldgen/biome/deep_frozen_ocean.json | 1 + .../worldgen/biome/deep_lukewarm_ocean.json | 1 + data/minecraft/worldgen/biome/deep_ocean.json | 1 + data/minecraft/worldgen/biome/desert.json | 18 +- .../worldgen/biome/dripstone_caves.json | 18 +- .../minecraft/worldgen/biome/end_barrens.json | 1 + .../worldgen/biome/end_highlands.json | 1 + .../worldgen/biome/end_midlands.json | 1 + .../worldgen/biome/eroded_badlands.json | 18 +- .../worldgen/biome/flower_forest.json | 18 +- data/minecraft/worldgen/biome/forest.json | 18 +- .../worldgen/biome/frozen_ocean.json | 1 + .../worldgen/biome/frozen_peaks.json | 18 +- .../worldgen/biome/frozen_river.json | 1 + data/minecraft/worldgen/biome/grove.json | 18 +- data/minecraft/worldgen/biome/ice_spikes.json | 1 + .../worldgen/biome/jagged_peaks.json | 18 +- data/minecraft/worldgen/biome/jungle.json | 18 +- .../worldgen/biome/lukewarm_ocean.json | 1 + data/minecraft/worldgen/biome/lush_caves.json | 18 +- .../worldgen/biome/mangrove_swamp.json | 18 +- data/minecraft/worldgen/biome/meadow.json | 18 +- .../worldgen/biome/mushroom_fields.json | 1 + .../worldgen/biome/nether_wastes.json | 18 +- data/minecraft/worldgen/biome/ocean.json | 1 + .../biome/old_growth_birch_forest.json | 18 +- .../worldgen/biome/old_growth_pine_taiga.json | 18 +- .../biome/old_growth_spruce_taiga.json | 18 +- .../worldgen/biome/pale_garden.json | 11 +- data/minecraft/worldgen/biome/plains.json | 1 + data/minecraft/worldgen/biome/river.json | 1 + data/minecraft/worldgen/biome/savanna.json | 1 + .../worldgen/biome/savanna_plateau.json | 1 + .../worldgen/biome/small_end_islands.json | 1 + .../minecraft/worldgen/biome/snowy_beach.json | 1 + .../worldgen/biome/snowy_plains.json | 1 + .../worldgen/biome/snowy_slopes.json | 18 +- .../minecraft/worldgen/biome/snowy_taiga.json | 1 + .../worldgen/biome/soul_sand_valley.json | 18 +- .../worldgen/biome/sparse_jungle.json | 18 +- .../minecraft/worldgen/biome/stony_peaks.json | 18 +- .../minecraft/worldgen/biome/stony_shore.json | 1 + .../worldgen/biome/sunflower_plains.json | 1 + data/minecraft/worldgen/biome/swamp.json | 18 +- data/minecraft/worldgen/biome/taiga.json | 1 + data/minecraft/worldgen/biome/the_end.json | 1 + data/minecraft/worldgen/biome/the_void.json | 1 + data/minecraft/worldgen/biome/warm_ocean.json | 1 + .../worldgen/biome/warped_forest.json | 18 +- .../worldgen/biome/windswept_forest.json | 1 + .../biome/windswept_gravelly_hills.json | 1 + .../worldgen/biome/windswept_hills.json | 1 + .../worldgen/biome/windswept_savanna.json | 1 + .../worldgen/biome/wooded_badlands.json | 18 +- .../flower_pale_garden.json | 31 + .../pale_forest_flowers.json | 31 + .../pale_garden_vegetation.json | 4 +- .../configured_feature/pale_moss_patch.json | 27 + .../pale_moss_vegetation.json | 2 +- .../configured_feature/pale_oak_bonemeal.json | 53 + .../placed_feature/flower_pale_garden.json | 19 + .../placed_feature/pale_garden_flowers.json | 19 + .../placed_feature/pale_moss_patch.json | 19 + net/minecraft/DetectedVersion.java | 8 +- net/minecraft/SharedConstants.java | 16 +- net/minecraft/SuppressForbidden.java | 12 + net/minecraft/Util.java | 6 +- .../ItemAttributeModifiersPredicate.java | 27 +- .../critereon/ItemBundlePredicate.java | 4 +- .../critereon/ItemContainerPredicate.java | 4 +- .../critereon/ItemDamagePredicate.java | 15 +- .../ItemFireworkExplosionPredicate.java | 10 +- .../critereon/ItemFireworksPredicate.java | 11 +- .../ItemJukeboxPlayablePredicate.java | 4 +- .../critereon/ItemPotionsPredicate.java | 4 +- .../critereon/ItemTrimPredicate.java | 6 +- .../critereon/ItemWritableBookPredicate.java | 4 +- .../critereon/ItemWrittenBookPredicate.java | 17 +- net/minecraft/client/ClientBootstrap.java | 27 + net/minecraft/client/KeyMapping.java | 34 +- net/minecraft/client/Minecraft.java | 226 +- net/minecraft/client/OptionInstance.java | 34 +- .../client/PeriodicNotificationManager.java | 9 +- net/minecraft/client/ToggleKeyMapping.java | 4 +- .../definitions/CreakingAnimation.java | 461 +- .../client/color/block/BlockColors.java | 9 +- net/minecraft/client/color/item/Constant.java | 34 + .../color/item/CustomModelDataSource.java | 43 + net/minecraft/client/color/item/Dye.java | 29 + net/minecraft/client/color/item/Firework.java | 56 + .../client/color/item/GrassColorSource.java | 37 + .../client/color/item/ItemColor.java | 10 - .../client/color/item/ItemColors.java | 116 - .../client/color/item/ItemTintSource.java | 16 + .../client/color/item/ItemTintSources.java | 25 + net/minecraft/client/color/item/MapColor.java | 36 + net/minecraft/client/color/item/Potion.java | 36 + .../client/color/item/TeamColor.java | 41 + net/minecraft/client/data/Main.java | 54 + .../data/models/BlockModelGenerators.java | 5520 +++++++++++++++++ .../data/models/EquipmentAssetProvider.java | 107 + .../data/models/ItemModelGenerators.java | 834 +++ .../client/data/models/ItemModelOutput.java | 13 + .../client/data/models/ModelProvider.java | 165 + .../blockstates/BlockStateGenerator.java | 12 + .../data/models/blockstates/Condition.java | 24 +- .../blockstates/MultiPartGenerator.java | 13 +- .../blockstates/MultiVariantGenerator.java | 9 +- .../models/blockstates/PropertyDispatch.java | 419 ++ .../data/models/blockstates/Selector.java | 52 + .../data/models/blockstates/Variant.java | 52 + .../models/blockstates/VariantProperties.java | 6 +- .../models/blockstates/VariantProperty.java | 47 + .../data/models/blockstates/package-info.java | 11 + .../data/models/model/DelegatedModel.java | 22 + .../data/models/model/ItemModelUtils.java | 135 + .../data/models/model/ModelInstance.java | 10 + .../data/models/model/ModelLocationUtils.java | 21 +- .../data/models/model/ModelTemplate.java | 70 + .../data/models/model/ModelTemplates.java | 30 +- .../data/models/model/TextureMapping.java | 416 ++ .../data/models/model/TextureSlot.java | 6 +- .../data/models/model/TexturedModel.java | 93 + .../data/models/model/package-info.java | 11 + .../client/data/models/package-info.java | 11 + net/minecraft/client/data/package-info.java | 11 + net/minecraft/client/gui/Font.java | 63 +- net/minecraft/client/gui/Gui.java | 11 +- net/minecraft/client/gui/GuiGraphics.java | 73 +- .../client/gui/GuiSpriteManager.java | 4 +- .../client/gui/components/AbstractButton.java | 4 +- .../components/AbstractContainerWidget.java | 7 +- .../gui/components/AbstractScrollArea.java | 113 + .../gui/components/AbstractScrollWidget.java | 184 - .../gui/components/AbstractSelectionList.java | 199 +- .../gui/components/AbstractSliderButton.java | 4 +- .../components/AbstractTextAreaWidget.java | 112 + .../client/gui/components/AbstractWidget.java | 25 +- .../client/gui/components/ChatComponent.java | 12 +- .../ContainerObjectSelectionList.java | 18 +- .../FittingMultiLineTextWidget.java | 4 +- .../gui/components/LoadingDotsWidget.java | 4 +- .../gui/components/MultiLineEditBox.java | 52 +- .../gui/components/MultiLineTextWidget.java | 4 +- .../gui/components/ObjectSelectionList.java | 11 +- .../gui/components/PlayerTabOverlay.java | 31 +- .../client/gui/components/StringWidget.java | 8 +- .../events/ContainerEventHandler.java | 24 +- .../components/events/GuiEventListener.java | 5 + .../gui/components/tabs/TabNavigationBar.java | 17 +- .../gui/components/toasts/SystemToast.java | 41 +- .../gui/components/toasts/TutorialToast.java | 68 +- .../client/gui/font/FontTexture.java | 6 +- .../client/gui/font/glyphs/BakedGlyph.java | 83 +- .../gui/font/providers/BitmapProvider.java | 41 +- .../client/gui/layouts/FrameLayout.java | 9 +- .../client/gui/layouts/LayoutSettings.java | 50 +- .../client/gui/narration/NarratableEntry.java | 6 + .../gui/navigation/ScreenRectangle.java | 14 + .../client/gui/screens/ConnectScreen.java | 7 +- .../gui/screens/CreateFlatWorldScreen.java | 89 +- .../client/gui/screens/DeathScreen.java | 4 +- .../client/gui/screens/EditServerScreen.java | 5 +- .../client/gui/screens/LoadingOverlay.java | 60 +- .../gui/screens/PresetFlatWorldScreen.java | 7 +- .../gui/screens/RecoverWorldDataScreen.java | 10 +- net/minecraft/client/gui/screens/Screen.java | 25 +- .../client/gui/screens/TitleScreen.java | 21 +- .../gui/screens/achievement/StatsScreen.java | 21 +- .../advancements/AdvancementWidget.java | 91 +- .../advancements/AdvancementsScreen.java | 3 +- .../screens/debug/GameModeSwitcherScreen.java | 4 +- .../inventory/AbstractContainerScreen.java | 9 +- .../inventory/AbstractSignEditScreen.java | 4 +- .../gui/screens/inventory/BookEditScreen.java | 2 +- .../gui/screens/inventory/BookViewScreen.java | 5 +- .../CreativeModeInventoryScreen.java | 15 +- .../inventory/CyclingSlotBackground.java | 6 +- .../screens/inventory/EnchantmentScreen.java | 4 +- .../inventory/HorseInventoryScreen.java | 17 +- .../gui/screens/inventory/LoomScreen.java | 16 +- .../gui/screens/inventory/MerchantScreen.java | 3 +- .../gui/screens/inventory/SmithingScreen.java | 4 +- .../screens/inventory/StonecutterScreen.java | 11 +- .../multiplayer/JoinMultiplayerScreen.java | 9 +- .../multiplayer/ServerSelectionList.java | 72 +- .../screens/options/LanguageSelectScreen.java | 77 +- .../options/controls/KeyBindsList.java | 4 +- .../packs/TransferableSelectionList.java | 7 +- .../recipebook/OverlayRecipeComponent.java | 2 +- .../recipebook/RecipeBookComponent.java | 8 +- .../screens/recipebook/RecipeBookPage.java | 2 +- .../gui/screens/recipebook/RecipeButton.java | 25 +- .../screens/recipebook/RecipeCollection.java | 26 +- .../reporting/ChatSelectionScreen.java | 38 +- .../ReportReasonSelectionScreen.java | 6 +- .../gui/screens/social/PlayerEntry.java | 4 +- .../social/SocialInteractionsPlayerList.java | 4 +- .../social/SocialInteractionsScreen.java | 6 +- .../telemetry/TelemetryEventWidget.java | 14 +- .../worldselection/CreateWorldScreen.java | 41 +- .../worldselection/EditGameRulesScreen.java | 23 +- .../worldselection/EditWorldScreen.java | 9 +- .../worldselection/ExperimentsScreen.java | 114 +- .../worldselection/OptimizeWorldScreen.java | 9 +- .../screens/worldselection/SwitchGrid.java | 15 +- .../worldselection/WorldSelectionList.java | 28 +- net/minecraft/client/main/Main.java | 14 +- .../client/model/AbstractBoatModel.java | 16 +- .../client/model/AbstractEquineModel.java | 36 +- .../client/model/AbstractPiglinModel.java | 14 +- net/minecraft/client/model/AllayModel.java | 26 +- .../client/model/ArmadilloModel.java | 18 +- .../client/model/ArmorStandArmorModel.java | 44 +- .../client/model/ArmorStandModel.java | 42 +- net/minecraft/client/model/ArrowModel.java | 8 +- net/minecraft/client/model/AxolotlModel.java | 22 +- .../client/model/BannerFlagModel.java | 37 + net/minecraft/client/model/BannerModel.java | 37 + net/minecraft/client/model/BatModel.java | 12 +- net/minecraft/client/model/BeeModel.java | 18 +- net/minecraft/client/model/BlazeModel.java | 20 +- net/minecraft/client/model/BreezeModel.java | 16 +- net/minecraft/client/model/CamelModel.java | 20 +- net/minecraft/client/model/ChickenModel.java | 32 +- net/minecraft/client/model/CodModel.java | 8 +- net/minecraft/client/model/CreakingModel.java | 27 +- net/minecraft/client/model/CreeperModel.java | 12 +- net/minecraft/client/model/DolphinModel.java | 16 +- net/minecraft/client/model/DonkeyModel.java | 23 +- net/minecraft/client/model/DrownedModel.java | 18 +- net/minecraft/client/model/ElytraModel.java | 12 +- .../client/model/EndCrystalModel.java | 10 +- net/minecraft/client/model/EntityModel.java | 4 +- .../client/model/EvokerFangsModel.java | 6 +- net/minecraft/client/model/FelineModel.java | 75 +- net/minecraft/client/model/FoxModel.java | 40 +- net/minecraft/client/model/FrogModel.java | 20 +- net/minecraft/client/model/GhastModel.java | 6 +- net/minecraft/client/model/GoatModel.java | 12 +- net/minecraft/client/model/GuardianModel.java | 24 +- net/minecraft/client/model/HoglinModel.java | 14 +- .../client/model/HumanoidArmorModel.java | 4 +- net/minecraft/client/model/HumanoidModel.java | 68 +- net/minecraft/client/model/IllagerModel.java | 32 +- .../client/model/IronGolemModel.java | 16 +- .../client/model/LavaSlimeModel.java | 23 +- net/minecraft/client/model/LlamaModel.java | 16 +- net/minecraft/client/model/PandaModel.java | 64 +- net/minecraft/client/model/ParrotModel.java | 35 +- net/minecraft/client/model/PhantomModel.java | 6 +- net/minecraft/client/model/PiglinModel.java | 32 +- net/minecraft/client/model/PlayerModel.java | 23 +- .../client/model/PolarBearModel.java | 10 +- .../client/model/QuadrupedModel.java | 12 +- net/minecraft/client/model/RabbitModel.java | 77 +- net/minecraft/client/model/RavagerModel.java | 20 +- net/minecraft/client/model/SalmonModel.java | 8 +- net/minecraft/client/model/SheepFurModel.java | 8 +- net/minecraft/client/model/SheepModel.java | 8 +- .../client/model/ShulkerBulletModel.java | 8 +- net/minecraft/client/model/ShulkerModel.java | 14 +- net/minecraft/client/model/SkeletonModel.java | 23 +- net/minecraft/client/model/SnifferModel.java | 26 +- .../client/model/SnowGolemModel.java | 10 +- net/minecraft/client/model/SpiderModel.java | 12 +- .../client/model/SpinAttackEffectModel.java | 12 +- net/minecraft/client/model/SquidModel.java | 6 +- net/minecraft/client/model/StriderModel.java | 28 +- net/minecraft/client/model/TadpoleModel.java | 8 +- .../client/model/TropicalFishModelA.java | 8 +- .../client/model/TropicalFishModelB.java | 8 +- net/minecraft/client/model/TurtleModel.java | 16 +- net/minecraft/client/model/VexModel.java | 16 +- .../client/model/VillagerHeadModel.java | 9 - .../client/model/VillagerLikeModel.java | 12 + net/minecraft/client/model/VillagerModel.java | 37 +- net/minecraft/client/model/WardenModel.java | 24 +- net/minecraft/client/model/WitchModel.java | 39 +- .../client/model/WitherBossModel.java | 14 +- net/minecraft/client/model/WolfModel.java | 28 +- .../client/model/ZombieVillagerModel.java | 29 +- .../client/model/dragon/EnderDragonModel.java | 26 +- .../client/model/geom/EntityModelSet.java | 16 +- .../client/model/geom/LayerDefinitions.java | 77 +- .../client/model/geom/ModelLayers.java | 13 +- .../model/geom/builders/PartDefinition.java | 15 +- .../client/multiplayer/ClientChunkCache.java | 26 +- .../client/multiplayer/ClientLevel.java | 78 +- .../multiplayer/ClientPacketListener.java | 109 +- .../multiplayer/ClientSuggestionProvider.java | 4 +- .../multiplayer/MultiPlayerGameMode.java | 17 +- .../client/multiplayer/PlayerInfo.java | 14 +- .../multiplayer/chat/report/ChatReport.java | 28 +- .../chat/report/ReportEnvironment.java | 2 +- .../client/particle/BreakingItemParticle.java | 46 +- .../particle/BubbleColumnUpParticle.java | 10 +- .../client/particle/BubbleParticle.java | 10 +- .../client/particle/CherryParticle.java | 69 - .../client/particle/CritParticle.java | 18 +- .../client/particle/DripParticle.java | 4 +- .../particle/DustColorTransitionParticle.java | 12 +- .../client/particle/DustPlumeParticle.java | 4 +- .../particle/FallingLeavesParticle.java | 129 + .../client/particle/FireworkParticles.java | 17 +- .../client/particle/FlameParticle.java | 8 +- .../particle/FlyStraightTowardsParticle.java | 6 +- .../particle/FlyTowardsPositionParticle.java | 27 +- .../client/particle/GlowParticle.java | 60 +- .../client/particle/GustParticle.java | 8 +- .../client/particle/GustSeedParticle.java | 4 +- .../client/particle/HeartParticle.java | 4 +- .../particle/HugeExplosionSeedParticle.java | 4 +- .../client/particle/ItemPickupParticle.java | 33 +- .../client/particle/LavaParticle.java | 4 +- .../particle/MobAppearanceParticle.java | 17 +- .../client/particle/NoRenderParticle.java | 10 +- net/minecraft/client/particle/Particle.java | 7 +- .../client/particle/ParticleEngine.java | 311 +- .../client/particle/ParticleRenderType.java | 89 +- .../client/particle/PortalParticle.java | 24 +- .../particle/ReversePortalParticle.java | 4 +- .../client/particle/ShriekParticle.java | 12 +- .../client/particle/SingleQuadParticle.java | 16 +- .../client/particle/SnowflakeParticle.java | 4 +- .../client/particle/SonicBoomParticle.java | 10 +- .../client/particle/SoulParticle.java | 4 +- .../client/particle/SpellParticle.java | 8 +- .../client/particle/SpitParticle.java | 4 +- .../client/particle/SquidInkParticle.java | 4 +- .../client/particle/SuspendedParticle.java | 14 +- .../particle/SuspendedTownParticle.java | 16 +- .../client/particle/TextureSheetParticle.java | 8 +- .../client/particle/TrackingEmitter.java | 2 +- .../client/particle/TrailParticle.java | 10 +- .../TrialSpawnerDetectionParticle.java | 4 +- .../particle/VibrationSignalParticle.java | 20 +- .../particle/WaterCurrentDownParticle.java | 4 +- .../client/particle/WaterDropParticle.java | 8 +- .../client/particle/WhiteSmokeParticle.java | 4 +- net/minecraft/client/player/ClientInput.java | 2 +- .../client/player/KeyboardInput.java | 6 +- net/minecraft/client/player/LocalPlayer.java | 113 +- .../BlockEntityWithoutLevelRenderer.java | 174 - .../client/renderer/CloudRenderer.java | 11 +- net/minecraft/client/renderer/CubeMap.java | 26 +- .../client/renderer/FogRenderer.java | 14 +- .../client/renderer/GameRenderer.java | 7 +- .../client/renderer/ItemBlockRenderTypes.java | 5 + .../client/renderer/ItemInHandRenderer.java | 56 +- .../client/renderer/ItemModelShaper.java | 39 - .../client/renderer/LevelEventHandler.java | 11 +- .../client/renderer/LevelRenderer.java | 94 +- .../client/renderer/LightTexture.java | 12 +- net/minecraft/client/renderer/PostChain.java | 52 +- .../client/renderer/PostChainConfig.java | 9 +- .../client/renderer/RenderStateShard.java | 109 +- net/minecraft/client/renderer/RenderType.java | 378 +- .../client/renderer/ScreenEffectRenderer.java | 108 +- .../renderer/SectionOcclusionGraph.java | 13 +- .../client/renderer/ShaderManager.java | 62 +- net/minecraft/client/renderer/Sheets.java | 65 +- .../client/renderer/SkyRenderer.java | 225 +- .../renderer/SpecialBlockModelRenderer.java | 34 + .../renderer/WeatherEffectRenderer.java | 65 +- .../client/renderer/WorldBorderRenderer.java | 27 +- .../renderer/block/BlockRenderDispatcher.java | 32 +- .../renderer/block/model/BakedOverrides.java | 104 - .../renderer/block/model/BlockElement.java | 31 +- .../renderer/block/model/BlockModel.java | 292 +- .../block/model/BlockModelDefinition.java | 33 +- .../renderer/block/model/FaceBakery.java | 36 +- .../block/model/ItemModelGenerator.java | 85 +- .../renderer/block/model/ItemOverride.java | 54 - .../renderer/block/model/ItemTransforms.java | 78 +- .../renderer/block/model/MultiVariant.java | 21 +- .../renderer/block/model/TextureSlots.java | 166 + .../block/model/UnbakedBlockStateModel.java | 8 +- .../client/renderer/block/model/Variant.java | 47 +- .../block/model/multipart/MultiPart.java | 12 +- .../blockentity/AbstractSignRenderer.java | 179 + .../renderer/blockentity/BannerRenderer.java | 119 +- .../renderer/blockentity/BeaconRenderer.java | 32 +- .../renderer/blockentity/BedRenderer.java | 42 +- .../renderer/blockentity/BellRenderer.java | 11 +- .../BlockEntityRenderDispatcher.java | 63 +- .../BlockEntityRendererProvider.java | 8 + .../blockentity/BrightnessCombiner.java | 12 +- .../blockentity/BrushableBlockRenderer.java | 23 +- .../blockentity/CampfireRenderer.java | 23 +- .../renderer/blockentity/ChestRenderer.java | 22 +- .../renderer/blockentity/ConduitRenderer.java | 53 +- .../blockentity/DecoratedPotRenderer.java | 60 +- .../blockentity/EnchantTableRenderer.java | 39 +- .../blockentity/HangingSignRenderer.java | 169 +- .../renderer/blockentity/LecternRenderer.java | 15 +- .../blockentity/PistonHeadRenderer.java | 33 +- .../blockentity/ShulkerBoxRenderer.java | 43 +- .../renderer/blockentity/SignRenderer.java | 176 +- .../blockentity/SkullBlockRenderer.java | 91 +- .../renderer/blockentity/SpawnerRenderer.java | 13 +- .../blockentity/StructureBlockRenderer.java | 113 +- .../blockentity/TheEndGatewayRenderer.java | 3 +- .../blockentity/TheEndPortalRenderer.java | 4 +- .../blockentity/TrialSpawnerRenderer.java | 10 +- .../renderer/blockentity/VaultRenderer.java | 59 +- .../chunk/SectionRenderDispatcher.java | 10 +- .../renderer/entity/AbstractBoatRenderer.java | 42 +- .../entity/AbstractHoglinRenderer.java | 6 +- .../entity/AbstractHorseRenderer.java | 13 +- .../entity/AbstractMinecartRenderer.java | 80 +- .../entity/AbstractSkeletonRenderer.java | 22 +- .../entity/AbstractZombieRenderer.java | 14 +- .../renderer/entity/AgeableMobRenderer.java | 6 +- .../client/renderer/entity/AllayRenderer.java | 4 +- .../renderer/entity/ArmorStandRenderer.java | 66 +- .../client/renderer/entity/ArrowRenderer.java | 24 +- .../renderer/entity/AxolotlRenderer.java | 5 +- .../client/renderer/entity/BoatRenderer.java | 3 +- .../renderer/entity/BreezeRenderer.java | 22 +- .../renderer/entity/CreakingRenderer.java | 14 +- .../renderer/entity/DisplayRenderer.java | 148 +- .../renderer/entity/DolphinRenderer.java | 4 +- .../renderer/entity/DonkeyRenderer.java | 14 +- .../entity/DragonFireballRenderer.java | 5 +- .../renderer/entity/DrownedRenderer.java | 13 +- .../entity/ElderGuardianRenderer.java | 2 +- .../renderer/entity/EndCrystalRenderer.java | 30 +- .../renderer/entity/EnderDragonRenderer.java | 95 +- .../renderer/entity/EndermanRenderer.java | 2 +- .../entity/EntityRenderDispatcher.java | 43 +- .../renderer/entity/EntityRenderer.java | 4 + .../entity/EntityRendererProvider.java | 25 +- .../renderer/entity/EntityRenderers.java | 5 +- .../renderer/entity/EvokerRenderer.java | 2 +- .../entity/ExperienceOrbRenderer.java | 53 +- .../entity/FireworkEntityRenderer.java | 24 +- .../renderer/entity/FishingHookRenderer.java | 75 +- .../client/renderer/entity/FoxRenderer.java | 4 +- .../renderer/entity/GiantMobRenderer.java | 10 +- .../renderer/entity/GlowSquidRenderer.java | 2 +- .../renderer/entity/GuardianRenderer.java | 58 +- .../client/renderer/entity/HorseRenderer.java | 16 +- .../renderer/entity/HumanoidMobRenderer.java | 35 +- .../client/renderer/entity/HuskRenderer.java | 2 +- .../renderer/entity/IllagerRenderer.java | 24 +- .../renderer/entity/IllusionerRenderer.java | 2 +- .../renderer/entity/ItemEntityRenderer.java | 97 +- .../renderer/entity/ItemFrameRenderer.java | 127 +- .../client/renderer/entity/ItemRenderer.java | 234 +- .../entity/LightningBoltRenderer.java | 80 +- .../renderer/entity/LivingEntityRenderer.java | 163 +- .../client/renderer/entity/LlamaRenderer.java | 16 +- .../renderer/entity/MagmaCubeRenderer.java | 22 +- .../client/renderer/entity/MobRenderer.java | 4 +- .../renderer/entity/MushroomCowRenderer.java | 10 +- .../entity/OminousItemSpawnerRenderer.java | 37 +- .../renderer/entity/PaintingRenderer.java | 61 +- .../client/renderer/entity/PandaRenderer.java | 139 +- .../renderer/entity/ParrotRenderer.java | 18 +- .../renderer/entity/PiglinRenderer.java | 20 +- .../renderer/entity/PillagerRenderer.java | 2 +- .../renderer/entity/PufferfishRenderer.java | 5 +- .../entity/ShulkerBulletRenderer.java | 24 +- .../renderer/entity/ShulkerRenderer.java | 30 +- .../client/renderer/entity/SlimeRenderer.java | 6 +- .../renderer/entity/SnowGolemRenderer.java | 23 +- .../renderer/entity/SpiderRenderer.java | 4 +- .../client/renderer/entity/SquidRenderer.java | 24 +- .../renderer/entity/StriderRenderer.java | 15 +- .../renderer/entity/ThrownItemRenderer.java | 24 +- .../renderer/entity/TntMinecartRenderer.java | 12 +- .../renderer/entity/TropicalFishRenderer.java | 34 +- .../renderer/entity/UndeadHorseRenderer.java | 4 +- .../client/renderer/entity/VexRenderer.java | 14 +- .../renderer/entity/VillagerRenderer.java | 17 +- .../renderer/entity/VindicatorRenderer.java | 2 +- .../entity/WanderingTraderRenderer.java | 6 +- .../renderer/entity/WardenRenderer.java | 45 +- .../client/renderer/entity/WitchRenderer.java | 10 +- .../renderer/entity/WitherBossRenderer.java | 24 +- .../renderer/entity/WitherSkullRenderer.java | 20 +- .../entity/ZombifiedPiglinRenderer.java | 8 +- .../entity/layers/BreezeWindLayer.java | 8 +- .../renderer/entity/layers/CapeLayer.java | 39 +- .../entity/layers/CarriedBlockLayer.java | 8 +- .../entity/layers/CatCollarLayer.java | 10 +- .../entity/layers/CreeperPowerLayer.java | 4 +- .../entity/layers/CrossedArmsItemLayer.java | 37 +- .../entity/layers/CustomHeadLayer.java | 49 +- .../entity/layers/Deadmau5EarsLayer.java | 12 +- .../layers/DolphinCarryingItemLayer.java | 33 +- .../entity/layers/DrownedOuterLayer.java | 6 +- .../entity/layers/EnergySwirlLayer.java | 4 +- .../entity/layers/EquipmentLayerRenderer.java | 58 +- .../entity/layers/FoxHeldItemLayer.java | 35 +- .../entity/layers/HorseArmorLayer.java | 21 +- .../entity/layers/HorseMarkingLayer.java | 14 +- .../entity/layers/HumanoidArmorLayer.java | 33 +- .../entity/layers/IronGolemFlowerLayer.java | 8 +- .../entity/layers/ItemInHandLayer.java | 54 +- .../layers/LivingEntityEmissiveLayer.java | 19 +- .../entity/layers/LlamaDecorLayer.java | 28 +- .../layers/MushroomCowMushroomLayer.java | 18 +- .../entity/layers/PandaHoldsItemLayer.java | 33 +- .../entity/layers/ParrotOnShoulderLayer.java | 10 +- .../entity/layers/PlayerItemInHandLayer.java | 39 +- .../renderer/entity/layers/SaddleLayer.java | 12 +- .../entity/layers/SheepWoolLayer.java | 42 +- .../entity/layers/SkeletonClothingLayer.java | 4 +- .../entity/layers/SlimeOuterLayer.java | 14 +- .../entity/layers/SnowGolemHeadLayer.java | 51 +- .../entity/layers/SpinAttackEffectLayer.java | 10 +- .../entity/layers/StuckInBodyLayer.java | 31 +- .../layers/TropicalFishPatternLayer.java | 8 +- .../layers/VillagerProfessionLayer.java | 39 +- .../renderer/entity/layers/WingsLayer.java | 28 +- .../entity/layers/WitchItemLayer.java | 19 +- .../entity/layers/WitherArmorLayer.java | 4 +- .../entity/layers/WolfArmorLayer.java | 22 +- .../entity/player/PlayerRenderer.java | 165 +- .../entity/state/AllayRenderState.java | 2 +- .../entity/state/ArmedEntityRenderState.java | 33 + .../entity/state/AxolotlRenderState.java | 4 +- .../entity/state/CreakingRenderState.java | 7 +- .../entity/state/DolphinRenderState.java | 2 +- .../state/FireworkRocketRenderState.java | 8 +- .../renderer/entity/state/FoxRenderState.java | 2 +- .../state/HoldingEntityRenderState.java | 17 + .../entity/state/HumanoidRenderState.java | 9 +- .../entity/state/IllagerRenderState.java | 2 +- .../entity/state/ItemClusterRenderState.java | 39 + .../state/ItemDisplayEntityRenderState.java | 11 +- .../entity/state/ItemEntityRenderState.java | 8 +- .../entity/state/ItemFrameRenderState.java | 7 +- .../entity/state/LivingEntityRenderState.java | 28 +- .../state/OminousItemSpawnerRenderState.java | 14 - .../entity/state/PandaRenderState.java | 6 +- .../entity/state/PlayerRenderState.java | 13 +- .../entity/state/SkeletonRenderState.java | 1 + .../entity/state/SnowGolemRenderState.java | 9 + .../entity/state/ThrownItemRenderState.java | 8 +- .../renderer/entity/state/VexRenderState.java | 2 +- .../entity/state/VillagerRenderState.java | 2 +- .../entity/state/WitchRenderState.java | 3 +- .../renderer/item/BlockModelWrapper.java | 89 + .../BundleSelectedItemSpecialRenderer.java | 52 + .../item/ClampedItemPropertyFunction.java | 20 - .../client/renderer/item/ClientItem.java | 24 + .../item/CompassItemPropertyFunction.java | 119 - .../client/renderer/item/CompositeModel.java | 64 + .../renderer/item/ConditionalItemModel.java | 69 + .../client/renderer/item/EmptyModel.java | 47 + .../client/renderer/item/ItemModel.java | 43 + .../renderer/item/ItemModelResolver.java | 81 + .../client/renderer/item/ItemModels.java | 25 + .../client/renderer/item/ItemProperties.java | 254 - .../renderer/item/ItemPropertyFunction.java | 14 - .../renderer/item/ItemStackRenderState.java | 182 + .../renderer/item/MissingItemModel.java | 33 + .../renderer/item/RangeSelectItemModel.java | 134 + .../client/renderer/item/SelectItemModel.java | 118 + .../renderer/item/SpecialModelWrapper.java | 73 + .../item/properties/conditional/Broken.java | 25 + .../conditional/BundleHasSelectedItem.java | 26 + .../ConditionalItemModelProperties.java | 29 + .../ConditionalItemModelProperty.java | 17 + .../conditional/CustomModelDataProperty.java | 33 + .../item/properties/conditional/Damaged.java | 25 + .../properties/conditional/ExtendedView.java | 26 + .../conditional/FishingRodCast.java | 33 + .../properties/conditional/HasComponent.java | 35 + .../properties/conditional/IsCarried.java | 26 + .../properties/conditional/IsKeybindDown.java | 35 + .../properties/conditional/IsSelected.java | 26 + .../properties/conditional/IsUsingItem.java | 25 + .../properties/conditional/IsViewEntity.java | 29 + .../properties/conditional/package-info.java | 11 + .../properties/numeric/BundleFullness.java | 25 + .../item/properties/numeric/CompassAngle.java | 33 + .../properties/numeric/CompassAngleState.java | 119 + .../item/properties/numeric/Cooldown.java | 25 + .../item/properties/numeric/Count.java | 31 + .../item/properties/numeric/CrossbowPull.java | 32 + .../numeric/CustomModelDataProperty.java | 39 + .../item/properties/numeric/Damage.java | 31 + .../numeric/NeedleDirectionHelper.java | 99 + .../RangeSelectItemModelProperties.java | 27 + .../numeric/RangeSelectItemModelProperty.java | 16 + .../item/properties/numeric/Time.java | 68 + .../item/properties/numeric/UseCycle.java | 28 + .../item/properties/numeric/UseDuration.java | 36 + .../item/properties/numeric/package-info.java | 11 + .../item/properties/package-info.java | 11 + .../item/properties/select/Charge.java | 37 + .../properties/select/ContextDimension.java | 32 + .../properties/select/ContextEntityType.java | 32 + .../select/CustomModelDataProperty.java | 36 + .../properties/select/DisplayContext.java | 28 + .../properties/select/ItemBlockState.java | 34 + .../item/properties/select/LocalTime.java | 95 + .../item/properties/select/MainHand.java | 30 + .../select/SelectItemModelProperties.java | 25 + .../select/SelectItemModelProperty.java | 65 + .../select/TrimMaterialProperty.java | 35 + .../item/properties/select/package-info.java | 11 + .../special/BannerSpecialRenderer.java | 66 + .../renderer/special/BedSpecialRenderer.java | 55 + .../special/ChestSpecialRenderer.java | 71 + .../special/ConduitSpecialRenderer.java | 49 + .../special/DecoratedPotSpecialRenderer.java | 56 + .../special/HangingSignSpecialRenderer.java | 62 + .../special/NoDataSpecialModelRenderer.java | 25 + .../special/ShieldSpecialRenderer.java | 94 + .../special/ShulkerBoxSpecialRenderer.java | 69 + .../special/SkullSpecialRenderer.java | 87 + .../special/SpecialModelRenderer.java | 35 + .../special/SpecialModelRenderers.java | 192 + .../special/StandingSignSpecialRenderer.java | 62 + .../special/TridentSpecialRenderer.java | 48 + .../client/renderer/special/package-info.java | 11 + .../renderer/texture/AbstractTexture.java | 68 +- .../renderer/texture/DynamicTexture.java | 5 - .../client/renderer/texture/HttpTexture.java | 215 - .../texture/MissingTextureAtlasSprite.java | 30 +- .../renderer/texture/OverlayTexture.java | 4 +- .../renderer/texture/PreloadedTexture.java | 47 - .../renderer/texture/ReloadableTexture.java | 44 + .../renderer/texture/SimpleTexture.java | 132 +- .../texture/SkinTextureDownloader.java | 176 + .../renderer/texture/SpriteContents.java | 48 +- .../client/renderer/texture/SpriteLoader.java | 6 +- .../client/renderer/texture/TextureAtlas.java | 16 +- .../renderer/texture/TextureContents.java | 59 + .../renderer/texture/TextureManager.java | 193 +- .../texture/atlas/SpriteResourceLoader.java | 39 +- .../client/resources/MapTextureManager.java | 3 +- .../client/resources/SkinManager.java | 46 +- .../client/resources/TextureAtlasHolder.java | 18 +- .../metadata/animation/AnimationFrame.java | 37 +- .../animation/AnimationMetadataSection.java | 74 +- .../AnimationMetadataSectionSerializer.java | 78 - .../animation/VillagerMetaDataSection.java | 37 +- .../VillagerMetadataSectionSerializer.java | 19 - .../metadata/gui/GuiMetadataSection.java | 2 +- .../language/LanguageMetadataSection.java | 2 +- .../texture/TextureMetadataSection.java | 29 +- .../TextureMetadataSectionSerializer.java | 21 - .../client/resources/model/BakedModel.java | 7 - .../model/BlockStateModelLoader.java | 142 +- .../client/resources/model/BuiltInModel.java | 61 - .../resources/model/ClientItemInfoLoader.java | 98 + .../resources/model/DelegateBakedModel.java | 5 - .../model/EquipmentAssetManager.java | 36 + .../resources/model/EquipmentClientInfo.java | 132 + .../resources/model/EquipmentModelSet.java | 28 - .../client/resources/model/ItemModel.java | 55 - .../resources/model/MissingBlockModel.java | 24 +- .../client/resources/model/ModelBaker.java | 6 + .../client/resources/model/ModelBakery.java | 118 +- .../resources/model/ModelDebugName.java | 10 + .../resources/model/ModelDiscovery.java | 86 +- .../resources/model/ModelGroupCollector.java | 4 +- .../client/resources/model/ModelManager.java | 274 +- .../model/ModelResourceLocation.java | 6 - .../resources/model/ResolvableModel.java | 15 + .../resources/model/SimpleBakedModel.java | 73 +- .../client/resources/model/SpecialModels.java | 27 - .../client/resources/model/SpriteGetter.java | 12 + .../client/resources/model/UnbakedModel.java | 139 +- .../server/DownloadedPackSource.java | 46 +- .../client/server/IntegratedServer.java | 4 +- net/minecraft/client/sounds/MusicInfo.java | 18 + net/minecraft/client/sounds/MusicManager.java | 80 +- net/minecraft/client/sounds/SoundEngine.java | 9 + net/minecraft/client/sounds/SoundManager.java | 7 +- .../tutorial/CraftPlanksTutorialStep.java | 8 +- .../FindTreeTutorialStepInstance.java | 8 +- .../MovementTutorialStepInstance.java | 10 +- .../tutorial/OpenInventoryTutorialStep.java | 6 +- .../PunchTreeTutorialStepInstance.java | 8 +- .../commands/CommandSourceStack.java | 10 +- .../commands/SharedSuggestionProvider.java | 18 +- .../commands/arguments/EntityArgument.java | 42 +- .../commands/arguments/ResourceArgument.java | 61 +- .../arguments/ResourceKeyArgument.java | 21 +- .../arguments/ResourceOrTagArgument.java | 50 +- .../arguments/ResourceOrTagKeyArgument.java | 34 +- .../arguments/ScoreHolderArgument.java | 16 +- .../commands/arguments/TimeArgument.java | 38 +- .../commands/arguments/blocks/BlockInput.java | 17 + .../arguments/item/ItemPredicateArgument.java | 76 +- .../execution/CustomCommandExecutor.java | 8 +- .../execution/tasks/CallFunction.java | 9 +- .../execution/tasks/ExecuteCommand.java | 6 +- .../SingletonArgumentInfo.java | 10 +- .../brigadier/DoubleArgumentInfo.java | 30 +- .../brigadier/FloatArgumentInfo.java | 30 +- .../brigadier/IntegerArgumentInfo.java | 30 +- .../brigadier/LongArgumentInfo.java | 30 +- .../brigadier/StringArgumentSerializer.java | 20 +- net/minecraft/core/BlockPos.java | 139 +- net/minecraft/core/MappedRegistry.java | 11 +- net/minecraft/core/Registry.java | 20 +- net/minecraft/core/RegistryAccess.java | 4 +- net/minecraft/core/RegistrySetBuilder.java | 74 +- net/minecraft/core/SectionPos.java | 8 +- .../core/cauldron/CauldronInteraction.java | 6 +- .../core/component/DataComponentPatch.java | 42 +- .../component/PatchedDataComponentMap.java | 8 + .../core/component/TypedDataComponent.java | 10 +- .../DefaultDispenseItemBehavior.java | 3 +- .../core/dispenser/DispenseItemBehavior.java | 2 +- .../core/particles/ParticleTypes.java | 5 +- .../particles/TargetColorParticleOption.java | 27 - .../core/particles/TrailParticleOption.java | 34 + net/minecraft/data/BlockFamilies.java | 6 + net/minecraft/data/DataProvider.java | 27 +- net/minecraft/data/HashCache.java | 4 +- net/minecraft/data/Main.java | 184 +- net/minecraft/data/PackOutput.java | 4 + .../advancements/AdvancementProvider.java | 9 +- .../packs/VanillaAdventureAdvancements.java | 299 +- .../packs/WinterDropAdvancementProvider.java | 13 - .../WinterDropAdventureAdvancements.java | 28 - .../data/info/BiomeParametersDumpReport.java | 9 +- net/minecraft/data/info/BlockListReport.java | 9 +- net/minecraft/data/info/CommandsReport.java | 9 +- .../data/info/DatapackStructureReport.java | 3 +- net/minecraft/data/info/ItemListReport.java | 9 +- net/minecraft/data/info/PacketReport.java | 3 +- .../data/info/RegistryDumpReport.java | 3 +- .../data/loot/BlockLootSubProvider.java | 159 +- .../data/loot/LootTableProvider.java | 21 +- .../data/loot/packs/VanillaBlockLoot.java | 129 +- .../data/loot/packs/VanillaChestLoot.java | 53 +- .../data/loot/packs/VanillaEntityLoot.java | 40 +- .../data/loot/packs/WinterDropBlockLoot.java | 40 - .../packs/WinterDropLootTableProvider.java | 17 - .../data/metadata/PackMetadataGenerator.java | 3 +- .../data/models/BlockModelGenerators.java | 5065 --------------- .../data/models/EquipmentModelProvider.java | 37 - .../data/models/ItemModelGenerators.java | 486 -- net/minecraft/data/models/ModelProvider.java | 97 - .../blockstates/BlockStateGenerator.java | 9 - .../models/blockstates/PropertyDispatch.java | 422 -- .../data/models/blockstates/Selector.java | 49 - .../data/models/blockstates/Variant.java | 49 - .../models/blockstates/VariantProperty.java | 43 - .../data/models/blockstates/package-info.java | 8 - .../data/models/model/DelegatedModel.java | 20 - .../data/models/model/ModelTemplate.java | 83 - .../data/models/model/TextureMapping.java | 407 -- .../data/models/model/TexturedModel.java | 92 - .../data/models/model/package-info.java | 8 - net/minecraft/data/models/package-info.java | 8 - .../data/recipes/RecipeProvider.java | 28 +- .../data/recipes/ShapedRecipeBuilder.java | 11 +- .../data/recipes/ShapelessRecipeBuilder.java | 11 +- .../recipes/SimpleCookingRecipeBuilder.java | 11 +- .../data/recipes/SingleItemRecipeBuilder.java | 11 +- .../data/recipes/TransmuteRecipeBuilder.java | 11 +- .../recipes/packs/VanillaRecipeProvider.java | 37 +- .../packs/WinterDropRecipeProvider.java | 46 - .../RegistriesDatapackGenerator.java | 11 +- .../data/registries/WinterDropRegistries.java | 26 - .../data/structures/StructureUpdater.java | 6 +- .../data/tags/BiomeTagsProvider.java | 16 +- .../data/tags/EntityTypeTagsProvider.java | 7 +- .../data/tags/FluidTagsProvider.java | 6 +- .../tags/IntrinsicHolderTagsProvider.java | 17 +- net/minecraft/data/tags/ItemTagsProvider.java | 8 +- net/minecraft/data/tags/TagsProvider.java | 20 +- .../data/tags/VanillaBlockTagsProvider.java | 144 +- .../data/tags/VanillaItemTagsProvider.java | 55 +- .../tags/WinterDropBiomeTagsProvider.java | 25 - .../tags/WinterDropBlockTagsProvider.java | 45 - .../WinterDropEntityTypeTagsProvider.java | 19 - .../data/tags/WinterDropItemTagsProvider.java | 43 - .../data/worldgen/WinterDropBiomes.java | 28 - .../data/worldgen/biome/BiomeData.java | 1 + .../data/worldgen/biome/OverworldBiomes.java | 184 +- .../data/worldgen/features/CaveFeatures.java | 10 +- .../data/worldgen/features/TreeFeatures.java | 15 + .../worldgen/features/VegetationFeatures.java | 44 +- .../worldgen/placement/PlacementUtils.java | 11 +- .../placement/VegetationPlacements.java | 143 +- .../gametest/framework/GameTestHelper.java | 8 +- .../gametest/framework/GameTestServer.java | 25 +- net/minecraft/nbt/ByteArrayTag.java | 28 +- net/minecraft/nbt/ByteTag.java | 15 +- net/minecraft/nbt/CompoundTag.java | 40 +- net/minecraft/nbt/DoubleTag.java | 15 +- net/minecraft/nbt/FloatTag.java | 15 +- net/minecraft/nbt/IntArrayTag.java | 35 +- net/minecraft/nbt/IntTag.java | 15 +- net/minecraft/nbt/ListTag.java | 35 +- net/minecraft/nbt/LongArrayTag.java | 31 +- net/minecraft/nbt/LongTag.java | 15 +- net/minecraft/nbt/ShortTag.java | 15 +- net/minecraft/nbt/StringTag.java | 15 +- net/minecraft/network/Connection.java | 16 +- net/minecraft/network/HiddenByteBuf.java | 54 + net/minecraft/network/LocalFrameDecoder.java | 11 + net/minecraft/network/LocalFrameEncoder.java | 12 + .../network/MonitorFrameDecoder.java | 22 - .../network/MonitoredLocalFrameDecoder.java | 23 + net/minecraft/network/NoOpFrameDecoder.java | 6 - net/minecraft/network/NoOpFrameEncoder.java | 6 - net/minecraft/network/chat/Style.java | 199 +- .../network/codec/IdDispatchCodec.java | 20 +- .../ClientboundCustomPayloadPacket.java | 7 +- .../common/ClientboundDisconnectPacket.java | 7 +- .../common/ClientboundKeepAlivePacket.java | 7 +- .../common/ClientboundPingPacket.java | 7 +- .../ClientboundResourcePackPopPacket.java | 7 +- .../ClientboundResourcePackPushPacket.java | 7 +- .../common/ClientboundStoreCookiePacket.java | 7 +- .../common/ClientboundTransferPacket.java | 7 +- .../common/ClientboundUpdateTagsPacket.java | 17 +- .../ServerboundClientInformationPacket.java | 7 +- .../common/ServerboundKeepAlivePacket.java | 7 +- .../common/ServerboundPongPacket.java | 7 +- .../common/ServerboundResourcePackPacket.java | 7 +- .../common/custom/CustomPacketPayload.java | 10 +- ...lientboundUpdateEnabledFeaturesPacket.java | 7 +- .../ClientboundCookieRequestPacket.java | 7 +- .../ServerboundCookieResponsePacket.java | 7 +- .../game/ClientGamePacketListener.java | 2 +- .../ClientboundBlockChangedAckPacket.java | 7 +- .../ClientboundChunkBatchFinishedPacket.java | 7 +- .../game/ClientboundChunksBiomesPacket.java | 7 +- .../game/ClientboundClearTitlesPacket.java | 7 +- ...lientboundCustomChatCompletionsPacket.java | 7 +- .../game/ClientboundDamageEventPacket.java | 7 +- .../game/ClientboundDebugSamplePacket.java | 7 +- .../game/ClientboundDeleteChatPacket.java | 15 +- .../ClientboundEntityPositionSyncPacket.java | 7 +- .../game/ClientboundHurtAnimationPacket.java | 7 +- .../ClientboundInitializeBorderPacket.java | 7 +- .../ClientboundLevelChunkWithLightPacket.java | 7 +- .../game/ClientboundLevelParticlesPacket.java | 10 +- .../protocol/game/ClientboundLoginPacket.java | 3 - .../game/ClientboundMoveMinecartPacket.java | 7 +- .../game/ClientboundMoveVehiclePacket.java | 66 +- .../game/ClientboundPlayerChatPacket.java | 25 +- .../ClientboundPlayerCombatEndPacket.java | 7 +- .../ClientboundPlayerCombatKillPacket.java | 7 +- .../ClientboundPlayerInfoRemovePacket.java | 7 +- .../ClientboundPlayerInfoUpdatePacket.java | 18 +- .../ClientboundProjectilePowerPacket.java | 7 +- .../game/ClientboundRecipeBookAddPacket.java | 7 +- .../game/ClientboundRemoveEntitiesPacket.java | 7 +- .../game/ClientboundResetScorePacket.java | 7 +- .../game/ClientboundServerDataPacket.java | 7 +- .../ClientboundSetActionBarTextPacket.java | 7 +- .../ClientboundSetBorderCenterPacket.java | 7 +- .../ClientboundSetBorderLerpSizePacket.java | 7 +- .../game/ClientboundSetBorderSizePacket.java | 7 +- ...lientboundSetBorderWarningDelayPacket.java | 7 +- ...ntboundSetBorderWarningDistancePacket.java | 7 +- .../game/ClientboundSetHeldSlotPacket.java | 33 +- ...lientboundSetSimulationDistancePacket.java | 7 +- .../ClientboundSetSubtitleTextPacket.java | 7 +- .../game/ClientboundSetTitleTextPacket.java | 7 +- .../ClientboundSetTitlesAnimationPacket.java | 7 +- .../game/ClientboundTickingStatePacket.java | 7 +- .../game/ClientboundTickingStepPacket.java | 7 +- .../protocol/game/GamePacketTypes.java | 28 +- .../network/protocol/game/GameProtocols.java | 22 +- .../game/ServerGamePacketListener.java | 8 +- .../ServerboundBlockEntityTagQueryPacket.java | 7 +- .../game/ServerboundChatAckPacket.java | 7 +- .../game/ServerboundChatCommandPacket.java | 7 +- .../ServerboundChatCommandSignedPacket.java | 16 +- .../ServerboundChatSessionUpdatePacket.java | 15 +- .../ServerboundChunkBatchReceivedPacket.java | 7 +- ...rboundContainerSlotStateChangedPacket.java | 7 +- ...verboundDebugSampleSubscriptionPacket.java | 7 +- .../game/ServerboundEntityTagQueryPacket.java | 7 +- .../game/ServerboundMoveVehiclePacket.java | 70 +- .../ServerboundPickItemFromBlockPacket.java | 27 + .../ServerboundPickItemFromEntityPacket.java | 26 + .../game/ServerboundPickItemPacket.java | 44 - .../game/ServerboundPlayerLoadedPacket.java | 19 + .../ServerboundSelectBundleItemPacket.java | 7 +- .../ServerboundCustomQueryAnswerPacket.java | 7 +- .../ping/ClientboundPongResponsePacket.java | 7 +- .../ping/ServerboundPingRequestPacket.java | 7 +- net/minecraft/realms/RealmsScreen.java | 4 +- .../recipebook/ServerPlaceRecipe.java | 66 +- .../resources/FileToIdConverter.java | 6 + net/minecraft/resources/HolderSetCodec.java | 10 +- .../resources/RegistryDataLoader.java | 51 +- net/minecraft/server/Bootstrap.java | 12 +- .../server/DebugLoggedPrintStream.java | 4 +- net/minecraft/server/Main.java | 35 +- net/minecraft/server/MinecraftServer.java | 27 +- .../server/ReloadableServerRegistries.java | 34 +- .../server/ServerAdvancementManager.java | 8 +- .../server/commands/AttributeCommand.java | 51 +- .../server/commands/DebugCommand.java | 31 +- .../server/commands/ExecuteCommand.java | 16 +- .../server/commands/FunctionCommand.java | 18 +- .../server/commands/ParticleCommand.java | 2 +- .../server/commands/PlaceCommand.java | 7 +- .../server/commands/ReturnCommand.java | 8 +- .../commands/SpawnArmorTrimsCommand.java | 20 +- .../server/commands/TimeCommand.java | 2 + .../server/dedicated/DedicatedServer.java | 4 +- net/minecraft/server/level/ChunkMap.java | 16 +- .../server/level/ChunkTaskDispatcher.java | 10 +- net/minecraft/server/level/ChunkTracker.java | 4 +- .../server/level/ChunkTrackingView.java | 13 +- net/minecraft/server/level/DemoMode.java | 4 +- .../server/level/DistanceManager.java | 8 +- .../server/level/SectionTracker.java | 4 +- net/minecraft/server/level/ServerEntity.java | 2 +- net/minecraft/server/level/ServerLevel.java | 99 +- net/minecraft/server/level/ServerPlayer.java | 82 +- .../level/ThrottlingChunkTaskDispatcher.java | 7 +- net/minecraft/server/level/TicketType.java | 1 - .../server/level/WorldGenRegion.java | 6 +- ...ServerConfigurationPacketListenerImpl.java | 8 +- .../network/ServerGamePacketListenerImpl.java | 485 +- .../server/network/ServerTextFilter.java | 4 +- .../server/packs/AbstractPackResources.java | 38 +- .../server/packs/BuiltInMetadata.java | 18 +- .../server/packs/CompositePackResources.java | 6 +- .../server/packs/DownloadCacheCleaner.java | 8 +- .../packs/FeatureFlagsMetadataSection.java | 2 +- .../server/packs/OverlayMetadataSection.java | 2 +- net/minecraft/server/packs/PackResources.java | 4 +- .../server/packs/VanillaPackResources.java | 10 +- .../metadata/MetadataSectionSerializer.java | 12 - .../packs/metadata/MetadataSectionType.java | 25 +- .../metadata/pack/PackMetadataSection.java | 2 +- .../packs/repository/ServerPacksSource.java | 4 +- .../resources/ResourceFilterSection.java | 2 +- .../packs/resources/ResourceMetadata.java | 45 +- .../SimpleJsonResourceReloadListener.java | 46 +- net/minecraft/sounds/SoundEvents.java | 228 +- net/minecraft/tags/BlockTags.java | 2 +- net/minecraft/tags/ItemTags.java | 8 +- net/minecraft/util/ARGB.java | 18 +- net/minecraft/util/ExtraCodecs.java | 40 + net/minecraft/util/PngInfo.java | 25 +- net/minecraft/util/SpawnUtil.java | 15 +- net/minecraft/util/datafix/DataFixers.java | 279 +- .../fixes/BlockEntityFurnaceBurnTimeFix.java | 24 + .../fixes/CustomModelDataExpandFix.java | 26 + .../fixes/DataComponentRemainderFix.java | 44 + .../fixes/EntityAttributeBaseValueFix.java | 36 + .../datafix/fixes/EntityFieldsRenameFix.java | 30 + .../fixes/EntityPaintingFieldsRenameFix.java | 21 - .../fixes/EquippableAssetRenameFix.java | 25 + ...esistantToDamageResistantComponentFix.java | 6 +- .../fixes/InvalidBlockEntityLockFix.java | 29 + .../fixes/InvalidLockComponentFix.java | 38 + .../fixes/ItemStackComponentRemainderFix.java | 42 - .../util/datafix/fixes/LeavesFix.java | 4 +- .../fixes/LockComponentPredicateFix.java | 17 +- .../fixes/LodestoneCompassComponentFix.java | 14 +- .../datafix/fixes/SimpleEntityRenameFix.java | 4 +- .../fixes/TrappedChestBlockEntityFix.java | 4 +- net/minecraft/util/datafix/schemas/V1125.java | 4 +- net/minecraft/util/datafix/schemas/V1451.java | 4 +- .../util/datafix/schemas/V1451_1.java | 4 +- .../util/datafix/schemas/V1451_2.java | 4 +- .../util/datafix/schemas/V1451_3.java | 4 +- .../util/datafix/schemas/V1451_4.java | 4 +- .../util/datafix/schemas/V1451_5.java | 4 +- .../util/datafix/schemas/V1451_6.java | 4 +- net/minecraft/util/datafix/schemas/V1460.java | 4 +- net/minecraft/util/datafix/schemas/V1466.java | 4 +- net/minecraft/util/datafix/schemas/V1470.java | 4 +- net/minecraft/util/datafix/schemas/V1481.java | 4 +- net/minecraft/util/datafix/schemas/V1483.java | 4 +- net/minecraft/util/datafix/schemas/V1486.java | 4 +- net/minecraft/util/datafix/schemas/V1510.java | 4 +- net/minecraft/util/datafix/schemas/V1800.java | 4 +- net/minecraft/util/datafix/schemas/V1801.java | 4 +- net/minecraft/util/datafix/schemas/V1904.java | 4 +- net/minecraft/util/datafix/schemas/V1906.java | 4 +- net/minecraft/util/datafix/schemas/V1909.java | 4 +- net/minecraft/util/datafix/schemas/V1920.java | 4 +- net/minecraft/util/datafix/schemas/V1928.java | 4 +- net/minecraft/util/datafix/schemas/V1929.java | 4 +- net/minecraft/util/datafix/schemas/V1931.java | 4 +- net/minecraft/util/datafix/schemas/V2100.java | 4 +- net/minecraft/util/datafix/schemas/V2501.java | 4 +- net/minecraft/util/datafix/schemas/V2502.java | 4 +- net/minecraft/util/datafix/schemas/V2505.java | 4 +- net/minecraft/util/datafix/schemas/V2509.java | 4 +- net/minecraft/util/datafix/schemas/V2519.java | 4 +- net/minecraft/util/datafix/schemas/V2522.java | 4 +- net/minecraft/util/datafix/schemas/V2551.java | 4 +- net/minecraft/util/datafix/schemas/V2568.java | 4 +- net/minecraft/util/datafix/schemas/V2571.java | 4 +- net/minecraft/util/datafix/schemas/V2684.java | 4 +- net/minecraft/util/datafix/schemas/V2686.java | 4 +- net/minecraft/util/datafix/schemas/V2688.java | 4 +- net/minecraft/util/datafix/schemas/V2704.java | 4 +- net/minecraft/util/datafix/schemas/V2707.java | 4 +- net/minecraft/util/datafix/schemas/V2831.java | 4 +- net/minecraft/util/datafix/schemas/V2832.java | 4 +- net/minecraft/util/datafix/schemas/V2842.java | 4 +- net/minecraft/util/datafix/schemas/V3076.java | 4 +- net/minecraft/util/datafix/schemas/V3078.java | 4 +- net/minecraft/util/datafix/schemas/V3081.java | 4 +- net/minecraft/util/datafix/schemas/V3082.java | 4 +- net/minecraft/util/datafix/schemas/V3083.java | 4 +- net/minecraft/util/datafix/schemas/V3202.java | 4 +- net/minecraft/util/datafix/schemas/V3203.java | 4 +- net/minecraft/util/datafix/schemas/V3204.java | 4 +- net/minecraft/util/datafix/schemas/V3325.java | 4 +- net/minecraft/util/datafix/schemas/V3326.java | 4 +- net/minecraft/util/datafix/schemas/V3327.java | 4 +- net/minecraft/util/datafix/schemas/V3328.java | 4 +- net/minecraft/util/datafix/schemas/V3438.java | 4 +- net/minecraft/util/datafix/schemas/V3448.java | 4 +- net/minecraft/util/datafix/schemas/V3682.java | 4 +- net/minecraft/util/datafix/schemas/V3683.java | 4 +- net/minecraft/util/datafix/schemas/V3685.java | 4 +- net/minecraft/util/datafix/schemas/V3689.java | 4 +- net/minecraft/util/datafix/schemas/V3799.java | 4 +- net/minecraft/util/datafix/schemas/V3807.java | 4 +- net/minecraft/util/datafix/schemas/V3808.java | 4 +- .../util/datafix/schemas/V3808_1.java | 4 +- .../util/datafix/schemas/V3808_2.java | 4 +- net/minecraft/util/datafix/schemas/V3816.java | 4 +- net/minecraft/util/datafix/schemas/V3818.java | 4 +- .../util/datafix/schemas/V3818_3.java | 4 +- .../util/datafix/schemas/V3818_4.java | 4 +- .../util/datafix/schemas/V3818_5.java | 4 +- net/minecraft/util/datafix/schemas/V3825.java | 4 +- net/minecraft/util/datafix/schemas/V3938.java | 4 +- net/minecraft/util/datafix/schemas/V4059.java | 4 +- net/minecraft/util/datafix/schemas/V4067.java | 4 +- net/minecraft/util/datafix/schemas/V4070.java | 4 +- net/minecraft/util/datafix/schemas/V4071.java | 4 +- net/minecraft/util/datafix/schemas/V705.java | 4 +- net/minecraft/util/datafix/schemas/V808.java | 4 +- .../util/debugchart/LocalSampleLogger.java | 6 +- .../util/profiling/jfr/JfrProfiler.java | 34 +- .../util/profiling/jfr/JvmProfiler.java | 12 +- .../jfr/callback/ProfiledDuration.java | 2 +- .../jfr/event/StructureGenerationEvent.java | 56 + .../profiling/jfr/parse/JfrStatsParser.java | 15 +- .../profiling/jfr/parse/JfrStatsResult.java | 16 +- .../serialize/JfrResultJsonSerializer.java | 54 +- .../profiling/jfr/stats/StructureGenStat.java | 17 + .../util/random/SimpleWeightedRandomList.java | 15 +- .../thread/ReentrantBlockableEventLoop.java | 4 +- net/minecraft/util/thread/StrictQueue.java | 6 +- .../util/worldupdate/WorldUpgrader.java | 16 +- .../world/effect/InstantenousMobEffect.java | 4 +- .../world/effect/PoisonMobEffect.java | 4 +- .../world/effect/WitherMobEffect.java | 4 +- .../world/entity/AnimationState.java | 4 +- .../world/entity/AreaEffectCloud.java | 13 +- .../world/entity/ConversionType.java | 2 +- net/minecraft/world/entity/Display.java | 5 +- net/minecraft/world/entity/Entity.java | 116 +- net/minecraft/world/entity/EntityType.java | 43 +- net/minecraft/world/entity/ExperienceOrb.java | 9 +- net/minecraft/world/entity/Interaction.java | 5 +- net/minecraft/world/entity/Leashable.java | 31 +- net/minecraft/world/entity/LivingEntity.java | 125 +- net/minecraft/world/entity/Mob.java | 148 +- .../world/entity/SpawnPlacements.java | 174 +- net/minecraft/world/entity/TamableAnimal.java | 5 +- .../entity/ai/attributes/AttributeMap.java | 13 + .../ai/attributes/DefaultAttributes.java | 3 +- .../world/entity/ai/behavior/AcquirePoi.java | 18 +- .../world/entity/ai/behavior/AnimalPanic.java | 28 +- .../entity/ai/behavior/FollowTemptation.java | 28 +- .../entity/ai/behavior/LongJumpMidJump.java | 26 +- .../ai/behavior/LongJumpToPreferredBlock.java | 6 +- .../ai/behavior/LongJumpToRandomPos.java | 42 +- .../ai/behavior/PrepareRamNearestTarget.java | 49 +- .../world/entity/ai/behavior/RamTarget.java | 52 +- .../entity/ai/behavior/RandomLookAround.java | 10 +- .../entity/ai/behavior/ValidateNearbyPoi.java | 14 +- .../ai/behavior/VillagerGoalPackages.java | 34 +- .../entity/ai/behavior/warden/Digging.java | 26 +- .../entity/ai/behavior/warden/Emerging.java | 14 +- .../entity/ai/behavior/warden/Sniffing.java | 24 +- .../entity/ai/behavior/warden/SonicBoom.java | 45 +- .../entity/ai/goal/DoorInteractGoal.java | 2 +- .../goal/GolemRandomStrollInVillageGoal.java | 4 +- .../ai/goal/MoveThroughVillageGoal.java | 8 +- .../goal/WaterAvoidingRandomStrollGoal.java | 4 +- .../navigation/AmphibiousPathNavigation.java | 1 - .../ai/navigation/FlyingPathNavigation.java | 13 - .../ai/navigation/GroundPathNavigation.java | 13 - .../navigation/WaterBoundPathNavigation.java | 1 + .../world/entity/ai/sensing/AdultSensor.java | 6 +- .../world/entity/ai/sensing/GolemSensor.java | 4 +- .../entity/ai/sensing/TemptingSensor.java | 14 +- .../entity/ai/sensing/WardenEntitySensor.java | 12 +- .../entity/ai/village/poi/PoiManager.java | 7 +- net/minecraft/world/entity/animal/Bee.java | 53 +- net/minecraft/world/entity/animal/Cat.java | 18 +- .../world/entity/animal/Chicken.java | 4 +- net/minecraft/world/entity/animal/Cow.java | 4 +- .../world/entity/animal/Dolphin.java | 7 +- net/minecraft/world/entity/animal/Fox.java | 23 +- .../world/entity/animal/MushroomCow.java | 82 +- net/minecraft/world/entity/animal/Ocelot.java | 7 +- net/minecraft/world/entity/animal/Parrot.java | 7 +- net/minecraft/world/entity/animal/Pig.java | 7 +- net/minecraft/world/entity/animal/Rabbit.java | 25 +- net/minecraft/world/entity/animal/Salmon.java | 42 +- net/minecraft/world/entity/animal/Sheep.java | 31 +- net/minecraft/world/entity/animal/Squid.java | 7 +- .../world/entity/animal/TropicalFish.java | 7 +- net/minecraft/world/entity/animal/Turtle.java | 7 +- net/minecraft/world/entity/animal/Wolf.java | 25 +- .../world/entity/animal/allay/Allay.java | 22 +- .../entity/animal/armadillo/ArmadilloAi.java | 64 +- .../world/entity/animal/camel/Camel.java | 7 +- .../world/entity/animal/camel/CamelAi.java | 29 +- .../world/entity/animal/frog/Frog.java | 5 +- .../world/entity/animal/frog/ShootTongue.java | 54 +- .../world/entity/animal/goat/Goat.java | 10 +- .../world/entity/animal/horse/Llama.java | 9 +- .../entity/animal/horse/TraderLlama.java | 6 +- .../entity/animal/sniffer/SnifferAi.java | 105 +- .../entity/boss/enderdragon/EnderDragon.java | 32 +- .../phases/DragonChargePlayerPhase.java | 4 +- .../enderdragon/phases/DragonDeathPhase.java | 8 +- .../phases/DragonHoldingPatternPhase.java | 8 +- .../enderdragon/phases/DragonHoverPhase.java | 4 +- .../phases/DragonLandingApproachPhase.java | 8 +- .../phases/DragonLandingPhase.java | 8 +- .../phases/DragonSittingAttackingPhase.java | 4 +- .../phases/DragonSittingFlamingPhase.java | 4 +- .../phases/DragonSittingScanningPhase.java | 6 +- .../phases/DragonStrafePlayerPhase.java | 4 +- .../phases/DragonTakeoffPhase.java | 8 +- .../world/entity/boss/wither/WitherBoss.java | 5 +- .../world/entity/decoration/ArmorStand.java | 5 +- .../decoration/LeashFenceKnotEntity.java | 2 +- .../world/entity/item/FallingBlockEntity.java | 5 - .../world/entity/item/PrimedTnt.java | 2 +- .../entity/monster/AbstractSkeleton.java | 7 + .../world/entity/monster/Drowned.java | 23 +- .../world/entity/monster/EnderMan.java | 16 +- .../world/entity/monster/Evoker.java | 44 +- .../world/entity/monster/Phantom.java | 10 +- .../world/entity/monster/Pillager.java | 8 + .../world/entity/monster/Ravager.java | 3 - .../world/entity/monster/Shulker.java | 38 +- net/minecraft/world/entity/monster/Slime.java | 7 +- .../world/entity/monster/Strider.java | 18 +- net/minecraft/world/entity/monster/Witch.java | 5 +- .../world/entity/monster/WitherSkeleton.java | 13 + .../world/entity/monster/breeze/Breeze.java | 5 +- .../world/entity/monster/breeze/LongJump.java | 74 +- .../world/entity/monster/breeze/Shoot.java | 48 +- .../world/entity/monster/breeze/Slide.java | 22 +- .../entity/monster/creaking/Creaking.java | 366 +- .../entity/monster/creaking/CreakingAi.java | 2 +- .../monster/creaking/CreakingTransient.java | 194 - .../world/entity/monster/piglin/Piglin.java | 22 +- .../world/entity/monster/warden/Warden.java | 1 - .../world/entity/npc/AbstractVillager.java | 15 +- .../world/entity/npc/ClientSideMerchant.java | 5 + net/minecraft/world/entity/npc/Villager.java | 22 +- .../world/entity/npc/VillagerDataHolder.java | 4 +- .../world/entity/npc/VillagerProfession.java | 4 - .../world/entity/npc/VillagerTrades.java | 19 +- .../world/entity/npc/WanderingTrader.java | 11 +- .../world/entity/player/Inventory.java | 32 +- net/minecraft/world/entity/player/Player.java | 44 +- .../world/entity/player/StackedContents.java | 118 +- .../entity/player/StackedItemContents.java | 18 +- .../entity/projectile/AbstractArrow.java | 35 +- .../projectile/AbstractHurtingProjectile.java | 31 - .../world/entity/projectile/Fireball.java | 8 +- .../world/entity/projectile/FishingHook.java | 16 +- .../world/entity/projectile/Projectile.java | 19 +- .../entity/projectile/ShulkerBullet.java | 19 +- .../world/entity/projectile/Snowball.java | 4 +- .../projectile/ThrownExperienceBottle.java | 4 +- .../entity/projectile/ThrownTrident.java | 1 + .../windcharge/AbstractWindCharge.java | 10 +- net/minecraft/world/entity/raid/Raider.java | 6 +- .../world/entity/vehicle/AbstractBoat.java | 7 +- .../entity/vehicle/AbstractChestBoat.java | 4 +- .../entity/vehicle/MinecartCommandBlock.java | 5 - .../world/entity/vehicle/MinecartSpawner.java | 5 - .../world/entity/vehicle/MinecartTNT.java | 26 +- .../entity/vehicle/NewMinecartBehavior.java | 4 +- .../entity/vehicle/OldMinecartBehavior.java | 4 +- net/minecraft/world/flag/FeatureFlags.java | 2 - net/minecraft/world/inventory/ArmorSlot.java | 6 +- net/minecraft/world/inventory/BeaconMenu.java | 6 +- .../world/inventory/BrewingStandMenu.java | 21 +- .../world/inventory/EnchantmentMenu.java | 7 +- .../world/inventory/HorseInventoryMenu.java | 13 +- .../world/inventory/InventoryMenu.java | 19 +- .../world/inventory/MerchantMenu.java | 2 +- .../world/inventory/RecipeBookMenu.java | 4 +- .../world/inventory/ShulkerBoxSlot.java | 4 +- net/minecraft/world/inventory/Slot.java | 3 +- .../world/inventory/StonecutterMenu.java | 27 +- net/minecraft/world/item/BlockItem.java | 30 +- net/minecraft/world/item/BoneMealItem.java | 3 +- net/minecraft/world/item/BundleItem.java | 47 +- net/minecraft/world/item/CompassItem.java | 6 - .../world/item/CreativeModeTabs.java | 18 +- net/minecraft/world/item/CrossbowItem.java | 19 + net/minecraft/world/item/DyeColor.java | 24 +- net/minecraft/world/item/EggItem.java | 4 +- net/minecraft/world/item/EnderpearlItem.java | 4 +- net/minecraft/world/item/FishingRodItem.java | 2 +- .../world/item/HangingEntityItem.java | 4 +- net/minecraft/world/item/InstrumentItem.java | 6 +- net/minecraft/world/item/Item.java | 15 +- net/minecraft/world/item/ItemFrameItem.java | 4 +- net/minecraft/world/item/ItemStack.java | 57 +- .../world/item/ItemUseAnimation.java | 3 +- net/minecraft/world/item/Items.java | 365 +- net/minecraft/world/item/MaceItem.java | 9 +- net/minecraft/world/item/MapItem.java | 9 +- net/minecraft/world/item/MobBucketItem.java | 16 +- net/minecraft/world/item/NameTagItem.java | 2 +- net/minecraft/world/item/ShearsItem.java | 9 +- .../world/item/SmithingTemplateItem.java | 32 +- net/minecraft/world/item/SnowballItem.java | 4 +- net/minecraft/world/item/SpawnEggItem.java | 61 +- .../world/item/ThrowablePotionItem.java | 4 +- net/minecraft/world/item/TridentItem.java | 9 +- net/minecraft/world/item/WindChargeItem.java | 4 +- .../world/item/alchemy/PotionContents.java | 16 +- .../world/item/component/Consumable.java | 4 +- .../world/item/component/CustomData.java | 26 +- .../world/item/component/CustomModelData.java | 55 +- .../item/component/WritableBookContent.java | 4 +- .../item/component/WrittenBookContent.java | 11 +- .../world/item/context/BlockPlaceContext.java | 11 +- .../item/context/DirectionalPlaceContext.java | 3 +- .../item/crafting/AbstractCookingRecipe.java | 10 +- .../item/crafting/DecoratedPotRecipe.java | 24 +- .../world/item/crafting/Ingredient.java | 49 +- .../item/crafting/MapExtendingRecipe.java | 12 +- .../world/item/crafting/PlacementInfo.java | 66 +- .../world/item/crafting/RecipeManager.java | 41 +- .../item/crafting/RecipePropertySet.java | 2 +- .../world/item/crafting/RepairItemRecipe.java | 16 +- .../world/item/crafting/ShapedRecipe.java | 17 +- .../world/item/crafting/ShapelessRecipe.java | 21 +- .../world/item/crafting/SingleItemRecipe.java | 8 +- .../crafting/SmithingTransformRecipe.java | 13 +- .../item/crafting/SmithingTrimRecipe.java | 14 +- .../item/crafting/StonecutterRecipe.java | 6 +- .../world/item/crafting/TransmuteRecipe.java | 20 +- .../crafting/display/RecipeDisplayEntry.java | 10 +- .../item/enchantment/EnchantmentHelper.java | 6 +- .../world/item/enchantment/Enchantments.java | 145 +- .../world/item/equipment/ArmorMaterial.java | 20 +- .../world/item/equipment/ArmorMaterials.java | 16 +- .../world/item/equipment/EquipmentAsset.java | 4 + .../world/item/equipment/EquipmentAssets.java | 27 + .../world/item/equipment/EquipmentModel.java | 125 - .../world/item/equipment/EquipmentModels.java | 84 - .../world/item/equipment/Equippable.java | 21 +- .../world/item/equipment/trim/ArmorTrim.java | 13 - .../item/equipment/trim/TrimMaterial.java | 27 +- .../item/equipment/trim/TrimMaterials.java | 45 +- .../world/item/trading/Merchant.java | 2 + .../world/item/trading/MerchantOffers.java | 3 +- net/minecraft/world/level/BlockGetter.java | 12 +- .../world/level/CommonLevelAccessor.java | 8 +- net/minecraft/world/level/FoliageColor.java | 22 +- net/minecraft/world/level/Level.java | 55 +- net/minecraft/world/level/LevelAccessor.java | 2 +- .../world/level/ServerExplosion.java | 17 +- net/minecraft/world/level/biome/Biome.java | 7 +- .../level/biome/BiomeSpecialEffects.java | 46 +- net/minecraft/world/level/biome/Biomes.java | 1 + .../MultiNoiseBiomeSourceParameterList.java | 59 +- .../MultiNoiseBiomeSourceParameterLists.java | 5 - .../level/biome/OverworldBiomeBuilder.java | 590 +- .../level/block/AbstractBannerBlock.java | 6 +- .../world/level/block/AbstractChestBlock.java | 3 +- .../level/block/AbstractFurnaceBlock.java | 9 +- .../world/level/block/AbstractSkullBlock.java | 7 +- .../world/level/block/AttachedStemBlock.java | 2 +- .../world/level/block/BambooSaplingBlock.java | 2 +- .../world/level/block/BannerBlock.java | 6 +- .../world/level/block/BarrelBlock.java | 9 +- .../world/level/block/BaseEntityBlock.java | 5 - .../world/level/block/BaseFireBlock.java | 8 +- .../world/level/block/BeaconBlock.java | 5 - net/minecraft/world/level/block/BedBlock.java | 10 +- .../world/level/block/BeehiveBlock.java | 32 +- .../world/level/block/BeetrootBlock.java | 4 +- .../world/level/block/BellBlock.java | 16 +- .../level/block/BigDripleafStemBlock.java | 2 +- .../world/level/block/BlastFurnaceBlock.java | 7 +- net/minecraft/world/level/block/Block.java | 12 +- .../world/level/block/BlockTypes.java | 4 +- net/minecraft/world/level/block/Blocks.java | 330 +- .../world/level/block/BrewingStandBlock.java | 9 +- .../world/level/block/BrushableBlock.java | 5 - .../world/level/block/CactusBlock.java | 3 +- .../world/level/block/CampfireBlock.java | 5 - .../world/level/block/CandleCakeBlock.java | 2 +- .../world/level/block/CaveVinesBlock.java | 2 +- .../level/block/CaveVinesPlantBlock.java | 2 +- .../level/block/CeilingHangingSignBlock.java | 4 +- .../world/level/block/CherryLeavesBlock.java | 36 - .../world/level/block/ChestBlock.java | 32 +- .../level/block/ChiseledBookShelfBlock.java | 5 - .../world/level/block/ChorusFlowerBlock.java | 9 +- .../world/level/block/CommandBlock.java | 5 - .../world/level/block/ComposterBlock.java | 5 +- .../world/level/block/ConduitBlock.java | 5 - .../world/level/block/CrafterBlock.java | 5 - .../world/level/block/CreakingHeartBlock.java | 81 +- .../world/level/block/CropBlock.java | 2 +- .../level/block/DaylightDetectorBlock.java | 9 +- .../world/level/block/DecoratedPotBlock.java | 14 +- .../world/level/block/DispenserBlock.java | 5 - .../world/level/block/DoorBlock.java | 3 +- .../level/block/EnchantingTableBlock.java | 5 - .../world/level/block/EndGatewayBlock.java | 7 +- .../world/level/block/EndPortalBlock.java | 7 +- .../world/level/block/EnderChestBlock.java | 11 +- .../world/level/block/EyeblossomBlock.java | 177 + .../world/level/block/FireBlock.java | 8 +- .../world/level/block/FlowerBlock.java | 10 +- .../world/level/block/FlowerPotBlock.java | 35 +- .../world/level/block/FrostedIceBlock.java | 2 +- .../world/level/block/FurnaceBlock.java | 7 +- .../world/level/block/GlowLichenBlock.java | 46 +- .../world/level/block/GrassBlock.java | 3 +- .../world/level/block/GrindstoneBlock.java | 5 - .../level/block/GrowingPlantBodyBlock.java | 6 +- .../world/level/block/HangingMossBlock.java | 3 +- .../world/level/block/HopperBlock.java | 8 +- .../block/InfestedRotatedPillarBlock.java | 8 +- .../world/level/block/JigsawBlock.java | 7 +- .../world/level/block/JukeboxBlock.java | 5 - .../world/level/block/LanternBlock.java | 3 +- .../world/level/block/LecternBlock.java | 5 - .../world/level/block/LightBlock.java | 9 +- .../world/level/block/LiquidBlock.java | 3 +- .../world/level/block/MangroveRootsBlock.java | 3 +- .../world/level/block/MossyCarpetBlock.java | 16 +- .../world/level/block/MultifaceBlock.java | 55 +- .../block/MultifaceSpreadeableBlock.java | 15 + .../world/level/block/NetherPortalBlock.java | 50 +- .../world/level/block/NetherWartBlock.java | 2 +- .../world/level/block/NoteBlock.java | 3 +- .../level/block/ParticleLeavesBlock.java | 50 + .../level/block/PointedDripstoneBlock.java | 6 +- .../world/level/block/PumpkinBlock.java | 3 +- .../world/level/block/RedStoneOreBlock.java | 9 +- .../world/level/block/RedStoneWireBlock.java | 17 +- .../world/level/block/RenderShape.java | 1 - .../world/level/block/RespawnAnchorBlock.java | 4 +- .../world/level/block/RotatedPillarBlock.java | 12 +- net/minecraft/world/level/block/Rotation.java | 81 +- .../world/level/block/ScaffoldingBlock.java | 3 +- .../world/level/block/SculkBehaviour.java | 11 +- .../world/level/block/SculkBlock.java | 5 +- .../world/level/block/SculkCatalystBlock.java | 9 +- .../world/level/block/SculkSensorBlock.java | 5 - .../world/level/block/SculkShriekerBlock.java | 8 +- .../world/level/block/SculkVeinBlock.java | 54 +- .../world/level/block/ShulkerBoxBlock.java | 37 +- .../world/level/block/SnowyDirtBlock.java | 2 +- .../world/level/block/SoundType.java | 12 + .../world/level/block/SpawnerBlock.java | 5 - .../world/level/block/SpongeBlock.java | 10 +- .../level/block/SpreadingSnowyDirtBlock.java | 2 +- .../world/level/block/StairBlock.java | 5 +- .../world/level/block/StandingSignBlock.java | 4 +- .../world/level/block/StemBlock.java | 5 +- .../world/level/block/StonecutterBlock.java | 5 - .../world/level/block/StructureBlock.java | 5 - .../world/level/block/SugarCaneBlock.java | 3 +- .../level/block/SweetBerryBushBlock.java | 2 +- .../world/level/block/TallSeagrassBlock.java | 2 +- .../world/level/block/TargetBlock.java | 7 +- .../level/block/TorchflowerCropBlock.java | 4 +- .../world/level/block/TrialSpawnerBlock.java | 9 +- .../world/level/block/VaultBlock.java | 5 - .../world/level/block/VineBlock.java | 10 +- .../world/level/block/WallBannerBlock.java | 4 +- .../level/block/WallHangingSignBlock.java | 4 +- .../world/level/block/WallSignBlock.java | 4 +- .../world/level/block/WallTorchBlock.java | 4 +- .../block/WeatheringCopperFullBlock.java | 9 +- .../world/level/block/WetSpongeBlock.java | 3 +- .../world/level/block/WitherRoseBlock.java | 11 +- .../entity/AbstractFurnaceBlockEntity.java | 66 +- .../level/block/entity/BannerBlockEntity.java | 23 +- .../level/block/entity/BarrelBlockEntity.java | 6 +- .../entity/BaseContainerBlockEntity.java | 13 +- .../level/block/entity/BeaconBlockEntity.java | 15 +- .../level/block/entity/BedBlockEntity.java | 9 +- .../block/entity/BeehiveBlockEntity.java | 21 +- .../world/level/block/entity/BlockEntity.java | 43 +- .../level/block/entity/BlockEntityType.java | 5 + .../block/entity/BrewingStandBlockEntity.java | 6 +- .../block/entity/BrushableBlockEntity.java | 11 +- .../CalibratedSculkSensorBlockEntity.java | 4 +- .../block/entity/CampfireBlockEntity.java | 8 +- .../level/block/entity/ChestBlockEntity.java | 10 +- .../entity/ChiseledBookShelfBlockEntity.java | 6 +- .../block/entity/CommandBlockEntity.java | 11 +- .../block/entity/ComparatorBlockEntity.java | 6 +- .../block/entity/ConduitBlockEntity.java | 8 +- .../block/entity/CrafterBlockEntity.java | 6 +- .../entity/CreakingHeartBlockEntity.java | 312 +- .../block/entity/DecoratedPotBlockEntity.java | 18 +- .../block/entity/DispenserBlockEntity.java | 10 +- .../entity/EnchantingTableBlockEntity.java | 9 +- .../level/block/entity/HopperBlockEntity.java | 6 +- .../level/block/entity/JigsawBlockEntity.java | 11 +- .../block/entity/JukeboxBlockEntity.java | 10 +- .../block/entity/LecternBlockEntity.java | 11 +- .../RandomizableContainerBlockEntity.java | 4 +- .../entity/SculkCatalystBlockEntity.java | 5 +- .../block/entity/SculkSensorBlockEntity.java | 9 +- .../entity/SculkShriekerBlockEntity.java | 7 +- .../block/entity/ShulkerBoxBlockEntity.java | 15 +- .../level/block/entity/SignBlockEntity.java | 20 +- .../level/block/entity/SkullBlockEntity.java | 11 +- .../block/entity/SpawnerBlockEntity.java | 13 +- .../block/entity/StructureBlockEntity.java | 8 +- .../entity/TheEndGatewayBlockEntity.java | 12 +- .../block/entity/TheEndPortalBlockEntity.java | 7 +- .../block/entity/TrialSpawnerBlockEntity.java | 22 +- .../entity/trialspawner/TrialSpawner.java | 14 +- .../trialspawner/TrialSpawnerConfig.java | 21 + .../entity/trialspawner/TrialSpawnerData.java | 11 +- .../block/entity/vault/VaultBlockEntity.java | 15 +- .../world/level/block/grower/TreeGrower.java | 2 +- .../level/block/piston/MovingPistonBlock.java | 15 +- .../level/block/piston/PistonHeadBlock.java | 2 +- .../block/piston/PistonMovingBlockEntity.java | 11 +- .../level/block/state/BlockBehaviour.java | 20 +- .../properties/BlockStateProperties.java | 22 +- .../state/properties/BooleanProperty.java | 7 +- .../block/state/properties/EnumProperty.java | 7 +- .../state/properties/IntegerProperty.java | 7 +- .../world/level/chunk/ChunkAccess.java | 22 +- .../world/level/chunk/ChunkGenerator.java | 30 +- .../world/level/chunk/ImposterProtoChunk.java | 19 +- .../world/level/chunk/LevelChunk.java | 29 +- .../world/level/chunk/ProtoChunk.java | 16 +- .../level/chunk/status/ChunkStatusTasks.java | 12 +- .../world/level/chunk/status/ChunkStep.java | 2 +- .../world/level/chunk/storage/IOWorker.java | 2 +- .../level/chunk/storage/SectionStorage.java | 4 + .../world/level/dimension/DimensionType.java | 2 +- .../level/levelgen/DebugLevelSource.java | 3 +- .../world/level/levelgen/FlatLevelSource.java | 7 +- .../levelgen/NoiseBasedChunkGenerator.java | 7 +- .../world/level/levelgen/NoiseChunk.java | 39 +- .../blockpredicates/AllOfPredicate.java | 4 +- .../levelgen/carver/CanyonWorldCarver.java | 41 +- .../levelgen/carver/CaveWorldCarver.java | 82 +- .../levelgen/feature/SimpleBlockFeature.java | 4 + .../MultifaceGrowthConfiguration.java | 19 +- .../SimpleBlockConfiguration.java | 11 +- .../stateproviders/DualNoiseProvider.java | 11 +- .../feature/stateproviders/NoiseProvider.java | 10 +- .../NoiseThresholdProvider.java | 9 +- .../treedecorators/BeehiveDecorator.java | 52 +- .../treedecorators/CocoaDecorator.java | 26 +- .../CreakingHeartDecorator.java | 5 +- .../treedecorators/PaleMossDecorator.java | 15 +- .../trunkplacers/DarkOakTrunkPlacer.java | 17 +- .../trunkplacers/FancyTrunkPlacer.java | 24 +- .../trunkplacers/ForkingTrunkPlacer.java | 19 +- .../trunkplacers/GiantTrunkPlacer.java | 10 +- .../trunkplacers/MegaJungleTrunkPlacer.java | 12 +- .../trunkplacers/StraightTrunkPlacer.java | 10 +- .../level/levelgen/structure/BoundingBox.java | 8 +- .../structure/ScatteredFeaturePiece.java | 18 +- .../structure/SinglePieceStructure.java | 4 +- .../level/levelgen/structure/Structure.java | 70 +- .../structure/pools/JigsawPlacement.java | 153 +- .../structures/BuriedTreasureStructure.java | 11 +- .../structures/DesertPyramidPiece.java | 3 +- .../structures/EndCityStructure.java | 4 +- .../structure/structures/IglooStructure.java | 8 +- .../structure/structures/JigsawStructure.java | 10 +- .../structures/JungleTemplePiece.java | 4 +- .../structure/structures/MineshaftPieces.java | 9 +- .../structures/MineshaftStructure.java | 18 +- .../structures/NetherFortressPieces.java | 16 +- .../structures/NetherFortressStructure.java | 18 +- .../structures/OceanMonumentPieces.java | 4 +- .../structures/OceanMonumentStructure.java | 13 +- .../structures/OceanRuinStructure.java | 13 +- .../structures/RuinedPortalStructure.java | 35 +- .../structures/ShipwreckStructure.java | 7 +- .../structures/StrongholdPieces.java | 23 +- .../structures/StrongholdStructure.java | 4 +- .../structures/SwampHutStructure.java | 8 +- .../structures/WoodlandMansionStructure.java | 16 +- .../world/level/pathfinder/NodeEvaluator.java | 2 +- .../level/pathfinder/SwimNodeEvaluator.java | 3 +- .../world/level/pathfinder/Target.java | 4 +- .../level/pathfinder/WalkNodeEvaluator.java | 10 +- .../DefaultRedstoneWireEvaluator.java | 4 +- .../ExperimentalRedstoneWireEvaluator.java | 7 +- .../level/storage/DimensionDataStorage.java | 70 +- .../world/level/storage/loot/LootPool.java | 8 +- .../world/level/storage/loot/LootTable.java | 7 +- .../loot/entries/AlternativesEntry.java | 4 +- .../storage/loot/entries/EntryGroup.java | 4 +- .../loot/entries/LootPoolEntryContainer.java | 4 +- .../entries/LootPoolSingletonContainer.java | 4 +- .../storage/loot/entries/SequentialEntry.java | 4 +- .../loot/functions/SetAttributesFunction.java | 20 +- .../functions/SetCustomModelDataFunction.java | 69 +- net/minecraft/world/phys/AABB.java | 19 +- .../phys/shapes/BitSetDiscreteVoxelShape.java | 33 +- .../world/phys/shapes/CubeVoxelShape.java | 10 +- version.json | 14 +- 5548 files changed, 51408 insertions(+), 35134 deletions(-) create mode 100644 assets/minecraft/blockstates/chiseled_resin_bricks.json create mode 100644 assets/minecraft/blockstates/closed_eyeblossom.json create mode 100644 assets/minecraft/blockstates/open_eyeblossom.json create mode 100644 assets/minecraft/blockstates/potted_closed_eyeblossom.json create mode 100644 assets/minecraft/blockstates/potted_open_eyeblossom.json create mode 100644 assets/minecraft/blockstates/resin_block.json create mode 100644 assets/minecraft/blockstates/resin_brick_slab.json create mode 100644 assets/minecraft/blockstates/resin_brick_stairs.json create mode 100644 assets/minecraft/blockstates/resin_brick_wall.json create mode 100644 assets/minecraft/blockstates/resin_bricks.json create mode 100644 assets/minecraft/blockstates/resin_clump.json rename assets/minecraft/{models => }/equipment/armadillo_scute.json (100%) rename assets/minecraft/{models => }/equipment/black_carpet.json (100%) rename assets/minecraft/{models => }/equipment/blue_carpet.json (100%) rename assets/minecraft/{models => }/equipment/brown_carpet.json (100%) rename assets/minecraft/{models => }/equipment/chainmail.json (100%) rename assets/minecraft/{models => }/equipment/cyan_carpet.json (100%) rename assets/minecraft/{models => }/equipment/diamond.json (100%) rename assets/minecraft/{models => }/equipment/elytra.json (100%) rename assets/minecraft/{models => }/equipment/gold.json (100%) rename assets/minecraft/{models => }/equipment/gray_carpet.json (100%) rename assets/minecraft/{models => }/equipment/green_carpet.json (100%) rename assets/minecraft/{models => }/equipment/iron.json (100%) rename assets/minecraft/{models => }/equipment/leather.json (100%) rename assets/minecraft/{models => }/equipment/light_blue_carpet.json (100%) rename assets/minecraft/{models => }/equipment/light_gray_carpet.json (100%) rename assets/minecraft/{models => }/equipment/lime_carpet.json (100%) rename assets/minecraft/{models => }/equipment/magenta_carpet.json (100%) rename assets/minecraft/{models => }/equipment/netherite.json (100%) rename assets/minecraft/{models => }/equipment/orange_carpet.json (100%) rename assets/minecraft/{models => }/equipment/pink_carpet.json (100%) rename assets/minecraft/{models => }/equipment/purple_carpet.json (100%) rename assets/minecraft/{models => }/equipment/red_carpet.json (100%) rename assets/minecraft/{models => }/equipment/trader_llama.json (100%) rename assets/minecraft/{models => }/equipment/turtle_scute.json (100%) rename assets/minecraft/{models => }/equipment/white_carpet.json (100%) rename assets/minecraft/{models => }/equipment/yellow_carpet.json (100%) create mode 100644 assets/minecraft/items/acacia_boat.json create mode 100644 assets/minecraft/items/acacia_button.json create mode 100644 assets/minecraft/items/acacia_chest_boat.json create mode 100644 assets/minecraft/items/acacia_door.json create mode 100644 assets/minecraft/items/acacia_fence.json create mode 100644 assets/minecraft/items/acacia_fence_gate.json create mode 100644 assets/minecraft/items/acacia_hanging_sign.json create mode 100644 assets/minecraft/items/acacia_leaves.json create mode 100644 assets/minecraft/items/acacia_log.json create mode 100644 assets/minecraft/items/acacia_planks.json create mode 100644 assets/minecraft/items/acacia_pressure_plate.json create mode 100644 assets/minecraft/items/acacia_sapling.json create mode 100644 assets/minecraft/items/acacia_sign.json create mode 100644 assets/minecraft/items/acacia_slab.json create mode 100644 assets/minecraft/items/acacia_stairs.json create mode 100644 assets/minecraft/items/acacia_trapdoor.json create mode 100644 assets/minecraft/items/acacia_wood.json create mode 100644 assets/minecraft/items/activator_rail.json create mode 100644 assets/minecraft/items/air.json create mode 100644 assets/minecraft/items/allay_spawn_egg.json create mode 100644 assets/minecraft/items/allium.json create mode 100644 assets/minecraft/items/amethyst_block.json create mode 100644 assets/minecraft/items/amethyst_cluster.json create mode 100644 assets/minecraft/items/amethyst_shard.json create mode 100644 assets/minecraft/items/ancient_debris.json create mode 100644 assets/minecraft/items/andesite.json create mode 100644 assets/minecraft/items/andesite_slab.json create mode 100644 assets/minecraft/items/andesite_stairs.json create mode 100644 assets/minecraft/items/andesite_wall.json create mode 100644 assets/minecraft/items/angler_pottery_sherd.json create mode 100644 assets/minecraft/items/anvil.json create mode 100644 assets/minecraft/items/apple.json create mode 100644 assets/minecraft/items/archer_pottery_sherd.json create mode 100644 assets/minecraft/items/armadillo_scute.json create mode 100644 assets/minecraft/items/armadillo_spawn_egg.json create mode 100644 assets/minecraft/items/armor_stand.json create mode 100644 assets/minecraft/items/arms_up_pottery_sherd.json create mode 100644 assets/minecraft/items/arrow.json create mode 100644 assets/minecraft/items/axolotl_bucket.json create mode 100644 assets/minecraft/items/axolotl_spawn_egg.json create mode 100644 assets/minecraft/items/azalea.json create mode 100644 assets/minecraft/items/azalea_leaves.json create mode 100644 assets/minecraft/items/azure_bluet.json create mode 100644 assets/minecraft/items/baked_potato.json create mode 100644 assets/minecraft/items/bamboo.json create mode 100644 assets/minecraft/items/bamboo_block.json create mode 100644 assets/minecraft/items/bamboo_button.json create mode 100644 assets/minecraft/items/bamboo_chest_raft.json create mode 100644 assets/minecraft/items/bamboo_door.json create mode 100644 assets/minecraft/items/bamboo_fence.json create mode 100644 assets/minecraft/items/bamboo_fence_gate.json create mode 100644 assets/minecraft/items/bamboo_hanging_sign.json create mode 100644 assets/minecraft/items/bamboo_mosaic.json create mode 100644 assets/minecraft/items/bamboo_mosaic_slab.json create mode 100644 assets/minecraft/items/bamboo_mosaic_stairs.json create mode 100644 assets/minecraft/items/bamboo_planks.json create mode 100644 assets/minecraft/items/bamboo_pressure_plate.json create mode 100644 assets/minecraft/items/bamboo_raft.json create mode 100644 assets/minecraft/items/bamboo_sign.json create mode 100644 assets/minecraft/items/bamboo_slab.json create mode 100644 assets/minecraft/items/bamboo_stairs.json create mode 100644 assets/minecraft/items/bamboo_trapdoor.json create mode 100644 assets/minecraft/items/barrel.json create mode 100644 assets/minecraft/items/barrier.json create mode 100644 assets/minecraft/items/basalt.json create mode 100644 assets/minecraft/items/bat_spawn_egg.json create mode 100644 assets/minecraft/items/beacon.json create mode 100644 assets/minecraft/items/bedrock.json create mode 100644 assets/minecraft/items/bee_nest.json create mode 100644 assets/minecraft/items/bee_spawn_egg.json create mode 100644 assets/minecraft/items/beef.json create mode 100644 assets/minecraft/items/beehive.json create mode 100644 assets/minecraft/items/beetroot.json create mode 100644 assets/minecraft/items/beetroot_seeds.json create mode 100644 assets/minecraft/items/beetroot_soup.json create mode 100644 assets/minecraft/items/bell.json create mode 100644 assets/minecraft/items/big_dripleaf.json create mode 100644 assets/minecraft/items/birch_boat.json create mode 100644 assets/minecraft/items/birch_button.json create mode 100644 assets/minecraft/items/birch_chest_boat.json create mode 100644 assets/minecraft/items/birch_door.json create mode 100644 assets/minecraft/items/birch_fence.json create mode 100644 assets/minecraft/items/birch_fence_gate.json create mode 100644 assets/minecraft/items/birch_hanging_sign.json create mode 100644 assets/minecraft/items/birch_leaves.json create mode 100644 assets/minecraft/items/birch_log.json create mode 100644 assets/minecraft/items/birch_planks.json create mode 100644 assets/minecraft/items/birch_pressure_plate.json create mode 100644 assets/minecraft/items/birch_sapling.json create mode 100644 assets/minecraft/items/birch_sign.json create mode 100644 assets/minecraft/items/birch_slab.json create mode 100644 assets/minecraft/items/birch_stairs.json create mode 100644 assets/minecraft/items/birch_trapdoor.json create mode 100644 assets/minecraft/items/birch_wood.json create mode 100644 assets/minecraft/items/black_banner.json create mode 100644 assets/minecraft/items/black_bed.json create mode 100644 assets/minecraft/items/black_bundle.json create mode 100644 assets/minecraft/items/black_candle.json create mode 100644 assets/minecraft/items/black_carpet.json create mode 100644 assets/minecraft/items/black_concrete.json create mode 100644 assets/minecraft/items/black_concrete_powder.json create mode 100644 assets/minecraft/items/black_dye.json create mode 100644 assets/minecraft/items/black_glazed_terracotta.json create mode 100644 assets/minecraft/items/black_shulker_box.json create mode 100644 assets/minecraft/items/black_stained_glass.json create mode 100644 assets/minecraft/items/black_stained_glass_pane.json create mode 100644 assets/minecraft/items/black_terracotta.json create mode 100644 assets/minecraft/items/black_wool.json create mode 100644 assets/minecraft/items/blackstone.json create mode 100644 assets/minecraft/items/blackstone_slab.json create mode 100644 assets/minecraft/items/blackstone_stairs.json create mode 100644 assets/minecraft/items/blackstone_wall.json create mode 100644 assets/minecraft/items/blade_pottery_sherd.json create mode 100644 assets/minecraft/items/blast_furnace.json create mode 100644 assets/minecraft/items/blaze_powder.json create mode 100644 assets/minecraft/items/blaze_rod.json create mode 100644 assets/minecraft/items/blaze_spawn_egg.json create mode 100644 assets/minecraft/items/blue_banner.json create mode 100644 assets/minecraft/items/blue_bed.json create mode 100644 assets/minecraft/items/blue_bundle.json create mode 100644 assets/minecraft/items/blue_candle.json create mode 100644 assets/minecraft/items/blue_carpet.json create mode 100644 assets/minecraft/items/blue_concrete.json create mode 100644 assets/minecraft/items/blue_concrete_powder.json create mode 100644 assets/minecraft/items/blue_dye.json create mode 100644 assets/minecraft/items/blue_glazed_terracotta.json create mode 100644 assets/minecraft/items/blue_ice.json create mode 100644 assets/minecraft/items/blue_orchid.json create mode 100644 assets/minecraft/items/blue_shulker_box.json create mode 100644 assets/minecraft/items/blue_stained_glass.json create mode 100644 assets/minecraft/items/blue_stained_glass_pane.json create mode 100644 assets/minecraft/items/blue_terracotta.json create mode 100644 assets/minecraft/items/blue_wool.json create mode 100644 assets/minecraft/items/bogged_spawn_egg.json create mode 100644 assets/minecraft/items/bolt_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/bone.json create mode 100644 assets/minecraft/items/bone_block.json create mode 100644 assets/minecraft/items/bone_meal.json create mode 100644 assets/minecraft/items/book.json create mode 100644 assets/minecraft/items/bookshelf.json create mode 100644 assets/minecraft/items/bordure_indented_banner_pattern.json create mode 100644 assets/minecraft/items/bow.json create mode 100644 assets/minecraft/items/bowl.json create mode 100644 assets/minecraft/items/brain_coral.json create mode 100644 assets/minecraft/items/brain_coral_block.json create mode 100644 assets/minecraft/items/brain_coral_fan.json create mode 100644 assets/minecraft/items/bread.json create mode 100644 assets/minecraft/items/breeze_rod.json create mode 100644 assets/minecraft/items/breeze_spawn_egg.json create mode 100644 assets/minecraft/items/brewer_pottery_sherd.json create mode 100644 assets/minecraft/items/brewing_stand.json create mode 100644 assets/minecraft/items/brick.json create mode 100644 assets/minecraft/items/brick_slab.json create mode 100644 assets/minecraft/items/brick_stairs.json create mode 100644 assets/minecraft/items/brick_wall.json create mode 100644 assets/minecraft/items/bricks.json create mode 100644 assets/minecraft/items/brown_banner.json create mode 100644 assets/minecraft/items/brown_bed.json create mode 100644 assets/minecraft/items/brown_bundle.json create mode 100644 assets/minecraft/items/brown_candle.json create mode 100644 assets/minecraft/items/brown_carpet.json create mode 100644 assets/minecraft/items/brown_concrete.json create mode 100644 assets/minecraft/items/brown_concrete_powder.json create mode 100644 assets/minecraft/items/brown_dye.json create mode 100644 assets/minecraft/items/brown_glazed_terracotta.json create mode 100644 assets/minecraft/items/brown_mushroom.json create mode 100644 assets/minecraft/items/brown_mushroom_block.json create mode 100644 assets/minecraft/items/brown_shulker_box.json create mode 100644 assets/minecraft/items/brown_stained_glass.json create mode 100644 assets/minecraft/items/brown_stained_glass_pane.json create mode 100644 assets/minecraft/items/brown_terracotta.json create mode 100644 assets/minecraft/items/brown_wool.json create mode 100644 assets/minecraft/items/brush.json create mode 100644 assets/minecraft/items/bubble_coral.json create mode 100644 assets/minecraft/items/bubble_coral_block.json create mode 100644 assets/minecraft/items/bubble_coral_fan.json create mode 100644 assets/minecraft/items/bucket.json create mode 100644 assets/minecraft/items/budding_amethyst.json create mode 100644 assets/minecraft/items/bundle.json create mode 100644 assets/minecraft/items/burn_pottery_sherd.json create mode 100644 assets/minecraft/items/cactus.json create mode 100644 assets/minecraft/items/cake.json create mode 100644 assets/minecraft/items/calcite.json create mode 100644 assets/minecraft/items/calibrated_sculk_sensor.json create mode 100644 assets/minecraft/items/camel_spawn_egg.json create mode 100644 assets/minecraft/items/campfire.json create mode 100644 assets/minecraft/items/candle.json create mode 100644 assets/minecraft/items/carrot.json create mode 100644 assets/minecraft/items/carrot_on_a_stick.json create mode 100644 assets/minecraft/items/cartography_table.json create mode 100644 assets/minecraft/items/carved_pumpkin.json create mode 100644 assets/minecraft/items/cat_spawn_egg.json create mode 100644 assets/minecraft/items/cauldron.json create mode 100644 assets/minecraft/items/cave_spider_spawn_egg.json create mode 100644 assets/minecraft/items/chain.json create mode 100644 assets/minecraft/items/chain_command_block.json create mode 100644 assets/minecraft/items/chainmail_boots.json create mode 100644 assets/minecraft/items/chainmail_chestplate.json create mode 100644 assets/minecraft/items/chainmail_helmet.json create mode 100644 assets/minecraft/items/chainmail_leggings.json create mode 100644 assets/minecraft/items/charcoal.json create mode 100644 assets/minecraft/items/cherry_boat.json create mode 100644 assets/minecraft/items/cherry_button.json create mode 100644 assets/minecraft/items/cherry_chest_boat.json create mode 100644 assets/minecraft/items/cherry_door.json create mode 100644 assets/minecraft/items/cherry_fence.json create mode 100644 assets/minecraft/items/cherry_fence_gate.json create mode 100644 assets/minecraft/items/cherry_hanging_sign.json create mode 100644 assets/minecraft/items/cherry_leaves.json create mode 100644 assets/minecraft/items/cherry_log.json create mode 100644 assets/minecraft/items/cherry_planks.json create mode 100644 assets/minecraft/items/cherry_pressure_plate.json create mode 100644 assets/minecraft/items/cherry_sapling.json create mode 100644 assets/minecraft/items/cherry_sign.json create mode 100644 assets/minecraft/items/cherry_slab.json create mode 100644 assets/minecraft/items/cherry_stairs.json create mode 100644 assets/minecraft/items/cherry_trapdoor.json create mode 100644 assets/minecraft/items/cherry_wood.json create mode 100644 assets/minecraft/items/chest.json create mode 100644 assets/minecraft/items/chest_minecart.json create mode 100644 assets/minecraft/items/chicken.json create mode 100644 assets/minecraft/items/chicken_spawn_egg.json create mode 100644 assets/minecraft/items/chipped_anvil.json create mode 100644 assets/minecraft/items/chiseled_bookshelf.json create mode 100644 assets/minecraft/items/chiseled_copper.json create mode 100644 assets/minecraft/items/chiseled_deepslate.json create mode 100644 assets/minecraft/items/chiseled_nether_bricks.json create mode 100644 assets/minecraft/items/chiseled_polished_blackstone.json create mode 100644 assets/minecraft/items/chiseled_quartz_block.json create mode 100644 assets/minecraft/items/chiseled_red_sandstone.json create mode 100644 assets/minecraft/items/chiseled_resin_bricks.json create mode 100644 assets/minecraft/items/chiseled_sandstone.json create mode 100644 assets/minecraft/items/chiseled_stone_bricks.json create mode 100644 assets/minecraft/items/chiseled_tuff.json create mode 100644 assets/minecraft/items/chiseled_tuff_bricks.json create mode 100644 assets/minecraft/items/chorus_flower.json create mode 100644 assets/minecraft/items/chorus_fruit.json create mode 100644 assets/minecraft/items/chorus_plant.json create mode 100644 assets/minecraft/items/clay.json create mode 100644 assets/minecraft/items/clay_ball.json create mode 100644 assets/minecraft/items/clock.json create mode 100644 assets/minecraft/items/closed_eyeblossom.json create mode 100644 assets/minecraft/items/coal.json create mode 100644 assets/minecraft/items/coal_block.json create mode 100644 assets/minecraft/items/coal_ore.json create mode 100644 assets/minecraft/items/coarse_dirt.json create mode 100644 assets/minecraft/items/coast_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/cobbled_deepslate.json create mode 100644 assets/minecraft/items/cobbled_deepslate_slab.json create mode 100644 assets/minecraft/items/cobbled_deepslate_stairs.json create mode 100644 assets/minecraft/items/cobbled_deepslate_wall.json create mode 100644 assets/minecraft/items/cobblestone.json create mode 100644 assets/minecraft/items/cobblestone_slab.json create mode 100644 assets/minecraft/items/cobblestone_stairs.json create mode 100644 assets/minecraft/items/cobblestone_wall.json create mode 100644 assets/minecraft/items/cobweb.json create mode 100644 assets/minecraft/items/cocoa_beans.json create mode 100644 assets/minecraft/items/cod.json create mode 100644 assets/minecraft/items/cod_bucket.json create mode 100644 assets/minecraft/items/cod_spawn_egg.json create mode 100644 assets/minecraft/items/command_block.json create mode 100644 assets/minecraft/items/command_block_minecart.json create mode 100644 assets/minecraft/items/comparator.json create mode 100644 assets/minecraft/items/compass.json create mode 100644 assets/minecraft/items/composter.json create mode 100644 assets/minecraft/items/conduit.json create mode 100644 assets/minecraft/items/cooked_beef.json create mode 100644 assets/minecraft/items/cooked_chicken.json create mode 100644 assets/minecraft/items/cooked_cod.json create mode 100644 assets/minecraft/items/cooked_mutton.json create mode 100644 assets/minecraft/items/cooked_porkchop.json create mode 100644 assets/minecraft/items/cooked_rabbit.json create mode 100644 assets/minecraft/items/cooked_salmon.json create mode 100644 assets/minecraft/items/cookie.json create mode 100644 assets/minecraft/items/copper_block.json create mode 100644 assets/minecraft/items/copper_bulb.json create mode 100644 assets/minecraft/items/copper_door.json create mode 100644 assets/minecraft/items/copper_grate.json create mode 100644 assets/minecraft/items/copper_ingot.json create mode 100644 assets/minecraft/items/copper_ore.json create mode 100644 assets/minecraft/items/copper_trapdoor.json create mode 100644 assets/minecraft/items/cornflower.json create mode 100644 assets/minecraft/items/cow_spawn_egg.json create mode 100644 assets/minecraft/items/cracked_deepslate_bricks.json create mode 100644 assets/minecraft/items/cracked_deepslate_tiles.json create mode 100644 assets/minecraft/items/cracked_nether_bricks.json create mode 100644 assets/minecraft/items/cracked_polished_blackstone_bricks.json create mode 100644 assets/minecraft/items/cracked_stone_bricks.json create mode 100644 assets/minecraft/items/crafter.json create mode 100644 assets/minecraft/items/crafting_table.json create mode 100644 assets/minecraft/items/creaking_heart.json create mode 100644 assets/minecraft/items/creaking_spawn_egg.json create mode 100644 assets/minecraft/items/creeper_banner_pattern.json create mode 100644 assets/minecraft/items/creeper_head.json create mode 100644 assets/minecraft/items/creeper_spawn_egg.json create mode 100644 assets/minecraft/items/crimson_button.json create mode 100644 assets/minecraft/items/crimson_door.json create mode 100644 assets/minecraft/items/crimson_fence.json create mode 100644 assets/minecraft/items/crimson_fence_gate.json create mode 100644 assets/minecraft/items/crimson_fungus.json create mode 100644 assets/minecraft/items/crimson_hanging_sign.json create mode 100644 assets/minecraft/items/crimson_hyphae.json create mode 100644 assets/minecraft/items/crimson_nylium.json create mode 100644 assets/minecraft/items/crimson_planks.json create mode 100644 assets/minecraft/items/crimson_pressure_plate.json create mode 100644 assets/minecraft/items/crimson_roots.json create mode 100644 assets/minecraft/items/crimson_sign.json create mode 100644 assets/minecraft/items/crimson_slab.json create mode 100644 assets/minecraft/items/crimson_stairs.json create mode 100644 assets/minecraft/items/crimson_stem.json create mode 100644 assets/minecraft/items/crimson_trapdoor.json create mode 100644 assets/minecraft/items/crossbow.json create mode 100644 assets/minecraft/items/crying_obsidian.json create mode 100644 assets/minecraft/items/cut_copper.json create mode 100644 assets/minecraft/items/cut_copper_slab.json create mode 100644 assets/minecraft/items/cut_copper_stairs.json create mode 100644 assets/minecraft/items/cut_red_sandstone.json create mode 100644 assets/minecraft/items/cut_red_sandstone_slab.json create mode 100644 assets/minecraft/items/cut_sandstone.json create mode 100644 assets/minecraft/items/cut_sandstone_slab.json create mode 100644 assets/minecraft/items/cyan_banner.json create mode 100644 assets/minecraft/items/cyan_bed.json create mode 100644 assets/minecraft/items/cyan_bundle.json create mode 100644 assets/minecraft/items/cyan_candle.json create mode 100644 assets/minecraft/items/cyan_carpet.json create mode 100644 assets/minecraft/items/cyan_concrete.json create mode 100644 assets/minecraft/items/cyan_concrete_powder.json create mode 100644 assets/minecraft/items/cyan_dye.json create mode 100644 assets/minecraft/items/cyan_glazed_terracotta.json create mode 100644 assets/minecraft/items/cyan_shulker_box.json create mode 100644 assets/minecraft/items/cyan_stained_glass.json create mode 100644 assets/minecraft/items/cyan_stained_glass_pane.json create mode 100644 assets/minecraft/items/cyan_terracotta.json create mode 100644 assets/minecraft/items/cyan_wool.json create mode 100644 assets/minecraft/items/damaged_anvil.json create mode 100644 assets/minecraft/items/dandelion.json create mode 100644 assets/minecraft/items/danger_pottery_sherd.json create mode 100644 assets/minecraft/items/dark_oak_boat.json create mode 100644 assets/minecraft/items/dark_oak_button.json create mode 100644 assets/minecraft/items/dark_oak_chest_boat.json create mode 100644 assets/minecraft/items/dark_oak_door.json create mode 100644 assets/minecraft/items/dark_oak_fence.json create mode 100644 assets/minecraft/items/dark_oak_fence_gate.json create mode 100644 assets/minecraft/items/dark_oak_hanging_sign.json create mode 100644 assets/minecraft/items/dark_oak_leaves.json create mode 100644 assets/minecraft/items/dark_oak_log.json create mode 100644 assets/minecraft/items/dark_oak_planks.json create mode 100644 assets/minecraft/items/dark_oak_pressure_plate.json create mode 100644 assets/minecraft/items/dark_oak_sapling.json create mode 100644 assets/minecraft/items/dark_oak_sign.json create mode 100644 assets/minecraft/items/dark_oak_slab.json create mode 100644 assets/minecraft/items/dark_oak_stairs.json create mode 100644 assets/minecraft/items/dark_oak_trapdoor.json create mode 100644 assets/minecraft/items/dark_oak_wood.json create mode 100644 assets/minecraft/items/dark_prismarine.json create mode 100644 assets/minecraft/items/dark_prismarine_slab.json create mode 100644 assets/minecraft/items/dark_prismarine_stairs.json create mode 100644 assets/minecraft/items/daylight_detector.json create mode 100644 assets/minecraft/items/dead_brain_coral.json create mode 100644 assets/minecraft/items/dead_brain_coral_block.json create mode 100644 assets/minecraft/items/dead_brain_coral_fan.json create mode 100644 assets/minecraft/items/dead_bubble_coral.json create mode 100644 assets/minecraft/items/dead_bubble_coral_block.json create mode 100644 assets/minecraft/items/dead_bubble_coral_fan.json create mode 100644 assets/minecraft/items/dead_bush.json create mode 100644 assets/minecraft/items/dead_fire_coral.json create mode 100644 assets/minecraft/items/dead_fire_coral_block.json create mode 100644 assets/minecraft/items/dead_fire_coral_fan.json create mode 100644 assets/minecraft/items/dead_horn_coral.json create mode 100644 assets/minecraft/items/dead_horn_coral_block.json create mode 100644 assets/minecraft/items/dead_horn_coral_fan.json create mode 100644 assets/minecraft/items/dead_tube_coral.json create mode 100644 assets/minecraft/items/dead_tube_coral_block.json create mode 100644 assets/minecraft/items/dead_tube_coral_fan.json create mode 100644 assets/minecraft/items/debug_stick.json create mode 100644 assets/minecraft/items/decorated_pot.json create mode 100644 assets/minecraft/items/deepslate.json create mode 100644 assets/minecraft/items/deepslate_brick_slab.json create mode 100644 assets/minecraft/items/deepslate_brick_stairs.json create mode 100644 assets/minecraft/items/deepslate_brick_wall.json create mode 100644 assets/minecraft/items/deepslate_bricks.json create mode 100644 assets/minecraft/items/deepslate_coal_ore.json create mode 100644 assets/minecraft/items/deepslate_copper_ore.json create mode 100644 assets/minecraft/items/deepslate_diamond_ore.json create mode 100644 assets/minecraft/items/deepslate_emerald_ore.json create mode 100644 assets/minecraft/items/deepslate_gold_ore.json create mode 100644 assets/minecraft/items/deepslate_iron_ore.json create mode 100644 assets/minecraft/items/deepslate_lapis_ore.json create mode 100644 assets/minecraft/items/deepslate_redstone_ore.json create mode 100644 assets/minecraft/items/deepslate_tile_slab.json create mode 100644 assets/minecraft/items/deepslate_tile_stairs.json create mode 100644 assets/minecraft/items/deepslate_tile_wall.json create mode 100644 assets/minecraft/items/deepslate_tiles.json create mode 100644 assets/minecraft/items/detector_rail.json create mode 100644 assets/minecraft/items/diamond.json create mode 100644 assets/minecraft/items/diamond_axe.json create mode 100644 assets/minecraft/items/diamond_block.json create mode 100644 assets/minecraft/items/diamond_boots.json create mode 100644 assets/minecraft/items/diamond_chestplate.json create mode 100644 assets/minecraft/items/diamond_helmet.json create mode 100644 assets/minecraft/items/diamond_hoe.json create mode 100644 assets/minecraft/items/diamond_horse_armor.json create mode 100644 assets/minecraft/items/diamond_leggings.json create mode 100644 assets/minecraft/items/diamond_ore.json create mode 100644 assets/minecraft/items/diamond_pickaxe.json create mode 100644 assets/minecraft/items/diamond_shovel.json create mode 100644 assets/minecraft/items/diamond_sword.json create mode 100644 assets/minecraft/items/diorite.json create mode 100644 assets/minecraft/items/diorite_slab.json create mode 100644 assets/minecraft/items/diorite_stairs.json create mode 100644 assets/minecraft/items/diorite_wall.json create mode 100644 assets/minecraft/items/dirt.json create mode 100644 assets/minecraft/items/dirt_path.json create mode 100644 assets/minecraft/items/disc_fragment_5.json create mode 100644 assets/minecraft/items/dispenser.json create mode 100644 assets/minecraft/items/dolphin_spawn_egg.json create mode 100644 assets/minecraft/items/donkey_spawn_egg.json create mode 100644 assets/minecraft/items/dragon_breath.json create mode 100644 assets/minecraft/items/dragon_egg.json create mode 100644 assets/minecraft/items/dragon_head.json create mode 100644 assets/minecraft/items/dried_kelp.json create mode 100644 assets/minecraft/items/dried_kelp_block.json create mode 100644 assets/minecraft/items/dripstone_block.json create mode 100644 assets/minecraft/items/dropper.json create mode 100644 assets/minecraft/items/drowned_spawn_egg.json create mode 100644 assets/minecraft/items/dune_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/echo_shard.json create mode 100644 assets/minecraft/items/egg.json create mode 100644 assets/minecraft/items/elder_guardian_spawn_egg.json create mode 100644 assets/minecraft/items/elytra.json create mode 100644 assets/minecraft/items/emerald.json create mode 100644 assets/minecraft/items/emerald_block.json create mode 100644 assets/minecraft/items/emerald_ore.json create mode 100644 assets/minecraft/items/enchanted_book.json create mode 100644 assets/minecraft/items/enchanted_golden_apple.json create mode 100644 assets/minecraft/items/enchanting_table.json create mode 100644 assets/minecraft/items/end_crystal.json create mode 100644 assets/minecraft/items/end_portal_frame.json create mode 100644 assets/minecraft/items/end_rod.json create mode 100644 assets/minecraft/items/end_stone.json create mode 100644 assets/minecraft/items/end_stone_brick_slab.json create mode 100644 assets/minecraft/items/end_stone_brick_stairs.json create mode 100644 assets/minecraft/items/end_stone_brick_wall.json create mode 100644 assets/minecraft/items/end_stone_bricks.json create mode 100644 assets/minecraft/items/ender_chest.json create mode 100644 assets/minecraft/items/ender_dragon_spawn_egg.json create mode 100644 assets/minecraft/items/ender_eye.json create mode 100644 assets/minecraft/items/ender_pearl.json create mode 100644 assets/minecraft/items/enderman_spawn_egg.json create mode 100644 assets/minecraft/items/endermite_spawn_egg.json create mode 100644 assets/minecraft/items/evoker_spawn_egg.json create mode 100644 assets/minecraft/items/experience_bottle.json create mode 100644 assets/minecraft/items/explorer_pottery_sherd.json create mode 100644 assets/minecraft/items/exposed_chiseled_copper.json create mode 100644 assets/minecraft/items/exposed_copper.json create mode 100644 assets/minecraft/items/exposed_copper_bulb.json create mode 100644 assets/minecraft/items/exposed_copper_door.json create mode 100644 assets/minecraft/items/exposed_copper_grate.json create mode 100644 assets/minecraft/items/exposed_copper_trapdoor.json create mode 100644 assets/minecraft/items/exposed_cut_copper.json create mode 100644 assets/minecraft/items/exposed_cut_copper_slab.json create mode 100644 assets/minecraft/items/exposed_cut_copper_stairs.json create mode 100644 assets/minecraft/items/eye_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/farmland.json create mode 100644 assets/minecraft/items/feather.json create mode 100644 assets/minecraft/items/fermented_spider_eye.json create mode 100644 assets/minecraft/items/fern.json create mode 100644 assets/minecraft/items/field_masoned_banner_pattern.json create mode 100644 assets/minecraft/items/filled_map.json create mode 100644 assets/minecraft/items/fire_charge.json create mode 100644 assets/minecraft/items/fire_coral.json create mode 100644 assets/minecraft/items/fire_coral_block.json create mode 100644 assets/minecraft/items/fire_coral_fan.json create mode 100644 assets/minecraft/items/firework_rocket.json create mode 100644 assets/minecraft/items/firework_star.json create mode 100644 assets/minecraft/items/fishing_rod.json create mode 100644 assets/minecraft/items/fletching_table.json create mode 100644 assets/minecraft/items/flint.json create mode 100644 assets/minecraft/items/flint_and_steel.json create mode 100644 assets/minecraft/items/flow_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/flow_banner_pattern.json create mode 100644 assets/minecraft/items/flow_pottery_sherd.json create mode 100644 assets/minecraft/items/flower_banner_pattern.json create mode 100644 assets/minecraft/items/flower_pot.json create mode 100644 assets/minecraft/items/flowering_azalea.json create mode 100644 assets/minecraft/items/flowering_azalea_leaves.json create mode 100644 assets/minecraft/items/fox_spawn_egg.json create mode 100644 assets/minecraft/items/friend_pottery_sherd.json create mode 100644 assets/minecraft/items/frog_spawn_egg.json create mode 100644 assets/minecraft/items/frogspawn.json create mode 100644 assets/minecraft/items/furnace.json create mode 100644 assets/minecraft/items/furnace_minecart.json create mode 100644 assets/minecraft/items/ghast_spawn_egg.json create mode 100644 assets/minecraft/items/ghast_tear.json create mode 100644 assets/minecraft/items/gilded_blackstone.json create mode 100644 assets/minecraft/items/glass.json create mode 100644 assets/minecraft/items/glass_bottle.json create mode 100644 assets/minecraft/items/glass_pane.json create mode 100644 assets/minecraft/items/glistering_melon_slice.json create mode 100644 assets/minecraft/items/globe_banner_pattern.json create mode 100644 assets/minecraft/items/glow_berries.json create mode 100644 assets/minecraft/items/glow_ink_sac.json create mode 100644 assets/minecraft/items/glow_item_frame.json create mode 100644 assets/minecraft/items/glow_lichen.json create mode 100644 assets/minecraft/items/glow_squid_spawn_egg.json create mode 100644 assets/minecraft/items/glowstone.json create mode 100644 assets/minecraft/items/glowstone_dust.json create mode 100644 assets/minecraft/items/goat_horn.json create mode 100644 assets/minecraft/items/goat_spawn_egg.json create mode 100644 assets/minecraft/items/gold_block.json create mode 100644 assets/minecraft/items/gold_ingot.json create mode 100644 assets/minecraft/items/gold_nugget.json create mode 100644 assets/minecraft/items/gold_ore.json create mode 100644 assets/minecraft/items/golden_apple.json create mode 100644 assets/minecraft/items/golden_axe.json create mode 100644 assets/minecraft/items/golden_boots.json create mode 100644 assets/minecraft/items/golden_carrot.json create mode 100644 assets/minecraft/items/golden_chestplate.json create mode 100644 assets/minecraft/items/golden_helmet.json create mode 100644 assets/minecraft/items/golden_hoe.json create mode 100644 assets/minecraft/items/golden_horse_armor.json create mode 100644 assets/minecraft/items/golden_leggings.json create mode 100644 assets/minecraft/items/golden_pickaxe.json create mode 100644 assets/minecraft/items/golden_shovel.json create mode 100644 assets/minecraft/items/golden_sword.json create mode 100644 assets/minecraft/items/granite.json create mode 100644 assets/minecraft/items/granite_slab.json create mode 100644 assets/minecraft/items/granite_stairs.json create mode 100644 assets/minecraft/items/granite_wall.json create mode 100644 assets/minecraft/items/grass_block.json create mode 100644 assets/minecraft/items/gravel.json create mode 100644 assets/minecraft/items/gray_banner.json create mode 100644 assets/minecraft/items/gray_bed.json create mode 100644 assets/minecraft/items/gray_bundle.json create mode 100644 assets/minecraft/items/gray_candle.json create mode 100644 assets/minecraft/items/gray_carpet.json create mode 100644 assets/minecraft/items/gray_concrete.json create mode 100644 assets/minecraft/items/gray_concrete_powder.json create mode 100644 assets/minecraft/items/gray_dye.json create mode 100644 assets/minecraft/items/gray_glazed_terracotta.json create mode 100644 assets/minecraft/items/gray_shulker_box.json create mode 100644 assets/minecraft/items/gray_stained_glass.json create mode 100644 assets/minecraft/items/gray_stained_glass_pane.json create mode 100644 assets/minecraft/items/gray_terracotta.json create mode 100644 assets/minecraft/items/gray_wool.json create mode 100644 assets/minecraft/items/green_banner.json create mode 100644 assets/minecraft/items/green_bed.json create mode 100644 assets/minecraft/items/green_bundle.json create mode 100644 assets/minecraft/items/green_candle.json create mode 100644 assets/minecraft/items/green_carpet.json create mode 100644 assets/minecraft/items/green_concrete.json create mode 100644 assets/minecraft/items/green_concrete_powder.json create mode 100644 assets/minecraft/items/green_dye.json create mode 100644 assets/minecraft/items/green_glazed_terracotta.json create mode 100644 assets/minecraft/items/green_shulker_box.json create mode 100644 assets/minecraft/items/green_stained_glass.json create mode 100644 assets/minecraft/items/green_stained_glass_pane.json create mode 100644 assets/minecraft/items/green_terracotta.json create mode 100644 assets/minecraft/items/green_wool.json create mode 100644 assets/minecraft/items/grindstone.json create mode 100644 assets/minecraft/items/guardian_spawn_egg.json create mode 100644 assets/minecraft/items/gunpowder.json create mode 100644 assets/minecraft/items/guster_banner_pattern.json create mode 100644 assets/minecraft/items/guster_pottery_sherd.json create mode 100644 assets/minecraft/items/hanging_roots.json create mode 100644 assets/minecraft/items/hay_block.json create mode 100644 assets/minecraft/items/heart_of_the_sea.json create mode 100644 assets/minecraft/items/heart_pottery_sherd.json create mode 100644 assets/minecraft/items/heartbreak_pottery_sherd.json create mode 100644 assets/minecraft/items/heavy_core.json create mode 100644 assets/minecraft/items/heavy_weighted_pressure_plate.json create mode 100644 assets/minecraft/items/hoglin_spawn_egg.json create mode 100644 assets/minecraft/items/honey_block.json create mode 100644 assets/minecraft/items/honey_bottle.json create mode 100644 assets/minecraft/items/honeycomb.json create mode 100644 assets/minecraft/items/honeycomb_block.json create mode 100644 assets/minecraft/items/hopper.json create mode 100644 assets/minecraft/items/hopper_minecart.json create mode 100644 assets/minecraft/items/horn_coral.json create mode 100644 assets/minecraft/items/horn_coral_block.json create mode 100644 assets/minecraft/items/horn_coral_fan.json create mode 100644 assets/minecraft/items/horse_spawn_egg.json create mode 100644 assets/minecraft/items/host_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/howl_pottery_sherd.json create mode 100644 assets/minecraft/items/husk_spawn_egg.json create mode 100644 assets/minecraft/items/ice.json create mode 100644 assets/minecraft/items/infested_chiseled_stone_bricks.json create mode 100644 assets/minecraft/items/infested_cobblestone.json create mode 100644 assets/minecraft/items/infested_cracked_stone_bricks.json create mode 100644 assets/minecraft/items/infested_deepslate.json create mode 100644 assets/minecraft/items/infested_mossy_stone_bricks.json create mode 100644 assets/minecraft/items/infested_stone.json create mode 100644 assets/minecraft/items/infested_stone_bricks.json create mode 100644 assets/minecraft/items/ink_sac.json create mode 100644 assets/minecraft/items/iron_axe.json create mode 100644 assets/minecraft/items/iron_bars.json create mode 100644 assets/minecraft/items/iron_block.json create mode 100644 assets/minecraft/items/iron_boots.json create mode 100644 assets/minecraft/items/iron_chestplate.json create mode 100644 assets/minecraft/items/iron_door.json create mode 100644 assets/minecraft/items/iron_golem_spawn_egg.json create mode 100644 assets/minecraft/items/iron_helmet.json create mode 100644 assets/minecraft/items/iron_hoe.json create mode 100644 assets/minecraft/items/iron_horse_armor.json create mode 100644 assets/minecraft/items/iron_ingot.json create mode 100644 assets/minecraft/items/iron_leggings.json create mode 100644 assets/minecraft/items/iron_nugget.json create mode 100644 assets/minecraft/items/iron_ore.json create mode 100644 assets/minecraft/items/iron_pickaxe.json create mode 100644 assets/minecraft/items/iron_shovel.json create mode 100644 assets/minecraft/items/iron_sword.json create mode 100644 assets/minecraft/items/iron_trapdoor.json create mode 100644 assets/minecraft/items/item_frame.json create mode 100644 assets/minecraft/items/jack_o_lantern.json create mode 100644 assets/minecraft/items/jigsaw.json create mode 100644 assets/minecraft/items/jukebox.json create mode 100644 assets/minecraft/items/jungle_boat.json create mode 100644 assets/minecraft/items/jungle_button.json create mode 100644 assets/minecraft/items/jungle_chest_boat.json create mode 100644 assets/minecraft/items/jungle_door.json create mode 100644 assets/minecraft/items/jungle_fence.json create mode 100644 assets/minecraft/items/jungle_fence_gate.json create mode 100644 assets/minecraft/items/jungle_hanging_sign.json create mode 100644 assets/minecraft/items/jungle_leaves.json create mode 100644 assets/minecraft/items/jungle_log.json create mode 100644 assets/minecraft/items/jungle_planks.json create mode 100644 assets/minecraft/items/jungle_pressure_plate.json create mode 100644 assets/minecraft/items/jungle_sapling.json create mode 100644 assets/minecraft/items/jungle_sign.json create mode 100644 assets/minecraft/items/jungle_slab.json create mode 100644 assets/minecraft/items/jungle_stairs.json create mode 100644 assets/minecraft/items/jungle_trapdoor.json create mode 100644 assets/minecraft/items/jungle_wood.json create mode 100644 assets/minecraft/items/kelp.json create mode 100644 assets/minecraft/items/knowledge_book.json create mode 100644 assets/minecraft/items/ladder.json create mode 100644 assets/minecraft/items/lantern.json create mode 100644 assets/minecraft/items/lapis_block.json create mode 100644 assets/minecraft/items/lapis_lazuli.json create mode 100644 assets/minecraft/items/lapis_ore.json create mode 100644 assets/minecraft/items/large_amethyst_bud.json create mode 100644 assets/minecraft/items/large_fern.json create mode 100644 assets/minecraft/items/lava_bucket.json create mode 100644 assets/minecraft/items/lead.json create mode 100644 assets/minecraft/items/leather.json create mode 100644 assets/minecraft/items/leather_boots.json create mode 100644 assets/minecraft/items/leather_chestplate.json create mode 100644 assets/minecraft/items/leather_helmet.json create mode 100644 assets/minecraft/items/leather_horse_armor.json create mode 100644 assets/minecraft/items/leather_leggings.json create mode 100644 assets/minecraft/items/lectern.json create mode 100644 assets/minecraft/items/lever.json create mode 100644 assets/minecraft/items/light.json create mode 100644 assets/minecraft/items/light_blue_banner.json create mode 100644 assets/minecraft/items/light_blue_bed.json create mode 100644 assets/minecraft/items/light_blue_bundle.json create mode 100644 assets/minecraft/items/light_blue_candle.json create mode 100644 assets/minecraft/items/light_blue_carpet.json create mode 100644 assets/minecraft/items/light_blue_concrete.json create mode 100644 assets/minecraft/items/light_blue_concrete_powder.json create mode 100644 assets/minecraft/items/light_blue_dye.json create mode 100644 assets/minecraft/items/light_blue_glazed_terracotta.json create mode 100644 assets/minecraft/items/light_blue_shulker_box.json create mode 100644 assets/minecraft/items/light_blue_stained_glass.json create mode 100644 assets/minecraft/items/light_blue_stained_glass_pane.json create mode 100644 assets/minecraft/items/light_blue_terracotta.json create mode 100644 assets/minecraft/items/light_blue_wool.json create mode 100644 assets/minecraft/items/light_gray_banner.json create mode 100644 assets/minecraft/items/light_gray_bed.json create mode 100644 assets/minecraft/items/light_gray_bundle.json create mode 100644 assets/minecraft/items/light_gray_candle.json create mode 100644 assets/minecraft/items/light_gray_carpet.json create mode 100644 assets/minecraft/items/light_gray_concrete.json create mode 100644 assets/minecraft/items/light_gray_concrete_powder.json create mode 100644 assets/minecraft/items/light_gray_dye.json create mode 100644 assets/minecraft/items/light_gray_glazed_terracotta.json create mode 100644 assets/minecraft/items/light_gray_shulker_box.json create mode 100644 assets/minecraft/items/light_gray_stained_glass.json create mode 100644 assets/minecraft/items/light_gray_stained_glass_pane.json create mode 100644 assets/minecraft/items/light_gray_terracotta.json create mode 100644 assets/minecraft/items/light_gray_wool.json create mode 100644 assets/minecraft/items/light_weighted_pressure_plate.json create mode 100644 assets/minecraft/items/lightning_rod.json create mode 100644 assets/minecraft/items/lilac.json create mode 100644 assets/minecraft/items/lily_of_the_valley.json create mode 100644 assets/minecraft/items/lily_pad.json create mode 100644 assets/minecraft/items/lime_banner.json create mode 100644 assets/minecraft/items/lime_bed.json create mode 100644 assets/minecraft/items/lime_bundle.json create mode 100644 assets/minecraft/items/lime_candle.json create mode 100644 assets/minecraft/items/lime_carpet.json create mode 100644 assets/minecraft/items/lime_concrete.json create mode 100644 assets/minecraft/items/lime_concrete_powder.json create mode 100644 assets/minecraft/items/lime_dye.json create mode 100644 assets/minecraft/items/lime_glazed_terracotta.json create mode 100644 assets/minecraft/items/lime_shulker_box.json create mode 100644 assets/minecraft/items/lime_stained_glass.json create mode 100644 assets/minecraft/items/lime_stained_glass_pane.json create mode 100644 assets/minecraft/items/lime_terracotta.json create mode 100644 assets/minecraft/items/lime_wool.json create mode 100644 assets/minecraft/items/lingering_potion.json create mode 100644 assets/minecraft/items/llama_spawn_egg.json create mode 100644 assets/minecraft/items/lodestone.json create mode 100644 assets/minecraft/items/loom.json create mode 100644 assets/minecraft/items/mace.json create mode 100644 assets/minecraft/items/magenta_banner.json create mode 100644 assets/minecraft/items/magenta_bed.json create mode 100644 assets/minecraft/items/magenta_bundle.json create mode 100644 assets/minecraft/items/magenta_candle.json create mode 100644 assets/minecraft/items/magenta_carpet.json create mode 100644 assets/minecraft/items/magenta_concrete.json create mode 100644 assets/minecraft/items/magenta_concrete_powder.json create mode 100644 assets/minecraft/items/magenta_dye.json create mode 100644 assets/minecraft/items/magenta_glazed_terracotta.json create mode 100644 assets/minecraft/items/magenta_shulker_box.json create mode 100644 assets/minecraft/items/magenta_stained_glass.json create mode 100644 assets/minecraft/items/magenta_stained_glass_pane.json create mode 100644 assets/minecraft/items/magenta_terracotta.json create mode 100644 assets/minecraft/items/magenta_wool.json create mode 100644 assets/minecraft/items/magma_block.json create mode 100644 assets/minecraft/items/magma_cream.json create mode 100644 assets/minecraft/items/magma_cube_spawn_egg.json create mode 100644 assets/minecraft/items/mangrove_boat.json create mode 100644 assets/minecraft/items/mangrove_button.json create mode 100644 assets/minecraft/items/mangrove_chest_boat.json create mode 100644 assets/minecraft/items/mangrove_door.json create mode 100644 assets/minecraft/items/mangrove_fence.json create mode 100644 assets/minecraft/items/mangrove_fence_gate.json create mode 100644 assets/minecraft/items/mangrove_hanging_sign.json create mode 100644 assets/minecraft/items/mangrove_leaves.json create mode 100644 assets/minecraft/items/mangrove_log.json create mode 100644 assets/minecraft/items/mangrove_planks.json create mode 100644 assets/minecraft/items/mangrove_pressure_plate.json create mode 100644 assets/minecraft/items/mangrove_propagule.json create mode 100644 assets/minecraft/items/mangrove_roots.json create mode 100644 assets/minecraft/items/mangrove_sign.json create mode 100644 assets/minecraft/items/mangrove_slab.json create mode 100644 assets/minecraft/items/mangrove_stairs.json create mode 100644 assets/minecraft/items/mangrove_trapdoor.json create mode 100644 assets/minecraft/items/mangrove_wood.json create mode 100644 assets/minecraft/items/map.json create mode 100644 assets/minecraft/items/medium_amethyst_bud.json create mode 100644 assets/minecraft/items/melon.json create mode 100644 assets/minecraft/items/melon_seeds.json create mode 100644 assets/minecraft/items/melon_slice.json create mode 100644 assets/minecraft/items/milk_bucket.json create mode 100644 assets/minecraft/items/minecart.json create mode 100644 assets/minecraft/items/miner_pottery_sherd.json create mode 100644 assets/minecraft/items/mojang_banner_pattern.json create mode 100644 assets/minecraft/items/mooshroom_spawn_egg.json create mode 100644 assets/minecraft/items/moss_block.json create mode 100644 assets/minecraft/items/moss_carpet.json create mode 100644 assets/minecraft/items/mossy_cobblestone.json create mode 100644 assets/minecraft/items/mossy_cobblestone_slab.json create mode 100644 assets/minecraft/items/mossy_cobblestone_stairs.json create mode 100644 assets/minecraft/items/mossy_cobblestone_wall.json create mode 100644 assets/minecraft/items/mossy_stone_brick_slab.json create mode 100644 assets/minecraft/items/mossy_stone_brick_stairs.json create mode 100644 assets/minecraft/items/mossy_stone_brick_wall.json create mode 100644 assets/minecraft/items/mossy_stone_bricks.json create mode 100644 assets/minecraft/items/mourner_pottery_sherd.json create mode 100644 assets/minecraft/items/mud.json create mode 100644 assets/minecraft/items/mud_brick_slab.json create mode 100644 assets/minecraft/items/mud_brick_stairs.json create mode 100644 assets/minecraft/items/mud_brick_wall.json create mode 100644 assets/minecraft/items/mud_bricks.json create mode 100644 assets/minecraft/items/muddy_mangrove_roots.json create mode 100644 assets/minecraft/items/mule_spawn_egg.json create mode 100644 assets/minecraft/items/mushroom_stem.json create mode 100644 assets/minecraft/items/mushroom_stew.json create mode 100644 assets/minecraft/items/music_disc_11.json create mode 100644 assets/minecraft/items/music_disc_13.json create mode 100644 assets/minecraft/items/music_disc_5.json create mode 100644 assets/minecraft/items/music_disc_blocks.json create mode 100644 assets/minecraft/items/music_disc_cat.json create mode 100644 assets/minecraft/items/music_disc_chirp.json create mode 100644 assets/minecraft/items/music_disc_creator.json create mode 100644 assets/minecraft/items/music_disc_creator_music_box.json create mode 100644 assets/minecraft/items/music_disc_far.json create mode 100644 assets/minecraft/items/music_disc_mall.json create mode 100644 assets/minecraft/items/music_disc_mellohi.json create mode 100644 assets/minecraft/items/music_disc_otherside.json create mode 100644 assets/minecraft/items/music_disc_pigstep.json create mode 100644 assets/minecraft/items/music_disc_precipice.json create mode 100644 assets/minecraft/items/music_disc_relic.json create mode 100644 assets/minecraft/items/music_disc_stal.json create mode 100644 assets/minecraft/items/music_disc_strad.json create mode 100644 assets/minecraft/items/music_disc_wait.json create mode 100644 assets/minecraft/items/music_disc_ward.json create mode 100644 assets/minecraft/items/mutton.json create mode 100644 assets/minecraft/items/mycelium.json create mode 100644 assets/minecraft/items/name_tag.json create mode 100644 assets/minecraft/items/nautilus_shell.json create mode 100644 assets/minecraft/items/nether_brick.json create mode 100644 assets/minecraft/items/nether_brick_fence.json create mode 100644 assets/minecraft/items/nether_brick_slab.json create mode 100644 assets/minecraft/items/nether_brick_stairs.json create mode 100644 assets/minecraft/items/nether_brick_wall.json create mode 100644 assets/minecraft/items/nether_bricks.json create mode 100644 assets/minecraft/items/nether_gold_ore.json create mode 100644 assets/minecraft/items/nether_quartz_ore.json create mode 100644 assets/minecraft/items/nether_sprouts.json create mode 100644 assets/minecraft/items/nether_star.json create mode 100644 assets/minecraft/items/nether_wart.json create mode 100644 assets/minecraft/items/nether_wart_block.json create mode 100644 assets/minecraft/items/netherite_axe.json create mode 100644 assets/minecraft/items/netherite_block.json create mode 100644 assets/minecraft/items/netherite_boots.json create mode 100644 assets/minecraft/items/netherite_chestplate.json create mode 100644 assets/minecraft/items/netherite_helmet.json create mode 100644 assets/minecraft/items/netherite_hoe.json create mode 100644 assets/minecraft/items/netherite_ingot.json create mode 100644 assets/minecraft/items/netherite_leggings.json create mode 100644 assets/minecraft/items/netherite_pickaxe.json create mode 100644 assets/minecraft/items/netherite_scrap.json create mode 100644 assets/minecraft/items/netherite_shovel.json create mode 100644 assets/minecraft/items/netherite_sword.json create mode 100644 assets/minecraft/items/netherite_upgrade_smithing_template.json create mode 100644 assets/minecraft/items/netherrack.json create mode 100644 assets/minecraft/items/note_block.json create mode 100644 assets/minecraft/items/oak_boat.json create mode 100644 assets/minecraft/items/oak_button.json create mode 100644 assets/minecraft/items/oak_chest_boat.json create mode 100644 assets/minecraft/items/oak_door.json create mode 100644 assets/minecraft/items/oak_fence.json create mode 100644 assets/minecraft/items/oak_fence_gate.json create mode 100644 assets/minecraft/items/oak_hanging_sign.json create mode 100644 assets/minecraft/items/oak_leaves.json create mode 100644 assets/minecraft/items/oak_log.json create mode 100644 assets/minecraft/items/oak_planks.json create mode 100644 assets/minecraft/items/oak_pressure_plate.json create mode 100644 assets/minecraft/items/oak_sapling.json create mode 100644 assets/minecraft/items/oak_sign.json create mode 100644 assets/minecraft/items/oak_slab.json create mode 100644 assets/minecraft/items/oak_stairs.json create mode 100644 assets/minecraft/items/oak_trapdoor.json create mode 100644 assets/minecraft/items/oak_wood.json create mode 100644 assets/minecraft/items/observer.json create mode 100644 assets/minecraft/items/obsidian.json create mode 100644 assets/minecraft/items/ocelot_spawn_egg.json create mode 100644 assets/minecraft/items/ochre_froglight.json create mode 100644 assets/minecraft/items/ominous_bottle.json create mode 100644 assets/minecraft/items/ominous_trial_key.json create mode 100644 assets/minecraft/items/open_eyeblossom.json create mode 100644 assets/minecraft/items/orange_banner.json create mode 100644 assets/minecraft/items/orange_bed.json create mode 100644 assets/minecraft/items/orange_bundle.json create mode 100644 assets/minecraft/items/orange_candle.json create mode 100644 assets/minecraft/items/orange_carpet.json create mode 100644 assets/minecraft/items/orange_concrete.json create mode 100644 assets/minecraft/items/orange_concrete_powder.json create mode 100644 assets/minecraft/items/orange_dye.json create mode 100644 assets/minecraft/items/orange_glazed_terracotta.json create mode 100644 assets/minecraft/items/orange_shulker_box.json create mode 100644 assets/minecraft/items/orange_stained_glass.json create mode 100644 assets/minecraft/items/orange_stained_glass_pane.json create mode 100644 assets/minecraft/items/orange_terracotta.json create mode 100644 assets/minecraft/items/orange_tulip.json create mode 100644 assets/minecraft/items/orange_wool.json create mode 100644 assets/minecraft/items/oxeye_daisy.json create mode 100644 assets/minecraft/items/oxidized_chiseled_copper.json create mode 100644 assets/minecraft/items/oxidized_copper.json create mode 100644 assets/minecraft/items/oxidized_copper_bulb.json create mode 100644 assets/minecraft/items/oxidized_copper_door.json create mode 100644 assets/minecraft/items/oxidized_copper_grate.json create mode 100644 assets/minecraft/items/oxidized_copper_trapdoor.json create mode 100644 assets/minecraft/items/oxidized_cut_copper.json create mode 100644 assets/minecraft/items/oxidized_cut_copper_slab.json create mode 100644 assets/minecraft/items/oxidized_cut_copper_stairs.json create mode 100644 assets/minecraft/items/packed_ice.json create mode 100644 assets/minecraft/items/packed_mud.json create mode 100644 assets/minecraft/items/painting.json create mode 100644 assets/minecraft/items/pale_hanging_moss.json create mode 100644 assets/minecraft/items/pale_moss_block.json create mode 100644 assets/minecraft/items/pale_moss_carpet.json create mode 100644 assets/minecraft/items/pale_oak_boat.json create mode 100644 assets/minecraft/items/pale_oak_button.json create mode 100644 assets/minecraft/items/pale_oak_chest_boat.json create mode 100644 assets/minecraft/items/pale_oak_door.json create mode 100644 assets/minecraft/items/pale_oak_fence.json create mode 100644 assets/minecraft/items/pale_oak_fence_gate.json create mode 100644 assets/minecraft/items/pale_oak_hanging_sign.json create mode 100644 assets/minecraft/items/pale_oak_leaves.json create mode 100644 assets/minecraft/items/pale_oak_log.json create mode 100644 assets/minecraft/items/pale_oak_planks.json create mode 100644 assets/minecraft/items/pale_oak_pressure_plate.json create mode 100644 assets/minecraft/items/pale_oak_sapling.json create mode 100644 assets/minecraft/items/pale_oak_sign.json create mode 100644 assets/minecraft/items/pale_oak_slab.json create mode 100644 assets/minecraft/items/pale_oak_stairs.json create mode 100644 assets/minecraft/items/pale_oak_trapdoor.json create mode 100644 assets/minecraft/items/pale_oak_wood.json create mode 100644 assets/minecraft/items/panda_spawn_egg.json create mode 100644 assets/minecraft/items/paper.json create mode 100644 assets/minecraft/items/parrot_spawn_egg.json create mode 100644 assets/minecraft/items/pearlescent_froglight.json create mode 100644 assets/minecraft/items/peony.json create mode 100644 assets/minecraft/items/petrified_oak_slab.json create mode 100644 assets/minecraft/items/phantom_membrane.json create mode 100644 assets/minecraft/items/phantom_spawn_egg.json create mode 100644 assets/minecraft/items/pig_spawn_egg.json create mode 100644 assets/minecraft/items/piglin_banner_pattern.json create mode 100644 assets/minecraft/items/piglin_brute_spawn_egg.json create mode 100644 assets/minecraft/items/piglin_head.json create mode 100644 assets/minecraft/items/piglin_spawn_egg.json create mode 100644 assets/minecraft/items/pillager_spawn_egg.json create mode 100644 assets/minecraft/items/pink_banner.json create mode 100644 assets/minecraft/items/pink_bed.json create mode 100644 assets/minecraft/items/pink_bundle.json create mode 100644 assets/minecraft/items/pink_candle.json create mode 100644 assets/minecraft/items/pink_carpet.json create mode 100644 assets/minecraft/items/pink_concrete.json create mode 100644 assets/minecraft/items/pink_concrete_powder.json create mode 100644 assets/minecraft/items/pink_dye.json create mode 100644 assets/minecraft/items/pink_glazed_terracotta.json create mode 100644 assets/minecraft/items/pink_petals.json create mode 100644 assets/minecraft/items/pink_shulker_box.json create mode 100644 assets/minecraft/items/pink_stained_glass.json create mode 100644 assets/minecraft/items/pink_stained_glass_pane.json create mode 100644 assets/minecraft/items/pink_terracotta.json create mode 100644 assets/minecraft/items/pink_tulip.json create mode 100644 assets/minecraft/items/pink_wool.json create mode 100644 assets/minecraft/items/piston.json create mode 100644 assets/minecraft/items/pitcher_plant.json create mode 100644 assets/minecraft/items/pitcher_pod.json create mode 100644 assets/minecraft/items/player_head.json create mode 100644 assets/minecraft/items/plenty_pottery_sherd.json create mode 100644 assets/minecraft/items/podzol.json create mode 100644 assets/minecraft/items/pointed_dripstone.json create mode 100644 assets/minecraft/items/poisonous_potato.json create mode 100644 assets/minecraft/items/polar_bear_spawn_egg.json create mode 100644 assets/minecraft/items/polished_andesite.json create mode 100644 assets/minecraft/items/polished_andesite_slab.json create mode 100644 assets/minecraft/items/polished_andesite_stairs.json create mode 100644 assets/minecraft/items/polished_basalt.json create mode 100644 assets/minecraft/items/polished_blackstone.json create mode 100644 assets/minecraft/items/polished_blackstone_brick_slab.json create mode 100644 assets/minecraft/items/polished_blackstone_brick_stairs.json create mode 100644 assets/minecraft/items/polished_blackstone_brick_wall.json create mode 100644 assets/minecraft/items/polished_blackstone_bricks.json create mode 100644 assets/minecraft/items/polished_blackstone_button.json create mode 100644 assets/minecraft/items/polished_blackstone_pressure_plate.json create mode 100644 assets/minecraft/items/polished_blackstone_slab.json create mode 100644 assets/minecraft/items/polished_blackstone_stairs.json create mode 100644 assets/minecraft/items/polished_blackstone_wall.json create mode 100644 assets/minecraft/items/polished_deepslate.json create mode 100644 assets/minecraft/items/polished_deepslate_slab.json create mode 100644 assets/minecraft/items/polished_deepslate_stairs.json create mode 100644 assets/minecraft/items/polished_deepslate_wall.json create mode 100644 assets/minecraft/items/polished_diorite.json create mode 100644 assets/minecraft/items/polished_diorite_slab.json create mode 100644 assets/minecraft/items/polished_diorite_stairs.json create mode 100644 assets/minecraft/items/polished_granite.json create mode 100644 assets/minecraft/items/polished_granite_slab.json create mode 100644 assets/minecraft/items/polished_granite_stairs.json create mode 100644 assets/minecraft/items/polished_tuff.json create mode 100644 assets/minecraft/items/polished_tuff_slab.json create mode 100644 assets/minecraft/items/polished_tuff_stairs.json create mode 100644 assets/minecraft/items/polished_tuff_wall.json create mode 100644 assets/minecraft/items/popped_chorus_fruit.json create mode 100644 assets/minecraft/items/poppy.json create mode 100644 assets/minecraft/items/porkchop.json create mode 100644 assets/minecraft/items/potato.json create mode 100644 assets/minecraft/items/potion.json create mode 100644 assets/minecraft/items/powder_snow_bucket.json create mode 100644 assets/minecraft/items/powered_rail.json create mode 100644 assets/minecraft/items/prismarine.json create mode 100644 assets/minecraft/items/prismarine_brick_slab.json create mode 100644 assets/minecraft/items/prismarine_brick_stairs.json create mode 100644 assets/minecraft/items/prismarine_bricks.json create mode 100644 assets/minecraft/items/prismarine_crystals.json create mode 100644 assets/minecraft/items/prismarine_shard.json create mode 100644 assets/minecraft/items/prismarine_slab.json create mode 100644 assets/minecraft/items/prismarine_stairs.json create mode 100644 assets/minecraft/items/prismarine_wall.json create mode 100644 assets/minecraft/items/prize_pottery_sherd.json create mode 100644 assets/minecraft/items/pufferfish.json create mode 100644 assets/minecraft/items/pufferfish_bucket.json create mode 100644 assets/minecraft/items/pufferfish_spawn_egg.json create mode 100644 assets/minecraft/items/pumpkin.json create mode 100644 assets/minecraft/items/pumpkin_pie.json create mode 100644 assets/minecraft/items/pumpkin_seeds.json create mode 100644 assets/minecraft/items/purple_banner.json create mode 100644 assets/minecraft/items/purple_bed.json create mode 100644 assets/minecraft/items/purple_bundle.json create mode 100644 assets/minecraft/items/purple_candle.json create mode 100644 assets/minecraft/items/purple_carpet.json create mode 100644 assets/minecraft/items/purple_concrete.json create mode 100644 assets/minecraft/items/purple_concrete_powder.json create mode 100644 assets/minecraft/items/purple_dye.json create mode 100644 assets/minecraft/items/purple_glazed_terracotta.json create mode 100644 assets/minecraft/items/purple_shulker_box.json create mode 100644 assets/minecraft/items/purple_stained_glass.json create mode 100644 assets/minecraft/items/purple_stained_glass_pane.json create mode 100644 assets/minecraft/items/purple_terracotta.json create mode 100644 assets/minecraft/items/purple_wool.json create mode 100644 assets/minecraft/items/purpur_block.json create mode 100644 assets/minecraft/items/purpur_pillar.json create mode 100644 assets/minecraft/items/purpur_slab.json create mode 100644 assets/minecraft/items/purpur_stairs.json create mode 100644 assets/minecraft/items/quartz.json create mode 100644 assets/minecraft/items/quartz_block.json create mode 100644 assets/minecraft/items/quartz_bricks.json create mode 100644 assets/minecraft/items/quartz_pillar.json create mode 100644 assets/minecraft/items/quartz_slab.json create mode 100644 assets/minecraft/items/quartz_stairs.json create mode 100644 assets/minecraft/items/rabbit.json create mode 100644 assets/minecraft/items/rabbit_foot.json create mode 100644 assets/minecraft/items/rabbit_hide.json create mode 100644 assets/minecraft/items/rabbit_spawn_egg.json create mode 100644 assets/minecraft/items/rabbit_stew.json create mode 100644 assets/minecraft/items/rail.json create mode 100644 assets/minecraft/items/raiser_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/ravager_spawn_egg.json create mode 100644 assets/minecraft/items/raw_copper.json create mode 100644 assets/minecraft/items/raw_copper_block.json create mode 100644 assets/minecraft/items/raw_gold.json create mode 100644 assets/minecraft/items/raw_gold_block.json create mode 100644 assets/minecraft/items/raw_iron.json create mode 100644 assets/minecraft/items/raw_iron_block.json create mode 100644 assets/minecraft/items/recovery_compass.json create mode 100644 assets/minecraft/items/red_banner.json create mode 100644 assets/minecraft/items/red_bed.json create mode 100644 assets/minecraft/items/red_bundle.json create mode 100644 assets/minecraft/items/red_candle.json create mode 100644 assets/minecraft/items/red_carpet.json create mode 100644 assets/minecraft/items/red_concrete.json create mode 100644 assets/minecraft/items/red_concrete_powder.json create mode 100644 assets/minecraft/items/red_dye.json create mode 100644 assets/minecraft/items/red_glazed_terracotta.json create mode 100644 assets/minecraft/items/red_mushroom.json create mode 100644 assets/minecraft/items/red_mushroom_block.json create mode 100644 assets/minecraft/items/red_nether_brick_slab.json create mode 100644 assets/minecraft/items/red_nether_brick_stairs.json create mode 100644 assets/minecraft/items/red_nether_brick_wall.json create mode 100644 assets/minecraft/items/red_nether_bricks.json create mode 100644 assets/minecraft/items/red_sand.json create mode 100644 assets/minecraft/items/red_sandstone.json create mode 100644 assets/minecraft/items/red_sandstone_slab.json create mode 100644 assets/minecraft/items/red_sandstone_stairs.json create mode 100644 assets/minecraft/items/red_sandstone_wall.json create mode 100644 assets/minecraft/items/red_shulker_box.json create mode 100644 assets/minecraft/items/red_stained_glass.json create mode 100644 assets/minecraft/items/red_stained_glass_pane.json create mode 100644 assets/minecraft/items/red_terracotta.json create mode 100644 assets/minecraft/items/red_tulip.json create mode 100644 assets/minecraft/items/red_wool.json create mode 100644 assets/minecraft/items/redstone.json create mode 100644 assets/minecraft/items/redstone_block.json create mode 100644 assets/minecraft/items/redstone_lamp.json create mode 100644 assets/minecraft/items/redstone_ore.json create mode 100644 assets/minecraft/items/redstone_torch.json create mode 100644 assets/minecraft/items/reinforced_deepslate.json create mode 100644 assets/minecraft/items/repeater.json create mode 100644 assets/minecraft/items/repeating_command_block.json create mode 100644 assets/minecraft/items/resin_block.json create mode 100644 assets/minecraft/items/resin_brick.json create mode 100644 assets/minecraft/items/resin_brick_slab.json create mode 100644 assets/minecraft/items/resin_brick_stairs.json create mode 100644 assets/minecraft/items/resin_brick_wall.json create mode 100644 assets/minecraft/items/resin_bricks.json create mode 100644 assets/minecraft/items/resin_clump.json create mode 100644 assets/minecraft/items/respawn_anchor.json create mode 100644 assets/minecraft/items/rib_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/rooted_dirt.json create mode 100644 assets/minecraft/items/rose_bush.json create mode 100644 assets/minecraft/items/rotten_flesh.json create mode 100644 assets/minecraft/items/saddle.json create mode 100644 assets/minecraft/items/salmon.json create mode 100644 assets/minecraft/items/salmon_bucket.json create mode 100644 assets/minecraft/items/salmon_spawn_egg.json create mode 100644 assets/minecraft/items/sand.json create mode 100644 assets/minecraft/items/sandstone.json create mode 100644 assets/minecraft/items/sandstone_slab.json create mode 100644 assets/minecraft/items/sandstone_stairs.json create mode 100644 assets/minecraft/items/sandstone_wall.json create mode 100644 assets/minecraft/items/scaffolding.json create mode 100644 assets/minecraft/items/scrape_pottery_sherd.json create mode 100644 assets/minecraft/items/sculk.json create mode 100644 assets/minecraft/items/sculk_catalyst.json create mode 100644 assets/minecraft/items/sculk_sensor.json create mode 100644 assets/minecraft/items/sculk_shrieker.json create mode 100644 assets/minecraft/items/sculk_vein.json create mode 100644 assets/minecraft/items/sea_lantern.json create mode 100644 assets/minecraft/items/sea_pickle.json create mode 100644 assets/minecraft/items/seagrass.json create mode 100644 assets/minecraft/items/sentry_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/shaper_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/sheaf_pottery_sherd.json create mode 100644 assets/minecraft/items/shears.json create mode 100644 assets/minecraft/items/sheep_spawn_egg.json create mode 100644 assets/minecraft/items/shelter_pottery_sherd.json create mode 100644 assets/minecraft/items/shield.json create mode 100644 assets/minecraft/items/short_grass.json create mode 100644 assets/minecraft/items/shroomlight.json create mode 100644 assets/minecraft/items/shulker_box.json create mode 100644 assets/minecraft/items/shulker_shell.json create mode 100644 assets/minecraft/items/shulker_spawn_egg.json create mode 100644 assets/minecraft/items/silence_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/silverfish_spawn_egg.json create mode 100644 assets/minecraft/items/skeleton_horse_spawn_egg.json create mode 100644 assets/minecraft/items/skeleton_skull.json create mode 100644 assets/minecraft/items/skeleton_spawn_egg.json create mode 100644 assets/minecraft/items/skull_banner_pattern.json create mode 100644 assets/minecraft/items/skull_pottery_sherd.json create mode 100644 assets/minecraft/items/slime_ball.json create mode 100644 assets/minecraft/items/slime_block.json create mode 100644 assets/minecraft/items/slime_spawn_egg.json create mode 100644 assets/minecraft/items/small_amethyst_bud.json create mode 100644 assets/minecraft/items/small_dripleaf.json create mode 100644 assets/minecraft/items/smithing_table.json create mode 100644 assets/minecraft/items/smoker.json create mode 100644 assets/minecraft/items/smooth_basalt.json create mode 100644 assets/minecraft/items/smooth_quartz.json create mode 100644 assets/minecraft/items/smooth_quartz_slab.json create mode 100644 assets/minecraft/items/smooth_quartz_stairs.json create mode 100644 assets/minecraft/items/smooth_red_sandstone.json create mode 100644 assets/minecraft/items/smooth_red_sandstone_slab.json create mode 100644 assets/minecraft/items/smooth_red_sandstone_stairs.json create mode 100644 assets/minecraft/items/smooth_sandstone.json create mode 100644 assets/minecraft/items/smooth_sandstone_slab.json create mode 100644 assets/minecraft/items/smooth_sandstone_stairs.json create mode 100644 assets/minecraft/items/smooth_stone.json create mode 100644 assets/minecraft/items/smooth_stone_slab.json create mode 100644 assets/minecraft/items/sniffer_egg.json create mode 100644 assets/minecraft/items/sniffer_spawn_egg.json create mode 100644 assets/minecraft/items/snort_pottery_sherd.json create mode 100644 assets/minecraft/items/snout_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/snow.json create mode 100644 assets/minecraft/items/snow_block.json create mode 100644 assets/minecraft/items/snow_golem_spawn_egg.json create mode 100644 assets/minecraft/items/snowball.json create mode 100644 assets/minecraft/items/soul_campfire.json create mode 100644 assets/minecraft/items/soul_lantern.json create mode 100644 assets/minecraft/items/soul_sand.json create mode 100644 assets/minecraft/items/soul_soil.json create mode 100644 assets/minecraft/items/soul_torch.json create mode 100644 assets/minecraft/items/spawner.json create mode 100644 assets/minecraft/items/spectral_arrow.json create mode 100644 assets/minecraft/items/spider_eye.json create mode 100644 assets/minecraft/items/spider_spawn_egg.json create mode 100644 assets/minecraft/items/spire_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/splash_potion.json create mode 100644 assets/minecraft/items/sponge.json create mode 100644 assets/minecraft/items/spore_blossom.json create mode 100644 assets/minecraft/items/spruce_boat.json create mode 100644 assets/minecraft/items/spruce_button.json create mode 100644 assets/minecraft/items/spruce_chest_boat.json create mode 100644 assets/minecraft/items/spruce_door.json create mode 100644 assets/minecraft/items/spruce_fence.json create mode 100644 assets/minecraft/items/spruce_fence_gate.json create mode 100644 assets/minecraft/items/spruce_hanging_sign.json create mode 100644 assets/minecraft/items/spruce_leaves.json create mode 100644 assets/minecraft/items/spruce_log.json create mode 100644 assets/minecraft/items/spruce_planks.json create mode 100644 assets/minecraft/items/spruce_pressure_plate.json create mode 100644 assets/minecraft/items/spruce_sapling.json create mode 100644 assets/minecraft/items/spruce_sign.json create mode 100644 assets/minecraft/items/spruce_slab.json create mode 100644 assets/minecraft/items/spruce_stairs.json create mode 100644 assets/minecraft/items/spruce_trapdoor.json create mode 100644 assets/minecraft/items/spruce_wood.json create mode 100644 assets/minecraft/items/spyglass.json create mode 100644 assets/minecraft/items/squid_spawn_egg.json create mode 100644 assets/minecraft/items/stick.json create mode 100644 assets/minecraft/items/sticky_piston.json create mode 100644 assets/minecraft/items/stone.json create mode 100644 assets/minecraft/items/stone_axe.json create mode 100644 assets/minecraft/items/stone_brick_slab.json create mode 100644 assets/minecraft/items/stone_brick_stairs.json create mode 100644 assets/minecraft/items/stone_brick_wall.json create mode 100644 assets/minecraft/items/stone_bricks.json create mode 100644 assets/minecraft/items/stone_button.json create mode 100644 assets/minecraft/items/stone_hoe.json create mode 100644 assets/minecraft/items/stone_pickaxe.json create mode 100644 assets/minecraft/items/stone_pressure_plate.json create mode 100644 assets/minecraft/items/stone_shovel.json create mode 100644 assets/minecraft/items/stone_slab.json create mode 100644 assets/minecraft/items/stone_stairs.json create mode 100644 assets/minecraft/items/stone_sword.json create mode 100644 assets/minecraft/items/stonecutter.json create mode 100644 assets/minecraft/items/stray_spawn_egg.json create mode 100644 assets/minecraft/items/strider_spawn_egg.json create mode 100644 assets/minecraft/items/string.json create mode 100644 assets/minecraft/items/stripped_acacia_log.json create mode 100644 assets/minecraft/items/stripped_acacia_wood.json create mode 100644 assets/minecraft/items/stripped_bamboo_block.json create mode 100644 assets/minecraft/items/stripped_birch_log.json create mode 100644 assets/minecraft/items/stripped_birch_wood.json create mode 100644 assets/minecraft/items/stripped_cherry_log.json create mode 100644 assets/minecraft/items/stripped_cherry_wood.json create mode 100644 assets/minecraft/items/stripped_crimson_hyphae.json create mode 100644 assets/minecraft/items/stripped_crimson_stem.json create mode 100644 assets/minecraft/items/stripped_dark_oak_log.json create mode 100644 assets/minecraft/items/stripped_dark_oak_wood.json create mode 100644 assets/minecraft/items/stripped_jungle_log.json create mode 100644 assets/minecraft/items/stripped_jungle_wood.json create mode 100644 assets/minecraft/items/stripped_mangrove_log.json create mode 100644 assets/minecraft/items/stripped_mangrove_wood.json create mode 100644 assets/minecraft/items/stripped_oak_log.json create mode 100644 assets/minecraft/items/stripped_oak_wood.json create mode 100644 assets/minecraft/items/stripped_pale_oak_log.json create mode 100644 assets/minecraft/items/stripped_pale_oak_wood.json create mode 100644 assets/minecraft/items/stripped_spruce_log.json create mode 100644 assets/minecraft/items/stripped_spruce_wood.json create mode 100644 assets/minecraft/items/stripped_warped_hyphae.json create mode 100644 assets/minecraft/items/stripped_warped_stem.json create mode 100644 assets/minecraft/items/structure_block.json create mode 100644 assets/minecraft/items/structure_void.json create mode 100644 assets/minecraft/items/sugar.json create mode 100644 assets/minecraft/items/sugar_cane.json create mode 100644 assets/minecraft/items/sunflower.json create mode 100644 assets/minecraft/items/suspicious_gravel.json create mode 100644 assets/minecraft/items/suspicious_sand.json create mode 100644 assets/minecraft/items/suspicious_stew.json create mode 100644 assets/minecraft/items/sweet_berries.json create mode 100644 assets/minecraft/items/tadpole_bucket.json create mode 100644 assets/minecraft/items/tadpole_spawn_egg.json create mode 100644 assets/minecraft/items/tall_grass.json create mode 100644 assets/minecraft/items/target.json create mode 100644 assets/minecraft/items/terracotta.json create mode 100644 assets/minecraft/items/tide_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/tinted_glass.json create mode 100644 assets/minecraft/items/tipped_arrow.json create mode 100644 assets/minecraft/items/tnt.json create mode 100644 assets/minecraft/items/tnt_minecart.json create mode 100644 assets/minecraft/items/torch.json create mode 100644 assets/minecraft/items/torchflower.json create mode 100644 assets/minecraft/items/torchflower_seeds.json create mode 100644 assets/minecraft/items/totem_of_undying.json create mode 100644 assets/minecraft/items/trader_llama_spawn_egg.json create mode 100644 assets/minecraft/items/trapped_chest.json create mode 100644 assets/minecraft/items/trial_key.json create mode 100644 assets/minecraft/items/trial_spawner.json create mode 100644 assets/minecraft/items/trident.json create mode 100644 assets/minecraft/items/tripwire_hook.json create mode 100644 assets/minecraft/items/tropical_fish.json create mode 100644 assets/minecraft/items/tropical_fish_bucket.json create mode 100644 assets/minecraft/items/tropical_fish_spawn_egg.json create mode 100644 assets/minecraft/items/tube_coral.json create mode 100644 assets/minecraft/items/tube_coral_block.json create mode 100644 assets/minecraft/items/tube_coral_fan.json create mode 100644 assets/minecraft/items/tuff.json create mode 100644 assets/minecraft/items/tuff_brick_slab.json create mode 100644 assets/minecraft/items/tuff_brick_stairs.json create mode 100644 assets/minecraft/items/tuff_brick_wall.json create mode 100644 assets/minecraft/items/tuff_bricks.json create mode 100644 assets/minecraft/items/tuff_slab.json create mode 100644 assets/minecraft/items/tuff_stairs.json create mode 100644 assets/minecraft/items/tuff_wall.json create mode 100644 assets/minecraft/items/turtle_egg.json create mode 100644 assets/minecraft/items/turtle_helmet.json create mode 100644 assets/minecraft/items/turtle_scute.json create mode 100644 assets/minecraft/items/turtle_spawn_egg.json create mode 100644 assets/minecraft/items/twisting_vines.json create mode 100644 assets/minecraft/items/vault.json create mode 100644 assets/minecraft/items/verdant_froglight.json create mode 100644 assets/minecraft/items/vex_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/vex_spawn_egg.json create mode 100644 assets/minecraft/items/villager_spawn_egg.json create mode 100644 assets/minecraft/items/vindicator_spawn_egg.json create mode 100644 assets/minecraft/items/vine.json create mode 100644 assets/minecraft/items/wandering_trader_spawn_egg.json create mode 100644 assets/minecraft/items/ward_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/warden_spawn_egg.json create mode 100644 assets/minecraft/items/warped_button.json create mode 100644 assets/minecraft/items/warped_door.json create mode 100644 assets/minecraft/items/warped_fence.json create mode 100644 assets/minecraft/items/warped_fence_gate.json create mode 100644 assets/minecraft/items/warped_fungus.json create mode 100644 assets/minecraft/items/warped_fungus_on_a_stick.json create mode 100644 assets/minecraft/items/warped_hanging_sign.json create mode 100644 assets/minecraft/items/warped_hyphae.json create mode 100644 assets/minecraft/items/warped_nylium.json create mode 100644 assets/minecraft/items/warped_planks.json create mode 100644 assets/minecraft/items/warped_pressure_plate.json create mode 100644 assets/minecraft/items/warped_roots.json create mode 100644 assets/minecraft/items/warped_sign.json create mode 100644 assets/minecraft/items/warped_slab.json create mode 100644 assets/minecraft/items/warped_stairs.json create mode 100644 assets/minecraft/items/warped_stem.json create mode 100644 assets/minecraft/items/warped_trapdoor.json create mode 100644 assets/minecraft/items/warped_wart_block.json create mode 100644 assets/minecraft/items/water_bucket.json create mode 100644 assets/minecraft/items/waxed_chiseled_copper.json create mode 100644 assets/minecraft/items/waxed_copper_block.json create mode 100644 assets/minecraft/items/waxed_copper_bulb.json create mode 100644 assets/minecraft/items/waxed_copper_door.json create mode 100644 assets/minecraft/items/waxed_copper_grate.json create mode 100644 assets/minecraft/items/waxed_copper_trapdoor.json create mode 100644 assets/minecraft/items/waxed_cut_copper.json create mode 100644 assets/minecraft/items/waxed_cut_copper_slab.json create mode 100644 assets/minecraft/items/waxed_cut_copper_stairs.json create mode 100644 assets/minecraft/items/waxed_exposed_chiseled_copper.json create mode 100644 assets/minecraft/items/waxed_exposed_copper.json create mode 100644 assets/minecraft/items/waxed_exposed_copper_bulb.json create mode 100644 assets/minecraft/items/waxed_exposed_copper_door.json create mode 100644 assets/minecraft/items/waxed_exposed_copper_grate.json create mode 100644 assets/minecraft/items/waxed_exposed_copper_trapdoor.json create mode 100644 assets/minecraft/items/waxed_exposed_cut_copper.json create mode 100644 assets/minecraft/items/waxed_exposed_cut_copper_slab.json create mode 100644 assets/minecraft/items/waxed_exposed_cut_copper_stairs.json create mode 100644 assets/minecraft/items/waxed_oxidized_chiseled_copper.json create mode 100644 assets/minecraft/items/waxed_oxidized_copper.json create mode 100644 assets/minecraft/items/waxed_oxidized_copper_bulb.json create mode 100644 assets/minecraft/items/waxed_oxidized_copper_door.json create mode 100644 assets/minecraft/items/waxed_oxidized_copper_grate.json create mode 100644 assets/minecraft/items/waxed_oxidized_copper_trapdoor.json create mode 100644 assets/minecraft/items/waxed_oxidized_cut_copper.json create mode 100644 assets/minecraft/items/waxed_oxidized_cut_copper_slab.json create mode 100644 assets/minecraft/items/waxed_oxidized_cut_copper_stairs.json create mode 100644 assets/minecraft/items/waxed_weathered_chiseled_copper.json create mode 100644 assets/minecraft/items/waxed_weathered_copper.json create mode 100644 assets/minecraft/items/waxed_weathered_copper_bulb.json create mode 100644 assets/minecraft/items/waxed_weathered_copper_door.json create mode 100644 assets/minecraft/items/waxed_weathered_copper_grate.json create mode 100644 assets/minecraft/items/waxed_weathered_copper_trapdoor.json create mode 100644 assets/minecraft/items/waxed_weathered_cut_copper.json create mode 100644 assets/minecraft/items/waxed_weathered_cut_copper_slab.json create mode 100644 assets/minecraft/items/waxed_weathered_cut_copper_stairs.json create mode 100644 assets/minecraft/items/wayfinder_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/weathered_chiseled_copper.json create mode 100644 assets/minecraft/items/weathered_copper.json create mode 100644 assets/minecraft/items/weathered_copper_bulb.json create mode 100644 assets/minecraft/items/weathered_copper_door.json create mode 100644 assets/minecraft/items/weathered_copper_grate.json create mode 100644 assets/minecraft/items/weathered_copper_trapdoor.json create mode 100644 assets/minecraft/items/weathered_cut_copper.json create mode 100644 assets/minecraft/items/weathered_cut_copper_slab.json create mode 100644 assets/minecraft/items/weathered_cut_copper_stairs.json create mode 100644 assets/minecraft/items/weeping_vines.json create mode 100644 assets/minecraft/items/wet_sponge.json create mode 100644 assets/minecraft/items/wheat.json create mode 100644 assets/minecraft/items/wheat_seeds.json create mode 100644 assets/minecraft/items/white_banner.json create mode 100644 assets/minecraft/items/white_bed.json create mode 100644 assets/minecraft/items/white_bundle.json create mode 100644 assets/minecraft/items/white_candle.json create mode 100644 assets/minecraft/items/white_carpet.json create mode 100644 assets/minecraft/items/white_concrete.json create mode 100644 assets/minecraft/items/white_concrete_powder.json create mode 100644 assets/minecraft/items/white_dye.json create mode 100644 assets/minecraft/items/white_glazed_terracotta.json create mode 100644 assets/minecraft/items/white_shulker_box.json create mode 100644 assets/minecraft/items/white_stained_glass.json create mode 100644 assets/minecraft/items/white_stained_glass_pane.json create mode 100644 assets/minecraft/items/white_terracotta.json create mode 100644 assets/minecraft/items/white_tulip.json create mode 100644 assets/minecraft/items/white_wool.json create mode 100644 assets/minecraft/items/wild_armor_trim_smithing_template.json create mode 100644 assets/minecraft/items/wind_charge.json create mode 100644 assets/minecraft/items/witch_spawn_egg.json create mode 100644 assets/minecraft/items/wither_rose.json create mode 100644 assets/minecraft/items/wither_skeleton_skull.json create mode 100644 assets/minecraft/items/wither_skeleton_spawn_egg.json create mode 100644 assets/minecraft/items/wither_spawn_egg.json create mode 100644 assets/minecraft/items/wolf_armor.json create mode 100644 assets/minecraft/items/wolf_spawn_egg.json create mode 100644 assets/minecraft/items/wooden_axe.json create mode 100644 assets/minecraft/items/wooden_hoe.json create mode 100644 assets/minecraft/items/wooden_pickaxe.json create mode 100644 assets/minecraft/items/wooden_shovel.json create mode 100644 assets/minecraft/items/wooden_sword.json create mode 100644 assets/minecraft/items/writable_book.json create mode 100644 assets/minecraft/items/written_book.json create mode 100644 assets/minecraft/items/yellow_banner.json create mode 100644 assets/minecraft/items/yellow_bed.json create mode 100644 assets/minecraft/items/yellow_bundle.json create mode 100644 assets/minecraft/items/yellow_candle.json create mode 100644 assets/minecraft/items/yellow_carpet.json create mode 100644 assets/minecraft/items/yellow_concrete.json create mode 100644 assets/minecraft/items/yellow_concrete_powder.json create mode 100644 assets/minecraft/items/yellow_dye.json create mode 100644 assets/minecraft/items/yellow_glazed_terracotta.json create mode 100644 assets/minecraft/items/yellow_shulker_box.json create mode 100644 assets/minecraft/items/yellow_stained_glass.json create mode 100644 assets/minecraft/items/yellow_stained_glass_pane.json create mode 100644 assets/minecraft/items/yellow_terracotta.json create mode 100644 assets/minecraft/items/yellow_wool.json create mode 100644 assets/minecraft/items/zoglin_spawn_egg.json create mode 100644 assets/minecraft/items/zombie_head.json create mode 100644 assets/minecraft/items/zombie_horse_spawn_egg.json create mode 100644 assets/minecraft/items/zombie_spawn_egg.json create mode 100644 assets/minecraft/items/zombie_villager_spawn_egg.json create mode 100644 assets/minecraft/items/zombified_piglin_spawn_egg.json create mode 100644 assets/minecraft/models/block/chiseled_resin_bricks.json create mode 100644 assets/minecraft/models/block/closed_eyeblossom.json create mode 100644 assets/minecraft/models/block/cross_emissive.json create mode 100644 assets/minecraft/models/block/end_gateway.json create mode 100644 assets/minecraft/models/block/flower_pot_cross_emissive.json create mode 100644 assets/minecraft/models/block/open_eyeblossom.json create mode 100644 assets/minecraft/models/block/potted_closed_eyeblossom.json create mode 100644 assets/minecraft/models/block/potted_open_eyeblossom.json create mode 100644 assets/minecraft/models/block/resin_block.json create mode 100644 assets/minecraft/models/block/resin_brick_slab.json create mode 100644 assets/minecraft/models/block/resin_brick_slab_top.json create mode 100644 assets/minecraft/models/block/resin_brick_stairs.json create mode 100644 assets/minecraft/models/block/resin_brick_stairs_inner.json create mode 100644 assets/minecraft/models/block/resin_brick_stairs_outer.json create mode 100644 assets/minecraft/models/block/resin_brick_wall_inventory.json create mode 100644 assets/minecraft/models/block/resin_brick_wall_post.json create mode 100644 assets/minecraft/models/block/resin_brick_wall_side.json create mode 100644 assets/minecraft/models/block/resin_brick_wall_side_tall.json create mode 100644 assets/minecraft/models/block/resin_bricks.json create mode 100644 assets/minecraft/models/block/resin_clump.json create mode 100644 assets/minecraft/models/block/trapped_chest.json delete mode 100644 assets/minecraft/models/item/acacia_button.json delete mode 100644 assets/minecraft/models/item/acacia_fence.json delete mode 100644 assets/minecraft/models/item/acacia_fence_gate.json delete mode 100644 assets/minecraft/models/item/acacia_leaves.json delete mode 100644 assets/minecraft/models/item/acacia_log.json delete mode 100644 assets/minecraft/models/item/acacia_planks.json delete mode 100644 assets/minecraft/models/item/acacia_pressure_plate.json delete mode 100644 assets/minecraft/models/item/acacia_slab.json delete mode 100644 assets/minecraft/models/item/acacia_stairs.json delete mode 100644 assets/minecraft/models/item/acacia_trapdoor.json delete mode 100644 assets/minecraft/models/item/acacia_wood.json delete mode 100644 assets/minecraft/models/item/allay_spawn_egg.json delete mode 100644 assets/minecraft/models/item/amethyst_block.json delete mode 100644 assets/minecraft/models/item/ancient_debris.json delete mode 100644 assets/minecraft/models/item/andesite.json delete mode 100644 assets/minecraft/models/item/andesite_slab.json delete mode 100644 assets/minecraft/models/item/andesite_stairs.json delete mode 100644 assets/minecraft/models/item/andesite_wall.json delete mode 100644 assets/minecraft/models/item/anvil.json delete mode 100644 assets/minecraft/models/item/armadillo_spawn_egg.json delete mode 100644 assets/minecraft/models/item/axolotl_spawn_egg.json delete mode 100644 assets/minecraft/models/item/azalea.json delete mode 100644 assets/minecraft/models/item/azalea_leaves.json delete mode 100644 assets/minecraft/models/item/bamboo_block.json delete mode 100644 assets/minecraft/models/item/bamboo_button.json delete mode 100644 assets/minecraft/models/item/bamboo_fence.json delete mode 100644 assets/minecraft/models/item/bamboo_fence_gate.json delete mode 100644 assets/minecraft/models/item/bamboo_mosaic.json delete mode 100644 assets/minecraft/models/item/bamboo_mosaic_slab.json delete mode 100644 assets/minecraft/models/item/bamboo_mosaic_stairs.json delete mode 100644 assets/minecraft/models/item/bamboo_planks.json delete mode 100644 assets/minecraft/models/item/bamboo_pressure_plate.json delete mode 100644 assets/minecraft/models/item/bamboo_slab.json delete mode 100644 assets/minecraft/models/item/bamboo_stairs.json delete mode 100644 assets/minecraft/models/item/bamboo_trapdoor.json delete mode 100644 assets/minecraft/models/item/barrel.json delete mode 100644 assets/minecraft/models/item/basalt.json delete mode 100644 assets/minecraft/models/item/bat_spawn_egg.json delete mode 100644 assets/minecraft/models/item/beacon.json delete mode 100644 assets/minecraft/models/item/bedrock.json delete mode 100644 assets/minecraft/models/item/bee_nest.json delete mode 100644 assets/minecraft/models/item/bee_nest_empty.json delete mode 100644 assets/minecraft/models/item/bee_nest_honey.json delete mode 100644 assets/minecraft/models/item/bee_spawn_egg.json delete mode 100644 assets/minecraft/models/item/beehive.json delete mode 100644 assets/minecraft/models/item/beehive_empty.json delete mode 100644 assets/minecraft/models/item/beehive_honey.json delete mode 100644 assets/minecraft/models/item/birch_button.json delete mode 100644 assets/minecraft/models/item/birch_fence.json delete mode 100644 assets/minecraft/models/item/birch_fence_gate.json delete mode 100644 assets/minecraft/models/item/birch_leaves.json delete mode 100644 assets/minecraft/models/item/birch_log.json delete mode 100644 assets/minecraft/models/item/birch_planks.json delete mode 100644 assets/minecraft/models/item/birch_pressure_plate.json delete mode 100644 assets/minecraft/models/item/birch_slab.json delete mode 100644 assets/minecraft/models/item/birch_stairs.json delete mode 100644 assets/minecraft/models/item/birch_trapdoor.json delete mode 100644 assets/minecraft/models/item/birch_wood.json delete mode 100644 assets/minecraft/models/item/black_banner.json delete mode 100644 assets/minecraft/models/item/black_carpet.json delete mode 100644 assets/minecraft/models/item/black_concrete.json delete mode 100644 assets/minecraft/models/item/black_concrete_powder.json delete mode 100644 assets/minecraft/models/item/black_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/black_stained_glass.json delete mode 100644 assets/minecraft/models/item/black_terracotta.json delete mode 100644 assets/minecraft/models/item/black_wool.json delete mode 100644 assets/minecraft/models/item/blackstone.json delete mode 100644 assets/minecraft/models/item/blackstone_slab.json delete mode 100644 assets/minecraft/models/item/blackstone_stairs.json delete mode 100644 assets/minecraft/models/item/blackstone_wall.json delete mode 100644 assets/minecraft/models/item/blast_furnace.json delete mode 100644 assets/minecraft/models/item/blaze_spawn_egg.json delete mode 100644 assets/minecraft/models/item/blue_banner.json delete mode 100644 assets/minecraft/models/item/blue_carpet.json delete mode 100644 assets/minecraft/models/item/blue_concrete.json delete mode 100644 assets/minecraft/models/item/blue_concrete_powder.json delete mode 100644 assets/minecraft/models/item/blue_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/blue_ice.json delete mode 100644 assets/minecraft/models/item/blue_stained_glass.json delete mode 100644 assets/minecraft/models/item/blue_terracotta.json delete mode 100644 assets/minecraft/models/item/blue_wool.json delete mode 100644 assets/minecraft/models/item/bogged_spawn_egg.json delete mode 100644 assets/minecraft/models/item/bone_block.json delete mode 100644 assets/minecraft/models/item/bookshelf.json delete mode 100644 assets/minecraft/models/item/brain_coral_block.json delete mode 100644 assets/minecraft/models/item/breeze_spawn_egg.json delete mode 100644 assets/minecraft/models/item/brick_slab.json delete mode 100644 assets/minecraft/models/item/brick_stairs.json delete mode 100644 assets/minecraft/models/item/brick_wall.json delete mode 100644 assets/minecraft/models/item/bricks.json delete mode 100644 assets/minecraft/models/item/broken_elytra.json delete mode 100644 assets/minecraft/models/item/brown_banner.json delete mode 100644 assets/minecraft/models/item/brown_carpet.json delete mode 100644 assets/minecraft/models/item/brown_concrete.json delete mode 100644 assets/minecraft/models/item/brown_concrete_powder.json delete mode 100644 assets/minecraft/models/item/brown_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/brown_mushroom_block.json delete mode 100644 assets/minecraft/models/item/brown_stained_glass.json delete mode 100644 assets/minecraft/models/item/brown_terracotta.json delete mode 100644 assets/minecraft/models/item/brown_wool.json delete mode 100644 assets/minecraft/models/item/bubble_coral_block.json delete mode 100644 assets/minecraft/models/item/budding_amethyst.json delete mode 100644 assets/minecraft/models/item/cactus.json delete mode 100644 assets/minecraft/models/item/calcite.json delete mode 100644 assets/minecraft/models/item/calibrated_sculk_sensor.json delete mode 100644 assets/minecraft/models/item/camel_spawn_egg.json delete mode 100644 assets/minecraft/models/item/cartography_table.json delete mode 100644 assets/minecraft/models/item/carved_pumpkin.json delete mode 100644 assets/minecraft/models/item/cat_spawn_egg.json delete mode 100644 assets/minecraft/models/item/cave_spider_spawn_egg.json delete mode 100644 assets/minecraft/models/item/chain_command_block.json create mode 100644 assets/minecraft/models/item/chainmail_boots_resin_trim.json create mode 100644 assets/minecraft/models/item/chainmail_chestplate_resin_trim.json create mode 100644 assets/minecraft/models/item/chainmail_helmet_resin_trim.json create mode 100644 assets/minecraft/models/item/chainmail_leggings_resin_trim.json delete mode 100644 assets/minecraft/models/item/cherry_button.json delete mode 100644 assets/minecraft/models/item/cherry_fence.json delete mode 100644 assets/minecraft/models/item/cherry_fence_gate.json delete mode 100644 assets/minecraft/models/item/cherry_leaves.json delete mode 100644 assets/minecraft/models/item/cherry_log.json delete mode 100644 assets/minecraft/models/item/cherry_planks.json delete mode 100644 assets/minecraft/models/item/cherry_pressure_plate.json delete mode 100644 assets/minecraft/models/item/cherry_slab.json delete mode 100644 assets/minecraft/models/item/cherry_stairs.json delete mode 100644 assets/minecraft/models/item/cherry_trapdoor.json delete mode 100644 assets/minecraft/models/item/cherry_wood.json delete mode 100644 assets/minecraft/models/item/chicken_spawn_egg.json delete mode 100644 assets/minecraft/models/item/chipped_anvil.json delete mode 100644 assets/minecraft/models/item/chiseled_bookshelf.json delete mode 100644 assets/minecraft/models/item/chiseled_copper.json delete mode 100644 assets/minecraft/models/item/chiseled_deepslate.json delete mode 100644 assets/minecraft/models/item/chiseled_nether_bricks.json delete mode 100644 assets/minecraft/models/item/chiseled_polished_blackstone.json delete mode 100644 assets/minecraft/models/item/chiseled_quartz_block.json delete mode 100644 assets/minecraft/models/item/chiseled_red_sandstone.json delete mode 100644 assets/minecraft/models/item/chiseled_sandstone.json delete mode 100644 assets/minecraft/models/item/chiseled_stone_bricks.json delete mode 100644 assets/minecraft/models/item/chiseled_tuff.json delete mode 100644 assets/minecraft/models/item/chiseled_tuff_bricks.json delete mode 100644 assets/minecraft/models/item/chorus_flower.json delete mode 100644 assets/minecraft/models/item/chorus_plant.json delete mode 100644 assets/minecraft/models/item/clay.json delete mode 100644 assets/minecraft/models/item/clock.json create mode 100644 assets/minecraft/models/item/clock_00.json create mode 100644 assets/minecraft/models/item/closed_eyeblossom.json delete mode 100644 assets/minecraft/models/item/coal_block.json delete mode 100644 assets/minecraft/models/item/coal_ore.json delete mode 100644 assets/minecraft/models/item/coarse_dirt.json delete mode 100644 assets/minecraft/models/item/cobbled_deepslate.json delete mode 100644 assets/minecraft/models/item/cobbled_deepslate_slab.json delete mode 100644 assets/minecraft/models/item/cobbled_deepslate_stairs.json delete mode 100644 assets/minecraft/models/item/cobbled_deepslate_wall.json delete mode 100644 assets/minecraft/models/item/cobblestone.json delete mode 100644 assets/minecraft/models/item/cobblestone_slab.json delete mode 100644 assets/minecraft/models/item/cobblestone_stairs.json delete mode 100644 assets/minecraft/models/item/cobblestone_wall.json delete mode 100644 assets/minecraft/models/item/cod_spawn_egg.json delete mode 100644 assets/minecraft/models/item/command_block.json delete mode 100644 assets/minecraft/models/item/compass.json create mode 100644 assets/minecraft/models/item/compass_16.json delete mode 100644 assets/minecraft/models/item/composter.json delete mode 100644 assets/minecraft/models/item/copper_block.json delete mode 100644 assets/minecraft/models/item/copper_bulb.json delete mode 100644 assets/minecraft/models/item/copper_grate.json delete mode 100644 assets/minecraft/models/item/copper_ore.json delete mode 100644 assets/minecraft/models/item/copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/cow_spawn_egg.json delete mode 100644 assets/minecraft/models/item/cracked_deepslate_bricks.json delete mode 100644 assets/minecraft/models/item/cracked_deepslate_tiles.json delete mode 100644 assets/minecraft/models/item/cracked_nether_bricks.json delete mode 100644 assets/minecraft/models/item/cracked_polished_blackstone_bricks.json delete mode 100644 assets/minecraft/models/item/cracked_stone_bricks.json delete mode 100644 assets/minecraft/models/item/crafter.json delete mode 100644 assets/minecraft/models/item/crafting_table.json delete mode 100644 assets/minecraft/models/item/creaking_heart.json delete mode 100644 assets/minecraft/models/item/creaking_spawn_egg.json delete mode 100644 assets/minecraft/models/item/creeper_head.json delete mode 100644 assets/minecraft/models/item/creeper_spawn_egg.json delete mode 100644 assets/minecraft/models/item/crimson_button.json delete mode 100644 assets/minecraft/models/item/crimson_fence.json delete mode 100644 assets/minecraft/models/item/crimson_fence_gate.json delete mode 100644 assets/minecraft/models/item/crimson_hyphae.json delete mode 100644 assets/minecraft/models/item/crimson_nylium.json delete mode 100644 assets/minecraft/models/item/crimson_planks.json delete mode 100644 assets/minecraft/models/item/crimson_pressure_plate.json delete mode 100644 assets/minecraft/models/item/crimson_slab.json delete mode 100644 assets/minecraft/models/item/crimson_stairs.json delete mode 100644 assets/minecraft/models/item/crimson_stem.json delete mode 100644 assets/minecraft/models/item/crimson_trapdoor.json delete mode 100644 assets/minecraft/models/item/crying_obsidian.json delete mode 100644 assets/minecraft/models/item/cut_copper.json delete mode 100644 assets/minecraft/models/item/cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/cut_red_sandstone.json delete mode 100644 assets/minecraft/models/item/cut_red_sandstone_slab.json delete mode 100644 assets/minecraft/models/item/cut_sandstone.json delete mode 100644 assets/minecraft/models/item/cut_sandstone_slab.json delete mode 100644 assets/minecraft/models/item/cyan_banner.json delete mode 100644 assets/minecraft/models/item/cyan_carpet.json delete mode 100644 assets/minecraft/models/item/cyan_concrete.json delete mode 100644 assets/minecraft/models/item/cyan_concrete_powder.json delete mode 100644 assets/minecraft/models/item/cyan_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/cyan_stained_glass.json delete mode 100644 assets/minecraft/models/item/cyan_terracotta.json delete mode 100644 assets/minecraft/models/item/cyan_wool.json delete mode 100644 assets/minecraft/models/item/damaged_anvil.json delete mode 100644 assets/minecraft/models/item/dark_oak_button.json delete mode 100644 assets/minecraft/models/item/dark_oak_fence.json delete mode 100644 assets/minecraft/models/item/dark_oak_fence_gate.json delete mode 100644 assets/minecraft/models/item/dark_oak_leaves.json delete mode 100644 assets/minecraft/models/item/dark_oak_log.json delete mode 100644 assets/minecraft/models/item/dark_oak_planks.json delete mode 100644 assets/minecraft/models/item/dark_oak_pressure_plate.json delete mode 100644 assets/minecraft/models/item/dark_oak_slab.json delete mode 100644 assets/minecraft/models/item/dark_oak_stairs.json delete mode 100644 assets/minecraft/models/item/dark_oak_trapdoor.json delete mode 100644 assets/minecraft/models/item/dark_oak_wood.json delete mode 100644 assets/minecraft/models/item/dark_prismarine.json delete mode 100644 assets/minecraft/models/item/dark_prismarine_slab.json delete mode 100644 assets/minecraft/models/item/dark_prismarine_stairs.json delete mode 100644 assets/minecraft/models/item/daylight_detector.json delete mode 100644 assets/minecraft/models/item/dead_brain_coral_block.json delete mode 100644 assets/minecraft/models/item/dead_bubble_coral_block.json delete mode 100644 assets/minecraft/models/item/dead_fire_coral_block.json delete mode 100644 assets/minecraft/models/item/dead_horn_coral_block.json delete mode 100644 assets/minecraft/models/item/dead_tube_coral_block.json delete mode 100644 assets/minecraft/models/item/deepslate.json delete mode 100644 assets/minecraft/models/item/deepslate_brick_slab.json delete mode 100644 assets/minecraft/models/item/deepslate_brick_stairs.json delete mode 100644 assets/minecraft/models/item/deepslate_brick_wall.json delete mode 100644 assets/minecraft/models/item/deepslate_bricks.json delete mode 100644 assets/minecraft/models/item/deepslate_coal_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_copper_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_diamond_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_emerald_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_gold_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_iron_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_lapis_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_redstone_ore.json delete mode 100644 assets/minecraft/models/item/deepslate_tile_slab.json delete mode 100644 assets/minecraft/models/item/deepslate_tile_stairs.json delete mode 100644 assets/minecraft/models/item/deepslate_tile_wall.json delete mode 100644 assets/minecraft/models/item/deepslate_tiles.json delete mode 100644 assets/minecraft/models/item/diamond_block.json rename assets/minecraft/models/item/{diamond_boots_diamond_darker_trim.json => diamond_boots_diamond_trim.json} (100%) create mode 100644 assets/minecraft/models/item/diamond_boots_resin_trim.json rename assets/minecraft/models/item/{diamond_chestplate_diamond_darker_trim.json => diamond_chestplate_diamond_trim.json} (100%) create mode 100644 assets/minecraft/models/item/diamond_chestplate_resin_trim.json rename assets/minecraft/models/item/{diamond_helmet_diamond_darker_trim.json => diamond_helmet_diamond_trim.json} (100%) create mode 100644 assets/minecraft/models/item/diamond_helmet_resin_trim.json rename assets/minecraft/models/item/{diamond_leggings_diamond_darker_trim.json => diamond_leggings_diamond_trim.json} (100%) create mode 100644 assets/minecraft/models/item/diamond_leggings_resin_trim.json delete mode 100644 assets/minecraft/models/item/diamond_ore.json delete mode 100644 assets/minecraft/models/item/diorite.json delete mode 100644 assets/minecraft/models/item/diorite_slab.json delete mode 100644 assets/minecraft/models/item/diorite_stairs.json delete mode 100644 assets/minecraft/models/item/diorite_wall.json delete mode 100644 assets/minecraft/models/item/dirt.json delete mode 100644 assets/minecraft/models/item/dirt_path.json delete mode 100644 assets/minecraft/models/item/dispenser.json delete mode 100644 assets/minecraft/models/item/dolphin_spawn_egg.json delete mode 100644 assets/minecraft/models/item/donkey_spawn_egg.json delete mode 100644 assets/minecraft/models/item/dragon_egg.json delete mode 100644 assets/minecraft/models/item/dried_kelp_block.json delete mode 100644 assets/minecraft/models/item/dripstone_block.json delete mode 100644 assets/minecraft/models/item/dropper.json delete mode 100644 assets/minecraft/models/item/drowned_spawn_egg.json delete mode 100644 assets/minecraft/models/item/elder_guardian_spawn_egg.json create mode 100644 assets/minecraft/models/item/elytra_broken.json delete mode 100644 assets/minecraft/models/item/emerald_block.json delete mode 100644 assets/minecraft/models/item/emerald_ore.json delete mode 100644 assets/minecraft/models/item/enchanting_table.json delete mode 100644 assets/minecraft/models/item/end_portal_frame.json delete mode 100644 assets/minecraft/models/item/end_rod.json delete mode 100644 assets/minecraft/models/item/end_stone.json delete mode 100644 assets/minecraft/models/item/end_stone_brick_slab.json delete mode 100644 assets/minecraft/models/item/end_stone_brick_stairs.json delete mode 100644 assets/minecraft/models/item/end_stone_brick_wall.json delete mode 100644 assets/minecraft/models/item/end_stone_bricks.json delete mode 100644 assets/minecraft/models/item/ender_dragon_spawn_egg.json delete mode 100644 assets/minecraft/models/item/enderman_spawn_egg.json delete mode 100644 assets/minecraft/models/item/endermite_spawn_egg.json delete mode 100644 assets/minecraft/models/item/evoker_spawn_egg.json delete mode 100644 assets/minecraft/models/item/exposed_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/exposed_copper.json delete mode 100644 assets/minecraft/models/item/exposed_copper_bulb.json delete mode 100644 assets/minecraft/models/item/exposed_copper_grate.json delete mode 100644 assets/minecraft/models/item/exposed_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/exposed_cut_copper.json delete mode 100644 assets/minecraft/models/item/exposed_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/exposed_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/farmland.json delete mode 100644 assets/minecraft/models/item/fire_coral_block.json delete mode 100644 assets/minecraft/models/item/fletching_table.json delete mode 100644 assets/minecraft/models/item/flowering_azalea.json delete mode 100644 assets/minecraft/models/item/flowering_azalea_leaves.json delete mode 100644 assets/minecraft/models/item/fox_spawn_egg.json delete mode 100644 assets/minecraft/models/item/frog_spawn_egg.json delete mode 100644 assets/minecraft/models/item/furnace.json delete mode 100644 assets/minecraft/models/item/ghast_spawn_egg.json delete mode 100644 assets/minecraft/models/item/gilded_blackstone.json delete mode 100644 assets/minecraft/models/item/glass.json delete mode 100644 assets/minecraft/models/item/glow_squid_spawn_egg.json delete mode 100644 assets/minecraft/models/item/glowstone.json delete mode 100644 assets/minecraft/models/item/goat_spawn_egg.json delete mode 100644 assets/minecraft/models/item/gold_block.json delete mode 100644 assets/minecraft/models/item/gold_ore.json rename assets/minecraft/models/item/{golden_boots_gold_darker_trim.json => golden_boots_gold_trim.json} (100%) create mode 100644 assets/minecraft/models/item/golden_boots_resin_trim.json rename assets/minecraft/models/item/{golden_chestplate_gold_darker_trim.json => golden_chestplate_gold_trim.json} (100%) create mode 100644 assets/minecraft/models/item/golden_chestplate_resin_trim.json rename assets/minecraft/models/item/{golden_helmet_gold_darker_trim.json => golden_helmet_gold_trim.json} (100%) create mode 100644 assets/minecraft/models/item/golden_helmet_resin_trim.json rename assets/minecraft/models/item/{golden_leggings_gold_darker_trim.json => golden_leggings_gold_trim.json} (100%) create mode 100644 assets/minecraft/models/item/golden_leggings_resin_trim.json delete mode 100644 assets/minecraft/models/item/granite.json delete mode 100644 assets/minecraft/models/item/granite_slab.json delete mode 100644 assets/minecraft/models/item/granite_stairs.json delete mode 100644 assets/minecraft/models/item/granite_wall.json delete mode 100644 assets/minecraft/models/item/grass_block.json delete mode 100644 assets/minecraft/models/item/gravel.json delete mode 100644 assets/minecraft/models/item/gray_banner.json delete mode 100644 assets/minecraft/models/item/gray_carpet.json delete mode 100644 assets/minecraft/models/item/gray_concrete.json delete mode 100644 assets/minecraft/models/item/gray_concrete_powder.json delete mode 100644 assets/minecraft/models/item/gray_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/gray_stained_glass.json delete mode 100644 assets/minecraft/models/item/gray_terracotta.json delete mode 100644 assets/minecraft/models/item/gray_wool.json delete mode 100644 assets/minecraft/models/item/green_banner.json delete mode 100644 assets/minecraft/models/item/green_carpet.json delete mode 100644 assets/minecraft/models/item/green_concrete.json delete mode 100644 assets/minecraft/models/item/green_concrete_powder.json delete mode 100644 assets/minecraft/models/item/green_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/green_stained_glass.json delete mode 100644 assets/minecraft/models/item/green_terracotta.json delete mode 100644 assets/minecraft/models/item/green_wool.json delete mode 100644 assets/minecraft/models/item/grindstone.json delete mode 100644 assets/minecraft/models/item/guardian_spawn_egg.json delete mode 100644 assets/minecraft/models/item/hay_block.json delete mode 100644 assets/minecraft/models/item/heavy_core.json delete mode 100644 assets/minecraft/models/item/heavy_weighted_pressure_plate.json delete mode 100644 assets/minecraft/models/item/hoglin_spawn_egg.json delete mode 100644 assets/minecraft/models/item/honey_block.json delete mode 100644 assets/minecraft/models/item/honeycomb_block.json delete mode 100644 assets/minecraft/models/item/horn_coral_block.json delete mode 100644 assets/minecraft/models/item/horse_spawn_egg.json delete mode 100644 assets/minecraft/models/item/husk_spawn_egg.json delete mode 100644 assets/minecraft/models/item/ice.json delete mode 100644 assets/minecraft/models/item/infested_chiseled_stone_bricks.json delete mode 100644 assets/minecraft/models/item/infested_cobblestone.json delete mode 100644 assets/minecraft/models/item/infested_cracked_stone_bricks.json delete mode 100644 assets/minecraft/models/item/infested_deepslate.json delete mode 100644 assets/minecraft/models/item/infested_mossy_stone_bricks.json delete mode 100644 assets/minecraft/models/item/infested_stone.json delete mode 100644 assets/minecraft/models/item/infested_stone_bricks.json delete mode 100644 assets/minecraft/models/item/iron_block.json rename assets/minecraft/models/item/{iron_boots_iron_darker_trim.json => iron_boots_iron_trim.json} (100%) create mode 100644 assets/minecraft/models/item/iron_boots_resin_trim.json rename assets/minecraft/models/item/{iron_chestplate_iron_darker_trim.json => iron_chestplate_iron_trim.json} (100%) create mode 100644 assets/minecraft/models/item/iron_chestplate_resin_trim.json delete mode 100644 assets/minecraft/models/item/iron_golem_spawn_egg.json rename assets/minecraft/models/item/{iron_helmet_iron_darker_trim.json => iron_helmet_iron_trim.json} (100%) create mode 100644 assets/minecraft/models/item/iron_helmet_resin_trim.json rename assets/minecraft/models/item/{iron_leggings_iron_darker_trim.json => iron_leggings_iron_trim.json} (100%) create mode 100644 assets/minecraft/models/item/iron_leggings_resin_trim.json delete mode 100644 assets/minecraft/models/item/iron_ore.json delete mode 100644 assets/minecraft/models/item/iron_trapdoor.json delete mode 100644 assets/minecraft/models/item/jack_o_lantern.json delete mode 100644 assets/minecraft/models/item/jigsaw.json delete mode 100644 assets/minecraft/models/item/jukebox.json delete mode 100644 assets/minecraft/models/item/jungle_button.json delete mode 100644 assets/minecraft/models/item/jungle_fence.json delete mode 100644 assets/minecraft/models/item/jungle_fence_gate.json delete mode 100644 assets/minecraft/models/item/jungle_leaves.json delete mode 100644 assets/minecraft/models/item/jungle_log.json delete mode 100644 assets/minecraft/models/item/jungle_planks.json delete mode 100644 assets/minecraft/models/item/jungle_pressure_plate.json delete mode 100644 assets/minecraft/models/item/jungle_slab.json delete mode 100644 assets/minecraft/models/item/jungle_stairs.json delete mode 100644 assets/minecraft/models/item/jungle_trapdoor.json delete mode 100644 assets/minecraft/models/item/jungle_wood.json delete mode 100644 assets/minecraft/models/item/lapis_block.json delete mode 100644 assets/minecraft/models/item/lapis_ore.json create mode 100644 assets/minecraft/models/item/leather_boots_resin_trim.json create mode 100644 assets/minecraft/models/item/leather_chestplate_resin_trim.json create mode 100644 assets/minecraft/models/item/leather_helmet_resin_trim.json create mode 100644 assets/minecraft/models/item/leather_leggings_resin_trim.json delete mode 100644 assets/minecraft/models/item/lectern.json delete mode 100644 assets/minecraft/models/item/light_blue_banner.json delete mode 100644 assets/minecraft/models/item/light_blue_carpet.json delete mode 100644 assets/minecraft/models/item/light_blue_concrete.json delete mode 100644 assets/minecraft/models/item/light_blue_concrete_powder.json delete mode 100644 assets/minecraft/models/item/light_blue_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/light_blue_stained_glass.json delete mode 100644 assets/minecraft/models/item/light_blue_terracotta.json delete mode 100644 assets/minecraft/models/item/light_blue_wool.json delete mode 100644 assets/minecraft/models/item/light_gray_banner.json delete mode 100644 assets/minecraft/models/item/light_gray_carpet.json delete mode 100644 assets/minecraft/models/item/light_gray_concrete.json delete mode 100644 assets/minecraft/models/item/light_gray_concrete_powder.json delete mode 100644 assets/minecraft/models/item/light_gray_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/light_gray_stained_glass.json delete mode 100644 assets/minecraft/models/item/light_gray_terracotta.json delete mode 100644 assets/minecraft/models/item/light_gray_wool.json delete mode 100644 assets/minecraft/models/item/light_weighted_pressure_plate.json delete mode 100644 assets/minecraft/models/item/lightning_rod.json delete mode 100644 assets/minecraft/models/item/lime_banner.json delete mode 100644 assets/minecraft/models/item/lime_carpet.json delete mode 100644 assets/minecraft/models/item/lime_concrete.json delete mode 100644 assets/minecraft/models/item/lime_concrete_powder.json delete mode 100644 assets/minecraft/models/item/lime_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/lime_stained_glass.json delete mode 100644 assets/minecraft/models/item/lime_terracotta.json delete mode 100644 assets/minecraft/models/item/lime_wool.json delete mode 100644 assets/minecraft/models/item/llama_spawn_egg.json delete mode 100644 assets/minecraft/models/item/lodestone.json delete mode 100644 assets/minecraft/models/item/loom.json delete mode 100644 assets/minecraft/models/item/magenta_banner.json delete mode 100644 assets/minecraft/models/item/magenta_carpet.json delete mode 100644 assets/minecraft/models/item/magenta_concrete.json delete mode 100644 assets/minecraft/models/item/magenta_concrete_powder.json delete mode 100644 assets/minecraft/models/item/magenta_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/magenta_stained_glass.json delete mode 100644 assets/minecraft/models/item/magenta_terracotta.json delete mode 100644 assets/minecraft/models/item/magenta_wool.json delete mode 100644 assets/minecraft/models/item/magma_block.json delete mode 100644 assets/minecraft/models/item/magma_cube_spawn_egg.json delete mode 100644 assets/minecraft/models/item/mangrove_button.json delete mode 100644 assets/minecraft/models/item/mangrove_fence.json delete mode 100644 assets/minecraft/models/item/mangrove_fence_gate.json delete mode 100644 assets/minecraft/models/item/mangrove_leaves.json delete mode 100644 assets/minecraft/models/item/mangrove_log.json delete mode 100644 assets/minecraft/models/item/mangrove_planks.json delete mode 100644 assets/minecraft/models/item/mangrove_pressure_plate.json delete mode 100644 assets/minecraft/models/item/mangrove_roots.json delete mode 100644 assets/minecraft/models/item/mangrove_slab.json delete mode 100644 assets/minecraft/models/item/mangrove_stairs.json delete mode 100644 assets/minecraft/models/item/mangrove_trapdoor.json delete mode 100644 assets/minecraft/models/item/mangrove_wood.json delete mode 100644 assets/minecraft/models/item/melon.json delete mode 100644 assets/minecraft/models/item/mooshroom_spawn_egg.json delete mode 100644 assets/minecraft/models/item/moss_block.json delete mode 100644 assets/minecraft/models/item/moss_carpet.json delete mode 100644 assets/minecraft/models/item/mossy_cobblestone.json delete mode 100644 assets/minecraft/models/item/mossy_cobblestone_slab.json delete mode 100644 assets/minecraft/models/item/mossy_cobblestone_stairs.json delete mode 100644 assets/minecraft/models/item/mossy_cobblestone_wall.json delete mode 100644 assets/minecraft/models/item/mossy_stone_brick_slab.json delete mode 100644 assets/minecraft/models/item/mossy_stone_brick_stairs.json delete mode 100644 assets/minecraft/models/item/mossy_stone_brick_wall.json delete mode 100644 assets/minecraft/models/item/mossy_stone_bricks.json delete mode 100644 assets/minecraft/models/item/mud.json delete mode 100644 assets/minecraft/models/item/mud_brick_slab.json delete mode 100644 assets/minecraft/models/item/mud_brick_stairs.json delete mode 100644 assets/minecraft/models/item/mud_brick_wall.json delete mode 100644 assets/minecraft/models/item/mud_bricks.json delete mode 100644 assets/minecraft/models/item/muddy_mangrove_roots.json delete mode 100644 assets/minecraft/models/item/mule_spawn_egg.json delete mode 100644 assets/minecraft/models/item/mushroom_stem.json delete mode 100644 assets/minecraft/models/item/mycelium.json delete mode 100644 assets/minecraft/models/item/nether_brick_fence.json delete mode 100644 assets/minecraft/models/item/nether_brick_slab.json delete mode 100644 assets/minecraft/models/item/nether_brick_stairs.json delete mode 100644 assets/minecraft/models/item/nether_brick_wall.json delete mode 100644 assets/minecraft/models/item/nether_bricks.json delete mode 100644 assets/minecraft/models/item/nether_gold_ore.json delete mode 100644 assets/minecraft/models/item/nether_quartz_ore.json delete mode 100644 assets/minecraft/models/item/nether_wart_block.json delete mode 100644 assets/minecraft/models/item/netherite_block.json rename assets/minecraft/models/item/{netherite_boots_netherite_darker_trim.json => netherite_boots_netherite_trim.json} (100%) create mode 100644 assets/minecraft/models/item/netherite_boots_resin_trim.json rename assets/minecraft/models/item/{netherite_chestplate_netherite_darker_trim.json => netherite_chestplate_netherite_trim.json} (100%) create mode 100644 assets/minecraft/models/item/netherite_chestplate_resin_trim.json rename assets/minecraft/models/item/{netherite_helmet_netherite_darker_trim.json => netherite_helmet_netherite_trim.json} (100%) create mode 100644 assets/minecraft/models/item/netherite_helmet_resin_trim.json rename assets/minecraft/models/item/{netherite_leggings_netherite_darker_trim.json => netherite_leggings_netherite_trim.json} (100%) create mode 100644 assets/minecraft/models/item/netherite_leggings_resin_trim.json delete mode 100644 assets/minecraft/models/item/netherrack.json delete mode 100644 assets/minecraft/models/item/note_block.json delete mode 100644 assets/minecraft/models/item/oak_button.json delete mode 100644 assets/minecraft/models/item/oak_fence.json delete mode 100644 assets/minecraft/models/item/oak_fence_gate.json delete mode 100644 assets/minecraft/models/item/oak_leaves.json delete mode 100644 assets/minecraft/models/item/oak_log.json delete mode 100644 assets/minecraft/models/item/oak_planks.json delete mode 100644 assets/minecraft/models/item/oak_pressure_plate.json delete mode 100644 assets/minecraft/models/item/oak_slab.json delete mode 100644 assets/minecraft/models/item/oak_stairs.json delete mode 100644 assets/minecraft/models/item/oak_trapdoor.json delete mode 100644 assets/minecraft/models/item/oak_wood.json delete mode 100644 assets/minecraft/models/item/observer.json delete mode 100644 assets/minecraft/models/item/obsidian.json delete mode 100644 assets/minecraft/models/item/ocelot_spawn_egg.json delete mode 100644 assets/minecraft/models/item/ochre_froglight.json create mode 100644 assets/minecraft/models/item/open_eyeblossom.json delete mode 100644 assets/minecraft/models/item/orange_banner.json delete mode 100644 assets/minecraft/models/item/orange_carpet.json delete mode 100644 assets/minecraft/models/item/orange_concrete.json delete mode 100644 assets/minecraft/models/item/orange_concrete_powder.json delete mode 100644 assets/minecraft/models/item/orange_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/orange_stained_glass.json delete mode 100644 assets/minecraft/models/item/orange_terracotta.json delete mode 100644 assets/minecraft/models/item/orange_wool.json delete mode 100644 assets/minecraft/models/item/oxidized_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/oxidized_copper.json delete mode 100644 assets/minecraft/models/item/oxidized_copper_bulb.json delete mode 100644 assets/minecraft/models/item/oxidized_copper_grate.json delete mode 100644 assets/minecraft/models/item/oxidized_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/oxidized_cut_copper.json delete mode 100644 assets/minecraft/models/item/oxidized_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/oxidized_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/packed_ice.json delete mode 100644 assets/minecraft/models/item/packed_mud.json delete mode 100644 assets/minecraft/models/item/pale_moss_block.json delete mode 100644 assets/minecraft/models/item/pale_moss_carpet.json delete mode 100644 assets/minecraft/models/item/pale_oak_button.json delete mode 100644 assets/minecraft/models/item/pale_oak_fence.json delete mode 100644 assets/minecraft/models/item/pale_oak_fence_gate.json delete mode 100644 assets/minecraft/models/item/pale_oak_leaves.json delete mode 100644 assets/minecraft/models/item/pale_oak_log.json delete mode 100644 assets/minecraft/models/item/pale_oak_planks.json delete mode 100644 assets/minecraft/models/item/pale_oak_pressure_plate.json delete mode 100644 assets/minecraft/models/item/pale_oak_slab.json delete mode 100644 assets/minecraft/models/item/pale_oak_stairs.json delete mode 100644 assets/minecraft/models/item/pale_oak_trapdoor.json delete mode 100644 assets/minecraft/models/item/pale_oak_wood.json delete mode 100644 assets/minecraft/models/item/panda_spawn_egg.json delete mode 100644 assets/minecraft/models/item/parrot_spawn_egg.json delete mode 100644 assets/minecraft/models/item/pearlescent_froglight.json delete mode 100644 assets/minecraft/models/item/petrified_oak_slab.json delete mode 100644 assets/minecraft/models/item/phantom_spawn_egg.json delete mode 100644 assets/minecraft/models/item/pig_spawn_egg.json delete mode 100644 assets/minecraft/models/item/piglin_brute_spawn_egg.json delete mode 100644 assets/minecraft/models/item/piglin_head.json delete mode 100644 assets/minecraft/models/item/piglin_spawn_egg.json delete mode 100644 assets/minecraft/models/item/pillager_spawn_egg.json delete mode 100644 assets/minecraft/models/item/pink_banner.json delete mode 100644 assets/minecraft/models/item/pink_carpet.json delete mode 100644 assets/minecraft/models/item/pink_concrete.json delete mode 100644 assets/minecraft/models/item/pink_concrete_powder.json delete mode 100644 assets/minecraft/models/item/pink_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/pink_stained_glass.json delete mode 100644 assets/minecraft/models/item/pink_terracotta.json delete mode 100644 assets/minecraft/models/item/pink_wool.json delete mode 100644 assets/minecraft/models/item/piston.json delete mode 100644 assets/minecraft/models/item/player_head.json delete mode 100644 assets/minecraft/models/item/podzol.json delete mode 100644 assets/minecraft/models/item/polar_bear_spawn_egg.json delete mode 100644 assets/minecraft/models/item/polished_andesite.json delete mode 100644 assets/minecraft/models/item/polished_andesite_slab.json delete mode 100644 assets/minecraft/models/item/polished_andesite_stairs.json delete mode 100644 assets/minecraft/models/item/polished_basalt.json delete mode 100644 assets/minecraft/models/item/polished_blackstone.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_brick_slab.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_brick_stairs.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_brick_wall.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_bricks.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_button.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_pressure_plate.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_slab.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_stairs.json delete mode 100644 assets/minecraft/models/item/polished_blackstone_wall.json delete mode 100644 assets/minecraft/models/item/polished_deepslate.json delete mode 100644 assets/minecraft/models/item/polished_deepslate_slab.json delete mode 100644 assets/minecraft/models/item/polished_deepslate_stairs.json delete mode 100644 assets/minecraft/models/item/polished_deepslate_wall.json delete mode 100644 assets/minecraft/models/item/polished_diorite.json delete mode 100644 assets/minecraft/models/item/polished_diorite_slab.json delete mode 100644 assets/minecraft/models/item/polished_diorite_stairs.json delete mode 100644 assets/minecraft/models/item/polished_granite.json delete mode 100644 assets/minecraft/models/item/polished_granite_slab.json delete mode 100644 assets/minecraft/models/item/polished_granite_stairs.json delete mode 100644 assets/minecraft/models/item/polished_tuff.json delete mode 100644 assets/minecraft/models/item/polished_tuff_slab.json delete mode 100644 assets/minecraft/models/item/polished_tuff_stairs.json delete mode 100644 assets/minecraft/models/item/polished_tuff_wall.json delete mode 100644 assets/minecraft/models/item/prismarine.json delete mode 100644 assets/minecraft/models/item/prismarine_brick_slab.json delete mode 100644 assets/minecraft/models/item/prismarine_brick_stairs.json delete mode 100644 assets/minecraft/models/item/prismarine_bricks.json delete mode 100644 assets/minecraft/models/item/prismarine_slab.json delete mode 100644 assets/minecraft/models/item/prismarine_stairs.json delete mode 100644 assets/minecraft/models/item/prismarine_wall.json delete mode 100644 assets/minecraft/models/item/pufferfish_spawn_egg.json delete mode 100644 assets/minecraft/models/item/pumpkin.json delete mode 100644 assets/minecraft/models/item/purple_banner.json delete mode 100644 assets/minecraft/models/item/purple_carpet.json delete mode 100644 assets/minecraft/models/item/purple_concrete.json delete mode 100644 assets/minecraft/models/item/purple_concrete_powder.json delete mode 100644 assets/minecraft/models/item/purple_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/purple_stained_glass.json delete mode 100644 assets/minecraft/models/item/purple_terracotta.json delete mode 100644 assets/minecraft/models/item/purple_wool.json delete mode 100644 assets/minecraft/models/item/purpur_block.json delete mode 100644 assets/minecraft/models/item/purpur_pillar.json delete mode 100644 assets/minecraft/models/item/purpur_slab.json delete mode 100644 assets/minecraft/models/item/purpur_stairs.json delete mode 100644 assets/minecraft/models/item/quartz_block.json delete mode 100644 assets/minecraft/models/item/quartz_bricks.json delete mode 100644 assets/minecraft/models/item/quartz_pillar.json delete mode 100644 assets/minecraft/models/item/quartz_slab.json delete mode 100644 assets/minecraft/models/item/quartz_stairs.json delete mode 100644 assets/minecraft/models/item/rabbit_spawn_egg.json delete mode 100644 assets/minecraft/models/item/ravager_spawn_egg.json delete mode 100644 assets/minecraft/models/item/raw_copper_block.json delete mode 100644 assets/minecraft/models/item/raw_gold_block.json delete mode 100644 assets/minecraft/models/item/raw_iron_block.json delete mode 100644 assets/minecraft/models/item/recovery_compass.json create mode 100644 assets/minecraft/models/item/recovery_compass_16.json delete mode 100644 assets/minecraft/models/item/red_banner.json delete mode 100644 assets/minecraft/models/item/red_carpet.json delete mode 100644 assets/minecraft/models/item/red_concrete.json delete mode 100644 assets/minecraft/models/item/red_concrete_powder.json delete mode 100644 assets/minecraft/models/item/red_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/red_mushroom_block.json delete mode 100644 assets/minecraft/models/item/red_nether_brick_slab.json delete mode 100644 assets/minecraft/models/item/red_nether_brick_stairs.json delete mode 100644 assets/minecraft/models/item/red_nether_brick_wall.json delete mode 100644 assets/minecraft/models/item/red_nether_bricks.json delete mode 100644 assets/minecraft/models/item/red_sand.json delete mode 100644 assets/minecraft/models/item/red_sandstone.json delete mode 100644 assets/minecraft/models/item/red_sandstone_slab.json delete mode 100644 assets/minecraft/models/item/red_sandstone_stairs.json delete mode 100644 assets/minecraft/models/item/red_sandstone_wall.json delete mode 100644 assets/minecraft/models/item/red_stained_glass.json delete mode 100644 assets/minecraft/models/item/red_terracotta.json delete mode 100644 assets/minecraft/models/item/red_wool.json delete mode 100644 assets/minecraft/models/item/redstone_block.json delete mode 100644 assets/minecraft/models/item/redstone_lamp.json delete mode 100644 assets/minecraft/models/item/redstone_ore.json delete mode 100644 assets/minecraft/models/item/reinforced_deepslate.json delete mode 100644 assets/minecraft/models/item/repeating_command_block.json create mode 100644 assets/minecraft/models/item/resin_brick.json create mode 100644 assets/minecraft/models/item/resin_clump.json delete mode 100644 assets/minecraft/models/item/respawn_anchor.json delete mode 100644 assets/minecraft/models/item/rooted_dirt.json delete mode 100644 assets/minecraft/models/item/salmon_spawn_egg.json delete mode 100644 assets/minecraft/models/item/sand.json delete mode 100644 assets/minecraft/models/item/sandstone.json delete mode 100644 assets/minecraft/models/item/sandstone_slab.json delete mode 100644 assets/minecraft/models/item/sandstone_stairs.json delete mode 100644 assets/minecraft/models/item/sandstone_wall.json delete mode 100644 assets/minecraft/models/item/scaffolding.json delete mode 100644 assets/minecraft/models/item/sculk.json delete mode 100644 assets/minecraft/models/item/sculk_catalyst.json delete mode 100644 assets/minecraft/models/item/sculk_sensor.json delete mode 100644 assets/minecraft/models/item/sculk_shrieker.json delete mode 100644 assets/minecraft/models/item/sea_lantern.json delete mode 100644 assets/minecraft/models/item/sheep_spawn_egg.json delete mode 100644 assets/minecraft/models/item/shroomlight.json delete mode 100644 assets/minecraft/models/item/shulker_spawn_egg.json delete mode 100644 assets/minecraft/models/item/silverfish_spawn_egg.json delete mode 100644 assets/minecraft/models/item/skeleton_horse_spawn_egg.json delete mode 100644 assets/minecraft/models/item/skeleton_skull.json delete mode 100644 assets/minecraft/models/item/skeleton_spawn_egg.json delete mode 100644 assets/minecraft/models/item/slime_block.json delete mode 100644 assets/minecraft/models/item/slime_spawn_egg.json delete mode 100644 assets/minecraft/models/item/smithing_table.json delete mode 100644 assets/minecraft/models/item/smoker.json delete mode 100644 assets/minecraft/models/item/smooth_basalt.json delete mode 100644 assets/minecraft/models/item/smooth_quartz.json delete mode 100644 assets/minecraft/models/item/smooth_quartz_slab.json delete mode 100644 assets/minecraft/models/item/smooth_quartz_stairs.json delete mode 100644 assets/minecraft/models/item/smooth_red_sandstone.json delete mode 100644 assets/minecraft/models/item/smooth_red_sandstone_slab.json delete mode 100644 assets/minecraft/models/item/smooth_red_sandstone_stairs.json delete mode 100644 assets/minecraft/models/item/smooth_sandstone.json delete mode 100644 assets/minecraft/models/item/smooth_sandstone_slab.json delete mode 100644 assets/minecraft/models/item/smooth_sandstone_stairs.json delete mode 100644 assets/minecraft/models/item/smooth_stone.json delete mode 100644 assets/minecraft/models/item/smooth_stone_slab.json delete mode 100644 assets/minecraft/models/item/sniffer_spawn_egg.json delete mode 100644 assets/minecraft/models/item/snow.json delete mode 100644 assets/minecraft/models/item/snow_block.json delete mode 100644 assets/minecraft/models/item/snow_golem_spawn_egg.json delete mode 100644 assets/minecraft/models/item/soul_sand.json delete mode 100644 assets/minecraft/models/item/soul_soil.json delete mode 100644 assets/minecraft/models/item/spawner.json delete mode 100644 assets/minecraft/models/item/spider_spawn_egg.json delete mode 100644 assets/minecraft/models/item/sponge.json delete mode 100644 assets/minecraft/models/item/spore_blossom.json delete mode 100644 assets/minecraft/models/item/spruce_button.json delete mode 100644 assets/minecraft/models/item/spruce_fence.json delete mode 100644 assets/minecraft/models/item/spruce_fence_gate.json delete mode 100644 assets/minecraft/models/item/spruce_leaves.json delete mode 100644 assets/minecraft/models/item/spruce_log.json delete mode 100644 assets/minecraft/models/item/spruce_planks.json delete mode 100644 assets/minecraft/models/item/spruce_pressure_plate.json delete mode 100644 assets/minecraft/models/item/spruce_slab.json delete mode 100644 assets/minecraft/models/item/spruce_stairs.json delete mode 100644 assets/minecraft/models/item/spruce_trapdoor.json delete mode 100644 assets/minecraft/models/item/spruce_wood.json delete mode 100644 assets/minecraft/models/item/squid_spawn_egg.json delete mode 100644 assets/minecraft/models/item/sticky_piston.json delete mode 100644 assets/minecraft/models/item/stone.json delete mode 100644 assets/minecraft/models/item/stone_brick_slab.json delete mode 100644 assets/minecraft/models/item/stone_brick_stairs.json delete mode 100644 assets/minecraft/models/item/stone_brick_wall.json delete mode 100644 assets/minecraft/models/item/stone_bricks.json delete mode 100644 assets/minecraft/models/item/stone_button.json delete mode 100644 assets/minecraft/models/item/stone_pressure_plate.json delete mode 100644 assets/minecraft/models/item/stone_slab.json delete mode 100644 assets/minecraft/models/item/stone_stairs.json delete mode 100644 assets/minecraft/models/item/stonecutter.json delete mode 100644 assets/minecraft/models/item/stray_spawn_egg.json delete mode 100644 assets/minecraft/models/item/strider_spawn_egg.json delete mode 100644 assets/minecraft/models/item/stripped_acacia_log.json delete mode 100644 assets/minecraft/models/item/stripped_acacia_wood.json delete mode 100644 assets/minecraft/models/item/stripped_bamboo_block.json delete mode 100644 assets/minecraft/models/item/stripped_birch_log.json delete mode 100644 assets/minecraft/models/item/stripped_birch_wood.json delete mode 100644 assets/minecraft/models/item/stripped_cherry_log.json delete mode 100644 assets/minecraft/models/item/stripped_cherry_wood.json delete mode 100644 assets/minecraft/models/item/stripped_crimson_hyphae.json delete mode 100644 assets/minecraft/models/item/stripped_crimson_stem.json delete mode 100644 assets/minecraft/models/item/stripped_dark_oak_log.json delete mode 100644 assets/minecraft/models/item/stripped_dark_oak_wood.json delete mode 100644 assets/minecraft/models/item/stripped_jungle_log.json delete mode 100644 assets/minecraft/models/item/stripped_jungle_wood.json delete mode 100644 assets/minecraft/models/item/stripped_mangrove_log.json delete mode 100644 assets/minecraft/models/item/stripped_mangrove_wood.json delete mode 100644 assets/minecraft/models/item/stripped_oak_log.json delete mode 100644 assets/minecraft/models/item/stripped_oak_wood.json delete mode 100644 assets/minecraft/models/item/stripped_pale_oak_log.json delete mode 100644 assets/minecraft/models/item/stripped_pale_oak_wood.json delete mode 100644 assets/minecraft/models/item/stripped_spruce_log.json delete mode 100644 assets/minecraft/models/item/stripped_spruce_wood.json delete mode 100644 assets/minecraft/models/item/stripped_warped_hyphae.json delete mode 100644 assets/minecraft/models/item/stripped_warped_stem.json delete mode 100644 assets/minecraft/models/item/structure_block.json delete mode 100644 assets/minecraft/models/item/suspicious_gravel.json delete mode 100644 assets/minecraft/models/item/suspicious_sand.json delete mode 100644 assets/minecraft/models/item/tadpole_spawn_egg.json delete mode 100644 assets/minecraft/models/item/target.json create mode 100644 assets/minecraft/models/item/template_bundle_open_back.json create mode 100644 assets/minecraft/models/item/template_bundle_open_front.json create mode 100644 assets/minecraft/models/item/template_chest.json delete mode 100644 assets/minecraft/models/item/terracotta.json delete mode 100644 assets/minecraft/models/item/tinted_glass.json delete mode 100644 assets/minecraft/models/item/tnt.json delete mode 100644 assets/minecraft/models/item/trader_llama_spawn_egg.json delete mode 100644 assets/minecraft/models/item/trial_spawner.json delete mode 100644 assets/minecraft/models/item/tropical_fish_spawn_egg.json delete mode 100644 assets/minecraft/models/item/tube_coral_block.json delete mode 100644 assets/minecraft/models/item/tuff.json delete mode 100644 assets/minecraft/models/item/tuff_brick_slab.json delete mode 100644 assets/minecraft/models/item/tuff_brick_stairs.json delete mode 100644 assets/minecraft/models/item/tuff_brick_wall.json delete mode 100644 assets/minecraft/models/item/tuff_bricks.json delete mode 100644 assets/minecraft/models/item/tuff_slab.json delete mode 100644 assets/minecraft/models/item/tuff_stairs.json delete mode 100644 assets/minecraft/models/item/tuff_wall.json create mode 100644 assets/minecraft/models/item/turtle_helmet_resin_trim.json delete mode 100644 assets/minecraft/models/item/turtle_spawn_egg.json delete mode 100644 assets/minecraft/models/item/vault.json delete mode 100644 assets/minecraft/models/item/verdant_froglight.json delete mode 100644 assets/minecraft/models/item/vex_spawn_egg.json delete mode 100644 assets/minecraft/models/item/villager_spawn_egg.json delete mode 100644 assets/minecraft/models/item/vindicator_spawn_egg.json delete mode 100644 assets/minecraft/models/item/wandering_trader_spawn_egg.json delete mode 100644 assets/minecraft/models/item/warden_spawn_egg.json delete mode 100644 assets/minecraft/models/item/warped_button.json delete mode 100644 assets/minecraft/models/item/warped_fence.json delete mode 100644 assets/minecraft/models/item/warped_fence_gate.json delete mode 100644 assets/minecraft/models/item/warped_hyphae.json delete mode 100644 assets/minecraft/models/item/warped_nylium.json delete mode 100644 assets/minecraft/models/item/warped_planks.json delete mode 100644 assets/minecraft/models/item/warped_pressure_plate.json delete mode 100644 assets/minecraft/models/item/warped_slab.json delete mode 100644 assets/minecraft/models/item/warped_stairs.json delete mode 100644 assets/minecraft/models/item/warped_stem.json delete mode 100644 assets/minecraft/models/item/warped_trapdoor.json delete mode 100644 assets/minecraft/models/item/warped_wart_block.json delete mode 100644 assets/minecraft/models/item/waxed_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/waxed_copper_block.json delete mode 100644 assets/minecraft/models/item/waxed_copper_bulb.json delete mode 100644 assets/minecraft/models/item/waxed_copper_door.json delete mode 100644 assets/minecraft/models/item/waxed_copper_grate.json delete mode 100644 assets/minecraft/models/item/waxed_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/waxed_cut_copper.json delete mode 100644 assets/minecraft/models/item/waxed_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/waxed_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_copper.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_copper_bulb.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_copper_door.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_copper_grate.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_cut_copper.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/waxed_exposed_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_copper.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_copper_bulb.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_copper_door.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_copper_grate.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_cut_copper.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/waxed_oxidized_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_copper.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_copper_bulb.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_copper_door.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_copper_grate.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_cut_copper.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/waxed_weathered_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/weathered_chiseled_copper.json delete mode 100644 assets/minecraft/models/item/weathered_copper.json delete mode 100644 assets/minecraft/models/item/weathered_copper_bulb.json delete mode 100644 assets/minecraft/models/item/weathered_copper_grate.json delete mode 100644 assets/minecraft/models/item/weathered_copper_trapdoor.json delete mode 100644 assets/minecraft/models/item/weathered_cut_copper.json delete mode 100644 assets/minecraft/models/item/weathered_cut_copper_slab.json delete mode 100644 assets/minecraft/models/item/weathered_cut_copper_stairs.json delete mode 100644 assets/minecraft/models/item/wet_sponge.json delete mode 100644 assets/minecraft/models/item/white_banner.json delete mode 100644 assets/minecraft/models/item/white_carpet.json delete mode 100644 assets/minecraft/models/item/white_concrete.json delete mode 100644 assets/minecraft/models/item/white_concrete_powder.json delete mode 100644 assets/minecraft/models/item/white_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/white_stained_glass.json delete mode 100644 assets/minecraft/models/item/white_terracotta.json delete mode 100644 assets/minecraft/models/item/white_wool.json delete mode 100644 assets/minecraft/models/item/witch_spawn_egg.json delete mode 100644 assets/minecraft/models/item/wither_skeleton_skull.json delete mode 100644 assets/minecraft/models/item/wither_skeleton_spawn_egg.json delete mode 100644 assets/minecraft/models/item/wither_spawn_egg.json create mode 100644 assets/minecraft/models/item/wolf_armor_dyed.json delete mode 100644 assets/minecraft/models/item/wolf_spawn_egg.json delete mode 100644 assets/minecraft/models/item/yellow_banner.json delete mode 100644 assets/minecraft/models/item/yellow_carpet.json delete mode 100644 assets/minecraft/models/item/yellow_concrete.json delete mode 100644 assets/minecraft/models/item/yellow_concrete_powder.json delete mode 100644 assets/minecraft/models/item/yellow_glazed_terracotta.json delete mode 100644 assets/minecraft/models/item/yellow_stained_glass.json delete mode 100644 assets/minecraft/models/item/yellow_terracotta.json delete mode 100644 assets/minecraft/models/item/yellow_wool.json delete mode 100644 assets/minecraft/models/item/zoglin_spawn_egg.json delete mode 100644 assets/minecraft/models/item/zombie_head.json delete mode 100644 assets/minecraft/models/item/zombie_horse_spawn_egg.json delete mode 100644 assets/minecraft/models/item/zombie_spawn_egg.json delete mode 100644 assets/minecraft/models/item/zombie_villager_spawn_egg.json delete mode 100644 assets/minecraft/models/item/zombified_piglin_spawn_egg.json create mode 100644 assets/minecraft/particles/pale_oak_leaves.json create mode 100644 assets/minecraft/textures/block/chiseled_resin_bricks.png create mode 100644 assets/minecraft/textures/block/closed_eyeblossom.png create mode 100644 assets/minecraft/textures/block/open_eyeblossom.png create mode 100644 assets/minecraft/textures/block/open_eyeblossom_emissive.png create mode 100644 assets/minecraft/textures/block/resin_block.png create mode 100644 assets/minecraft/textures/block/resin_bricks.png create mode 100644 assets/minecraft/textures/block/resin_clump.png create mode 100644 assets/minecraft/textures/gui/sprites/advancements/box_obtained.png.mcmeta create mode 100644 assets/minecraft/textures/gui/sprites/advancements/box_unobtained.png.mcmeta create mode 100644 assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png.mcmeta delete mode 100644 assets/minecraft/textures/gui/sprites/container/horse/armor_slot.png delete mode 100644 assets/minecraft/textures/gui/sprites/container/horse/llama_armor_slot.png delete mode 100644 assets/minecraft/textures/gui/sprites/container/horse/saddle_slot.png delete mode 100644 assets/minecraft/textures/gui/sprites/container/loom/banner_slot.png delete mode 100644 assets/minecraft/textures/gui/sprites/container/loom/dye_slot.png delete mode 100644 assets/minecraft/textures/gui/sprites/container/loom/pattern_slot.png rename assets/minecraft/textures/{item/empty_slot_amethyst_shard.png => gui/sprites/container/slot/amethyst_shard.png} (100%) rename assets/minecraft/textures/{item/empty_slot_axe.png => gui/sprites/container/slot/axe.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/banner.png create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/banner_pattern.png rename assets/minecraft/textures/{item/empty_armor_slot_boots.png => gui/sprites/container/slot/boots.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/brewing_fuel.png rename assets/minecraft/textures/{item/empty_armor_slot_chestplate.png => gui/sprites/container/slot/chestplate.png} (100%) rename assets/minecraft/textures/{item/empty_slot_diamond.png => gui/sprites/container/slot/diamond.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/dye.png rename assets/minecraft/textures/{item/empty_slot_emerald.png => gui/sprites/container/slot/emerald.png} (100%) rename assets/minecraft/textures/{item/empty_armor_slot_helmet.png => gui/sprites/container/slot/helmet.png} (100%) rename assets/minecraft/textures/{item/empty_slot_hoe.png => gui/sprites/container/slot/hoe.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/horse_armor.png rename assets/minecraft/textures/{item/empty_slot_ingot.png => gui/sprites/container/slot/ingot.png} (100%) rename assets/minecraft/textures/{item/empty_slot_lapis_lazuli.png => gui/sprites/container/slot/lapis_lazuli.png} (100%) rename assets/minecraft/textures/{item/empty_armor_slot_leggings.png => gui/sprites/container/slot/leggings.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/llama_armor.png rename assets/minecraft/textures/{item/empty_slot_pickaxe.png => gui/sprites/container/slot/pickaxe.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/potion.png rename assets/minecraft/textures/{item/empty_slot_quartz.png => gui/sprites/container/slot/quartz.png} (100%) rename assets/minecraft/textures/{item/empty_slot_redstone_dust.png => gui/sprites/container/slot/redstone_dust.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/container/slot/saddle.png rename assets/minecraft/textures/{item/empty_armor_slot_shield.png => gui/sprites/container/slot/shield.png} (100%) rename assets/minecraft/textures/{item/empty_slot_shovel.png => gui/sprites/container/slot/shovel.png} (100%) rename assets/minecraft/textures/{item/empty_slot_smithing_template_armor_trim.png => gui/sprites/container/slot/smithing_template_armor_trim.png} (100%) rename assets/minecraft/textures/{item/empty_slot_smithing_template_netherite_upgrade.png => gui/sprites/container/slot/smithing_template_netherite_upgrade.png} (100%) rename assets/minecraft/textures/{item/empty_slot_sword.png => gui/sprites/container/slot/sword.png} (100%) create mode 100644 assets/minecraft/textures/gui/sprites/toast/system.png.mcmeta create mode 100644 assets/minecraft/textures/gui/sprites/toast/tutorial.png.mcmeta rename assets/minecraft/textures/item/{broken_elytra.png => elytra_broken.png} (100%) create mode 100644 assets/minecraft/textures/item/resin_brick.png create mode 100644 assets/minecraft/textures/item/resin_clump.png create mode 100644 assets/minecraft/textures/particle/pale_oak_0.png create mode 100644 assets/minecraft/textures/particle/pale_oak_1.png create mode 100644 assets/minecraft/textures/particle/pale_oak_10.png create mode 100644 assets/minecraft/textures/particle/pale_oak_11.png create mode 100644 assets/minecraft/textures/particle/pale_oak_2.png create mode 100644 assets/minecraft/textures/particle/pale_oak_3.png create mode 100644 assets/minecraft/textures/particle/pale_oak_4.png create mode 100644 assets/minecraft/textures/particle/pale_oak_5.png create mode 100644 assets/minecraft/textures/particle/pale_oak_6.png create mode 100644 assets/minecraft/textures/particle/pale_oak_7.png create mode 100644 assets/minecraft/textures/particle/pale_oak_8.png create mode 100644 assets/minecraft/textures/particle/pale_oak_9.png create mode 100644 assets/minecraft/textures/trims/color_palettes/resin.png create mode 100644 data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks.json create mode 100644 data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks_from_resin_bricks_stonecutting.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/building_blocks/pale_oak_planks.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/building_blocks/pale_oak_slab.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/building_blocks/pale_oak_stairs.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/building_blocks/pale_oak_wood.json (100%) create mode 100644 data/minecraft/advancement/recipes/building_blocks/resin_block.json create mode 100644 data/minecraft/advancement/recipes/building_blocks/resin_brick_slab.json create mode 100644 data/minecraft/advancement/recipes/building_blocks/resin_brick_slab_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs.json create mode 100644 data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/advancement/recipes/building_blocks/resin_bricks.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/building_blocks/stripped_pale_oak_wood.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/decorations/pale_moss_carpet.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/decorations/pale_oak_fence.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/decorations/pale_oak_hanging_sign.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/decorations/pale_oak_sign.json (100%) create mode 100644 data/minecraft/advancement/recipes/decorations/resin_brick_wall.json create mode 100644 data/minecraft/advancement/recipes/decorations/resin_brick_wall_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/advancement/recipes/food/suspicious_stew_from_closed_eyeblossom.json create mode 100644 data/minecraft/advancement/recipes/food/suspicious_stew_from_open_eyeblossom.json create mode 100644 data/minecraft/advancement/recipes/misc/creaking_heart.json create mode 100644 data/minecraft/advancement/recipes/misc/gray_dye_from_closed_eyeblossom.json create mode 100644 data/minecraft/advancement/recipes/misc/orange_dye_from_open_eyeblossom.json create mode 100644 data/minecraft/advancement/recipes/misc/resin_brick.json create mode 100644 data/minecraft/advancement/recipes/misc/resin_clump.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/redstone/pale_oak_button.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/redstone/pale_oak_door.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/redstone/pale_oak_fence_gate.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/redstone/pale_oak_pressure_plate.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/redstone/pale_oak_trapdoor.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/transportation/pale_oak_boat.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/advancement/recipes/transportation/pale_oak_chest_boat.json (100%) delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/adventuring_time.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_a_mob.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_all_mobs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/creaking_heart.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_hanging_moss.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_block.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_carpet.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_button.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_door.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_leaves.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_log.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_planks.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sapling.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sign.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_slab.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_stairs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_wood.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/ceiling_hanging_signs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/combination_step_sound_blocks.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/dirt.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/fence_gates.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/flower_pots.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/leaves.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/logs_that_burn.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/axe.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/hoe.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/overworld_natural_logs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/planks.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/saplings.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/standing_signs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/sword_efficient.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_hanging_signs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_signs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_buttons.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_doors.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_fences.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_pressure_plates.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_slabs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_stairs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_trapdoors.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/entity_type/boat.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/boats.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/chest_boats.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/dirt.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/fence_gates.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/hanging_signs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/leaves.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/logs_that_burn.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/planks.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/saplings.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/signs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_buttons.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_doors.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_fences.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_pressure_plates.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_slabs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_stairs.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_trapdoors.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_forest.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_overworld.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json delete mode 100644 data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/multi_noise_biome_source_parameter_list/overworld.json delete mode 100644 data/minecraft/datapacks/winter_drop/pack.mcmeta create mode 100644 data/minecraft/loot_table/blocks/chiseled_resin_bricks.json create mode 100644 data/minecraft/loot_table/blocks/closed_eyeblossom.json create mode 100644 data/minecraft/loot_table/blocks/open_eyeblossom.json create mode 100644 data/minecraft/loot_table/blocks/potted_closed_eyeblossom.json create mode 100644 data/minecraft/loot_table/blocks/potted_open_eyeblossom.json create mode 100644 data/minecraft/loot_table/blocks/resin_block.json create mode 100644 data/minecraft/loot_table/blocks/resin_brick_slab.json create mode 100644 data/minecraft/loot_table/blocks/resin_brick_stairs.json create mode 100644 data/minecraft/loot_table/blocks/resin_brick_wall.json create mode 100644 data/minecraft/loot_table/blocks/resin_bricks.json create mode 100644 data/minecraft/loot_table/blocks/resin_clump.json delete mode 100644 data/minecraft/loot_table/entities/creaking_transient.json create mode 100644 data/minecraft/recipe/chiseled_resin_bricks.json create mode 100644 data/minecraft/recipe/chiseled_resin_bricks_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/recipe/creaking_heart.json create mode 100644 data/minecraft/recipe/gray_dye_from_closed_eyeblossom.json create mode 100644 data/minecraft/recipe/orange_dye_from_open_eyeblossom.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_moss_carpet.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_boat.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_button.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_chest_boat.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_door.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_fence.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_fence_gate.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_hanging_sign.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_planks.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_pressure_plate.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_sign.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_slab.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_stairs.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_trapdoor.json (100%) rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/pale_oak_wood.json (100%) create mode 100644 data/minecraft/recipe/resin_block.json create mode 100644 data/minecraft/recipe/resin_brick.json create mode 100644 data/minecraft/recipe/resin_brick_slab.json create mode 100644 data/minecraft/recipe/resin_brick_slab_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/recipe/resin_brick_stairs.json create mode 100644 data/minecraft/recipe/resin_brick_stairs_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/recipe/resin_brick_wall.json create mode 100644 data/minecraft/recipe/resin_brick_wall_from_resin_bricks_stonecutting.json create mode 100644 data/minecraft/recipe/resin_bricks.json create mode 100644 data/minecraft/recipe/resin_clump.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/recipe/stripped_pale_oak_wood.json (100%) create mode 100644 data/minecraft/recipe/suspicious_stew_from_closed_eyeblossom.json create mode 100644 data/minecraft/recipe/suspicious_stew_from_open_eyeblossom.json create mode 100644 data/minecraft/tags/block/bee_attractive.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/tags/block/pale_oak_logs.json (100%) delete mode 100644 data/minecraft/tags/block/tall_flowers.json create mode 100644 data/minecraft/tags/item/drowned_preferred_weapons.json delete mode 100644 data/minecraft/tags/item/flowers.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/tags/item/pale_oak_logs.json (100%) create mode 100644 data/minecraft/tags/item/piglin_preferred_weapons.json create mode 100644 data/minecraft/tags/item/pillager_preferred_weapons.json create mode 100644 data/minecraft/tags/item/skeleton_preferred_weapons.json delete mode 100644 data/minecraft/tags/item/tall_flowers.json delete mode 100644 data/minecraft/tags/item/trim_templates.json create mode 100644 data/minecraft/tags/item/wither_skeleton_disliked_weapons.json create mode 100644 data/minecraft/trim_material/resin.json rename data/minecraft/{datapacks/winter_drop/data/minecraft => }/worldgen/biome/pale_garden.json (95%) create mode 100644 data/minecraft/worldgen/configured_feature/flower_pale_garden.json create mode 100644 data/minecraft/worldgen/configured_feature/pale_forest_flowers.json create mode 100644 data/minecraft/worldgen/configured_feature/pale_moss_patch.json create mode 100644 data/minecraft/worldgen/configured_feature/pale_oak_bonemeal.json create mode 100644 data/minecraft/worldgen/placed_feature/flower_pale_garden.json create mode 100644 data/minecraft/worldgen/placed_feature/pale_garden_flowers.json create mode 100644 data/minecraft/worldgen/placed_feature/pale_moss_patch.json create mode 100644 net/minecraft/SuppressForbidden.java create mode 100644 net/minecraft/client/ClientBootstrap.java create mode 100644 net/minecraft/client/color/item/Constant.java create mode 100644 net/minecraft/client/color/item/CustomModelDataSource.java create mode 100644 net/minecraft/client/color/item/Dye.java create mode 100644 net/minecraft/client/color/item/Firework.java create mode 100644 net/minecraft/client/color/item/GrassColorSource.java delete mode 100644 net/minecraft/client/color/item/ItemColor.java delete mode 100644 net/minecraft/client/color/item/ItemColors.java create mode 100644 net/minecraft/client/color/item/ItemTintSource.java create mode 100644 net/minecraft/client/color/item/ItemTintSources.java create mode 100644 net/minecraft/client/color/item/MapColor.java create mode 100644 net/minecraft/client/color/item/Potion.java create mode 100644 net/minecraft/client/color/item/TeamColor.java create mode 100644 net/minecraft/client/data/Main.java create mode 100644 net/minecraft/client/data/models/BlockModelGenerators.java create mode 100644 net/minecraft/client/data/models/EquipmentAssetProvider.java create mode 100644 net/minecraft/client/data/models/ItemModelGenerators.java create mode 100644 net/minecraft/client/data/models/ItemModelOutput.java create mode 100644 net/minecraft/client/data/models/ModelProvider.java create mode 100644 net/minecraft/client/data/models/blockstates/BlockStateGenerator.java rename net/minecraft/{ => client}/data/models/blockstates/Condition.java (82%) rename net/minecraft/{ => client}/data/models/blockstates/MultiPartGenerator.java (88%) rename net/minecraft/{ => client}/data/models/blockstates/MultiVariantGenerator.java (90%) create mode 100644 net/minecraft/client/data/models/blockstates/PropertyDispatch.java create mode 100644 net/minecraft/client/data/models/blockstates/Selector.java create mode 100644 net/minecraft/client/data/models/blockstates/Variant.java rename net/minecraft/{ => client}/data/models/blockstates/VariantProperties.java (84%) create mode 100644 net/minecraft/client/data/models/blockstates/VariantProperty.java create mode 100644 net/minecraft/client/data/models/blockstates/package-info.java create mode 100644 net/minecraft/client/data/models/model/DelegatedModel.java create mode 100644 net/minecraft/client/data/models/model/ItemModelUtils.java create mode 100644 net/minecraft/client/data/models/model/ModelInstance.java rename net/minecraft/{ => client}/data/models/model/ModelLocationUtils.java (75%) create mode 100644 net/minecraft/client/data/models/model/ModelTemplate.java rename net/minecraft/{ => client}/data/models/model/ModelTemplates.java (91%) create mode 100644 net/minecraft/client/data/models/model/TextureMapping.java rename net/minecraft/{ => client}/data/models/model/TextureSlot.java (93%) create mode 100644 net/minecraft/client/data/models/model/TexturedModel.java create mode 100644 net/minecraft/client/data/models/model/package-info.java create mode 100644 net/minecraft/client/data/models/package-info.java create mode 100644 net/minecraft/client/data/package-info.java create mode 100644 net/minecraft/client/gui/components/AbstractScrollArea.java delete mode 100644 net/minecraft/client/gui/components/AbstractScrollWidget.java create mode 100644 net/minecraft/client/gui/components/AbstractTextAreaWidget.java create mode 100644 net/minecraft/client/model/BannerFlagModel.java create mode 100644 net/minecraft/client/model/BannerModel.java delete mode 100644 net/minecraft/client/model/VillagerHeadModel.java create mode 100644 net/minecraft/client/model/VillagerLikeModel.java delete mode 100644 net/minecraft/client/particle/CherryParticle.java create mode 100644 net/minecraft/client/particle/FallingLeavesParticle.java delete mode 100644 net/minecraft/client/renderer/BlockEntityWithoutLevelRenderer.java delete mode 100644 net/minecraft/client/renderer/ItemModelShaper.java create mode 100644 net/minecraft/client/renderer/SpecialBlockModelRenderer.java delete mode 100644 net/minecraft/client/renderer/block/model/BakedOverrides.java delete mode 100644 net/minecraft/client/renderer/block/model/ItemOverride.java create mode 100644 net/minecraft/client/renderer/block/model/TextureSlots.java create mode 100644 net/minecraft/client/renderer/blockentity/AbstractSignRenderer.java create mode 100644 net/minecraft/client/renderer/entity/state/ArmedEntityRenderState.java create mode 100644 net/minecraft/client/renderer/entity/state/HoldingEntityRenderState.java create mode 100644 net/minecraft/client/renderer/entity/state/ItemClusterRenderState.java delete mode 100644 net/minecraft/client/renderer/entity/state/OminousItemSpawnerRenderState.java create mode 100644 net/minecraft/client/renderer/entity/state/SnowGolemRenderState.java create mode 100644 net/minecraft/client/renderer/item/BlockModelWrapper.java create mode 100644 net/minecraft/client/renderer/item/BundleSelectedItemSpecialRenderer.java delete mode 100644 net/minecraft/client/renderer/item/ClampedItemPropertyFunction.java create mode 100644 net/minecraft/client/renderer/item/ClientItem.java delete mode 100644 net/minecraft/client/renderer/item/CompassItemPropertyFunction.java create mode 100644 net/minecraft/client/renderer/item/CompositeModel.java create mode 100644 net/minecraft/client/renderer/item/ConditionalItemModel.java create mode 100644 net/minecraft/client/renderer/item/EmptyModel.java create mode 100644 net/minecraft/client/renderer/item/ItemModel.java create mode 100644 net/minecraft/client/renderer/item/ItemModelResolver.java create mode 100644 net/minecraft/client/renderer/item/ItemModels.java delete mode 100644 net/minecraft/client/renderer/item/ItemProperties.java delete mode 100644 net/minecraft/client/renderer/item/ItemPropertyFunction.java create mode 100644 net/minecraft/client/renderer/item/ItemStackRenderState.java create mode 100644 net/minecraft/client/renderer/item/MissingItemModel.java create mode 100644 net/minecraft/client/renderer/item/RangeSelectItemModel.java create mode 100644 net/minecraft/client/renderer/item/SelectItemModel.java create mode 100644 net/minecraft/client/renderer/item/SpecialModelWrapper.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/Broken.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/BundleHasSelectedItem.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperties.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/CustomModelDataProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/Damaged.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/ExtendedView.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/FishingRodCast.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/HasComponent.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/IsCarried.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/IsKeybindDown.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/IsSelected.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/IsUsingItem.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/IsViewEntity.java create mode 100644 net/minecraft/client/renderer/item/properties/conditional/package-info.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/BundleFullness.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/CompassAngle.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/CompassAngleState.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/Cooldown.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/Count.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/CrossbowPull.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/CustomModelDataProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/Damage.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/NeedleDirectionHelper.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/Time.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/UseCycle.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/UseDuration.java create mode 100644 net/minecraft/client/renderer/item/properties/numeric/package-info.java create mode 100644 net/minecraft/client/renderer/item/properties/package-info.java create mode 100644 net/minecraft/client/renderer/item/properties/select/Charge.java create mode 100644 net/minecraft/client/renderer/item/properties/select/ContextDimension.java create mode 100644 net/minecraft/client/renderer/item/properties/select/ContextEntityType.java create mode 100644 net/minecraft/client/renderer/item/properties/select/CustomModelDataProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/select/DisplayContext.java create mode 100644 net/minecraft/client/renderer/item/properties/select/ItemBlockState.java create mode 100644 net/minecraft/client/renderer/item/properties/select/LocalTime.java create mode 100644 net/minecraft/client/renderer/item/properties/select/MainHand.java create mode 100644 net/minecraft/client/renderer/item/properties/select/SelectItemModelProperties.java create mode 100644 net/minecraft/client/renderer/item/properties/select/SelectItemModelProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/select/TrimMaterialProperty.java create mode 100644 net/minecraft/client/renderer/item/properties/select/package-info.java create mode 100644 net/minecraft/client/renderer/special/BannerSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/BedSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/ChestSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/ConduitSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/DecoratedPotSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/HangingSignSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/NoDataSpecialModelRenderer.java create mode 100644 net/minecraft/client/renderer/special/ShieldSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/ShulkerBoxSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/SkullSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/SpecialModelRenderer.java create mode 100644 net/minecraft/client/renderer/special/SpecialModelRenderers.java create mode 100644 net/minecraft/client/renderer/special/StandingSignSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/TridentSpecialRenderer.java create mode 100644 net/minecraft/client/renderer/special/package-info.java delete mode 100644 net/minecraft/client/renderer/texture/HttpTexture.java delete mode 100644 net/minecraft/client/renderer/texture/PreloadedTexture.java create mode 100644 net/minecraft/client/renderer/texture/ReloadableTexture.java create mode 100644 net/minecraft/client/renderer/texture/SkinTextureDownloader.java create mode 100644 net/minecraft/client/renderer/texture/TextureContents.java delete mode 100644 net/minecraft/client/resources/metadata/animation/AnimationMetadataSectionSerializer.java delete mode 100644 net/minecraft/client/resources/metadata/animation/VillagerMetadataSectionSerializer.java delete mode 100644 net/minecraft/client/resources/metadata/texture/TextureMetadataSectionSerializer.java delete mode 100644 net/minecraft/client/resources/model/BuiltInModel.java create mode 100644 net/minecraft/client/resources/model/ClientItemInfoLoader.java create mode 100644 net/minecraft/client/resources/model/EquipmentAssetManager.java create mode 100644 net/minecraft/client/resources/model/EquipmentClientInfo.java delete mode 100644 net/minecraft/client/resources/model/EquipmentModelSet.java delete mode 100644 net/minecraft/client/resources/model/ItemModel.java create mode 100644 net/minecraft/client/resources/model/ModelDebugName.java create mode 100644 net/minecraft/client/resources/model/ResolvableModel.java delete mode 100644 net/minecraft/client/resources/model/SpecialModels.java create mode 100644 net/minecraft/client/resources/model/SpriteGetter.java create mode 100644 net/minecraft/client/sounds/MusicInfo.java delete mode 100644 net/minecraft/core/particles/TargetColorParticleOption.java create mode 100644 net/minecraft/core/particles/TrailParticleOption.java delete mode 100644 net/minecraft/data/advancements/packs/WinterDropAdvancementProvider.java delete mode 100644 net/minecraft/data/advancements/packs/WinterDropAdventureAdvancements.java delete mode 100644 net/minecraft/data/loot/packs/WinterDropBlockLoot.java delete mode 100644 net/minecraft/data/loot/packs/WinterDropLootTableProvider.java delete mode 100644 net/minecraft/data/models/BlockModelGenerators.java delete mode 100644 net/minecraft/data/models/EquipmentModelProvider.java delete mode 100644 net/minecraft/data/models/ItemModelGenerators.java delete mode 100644 net/minecraft/data/models/ModelProvider.java delete mode 100644 net/minecraft/data/models/blockstates/BlockStateGenerator.java delete mode 100644 net/minecraft/data/models/blockstates/PropertyDispatch.java delete mode 100644 net/minecraft/data/models/blockstates/Selector.java delete mode 100644 net/minecraft/data/models/blockstates/Variant.java delete mode 100644 net/minecraft/data/models/blockstates/VariantProperty.java delete mode 100644 net/minecraft/data/models/blockstates/package-info.java delete mode 100644 net/minecraft/data/models/model/DelegatedModel.java delete mode 100644 net/minecraft/data/models/model/ModelTemplate.java delete mode 100644 net/minecraft/data/models/model/TextureMapping.java delete mode 100644 net/minecraft/data/models/model/TexturedModel.java delete mode 100644 net/minecraft/data/models/model/package-info.java delete mode 100644 net/minecraft/data/models/package-info.java delete mode 100644 net/minecraft/data/recipes/packs/WinterDropRecipeProvider.java delete mode 100644 net/minecraft/data/registries/WinterDropRegistries.java delete mode 100644 net/minecraft/data/tags/WinterDropBiomeTagsProvider.java delete mode 100644 net/minecraft/data/tags/WinterDropBlockTagsProvider.java delete mode 100644 net/minecraft/data/tags/WinterDropEntityTypeTagsProvider.java delete mode 100644 net/minecraft/data/tags/WinterDropItemTagsProvider.java delete mode 100644 net/minecraft/data/worldgen/WinterDropBiomes.java create mode 100644 net/minecraft/network/HiddenByteBuf.java create mode 100644 net/minecraft/network/LocalFrameDecoder.java create mode 100644 net/minecraft/network/LocalFrameEncoder.java delete mode 100644 net/minecraft/network/MonitorFrameDecoder.java create mode 100644 net/minecraft/network/MonitoredLocalFrameDecoder.java delete mode 100644 net/minecraft/network/NoOpFrameDecoder.java delete mode 100644 net/minecraft/network/NoOpFrameEncoder.java create mode 100644 net/minecraft/network/protocol/game/ServerboundPickItemFromBlockPacket.java create mode 100644 net/minecraft/network/protocol/game/ServerboundPickItemFromEntityPacket.java delete mode 100644 net/minecraft/network/protocol/game/ServerboundPickItemPacket.java create mode 100644 net/minecraft/network/protocol/game/ServerboundPlayerLoadedPacket.java delete mode 100644 net/minecraft/server/packs/metadata/MetadataSectionSerializer.java create mode 100644 net/minecraft/util/datafix/fixes/BlockEntityFurnaceBurnTimeFix.java create mode 100644 net/minecraft/util/datafix/fixes/CustomModelDataExpandFix.java create mode 100644 net/minecraft/util/datafix/fixes/DataComponentRemainderFix.java create mode 100644 net/minecraft/util/datafix/fixes/EntityAttributeBaseValueFix.java create mode 100644 net/minecraft/util/datafix/fixes/EntityFieldsRenameFix.java delete mode 100644 net/minecraft/util/datafix/fixes/EntityPaintingFieldsRenameFix.java create mode 100644 net/minecraft/util/datafix/fixes/EquippableAssetRenameFix.java create mode 100644 net/minecraft/util/datafix/fixes/InvalidBlockEntityLockFix.java create mode 100644 net/minecraft/util/datafix/fixes/InvalidLockComponentFix.java delete mode 100644 net/minecraft/util/datafix/fixes/ItemStackComponentRemainderFix.java create mode 100644 net/minecraft/util/profiling/jfr/event/StructureGenerationEvent.java create mode 100644 net/minecraft/util/profiling/jfr/stats/StructureGenStat.java delete mode 100644 net/minecraft/world/entity/monster/creaking/CreakingTransient.java create mode 100644 net/minecraft/world/item/equipment/EquipmentAsset.java create mode 100644 net/minecraft/world/item/equipment/EquipmentAssets.java delete mode 100644 net/minecraft/world/item/equipment/EquipmentModel.java delete mode 100644 net/minecraft/world/item/equipment/EquipmentModels.java delete mode 100644 net/minecraft/world/level/block/CherryLeavesBlock.java create mode 100644 net/minecraft/world/level/block/EyeblossomBlock.java create mode 100644 net/minecraft/world/level/block/MultifaceSpreadeableBlock.java create mode 100644 net/minecraft/world/level/block/ParticleLeavesBlock.java diff --git a/assets/minecraft/atlases/armor_trims.json b/assets/minecraft/atlases/armor_trims.json index 149d65a8..e2fdafaa 100644 --- a/assets/minecraft/atlases/armor_trims.json +++ b/assets/minecraft/atlases/armor_trims.json @@ -55,7 +55,8 @@ "iron_darker": "trims/color_palettes/iron_darker", "gold_darker": "trims/color_palettes/gold_darker", "diamond_darker": "trims/color_palettes/diamond_darker", - "netherite_darker": "trims/color_palettes/netherite_darker" + "netherite_darker": "trims/color_palettes/netherite_darker", + "resin": "trims/color_palettes/resin" } } ] diff --git a/assets/minecraft/atlases/blocks.json b/assets/minecraft/atlases/blocks.json index d426b692..9f54d919 100644 --- a/assets/minecraft/atlases/blocks.json +++ b/assets/minecraft/atlases/blocks.json @@ -50,7 +50,8 @@ "iron_darker": "trims/color_palettes/iron_darker", "gold_darker": "trims/color_palettes/gold_darker", "diamond_darker": "trims/color_palettes/diamond_darker", - "netherite_darker": "trims/color_palettes/netherite_darker" + "netherite_darker": "trims/color_palettes/netherite_darker", + "resin": "trims/color_palettes/resin" } } ] diff --git a/assets/minecraft/blockstates/chiseled_resin_bricks.json b/assets/minecraft/blockstates/chiseled_resin_bricks.json new file mode 100644 index 00000000..fd9c6454 --- /dev/null +++ b/assets/minecraft/blockstates/chiseled_resin_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/chiseled_resin_bricks" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/closed_eyeblossom.json b/assets/minecraft/blockstates/closed_eyeblossom.json new file mode 100644 index 00000000..7a39dcf3 --- /dev/null +++ b/assets/minecraft/blockstates/closed_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/closed_eyeblossom" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/creaking_heart.json b/assets/minecraft/blockstates/creaking_heart.json index 5eb05dda..6a3831ca 100644 --- a/assets/minecraft/blockstates/creaking_heart.json +++ b/assets/minecraft/blockstates/creaking_heart.json @@ -1,38 +1,26 @@ { "variants": { - "axis=x,creaking=active": { - "model": "minecraft:block/creaking_heart_active_horizontal", - "x": 90, - "y": 90 - }, - "axis=x,creaking=disabled": { + "active=false,axis=x": { "model": "minecraft:block/creaking_heart_horizontal", "x": 90, "y": 90 }, - "axis=x,creaking=dormant": { - "model": "minecraft:block/creaking_heart_active_horizontal", - "x": 90, - "y": 90 - }, - "axis=y,creaking=active": { - "model": "minecraft:block/creaking_heart_active" - }, - "axis=y,creaking=disabled": { + "active=false,axis=y": { "model": "minecraft:block/creaking_heart" }, - "axis=y,creaking=dormant": { - "model": "minecraft:block/creaking_heart_active" - }, - "axis=z,creaking=active": { - "model": "minecraft:block/creaking_heart_active_horizontal", - "x": 90 - }, - "axis=z,creaking=disabled": { + "active=false,axis=z": { "model": "minecraft:block/creaking_heart_horizontal", "x": 90 }, - "axis=z,creaking=dormant": { + "active=true,axis=x": { + "model": "minecraft:block/creaking_heart_active_horizontal", + "x": 90, + "y": 90 + }, + "active=true,axis=y": { + "model": "minecraft:block/creaking_heart_active" + }, + "active=true,axis=z": { "model": "minecraft:block/creaking_heart_active_horizontal", "x": 90 } diff --git a/assets/minecraft/blockstates/end_gateway.json b/assets/minecraft/blockstates/end_gateway.json index 2b5f683e..cc89ed7c 100644 --- a/assets/minecraft/blockstates/end_gateway.json +++ b/assets/minecraft/blockstates/end_gateway.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "minecraft:block/end_portal" + "model": "minecraft:block/end_gateway" } } } \ No newline at end of file diff --git a/assets/minecraft/blockstates/open_eyeblossom.json b/assets/minecraft/blockstates/open_eyeblossom.json new file mode 100644 index 00000000..17dc8f75 --- /dev/null +++ b/assets/minecraft/blockstates/open_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/open_eyeblossom" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/potted_closed_eyeblossom.json b/assets/minecraft/blockstates/potted_closed_eyeblossom.json new file mode 100644 index 00000000..6f55d460 --- /dev/null +++ b/assets/minecraft/blockstates/potted_closed_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/potted_closed_eyeblossom" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/potted_open_eyeblossom.json b/assets/minecraft/blockstates/potted_open_eyeblossom.json new file mode 100644 index 00000000..e5b6b9b7 --- /dev/null +++ b/assets/minecraft/blockstates/potted_open_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/potted_open_eyeblossom" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/resin_block.json b/assets/minecraft/blockstates/resin_block.json new file mode 100644 index 00000000..58a8cbab --- /dev/null +++ b/assets/minecraft/blockstates/resin_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/resin_block" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/resin_brick_slab.json b/assets/minecraft/blockstates/resin_brick_slab.json new file mode 100644 index 00000000..432eaa28 --- /dev/null +++ b/assets/minecraft/blockstates/resin_brick_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "minecraft:block/resin_brick_slab" + }, + "type=double": { + "model": "minecraft:block/resin_bricks" + }, + "type=top": { + "model": "minecraft:block/resin_brick_slab_top" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/resin_brick_stairs.json b/assets/minecraft/blockstates/resin_brick_stairs.json new file mode 100644 index 00000000..638f42ee --- /dev/null +++ b/assets/minecraft/blockstates/resin_brick_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "minecraft:block/resin_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "minecraft:block/resin_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "minecraft:block/resin_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "minecraft:block/resin_brick_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/resin_brick_wall.json b/assets/minecraft/blockstates/resin_brick_wall.json new file mode 100644 index 00000000..6c057686 --- /dev/null +++ b/assets/minecraft/blockstates/resin_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": { + "model": "minecraft:block/resin_brick_wall_post" + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side_tall", + "uvlock": true + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "minecraft:block/resin_brick_wall_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + } + ] +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/resin_bricks.json b/assets/minecraft/blockstates/resin_bricks.json new file mode 100644 index 00000000..b09851a8 --- /dev/null +++ b/assets/minecraft/blockstates/resin_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/resin_bricks" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/resin_clump.json b/assets/minecraft/blockstates/resin_clump.json new file mode 100644 index 00000000..5e9fe569 --- /dev/null +++ b/assets/minecraft/blockstates/resin_clump.json @@ -0,0 +1,150 @@ +{ + "multipart": [ + { + "apply": { + "model": "minecraft:block/resin_clump" + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump" + }, + "when": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "y": 90 + }, + "when": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "y": 180 + }, + "when": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "y": 270 + }, + "when": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "x": 270 + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "x": 270 + }, + "when": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "x": 90 + }, + "when": { + "down": "true" + } + }, + { + "apply": { + "model": "minecraft:block/resin_clump", + "uvlock": true, + "x": 90 + }, + "when": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + } + ] +} \ No newline at end of file diff --git a/assets/minecraft/blockstates/trapped_chest.json b/assets/minecraft/blockstates/trapped_chest.json index f78fa579..fd8d40b1 100644 --- a/assets/minecraft/blockstates/trapped_chest.json +++ b/assets/minecraft/blockstates/trapped_chest.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "minecraft:block/chest" + "model": "minecraft:block/trapped_chest" } } } \ No newline at end of file diff --git a/assets/minecraft/models/equipment/armadillo_scute.json b/assets/minecraft/equipment/armadillo_scute.json similarity index 100% rename from assets/minecraft/models/equipment/armadillo_scute.json rename to assets/minecraft/equipment/armadillo_scute.json diff --git a/assets/minecraft/models/equipment/black_carpet.json b/assets/minecraft/equipment/black_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/black_carpet.json rename to assets/minecraft/equipment/black_carpet.json diff --git a/assets/minecraft/models/equipment/blue_carpet.json b/assets/minecraft/equipment/blue_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/blue_carpet.json rename to assets/minecraft/equipment/blue_carpet.json diff --git a/assets/minecraft/models/equipment/brown_carpet.json b/assets/minecraft/equipment/brown_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/brown_carpet.json rename to assets/minecraft/equipment/brown_carpet.json diff --git a/assets/minecraft/models/equipment/chainmail.json b/assets/minecraft/equipment/chainmail.json similarity index 100% rename from assets/minecraft/models/equipment/chainmail.json rename to assets/minecraft/equipment/chainmail.json diff --git a/assets/minecraft/models/equipment/cyan_carpet.json b/assets/minecraft/equipment/cyan_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/cyan_carpet.json rename to assets/minecraft/equipment/cyan_carpet.json diff --git a/assets/minecraft/models/equipment/diamond.json b/assets/minecraft/equipment/diamond.json similarity index 100% rename from assets/minecraft/models/equipment/diamond.json rename to assets/minecraft/equipment/diamond.json diff --git a/assets/minecraft/models/equipment/elytra.json b/assets/minecraft/equipment/elytra.json similarity index 100% rename from assets/minecraft/models/equipment/elytra.json rename to assets/minecraft/equipment/elytra.json diff --git a/assets/minecraft/models/equipment/gold.json b/assets/minecraft/equipment/gold.json similarity index 100% rename from assets/minecraft/models/equipment/gold.json rename to assets/minecraft/equipment/gold.json diff --git a/assets/minecraft/models/equipment/gray_carpet.json b/assets/minecraft/equipment/gray_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/gray_carpet.json rename to assets/minecraft/equipment/gray_carpet.json diff --git a/assets/minecraft/models/equipment/green_carpet.json b/assets/minecraft/equipment/green_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/green_carpet.json rename to assets/minecraft/equipment/green_carpet.json diff --git a/assets/minecraft/models/equipment/iron.json b/assets/minecraft/equipment/iron.json similarity index 100% rename from assets/minecraft/models/equipment/iron.json rename to assets/minecraft/equipment/iron.json diff --git a/assets/minecraft/models/equipment/leather.json b/assets/minecraft/equipment/leather.json similarity index 100% rename from assets/minecraft/models/equipment/leather.json rename to assets/minecraft/equipment/leather.json diff --git a/assets/minecraft/models/equipment/light_blue_carpet.json b/assets/minecraft/equipment/light_blue_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/light_blue_carpet.json rename to assets/minecraft/equipment/light_blue_carpet.json diff --git a/assets/minecraft/models/equipment/light_gray_carpet.json b/assets/minecraft/equipment/light_gray_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/light_gray_carpet.json rename to assets/minecraft/equipment/light_gray_carpet.json diff --git a/assets/minecraft/models/equipment/lime_carpet.json b/assets/minecraft/equipment/lime_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/lime_carpet.json rename to assets/minecraft/equipment/lime_carpet.json diff --git a/assets/minecraft/models/equipment/magenta_carpet.json b/assets/minecraft/equipment/magenta_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/magenta_carpet.json rename to assets/minecraft/equipment/magenta_carpet.json diff --git a/assets/minecraft/models/equipment/netherite.json b/assets/minecraft/equipment/netherite.json similarity index 100% rename from assets/minecraft/models/equipment/netherite.json rename to assets/minecraft/equipment/netherite.json diff --git a/assets/minecraft/models/equipment/orange_carpet.json b/assets/minecraft/equipment/orange_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/orange_carpet.json rename to assets/minecraft/equipment/orange_carpet.json diff --git a/assets/minecraft/models/equipment/pink_carpet.json b/assets/minecraft/equipment/pink_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/pink_carpet.json rename to assets/minecraft/equipment/pink_carpet.json diff --git a/assets/minecraft/models/equipment/purple_carpet.json b/assets/minecraft/equipment/purple_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/purple_carpet.json rename to assets/minecraft/equipment/purple_carpet.json diff --git a/assets/minecraft/models/equipment/red_carpet.json b/assets/minecraft/equipment/red_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/red_carpet.json rename to assets/minecraft/equipment/red_carpet.json diff --git a/assets/minecraft/models/equipment/trader_llama.json b/assets/minecraft/equipment/trader_llama.json similarity index 100% rename from assets/minecraft/models/equipment/trader_llama.json rename to assets/minecraft/equipment/trader_llama.json diff --git a/assets/minecraft/models/equipment/turtle_scute.json b/assets/minecraft/equipment/turtle_scute.json similarity index 100% rename from assets/minecraft/models/equipment/turtle_scute.json rename to assets/minecraft/equipment/turtle_scute.json diff --git a/assets/minecraft/models/equipment/white_carpet.json b/assets/minecraft/equipment/white_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/white_carpet.json rename to assets/minecraft/equipment/white_carpet.json diff --git a/assets/minecraft/models/equipment/yellow_carpet.json b/assets/minecraft/equipment/yellow_carpet.json similarity index 100% rename from assets/minecraft/models/equipment/yellow_carpet.json rename to assets/minecraft/equipment/yellow_carpet.json diff --git a/assets/minecraft/items/acacia_boat.json b/assets/minecraft/items/acacia_boat.json new file mode 100644 index 00000000..40c386d3 --- /dev/null +++ b/assets/minecraft/items/acacia_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_button.json b/assets/minecraft/items/acacia_button.json new file mode 100644 index 00000000..a3dcd423 --- /dev/null +++ b/assets/minecraft/items/acacia_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_chest_boat.json b/assets/minecraft/items/acacia_chest_boat.json new file mode 100644 index 00000000..671be37c --- /dev/null +++ b/assets/minecraft/items/acacia_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_door.json b/assets/minecraft/items/acacia_door.json new file mode 100644 index 00000000..43b8d7c6 --- /dev/null +++ b/assets/minecraft/items/acacia_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_fence.json b/assets/minecraft/items/acacia_fence.json new file mode 100644 index 00000000..c9d21e60 --- /dev/null +++ b/assets/minecraft/items/acacia_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_fence_gate.json b/assets/minecraft/items/acacia_fence_gate.json new file mode 100644 index 00000000..59094a4a --- /dev/null +++ b/assets/minecraft/items/acacia_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_hanging_sign.json b/assets/minecraft/items/acacia_hanging_sign.json new file mode 100644 index 00000000..1c4ec4e6 --- /dev/null +++ b/assets/minecraft/items/acacia_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_leaves.json b/assets/minecraft/items/acacia_leaves.json new file mode 100644 index 00000000..bbbab39c --- /dev/null +++ b/assets/minecraft/items/acacia_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -12012264 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_log.json b/assets/minecraft/items/acacia_log.json new file mode 100644 index 00000000..d377ce70 --- /dev/null +++ b/assets/minecraft/items/acacia_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_planks.json b/assets/minecraft/items/acacia_planks.json new file mode 100644 index 00000000..017452be --- /dev/null +++ b/assets/minecraft/items/acacia_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_pressure_plate.json b/assets/minecraft/items/acacia_pressure_plate.json new file mode 100644 index 00000000..bf4e9fdc --- /dev/null +++ b/assets/minecraft/items/acacia_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_sapling.json b/assets/minecraft/items/acacia_sapling.json new file mode 100644 index 00000000..ec95e0f5 --- /dev/null +++ b/assets/minecraft/items/acacia_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_sign.json b/assets/minecraft/items/acacia_sign.json new file mode 100644 index 00000000..6b572ed3 --- /dev/null +++ b/assets/minecraft/items/acacia_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_slab.json b/assets/minecraft/items/acacia_slab.json new file mode 100644 index 00000000..05c1a0ba --- /dev/null +++ b/assets/minecraft/items/acacia_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_stairs.json b/assets/minecraft/items/acacia_stairs.json new file mode 100644 index 00000000..69e95274 --- /dev/null +++ b/assets/minecraft/items/acacia_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_trapdoor.json b/assets/minecraft/items/acacia_trapdoor.json new file mode 100644 index 00000000..29314826 --- /dev/null +++ b/assets/minecraft/items/acacia_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/acacia_wood.json b/assets/minecraft/items/acacia_wood.json new file mode 100644 index 00000000..8368b4ce --- /dev/null +++ b/assets/minecraft/items/acacia_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/acacia_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/activator_rail.json b/assets/minecraft/items/activator_rail.json new file mode 100644 index 00000000..855d961a --- /dev/null +++ b/assets/minecraft/items/activator_rail.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/activator_rail" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/air.json b/assets/minecraft/items/air.json new file mode 100644 index 00000000..f0727913 --- /dev/null +++ b/assets/minecraft/items/air.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/air" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/allay_spawn_egg.json b/assets/minecraft/items/allay_spawn_egg.json new file mode 100644 index 00000000..ce06c0df --- /dev/null +++ b/assets/minecraft/items/allay_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -16721153 + }, + { + "type": "minecraft:constant", + "value": -16732673 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/allium.json b/assets/minecraft/items/allium.json new file mode 100644 index 00000000..3ba9a1a7 --- /dev/null +++ b/assets/minecraft/items/allium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/allium" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/amethyst_block.json b/assets/minecraft/items/amethyst_block.json new file mode 100644 index 00000000..5a655def --- /dev/null +++ b/assets/minecraft/items/amethyst_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/amethyst_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/amethyst_cluster.json b/assets/minecraft/items/amethyst_cluster.json new file mode 100644 index 00000000..c8bb8bea --- /dev/null +++ b/assets/minecraft/items/amethyst_cluster.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/amethyst_cluster" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/amethyst_shard.json b/assets/minecraft/items/amethyst_shard.json new file mode 100644 index 00000000..47232b2b --- /dev/null +++ b/assets/minecraft/items/amethyst_shard.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/amethyst_shard" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ancient_debris.json b/assets/minecraft/items/ancient_debris.json new file mode 100644 index 00000000..f3e19650 --- /dev/null +++ b/assets/minecraft/items/ancient_debris.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/ancient_debris" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/andesite.json b/assets/minecraft/items/andesite.json new file mode 100644 index 00000000..3f68917a --- /dev/null +++ b/assets/minecraft/items/andesite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/andesite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/andesite_slab.json b/assets/minecraft/items/andesite_slab.json new file mode 100644 index 00000000..66a9a022 --- /dev/null +++ b/assets/minecraft/items/andesite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/andesite_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/andesite_stairs.json b/assets/minecraft/items/andesite_stairs.json new file mode 100644 index 00000000..fb742015 --- /dev/null +++ b/assets/minecraft/items/andesite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/andesite_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/andesite_wall.json b/assets/minecraft/items/andesite_wall.json new file mode 100644 index 00000000..c9536464 --- /dev/null +++ b/assets/minecraft/items/andesite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/andesite_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/angler_pottery_sherd.json b/assets/minecraft/items/angler_pottery_sherd.json new file mode 100644 index 00000000..61083360 --- /dev/null +++ b/assets/minecraft/items/angler_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/angler_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/anvil.json b/assets/minecraft/items/anvil.json new file mode 100644 index 00000000..8dcd36b0 --- /dev/null +++ b/assets/minecraft/items/anvil.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/anvil" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/apple.json b/assets/minecraft/items/apple.json new file mode 100644 index 00000000..775daabb --- /dev/null +++ b/assets/minecraft/items/apple.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/apple" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/archer_pottery_sherd.json b/assets/minecraft/items/archer_pottery_sherd.json new file mode 100644 index 00000000..575adb29 --- /dev/null +++ b/assets/minecraft/items/archer_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/archer_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/armadillo_scute.json b/assets/minecraft/items/armadillo_scute.json new file mode 100644 index 00000000..90f7a530 --- /dev/null +++ b/assets/minecraft/items/armadillo_scute.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/armadillo_scute" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/armadillo_spawn_egg.json b/assets/minecraft/items/armadillo_spawn_egg.json new file mode 100644 index 00000000..202c8f54 --- /dev/null +++ b/assets/minecraft/items/armadillo_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -5410451 + }, + { + "type": "minecraft:constant", + "value": -8239032 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/armor_stand.json b/assets/minecraft/items/armor_stand.json new file mode 100644 index 00000000..43398b3e --- /dev/null +++ b/assets/minecraft/items/armor_stand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/armor_stand" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/arms_up_pottery_sherd.json b/assets/minecraft/items/arms_up_pottery_sherd.json new file mode 100644 index 00000000..45ae4d92 --- /dev/null +++ b/assets/minecraft/items/arms_up_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/arms_up_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/arrow.json b/assets/minecraft/items/arrow.json new file mode 100644 index 00000000..5915e01e --- /dev/null +++ b/assets/minecraft/items/arrow.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/arrow" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/axolotl_bucket.json b/assets/minecraft/items/axolotl_bucket.json new file mode 100644 index 00000000..1fe9963c --- /dev/null +++ b/assets/minecraft/items/axolotl_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/axolotl_spawn_egg.json b/assets/minecraft/items/axolotl_spawn_egg.json new file mode 100644 index 00000000..4153e5bc --- /dev/null +++ b/assets/minecraft/items/axolotl_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -278045 + }, + { + "type": "minecraft:constant", + "value": -5886604 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/azalea.json b/assets/minecraft/items/azalea.json new file mode 100644 index 00000000..5c538e74 --- /dev/null +++ b/assets/minecraft/items/azalea.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/azalea" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/azalea_leaves.json b/assets/minecraft/items/azalea_leaves.json new file mode 100644 index 00000000..107c301f --- /dev/null +++ b/assets/minecraft/items/azalea_leaves.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/azalea_leaves" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/azure_bluet.json b/assets/minecraft/items/azure_bluet.json new file mode 100644 index 00000000..11b192af --- /dev/null +++ b/assets/minecraft/items/azure_bluet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/azure_bluet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/baked_potato.json b/assets/minecraft/items/baked_potato.json new file mode 100644 index 00000000..3553c526 --- /dev/null +++ b/assets/minecraft/items/baked_potato.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/baked_potato" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo.json b/assets/minecraft/items/bamboo.json new file mode 100644 index 00000000..30d6b559 --- /dev/null +++ b/assets/minecraft/items/bamboo.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_block.json b/assets/minecraft/items/bamboo_block.json new file mode 100644 index 00000000..8dc88463 --- /dev/null +++ b/assets/minecraft/items/bamboo_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_button.json b/assets/minecraft/items/bamboo_button.json new file mode 100644 index 00000000..57d5c812 --- /dev/null +++ b/assets/minecraft/items/bamboo_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_chest_raft.json b/assets/minecraft/items/bamboo_chest_raft.json new file mode 100644 index 00000000..a7b219b2 --- /dev/null +++ b/assets/minecraft/items/bamboo_chest_raft.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_chest_raft" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_door.json b/assets/minecraft/items/bamboo_door.json new file mode 100644 index 00000000..8728a4db --- /dev/null +++ b/assets/minecraft/items/bamboo_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_fence.json b/assets/minecraft/items/bamboo_fence.json new file mode 100644 index 00000000..9e8424db --- /dev/null +++ b/assets/minecraft/items/bamboo_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_fence_gate.json b/assets/minecraft/items/bamboo_fence_gate.json new file mode 100644 index 00000000..8db16932 --- /dev/null +++ b/assets/minecraft/items/bamboo_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_hanging_sign.json b/assets/minecraft/items/bamboo_hanging_sign.json new file mode 100644 index 00000000..7e6b5d51 --- /dev/null +++ b/assets/minecraft/items/bamboo_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_mosaic.json b/assets/minecraft/items/bamboo_mosaic.json new file mode 100644 index 00000000..49b0ddae --- /dev/null +++ b/assets/minecraft/items/bamboo_mosaic.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_mosaic" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_mosaic_slab.json b/assets/minecraft/items/bamboo_mosaic_slab.json new file mode 100644 index 00000000..d475b36a --- /dev/null +++ b/assets/minecraft/items/bamboo_mosaic_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_mosaic_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_mosaic_stairs.json b/assets/minecraft/items/bamboo_mosaic_stairs.json new file mode 100644 index 00000000..e59cde5c --- /dev/null +++ b/assets/minecraft/items/bamboo_mosaic_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_mosaic_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_planks.json b/assets/minecraft/items/bamboo_planks.json new file mode 100644 index 00000000..a73c8d15 --- /dev/null +++ b/assets/minecraft/items/bamboo_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_pressure_plate.json b/assets/minecraft/items/bamboo_pressure_plate.json new file mode 100644 index 00000000..490046fd --- /dev/null +++ b/assets/minecraft/items/bamboo_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_raft.json b/assets/minecraft/items/bamboo_raft.json new file mode 100644 index 00000000..9e224bca --- /dev/null +++ b/assets/minecraft/items/bamboo_raft.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_raft" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_sign.json b/assets/minecraft/items/bamboo_sign.json new file mode 100644 index 00000000..c916c6a7 --- /dev/null +++ b/assets/minecraft/items/bamboo_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_slab.json b/assets/minecraft/items/bamboo_slab.json new file mode 100644 index 00000000..496f820b --- /dev/null +++ b/assets/minecraft/items/bamboo_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_stairs.json b/assets/minecraft/items/bamboo_stairs.json new file mode 100644 index 00000000..65326e0e --- /dev/null +++ b/assets/minecraft/items/bamboo_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bamboo_trapdoor.json b/assets/minecraft/items/bamboo_trapdoor.json new file mode 100644 index 00000000..0855c71f --- /dev/null +++ b/assets/minecraft/items/bamboo_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bamboo_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/barrel.json b/assets/minecraft/items/barrel.json new file mode 100644 index 00000000..8f362a2f --- /dev/null +++ b/assets/minecraft/items/barrel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/barrel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/barrier.json b/assets/minecraft/items/barrier.json new file mode 100644 index 00000000..75cc3b33 --- /dev/null +++ b/assets/minecraft/items/barrier.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/barrier" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/basalt.json b/assets/minecraft/items/basalt.json new file mode 100644 index 00000000..33a70621 --- /dev/null +++ b/assets/minecraft/items/basalt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bat_spawn_egg.json b/assets/minecraft/items/bat_spawn_egg.json new file mode 100644 index 00000000..c7f1a566 --- /dev/null +++ b/assets/minecraft/items/bat_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -11780560 + }, + { + "type": "minecraft:constant", + "value": -15790321 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/beacon.json b/assets/minecraft/items/beacon.json new file mode 100644 index 00000000..814878e5 --- /dev/null +++ b/assets/minecraft/items/beacon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/beacon" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bedrock.json b/assets/minecraft/items/bedrock.json new file mode 100644 index 00000000..89f068fe --- /dev/null +++ b/assets/minecraft/items/bedrock.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bedrock" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bee_nest.json b/assets/minecraft/items/bee_nest.json new file mode 100644 index 00000000..cb918fe0 --- /dev/null +++ b/assets/minecraft/items/bee_nest.json @@ -0,0 +1,20 @@ +{ + "model": { + "type": "minecraft:select", + "block_state_property": "honey_level", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bee_nest_honey" + }, + "when": "5" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:block/bee_nest_empty" + }, + "property": "minecraft:block_state" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bee_spawn_egg.json b/assets/minecraft/items/bee_spawn_egg.json new file mode 100644 index 00000000..0cf00f92 --- /dev/null +++ b/assets/minecraft/items/bee_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1195197 + }, + { + "type": "minecraft:constant", + "value": -12377061 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/beef.json b/assets/minecraft/items/beef.json new file mode 100644 index 00000000..d1bf5b04 --- /dev/null +++ b/assets/minecraft/items/beef.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/beef" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/beehive.json b/assets/minecraft/items/beehive.json new file mode 100644 index 00000000..279dc4b8 --- /dev/null +++ b/assets/minecraft/items/beehive.json @@ -0,0 +1,20 @@ +{ + "model": { + "type": "minecraft:select", + "block_state_property": "honey_level", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:block/beehive_honey" + }, + "when": "5" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:block/beehive_empty" + }, + "property": "minecraft:block_state" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/beetroot.json b/assets/minecraft/items/beetroot.json new file mode 100644 index 00000000..fc794994 --- /dev/null +++ b/assets/minecraft/items/beetroot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/beetroot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/beetroot_seeds.json b/assets/minecraft/items/beetroot_seeds.json new file mode 100644 index 00000000..e2742c16 --- /dev/null +++ b/assets/minecraft/items/beetroot_seeds.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/beetroot_seeds" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/beetroot_soup.json b/assets/minecraft/items/beetroot_soup.json new file mode 100644 index 00000000..ebbea11d --- /dev/null +++ b/assets/minecraft/items/beetroot_soup.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/beetroot_soup" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bell.json b/assets/minecraft/items/bell.json new file mode 100644 index 00000000..15fece84 --- /dev/null +++ b/assets/minecraft/items/bell.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bell" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/big_dripleaf.json b/assets/minecraft/items/big_dripleaf.json new file mode 100644 index 00000000..aa47d619 --- /dev/null +++ b/assets/minecraft/items/big_dripleaf.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/big_dripleaf" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_boat.json b/assets/minecraft/items/birch_boat.json new file mode 100644 index 00000000..261a254d --- /dev/null +++ b/assets/minecraft/items/birch_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_button.json b/assets/minecraft/items/birch_button.json new file mode 100644 index 00000000..3eaece39 --- /dev/null +++ b/assets/minecraft/items/birch_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_chest_boat.json b/assets/minecraft/items/birch_chest_boat.json new file mode 100644 index 00000000..37eaf2fe --- /dev/null +++ b/assets/minecraft/items/birch_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_door.json b/assets/minecraft/items/birch_door.json new file mode 100644 index 00000000..bfc2721b --- /dev/null +++ b/assets/minecraft/items/birch_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_fence.json b/assets/minecraft/items/birch_fence.json new file mode 100644 index 00000000..8963c9d2 --- /dev/null +++ b/assets/minecraft/items/birch_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_fence_gate.json b/assets/minecraft/items/birch_fence_gate.json new file mode 100644 index 00000000..923244ff --- /dev/null +++ b/assets/minecraft/items/birch_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_hanging_sign.json b/assets/minecraft/items/birch_hanging_sign.json new file mode 100644 index 00000000..fd062e23 --- /dev/null +++ b/assets/minecraft/items/birch_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_leaves.json b/assets/minecraft/items/birch_leaves.json new file mode 100644 index 00000000..f06b0a4a --- /dev/null +++ b/assets/minecraft/items/birch_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -8345771 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_log.json b/assets/minecraft/items/birch_log.json new file mode 100644 index 00000000..f4bf6883 --- /dev/null +++ b/assets/minecraft/items/birch_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_planks.json b/assets/minecraft/items/birch_planks.json new file mode 100644 index 00000000..7dab521e --- /dev/null +++ b/assets/minecraft/items/birch_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_pressure_plate.json b/assets/minecraft/items/birch_pressure_plate.json new file mode 100644 index 00000000..708ec1bc --- /dev/null +++ b/assets/minecraft/items/birch_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_sapling.json b/assets/minecraft/items/birch_sapling.json new file mode 100644 index 00000000..b4cfced3 --- /dev/null +++ b/assets/minecraft/items/birch_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_sign.json b/assets/minecraft/items/birch_sign.json new file mode 100644 index 00000000..a160ed64 --- /dev/null +++ b/assets/minecraft/items/birch_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_slab.json b/assets/minecraft/items/birch_slab.json new file mode 100644 index 00000000..b4cb850a --- /dev/null +++ b/assets/minecraft/items/birch_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_stairs.json b/assets/minecraft/items/birch_stairs.json new file mode 100644 index 00000000..c5e8e442 --- /dev/null +++ b/assets/minecraft/items/birch_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_trapdoor.json b/assets/minecraft/items/birch_trapdoor.json new file mode 100644 index 00000000..db2d3a91 --- /dev/null +++ b/assets/minecraft/items/birch_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/birch_wood.json b/assets/minecraft/items/birch_wood.json new file mode 100644 index 00000000..f1f5d1ea --- /dev/null +++ b/assets/minecraft/items/birch_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/birch_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_banner.json b/assets/minecraft/items/black_banner.json new file mode 100644 index 00000000..62bbb531 --- /dev/null +++ b/assets/minecraft/items/black_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "black" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_bed.json b/assets/minecraft/items/black_bed.json new file mode 100644 index 00000000..04d7e356 --- /dev/null +++ b/assets/minecraft/items/black_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/black_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:black" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_bundle.json b/assets/minecraft/items/black_bundle.json new file mode 100644 index 00000000..066707b5 --- /dev/null +++ b/assets/minecraft/items/black_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/black_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/black_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/black_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/black_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_candle.json b/assets/minecraft/items/black_candle.json new file mode 100644 index 00000000..9c28b444 --- /dev/null +++ b/assets/minecraft/items/black_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/black_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_carpet.json b/assets/minecraft/items/black_carpet.json new file mode 100644 index 00000000..c80c9be5 --- /dev/null +++ b/assets/minecraft/items/black_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_concrete.json b/assets/minecraft/items/black_concrete.json new file mode 100644 index 00000000..88adfa33 --- /dev/null +++ b/assets/minecraft/items/black_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_concrete_powder.json b/assets/minecraft/items/black_concrete_powder.json new file mode 100644 index 00000000..0af5716a --- /dev/null +++ b/assets/minecraft/items/black_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_dye.json b/assets/minecraft/items/black_dye.json new file mode 100644 index 00000000..a5851c21 --- /dev/null +++ b/assets/minecraft/items/black_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/black_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_glazed_terracotta.json b/assets/minecraft/items/black_glazed_terracotta.json new file mode 100644 index 00000000..02d6d5e5 --- /dev/null +++ b/assets/minecraft/items/black_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_shulker_box.json b/assets/minecraft/items/black_shulker_box.json new file mode 100644 index 00000000..46fa3e1f --- /dev/null +++ b/assets/minecraft/items/black_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/black_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_black" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_stained_glass.json b/assets/minecraft/items/black_stained_glass.json new file mode 100644 index 00000000..a87c5fea --- /dev/null +++ b/assets/minecraft/items/black_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_stained_glass_pane.json b/assets/minecraft/items/black_stained_glass_pane.json new file mode 100644 index 00000000..f37e6800 --- /dev/null +++ b/assets/minecraft/items/black_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/black_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_terracotta.json b/assets/minecraft/items/black_terracotta.json new file mode 100644 index 00000000..0b8b26b7 --- /dev/null +++ b/assets/minecraft/items/black_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/black_wool.json b/assets/minecraft/items/black_wool.json new file mode 100644 index 00000000..178340d4 --- /dev/null +++ b/assets/minecraft/items/black_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/black_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blackstone.json b/assets/minecraft/items/blackstone.json new file mode 100644 index 00000000..142bcb05 --- /dev/null +++ b/assets/minecraft/items/blackstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blackstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blackstone_slab.json b/assets/minecraft/items/blackstone_slab.json new file mode 100644 index 00000000..130a8905 --- /dev/null +++ b/assets/minecraft/items/blackstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blackstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blackstone_stairs.json b/assets/minecraft/items/blackstone_stairs.json new file mode 100644 index 00000000..85d2c1aa --- /dev/null +++ b/assets/minecraft/items/blackstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blackstone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blackstone_wall.json b/assets/minecraft/items/blackstone_wall.json new file mode 100644 index 00000000..9d569e06 --- /dev/null +++ b/assets/minecraft/items/blackstone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blackstone_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blade_pottery_sherd.json b/assets/minecraft/items/blade_pottery_sherd.json new file mode 100644 index 00000000..4d193384 --- /dev/null +++ b/assets/minecraft/items/blade_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blade_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blast_furnace.json b/assets/minecraft/items/blast_furnace.json new file mode 100644 index 00000000..b2860635 --- /dev/null +++ b/assets/minecraft/items/blast_furnace.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blast_furnace" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blaze_powder.json b/assets/minecraft/items/blaze_powder.json new file mode 100644 index 00000000..812d76c0 --- /dev/null +++ b/assets/minecraft/items/blaze_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blaze_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blaze_rod.json b/assets/minecraft/items/blaze_rod.json new file mode 100644 index 00000000..b2db009a --- /dev/null +++ b/assets/minecraft/items/blaze_rod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blaze_rod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blaze_spawn_egg.json b/assets/minecraft/items/blaze_spawn_egg.json new file mode 100644 index 00000000..ba1d31f6 --- /dev/null +++ b/assets/minecraft/items/blaze_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -609791 + }, + { + "type": "minecraft:constant", + "value": -1922 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_banner.json b/assets/minecraft/items/blue_banner.json new file mode 100644 index 00000000..d985ba59 --- /dev/null +++ b/assets/minecraft/items/blue_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "blue" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_bed.json b/assets/minecraft/items/blue_bed.json new file mode 100644 index 00000000..73a9afb5 --- /dev/null +++ b/assets/minecraft/items/blue_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/blue_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:blue" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_bundle.json b/assets/minecraft/items/blue_bundle.json new file mode 100644 index 00000000..57437107 --- /dev/null +++ b/assets/minecraft/items/blue_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/blue_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/blue_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/blue_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/blue_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_candle.json b/assets/minecraft/items/blue_candle.json new file mode 100644 index 00000000..5cfe77a5 --- /dev/null +++ b/assets/minecraft/items/blue_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blue_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_carpet.json b/assets/minecraft/items/blue_carpet.json new file mode 100644 index 00000000..1a620a57 --- /dev/null +++ b/assets/minecraft/items/blue_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_concrete.json b/assets/minecraft/items/blue_concrete.json new file mode 100644 index 00000000..cc0b5b9d --- /dev/null +++ b/assets/minecraft/items/blue_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_concrete_powder.json b/assets/minecraft/items/blue_concrete_powder.json new file mode 100644 index 00000000..3b981e85 --- /dev/null +++ b/assets/minecraft/items/blue_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_dye.json b/assets/minecraft/items/blue_dye.json new file mode 100644 index 00000000..381b71e9 --- /dev/null +++ b/assets/minecraft/items/blue_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blue_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_glazed_terracotta.json b/assets/minecraft/items/blue_glazed_terracotta.json new file mode 100644 index 00000000..5cf3c1c9 --- /dev/null +++ b/assets/minecraft/items/blue_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_ice.json b/assets/minecraft/items/blue_ice.json new file mode 100644 index 00000000..7f2160de --- /dev/null +++ b/assets/minecraft/items/blue_ice.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_ice" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_orchid.json b/assets/minecraft/items/blue_orchid.json new file mode 100644 index 00000000..f76d0963 --- /dev/null +++ b/assets/minecraft/items/blue_orchid.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blue_orchid" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_shulker_box.json b/assets/minecraft/items/blue_shulker_box.json new file mode 100644 index 00000000..299c7725 --- /dev/null +++ b/assets/minecraft/items/blue_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/blue_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_blue" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_stained_glass.json b/assets/minecraft/items/blue_stained_glass.json new file mode 100644 index 00000000..c343d93a --- /dev/null +++ b/assets/minecraft/items/blue_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_stained_glass_pane.json b/assets/minecraft/items/blue_stained_glass_pane.json new file mode 100644 index 00000000..941daad6 --- /dev/null +++ b/assets/minecraft/items/blue_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/blue_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_terracotta.json b/assets/minecraft/items/blue_terracotta.json new file mode 100644 index 00000000..db5cdb28 --- /dev/null +++ b/assets/minecraft/items/blue_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/blue_wool.json b/assets/minecraft/items/blue_wool.json new file mode 100644 index 00000000..171f1db0 --- /dev/null +++ b/assets/minecraft/items/blue_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/blue_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bogged_spawn_egg.json b/assets/minecraft/items/bogged_spawn_egg.json new file mode 100644 index 00000000..944206c4 --- /dev/null +++ b/assets/minecraft/items/bogged_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -7693198 + }, + { + "type": "minecraft:constant", + "value": -13546213 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bolt_armor_trim_smithing_template.json b/assets/minecraft/items/bolt_armor_trim_smithing_template.json new file mode 100644 index 00000000..9745ca12 --- /dev/null +++ b/assets/minecraft/items/bolt_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bolt_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bone.json b/assets/minecraft/items/bone.json new file mode 100644 index 00000000..fea2360c --- /dev/null +++ b/assets/minecraft/items/bone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bone_block.json b/assets/minecraft/items/bone_block.json new file mode 100644 index 00000000..b949a94e --- /dev/null +++ b/assets/minecraft/items/bone_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bone_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bone_meal.json b/assets/minecraft/items/bone_meal.json new file mode 100644 index 00000000..7b1eb064 --- /dev/null +++ b/assets/minecraft/items/bone_meal.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bone_meal" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/book.json b/assets/minecraft/items/book.json new file mode 100644 index 00000000..c3670713 --- /dev/null +++ b/assets/minecraft/items/book.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/book" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bookshelf.json b/assets/minecraft/items/bookshelf.json new file mode 100644 index 00000000..18c77821 --- /dev/null +++ b/assets/minecraft/items/bookshelf.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bookshelf" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bordure_indented_banner_pattern.json b/assets/minecraft/items/bordure_indented_banner_pattern.json new file mode 100644 index 00000000..fb2684f6 --- /dev/null +++ b/assets/minecraft/items/bordure_indented_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bordure_indented_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bow.json b/assets/minecraft/items/bow.json new file mode 100644 index 00000000..fa7071ce --- /dev/null +++ b/assets/minecraft/items/bow.json @@ -0,0 +1,35 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/bow" + }, + "on_true": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bow_pulling_1" + }, + "threshold": 0.65 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bow_pulling_2" + }, + "threshold": 0.9 + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/bow_pulling_0" + }, + "property": "minecraft:use_duration", + "scale": 0.05 + }, + "property": "minecraft:using_item" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bowl.json b/assets/minecraft/items/bowl.json new file mode 100644 index 00000000..99459cf6 --- /dev/null +++ b/assets/minecraft/items/bowl.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bowl" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brain_coral.json b/assets/minecraft/items/brain_coral.json new file mode 100644 index 00000000..fa8e2eb6 --- /dev/null +++ b/assets/minecraft/items/brain_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brain_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brain_coral_block.json b/assets/minecraft/items/brain_coral_block.json new file mode 100644 index 00000000..ab2ce212 --- /dev/null +++ b/assets/minecraft/items/brain_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brain_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brain_coral_fan.json b/assets/minecraft/items/brain_coral_fan.json new file mode 100644 index 00000000..2851549f --- /dev/null +++ b/assets/minecraft/items/brain_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brain_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bread.json b/assets/minecraft/items/bread.json new file mode 100644 index 00000000..a90e33b5 --- /dev/null +++ b/assets/minecraft/items/bread.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bread" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/breeze_rod.json b/assets/minecraft/items/breeze_rod.json new file mode 100644 index 00000000..ef08b38a --- /dev/null +++ b/assets/minecraft/items/breeze_rod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/breeze_rod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/breeze_spawn_egg.json b/assets/minecraft/items/breeze_spawn_egg.json new file mode 100644 index 00000000..a3ea3528 --- /dev/null +++ b/assets/minecraft/items/breeze_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -5270305 + }, + { + "type": "minecraft:constant", + "value": -7248161 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brewer_pottery_sherd.json b/assets/minecraft/items/brewer_pottery_sherd.json new file mode 100644 index 00000000..0bd69ad4 --- /dev/null +++ b/assets/minecraft/items/brewer_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brewer_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brewing_stand.json b/assets/minecraft/items/brewing_stand.json new file mode 100644 index 00000000..823cf558 --- /dev/null +++ b/assets/minecraft/items/brewing_stand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brewing_stand" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brick.json b/assets/minecraft/items/brick.json new file mode 100644 index 00000000..7e6be515 --- /dev/null +++ b/assets/minecraft/items/brick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brick_slab.json b/assets/minecraft/items/brick_slab.json new file mode 100644 index 00000000..6afe9425 --- /dev/null +++ b/assets/minecraft/items/brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brick_stairs.json b/assets/minecraft/items/brick_stairs.json new file mode 100644 index 00000000..782ee48d --- /dev/null +++ b/assets/minecraft/items/brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brick_wall.json b/assets/minecraft/items/brick_wall.json new file mode 100644 index 00000000..7acc8f3e --- /dev/null +++ b/assets/minecraft/items/brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bricks.json b/assets/minecraft/items/bricks.json new file mode 100644 index 00000000..45bb895c --- /dev/null +++ b/assets/minecraft/items/bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_banner.json b/assets/minecraft/items/brown_banner.json new file mode 100644 index 00000000..21b2d0bf --- /dev/null +++ b/assets/minecraft/items/brown_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "brown" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_bed.json b/assets/minecraft/items/brown_bed.json new file mode 100644 index 00000000..42492f51 --- /dev/null +++ b/assets/minecraft/items/brown_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/brown_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:brown" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_bundle.json b/assets/minecraft/items/brown_bundle.json new file mode 100644 index 00000000..deb8d4eb --- /dev/null +++ b/assets/minecraft/items/brown_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/brown_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/brown_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/brown_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/brown_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_candle.json b/assets/minecraft/items/brown_candle.json new file mode 100644 index 00000000..d7d46148 --- /dev/null +++ b/assets/minecraft/items/brown_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brown_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_carpet.json b/assets/minecraft/items/brown_carpet.json new file mode 100644 index 00000000..d32721af --- /dev/null +++ b/assets/minecraft/items/brown_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_concrete.json b/assets/minecraft/items/brown_concrete.json new file mode 100644 index 00000000..9e045cf4 --- /dev/null +++ b/assets/minecraft/items/brown_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_concrete_powder.json b/assets/minecraft/items/brown_concrete_powder.json new file mode 100644 index 00000000..90f37957 --- /dev/null +++ b/assets/minecraft/items/brown_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_dye.json b/assets/minecraft/items/brown_dye.json new file mode 100644 index 00000000..4d6d0618 --- /dev/null +++ b/assets/minecraft/items/brown_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brown_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_glazed_terracotta.json b/assets/minecraft/items/brown_glazed_terracotta.json new file mode 100644 index 00000000..cca7ba04 --- /dev/null +++ b/assets/minecraft/items/brown_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_mushroom.json b/assets/minecraft/items/brown_mushroom.json new file mode 100644 index 00000000..6a960e06 --- /dev/null +++ b/assets/minecraft/items/brown_mushroom.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brown_mushroom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_mushroom_block.json b/assets/minecraft/items/brown_mushroom_block.json new file mode 100644 index 00000000..7c2d92c6 --- /dev/null +++ b/assets/minecraft/items/brown_mushroom_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_mushroom_block_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_shulker_box.json b/assets/minecraft/items/brown_shulker_box.json new file mode 100644 index 00000000..a2be2cc4 --- /dev/null +++ b/assets/minecraft/items/brown_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/brown_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_brown" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_stained_glass.json b/assets/minecraft/items/brown_stained_glass.json new file mode 100644 index 00000000..f59814e6 --- /dev/null +++ b/assets/minecraft/items/brown_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_stained_glass_pane.json b/assets/minecraft/items/brown_stained_glass_pane.json new file mode 100644 index 00000000..43c1d708 --- /dev/null +++ b/assets/minecraft/items/brown_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brown_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_terracotta.json b/assets/minecraft/items/brown_terracotta.json new file mode 100644 index 00000000..fee80a48 --- /dev/null +++ b/assets/minecraft/items/brown_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brown_wool.json b/assets/minecraft/items/brown_wool.json new file mode 100644 index 00000000..5e4b51ac --- /dev/null +++ b/assets/minecraft/items/brown_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/brown_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/brush.json b/assets/minecraft/items/brush.json new file mode 100644 index 00000000..a4abc74a --- /dev/null +++ b/assets/minecraft/items/brush.json @@ -0,0 +1,35 @@ +{ + "model": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brush_brushing_0" + }, + "threshold": 0.25 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brush_brushing_1" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/brush_brushing_2" + }, + "threshold": 0.75 + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/brush" + }, + "period": 10.0, + "property": "minecraft:use_cycle", + "scale": 0.1 + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bubble_coral.json b/assets/minecraft/items/bubble_coral.json new file mode 100644 index 00000000..49349d69 --- /dev/null +++ b/assets/minecraft/items/bubble_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bubble_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bubble_coral_block.json b/assets/minecraft/items/bubble_coral_block.json new file mode 100644 index 00000000..c400e05f --- /dev/null +++ b/assets/minecraft/items/bubble_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/bubble_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bubble_coral_fan.json b/assets/minecraft/items/bubble_coral_fan.json new file mode 100644 index 00000000..893c6efe --- /dev/null +++ b/assets/minecraft/items/bubble_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bubble_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bucket.json b/assets/minecraft/items/bucket.json new file mode 100644 index 00000000..f8209d33 --- /dev/null +++ b/assets/minecraft/items/bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/budding_amethyst.json b/assets/minecraft/items/budding_amethyst.json new file mode 100644 index 00000000..407a4799 --- /dev/null +++ b/assets/minecraft/items/budding_amethyst.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/budding_amethyst" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/bundle.json b/assets/minecraft/items/bundle.json new file mode 100644 index 00000000..dfeec3e9 --- /dev/null +++ b/assets/minecraft/items/bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/burn_pottery_sherd.json b/assets/minecraft/items/burn_pottery_sherd.json new file mode 100644 index 00000000..3c39cfc7 --- /dev/null +++ b/assets/minecraft/items/burn_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/burn_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cactus.json b/assets/minecraft/items/cactus.json new file mode 100644 index 00000000..2b48cc4f --- /dev/null +++ b/assets/minecraft/items/cactus.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cactus" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cake.json b/assets/minecraft/items/cake.json new file mode 100644 index 00000000..9488638c --- /dev/null +++ b/assets/minecraft/items/cake.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cake" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/calcite.json b/assets/minecraft/items/calcite.json new file mode 100644 index 00000000..ac9e7ea2 --- /dev/null +++ b/assets/minecraft/items/calcite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/calcite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/calibrated_sculk_sensor.json b/assets/minecraft/items/calibrated_sculk_sensor.json new file mode 100644 index 00000000..dfe5e99b --- /dev/null +++ b/assets/minecraft/items/calibrated_sculk_sensor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/calibrated_sculk_sensor_inactive" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/camel_spawn_egg.json b/assets/minecraft/items/camel_spawn_egg.json new file mode 100644 index 00000000..20b375c9 --- /dev/null +++ b/assets/minecraft/items/camel_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -212119 + }, + { + "type": "minecraft:constant", + "value": -3435721 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/campfire.json b/assets/minecraft/items/campfire.json new file mode 100644 index 00000000..9732767e --- /dev/null +++ b/assets/minecraft/items/campfire.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/campfire" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/candle.json b/assets/minecraft/items/candle.json new file mode 100644 index 00000000..5fc19d0f --- /dev/null +++ b/assets/minecraft/items/candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/carrot.json b/assets/minecraft/items/carrot.json new file mode 100644 index 00000000..dc451807 --- /dev/null +++ b/assets/minecraft/items/carrot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/carrot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/carrot_on_a_stick.json b/assets/minecraft/items/carrot_on_a_stick.json new file mode 100644 index 00000000..a4105477 --- /dev/null +++ b/assets/minecraft/items/carrot_on_a_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/carrot_on_a_stick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cartography_table.json b/assets/minecraft/items/cartography_table.json new file mode 100644 index 00000000..7b67cc84 --- /dev/null +++ b/assets/minecraft/items/cartography_table.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cartography_table" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/carved_pumpkin.json b/assets/minecraft/items/carved_pumpkin.json new file mode 100644 index 00000000..433ef242 --- /dev/null +++ b/assets/minecraft/items/carved_pumpkin.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/carved_pumpkin" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cat_spawn_egg.json b/assets/minecraft/items/cat_spawn_egg.json new file mode 100644 index 00000000..4a2c5653 --- /dev/null +++ b/assets/minecraft/items/cat_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1062770 + }, + { + "type": "minecraft:constant", + "value": -6983082 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cauldron.json b/assets/minecraft/items/cauldron.json new file mode 100644 index 00000000..2d4a84c9 --- /dev/null +++ b/assets/minecraft/items/cauldron.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cauldron" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cave_spider_spawn_egg.json b/assets/minecraft/items/cave_spider_spawn_egg.json new file mode 100644 index 00000000..3577909b --- /dev/null +++ b/assets/minecraft/items/cave_spider_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15973810 + }, + { + "type": "minecraft:constant", + "value": -5763570 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chain.json b/assets/minecraft/items/chain.json new file mode 100644 index 00000000..a8abebe6 --- /dev/null +++ b/assets/minecraft/items/chain.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chain" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chain_command_block.json b/assets/minecraft/items/chain_command_block.json new file mode 100644 index 00000000..068829ed --- /dev/null +++ b/assets/minecraft/items/chain_command_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chain_command_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chainmail_boots.json b/assets/minecraft/items/chainmail_boots.json new file mode 100644 index 00000000..991ffb60 --- /dev/null +++ b/assets/minecraft/items/chainmail_boots.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_boots" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chainmail_chestplate.json b/assets/minecraft/items/chainmail_chestplate.json new file mode 100644 index 00000000..6f901986 --- /dev/null +++ b/assets/minecraft/items/chainmail_chestplate.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_chestplate" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chainmail_helmet.json b/assets/minecraft/items/chainmail_helmet.json new file mode 100644 index 00000000..7f88b1a3 --- /dev/null +++ b/assets/minecraft/items/chainmail_helmet.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_helmet" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chainmail_leggings.json b/assets/minecraft/items/chainmail_leggings.json new file mode 100644 index 00000000..7baa0849 --- /dev/null +++ b/assets/minecraft/items/chainmail_leggings.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/chainmail_leggings" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/charcoal.json b/assets/minecraft/items/charcoal.json new file mode 100644 index 00000000..7e2650ad --- /dev/null +++ b/assets/minecraft/items/charcoal.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/charcoal" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_boat.json b/assets/minecraft/items/cherry_boat.json new file mode 100644 index 00000000..97018953 --- /dev/null +++ b/assets/minecraft/items/cherry_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_button.json b/assets/minecraft/items/cherry_button.json new file mode 100644 index 00000000..51ac6149 --- /dev/null +++ b/assets/minecraft/items/cherry_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_chest_boat.json b/assets/minecraft/items/cherry_chest_boat.json new file mode 100644 index 00000000..b40831e0 --- /dev/null +++ b/assets/minecraft/items/cherry_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_door.json b/assets/minecraft/items/cherry_door.json new file mode 100644 index 00000000..214c05e6 --- /dev/null +++ b/assets/minecraft/items/cherry_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_fence.json b/assets/minecraft/items/cherry_fence.json new file mode 100644 index 00000000..d96d0654 --- /dev/null +++ b/assets/minecraft/items/cherry_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_fence_gate.json b/assets/minecraft/items/cherry_fence_gate.json new file mode 100644 index 00000000..90201f4a --- /dev/null +++ b/assets/minecraft/items/cherry_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_hanging_sign.json b/assets/minecraft/items/cherry_hanging_sign.json new file mode 100644 index 00000000..5088fec8 --- /dev/null +++ b/assets/minecraft/items/cherry_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_leaves.json b/assets/minecraft/items/cherry_leaves.json new file mode 100644 index 00000000..dac17a9c --- /dev/null +++ b/assets/minecraft/items/cherry_leaves.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_leaves" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_log.json b/assets/minecraft/items/cherry_log.json new file mode 100644 index 00000000..a0a2dfb8 --- /dev/null +++ b/assets/minecraft/items/cherry_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_planks.json b/assets/minecraft/items/cherry_planks.json new file mode 100644 index 00000000..e1b9f364 --- /dev/null +++ b/assets/minecraft/items/cherry_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_pressure_plate.json b/assets/minecraft/items/cherry_pressure_plate.json new file mode 100644 index 00000000..de6054bf --- /dev/null +++ b/assets/minecraft/items/cherry_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_sapling.json b/assets/minecraft/items/cherry_sapling.json new file mode 100644 index 00000000..7943de2b --- /dev/null +++ b/assets/minecraft/items/cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_sign.json b/assets/minecraft/items/cherry_sign.json new file mode 100644 index 00000000..a43d71ad --- /dev/null +++ b/assets/minecraft/items/cherry_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_slab.json b/assets/minecraft/items/cherry_slab.json new file mode 100644 index 00000000..91dcbb80 --- /dev/null +++ b/assets/minecraft/items/cherry_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_stairs.json b/assets/minecraft/items/cherry_stairs.json new file mode 100644 index 00000000..e7f74ae1 --- /dev/null +++ b/assets/minecraft/items/cherry_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_trapdoor.json b/assets/minecraft/items/cherry_trapdoor.json new file mode 100644 index 00000000..4b09f105 --- /dev/null +++ b/assets/minecraft/items/cherry_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cherry_wood.json b/assets/minecraft/items/cherry_wood.json new file mode 100644 index 00000000..f23d6a62 --- /dev/null +++ b/assets/minecraft/items/cherry_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cherry_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chest.json b/assets/minecraft/items/chest.json new file mode 100644 index 00000000..5e4ef78c --- /dev/null +++ b/assets/minecraft/items/chest.json @@ -0,0 +1,32 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:special", + "base": "minecraft:item/chest", + "model": { + "type": "minecraft:chest", + "texture": "minecraft:christmas" + } + }, + "when": [ + "12-24", + "12-25", + "12-26" + ] + } + ], + "fallback": { + "type": "minecraft:special", + "base": "minecraft:item/chest", + "model": { + "type": "minecraft:chest", + "texture": "minecraft:normal" + } + }, + "pattern": "MM-dd", + "property": "minecraft:local_time" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chest_minecart.json b/assets/minecraft/items/chest_minecart.json new file mode 100644 index 00000000..3711836a --- /dev/null +++ b/assets/minecraft/items/chest_minecart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chest_minecart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chicken.json b/assets/minecraft/items/chicken.json new file mode 100644 index 00000000..908f6d53 --- /dev/null +++ b/assets/minecraft/items/chicken.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chicken" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chicken_spawn_egg.json b/assets/minecraft/items/chicken_spawn_egg.json new file mode 100644 index 00000000..2f3596c2 --- /dev/null +++ b/assets/minecraft/items/chicken_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6184543 + }, + { + "type": "minecraft:constant", + "value": -65536 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chipped_anvil.json b/assets/minecraft/items/chipped_anvil.json new file mode 100644 index 00000000..86845568 --- /dev/null +++ b/assets/minecraft/items/chipped_anvil.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chipped_anvil" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_bookshelf.json b/assets/minecraft/items/chiseled_bookshelf.json new file mode 100644 index 00000000..9ba95e03 --- /dev/null +++ b/assets/minecraft/items/chiseled_bookshelf.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_bookshelf_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_copper.json b/assets/minecraft/items/chiseled_copper.json new file mode 100644 index 00000000..99d4996d --- /dev/null +++ b/assets/minecraft/items/chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_deepslate.json b/assets/minecraft/items/chiseled_deepslate.json new file mode 100644 index 00000000..116f921f --- /dev/null +++ b/assets/minecraft/items/chiseled_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_deepslate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_nether_bricks.json b/assets/minecraft/items/chiseled_nether_bricks.json new file mode 100644 index 00000000..95709a06 --- /dev/null +++ b/assets/minecraft/items/chiseled_nether_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_nether_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_polished_blackstone.json b/assets/minecraft/items/chiseled_polished_blackstone.json new file mode 100644 index 00000000..1d9b8c73 --- /dev/null +++ b/assets/minecraft/items/chiseled_polished_blackstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_polished_blackstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_quartz_block.json b/assets/minecraft/items/chiseled_quartz_block.json new file mode 100644 index 00000000..508004a5 --- /dev/null +++ b/assets/minecraft/items/chiseled_quartz_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_quartz_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_red_sandstone.json b/assets/minecraft/items/chiseled_red_sandstone.json new file mode 100644 index 00000000..cb5409ac --- /dev/null +++ b/assets/minecraft/items/chiseled_red_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_red_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_resin_bricks.json b/assets/minecraft/items/chiseled_resin_bricks.json new file mode 100644 index 00000000..26416f11 --- /dev/null +++ b/assets/minecraft/items/chiseled_resin_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_sandstone.json b/assets/minecraft/items/chiseled_sandstone.json new file mode 100644 index 00000000..c893eed6 --- /dev/null +++ b/assets/minecraft/items/chiseled_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_stone_bricks.json b/assets/minecraft/items/chiseled_stone_bricks.json new file mode 100644 index 00000000..0001e670 --- /dev/null +++ b/assets/minecraft/items/chiseled_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_tuff.json b/assets/minecraft/items/chiseled_tuff.json new file mode 100644 index 00000000..85401994 --- /dev/null +++ b/assets/minecraft/items/chiseled_tuff.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_tuff" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chiseled_tuff_bricks.json b/assets/minecraft/items/chiseled_tuff_bricks.json new file mode 100644 index 00000000..94632a0f --- /dev/null +++ b/assets/minecraft/items/chiseled_tuff_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_tuff_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chorus_flower.json b/assets/minecraft/items/chorus_flower.json new file mode 100644 index 00000000..a33bde47 --- /dev/null +++ b/assets/minecraft/items/chorus_flower.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chorus_flower" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chorus_fruit.json b/assets/minecraft/items/chorus_fruit.json new file mode 100644 index 00000000..65ad83c5 --- /dev/null +++ b/assets/minecraft/items/chorus_fruit.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/chorus_fruit" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/chorus_plant.json b/assets/minecraft/items/chorus_plant.json new file mode 100644 index 00000000..21a15f44 --- /dev/null +++ b/assets/minecraft/items/chorus_plant.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chorus_plant" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/clay.json b/assets/minecraft/items/clay.json new file mode 100644 index 00000000..bacfc937 --- /dev/null +++ b/assets/minecraft/items/clay.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/clay" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/clay_ball.json b/assets/minecraft/items/clay_ball.json new file mode 100644 index 00000000..e8f64c09 --- /dev/null +++ b/assets/minecraft/items/clay_ball.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clay_ball" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/clock.json b/assets/minecraft/items/clock.json new file mode 100644 index 00000000..0d6f44d8 --- /dev/null +++ b/assets/minecraft/items/clock.json @@ -0,0 +1,937 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_00" + }, + "threshold": 0.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_01" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_02" + }, + "threshold": 1.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_03" + }, + "threshold": 2.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_04" + }, + "threshold": 3.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_05" + }, + "threshold": 4.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_06" + }, + "threshold": 5.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_07" + }, + "threshold": 6.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_08" + }, + "threshold": 7.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_09" + }, + "threshold": 8.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_10" + }, + "threshold": 9.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_11" + }, + "threshold": 10.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_12" + }, + "threshold": 11.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_13" + }, + "threshold": 12.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_14" + }, + "threshold": 13.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_15" + }, + "threshold": 14.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_16" + }, + "threshold": 15.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_17" + }, + "threshold": 16.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_18" + }, + "threshold": 17.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_19" + }, + "threshold": 18.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_20" + }, + "threshold": 19.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_21" + }, + "threshold": 20.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_22" + }, + "threshold": 21.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_23" + }, + "threshold": 22.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_24" + }, + "threshold": 23.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_25" + }, + "threshold": 24.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_26" + }, + "threshold": 25.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_27" + }, + "threshold": 26.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_28" + }, + "threshold": 27.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_29" + }, + "threshold": 28.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_30" + }, + "threshold": 29.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_31" + }, + "threshold": 30.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_32" + }, + "threshold": 31.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_33" + }, + "threshold": 32.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_34" + }, + "threshold": 33.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_35" + }, + "threshold": 34.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_36" + }, + "threshold": 35.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_37" + }, + "threshold": 36.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_38" + }, + "threshold": 37.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_39" + }, + "threshold": 38.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_40" + }, + "threshold": 39.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_41" + }, + "threshold": 40.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_42" + }, + "threshold": 41.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_43" + }, + "threshold": 42.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_44" + }, + "threshold": 43.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_45" + }, + "threshold": 44.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_46" + }, + "threshold": 45.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_47" + }, + "threshold": 46.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_48" + }, + "threshold": 47.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_49" + }, + "threshold": 48.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_50" + }, + "threshold": 49.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_51" + }, + "threshold": 50.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_52" + }, + "threshold": 51.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_53" + }, + "threshold": 52.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_54" + }, + "threshold": 53.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_55" + }, + "threshold": 54.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_56" + }, + "threshold": 55.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_57" + }, + "threshold": 56.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_58" + }, + "threshold": 57.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_59" + }, + "threshold": 58.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_60" + }, + "threshold": 59.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_61" + }, + "threshold": 60.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_62" + }, + "threshold": 61.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_63" + }, + "threshold": 62.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_00" + }, + "threshold": 63.5 + } + ], + "property": "minecraft:time", + "scale": 64.0, + "source": "daytime" + }, + "when": "minecraft:overworld" + } + ], + "fallback": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_00" + }, + "threshold": 0.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_01" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_02" + }, + "threshold": 1.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_03" + }, + "threshold": 2.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_04" + }, + "threshold": 3.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_05" + }, + "threshold": 4.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_06" + }, + "threshold": 5.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_07" + }, + "threshold": 6.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_08" + }, + "threshold": 7.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_09" + }, + "threshold": 8.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_10" + }, + "threshold": 9.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_11" + }, + "threshold": 10.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_12" + }, + "threshold": 11.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_13" + }, + "threshold": 12.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_14" + }, + "threshold": 13.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_15" + }, + "threshold": 14.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_16" + }, + "threshold": 15.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_17" + }, + "threshold": 16.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_18" + }, + "threshold": 17.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_19" + }, + "threshold": 18.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_20" + }, + "threshold": 19.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_21" + }, + "threshold": 20.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_22" + }, + "threshold": 21.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_23" + }, + "threshold": 22.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_24" + }, + "threshold": 23.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_25" + }, + "threshold": 24.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_26" + }, + "threshold": 25.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_27" + }, + "threshold": 26.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_28" + }, + "threshold": 27.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_29" + }, + "threshold": 28.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_30" + }, + "threshold": 29.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_31" + }, + "threshold": 30.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_32" + }, + "threshold": 31.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_33" + }, + "threshold": 32.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_34" + }, + "threshold": 33.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_35" + }, + "threshold": 34.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_36" + }, + "threshold": 35.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_37" + }, + "threshold": 36.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_38" + }, + "threshold": 37.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_39" + }, + "threshold": 38.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_40" + }, + "threshold": 39.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_41" + }, + "threshold": 40.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_42" + }, + "threshold": 41.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_43" + }, + "threshold": 42.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_44" + }, + "threshold": 43.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_45" + }, + "threshold": 44.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_46" + }, + "threshold": 45.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_47" + }, + "threshold": 46.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_48" + }, + "threshold": 47.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_49" + }, + "threshold": 48.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_50" + }, + "threshold": 49.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_51" + }, + "threshold": 50.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_52" + }, + "threshold": 51.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_53" + }, + "threshold": 52.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_54" + }, + "threshold": 53.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_55" + }, + "threshold": 54.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_56" + }, + "threshold": 55.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_57" + }, + "threshold": 56.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_58" + }, + "threshold": 57.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_59" + }, + "threshold": 58.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_60" + }, + "threshold": 59.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_61" + }, + "threshold": 60.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_62" + }, + "threshold": 61.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_63" + }, + "threshold": 62.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/clock_00" + }, + "threshold": 63.5 + } + ], + "property": "minecraft:time", + "scale": 64.0, + "source": "random" + }, + "property": "minecraft:context_dimension" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/closed_eyeblossom.json b/assets/minecraft/items/closed_eyeblossom.json new file mode 100644 index 00000000..136145b5 --- /dev/null +++ b/assets/minecraft/items/closed_eyeblossom.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/closed_eyeblossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/coal.json b/assets/minecraft/items/coal.json new file mode 100644 index 00000000..0566981f --- /dev/null +++ b/assets/minecraft/items/coal.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/coal" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/coal_block.json b/assets/minecraft/items/coal_block.json new file mode 100644 index 00000000..f970b5e8 --- /dev/null +++ b/assets/minecraft/items/coal_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/coal_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/coal_ore.json b/assets/minecraft/items/coal_ore.json new file mode 100644 index 00000000..fe51726e --- /dev/null +++ b/assets/minecraft/items/coal_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/coal_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/coarse_dirt.json b/assets/minecraft/items/coarse_dirt.json new file mode 100644 index 00000000..03a9d984 --- /dev/null +++ b/assets/minecraft/items/coarse_dirt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/coarse_dirt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/coast_armor_trim_smithing_template.json b/assets/minecraft/items/coast_armor_trim_smithing_template.json new file mode 100644 index 00000000..9e34212c --- /dev/null +++ b/assets/minecraft/items/coast_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/coast_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobbled_deepslate.json b/assets/minecraft/items/cobbled_deepslate.json new file mode 100644 index 00000000..ff830637 --- /dev/null +++ b/assets/minecraft/items/cobbled_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobbled_deepslate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobbled_deepslate_slab.json b/assets/minecraft/items/cobbled_deepslate_slab.json new file mode 100644 index 00000000..c3ac1ae1 --- /dev/null +++ b/assets/minecraft/items/cobbled_deepslate_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobbled_deepslate_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobbled_deepslate_stairs.json b/assets/minecraft/items/cobbled_deepslate_stairs.json new file mode 100644 index 00000000..3ee9e6fd --- /dev/null +++ b/assets/minecraft/items/cobbled_deepslate_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobbled_deepslate_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobbled_deepslate_wall.json b/assets/minecraft/items/cobbled_deepslate_wall.json new file mode 100644 index 00000000..97c02a34 --- /dev/null +++ b/assets/minecraft/items/cobbled_deepslate_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobbled_deepslate_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobblestone.json b/assets/minecraft/items/cobblestone.json new file mode 100644 index 00000000..3bee3d36 --- /dev/null +++ b/assets/minecraft/items/cobblestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobblestone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobblestone_slab.json b/assets/minecraft/items/cobblestone_slab.json new file mode 100644 index 00000000..36c47e67 --- /dev/null +++ b/assets/minecraft/items/cobblestone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobblestone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobblestone_stairs.json b/assets/minecraft/items/cobblestone_stairs.json new file mode 100644 index 00000000..44b02561 --- /dev/null +++ b/assets/minecraft/items/cobblestone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobblestone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobblestone_wall.json b/assets/minecraft/items/cobblestone_wall.json new file mode 100644 index 00000000..edc14d44 --- /dev/null +++ b/assets/minecraft/items/cobblestone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobblestone_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cobweb.json b/assets/minecraft/items/cobweb.json new file mode 100644 index 00000000..ce2319b7 --- /dev/null +++ b/assets/minecraft/items/cobweb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cobweb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cocoa_beans.json b/assets/minecraft/items/cocoa_beans.json new file mode 100644 index 00000000..a3c054a4 --- /dev/null +++ b/assets/minecraft/items/cocoa_beans.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cocoa_beans" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cod.json b/assets/minecraft/items/cod.json new file mode 100644 index 00000000..3f0aac7a --- /dev/null +++ b/assets/minecraft/items/cod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cod_bucket.json b/assets/minecraft/items/cod_bucket.json new file mode 100644 index 00000000..967b87f1 --- /dev/null +++ b/assets/minecraft/items/cod_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cod_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cod_spawn_egg.json b/assets/minecraft/items/cod_spawn_egg.json new file mode 100644 index 00000000..f556e0ef --- /dev/null +++ b/assets/minecraft/items/cod_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -4085910 + }, + { + "type": "minecraft:constant", + "value": -1719157 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/command_block.json b/assets/minecraft/items/command_block.json new file mode 100644 index 00000000..7e5c23d2 --- /dev/null +++ b/assets/minecraft/items/command_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/command_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/command_block_minecart.json b/assets/minecraft/items/command_block_minecart.json new file mode 100644 index 00000000..2ce1c002 --- /dev/null +++ b/assets/minecraft/items/command_block_minecart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/command_block_minecart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/comparator.json b/assets/minecraft/items/comparator.json new file mode 100644 index 00000000..cc2d4f1f --- /dev/null +++ b/assets/minecraft/items/comparator.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/comparator" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/compass.json b/assets/minecraft/items/compass.json new file mode 100644 index 00000000..96043c80 --- /dev/null +++ b/assets/minecraft/items/compass.json @@ -0,0 +1,733 @@ +{ + "model": { + "type": "minecraft:condition", + "component": "minecraft:lodestone_tracker", + "on_false": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_16" + }, + "threshold": 0.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_17" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_18" + }, + "threshold": 1.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_19" + }, + "threshold": 2.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_20" + }, + "threshold": 3.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_21" + }, + "threshold": 4.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_22" + }, + "threshold": 5.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_23" + }, + "threshold": 6.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_24" + }, + "threshold": 7.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_25" + }, + "threshold": 8.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_26" + }, + "threshold": 9.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_27" + }, + "threshold": 10.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_28" + }, + "threshold": 11.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_29" + }, + "threshold": 12.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_30" + }, + "threshold": 13.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_31" + }, + "threshold": 14.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_00" + }, + "threshold": 15.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_01" + }, + "threshold": 16.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_02" + }, + "threshold": 17.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_03" + }, + "threshold": 18.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_04" + }, + "threshold": 19.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_05" + }, + "threshold": 20.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_06" + }, + "threshold": 21.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_07" + }, + "threshold": 22.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_08" + }, + "threshold": 23.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_09" + }, + "threshold": 24.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_10" + }, + "threshold": 25.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_11" + }, + "threshold": 26.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_12" + }, + "threshold": 27.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_13" + }, + "threshold": 28.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_14" + }, + "threshold": 29.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_15" + }, + "threshold": 30.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_16" + }, + "threshold": 31.5 + } + ], + "property": "minecraft:compass", + "scale": 32.0, + "target": "spawn" + }, + "when": "minecraft:overworld" + } + ], + "fallback": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_16" + }, + "threshold": 0.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_17" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_18" + }, + "threshold": 1.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_19" + }, + "threshold": 2.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_20" + }, + "threshold": 3.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_21" + }, + "threshold": 4.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_22" + }, + "threshold": 5.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_23" + }, + "threshold": 6.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_24" + }, + "threshold": 7.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_25" + }, + "threshold": 8.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_26" + }, + "threshold": 9.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_27" + }, + "threshold": 10.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_28" + }, + "threshold": 11.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_29" + }, + "threshold": 12.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_30" + }, + "threshold": 13.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_31" + }, + "threshold": 14.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_00" + }, + "threshold": 15.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_01" + }, + "threshold": 16.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_02" + }, + "threshold": 17.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_03" + }, + "threshold": 18.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_04" + }, + "threshold": 19.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_05" + }, + "threshold": 20.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_06" + }, + "threshold": 21.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_07" + }, + "threshold": 22.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_08" + }, + "threshold": 23.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_09" + }, + "threshold": 24.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_10" + }, + "threshold": 25.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_11" + }, + "threshold": 26.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_12" + }, + "threshold": 27.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_13" + }, + "threshold": 28.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_14" + }, + "threshold": 29.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_15" + }, + "threshold": 30.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_16" + }, + "threshold": 31.5 + } + ], + "property": "minecraft:compass", + "scale": 32.0, + "target": "none" + }, + "property": "minecraft:context_dimension" + }, + "on_true": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_16" + }, + "threshold": 0.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_17" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_18" + }, + "threshold": 1.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_19" + }, + "threshold": 2.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_20" + }, + "threshold": 3.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_21" + }, + "threshold": 4.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_22" + }, + "threshold": 5.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_23" + }, + "threshold": 6.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_24" + }, + "threshold": 7.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_25" + }, + "threshold": 8.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_26" + }, + "threshold": 9.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_27" + }, + "threshold": 10.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_28" + }, + "threshold": 11.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_29" + }, + "threshold": 12.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_30" + }, + "threshold": 13.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_31" + }, + "threshold": 14.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_00" + }, + "threshold": 15.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_01" + }, + "threshold": 16.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_02" + }, + "threshold": 17.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_03" + }, + "threshold": 18.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_04" + }, + "threshold": 19.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_05" + }, + "threshold": 20.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_06" + }, + "threshold": 21.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_07" + }, + "threshold": 22.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_08" + }, + "threshold": 23.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_09" + }, + "threshold": 24.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_10" + }, + "threshold": 25.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_11" + }, + "threshold": 26.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_12" + }, + "threshold": 27.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_13" + }, + "threshold": 28.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_14" + }, + "threshold": 29.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_15" + }, + "threshold": 30.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/compass_16" + }, + "threshold": 31.5 + } + ], + "property": "minecraft:compass", + "scale": 32.0, + "target": "lodestone" + }, + "property": "minecraft:has_component" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/composter.json b/assets/minecraft/items/composter.json new file mode 100644 index 00000000..875bef79 --- /dev/null +++ b/assets/minecraft/items/composter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/composter" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/conduit.json b/assets/minecraft/items/conduit.json new file mode 100644 index 00000000..d5c87e90 --- /dev/null +++ b/assets/minecraft/items/conduit.json @@ -0,0 +1,9 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/conduit", + "model": { + "type": "minecraft:conduit" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_beef.json b/assets/minecraft/items/cooked_beef.json new file mode 100644 index 00000000..cc5cb021 --- /dev/null +++ b/assets/minecraft/items/cooked_beef.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_beef" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_chicken.json b/assets/minecraft/items/cooked_chicken.json new file mode 100644 index 00000000..3020db99 --- /dev/null +++ b/assets/minecraft/items/cooked_chicken.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_chicken" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_cod.json b/assets/minecraft/items/cooked_cod.json new file mode 100644 index 00000000..4797e578 --- /dev/null +++ b/assets/minecraft/items/cooked_cod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_cod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_mutton.json b/assets/minecraft/items/cooked_mutton.json new file mode 100644 index 00000000..3171e1c2 --- /dev/null +++ b/assets/minecraft/items/cooked_mutton.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_mutton" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_porkchop.json b/assets/minecraft/items/cooked_porkchop.json new file mode 100644 index 00000000..57146f2e --- /dev/null +++ b/assets/minecraft/items/cooked_porkchop.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_porkchop" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_rabbit.json b/assets/minecraft/items/cooked_rabbit.json new file mode 100644 index 00000000..1284ba18 --- /dev/null +++ b/assets/minecraft/items/cooked_rabbit.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_rabbit" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cooked_salmon.json b/assets/minecraft/items/cooked_salmon.json new file mode 100644 index 00000000..7a6c0105 --- /dev/null +++ b/assets/minecraft/items/cooked_salmon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cooked_salmon" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cookie.json b/assets/minecraft/items/cookie.json new file mode 100644 index 00000000..de14c9c8 --- /dev/null +++ b/assets/minecraft/items/cookie.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cookie" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_block.json b/assets/minecraft/items/copper_block.json new file mode 100644 index 00000000..5060ed21 --- /dev/null +++ b/assets/minecraft/items/copper_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_bulb.json b/assets/minecraft/items/copper_bulb.json new file mode 100644 index 00000000..feafbf2c --- /dev/null +++ b/assets/minecraft/items/copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_door.json b/assets/minecraft/items/copper_door.json new file mode 100644 index 00000000..6bc75ee4 --- /dev/null +++ b/assets/minecraft/items/copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_grate.json b/assets/minecraft/items/copper_grate.json new file mode 100644 index 00000000..7d9789bc --- /dev/null +++ b/assets/minecraft/items/copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_ingot.json b/assets/minecraft/items/copper_ingot.json new file mode 100644 index 00000000..e9600478 --- /dev/null +++ b/assets/minecraft/items/copper_ingot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/copper_ingot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_ore.json b/assets/minecraft/items/copper_ore.json new file mode 100644 index 00000000..1e6e607a --- /dev/null +++ b/assets/minecraft/items/copper_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/copper_trapdoor.json b/assets/minecraft/items/copper_trapdoor.json new file mode 100644 index 00000000..03981dc9 --- /dev/null +++ b/assets/minecraft/items/copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cornflower.json b/assets/minecraft/items/cornflower.json new file mode 100644 index 00000000..d2574a75 --- /dev/null +++ b/assets/minecraft/items/cornflower.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cornflower" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cow_spawn_egg.json b/assets/minecraft/items/cow_spawn_egg.json new file mode 100644 index 00000000..b0e9ab08 --- /dev/null +++ b/assets/minecraft/items/cow_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -12306906 + }, + { + "type": "minecraft:constant", + "value": -6184543 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cracked_deepslate_bricks.json b/assets/minecraft/items/cracked_deepslate_bricks.json new file mode 100644 index 00000000..65f9968c --- /dev/null +++ b/assets/minecraft/items/cracked_deepslate_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cracked_deepslate_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cracked_deepslate_tiles.json b/assets/minecraft/items/cracked_deepslate_tiles.json new file mode 100644 index 00000000..6776f026 --- /dev/null +++ b/assets/minecraft/items/cracked_deepslate_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cracked_deepslate_tiles" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cracked_nether_bricks.json b/assets/minecraft/items/cracked_nether_bricks.json new file mode 100644 index 00000000..17b2f4a2 --- /dev/null +++ b/assets/minecraft/items/cracked_nether_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cracked_nether_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cracked_polished_blackstone_bricks.json b/assets/minecraft/items/cracked_polished_blackstone_bricks.json new file mode 100644 index 00000000..c62bb99c --- /dev/null +++ b/assets/minecraft/items/cracked_polished_blackstone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cracked_polished_blackstone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cracked_stone_bricks.json b/assets/minecraft/items/cracked_stone_bricks.json new file mode 100644 index 00000000..0d27cdde --- /dev/null +++ b/assets/minecraft/items/cracked_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cracked_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crafter.json b/assets/minecraft/items/crafter.json new file mode 100644 index 00000000..94664591 --- /dev/null +++ b/assets/minecraft/items/crafter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crafter" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crafting_table.json b/assets/minecraft/items/crafting_table.json new file mode 100644 index 00000000..4b344010 --- /dev/null +++ b/assets/minecraft/items/crafting_table.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crafting_table" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/creaking_heart.json b/assets/minecraft/items/creaking_heart.json new file mode 100644 index 00000000..9948ea1c --- /dev/null +++ b/assets/minecraft/items/creaking_heart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/creaking_heart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/creaking_spawn_egg.json b/assets/minecraft/items/creaking_spawn_egg.json new file mode 100644 index 00000000..66355bea --- /dev/null +++ b/assets/minecraft/items/creaking_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -10526881 + }, + { + "type": "minecraft:constant", + "value": -231406 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/creeper_banner_pattern.json b/assets/minecraft/items/creeper_banner_pattern.json new file mode 100644 index 00000000..27a4d07e --- /dev/null +++ b/assets/minecraft/items/creeper_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/creeper_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/creeper_head.json b/assets/minecraft/items/creeper_head.json new file mode 100644 index 00000000..f6f75172 --- /dev/null +++ b/assets/minecraft/items/creeper_head.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_skull", + "model": { + "type": "minecraft:head", + "kind": "creeper" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/creeper_spawn_egg.json b/assets/minecraft/items/creeper_spawn_egg.json new file mode 100644 index 00000000..b46f7a58 --- /dev/null +++ b/assets/minecraft/items/creeper_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15882485 + }, + { + "type": "minecraft:constant", + "value": -16777216 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_button.json b/assets/minecraft/items/crimson_button.json new file mode 100644 index 00000000..2cdecbd0 --- /dev/null +++ b/assets/minecraft/items/crimson_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_door.json b/assets/minecraft/items/crimson_door.json new file mode 100644 index 00000000..1240cf33 --- /dev/null +++ b/assets/minecraft/items/crimson_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crimson_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_fence.json b/assets/minecraft/items/crimson_fence.json new file mode 100644 index 00000000..812852a2 --- /dev/null +++ b/assets/minecraft/items/crimson_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_fence_gate.json b/assets/minecraft/items/crimson_fence_gate.json new file mode 100644 index 00000000..88baf908 --- /dev/null +++ b/assets/minecraft/items/crimson_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_fungus.json b/assets/minecraft/items/crimson_fungus.json new file mode 100644 index 00000000..b6a089cc --- /dev/null +++ b/assets/minecraft/items/crimson_fungus.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crimson_fungus" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_hanging_sign.json b/assets/minecraft/items/crimson_hanging_sign.json new file mode 100644 index 00000000..04e82b76 --- /dev/null +++ b/assets/minecraft/items/crimson_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crimson_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_hyphae.json b/assets/minecraft/items/crimson_hyphae.json new file mode 100644 index 00000000..7f024ebf --- /dev/null +++ b/assets/minecraft/items/crimson_hyphae.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_hyphae" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_nylium.json b/assets/minecraft/items/crimson_nylium.json new file mode 100644 index 00000000..75856f32 --- /dev/null +++ b/assets/minecraft/items/crimson_nylium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_nylium" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_planks.json b/assets/minecraft/items/crimson_planks.json new file mode 100644 index 00000000..e56ca28b --- /dev/null +++ b/assets/minecraft/items/crimson_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_pressure_plate.json b/assets/minecraft/items/crimson_pressure_plate.json new file mode 100644 index 00000000..ca86d595 --- /dev/null +++ b/assets/minecraft/items/crimson_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_roots.json b/assets/minecraft/items/crimson_roots.json new file mode 100644 index 00000000..80a592a7 --- /dev/null +++ b/assets/minecraft/items/crimson_roots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crimson_roots" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_sign.json b/assets/minecraft/items/crimson_sign.json new file mode 100644 index 00000000..3d72a481 --- /dev/null +++ b/assets/minecraft/items/crimson_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crimson_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_slab.json b/assets/minecraft/items/crimson_slab.json new file mode 100644 index 00000000..816e9385 --- /dev/null +++ b/assets/minecraft/items/crimson_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_stairs.json b/assets/minecraft/items/crimson_stairs.json new file mode 100644 index 00000000..205a62f9 --- /dev/null +++ b/assets/minecraft/items/crimson_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_stem.json b/assets/minecraft/items/crimson_stem.json new file mode 100644 index 00000000..4658241c --- /dev/null +++ b/assets/minecraft/items/crimson_stem.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_stem" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crimson_trapdoor.json b/assets/minecraft/items/crimson_trapdoor.json new file mode 100644 index 00000000..c11a4fd8 --- /dev/null +++ b/assets/minecraft/items/crimson_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crimson_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crossbow.json b/assets/minecraft/items/crossbow.json new file mode 100644 index 00000000..3fd76bea --- /dev/null +++ b/assets/minecraft/items/crossbow.json @@ -0,0 +1,54 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_arrow" + }, + "when": "arrow" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_firework" + }, + "when": "rocket" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow" + }, + "property": "minecraft:charge_type" + }, + "on_true": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_pulling_1" + }, + "threshold": 0.58 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_pulling_2" + }, + "threshold": 1.0 + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_pulling_0" + }, + "property": "minecraft:crossbow/pull" + }, + "property": "minecraft:using_item" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/crying_obsidian.json b/assets/minecraft/items/crying_obsidian.json new file mode 100644 index 00000000..146f8de5 --- /dev/null +++ b/assets/minecraft/items/crying_obsidian.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/crying_obsidian" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_copper.json b/assets/minecraft/items/cut_copper.json new file mode 100644 index 00000000..69a734c6 --- /dev/null +++ b/assets/minecraft/items/cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_copper_slab.json b/assets/minecraft/items/cut_copper_slab.json new file mode 100644 index 00000000..1f8c6197 --- /dev/null +++ b/assets/minecraft/items/cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_copper_stairs.json b/assets/minecraft/items/cut_copper_stairs.json new file mode 100644 index 00000000..d63128c1 --- /dev/null +++ b/assets/minecraft/items/cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_red_sandstone.json b/assets/minecraft/items/cut_red_sandstone.json new file mode 100644 index 00000000..ea4701a3 --- /dev/null +++ b/assets/minecraft/items/cut_red_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_red_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_red_sandstone_slab.json b/assets/minecraft/items/cut_red_sandstone_slab.json new file mode 100644 index 00000000..fc25924e --- /dev/null +++ b/assets/minecraft/items/cut_red_sandstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_red_sandstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_sandstone.json b/assets/minecraft/items/cut_sandstone.json new file mode 100644 index 00000000..2f1fe0ca --- /dev/null +++ b/assets/minecraft/items/cut_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cut_sandstone_slab.json b/assets/minecraft/items/cut_sandstone_slab.json new file mode 100644 index 00000000..bcfef093 --- /dev/null +++ b/assets/minecraft/items/cut_sandstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_sandstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_banner.json b/assets/minecraft/items/cyan_banner.json new file mode 100644 index 00000000..d7c7b2ce --- /dev/null +++ b/assets/minecraft/items/cyan_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "cyan" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_bed.json b/assets/minecraft/items/cyan_bed.json new file mode 100644 index 00000000..cde65b26 --- /dev/null +++ b/assets/minecraft/items/cyan_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/cyan_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:cyan" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_bundle.json b/assets/minecraft/items/cyan_bundle.json new file mode 100644 index 00000000..47e02745 --- /dev/null +++ b/assets/minecraft/items/cyan_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/cyan_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/cyan_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/cyan_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/cyan_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_candle.json b/assets/minecraft/items/cyan_candle.json new file mode 100644 index 00000000..129135ed --- /dev/null +++ b/assets/minecraft/items/cyan_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cyan_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_carpet.json b/assets/minecraft/items/cyan_carpet.json new file mode 100644 index 00000000..3bf293b8 --- /dev/null +++ b/assets/minecraft/items/cyan_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_concrete.json b/assets/minecraft/items/cyan_concrete.json new file mode 100644 index 00000000..61b934e0 --- /dev/null +++ b/assets/minecraft/items/cyan_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_concrete_powder.json b/assets/minecraft/items/cyan_concrete_powder.json new file mode 100644 index 00000000..884f433c --- /dev/null +++ b/assets/minecraft/items/cyan_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_dye.json b/assets/minecraft/items/cyan_dye.json new file mode 100644 index 00000000..d7e89cb5 --- /dev/null +++ b/assets/minecraft/items/cyan_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cyan_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_glazed_terracotta.json b/assets/minecraft/items/cyan_glazed_terracotta.json new file mode 100644 index 00000000..a748751d --- /dev/null +++ b/assets/minecraft/items/cyan_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_shulker_box.json b/assets/minecraft/items/cyan_shulker_box.json new file mode 100644 index 00000000..7f58255e --- /dev/null +++ b/assets/minecraft/items/cyan_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/cyan_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_cyan" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_stained_glass.json b/assets/minecraft/items/cyan_stained_glass.json new file mode 100644 index 00000000..c9ef053a --- /dev/null +++ b/assets/minecraft/items/cyan_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_stained_glass_pane.json b/assets/minecraft/items/cyan_stained_glass_pane.json new file mode 100644 index 00000000..b1ea0bd4 --- /dev/null +++ b/assets/minecraft/items/cyan_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cyan_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_terracotta.json b/assets/minecraft/items/cyan_terracotta.json new file mode 100644 index 00000000..f93b202d --- /dev/null +++ b/assets/minecraft/items/cyan_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/cyan_wool.json b/assets/minecraft/items/cyan_wool.json new file mode 100644 index 00000000..f9ef9a36 --- /dev/null +++ b/assets/minecraft/items/cyan_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cyan_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/damaged_anvil.json b/assets/minecraft/items/damaged_anvil.json new file mode 100644 index 00000000..afd397f7 --- /dev/null +++ b/assets/minecraft/items/damaged_anvil.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/damaged_anvil" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dandelion.json b/assets/minecraft/items/dandelion.json new file mode 100644 index 00000000..382f6e83 --- /dev/null +++ b/assets/minecraft/items/dandelion.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dandelion" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/danger_pottery_sherd.json b/assets/minecraft/items/danger_pottery_sherd.json new file mode 100644 index 00000000..b18e7728 --- /dev/null +++ b/assets/minecraft/items/danger_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/danger_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_boat.json b/assets/minecraft/items/dark_oak_boat.json new file mode 100644 index 00000000..1952ebc3 --- /dev/null +++ b/assets/minecraft/items/dark_oak_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_button.json b/assets/minecraft/items/dark_oak_button.json new file mode 100644 index 00000000..3164e1b1 --- /dev/null +++ b/assets/minecraft/items/dark_oak_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_chest_boat.json b/assets/minecraft/items/dark_oak_chest_boat.json new file mode 100644 index 00000000..36fe0c08 --- /dev/null +++ b/assets/minecraft/items/dark_oak_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_door.json b/assets/minecraft/items/dark_oak_door.json new file mode 100644 index 00000000..91274e3e --- /dev/null +++ b/assets/minecraft/items/dark_oak_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_fence.json b/assets/minecraft/items/dark_oak_fence.json new file mode 100644 index 00000000..b84fa938 --- /dev/null +++ b/assets/minecraft/items/dark_oak_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_fence_gate.json b/assets/minecraft/items/dark_oak_fence_gate.json new file mode 100644 index 00000000..890a14c3 --- /dev/null +++ b/assets/minecraft/items/dark_oak_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_hanging_sign.json b/assets/minecraft/items/dark_oak_hanging_sign.json new file mode 100644 index 00000000..d0ec9e72 --- /dev/null +++ b/assets/minecraft/items/dark_oak_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_leaves.json b/assets/minecraft/items/dark_oak_leaves.json new file mode 100644 index 00000000..361a25da --- /dev/null +++ b/assets/minecraft/items/dark_oak_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -12012264 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_log.json b/assets/minecraft/items/dark_oak_log.json new file mode 100644 index 00000000..3cbf4ecd --- /dev/null +++ b/assets/minecraft/items/dark_oak_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_planks.json b/assets/minecraft/items/dark_oak_planks.json new file mode 100644 index 00000000..acd7c754 --- /dev/null +++ b/assets/minecraft/items/dark_oak_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_pressure_plate.json b/assets/minecraft/items/dark_oak_pressure_plate.json new file mode 100644 index 00000000..1deb4485 --- /dev/null +++ b/assets/minecraft/items/dark_oak_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_sapling.json b/assets/minecraft/items/dark_oak_sapling.json new file mode 100644 index 00000000..3e9a5699 --- /dev/null +++ b/assets/minecraft/items/dark_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_sign.json b/assets/minecraft/items/dark_oak_sign.json new file mode 100644 index 00000000..5f48fb97 --- /dev/null +++ b/assets/minecraft/items/dark_oak_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_slab.json b/assets/minecraft/items/dark_oak_slab.json new file mode 100644 index 00000000..f1ecf632 --- /dev/null +++ b/assets/minecraft/items/dark_oak_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_stairs.json b/assets/minecraft/items/dark_oak_stairs.json new file mode 100644 index 00000000..97fd5d60 --- /dev/null +++ b/assets/minecraft/items/dark_oak_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_trapdoor.json b/assets/minecraft/items/dark_oak_trapdoor.json new file mode 100644 index 00000000..0c69766d --- /dev/null +++ b/assets/minecraft/items/dark_oak_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_oak_wood.json b/assets/minecraft/items/dark_oak_wood.json new file mode 100644 index 00000000..7d4be143 --- /dev/null +++ b/assets/minecraft/items/dark_oak_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_oak_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_prismarine.json b/assets/minecraft/items/dark_prismarine.json new file mode 100644 index 00000000..dbba4719 --- /dev/null +++ b/assets/minecraft/items/dark_prismarine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_prismarine" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_prismarine_slab.json b/assets/minecraft/items/dark_prismarine_slab.json new file mode 100644 index 00000000..ee4f6a9e --- /dev/null +++ b/assets/minecraft/items/dark_prismarine_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_prismarine_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dark_prismarine_stairs.json b/assets/minecraft/items/dark_prismarine_stairs.json new file mode 100644 index 00000000..1812a3a1 --- /dev/null +++ b/assets/minecraft/items/dark_prismarine_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dark_prismarine_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/daylight_detector.json b/assets/minecraft/items/daylight_detector.json new file mode 100644 index 00000000..fc5cdd09 --- /dev/null +++ b/assets/minecraft/items/daylight_detector.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/daylight_detector" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_brain_coral.json b/assets/minecraft/items/dead_brain_coral.json new file mode 100644 index 00000000..b1993918 --- /dev/null +++ b/assets/minecraft/items/dead_brain_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_brain_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_brain_coral_block.json b/assets/minecraft/items/dead_brain_coral_block.json new file mode 100644 index 00000000..18a18322 --- /dev/null +++ b/assets/minecraft/items/dead_brain_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dead_brain_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_brain_coral_fan.json b/assets/minecraft/items/dead_brain_coral_fan.json new file mode 100644 index 00000000..797dee12 --- /dev/null +++ b/assets/minecraft/items/dead_brain_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_brain_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_bubble_coral.json b/assets/minecraft/items/dead_bubble_coral.json new file mode 100644 index 00000000..1bed424d --- /dev/null +++ b/assets/minecraft/items/dead_bubble_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_bubble_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_bubble_coral_block.json b/assets/minecraft/items/dead_bubble_coral_block.json new file mode 100644 index 00000000..df88e21c --- /dev/null +++ b/assets/minecraft/items/dead_bubble_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dead_bubble_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_bubble_coral_fan.json b/assets/minecraft/items/dead_bubble_coral_fan.json new file mode 100644 index 00000000..ce5bb921 --- /dev/null +++ b/assets/minecraft/items/dead_bubble_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_bubble_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_bush.json b/assets/minecraft/items/dead_bush.json new file mode 100644 index 00000000..32b706c4 --- /dev/null +++ b/assets/minecraft/items/dead_bush.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_bush" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_fire_coral.json b/assets/minecraft/items/dead_fire_coral.json new file mode 100644 index 00000000..97d7a23d --- /dev/null +++ b/assets/minecraft/items/dead_fire_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_fire_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_fire_coral_block.json b/assets/minecraft/items/dead_fire_coral_block.json new file mode 100644 index 00000000..6a4dc6c8 --- /dev/null +++ b/assets/minecraft/items/dead_fire_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dead_fire_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_fire_coral_fan.json b/assets/minecraft/items/dead_fire_coral_fan.json new file mode 100644 index 00000000..3fccaf45 --- /dev/null +++ b/assets/minecraft/items/dead_fire_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_fire_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_horn_coral.json b/assets/minecraft/items/dead_horn_coral.json new file mode 100644 index 00000000..cbd3d5b4 --- /dev/null +++ b/assets/minecraft/items/dead_horn_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_horn_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_horn_coral_block.json b/assets/minecraft/items/dead_horn_coral_block.json new file mode 100644 index 00000000..b3ddffcf --- /dev/null +++ b/assets/minecraft/items/dead_horn_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dead_horn_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_horn_coral_fan.json b/assets/minecraft/items/dead_horn_coral_fan.json new file mode 100644 index 00000000..9a918b17 --- /dev/null +++ b/assets/minecraft/items/dead_horn_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_horn_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_tube_coral.json b/assets/minecraft/items/dead_tube_coral.json new file mode 100644 index 00000000..22b39b2c --- /dev/null +++ b/assets/minecraft/items/dead_tube_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_tube_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_tube_coral_block.json b/assets/minecraft/items/dead_tube_coral_block.json new file mode 100644 index 00000000..07d1be18 --- /dev/null +++ b/assets/minecraft/items/dead_tube_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dead_tube_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dead_tube_coral_fan.json b/assets/minecraft/items/dead_tube_coral_fan.json new file mode 100644 index 00000000..a5e9f8ef --- /dev/null +++ b/assets/minecraft/items/dead_tube_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dead_tube_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/debug_stick.json b/assets/minecraft/items/debug_stick.json new file mode 100644 index 00000000..de806ded --- /dev/null +++ b/assets/minecraft/items/debug_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/debug_stick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/decorated_pot.json b/assets/minecraft/items/decorated_pot.json new file mode 100644 index 00000000..24c90d56 --- /dev/null +++ b/assets/minecraft/items/decorated_pot.json @@ -0,0 +1,9 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/decorated_pot", + "model": { + "type": "minecraft:decorated_pot" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate.json b/assets/minecraft/items/deepslate.json new file mode 100644 index 00000000..77255c70 --- /dev/null +++ b/assets/minecraft/items/deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_brick_slab.json b/assets/minecraft/items/deepslate_brick_slab.json new file mode 100644 index 00000000..bbc99bad --- /dev/null +++ b/assets/minecraft/items/deepslate_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_brick_stairs.json b/assets/minecraft/items/deepslate_brick_stairs.json new file mode 100644 index 00000000..96502eaf --- /dev/null +++ b/assets/minecraft/items/deepslate_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_brick_wall.json b/assets/minecraft/items/deepslate_brick_wall.json new file mode 100644 index 00000000..738c6fe1 --- /dev/null +++ b/assets/minecraft/items/deepslate_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_bricks.json b/assets/minecraft/items/deepslate_bricks.json new file mode 100644 index 00000000..fbd9457a --- /dev/null +++ b/assets/minecraft/items/deepslate_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_coal_ore.json b/assets/minecraft/items/deepslate_coal_ore.json new file mode 100644 index 00000000..1f90c254 --- /dev/null +++ b/assets/minecraft/items/deepslate_coal_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_coal_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_copper_ore.json b/assets/minecraft/items/deepslate_copper_ore.json new file mode 100644 index 00000000..3f26206e --- /dev/null +++ b/assets/minecraft/items/deepslate_copper_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_copper_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_diamond_ore.json b/assets/minecraft/items/deepslate_diamond_ore.json new file mode 100644 index 00000000..848916bf --- /dev/null +++ b/assets/minecraft/items/deepslate_diamond_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_diamond_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_emerald_ore.json b/assets/minecraft/items/deepslate_emerald_ore.json new file mode 100644 index 00000000..aea0b297 --- /dev/null +++ b/assets/minecraft/items/deepslate_emerald_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_emerald_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_gold_ore.json b/assets/minecraft/items/deepslate_gold_ore.json new file mode 100644 index 00000000..c9f3f73b --- /dev/null +++ b/assets/minecraft/items/deepslate_gold_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_gold_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_iron_ore.json b/assets/minecraft/items/deepslate_iron_ore.json new file mode 100644 index 00000000..0a9817be --- /dev/null +++ b/assets/minecraft/items/deepslate_iron_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_iron_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_lapis_ore.json b/assets/minecraft/items/deepslate_lapis_ore.json new file mode 100644 index 00000000..d70b9660 --- /dev/null +++ b/assets/minecraft/items/deepslate_lapis_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_lapis_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_redstone_ore.json b/assets/minecraft/items/deepslate_redstone_ore.json new file mode 100644 index 00000000..630e4e93 --- /dev/null +++ b/assets/minecraft/items/deepslate_redstone_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_redstone_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_tile_slab.json b/assets/minecraft/items/deepslate_tile_slab.json new file mode 100644 index 00000000..8a247980 --- /dev/null +++ b/assets/minecraft/items/deepslate_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_tile_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_tile_stairs.json b/assets/minecraft/items/deepslate_tile_stairs.json new file mode 100644 index 00000000..dbd7c39f --- /dev/null +++ b/assets/minecraft/items/deepslate_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_tile_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_tile_wall.json b/assets/minecraft/items/deepslate_tile_wall.json new file mode 100644 index 00000000..e1b44152 --- /dev/null +++ b/assets/minecraft/items/deepslate_tile_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_tile_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/deepslate_tiles.json b/assets/minecraft/items/deepslate_tiles.json new file mode 100644 index 00000000..b2bd01fa --- /dev/null +++ b/assets/minecraft/items/deepslate_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate_tiles" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/detector_rail.json b/assets/minecraft/items/detector_rail.json new file mode 100644 index 00000000..0f427f97 --- /dev/null +++ b/assets/minecraft/items/detector_rail.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/detector_rail" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond.json b/assets/minecraft/items/diamond.json new file mode 100644 index 00000000..02943ce1 --- /dev/null +++ b/assets/minecraft/items/diamond.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_axe.json b/assets/minecraft/items/diamond_axe.json new file mode 100644 index 00000000..97785181 --- /dev/null +++ b/assets/minecraft/items/diamond_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_axe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_block.json b/assets/minecraft/items/diamond_block.json new file mode 100644 index 00000000..05528085 --- /dev/null +++ b/assets/minecraft/items/diamond_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_boots.json b/assets/minecraft/items/diamond_boots.json new file mode 100644 index 00000000..6e9f7f19 --- /dev/null +++ b/assets/minecraft/items/diamond_boots.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_boots" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_chestplate.json b/assets/minecraft/items/diamond_chestplate.json new file mode 100644 index 00000000..792fcdc8 --- /dev/null +++ b/assets/minecraft/items/diamond_chestplate.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_chestplate" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_helmet.json b/assets/minecraft/items/diamond_helmet.json new file mode 100644 index 00000000..e972bdca --- /dev/null +++ b/assets/minecraft/items/diamond_helmet.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_helmet" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_hoe.json b/assets/minecraft/items/diamond_hoe.json new file mode 100644 index 00000000..e870e023 --- /dev/null +++ b/assets/minecraft/items/diamond_hoe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_hoe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_horse_armor.json b/assets/minecraft/items/diamond_horse_armor.json new file mode 100644 index 00000000..0cb3d2ef --- /dev/null +++ b/assets/minecraft/items/diamond_horse_armor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_horse_armor" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_leggings.json b/assets/minecraft/items/diamond_leggings.json new file mode 100644 index 00000000..b56966d3 --- /dev/null +++ b/assets/minecraft/items/diamond_leggings.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_leggings" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_ore.json b/assets/minecraft/items/diamond_ore.json new file mode 100644 index 00000000..21cfe182 --- /dev/null +++ b/assets/minecraft/items/diamond_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/diamond_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_pickaxe.json b/assets/minecraft/items/diamond_pickaxe.json new file mode 100644 index 00000000..bb25d0e6 --- /dev/null +++ b/assets/minecraft/items/diamond_pickaxe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_pickaxe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_shovel.json b/assets/minecraft/items/diamond_shovel.json new file mode 100644 index 00000000..8a66cef5 --- /dev/null +++ b/assets/minecraft/items/diamond_shovel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_shovel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diamond_sword.json b/assets/minecraft/items/diamond_sword.json new file mode 100644 index 00000000..feaff175 --- /dev/null +++ b/assets/minecraft/items/diamond_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/diamond_sword" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diorite.json b/assets/minecraft/items/diorite.json new file mode 100644 index 00000000..c46df5c3 --- /dev/null +++ b/assets/minecraft/items/diorite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/diorite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diorite_slab.json b/assets/minecraft/items/diorite_slab.json new file mode 100644 index 00000000..2970c9d8 --- /dev/null +++ b/assets/minecraft/items/diorite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/diorite_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diorite_stairs.json b/assets/minecraft/items/diorite_stairs.json new file mode 100644 index 00000000..35afcd78 --- /dev/null +++ b/assets/minecraft/items/diorite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/diorite_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/diorite_wall.json b/assets/minecraft/items/diorite_wall.json new file mode 100644 index 00000000..e6f625f8 --- /dev/null +++ b/assets/minecraft/items/diorite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/diorite_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dirt.json b/assets/minecraft/items/dirt.json new file mode 100644 index 00000000..2a743f35 --- /dev/null +++ b/assets/minecraft/items/dirt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dirt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dirt_path.json b/assets/minecraft/items/dirt_path.json new file mode 100644 index 00000000..5acab891 --- /dev/null +++ b/assets/minecraft/items/dirt_path.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dirt_path" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/disc_fragment_5.json b/assets/minecraft/items/disc_fragment_5.json new file mode 100644 index 00000000..bd88e9b0 --- /dev/null +++ b/assets/minecraft/items/disc_fragment_5.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/disc_fragment_5" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dispenser.json b/assets/minecraft/items/dispenser.json new file mode 100644 index 00000000..3976f346 --- /dev/null +++ b/assets/minecraft/items/dispenser.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dispenser" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dolphin_spawn_egg.json b/assets/minecraft/items/dolphin_spawn_egg.json new file mode 100644 index 00000000..84cf6744 --- /dev/null +++ b/assets/minecraft/items/dolphin_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -14533811 + }, + { + "type": "minecraft:constant", + "value": -394759 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/donkey_spawn_egg.json b/assets/minecraft/items/donkey_spawn_egg.json new file mode 100644 index 00000000..77847f05 --- /dev/null +++ b/assets/minecraft/items/donkey_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -11320007 + }, + { + "type": "minecraft:constant", + "value": -7965338 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dragon_breath.json b/assets/minecraft/items/dragon_breath.json new file mode 100644 index 00000000..78192904 --- /dev/null +++ b/assets/minecraft/items/dragon_breath.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dragon_breath" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dragon_egg.json b/assets/minecraft/items/dragon_egg.json new file mode 100644 index 00000000..694567c0 --- /dev/null +++ b/assets/minecraft/items/dragon_egg.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dragon_egg" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dragon_head.json b/assets/minecraft/items/dragon_head.json new file mode 100644 index 00000000..71017923 --- /dev/null +++ b/assets/minecraft/items/dragon_head.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/dragon_head", + "model": { + "type": "minecraft:head", + "kind": "dragon" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dried_kelp.json b/assets/minecraft/items/dried_kelp.json new file mode 100644 index 00000000..497ffaac --- /dev/null +++ b/assets/minecraft/items/dried_kelp.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dried_kelp" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dried_kelp_block.json b/assets/minecraft/items/dried_kelp_block.json new file mode 100644 index 00000000..6f9f27b8 --- /dev/null +++ b/assets/minecraft/items/dried_kelp_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dried_kelp_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dripstone_block.json b/assets/minecraft/items/dripstone_block.json new file mode 100644 index 00000000..de199ada --- /dev/null +++ b/assets/minecraft/items/dripstone_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dripstone_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dropper.json b/assets/minecraft/items/dropper.json new file mode 100644 index 00000000..0e5ba841 --- /dev/null +++ b/assets/minecraft/items/dropper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/dropper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/drowned_spawn_egg.json b/assets/minecraft/items/drowned_spawn_egg.json new file mode 100644 index 00000000..9733efa9 --- /dev/null +++ b/assets/minecraft/items/drowned_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -7343657 + }, + { + "type": "minecraft:constant", + "value": -8807323 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/dune_armor_trim_smithing_template.json b/assets/minecraft/items/dune_armor_trim_smithing_template.json new file mode 100644 index 00000000..b59a172b --- /dev/null +++ b/assets/minecraft/items/dune_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dune_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/echo_shard.json b/assets/minecraft/items/echo_shard.json new file mode 100644 index 00000000..c1f986f2 --- /dev/null +++ b/assets/minecraft/items/echo_shard.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/echo_shard" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/egg.json b/assets/minecraft/items/egg.json new file mode 100644 index 00000000..39c58827 --- /dev/null +++ b/assets/minecraft/items/egg.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/egg" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/elder_guardian_spawn_egg.json b/assets/minecraft/items/elder_guardian_spawn_egg.json new file mode 100644 index 00000000..09fa97f4 --- /dev/null +++ b/assets/minecraft/items/elder_guardian_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -3224390 + }, + { + "type": "minecraft:constant", + "value": -9144685 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/elytra.json b/assets/minecraft/items/elytra.json new file mode 100644 index 00000000..2ec75b20 --- /dev/null +++ b/assets/minecraft/items/elytra.json @@ -0,0 +1,14 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/elytra" + }, + "on_true": { + "type": "minecraft:model", + "model": "minecraft:item/elytra_broken" + }, + "property": "minecraft:broken" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/emerald.json b/assets/minecraft/items/emerald.json new file mode 100644 index 00000000..1bb68643 --- /dev/null +++ b/assets/minecraft/items/emerald.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/emerald" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/emerald_block.json b/assets/minecraft/items/emerald_block.json new file mode 100644 index 00000000..1cdd248a --- /dev/null +++ b/assets/minecraft/items/emerald_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/emerald_ore.json b/assets/minecraft/items/emerald_ore.json new file mode 100644 index 00000000..fee596cc --- /dev/null +++ b/assets/minecraft/items/emerald_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/emerald_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/enchanted_book.json b/assets/minecraft/items/enchanted_book.json new file mode 100644 index 00000000..d040f8bb --- /dev/null +++ b/assets/minecraft/items/enchanted_book.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/enchanted_book" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/enchanted_golden_apple.json b/assets/minecraft/items/enchanted_golden_apple.json new file mode 100644 index 00000000..824327a4 --- /dev/null +++ b/assets/minecraft/items/enchanted_golden_apple.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/enchanted_golden_apple" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/enchanting_table.json b/assets/minecraft/items/enchanting_table.json new file mode 100644 index 00000000..6cfff24f --- /dev/null +++ b/assets/minecraft/items/enchanting_table.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/enchanting_table" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_crystal.json b/assets/minecraft/items/end_crystal.json new file mode 100644 index 00000000..871b593c --- /dev/null +++ b/assets/minecraft/items/end_crystal.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/end_crystal" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_portal_frame.json b/assets/minecraft/items/end_portal_frame.json new file mode 100644 index 00000000..764c8d35 --- /dev/null +++ b/assets/minecraft/items/end_portal_frame.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_portal_frame" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_rod.json b/assets/minecraft/items/end_rod.json new file mode 100644 index 00000000..f7d7c634 --- /dev/null +++ b/assets/minecraft/items/end_rod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_rod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_stone.json b/assets/minecraft/items/end_stone.json new file mode 100644 index 00000000..86ea9e80 --- /dev/null +++ b/assets/minecraft/items/end_stone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_stone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_stone_brick_slab.json b/assets/minecraft/items/end_stone_brick_slab.json new file mode 100644 index 00000000..5e7dc44b --- /dev/null +++ b/assets/minecraft/items/end_stone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_stone_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_stone_brick_stairs.json b/assets/minecraft/items/end_stone_brick_stairs.json new file mode 100644 index 00000000..4de71c7c --- /dev/null +++ b/assets/minecraft/items/end_stone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_stone_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_stone_brick_wall.json b/assets/minecraft/items/end_stone_brick_wall.json new file mode 100644 index 00000000..479e3011 --- /dev/null +++ b/assets/minecraft/items/end_stone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_stone_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/end_stone_bricks.json b/assets/minecraft/items/end_stone_bricks.json new file mode 100644 index 00000000..d6698853 --- /dev/null +++ b/assets/minecraft/items/end_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/end_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ender_chest.json b/assets/minecraft/items/ender_chest.json new file mode 100644 index 00000000..54793a77 --- /dev/null +++ b/assets/minecraft/items/ender_chest.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/ender_chest", + "model": { + "type": "minecraft:chest", + "texture": "minecraft:ender" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ender_dragon_spawn_egg.json b/assets/minecraft/items/ender_dragon_spawn_egg.json new file mode 100644 index 00000000..cde65d58 --- /dev/null +++ b/assets/minecraft/items/ender_dragon_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -14935012 + }, + { + "type": "minecraft:constant", + "value": -2065926 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ender_eye.json b/assets/minecraft/items/ender_eye.json new file mode 100644 index 00000000..cfa768b7 --- /dev/null +++ b/assets/minecraft/items/ender_eye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ender_eye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ender_pearl.json b/assets/minecraft/items/ender_pearl.json new file mode 100644 index 00000000..b7bfc150 --- /dev/null +++ b/assets/minecraft/items/ender_pearl.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ender_pearl" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/enderman_spawn_egg.json b/assets/minecraft/items/enderman_spawn_egg.json new file mode 100644 index 00000000..26d3e235 --- /dev/null +++ b/assets/minecraft/items/enderman_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15329770 + }, + { + "type": "minecraft:constant", + "value": -16777216 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/endermite_spawn_egg.json b/assets/minecraft/items/endermite_spawn_egg.json new file mode 100644 index 00000000..dded41e0 --- /dev/null +++ b/assets/minecraft/items/endermite_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15329770 + }, + { + "type": "minecraft:constant", + "value": -9539986 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/evoker_spawn_egg.json b/assets/minecraft/items/evoker_spawn_egg.json new file mode 100644 index 00000000..a4efa157 --- /dev/null +++ b/assets/minecraft/items/evoker_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6972517 + }, + { + "type": "minecraft:constant", + "value": -14803942 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/experience_bottle.json b/assets/minecraft/items/experience_bottle.json new file mode 100644 index 00000000..08f831b3 --- /dev/null +++ b/assets/minecraft/items/experience_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/experience_bottle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/explorer_pottery_sherd.json b/assets/minecraft/items/explorer_pottery_sherd.json new file mode 100644 index 00000000..fdae3532 --- /dev/null +++ b/assets/minecraft/items/explorer_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/explorer_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_chiseled_copper.json b/assets/minecraft/items/exposed_chiseled_copper.json new file mode 100644 index 00000000..22657b6a --- /dev/null +++ b/assets/minecraft/items/exposed_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_copper.json b/assets/minecraft/items/exposed_copper.json new file mode 100644 index 00000000..632da674 --- /dev/null +++ b/assets/minecraft/items/exposed_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_copper_bulb.json b/assets/minecraft/items/exposed_copper_bulb.json new file mode 100644 index 00000000..d54e6306 --- /dev/null +++ b/assets/minecraft/items/exposed_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_copper_door.json b/assets/minecraft/items/exposed_copper_door.json new file mode 100644 index 00000000..0ca6e2ca --- /dev/null +++ b/assets/minecraft/items/exposed_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/exposed_copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_copper_grate.json b/assets/minecraft/items/exposed_copper_grate.json new file mode 100644 index 00000000..07c561b4 --- /dev/null +++ b/assets/minecraft/items/exposed_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_copper_trapdoor.json b/assets/minecraft/items/exposed_copper_trapdoor.json new file mode 100644 index 00000000..260b680e --- /dev/null +++ b/assets/minecraft/items/exposed_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_cut_copper.json b/assets/minecraft/items/exposed_cut_copper.json new file mode 100644 index 00000000..35932366 --- /dev/null +++ b/assets/minecraft/items/exposed_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_cut_copper_slab.json b/assets/minecraft/items/exposed_cut_copper_slab.json new file mode 100644 index 00000000..818f8860 --- /dev/null +++ b/assets/minecraft/items/exposed_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/exposed_cut_copper_stairs.json b/assets/minecraft/items/exposed_cut_copper_stairs.json new file mode 100644 index 00000000..54f5c1f0 --- /dev/null +++ b/assets/minecraft/items/exposed_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/eye_armor_trim_smithing_template.json b/assets/minecraft/items/eye_armor_trim_smithing_template.json new file mode 100644 index 00000000..1c5d86ea --- /dev/null +++ b/assets/minecraft/items/eye_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/eye_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/farmland.json b/assets/minecraft/items/farmland.json new file mode 100644 index 00000000..394f6a5a --- /dev/null +++ b/assets/minecraft/items/farmland.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/farmland" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/feather.json b/assets/minecraft/items/feather.json new file mode 100644 index 00000000..809e75b9 --- /dev/null +++ b/assets/minecraft/items/feather.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/feather" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fermented_spider_eye.json b/assets/minecraft/items/fermented_spider_eye.json new file mode 100644 index 00000000..5bce62ff --- /dev/null +++ b/assets/minecraft/items/fermented_spider_eye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/fermented_spider_eye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fern.json b/assets/minecraft/items/fern.json new file mode 100644 index 00000000..fc6e7516 --- /dev/null +++ b/assets/minecraft/items/fern.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/fern", + "tints": [ + { + "type": "minecraft:grass", + "downfall": 1.0, + "temperature": 0.5 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/field_masoned_banner_pattern.json b/assets/minecraft/items/field_masoned_banner_pattern.json new file mode 100644 index 00000000..c6fd6ad8 --- /dev/null +++ b/assets/minecraft/items/field_masoned_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/field_masoned_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/filled_map.json b/assets/minecraft/items/filled_map.json new file mode 100644 index 00000000..9152f37c --- /dev/null +++ b/assets/minecraft/items/filled_map.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/filled_map", + "tints": [ + { + "type": "minecraft:constant", + "value": -1 + }, + { + "type": "minecraft:map_color", + "default": 4603950 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fire_charge.json b/assets/minecraft/items/fire_charge.json new file mode 100644 index 00000000..8326bf8d --- /dev/null +++ b/assets/minecraft/items/fire_charge.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/fire_charge" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fire_coral.json b/assets/minecraft/items/fire_coral.json new file mode 100644 index 00000000..835c481f --- /dev/null +++ b/assets/minecraft/items/fire_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/fire_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fire_coral_block.json b/assets/minecraft/items/fire_coral_block.json new file mode 100644 index 00000000..027c9f9c --- /dev/null +++ b/assets/minecraft/items/fire_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/fire_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fire_coral_fan.json b/assets/minecraft/items/fire_coral_fan.json new file mode 100644 index 00000000..5746686f --- /dev/null +++ b/assets/minecraft/items/fire_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/fire_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/firework_rocket.json b/assets/minecraft/items/firework_rocket.json new file mode 100644 index 00000000..98341aa0 --- /dev/null +++ b/assets/minecraft/items/firework_rocket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/firework_rocket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/firework_star.json b/assets/minecraft/items/firework_star.json new file mode 100644 index 00000000..deec259f --- /dev/null +++ b/assets/minecraft/items/firework_star.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/firework_star", + "tints": [ + { + "type": "minecraft:constant", + "value": -1 + }, + { + "type": "minecraft:firework", + "default": -7697782 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fishing_rod.json b/assets/minecraft/items/fishing_rod.json new file mode 100644 index 00000000..e2296888 --- /dev/null +++ b/assets/minecraft/items/fishing_rod.json @@ -0,0 +1,14 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/fishing_rod" + }, + "on_true": { + "type": "minecraft:model", + "model": "minecraft:item/fishing_rod_cast" + }, + "property": "minecraft:fishing_rod/cast" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fletching_table.json b/assets/minecraft/items/fletching_table.json new file mode 100644 index 00000000..f92820f7 --- /dev/null +++ b/assets/minecraft/items/fletching_table.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/fletching_table" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flint.json b/assets/minecraft/items/flint.json new file mode 100644 index 00000000..a1741a1f --- /dev/null +++ b/assets/minecraft/items/flint.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flint" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flint_and_steel.json b/assets/minecraft/items/flint_and_steel.json new file mode 100644 index 00000000..279808b9 --- /dev/null +++ b/assets/minecraft/items/flint_and_steel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flint_and_steel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flow_armor_trim_smithing_template.json b/assets/minecraft/items/flow_armor_trim_smithing_template.json new file mode 100644 index 00000000..cf915b31 --- /dev/null +++ b/assets/minecraft/items/flow_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flow_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flow_banner_pattern.json b/assets/minecraft/items/flow_banner_pattern.json new file mode 100644 index 00000000..bd51343a --- /dev/null +++ b/assets/minecraft/items/flow_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flow_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flow_pottery_sherd.json b/assets/minecraft/items/flow_pottery_sherd.json new file mode 100644 index 00000000..2c4cd810 --- /dev/null +++ b/assets/minecraft/items/flow_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flow_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flower_banner_pattern.json b/assets/minecraft/items/flower_banner_pattern.json new file mode 100644 index 00000000..000a7be8 --- /dev/null +++ b/assets/minecraft/items/flower_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flower_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flower_pot.json b/assets/minecraft/items/flower_pot.json new file mode 100644 index 00000000..619a80d3 --- /dev/null +++ b/assets/minecraft/items/flower_pot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/flower_pot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flowering_azalea.json b/assets/minecraft/items/flowering_azalea.json new file mode 100644 index 00000000..778616a9 --- /dev/null +++ b/assets/minecraft/items/flowering_azalea.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/flowering_azalea" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/flowering_azalea_leaves.json b/assets/minecraft/items/flowering_azalea_leaves.json new file mode 100644 index 00000000..35fe16d9 --- /dev/null +++ b/assets/minecraft/items/flowering_azalea_leaves.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/flowering_azalea_leaves" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/fox_spawn_egg.json b/assets/minecraft/items/fox_spawn_egg.json new file mode 100644 index 00000000..cc448ddd --- /dev/null +++ b/assets/minecraft/items/fox_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -2771297 + }, + { + "type": "minecraft:constant", + "value": -3380960 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/friend_pottery_sherd.json b/assets/minecraft/items/friend_pottery_sherd.json new file mode 100644 index 00000000..a5aef4bd --- /dev/null +++ b/assets/minecraft/items/friend_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/friend_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/frog_spawn_egg.json b/assets/minecraft/items/frog_spawn_egg.json new file mode 100644 index 00000000..a2929167 --- /dev/null +++ b/assets/minecraft/items/frog_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -3115964 + }, + { + "type": "minecraft:constant", + "value": -14468 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/frogspawn.json b/assets/minecraft/items/frogspawn.json new file mode 100644 index 00000000..c78393f5 --- /dev/null +++ b/assets/minecraft/items/frogspawn.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/frogspawn" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/furnace.json b/assets/minecraft/items/furnace.json new file mode 100644 index 00000000..6449afc3 --- /dev/null +++ b/assets/minecraft/items/furnace.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/furnace" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/furnace_minecart.json b/assets/minecraft/items/furnace_minecart.json new file mode 100644 index 00000000..26139fe1 --- /dev/null +++ b/assets/minecraft/items/furnace_minecart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/furnace_minecart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ghast_spawn_egg.json b/assets/minecraft/items/ghast_spawn_egg.json new file mode 100644 index 00000000..683f9d0c --- /dev/null +++ b/assets/minecraft/items/ghast_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -394759 + }, + { + "type": "minecraft:constant", + "value": -4408132 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ghast_tear.json b/assets/minecraft/items/ghast_tear.json new file mode 100644 index 00000000..fabdd2d8 --- /dev/null +++ b/assets/minecraft/items/ghast_tear.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ghast_tear" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gilded_blackstone.json b/assets/minecraft/items/gilded_blackstone.json new file mode 100644 index 00000000..0ccb924d --- /dev/null +++ b/assets/minecraft/items/gilded_blackstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gilded_blackstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glass.json b/assets/minecraft/items/glass.json new file mode 100644 index 00000000..85664175 --- /dev/null +++ b/assets/minecraft/items/glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glass_bottle.json b/assets/minecraft/items/glass_bottle.json new file mode 100644 index 00000000..04f3032e --- /dev/null +++ b/assets/minecraft/items/glass_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glass_bottle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glass_pane.json b/assets/minecraft/items/glass_pane.json new file mode 100644 index 00000000..9639bbc6 --- /dev/null +++ b/assets/minecraft/items/glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glistering_melon_slice.json b/assets/minecraft/items/glistering_melon_slice.json new file mode 100644 index 00000000..84375832 --- /dev/null +++ b/assets/minecraft/items/glistering_melon_slice.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glistering_melon_slice" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/globe_banner_pattern.json b/assets/minecraft/items/globe_banner_pattern.json new file mode 100644 index 00000000..48bb79db --- /dev/null +++ b/assets/minecraft/items/globe_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/globe_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glow_berries.json b/assets/minecraft/items/glow_berries.json new file mode 100644 index 00000000..01214a8b --- /dev/null +++ b/assets/minecraft/items/glow_berries.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glow_berries" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glow_ink_sac.json b/assets/minecraft/items/glow_ink_sac.json new file mode 100644 index 00000000..f4b136c7 --- /dev/null +++ b/assets/minecraft/items/glow_ink_sac.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glow_ink_sac" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glow_item_frame.json b/assets/minecraft/items/glow_item_frame.json new file mode 100644 index 00000000..1f30da64 --- /dev/null +++ b/assets/minecraft/items/glow_item_frame.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glow_item_frame" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glow_lichen.json b/assets/minecraft/items/glow_lichen.json new file mode 100644 index 00000000..d89ad87b --- /dev/null +++ b/assets/minecraft/items/glow_lichen.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glow_lichen" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glow_squid_spawn_egg.json b/assets/minecraft/items/glow_squid_spawn_egg.json new file mode 100644 index 00000000..be481041 --- /dev/null +++ b/assets/minecraft/items/glow_squid_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -16165290 + }, + { + "type": "minecraft:constant", + "value": -7999044 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glowstone.json b/assets/minecraft/items/glowstone.json new file mode 100644 index 00000000..5fde9521 --- /dev/null +++ b/assets/minecraft/items/glowstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/glowstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/glowstone_dust.json b/assets/minecraft/items/glowstone_dust.json new file mode 100644 index 00000000..41e72771 --- /dev/null +++ b/assets/minecraft/items/glowstone_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/glowstone_dust" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/goat_horn.json b/assets/minecraft/items/goat_horn.json new file mode 100644 index 00000000..d2db8382 --- /dev/null +++ b/assets/minecraft/items/goat_horn.json @@ -0,0 +1,14 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/goat_horn" + }, + "on_true": { + "type": "minecraft:model", + "model": "minecraft:item/tooting_goat_horn" + }, + "property": "minecraft:using_item" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/goat_spawn_egg.json b/assets/minecraft/items/goat_spawn_egg.json new file mode 100644 index 00000000..75471773 --- /dev/null +++ b/assets/minecraft/items/goat_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -5925764 + }, + { + "type": "minecraft:constant", + "value": -11187906 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gold_block.json b/assets/minecraft/items/gold_block.json new file mode 100644 index 00000000..a03cc364 --- /dev/null +++ b/assets/minecraft/items/gold_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gold_ingot.json b/assets/minecraft/items/gold_ingot.json new file mode 100644 index 00000000..b9d3fdd7 --- /dev/null +++ b/assets/minecraft/items/gold_ingot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/gold_ingot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gold_nugget.json b/assets/minecraft/items/gold_nugget.json new file mode 100644 index 00000000..f88f872e --- /dev/null +++ b/assets/minecraft/items/gold_nugget.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/gold_nugget" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gold_ore.json b/assets/minecraft/items/gold_ore.json new file mode 100644 index 00000000..d2c6805b --- /dev/null +++ b/assets/minecraft/items/gold_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gold_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_apple.json b/assets/minecraft/items/golden_apple.json new file mode 100644 index 00000000..1cab81ed --- /dev/null +++ b/assets/minecraft/items/golden_apple.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_apple" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_axe.json b/assets/minecraft/items/golden_axe.json new file mode 100644 index 00000000..899c0e74 --- /dev/null +++ b/assets/minecraft/items/golden_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_axe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_boots.json b/assets/minecraft/items/golden_boots.json new file mode 100644 index 00000000..245b3420 --- /dev/null +++ b/assets/minecraft/items/golden_boots.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/golden_boots" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_carrot.json b/assets/minecraft/items/golden_carrot.json new file mode 100644 index 00000000..b6f04287 --- /dev/null +++ b/assets/minecraft/items/golden_carrot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_carrot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_chestplate.json b/assets/minecraft/items/golden_chestplate.json new file mode 100644 index 00000000..7478fd9a --- /dev/null +++ b/assets/minecraft/items/golden_chestplate.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/golden_chestplate" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_helmet.json b/assets/minecraft/items/golden_helmet.json new file mode 100644 index 00000000..2c999700 --- /dev/null +++ b/assets/minecraft/items/golden_helmet.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/golden_helmet" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_hoe.json b/assets/minecraft/items/golden_hoe.json new file mode 100644 index 00000000..9efc7f14 --- /dev/null +++ b/assets/minecraft/items/golden_hoe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_hoe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_horse_armor.json b/assets/minecraft/items/golden_horse_armor.json new file mode 100644 index 00000000..31f2e458 --- /dev/null +++ b/assets/minecraft/items/golden_horse_armor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_horse_armor" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_leggings.json b/assets/minecraft/items/golden_leggings.json new file mode 100644 index 00000000..59eba297 --- /dev/null +++ b/assets/minecraft/items/golden_leggings.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/golden_leggings" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_pickaxe.json b/assets/minecraft/items/golden_pickaxe.json new file mode 100644 index 00000000..87fcc70c --- /dev/null +++ b/assets/minecraft/items/golden_pickaxe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_pickaxe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_shovel.json b/assets/minecraft/items/golden_shovel.json new file mode 100644 index 00000000..88425bcd --- /dev/null +++ b/assets/minecraft/items/golden_shovel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_shovel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/golden_sword.json b/assets/minecraft/items/golden_sword.json new file mode 100644 index 00000000..2f2de3b6 --- /dev/null +++ b/assets/minecraft/items/golden_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/golden_sword" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/granite.json b/assets/minecraft/items/granite.json new file mode 100644 index 00000000..2ca226eb --- /dev/null +++ b/assets/minecraft/items/granite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/granite_slab.json b/assets/minecraft/items/granite_slab.json new file mode 100644 index 00000000..fe961ead --- /dev/null +++ b/assets/minecraft/items/granite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/granite_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/granite_stairs.json b/assets/minecraft/items/granite_stairs.json new file mode 100644 index 00000000..0ce2b72e --- /dev/null +++ b/assets/minecraft/items/granite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/granite_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/granite_wall.json b/assets/minecraft/items/granite_wall.json new file mode 100644 index 00000000..e6c7d512 --- /dev/null +++ b/assets/minecraft/items/granite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/granite_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/grass_block.json b/assets/minecraft/items/grass_block.json new file mode 100644 index 00000000..78f1969c --- /dev/null +++ b/assets/minecraft/items/grass_block.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/grass_block", + "tints": [ + { + "type": "minecraft:grass", + "downfall": 1.0, + "temperature": 0.5 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gravel.json b/assets/minecraft/items/gravel.json new file mode 100644 index 00000000..2026e544 --- /dev/null +++ b/assets/minecraft/items/gravel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gravel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_banner.json b/assets/minecraft/items/gray_banner.json new file mode 100644 index 00000000..8949b04f --- /dev/null +++ b/assets/minecraft/items/gray_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "gray" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_bed.json b/assets/minecraft/items/gray_bed.json new file mode 100644 index 00000000..79e93817 --- /dev/null +++ b/assets/minecraft/items/gray_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/gray_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:gray" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_bundle.json b/assets/minecraft/items/gray_bundle.json new file mode 100644 index 00000000..631b3663 --- /dev/null +++ b/assets/minecraft/items/gray_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/gray_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/gray_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/gray_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/gray_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_candle.json b/assets/minecraft/items/gray_candle.json new file mode 100644 index 00000000..343de6d5 --- /dev/null +++ b/assets/minecraft/items/gray_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/gray_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_carpet.json b/assets/minecraft/items/gray_carpet.json new file mode 100644 index 00000000..640d832b --- /dev/null +++ b/assets/minecraft/items/gray_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_concrete.json b/assets/minecraft/items/gray_concrete.json new file mode 100644 index 00000000..5c85b853 --- /dev/null +++ b/assets/minecraft/items/gray_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_concrete_powder.json b/assets/minecraft/items/gray_concrete_powder.json new file mode 100644 index 00000000..2db1dc07 --- /dev/null +++ b/assets/minecraft/items/gray_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_dye.json b/assets/minecraft/items/gray_dye.json new file mode 100644 index 00000000..979ccdb5 --- /dev/null +++ b/assets/minecraft/items/gray_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/gray_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_glazed_terracotta.json b/assets/minecraft/items/gray_glazed_terracotta.json new file mode 100644 index 00000000..30de14b8 --- /dev/null +++ b/assets/minecraft/items/gray_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_shulker_box.json b/assets/minecraft/items/gray_shulker_box.json new file mode 100644 index 00000000..50b2e1f6 --- /dev/null +++ b/assets/minecraft/items/gray_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/gray_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_gray" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_stained_glass.json b/assets/minecraft/items/gray_stained_glass.json new file mode 100644 index 00000000..a96dd88e --- /dev/null +++ b/assets/minecraft/items/gray_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_stained_glass_pane.json b/assets/minecraft/items/gray_stained_glass_pane.json new file mode 100644 index 00000000..6443b917 --- /dev/null +++ b/assets/minecraft/items/gray_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/gray_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_terracotta.json b/assets/minecraft/items/gray_terracotta.json new file mode 100644 index 00000000..b0e977fb --- /dev/null +++ b/assets/minecraft/items/gray_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gray_wool.json b/assets/minecraft/items/gray_wool.json new file mode 100644 index 00000000..34a97462 --- /dev/null +++ b/assets/minecraft/items/gray_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/gray_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_banner.json b/assets/minecraft/items/green_banner.json new file mode 100644 index 00000000..22e57d53 --- /dev/null +++ b/assets/minecraft/items/green_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "green" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_bed.json b/assets/minecraft/items/green_bed.json new file mode 100644 index 00000000..7658b76c --- /dev/null +++ b/assets/minecraft/items/green_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/green_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:green" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_bundle.json b/assets/minecraft/items/green_bundle.json new file mode 100644 index 00000000..59bf89dc --- /dev/null +++ b/assets/minecraft/items/green_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/green_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/green_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/green_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/green_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_candle.json b/assets/minecraft/items/green_candle.json new file mode 100644 index 00000000..6a9b8254 --- /dev/null +++ b/assets/minecraft/items/green_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/green_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_carpet.json b/assets/minecraft/items/green_carpet.json new file mode 100644 index 00000000..c1483ea3 --- /dev/null +++ b/assets/minecraft/items/green_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_concrete.json b/assets/minecraft/items/green_concrete.json new file mode 100644 index 00000000..c8a3f219 --- /dev/null +++ b/assets/minecraft/items/green_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_concrete_powder.json b/assets/minecraft/items/green_concrete_powder.json new file mode 100644 index 00000000..28a51e62 --- /dev/null +++ b/assets/minecraft/items/green_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_dye.json b/assets/minecraft/items/green_dye.json new file mode 100644 index 00000000..54496b26 --- /dev/null +++ b/assets/minecraft/items/green_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/green_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_glazed_terracotta.json b/assets/minecraft/items/green_glazed_terracotta.json new file mode 100644 index 00000000..fe562296 --- /dev/null +++ b/assets/minecraft/items/green_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_shulker_box.json b/assets/minecraft/items/green_shulker_box.json new file mode 100644 index 00000000..96edd07a --- /dev/null +++ b/assets/minecraft/items/green_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/green_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_green" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_stained_glass.json b/assets/minecraft/items/green_stained_glass.json new file mode 100644 index 00000000..dfe0c272 --- /dev/null +++ b/assets/minecraft/items/green_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_stained_glass_pane.json b/assets/minecraft/items/green_stained_glass_pane.json new file mode 100644 index 00000000..c1fe5ba1 --- /dev/null +++ b/assets/minecraft/items/green_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/green_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_terracotta.json b/assets/minecraft/items/green_terracotta.json new file mode 100644 index 00000000..b86f8106 --- /dev/null +++ b/assets/minecraft/items/green_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/green_wool.json b/assets/minecraft/items/green_wool.json new file mode 100644 index 00000000..b4ce7e98 --- /dev/null +++ b/assets/minecraft/items/green_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/green_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/grindstone.json b/assets/minecraft/items/grindstone.json new file mode 100644 index 00000000..4c5f45b6 --- /dev/null +++ b/assets/minecraft/items/grindstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/grindstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/guardian_spawn_egg.json b/assets/minecraft/items/guardian_spawn_egg.json new file mode 100644 index 00000000..55e053e1 --- /dev/null +++ b/assets/minecraft/items/guardian_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -10845582 + }, + { + "type": "minecraft:constant", + "value": -950992 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/gunpowder.json b/assets/minecraft/items/gunpowder.json new file mode 100644 index 00000000..5db05cef --- /dev/null +++ b/assets/minecraft/items/gunpowder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/gunpowder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/guster_banner_pattern.json b/assets/minecraft/items/guster_banner_pattern.json new file mode 100644 index 00000000..d4e3fe1e --- /dev/null +++ b/assets/minecraft/items/guster_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/guster_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/guster_pottery_sherd.json b/assets/minecraft/items/guster_pottery_sherd.json new file mode 100644 index 00000000..8de8ad0f --- /dev/null +++ b/assets/minecraft/items/guster_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/guster_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/hanging_roots.json b/assets/minecraft/items/hanging_roots.json new file mode 100644 index 00000000..0c5ef0eb --- /dev/null +++ b/assets/minecraft/items/hanging_roots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/hanging_roots" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/hay_block.json b/assets/minecraft/items/hay_block.json new file mode 100644 index 00000000..da9a175d --- /dev/null +++ b/assets/minecraft/items/hay_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/hay_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/heart_of_the_sea.json b/assets/minecraft/items/heart_of_the_sea.json new file mode 100644 index 00000000..37bab6c8 --- /dev/null +++ b/assets/minecraft/items/heart_of_the_sea.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/heart_of_the_sea" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/heart_pottery_sherd.json b/assets/minecraft/items/heart_pottery_sherd.json new file mode 100644 index 00000000..9c0dc00d --- /dev/null +++ b/assets/minecraft/items/heart_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/heart_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/heartbreak_pottery_sherd.json b/assets/minecraft/items/heartbreak_pottery_sherd.json new file mode 100644 index 00000000..14b4f629 --- /dev/null +++ b/assets/minecraft/items/heartbreak_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/heartbreak_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/heavy_core.json b/assets/minecraft/items/heavy_core.json new file mode 100644 index 00000000..ea03fa09 --- /dev/null +++ b/assets/minecraft/items/heavy_core.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/heavy_core" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/heavy_weighted_pressure_plate.json b/assets/minecraft/items/heavy_weighted_pressure_plate.json new file mode 100644 index 00000000..0cc82a64 --- /dev/null +++ b/assets/minecraft/items/heavy_weighted_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/heavy_weighted_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/hoglin_spawn_egg.json b/assets/minecraft/items/hoglin_spawn_egg.json new file mode 100644 index 00000000..fe7980f4 --- /dev/null +++ b/assets/minecraft/items/hoglin_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -3772843 + }, + { + "type": "minecraft:constant", + "value": -10525596 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/honey_block.json b/assets/minecraft/items/honey_block.json new file mode 100644 index 00000000..1e6e3c2f --- /dev/null +++ b/assets/minecraft/items/honey_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/honey_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/honey_bottle.json b/assets/minecraft/items/honey_bottle.json new file mode 100644 index 00000000..20f6301c --- /dev/null +++ b/assets/minecraft/items/honey_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/honey_bottle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/honeycomb.json b/assets/minecraft/items/honeycomb.json new file mode 100644 index 00000000..35526a0a --- /dev/null +++ b/assets/minecraft/items/honeycomb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/honeycomb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/honeycomb_block.json b/assets/minecraft/items/honeycomb_block.json new file mode 100644 index 00000000..e082e65a --- /dev/null +++ b/assets/minecraft/items/honeycomb_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/honeycomb_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/hopper.json b/assets/minecraft/items/hopper.json new file mode 100644 index 00000000..ff8ebdf9 --- /dev/null +++ b/assets/minecraft/items/hopper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/hopper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/hopper_minecart.json b/assets/minecraft/items/hopper_minecart.json new file mode 100644 index 00000000..b88edb12 --- /dev/null +++ b/assets/minecraft/items/hopper_minecart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/hopper_minecart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/horn_coral.json b/assets/minecraft/items/horn_coral.json new file mode 100644 index 00000000..715b359f --- /dev/null +++ b/assets/minecraft/items/horn_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/horn_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/horn_coral_block.json b/assets/minecraft/items/horn_coral_block.json new file mode 100644 index 00000000..6b986f24 --- /dev/null +++ b/assets/minecraft/items/horn_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/horn_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/horn_coral_fan.json b/assets/minecraft/items/horn_coral_fan.json new file mode 100644 index 00000000..121898de --- /dev/null +++ b/assets/minecraft/items/horn_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/horn_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/horse_spawn_egg.json b/assets/minecraft/items/horse_spawn_egg.json new file mode 100644 index 00000000..89084d09 --- /dev/null +++ b/assets/minecraft/items/horse_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -4153731 + }, + { + "type": "minecraft:constant", + "value": -1121024 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/host_armor_trim_smithing_template.json b/assets/minecraft/items/host_armor_trim_smithing_template.json new file mode 100644 index 00000000..ab6fb59f --- /dev/null +++ b/assets/minecraft/items/host_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/host_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/howl_pottery_sherd.json b/assets/minecraft/items/howl_pottery_sherd.json new file mode 100644 index 00000000..9f6bba7e --- /dev/null +++ b/assets/minecraft/items/howl_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/howl_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/husk_spawn_egg.json b/assets/minecraft/items/husk_spawn_egg.json new file mode 100644 index 00000000..84aa544b --- /dev/null +++ b/assets/minecraft/items/husk_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -8818591 + }, + { + "type": "minecraft:constant", + "value": -1651564 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ice.json b/assets/minecraft/items/ice.json new file mode 100644 index 00000000..b8991e78 --- /dev/null +++ b/assets/minecraft/items/ice.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/ice" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_chiseled_stone_bricks.json b/assets/minecraft/items/infested_chiseled_stone_bricks.json new file mode 100644 index 00000000..0001e670 --- /dev/null +++ b/assets/minecraft/items/infested_chiseled_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_cobblestone.json b/assets/minecraft/items/infested_cobblestone.json new file mode 100644 index 00000000..3bee3d36 --- /dev/null +++ b/assets/minecraft/items/infested_cobblestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cobblestone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_cracked_stone_bricks.json b/assets/minecraft/items/infested_cracked_stone_bricks.json new file mode 100644 index 00000000..0d27cdde --- /dev/null +++ b/assets/minecraft/items/infested_cracked_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cracked_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_deepslate.json b/assets/minecraft/items/infested_deepslate.json new file mode 100644 index 00000000..77255c70 --- /dev/null +++ b/assets/minecraft/items/infested_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/deepslate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_mossy_stone_bricks.json b/assets/minecraft/items/infested_mossy_stone_bricks.json new file mode 100644 index 00000000..431c6631 --- /dev/null +++ b/assets/minecraft/items/infested_mossy_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_stone.json b/assets/minecraft/items/infested_stone.json new file mode 100644 index 00000000..f5c9f2a0 --- /dev/null +++ b/assets/minecraft/items/infested_stone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/infested_stone_bricks.json b/assets/minecraft/items/infested_stone_bricks.json new file mode 100644 index 00000000..a61dd731 --- /dev/null +++ b/assets/minecraft/items/infested_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ink_sac.json b/assets/minecraft/items/ink_sac.json new file mode 100644 index 00000000..2cfcafe9 --- /dev/null +++ b/assets/minecraft/items/ink_sac.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ink_sac" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_axe.json b/assets/minecraft/items/iron_axe.json new file mode 100644 index 00000000..3cd80d73 --- /dev/null +++ b/assets/minecraft/items/iron_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_axe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_bars.json b/assets/minecraft/items/iron_bars.json new file mode 100644 index 00000000..9a06cea9 --- /dev/null +++ b/assets/minecraft/items/iron_bars.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_bars" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_block.json b/assets/minecraft/items/iron_block.json new file mode 100644 index 00000000..36d73e91 --- /dev/null +++ b/assets/minecraft/items/iron_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_boots.json b/assets/minecraft/items/iron_boots.json new file mode 100644 index 00000000..feb3a456 --- /dev/null +++ b/assets/minecraft/items/iron_boots.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/iron_boots" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_chestplate.json b/assets/minecraft/items/iron_chestplate.json new file mode 100644 index 00000000..98230f97 --- /dev/null +++ b/assets/minecraft/items/iron_chestplate.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/iron_chestplate" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_door.json b/assets/minecraft/items/iron_door.json new file mode 100644 index 00000000..39748231 --- /dev/null +++ b/assets/minecraft/items/iron_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_golem_spawn_egg.json b/assets/minecraft/items/iron_golem_spawn_egg.json new file mode 100644 index 00000000..f333d3e6 --- /dev/null +++ b/assets/minecraft/items/iron_golem_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -2372158 + }, + { + "type": "minecraft:constant", + "value": -9133262 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_helmet.json b/assets/minecraft/items/iron_helmet.json new file mode 100644 index 00000000..719098af --- /dev/null +++ b/assets/minecraft/items/iron_helmet.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/iron_helmet" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_hoe.json b/assets/minecraft/items/iron_hoe.json new file mode 100644 index 00000000..fdc1b460 --- /dev/null +++ b/assets/minecraft/items/iron_hoe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_hoe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_horse_armor.json b/assets/minecraft/items/iron_horse_armor.json new file mode 100644 index 00000000..051f1602 --- /dev/null +++ b/assets/minecraft/items/iron_horse_armor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_horse_armor" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_ingot.json b/assets/minecraft/items/iron_ingot.json new file mode 100644 index 00000000..bb2f3925 --- /dev/null +++ b/assets/minecraft/items/iron_ingot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_ingot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_leggings.json b/assets/minecraft/items/iron_leggings.json new file mode 100644 index 00000000..83b7369c --- /dev/null +++ b/assets/minecraft/items/iron_leggings.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/iron_leggings" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_nugget.json b/assets/minecraft/items/iron_nugget.json new file mode 100644 index 00000000..4ec573ee --- /dev/null +++ b/assets/minecraft/items/iron_nugget.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_nugget" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_ore.json b/assets/minecraft/items/iron_ore.json new file mode 100644 index 00000000..44d467e3 --- /dev/null +++ b/assets/minecraft/items/iron_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/iron_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_pickaxe.json b/assets/minecraft/items/iron_pickaxe.json new file mode 100644 index 00000000..5a3f0d1b --- /dev/null +++ b/assets/minecraft/items/iron_pickaxe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_pickaxe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_shovel.json b/assets/minecraft/items/iron_shovel.json new file mode 100644 index 00000000..3ff9689a --- /dev/null +++ b/assets/minecraft/items/iron_shovel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_shovel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_sword.json b/assets/minecraft/items/iron_sword.json new file mode 100644 index 00000000..1bf4bb7d --- /dev/null +++ b/assets/minecraft/items/iron_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/iron_sword" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/iron_trapdoor.json b/assets/minecraft/items/iron_trapdoor.json new file mode 100644 index 00000000..b3de8ef5 --- /dev/null +++ b/assets/minecraft/items/iron_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/iron_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/item_frame.json b/assets/minecraft/items/item_frame.json new file mode 100644 index 00000000..b115f49f --- /dev/null +++ b/assets/minecraft/items/item_frame.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/item_frame" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jack_o_lantern.json b/assets/minecraft/items/jack_o_lantern.json new file mode 100644 index 00000000..0a1e97b4 --- /dev/null +++ b/assets/minecraft/items/jack_o_lantern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jack_o_lantern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jigsaw.json b/assets/minecraft/items/jigsaw.json new file mode 100644 index 00000000..29fc7059 --- /dev/null +++ b/assets/minecraft/items/jigsaw.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jigsaw" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jukebox.json b/assets/minecraft/items/jukebox.json new file mode 100644 index 00000000..1e9a265b --- /dev/null +++ b/assets/minecraft/items/jukebox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jukebox" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_boat.json b/assets/minecraft/items/jungle_boat.json new file mode 100644 index 00000000..2c6c1771 --- /dev/null +++ b/assets/minecraft/items/jungle_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_button.json b/assets/minecraft/items/jungle_button.json new file mode 100644 index 00000000..2085f50f --- /dev/null +++ b/assets/minecraft/items/jungle_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_chest_boat.json b/assets/minecraft/items/jungle_chest_boat.json new file mode 100644 index 00000000..8dec2a7a --- /dev/null +++ b/assets/minecraft/items/jungle_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_door.json b/assets/minecraft/items/jungle_door.json new file mode 100644 index 00000000..28f69bb9 --- /dev/null +++ b/assets/minecraft/items/jungle_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_fence.json b/assets/minecraft/items/jungle_fence.json new file mode 100644 index 00000000..91b461cf --- /dev/null +++ b/assets/minecraft/items/jungle_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_fence_gate.json b/assets/minecraft/items/jungle_fence_gate.json new file mode 100644 index 00000000..a6a07e9e --- /dev/null +++ b/assets/minecraft/items/jungle_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_hanging_sign.json b/assets/minecraft/items/jungle_hanging_sign.json new file mode 100644 index 00000000..bffa44c2 --- /dev/null +++ b/assets/minecraft/items/jungle_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_leaves.json b/assets/minecraft/items/jungle_leaves.json new file mode 100644 index 00000000..8454101d --- /dev/null +++ b/assets/minecraft/items/jungle_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -12012264 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_log.json b/assets/minecraft/items/jungle_log.json new file mode 100644 index 00000000..8298b45b --- /dev/null +++ b/assets/minecraft/items/jungle_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_planks.json b/assets/minecraft/items/jungle_planks.json new file mode 100644 index 00000000..3b34aeba --- /dev/null +++ b/assets/minecraft/items/jungle_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_pressure_plate.json b/assets/minecraft/items/jungle_pressure_plate.json new file mode 100644 index 00000000..11452341 --- /dev/null +++ b/assets/minecraft/items/jungle_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_sapling.json b/assets/minecraft/items/jungle_sapling.json new file mode 100644 index 00000000..1daef334 --- /dev/null +++ b/assets/minecraft/items/jungle_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_sign.json b/assets/minecraft/items/jungle_sign.json new file mode 100644 index 00000000..8821883c --- /dev/null +++ b/assets/minecraft/items/jungle_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_slab.json b/assets/minecraft/items/jungle_slab.json new file mode 100644 index 00000000..4bc7cfa3 --- /dev/null +++ b/assets/minecraft/items/jungle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_stairs.json b/assets/minecraft/items/jungle_stairs.json new file mode 100644 index 00000000..b12a606a --- /dev/null +++ b/assets/minecraft/items/jungle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_trapdoor.json b/assets/minecraft/items/jungle_trapdoor.json new file mode 100644 index 00000000..20a14ec7 --- /dev/null +++ b/assets/minecraft/items/jungle_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/jungle_wood.json b/assets/minecraft/items/jungle_wood.json new file mode 100644 index 00000000..4d79d4eb --- /dev/null +++ b/assets/minecraft/items/jungle_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/jungle_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/kelp.json b/assets/minecraft/items/kelp.json new file mode 100644 index 00000000..f7a11c1b --- /dev/null +++ b/assets/minecraft/items/kelp.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/kelp" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/knowledge_book.json b/assets/minecraft/items/knowledge_book.json new file mode 100644 index 00000000..87e46889 --- /dev/null +++ b/assets/minecraft/items/knowledge_book.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/knowledge_book" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ladder.json b/assets/minecraft/items/ladder.json new file mode 100644 index 00000000..d65cb1d3 --- /dev/null +++ b/assets/minecraft/items/ladder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ladder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lantern.json b/assets/minecraft/items/lantern.json new file mode 100644 index 00000000..05c3c271 --- /dev/null +++ b/assets/minecraft/items/lantern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lantern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lapis_block.json b/assets/minecraft/items/lapis_block.json new file mode 100644 index 00000000..a7e9736b --- /dev/null +++ b/assets/minecraft/items/lapis_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lapis_lazuli.json b/assets/minecraft/items/lapis_lazuli.json new file mode 100644 index 00000000..06707433 --- /dev/null +++ b/assets/minecraft/items/lapis_lazuli.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lapis_lazuli" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lapis_ore.json b/assets/minecraft/items/lapis_ore.json new file mode 100644 index 00000000..4bff6f79 --- /dev/null +++ b/assets/minecraft/items/lapis_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lapis_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/large_amethyst_bud.json b/assets/minecraft/items/large_amethyst_bud.json new file mode 100644 index 00000000..6e205924 --- /dev/null +++ b/assets/minecraft/items/large_amethyst_bud.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/large_amethyst_bud" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/large_fern.json b/assets/minecraft/items/large_fern.json new file mode 100644 index 00000000..6f600341 --- /dev/null +++ b/assets/minecraft/items/large_fern.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/large_fern", + "tints": [ + { + "type": "minecraft:grass", + "downfall": 1.0, + "temperature": 0.5 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lava_bucket.json b/assets/minecraft/items/lava_bucket.json new file mode 100644 index 00000000..5d7f2ff5 --- /dev/null +++ b/assets/minecraft/items/lava_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lava_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lead.json b/assets/minecraft/items/lead.json new file mode 100644 index 00000000..92105d2c --- /dev/null +++ b/assets/minecraft/items/lead.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lead" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/leather.json b/assets/minecraft/items/leather.json new file mode 100644 index 00000000..7e0715b6 --- /dev/null +++ b/assets/minecraft/items/leather.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/leather_boots.json b/assets/minecraft/items/leather_boots.json new file mode 100644 index 00000000..856efcaf --- /dev/null +++ b/assets/minecraft/items/leather_boots.json @@ -0,0 +1,161 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_quartz_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_iron_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_netherite_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_redstone_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_copper_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_gold_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_emerald_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_diamond_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_lapis_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_amethyst_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots_resin_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/leather_boots", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/leather_chestplate.json b/assets/minecraft/items/leather_chestplate.json new file mode 100644 index 00000000..17879477 --- /dev/null +++ b/assets/minecraft/items/leather_chestplate.json @@ -0,0 +1,161 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_quartz_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_iron_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_netherite_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_redstone_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_copper_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_gold_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_emerald_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_diamond_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_lapis_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_amethyst_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate_resin_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/leather_chestplate", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/leather_helmet.json b/assets/minecraft/items/leather_helmet.json new file mode 100644 index 00000000..feecbc7e --- /dev/null +++ b/assets/minecraft/items/leather_helmet.json @@ -0,0 +1,161 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_quartz_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_iron_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_netherite_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_redstone_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_copper_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_gold_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_emerald_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_diamond_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_lapis_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_amethyst_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet_resin_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/leather_helmet", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/leather_horse_armor.json b/assets/minecraft/items/leather_horse_armor.json new file mode 100644 index 00000000..fff10050 --- /dev/null +++ b/assets/minecraft/items/leather_horse_armor.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_horse_armor", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/leather_leggings.json b/assets/minecraft/items/leather_leggings.json new file mode 100644 index 00000000..aea8bce8 --- /dev/null +++ b/assets/minecraft/items/leather_leggings.json @@ -0,0 +1,161 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_quartz_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_iron_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_netherite_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_redstone_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_copper_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_gold_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_emerald_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_diamond_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_lapis_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_amethyst_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings_resin_trim", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/leather_leggings", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lectern.json b/assets/minecraft/items/lectern.json new file mode 100644 index 00000000..12099c3c --- /dev/null +++ b/assets/minecraft/items/lectern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lectern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lever.json b/assets/minecraft/items/lever.json new file mode 100644 index 00000000..10207120 --- /dev/null +++ b/assets/minecraft/items/lever.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lever" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light.json b/assets/minecraft/items/light.json new file mode 100644 index 00000000..01c6f206 --- /dev/null +++ b/assets/minecraft/items/light.json @@ -0,0 +1,125 @@ +{ + "model": { + "type": "minecraft:select", + "block_state_property": "level", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_00" + }, + "when": "0" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_01" + }, + "when": "1" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_02" + }, + "when": "2" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_03" + }, + "when": "3" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_04" + }, + "when": "4" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_05" + }, + "when": "5" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_06" + }, + "when": "6" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_07" + }, + "when": "7" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_08" + }, + "when": "8" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_09" + }, + "when": "9" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_10" + }, + "when": "10" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_11" + }, + "when": "11" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_12" + }, + "when": "12" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_13" + }, + "when": "13" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_14" + }, + "when": "14" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_15" + }, + "when": "15" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/light" + }, + "property": "minecraft:block_state" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_banner.json b/assets/minecraft/items/light_blue_banner.json new file mode 100644 index 00000000..6b64861d --- /dev/null +++ b/assets/minecraft/items/light_blue_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "light_blue" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_bed.json b/assets/minecraft/items/light_blue_bed.json new file mode 100644 index 00000000..f899f0f6 --- /dev/null +++ b/assets/minecraft/items/light_blue_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/light_blue_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:light_blue" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_bundle.json b/assets/minecraft/items/light_blue_bundle.json new file mode 100644 index 00000000..a0c87bd5 --- /dev/null +++ b/assets/minecraft/items/light_blue_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_candle.json b/assets/minecraft/items/light_blue_candle.json new file mode 100644 index 00000000..4e8cf64c --- /dev/null +++ b/assets/minecraft/items/light_blue_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_carpet.json b/assets/minecraft/items/light_blue_carpet.json new file mode 100644 index 00000000..0027a2fe --- /dev/null +++ b/assets/minecraft/items/light_blue_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_concrete.json b/assets/minecraft/items/light_blue_concrete.json new file mode 100644 index 00000000..96f58785 --- /dev/null +++ b/assets/minecraft/items/light_blue_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_concrete_powder.json b/assets/minecraft/items/light_blue_concrete_powder.json new file mode 100644 index 00000000..2ac541e7 --- /dev/null +++ b/assets/minecraft/items/light_blue_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_dye.json b/assets/minecraft/items/light_blue_dye.json new file mode 100644 index 00000000..527ad68a --- /dev/null +++ b/assets/minecraft/items/light_blue_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_glazed_terracotta.json b/assets/minecraft/items/light_blue_glazed_terracotta.json new file mode 100644 index 00000000..1e34edfb --- /dev/null +++ b/assets/minecraft/items/light_blue_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_shulker_box.json b/assets/minecraft/items/light_blue_shulker_box.json new file mode 100644 index 00000000..13e5b120 --- /dev/null +++ b/assets/minecraft/items/light_blue_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/light_blue_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_light_blue" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_stained_glass.json b/assets/minecraft/items/light_blue_stained_glass.json new file mode 100644 index 00000000..84a8a87c --- /dev/null +++ b/assets/minecraft/items/light_blue_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_stained_glass_pane.json b/assets/minecraft/items/light_blue_stained_glass_pane.json new file mode 100644 index 00000000..4d8f4917 --- /dev/null +++ b/assets/minecraft/items/light_blue_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_blue_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_terracotta.json b/assets/minecraft/items/light_blue_terracotta.json new file mode 100644 index 00000000..cf18f080 --- /dev/null +++ b/assets/minecraft/items/light_blue_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_blue_wool.json b/assets/minecraft/items/light_blue_wool.json new file mode 100644 index 00000000..d4dc15c7 --- /dev/null +++ b/assets/minecraft/items/light_blue_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_blue_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_banner.json b/assets/minecraft/items/light_gray_banner.json new file mode 100644 index 00000000..cec38b00 --- /dev/null +++ b/assets/minecraft/items/light_gray_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "light_gray" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_bed.json b/assets/minecraft/items/light_gray_bed.json new file mode 100644 index 00000000..1b2b5fb1 --- /dev/null +++ b/assets/minecraft/items/light_gray_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/light_gray_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:light_gray" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_bundle.json b/assets/minecraft/items/light_gray_bundle.json new file mode 100644 index 00000000..3377fe60 --- /dev/null +++ b/assets/minecraft/items/light_gray_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_candle.json b/assets/minecraft/items/light_gray_candle.json new file mode 100644 index 00000000..324e9b03 --- /dev/null +++ b/assets/minecraft/items/light_gray_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_carpet.json b/assets/minecraft/items/light_gray_carpet.json new file mode 100644 index 00000000..a905889d --- /dev/null +++ b/assets/minecraft/items/light_gray_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_concrete.json b/assets/minecraft/items/light_gray_concrete.json new file mode 100644 index 00000000..52b4e682 --- /dev/null +++ b/assets/minecraft/items/light_gray_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_concrete_powder.json b/assets/minecraft/items/light_gray_concrete_powder.json new file mode 100644 index 00000000..45a334cf --- /dev/null +++ b/assets/minecraft/items/light_gray_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_dye.json b/assets/minecraft/items/light_gray_dye.json new file mode 100644 index 00000000..3d85aebd --- /dev/null +++ b/assets/minecraft/items/light_gray_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_glazed_terracotta.json b/assets/minecraft/items/light_gray_glazed_terracotta.json new file mode 100644 index 00000000..24cd3e3f --- /dev/null +++ b/assets/minecraft/items/light_gray_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_shulker_box.json b/assets/minecraft/items/light_gray_shulker_box.json new file mode 100644 index 00000000..7b2890e7 --- /dev/null +++ b/assets/minecraft/items/light_gray_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/light_gray_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_light_gray" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_stained_glass.json b/assets/minecraft/items/light_gray_stained_glass.json new file mode 100644 index 00000000..f89b0d6c --- /dev/null +++ b/assets/minecraft/items/light_gray_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_stained_glass_pane.json b/assets/minecraft/items/light_gray_stained_glass_pane.json new file mode 100644 index 00000000..7ffb8319 --- /dev/null +++ b/assets/minecraft/items/light_gray_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/light_gray_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_terracotta.json b/assets/minecraft/items/light_gray_terracotta.json new file mode 100644 index 00000000..302d50ee --- /dev/null +++ b/assets/minecraft/items/light_gray_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_gray_wool.json b/assets/minecraft/items/light_gray_wool.json new file mode 100644 index 00000000..ce28c352 --- /dev/null +++ b/assets/minecraft/items/light_gray_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_gray_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/light_weighted_pressure_plate.json b/assets/minecraft/items/light_weighted_pressure_plate.json new file mode 100644 index 00000000..f9fc0130 --- /dev/null +++ b/assets/minecraft/items/light_weighted_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/light_weighted_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lightning_rod.json b/assets/minecraft/items/lightning_rod.json new file mode 100644 index 00000000..318d6e16 --- /dev/null +++ b/assets/minecraft/items/lightning_rod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lightning_rod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lilac.json b/assets/minecraft/items/lilac.json new file mode 100644 index 00000000..9dba13cd --- /dev/null +++ b/assets/minecraft/items/lilac.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lilac" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lily_of_the_valley.json b/assets/minecraft/items/lily_of_the_valley.json new file mode 100644 index 00000000..11152cac --- /dev/null +++ b/assets/minecraft/items/lily_of_the_valley.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lily_of_the_valley" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lily_pad.json b/assets/minecraft/items/lily_pad.json new file mode 100644 index 00000000..0952ad29 --- /dev/null +++ b/assets/minecraft/items/lily_pad.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lily_pad", + "tints": [ + { + "type": "minecraft:constant", + "value": -9321636 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_banner.json b/assets/minecraft/items/lime_banner.json new file mode 100644 index 00000000..7a370b2f --- /dev/null +++ b/assets/minecraft/items/lime_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "lime" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_bed.json b/assets/minecraft/items/lime_bed.json new file mode 100644 index 00000000..b81ee17b --- /dev/null +++ b/assets/minecraft/items/lime_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/lime_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:lime" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_bundle.json b/assets/minecraft/items/lime_bundle.json new file mode 100644 index 00000000..3789b99d --- /dev/null +++ b/assets/minecraft/items/lime_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/lime_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/lime_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/lime_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/lime_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_candle.json b/assets/minecraft/items/lime_candle.json new file mode 100644 index 00000000..edd5748e --- /dev/null +++ b/assets/minecraft/items/lime_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lime_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_carpet.json b/assets/minecraft/items/lime_carpet.json new file mode 100644 index 00000000..3dc877eb --- /dev/null +++ b/assets/minecraft/items/lime_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_concrete.json b/assets/minecraft/items/lime_concrete.json new file mode 100644 index 00000000..832edacb --- /dev/null +++ b/assets/minecraft/items/lime_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_concrete_powder.json b/assets/minecraft/items/lime_concrete_powder.json new file mode 100644 index 00000000..f6e39ed5 --- /dev/null +++ b/assets/minecraft/items/lime_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_dye.json b/assets/minecraft/items/lime_dye.json new file mode 100644 index 00000000..cda6a902 --- /dev/null +++ b/assets/minecraft/items/lime_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lime_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_glazed_terracotta.json b/assets/minecraft/items/lime_glazed_terracotta.json new file mode 100644 index 00000000..897348b8 --- /dev/null +++ b/assets/minecraft/items/lime_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_shulker_box.json b/assets/minecraft/items/lime_shulker_box.json new file mode 100644 index 00000000..2849f5e8 --- /dev/null +++ b/assets/minecraft/items/lime_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/lime_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_lime" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_stained_glass.json b/assets/minecraft/items/lime_stained_glass.json new file mode 100644 index 00000000..c9d1ae30 --- /dev/null +++ b/assets/minecraft/items/lime_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_stained_glass_pane.json b/assets/minecraft/items/lime_stained_glass_pane.json new file mode 100644 index 00000000..24fb9e2b --- /dev/null +++ b/assets/minecraft/items/lime_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lime_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_terracotta.json b/assets/minecraft/items/lime_terracotta.json new file mode 100644 index 00000000..d08631ac --- /dev/null +++ b/assets/minecraft/items/lime_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lime_wool.json b/assets/minecraft/items/lime_wool.json new file mode 100644 index 00000000..8e491844 --- /dev/null +++ b/assets/minecraft/items/lime_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lime_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lingering_potion.json b/assets/minecraft/items/lingering_potion.json new file mode 100644 index 00000000..ec825730 --- /dev/null +++ b/assets/minecraft/items/lingering_potion.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lingering_potion", + "tints": [ + { + "type": "minecraft:potion", + "default": -13083194 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/llama_spawn_egg.json b/assets/minecraft/items/llama_spawn_egg.json new file mode 100644 index 00000000..2ed78189 --- /dev/null +++ b/assets/minecraft/items/llama_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -4153731 + }, + { + "type": "minecraft:constant", + "value": -6725824 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/lodestone.json b/assets/minecraft/items/lodestone.json new file mode 100644 index 00000000..2ac84d41 --- /dev/null +++ b/assets/minecraft/items/lodestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/lodestone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/loom.json b/assets/minecraft/items/loom.json new file mode 100644 index 00000000..a83efb19 --- /dev/null +++ b/assets/minecraft/items/loom.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/loom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mace.json b/assets/minecraft/items/mace.json new file mode 100644 index 00000000..85d3c0ff --- /dev/null +++ b/assets/minecraft/items/mace.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mace" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_banner.json b/assets/minecraft/items/magenta_banner.json new file mode 100644 index 00000000..102dce88 --- /dev/null +++ b/assets/minecraft/items/magenta_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "magenta" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_bed.json b/assets/minecraft/items/magenta_bed.json new file mode 100644 index 00000000..1110f779 --- /dev/null +++ b/assets/minecraft/items/magenta_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/magenta_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:magenta" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_bundle.json b/assets/minecraft/items/magenta_bundle.json new file mode 100644 index 00000000..bb122f28 --- /dev/null +++ b/assets/minecraft/items/magenta_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/magenta_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/magenta_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/magenta_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/magenta_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_candle.json b/assets/minecraft/items/magenta_candle.json new file mode 100644 index 00000000..a21f1835 --- /dev/null +++ b/assets/minecraft/items/magenta_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/magenta_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_carpet.json b/assets/minecraft/items/magenta_carpet.json new file mode 100644 index 00000000..a4a5a70c --- /dev/null +++ b/assets/minecraft/items/magenta_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_concrete.json b/assets/minecraft/items/magenta_concrete.json new file mode 100644 index 00000000..af52449f --- /dev/null +++ b/assets/minecraft/items/magenta_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_concrete_powder.json b/assets/minecraft/items/magenta_concrete_powder.json new file mode 100644 index 00000000..c1e31d1c --- /dev/null +++ b/assets/minecraft/items/magenta_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_dye.json b/assets/minecraft/items/magenta_dye.json new file mode 100644 index 00000000..452fe73e --- /dev/null +++ b/assets/minecraft/items/magenta_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/magenta_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_glazed_terracotta.json b/assets/minecraft/items/magenta_glazed_terracotta.json new file mode 100644 index 00000000..b6bbeda4 --- /dev/null +++ b/assets/minecraft/items/magenta_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_shulker_box.json b/assets/minecraft/items/magenta_shulker_box.json new file mode 100644 index 00000000..32adfdd9 --- /dev/null +++ b/assets/minecraft/items/magenta_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/magenta_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_magenta" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_stained_glass.json b/assets/minecraft/items/magenta_stained_glass.json new file mode 100644 index 00000000..99403a70 --- /dev/null +++ b/assets/minecraft/items/magenta_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_stained_glass_pane.json b/assets/minecraft/items/magenta_stained_glass_pane.json new file mode 100644 index 00000000..a75bc227 --- /dev/null +++ b/assets/minecraft/items/magenta_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/magenta_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_terracotta.json b/assets/minecraft/items/magenta_terracotta.json new file mode 100644 index 00000000..c81a0ac3 --- /dev/null +++ b/assets/minecraft/items/magenta_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magenta_wool.json b/assets/minecraft/items/magenta_wool.json new file mode 100644 index 00000000..e6069e30 --- /dev/null +++ b/assets/minecraft/items/magenta_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magenta_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magma_block.json b/assets/minecraft/items/magma_block.json new file mode 100644 index 00000000..5f1fffb1 --- /dev/null +++ b/assets/minecraft/items/magma_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/magma_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magma_cream.json b/assets/minecraft/items/magma_cream.json new file mode 100644 index 00000000..9cd205e6 --- /dev/null +++ b/assets/minecraft/items/magma_cream.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/magma_cream" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/magma_cube_spawn_egg.json b/assets/minecraft/items/magma_cube_spawn_egg.json new file mode 100644 index 00000000..6dfefdaa --- /dev/null +++ b/assets/minecraft/items/magma_cube_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -13369344 + }, + { + "type": "minecraft:constant", + "value": -197632 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_boat.json b/assets/minecraft/items/mangrove_boat.json new file mode 100644 index 00000000..5a7e4ec0 --- /dev/null +++ b/assets/minecraft/items/mangrove_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_button.json b/assets/minecraft/items/mangrove_button.json new file mode 100644 index 00000000..e94f4437 --- /dev/null +++ b/assets/minecraft/items/mangrove_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_chest_boat.json b/assets/minecraft/items/mangrove_chest_boat.json new file mode 100644 index 00000000..d4dfef22 --- /dev/null +++ b/assets/minecraft/items/mangrove_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_door.json b/assets/minecraft/items/mangrove_door.json new file mode 100644 index 00000000..17a08b7b --- /dev/null +++ b/assets/minecraft/items/mangrove_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_fence.json b/assets/minecraft/items/mangrove_fence.json new file mode 100644 index 00000000..6ae1e870 --- /dev/null +++ b/assets/minecraft/items/mangrove_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_fence_gate.json b/assets/minecraft/items/mangrove_fence_gate.json new file mode 100644 index 00000000..8ddd8108 --- /dev/null +++ b/assets/minecraft/items/mangrove_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_hanging_sign.json b/assets/minecraft/items/mangrove_hanging_sign.json new file mode 100644 index 00000000..5d142a0c --- /dev/null +++ b/assets/minecraft/items/mangrove_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_leaves.json b/assets/minecraft/items/mangrove_leaves.json new file mode 100644 index 00000000..3314939b --- /dev/null +++ b/assets/minecraft/items/mangrove_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -7158200 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_log.json b/assets/minecraft/items/mangrove_log.json new file mode 100644 index 00000000..1c472d67 --- /dev/null +++ b/assets/minecraft/items/mangrove_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_planks.json b/assets/minecraft/items/mangrove_planks.json new file mode 100644 index 00000000..32ac80c9 --- /dev/null +++ b/assets/minecraft/items/mangrove_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_pressure_plate.json b/assets/minecraft/items/mangrove_pressure_plate.json new file mode 100644 index 00000000..df4bef88 --- /dev/null +++ b/assets/minecraft/items/mangrove_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_propagule.json b/assets/minecraft/items/mangrove_propagule.json new file mode 100644 index 00000000..3e671460 --- /dev/null +++ b/assets/minecraft/items/mangrove_propagule.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_propagule" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_roots.json b/assets/minecraft/items/mangrove_roots.json new file mode 100644 index 00000000..c36991de --- /dev/null +++ b/assets/minecraft/items/mangrove_roots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_roots" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_sign.json b/assets/minecraft/items/mangrove_sign.json new file mode 100644 index 00000000..4a0b0dab --- /dev/null +++ b/assets/minecraft/items/mangrove_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_slab.json b/assets/minecraft/items/mangrove_slab.json new file mode 100644 index 00000000..41bd6259 --- /dev/null +++ b/assets/minecraft/items/mangrove_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_stairs.json b/assets/minecraft/items/mangrove_stairs.json new file mode 100644 index 00000000..568063fb --- /dev/null +++ b/assets/minecraft/items/mangrove_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_trapdoor.json b/assets/minecraft/items/mangrove_trapdoor.json new file mode 100644 index 00000000..d771ef8f --- /dev/null +++ b/assets/minecraft/items/mangrove_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mangrove_wood.json b/assets/minecraft/items/mangrove_wood.json new file mode 100644 index 00000000..34fa8bd8 --- /dev/null +++ b/assets/minecraft/items/mangrove_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mangrove_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/map.json b/assets/minecraft/items/map.json new file mode 100644 index 00000000..c10f8ae9 --- /dev/null +++ b/assets/minecraft/items/map.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/map" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/medium_amethyst_bud.json b/assets/minecraft/items/medium_amethyst_bud.json new file mode 100644 index 00000000..c5b27895 --- /dev/null +++ b/assets/minecraft/items/medium_amethyst_bud.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/medium_amethyst_bud" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/melon.json b/assets/minecraft/items/melon.json new file mode 100644 index 00000000..b3d5859e --- /dev/null +++ b/assets/minecraft/items/melon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/melon" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/melon_seeds.json b/assets/minecraft/items/melon_seeds.json new file mode 100644 index 00000000..b9c5cac8 --- /dev/null +++ b/assets/minecraft/items/melon_seeds.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/melon_seeds" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/melon_slice.json b/assets/minecraft/items/melon_slice.json new file mode 100644 index 00000000..4753610a --- /dev/null +++ b/assets/minecraft/items/melon_slice.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/melon_slice" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/milk_bucket.json b/assets/minecraft/items/milk_bucket.json new file mode 100644 index 00000000..36d245a7 --- /dev/null +++ b/assets/minecraft/items/milk_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/milk_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/minecart.json b/assets/minecraft/items/minecart.json new file mode 100644 index 00000000..20ea7d59 --- /dev/null +++ b/assets/minecraft/items/minecart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/minecart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/miner_pottery_sherd.json b/assets/minecraft/items/miner_pottery_sherd.json new file mode 100644 index 00000000..fcf06d74 --- /dev/null +++ b/assets/minecraft/items/miner_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/miner_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mojang_banner_pattern.json b/assets/minecraft/items/mojang_banner_pattern.json new file mode 100644 index 00000000..9ad39b72 --- /dev/null +++ b/assets/minecraft/items/mojang_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mojang_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mooshroom_spawn_egg.json b/assets/minecraft/items/mooshroom_spawn_egg.json new file mode 100644 index 00000000..a8d3720a --- /dev/null +++ b/assets/minecraft/items/mooshroom_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6287600 + }, + { + "type": "minecraft:constant", + "value": -4737097 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/moss_block.json b/assets/minecraft/items/moss_block.json new file mode 100644 index 00000000..f9be9776 --- /dev/null +++ b/assets/minecraft/items/moss_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/moss_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/moss_carpet.json b/assets/minecraft/items/moss_carpet.json new file mode 100644 index 00000000..85b60707 --- /dev/null +++ b/assets/minecraft/items/moss_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/moss_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_cobblestone.json b/assets/minecraft/items/mossy_cobblestone.json new file mode 100644 index 00000000..5aa1d87e --- /dev/null +++ b/assets/minecraft/items/mossy_cobblestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_cobblestone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_cobblestone_slab.json b/assets/minecraft/items/mossy_cobblestone_slab.json new file mode 100644 index 00000000..88f15952 --- /dev/null +++ b/assets/minecraft/items/mossy_cobblestone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_cobblestone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_cobblestone_stairs.json b/assets/minecraft/items/mossy_cobblestone_stairs.json new file mode 100644 index 00000000..3d2ef3c7 --- /dev/null +++ b/assets/minecraft/items/mossy_cobblestone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_cobblestone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_cobblestone_wall.json b/assets/minecraft/items/mossy_cobblestone_wall.json new file mode 100644 index 00000000..7bfeb08f --- /dev/null +++ b/assets/minecraft/items/mossy_cobblestone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_cobblestone_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_stone_brick_slab.json b/assets/minecraft/items/mossy_stone_brick_slab.json new file mode 100644 index 00000000..f6112427 --- /dev/null +++ b/assets/minecraft/items/mossy_stone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_stone_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_stone_brick_stairs.json b/assets/minecraft/items/mossy_stone_brick_stairs.json new file mode 100644 index 00000000..9096a3cf --- /dev/null +++ b/assets/minecraft/items/mossy_stone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_stone_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_stone_brick_wall.json b/assets/minecraft/items/mossy_stone_brick_wall.json new file mode 100644 index 00000000..130e597d --- /dev/null +++ b/assets/minecraft/items/mossy_stone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_stone_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mossy_stone_bricks.json b/assets/minecraft/items/mossy_stone_bricks.json new file mode 100644 index 00000000..431c6631 --- /dev/null +++ b/assets/minecraft/items/mossy_stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mossy_stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mourner_pottery_sherd.json b/assets/minecraft/items/mourner_pottery_sherd.json new file mode 100644 index 00000000..e576fdb7 --- /dev/null +++ b/assets/minecraft/items/mourner_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mourner_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mud.json b/assets/minecraft/items/mud.json new file mode 100644 index 00000000..2ae0c692 --- /dev/null +++ b/assets/minecraft/items/mud.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mud" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mud_brick_slab.json b/assets/minecraft/items/mud_brick_slab.json new file mode 100644 index 00000000..bdd56fd6 --- /dev/null +++ b/assets/minecraft/items/mud_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mud_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mud_brick_stairs.json b/assets/minecraft/items/mud_brick_stairs.json new file mode 100644 index 00000000..09bb42cb --- /dev/null +++ b/assets/minecraft/items/mud_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mud_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mud_brick_wall.json b/assets/minecraft/items/mud_brick_wall.json new file mode 100644 index 00000000..9ec3a54e --- /dev/null +++ b/assets/minecraft/items/mud_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mud_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mud_bricks.json b/assets/minecraft/items/mud_bricks.json new file mode 100644 index 00000000..47c0ec67 --- /dev/null +++ b/assets/minecraft/items/mud_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mud_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/muddy_mangrove_roots.json b/assets/minecraft/items/muddy_mangrove_roots.json new file mode 100644 index 00000000..72ee9ad2 --- /dev/null +++ b/assets/minecraft/items/muddy_mangrove_roots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/muddy_mangrove_roots" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mule_spawn_egg.json b/assets/minecraft/items/mule_spawn_egg.json new file mode 100644 index 00000000..6890dcb2 --- /dev/null +++ b/assets/minecraft/items/mule_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15007232 + }, + { + "type": "minecraft:constant", + "value": -11455715 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mushroom_stem.json b/assets/minecraft/items/mushroom_stem.json new file mode 100644 index 00000000..14ee4df0 --- /dev/null +++ b/assets/minecraft/items/mushroom_stem.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mushroom_stem_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mushroom_stew.json b/assets/minecraft/items/mushroom_stew.json new file mode 100644 index 00000000..7d6fd975 --- /dev/null +++ b/assets/minecraft/items/mushroom_stew.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mushroom_stew" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_11.json b/assets/minecraft/items/music_disc_11.json new file mode 100644 index 00000000..8bf248c7 --- /dev/null +++ b/assets/minecraft/items/music_disc_11.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_11" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_13.json b/assets/minecraft/items/music_disc_13.json new file mode 100644 index 00000000..36859fea --- /dev/null +++ b/assets/minecraft/items/music_disc_13.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_13" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_5.json b/assets/minecraft/items/music_disc_5.json new file mode 100644 index 00000000..2d31f595 --- /dev/null +++ b/assets/minecraft/items/music_disc_5.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_5" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_blocks.json b/assets/minecraft/items/music_disc_blocks.json new file mode 100644 index 00000000..1a8def79 --- /dev/null +++ b/assets/minecraft/items/music_disc_blocks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_blocks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_cat.json b/assets/minecraft/items/music_disc_cat.json new file mode 100644 index 00000000..a4b3d52a --- /dev/null +++ b/assets/minecraft/items/music_disc_cat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_cat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_chirp.json b/assets/minecraft/items/music_disc_chirp.json new file mode 100644 index 00000000..2b5f4c05 --- /dev/null +++ b/assets/minecraft/items/music_disc_chirp.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_chirp" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_creator.json b/assets/minecraft/items/music_disc_creator.json new file mode 100644 index 00000000..de47392e --- /dev/null +++ b/assets/minecraft/items/music_disc_creator.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_creator" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_creator_music_box.json b/assets/minecraft/items/music_disc_creator_music_box.json new file mode 100644 index 00000000..e754f5e6 --- /dev/null +++ b/assets/minecraft/items/music_disc_creator_music_box.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_creator_music_box" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_far.json b/assets/minecraft/items/music_disc_far.json new file mode 100644 index 00000000..e5048148 --- /dev/null +++ b/assets/minecraft/items/music_disc_far.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_far" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_mall.json b/assets/minecraft/items/music_disc_mall.json new file mode 100644 index 00000000..7958c0e5 --- /dev/null +++ b/assets/minecraft/items/music_disc_mall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_mall" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_mellohi.json b/assets/minecraft/items/music_disc_mellohi.json new file mode 100644 index 00000000..bfa88756 --- /dev/null +++ b/assets/minecraft/items/music_disc_mellohi.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_mellohi" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_otherside.json b/assets/minecraft/items/music_disc_otherside.json new file mode 100644 index 00000000..3f07b4a5 --- /dev/null +++ b/assets/minecraft/items/music_disc_otherside.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_otherside" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_pigstep.json b/assets/minecraft/items/music_disc_pigstep.json new file mode 100644 index 00000000..9610fb68 --- /dev/null +++ b/assets/minecraft/items/music_disc_pigstep.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_pigstep" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_precipice.json b/assets/minecraft/items/music_disc_precipice.json new file mode 100644 index 00000000..ce782eda --- /dev/null +++ b/assets/minecraft/items/music_disc_precipice.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_precipice" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_relic.json b/assets/minecraft/items/music_disc_relic.json new file mode 100644 index 00000000..8d951d72 --- /dev/null +++ b/assets/minecraft/items/music_disc_relic.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_relic" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_stal.json b/assets/minecraft/items/music_disc_stal.json new file mode 100644 index 00000000..a8fe9b01 --- /dev/null +++ b/assets/minecraft/items/music_disc_stal.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_stal" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_strad.json b/assets/minecraft/items/music_disc_strad.json new file mode 100644 index 00000000..f33b7491 --- /dev/null +++ b/assets/minecraft/items/music_disc_strad.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_strad" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_wait.json b/assets/minecraft/items/music_disc_wait.json new file mode 100644 index 00000000..b50eb8e8 --- /dev/null +++ b/assets/minecraft/items/music_disc_wait.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_wait" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/music_disc_ward.json b/assets/minecraft/items/music_disc_ward.json new file mode 100644 index 00000000..166692f4 --- /dev/null +++ b/assets/minecraft/items/music_disc_ward.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/music_disc_ward" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mutton.json b/assets/minecraft/items/mutton.json new file mode 100644 index 00000000..5977fce0 --- /dev/null +++ b/assets/minecraft/items/mutton.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mutton" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/mycelium.json b/assets/minecraft/items/mycelium.json new file mode 100644 index 00000000..02add88a --- /dev/null +++ b/assets/minecraft/items/mycelium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/mycelium" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/name_tag.json b/assets/minecraft/items/name_tag.json new file mode 100644 index 00000000..2f2e54ab --- /dev/null +++ b/assets/minecraft/items/name_tag.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/name_tag" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nautilus_shell.json b/assets/minecraft/items/nautilus_shell.json new file mode 100644 index 00000000..9fd2b333 --- /dev/null +++ b/assets/minecraft/items/nautilus_shell.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/nautilus_shell" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_brick.json b/assets/minecraft/items/nether_brick.json new file mode 100644 index 00000000..84e311d4 --- /dev/null +++ b/assets/minecraft/items/nether_brick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/nether_brick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_brick_fence.json b/assets/minecraft/items/nether_brick_fence.json new file mode 100644 index 00000000..11d21cf9 --- /dev/null +++ b/assets/minecraft/items/nether_brick_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_brick_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_brick_slab.json b/assets/minecraft/items/nether_brick_slab.json new file mode 100644 index 00000000..def834b6 --- /dev/null +++ b/assets/minecraft/items/nether_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_brick_stairs.json b/assets/minecraft/items/nether_brick_stairs.json new file mode 100644 index 00000000..0fcd602c --- /dev/null +++ b/assets/minecraft/items/nether_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_brick_wall.json b/assets/minecraft/items/nether_brick_wall.json new file mode 100644 index 00000000..0ca47fc6 --- /dev/null +++ b/assets/minecraft/items/nether_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_bricks.json b/assets/minecraft/items/nether_bricks.json new file mode 100644 index 00000000..04d911a9 --- /dev/null +++ b/assets/minecraft/items/nether_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_gold_ore.json b/assets/minecraft/items/nether_gold_ore.json new file mode 100644 index 00000000..30857376 --- /dev/null +++ b/assets/minecraft/items/nether_gold_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_gold_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_quartz_ore.json b/assets/minecraft/items/nether_quartz_ore.json new file mode 100644 index 00000000..d7d0101d --- /dev/null +++ b/assets/minecraft/items/nether_quartz_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_quartz_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_sprouts.json b/assets/minecraft/items/nether_sprouts.json new file mode 100644 index 00000000..ce1ff8ef --- /dev/null +++ b/assets/minecraft/items/nether_sprouts.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/nether_sprouts" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_star.json b/assets/minecraft/items/nether_star.json new file mode 100644 index 00000000..4539152f --- /dev/null +++ b/assets/minecraft/items/nether_star.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/nether_star" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_wart.json b/assets/minecraft/items/nether_wart.json new file mode 100644 index 00000000..b33c624d --- /dev/null +++ b/assets/minecraft/items/nether_wart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/nether_wart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/nether_wart_block.json b/assets/minecraft/items/nether_wart_block.json new file mode 100644 index 00000000..a5662063 --- /dev/null +++ b/assets/minecraft/items/nether_wart_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/nether_wart_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_axe.json b/assets/minecraft/items/netherite_axe.json new file mode 100644 index 00000000..02f45565 --- /dev/null +++ b/assets/minecraft/items/netherite_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_axe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_block.json b/assets/minecraft/items/netherite_block.json new file mode 100644 index 00000000..e7e8de37 --- /dev/null +++ b/assets/minecraft/items/netherite_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_boots.json b/assets/minecraft/items/netherite_boots.json new file mode 100644 index 00000000..8a7a7adc --- /dev/null +++ b/assets/minecraft/items/netherite_boots.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_boots" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_chestplate.json b/assets/minecraft/items/netherite_chestplate.json new file mode 100644 index 00000000..b338ed22 --- /dev/null +++ b/assets/minecraft/items/netherite_chestplate.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_chestplate" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_helmet.json b/assets/minecraft/items/netherite_helmet.json new file mode 100644 index 00000000..317699f2 --- /dev/null +++ b/assets/minecraft/items/netherite_helmet.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_helmet" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_hoe.json b/assets/minecraft/items/netherite_hoe.json new file mode 100644 index 00000000..67625e1a --- /dev/null +++ b/assets/minecraft/items/netherite_hoe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_hoe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_ingot.json b/assets/minecraft/items/netherite_ingot.json new file mode 100644 index 00000000..3fa2583b --- /dev/null +++ b/assets/minecraft/items/netherite_ingot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_ingot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_leggings.json b/assets/minecraft/items/netherite_leggings.json new file mode 100644 index 00000000..61de5f89 --- /dev/null +++ b/assets/minecraft/items/netherite_leggings.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_leggings" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_pickaxe.json b/assets/minecraft/items/netherite_pickaxe.json new file mode 100644 index 00000000..a5fc75c0 --- /dev/null +++ b/assets/minecraft/items/netherite_pickaxe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_pickaxe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_scrap.json b/assets/minecraft/items/netherite_scrap.json new file mode 100644 index 00000000..0f0b6410 --- /dev/null +++ b/assets/minecraft/items/netherite_scrap.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_scrap" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_shovel.json b/assets/minecraft/items/netherite_shovel.json new file mode 100644 index 00000000..9fd5ed4c --- /dev/null +++ b/assets/minecraft/items/netherite_shovel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_shovel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_sword.json b/assets/minecraft/items/netherite_sword.json new file mode 100644 index 00000000..2cf94a27 --- /dev/null +++ b/assets/minecraft/items/netherite_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_sword" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherite_upgrade_smithing_template.json b/assets/minecraft/items/netherite_upgrade_smithing_template.json new file mode 100644 index 00000000..62915512 --- /dev/null +++ b/assets/minecraft/items/netherite_upgrade_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/netherite_upgrade_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/netherrack.json b/assets/minecraft/items/netherrack.json new file mode 100644 index 00000000..b2062681 --- /dev/null +++ b/assets/minecraft/items/netherrack.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/note_block.json b/assets/minecraft/items/note_block.json new file mode 100644 index 00000000..4b539c04 --- /dev/null +++ b/assets/minecraft/items/note_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/note_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_boat.json b/assets/minecraft/items/oak_boat.json new file mode 100644 index 00000000..f43e94b1 --- /dev/null +++ b/assets/minecraft/items/oak_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_button.json b/assets/minecraft/items/oak_button.json new file mode 100644 index 00000000..d4598590 --- /dev/null +++ b/assets/minecraft/items/oak_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_chest_boat.json b/assets/minecraft/items/oak_chest_boat.json new file mode 100644 index 00000000..26b1d7f8 --- /dev/null +++ b/assets/minecraft/items/oak_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_door.json b/assets/minecraft/items/oak_door.json new file mode 100644 index 00000000..0e80b32d --- /dev/null +++ b/assets/minecraft/items/oak_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_fence.json b/assets/minecraft/items/oak_fence.json new file mode 100644 index 00000000..4f5d32e2 --- /dev/null +++ b/assets/minecraft/items/oak_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_fence_gate.json b/assets/minecraft/items/oak_fence_gate.json new file mode 100644 index 00000000..dc6c743d --- /dev/null +++ b/assets/minecraft/items/oak_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_hanging_sign.json b/assets/minecraft/items/oak_hanging_sign.json new file mode 100644 index 00000000..a19906d1 --- /dev/null +++ b/assets/minecraft/items/oak_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_leaves.json b/assets/minecraft/items/oak_leaves.json new file mode 100644 index 00000000..dde03296 --- /dev/null +++ b/assets/minecraft/items/oak_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -12012264 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_log.json b/assets/minecraft/items/oak_log.json new file mode 100644 index 00000000..81bfdf5c --- /dev/null +++ b/assets/minecraft/items/oak_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_planks.json b/assets/minecraft/items/oak_planks.json new file mode 100644 index 00000000..d04c2f60 --- /dev/null +++ b/assets/minecraft/items/oak_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_pressure_plate.json b/assets/minecraft/items/oak_pressure_plate.json new file mode 100644 index 00000000..c7b3844a --- /dev/null +++ b/assets/minecraft/items/oak_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_sapling.json b/assets/minecraft/items/oak_sapling.json new file mode 100644 index 00000000..5362761a --- /dev/null +++ b/assets/minecraft/items/oak_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_sign.json b/assets/minecraft/items/oak_sign.json new file mode 100644 index 00000000..85ed9a5a --- /dev/null +++ b/assets/minecraft/items/oak_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_slab.json b/assets/minecraft/items/oak_slab.json new file mode 100644 index 00000000..86d648fc --- /dev/null +++ b/assets/minecraft/items/oak_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_stairs.json b/assets/minecraft/items/oak_stairs.json new file mode 100644 index 00000000..4246d24d --- /dev/null +++ b/assets/minecraft/items/oak_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_trapdoor.json b/assets/minecraft/items/oak_trapdoor.json new file mode 100644 index 00000000..f6d7d787 --- /dev/null +++ b/assets/minecraft/items/oak_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oak_wood.json b/assets/minecraft/items/oak_wood.json new file mode 100644 index 00000000..973108be --- /dev/null +++ b/assets/minecraft/items/oak_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oak_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/observer.json b/assets/minecraft/items/observer.json new file mode 100644 index 00000000..3d0d4076 --- /dev/null +++ b/assets/minecraft/items/observer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/observer" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/obsidian.json b/assets/minecraft/items/obsidian.json new file mode 100644 index 00000000..e51b6722 --- /dev/null +++ b/assets/minecraft/items/obsidian.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/obsidian" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ocelot_spawn_egg.json b/assets/minecraft/items/ocelot_spawn_egg.json new file mode 100644 index 00000000..333616e3 --- /dev/null +++ b/assets/minecraft/items/ocelot_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1057155 + }, + { + "type": "minecraft:constant", + "value": -11123660 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ochre_froglight.json b/assets/minecraft/items/ochre_froglight.json new file mode 100644 index 00000000..5bec1c6d --- /dev/null +++ b/assets/minecraft/items/ochre_froglight.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/ochre_froglight" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ominous_bottle.json b/assets/minecraft/items/ominous_bottle.json new file mode 100644 index 00000000..1d68412d --- /dev/null +++ b/assets/minecraft/items/ominous_bottle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ominous_bottle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ominous_trial_key.json b/assets/minecraft/items/ominous_trial_key.json new file mode 100644 index 00000000..fe0ceb49 --- /dev/null +++ b/assets/minecraft/items/ominous_trial_key.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ominous_trial_key" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/open_eyeblossom.json b/assets/minecraft/items/open_eyeblossom.json new file mode 100644 index 00000000..17bad692 --- /dev/null +++ b/assets/minecraft/items/open_eyeblossom.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/open_eyeblossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_banner.json b/assets/minecraft/items/orange_banner.json new file mode 100644 index 00000000..6e7f7e63 --- /dev/null +++ b/assets/minecraft/items/orange_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "orange" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_bed.json b/assets/minecraft/items/orange_bed.json new file mode 100644 index 00000000..a1891083 --- /dev/null +++ b/assets/minecraft/items/orange_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/orange_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:orange" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_bundle.json b/assets/minecraft/items/orange_bundle.json new file mode 100644 index 00000000..5aaf68bf --- /dev/null +++ b/assets/minecraft/items/orange_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/orange_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/orange_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/orange_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/orange_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_candle.json b/assets/minecraft/items/orange_candle.json new file mode 100644 index 00000000..adbc212e --- /dev/null +++ b/assets/minecraft/items/orange_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/orange_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_carpet.json b/assets/minecraft/items/orange_carpet.json new file mode 100644 index 00000000..50aefc69 --- /dev/null +++ b/assets/minecraft/items/orange_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_concrete.json b/assets/minecraft/items/orange_concrete.json new file mode 100644 index 00000000..1fb70fdb --- /dev/null +++ b/assets/minecraft/items/orange_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_concrete_powder.json b/assets/minecraft/items/orange_concrete_powder.json new file mode 100644 index 00000000..7e6c2804 --- /dev/null +++ b/assets/minecraft/items/orange_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_dye.json b/assets/minecraft/items/orange_dye.json new file mode 100644 index 00000000..1e86b016 --- /dev/null +++ b/assets/minecraft/items/orange_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/orange_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_glazed_terracotta.json b/assets/minecraft/items/orange_glazed_terracotta.json new file mode 100644 index 00000000..4bd4509a --- /dev/null +++ b/assets/minecraft/items/orange_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_shulker_box.json b/assets/minecraft/items/orange_shulker_box.json new file mode 100644 index 00000000..1a0b6939 --- /dev/null +++ b/assets/minecraft/items/orange_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/orange_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_orange" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_stained_glass.json b/assets/minecraft/items/orange_stained_glass.json new file mode 100644 index 00000000..12e8dabb --- /dev/null +++ b/assets/minecraft/items/orange_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_stained_glass_pane.json b/assets/minecraft/items/orange_stained_glass_pane.json new file mode 100644 index 00000000..9764dfcd --- /dev/null +++ b/assets/minecraft/items/orange_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/orange_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_terracotta.json b/assets/minecraft/items/orange_terracotta.json new file mode 100644 index 00000000..5d3bdc71 --- /dev/null +++ b/assets/minecraft/items/orange_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_tulip.json b/assets/minecraft/items/orange_tulip.json new file mode 100644 index 00000000..eef0a796 --- /dev/null +++ b/assets/minecraft/items/orange_tulip.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/orange_tulip" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/orange_wool.json b/assets/minecraft/items/orange_wool.json new file mode 100644 index 00000000..46ad8f66 --- /dev/null +++ b/assets/minecraft/items/orange_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/orange_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxeye_daisy.json b/assets/minecraft/items/oxeye_daisy.json new file mode 100644 index 00000000..f0d52842 --- /dev/null +++ b/assets/minecraft/items/oxeye_daisy.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oxeye_daisy" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_chiseled_copper.json b/assets/minecraft/items/oxidized_chiseled_copper.json new file mode 100644 index 00000000..78b7eae0 --- /dev/null +++ b/assets/minecraft/items/oxidized_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_copper.json b/assets/minecraft/items/oxidized_copper.json new file mode 100644 index 00000000..c58b7f62 --- /dev/null +++ b/assets/minecraft/items/oxidized_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_copper_bulb.json b/assets/minecraft/items/oxidized_copper_bulb.json new file mode 100644 index 00000000..aeab2c8c --- /dev/null +++ b/assets/minecraft/items/oxidized_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_copper_door.json b/assets/minecraft/items/oxidized_copper_door.json new file mode 100644 index 00000000..b5cc84d3 --- /dev/null +++ b/assets/minecraft/items/oxidized_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oxidized_copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_copper_grate.json b/assets/minecraft/items/oxidized_copper_grate.json new file mode 100644 index 00000000..90d2a483 --- /dev/null +++ b/assets/minecraft/items/oxidized_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_copper_trapdoor.json b/assets/minecraft/items/oxidized_copper_trapdoor.json new file mode 100644 index 00000000..245f08ef --- /dev/null +++ b/assets/minecraft/items/oxidized_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_cut_copper.json b/assets/minecraft/items/oxidized_cut_copper.json new file mode 100644 index 00000000..ec0748d3 --- /dev/null +++ b/assets/minecraft/items/oxidized_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_cut_copper_slab.json b/assets/minecraft/items/oxidized_cut_copper_slab.json new file mode 100644 index 00000000..3e15eec7 --- /dev/null +++ b/assets/minecraft/items/oxidized_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/oxidized_cut_copper_stairs.json b/assets/minecraft/items/oxidized_cut_copper_stairs.json new file mode 100644 index 00000000..7fd0b7f0 --- /dev/null +++ b/assets/minecraft/items/oxidized_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/packed_ice.json b/assets/minecraft/items/packed_ice.json new file mode 100644 index 00000000..46c3748d --- /dev/null +++ b/assets/minecraft/items/packed_ice.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/packed_ice" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/packed_mud.json b/assets/minecraft/items/packed_mud.json new file mode 100644 index 00000000..a54ca54d --- /dev/null +++ b/assets/minecraft/items/packed_mud.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/packed_mud" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/painting.json b/assets/minecraft/items/painting.json new file mode 100644 index 00000000..dd9e2a15 --- /dev/null +++ b/assets/minecraft/items/painting.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/painting" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_hanging_moss.json b/assets/minecraft/items/pale_hanging_moss.json new file mode 100644 index 00000000..265249e0 --- /dev/null +++ b/assets/minecraft/items/pale_hanging_moss.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_hanging_moss" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_moss_block.json b/assets/minecraft/items/pale_moss_block.json new file mode 100644 index 00000000..75217292 --- /dev/null +++ b/assets/minecraft/items/pale_moss_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_moss_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_moss_carpet.json b/assets/minecraft/items/pale_moss_carpet.json new file mode 100644 index 00000000..bfa7af73 --- /dev/null +++ b/assets/minecraft/items/pale_moss_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_moss_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_boat.json b/assets/minecraft/items/pale_oak_boat.json new file mode 100644 index 00000000..0d44dbde --- /dev/null +++ b/assets/minecraft/items/pale_oak_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_button.json b/assets/minecraft/items/pale_oak_button.json new file mode 100644 index 00000000..e72d3568 --- /dev/null +++ b/assets/minecraft/items/pale_oak_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_chest_boat.json b/assets/minecraft/items/pale_oak_chest_boat.json new file mode 100644 index 00000000..66d0994f --- /dev/null +++ b/assets/minecraft/items/pale_oak_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_door.json b/assets/minecraft/items/pale_oak_door.json new file mode 100644 index 00000000..4d15f541 --- /dev/null +++ b/assets/minecraft/items/pale_oak_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_fence.json b/assets/minecraft/items/pale_oak_fence.json new file mode 100644 index 00000000..43eede12 --- /dev/null +++ b/assets/minecraft/items/pale_oak_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_fence_gate.json b/assets/minecraft/items/pale_oak_fence_gate.json new file mode 100644 index 00000000..0747be1f --- /dev/null +++ b/assets/minecraft/items/pale_oak_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_hanging_sign.json b/assets/minecraft/items/pale_oak_hanging_sign.json new file mode 100644 index 00000000..73fc0441 --- /dev/null +++ b/assets/minecraft/items/pale_oak_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_leaves.json b/assets/minecraft/items/pale_oak_leaves.json new file mode 100644 index 00000000..af0326dc --- /dev/null +++ b/assets/minecraft/items/pale_oak_leaves.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_leaves" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_log.json b/assets/minecraft/items/pale_oak_log.json new file mode 100644 index 00000000..41dcbcd0 --- /dev/null +++ b/assets/minecraft/items/pale_oak_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_planks.json b/assets/minecraft/items/pale_oak_planks.json new file mode 100644 index 00000000..d1312cd9 --- /dev/null +++ b/assets/minecraft/items/pale_oak_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_pressure_plate.json b/assets/minecraft/items/pale_oak_pressure_plate.json new file mode 100644 index 00000000..091b2c66 --- /dev/null +++ b/assets/minecraft/items/pale_oak_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_sapling.json b/assets/minecraft/items/pale_oak_sapling.json new file mode 100644 index 00000000..5005f057 --- /dev/null +++ b/assets/minecraft/items/pale_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_sign.json b/assets/minecraft/items/pale_oak_sign.json new file mode 100644 index 00000000..25efa70d --- /dev/null +++ b/assets/minecraft/items/pale_oak_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_slab.json b/assets/minecraft/items/pale_oak_slab.json new file mode 100644 index 00000000..99c908d1 --- /dev/null +++ b/assets/minecraft/items/pale_oak_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_stairs.json b/assets/minecraft/items/pale_oak_stairs.json new file mode 100644 index 00000000..b35ebc85 --- /dev/null +++ b/assets/minecraft/items/pale_oak_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_trapdoor.json b/assets/minecraft/items/pale_oak_trapdoor.json new file mode 100644 index 00000000..8a0e5436 --- /dev/null +++ b/assets/minecraft/items/pale_oak_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pale_oak_wood.json b/assets/minecraft/items/pale_oak_wood.json new file mode 100644 index 00000000..a9ec9c6a --- /dev/null +++ b/assets/minecraft/items/pale_oak_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pale_oak_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/panda_spawn_egg.json b/assets/minecraft/items/panda_spawn_egg.json new file mode 100644 index 00000000..e3c983d7 --- /dev/null +++ b/assets/minecraft/items/panda_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1579033 + }, + { + "type": "minecraft:constant", + "value": -15000798 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/paper.json b/assets/minecraft/items/paper.json new file mode 100644 index 00000000..981714c0 --- /dev/null +++ b/assets/minecraft/items/paper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/paper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/parrot_spawn_egg.json b/assets/minecraft/items/parrot_spawn_egg.json new file mode 100644 index 00000000..f633eea9 --- /dev/null +++ b/assets/minecraft/items/parrot_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15882485 + }, + { + "type": "minecraft:constant", + "value": -65536 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pearlescent_froglight.json b/assets/minecraft/items/pearlescent_froglight.json new file mode 100644 index 00000000..679130d8 --- /dev/null +++ b/assets/minecraft/items/pearlescent_froglight.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pearlescent_froglight" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/peony.json b/assets/minecraft/items/peony.json new file mode 100644 index 00000000..12cab690 --- /dev/null +++ b/assets/minecraft/items/peony.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/peony" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/petrified_oak_slab.json b/assets/minecraft/items/petrified_oak_slab.json new file mode 100644 index 00000000..40d99661 --- /dev/null +++ b/assets/minecraft/items/petrified_oak_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/petrified_oak_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/phantom_membrane.json b/assets/minecraft/items/phantom_membrane.json new file mode 100644 index 00000000..ff4a666f --- /dev/null +++ b/assets/minecraft/items/phantom_membrane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/phantom_membrane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/phantom_spawn_egg.json b/assets/minecraft/items/phantom_spawn_egg.json new file mode 100644 index 00000000..9ad747b6 --- /dev/null +++ b/assets/minecraft/items/phantom_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -12365430 + }, + { + "type": "minecraft:constant", + "value": -7799040 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pig_spawn_egg.json b/assets/minecraft/items/pig_spawn_egg.json new file mode 100644 index 00000000..d1139e70 --- /dev/null +++ b/assets/minecraft/items/pig_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1006174 + }, + { + "type": "minecraft:constant", + "value": -2399393 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/piglin_banner_pattern.json b/assets/minecraft/items/piglin_banner_pattern.json new file mode 100644 index 00000000..b532de2e --- /dev/null +++ b/assets/minecraft/items/piglin_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/piglin_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/piglin_brute_spawn_egg.json b/assets/minecraft/items/piglin_brute_spawn_egg.json new file mode 100644 index 00000000..68c2002e --- /dev/null +++ b/assets/minecraft/items/piglin_brute_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -10933744 + }, + { + "type": "minecraft:constant", + "value": -396380 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/piglin_head.json b/assets/minecraft/items/piglin_head.json new file mode 100644 index 00000000..e0f69892 --- /dev/null +++ b/assets/minecraft/items/piglin_head.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_skull", + "model": { + "type": "minecraft:head", + "kind": "piglin" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/piglin_spawn_egg.json b/assets/minecraft/items/piglin_spawn_egg.json new file mode 100644 index 00000000..f4976251 --- /dev/null +++ b/assets/minecraft/items/piglin_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6725824 + }, + { + "type": "minecraft:constant", + "value": -396380 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pillager_spawn_egg.json b/assets/minecraft/items/pillager_spawn_egg.json new file mode 100644 index 00000000..0f961d28 --- /dev/null +++ b/assets/minecraft/items/pillager_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -11325642 + }, + { + "type": "minecraft:constant", + "value": -6972517 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_banner.json b/assets/minecraft/items/pink_banner.json new file mode 100644 index 00000000..a86bb332 --- /dev/null +++ b/assets/minecraft/items/pink_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "pink" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_bed.json b/assets/minecraft/items/pink_bed.json new file mode 100644 index 00000000..2e686eb6 --- /dev/null +++ b/assets/minecraft/items/pink_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/pink_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:pink" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_bundle.json b/assets/minecraft/items/pink_bundle.json new file mode 100644 index 00000000..327eb44c --- /dev/null +++ b/assets/minecraft/items/pink_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/pink_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/pink_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/pink_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/pink_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_candle.json b/assets/minecraft/items/pink_candle.json new file mode 100644 index 00000000..d94ae462 --- /dev/null +++ b/assets/minecraft/items/pink_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pink_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_carpet.json b/assets/minecraft/items/pink_carpet.json new file mode 100644 index 00000000..5080cbf2 --- /dev/null +++ b/assets/minecraft/items/pink_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_concrete.json b/assets/minecraft/items/pink_concrete.json new file mode 100644 index 00000000..8d09e8db --- /dev/null +++ b/assets/minecraft/items/pink_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_concrete_powder.json b/assets/minecraft/items/pink_concrete_powder.json new file mode 100644 index 00000000..2b473081 --- /dev/null +++ b/assets/minecraft/items/pink_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_dye.json b/assets/minecraft/items/pink_dye.json new file mode 100644 index 00000000..5c5bb43d --- /dev/null +++ b/assets/minecraft/items/pink_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pink_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_glazed_terracotta.json b/assets/minecraft/items/pink_glazed_terracotta.json new file mode 100644 index 00000000..435ed0aa --- /dev/null +++ b/assets/minecraft/items/pink_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_petals.json b/assets/minecraft/items/pink_petals.json new file mode 100644 index 00000000..3eb460ea --- /dev/null +++ b/assets/minecraft/items/pink_petals.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pink_petals" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_shulker_box.json b/assets/minecraft/items/pink_shulker_box.json new file mode 100644 index 00000000..a1d38042 --- /dev/null +++ b/assets/minecraft/items/pink_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/pink_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_pink" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_stained_glass.json b/assets/minecraft/items/pink_stained_glass.json new file mode 100644 index 00000000..2c8db80f --- /dev/null +++ b/assets/minecraft/items/pink_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_stained_glass_pane.json b/assets/minecraft/items/pink_stained_glass_pane.json new file mode 100644 index 00000000..34b3082e --- /dev/null +++ b/assets/minecraft/items/pink_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pink_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_terracotta.json b/assets/minecraft/items/pink_terracotta.json new file mode 100644 index 00000000..23d6a9fd --- /dev/null +++ b/assets/minecraft/items/pink_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_tulip.json b/assets/minecraft/items/pink_tulip.json new file mode 100644 index 00000000..ebea48cf --- /dev/null +++ b/assets/minecraft/items/pink_tulip.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pink_tulip" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pink_wool.json b/assets/minecraft/items/pink_wool.json new file mode 100644 index 00000000..32027ca6 --- /dev/null +++ b/assets/minecraft/items/pink_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pink_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/piston.json b/assets/minecraft/items/piston.json new file mode 100644 index 00000000..b52126f9 --- /dev/null +++ b/assets/minecraft/items/piston.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/piston_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pitcher_plant.json b/assets/minecraft/items/pitcher_plant.json new file mode 100644 index 00000000..2fc0921f --- /dev/null +++ b/assets/minecraft/items/pitcher_plant.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pitcher_plant" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pitcher_pod.json b/assets/minecraft/items/pitcher_pod.json new file mode 100644 index 00000000..01c2af4b --- /dev/null +++ b/assets/minecraft/items/pitcher_pod.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pitcher_pod" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/player_head.json b/assets/minecraft/items/player_head.json new file mode 100644 index 00000000..2d522d2f --- /dev/null +++ b/assets/minecraft/items/player_head.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_skull", + "model": { + "type": "minecraft:head", + "kind": "player" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/plenty_pottery_sherd.json b/assets/minecraft/items/plenty_pottery_sherd.json new file mode 100644 index 00000000..8517799f --- /dev/null +++ b/assets/minecraft/items/plenty_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/plenty_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/podzol.json b/assets/minecraft/items/podzol.json new file mode 100644 index 00000000..8055b1ee --- /dev/null +++ b/assets/minecraft/items/podzol.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/podzol" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pointed_dripstone.json b/assets/minecraft/items/pointed_dripstone.json new file mode 100644 index 00000000..3570a999 --- /dev/null +++ b/assets/minecraft/items/pointed_dripstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pointed_dripstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/poisonous_potato.json b/assets/minecraft/items/poisonous_potato.json new file mode 100644 index 00000000..8132ca0c --- /dev/null +++ b/assets/minecraft/items/poisonous_potato.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/poisonous_potato" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polar_bear_spawn_egg.json b/assets/minecraft/items/polar_bear_spawn_egg.json new file mode 100644 index 00000000..8beaa452 --- /dev/null +++ b/assets/minecraft/items/polar_bear_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1118498 + }, + { + "type": "minecraft:constant", + "value": -2763059 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_andesite.json b/assets/minecraft/items/polished_andesite.json new file mode 100644 index 00000000..a1cafdbb --- /dev/null +++ b/assets/minecraft/items/polished_andesite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_andesite_slab.json b/assets/minecraft/items/polished_andesite_slab.json new file mode 100644 index 00000000..cf1fc384 --- /dev/null +++ b/assets/minecraft/items/polished_andesite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_andesite_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_andesite_stairs.json b/assets/minecraft/items/polished_andesite_stairs.json new file mode 100644 index 00000000..af67153b --- /dev/null +++ b/assets/minecraft/items/polished_andesite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_andesite_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_basalt.json b/assets/minecraft/items/polished_basalt.json new file mode 100644 index 00000000..2640ce6c --- /dev/null +++ b/assets/minecraft/items/polished_basalt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_basalt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone.json b/assets/minecraft/items/polished_blackstone.json new file mode 100644 index 00000000..181c2944 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_brick_slab.json b/assets/minecraft/items/polished_blackstone_brick_slab.json new file mode 100644 index 00000000..98d72120 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_brick_stairs.json b/assets/minecraft/items/polished_blackstone_brick_stairs.json new file mode 100644 index 00000000..0d2a1ae3 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_brick_wall.json b/assets/minecraft/items/polished_blackstone_brick_wall.json new file mode 100644 index 00000000..d37c3291 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_bricks.json b/assets/minecraft/items/polished_blackstone_bricks.json new file mode 100644 index 00000000..6eb6188b --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_button.json b/assets/minecraft/items/polished_blackstone_button.json new file mode 100644 index 00000000..c9aefed7 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_pressure_plate.json b/assets/minecraft/items/polished_blackstone_pressure_plate.json new file mode 100644 index 00000000..a74aded7 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_slab.json b/assets/minecraft/items/polished_blackstone_slab.json new file mode 100644 index 00000000..2c0d2c3f --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_stairs.json b/assets/minecraft/items/polished_blackstone_stairs.json new file mode 100644 index 00000000..710e5602 --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_blackstone_wall.json b/assets/minecraft/items/polished_blackstone_wall.json new file mode 100644 index 00000000..73a08c4a --- /dev/null +++ b/assets/minecraft/items/polished_blackstone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_blackstone_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_deepslate.json b/assets/minecraft/items/polished_deepslate.json new file mode 100644 index 00000000..3568e7e3 --- /dev/null +++ b/assets/minecraft/items/polished_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_deepslate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_deepslate_slab.json b/assets/minecraft/items/polished_deepslate_slab.json new file mode 100644 index 00000000..9ea8f6a8 --- /dev/null +++ b/assets/minecraft/items/polished_deepslate_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_deepslate_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_deepslate_stairs.json b/assets/minecraft/items/polished_deepslate_stairs.json new file mode 100644 index 00000000..15406e1e --- /dev/null +++ b/assets/minecraft/items/polished_deepslate_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_deepslate_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_deepslate_wall.json b/assets/minecraft/items/polished_deepslate_wall.json new file mode 100644 index 00000000..db3a3db6 --- /dev/null +++ b/assets/minecraft/items/polished_deepslate_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_deepslate_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_diorite.json b/assets/minecraft/items/polished_diorite.json new file mode 100644 index 00000000..4e551060 --- /dev/null +++ b/assets/minecraft/items/polished_diorite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_diorite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_diorite_slab.json b/assets/minecraft/items/polished_diorite_slab.json new file mode 100644 index 00000000..165571e5 --- /dev/null +++ b/assets/minecraft/items/polished_diorite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_diorite_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_diorite_stairs.json b/assets/minecraft/items/polished_diorite_stairs.json new file mode 100644 index 00000000..d01da001 --- /dev/null +++ b/assets/minecraft/items/polished_diorite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_diorite_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_granite.json b/assets/minecraft/items/polished_granite.json new file mode 100644 index 00000000..f563a581 --- /dev/null +++ b/assets/minecraft/items/polished_granite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_granite" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_granite_slab.json b/assets/minecraft/items/polished_granite_slab.json new file mode 100644 index 00000000..cf284e3c --- /dev/null +++ b/assets/minecraft/items/polished_granite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_granite_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_granite_stairs.json b/assets/minecraft/items/polished_granite_stairs.json new file mode 100644 index 00000000..faf07419 --- /dev/null +++ b/assets/minecraft/items/polished_granite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_granite_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_tuff.json b/assets/minecraft/items/polished_tuff.json new file mode 100644 index 00000000..3561f965 --- /dev/null +++ b/assets/minecraft/items/polished_tuff.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_tuff" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_tuff_slab.json b/assets/minecraft/items/polished_tuff_slab.json new file mode 100644 index 00000000..777eb8f3 --- /dev/null +++ b/assets/minecraft/items/polished_tuff_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_tuff_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_tuff_stairs.json b/assets/minecraft/items/polished_tuff_stairs.json new file mode 100644 index 00000000..ed2f5ef8 --- /dev/null +++ b/assets/minecraft/items/polished_tuff_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_tuff_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/polished_tuff_wall.json b/assets/minecraft/items/polished_tuff_wall.json new file mode 100644 index 00000000..b0ea8fe2 --- /dev/null +++ b/assets/minecraft/items/polished_tuff_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/polished_tuff_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/popped_chorus_fruit.json b/assets/minecraft/items/popped_chorus_fruit.json new file mode 100644 index 00000000..d8b0732f --- /dev/null +++ b/assets/minecraft/items/popped_chorus_fruit.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/popped_chorus_fruit" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/poppy.json b/assets/minecraft/items/poppy.json new file mode 100644 index 00000000..19cc1bc5 --- /dev/null +++ b/assets/minecraft/items/poppy.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/poppy" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/porkchop.json b/assets/minecraft/items/porkchop.json new file mode 100644 index 00000000..f820d9ec --- /dev/null +++ b/assets/minecraft/items/porkchop.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/porkchop" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/potato.json b/assets/minecraft/items/potato.json new file mode 100644 index 00000000..6926e16b --- /dev/null +++ b/assets/minecraft/items/potato.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/potato" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/potion.json b/assets/minecraft/items/potion.json new file mode 100644 index 00000000..3f0b2e34 --- /dev/null +++ b/assets/minecraft/items/potion.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/potion", + "tints": [ + { + "type": "minecraft:potion", + "default": -13083194 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/powder_snow_bucket.json b/assets/minecraft/items/powder_snow_bucket.json new file mode 100644 index 00000000..c7560238 --- /dev/null +++ b/assets/minecraft/items/powder_snow_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/powder_snow_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/powered_rail.json b/assets/minecraft/items/powered_rail.json new file mode 100644 index 00000000..ae1ae8a3 --- /dev/null +++ b/assets/minecraft/items/powered_rail.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/powered_rail" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine.json b/assets/minecraft/items/prismarine.json new file mode 100644 index 00000000..8b8df628 --- /dev/null +++ b/assets/minecraft/items/prismarine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_brick_slab.json b/assets/minecraft/items/prismarine_brick_slab.json new file mode 100644 index 00000000..4cfe1b8c --- /dev/null +++ b/assets/minecraft/items/prismarine_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_brick_stairs.json b/assets/minecraft/items/prismarine_brick_stairs.json new file mode 100644 index 00000000..cc00e618 --- /dev/null +++ b/assets/minecraft/items/prismarine_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_bricks.json b/assets/minecraft/items/prismarine_bricks.json new file mode 100644 index 00000000..ea827dc7 --- /dev/null +++ b/assets/minecraft/items/prismarine_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_crystals.json b/assets/minecraft/items/prismarine_crystals.json new file mode 100644 index 00000000..65b82683 --- /dev/null +++ b/assets/minecraft/items/prismarine_crystals.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/prismarine_crystals" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_shard.json b/assets/minecraft/items/prismarine_shard.json new file mode 100644 index 00000000..62e7ca53 --- /dev/null +++ b/assets/minecraft/items/prismarine_shard.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/prismarine_shard" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_slab.json b/assets/minecraft/items/prismarine_slab.json new file mode 100644 index 00000000..43acaf5a --- /dev/null +++ b/assets/minecraft/items/prismarine_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_stairs.json b/assets/minecraft/items/prismarine_stairs.json new file mode 100644 index 00000000..251ebd31 --- /dev/null +++ b/assets/minecraft/items/prismarine_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prismarine_wall.json b/assets/minecraft/items/prismarine_wall.json new file mode 100644 index 00000000..2a8e95ec --- /dev/null +++ b/assets/minecraft/items/prismarine_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/prismarine_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/prize_pottery_sherd.json b/assets/minecraft/items/prize_pottery_sherd.json new file mode 100644 index 00000000..8caaa558 --- /dev/null +++ b/assets/minecraft/items/prize_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/prize_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pufferfish.json b/assets/minecraft/items/pufferfish.json new file mode 100644 index 00000000..c509473e --- /dev/null +++ b/assets/minecraft/items/pufferfish.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pufferfish" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pufferfish_bucket.json b/assets/minecraft/items/pufferfish_bucket.json new file mode 100644 index 00000000..a347a027 --- /dev/null +++ b/assets/minecraft/items/pufferfish_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pufferfish_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pufferfish_spawn_egg.json b/assets/minecraft/items/pufferfish_spawn_egg.json new file mode 100644 index 00000000..bd486127 --- /dev/null +++ b/assets/minecraft/items/pufferfish_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -609791 + }, + { + "type": "minecraft:constant", + "value": -13122574 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pumpkin.json b/assets/minecraft/items/pumpkin.json new file mode 100644 index 00000000..0faeffcb --- /dev/null +++ b/assets/minecraft/items/pumpkin.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/pumpkin" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pumpkin_pie.json b/assets/minecraft/items/pumpkin_pie.json new file mode 100644 index 00000000..82d1d8d4 --- /dev/null +++ b/assets/minecraft/items/pumpkin_pie.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pumpkin_pie" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/pumpkin_seeds.json b/assets/minecraft/items/pumpkin_seeds.json new file mode 100644 index 00000000..27eb2b18 --- /dev/null +++ b/assets/minecraft/items/pumpkin_seeds.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pumpkin_seeds" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_banner.json b/assets/minecraft/items/purple_banner.json new file mode 100644 index 00000000..a632445d --- /dev/null +++ b/assets/minecraft/items/purple_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "purple" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_bed.json b/assets/minecraft/items/purple_bed.json new file mode 100644 index 00000000..ce125e53 --- /dev/null +++ b/assets/minecraft/items/purple_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/purple_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:purple" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_bundle.json b/assets/minecraft/items/purple_bundle.json new file mode 100644 index 00000000..f7f9d18e --- /dev/null +++ b/assets/minecraft/items/purple_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/purple_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/purple_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/purple_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/purple_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_candle.json b/assets/minecraft/items/purple_candle.json new file mode 100644 index 00000000..c7e507f7 --- /dev/null +++ b/assets/minecraft/items/purple_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/purple_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_carpet.json b/assets/minecraft/items/purple_carpet.json new file mode 100644 index 00000000..3f09aedc --- /dev/null +++ b/assets/minecraft/items/purple_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_concrete.json b/assets/minecraft/items/purple_concrete.json new file mode 100644 index 00000000..09e02e78 --- /dev/null +++ b/assets/minecraft/items/purple_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_concrete_powder.json b/assets/minecraft/items/purple_concrete_powder.json new file mode 100644 index 00000000..ba610873 --- /dev/null +++ b/assets/minecraft/items/purple_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_dye.json b/assets/minecraft/items/purple_dye.json new file mode 100644 index 00000000..4e714a5d --- /dev/null +++ b/assets/minecraft/items/purple_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/purple_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_glazed_terracotta.json b/assets/minecraft/items/purple_glazed_terracotta.json new file mode 100644 index 00000000..8d4c892a --- /dev/null +++ b/assets/minecraft/items/purple_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_shulker_box.json b/assets/minecraft/items/purple_shulker_box.json new file mode 100644 index 00000000..3123f271 --- /dev/null +++ b/assets/minecraft/items/purple_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/purple_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_purple" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_stained_glass.json b/assets/minecraft/items/purple_stained_glass.json new file mode 100644 index 00000000..9ee1a1a8 --- /dev/null +++ b/assets/minecraft/items/purple_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_stained_glass_pane.json b/assets/minecraft/items/purple_stained_glass_pane.json new file mode 100644 index 00000000..8c0ca721 --- /dev/null +++ b/assets/minecraft/items/purple_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/purple_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_terracotta.json b/assets/minecraft/items/purple_terracotta.json new file mode 100644 index 00000000..b8f12da0 --- /dev/null +++ b/assets/minecraft/items/purple_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purple_wool.json b/assets/minecraft/items/purple_wool.json new file mode 100644 index 00000000..10a06042 --- /dev/null +++ b/assets/minecraft/items/purple_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purple_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purpur_block.json b/assets/minecraft/items/purpur_block.json new file mode 100644 index 00000000..869e90fd --- /dev/null +++ b/assets/minecraft/items/purpur_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purpur_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purpur_pillar.json b/assets/minecraft/items/purpur_pillar.json new file mode 100644 index 00000000..1403ba77 --- /dev/null +++ b/assets/minecraft/items/purpur_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purpur_pillar" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purpur_slab.json b/assets/minecraft/items/purpur_slab.json new file mode 100644 index 00000000..d8cfeb97 --- /dev/null +++ b/assets/minecraft/items/purpur_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purpur_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/purpur_stairs.json b/assets/minecraft/items/purpur_stairs.json new file mode 100644 index 00000000..4e408c25 --- /dev/null +++ b/assets/minecraft/items/purpur_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/purpur_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/quartz.json b/assets/minecraft/items/quartz.json new file mode 100644 index 00000000..bb72ef57 --- /dev/null +++ b/assets/minecraft/items/quartz.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/quartz" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/quartz_block.json b/assets/minecraft/items/quartz_block.json new file mode 100644 index 00000000..f14834d0 --- /dev/null +++ b/assets/minecraft/items/quartz_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/quartz_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/quartz_bricks.json b/assets/minecraft/items/quartz_bricks.json new file mode 100644 index 00000000..5b00e170 --- /dev/null +++ b/assets/minecraft/items/quartz_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/quartz_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/quartz_pillar.json b/assets/minecraft/items/quartz_pillar.json new file mode 100644 index 00000000..7c760921 --- /dev/null +++ b/assets/minecraft/items/quartz_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/quartz_pillar" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/quartz_slab.json b/assets/minecraft/items/quartz_slab.json new file mode 100644 index 00000000..5d889db0 --- /dev/null +++ b/assets/minecraft/items/quartz_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/quartz_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/quartz_stairs.json b/assets/minecraft/items/quartz_stairs.json new file mode 100644 index 00000000..355f101e --- /dev/null +++ b/assets/minecraft/items/quartz_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/quartz_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rabbit.json b/assets/minecraft/items/rabbit.json new file mode 100644 index 00000000..a65a3583 --- /dev/null +++ b/assets/minecraft/items/rabbit.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rabbit" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rabbit_foot.json b/assets/minecraft/items/rabbit_foot.json new file mode 100644 index 00000000..65a4362e --- /dev/null +++ b/assets/minecraft/items/rabbit_foot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rabbit_foot" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rabbit_hide.json b/assets/minecraft/items/rabbit_hide.json new file mode 100644 index 00000000..b125735a --- /dev/null +++ b/assets/minecraft/items/rabbit_hide.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rabbit_hide" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rabbit_spawn_egg.json b/assets/minecraft/items/rabbit_spawn_egg.json new file mode 100644 index 00000000..499cf291 --- /dev/null +++ b/assets/minecraft/items/rabbit_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6725824 + }, + { + "type": "minecraft:constant", + "value": -9222095 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rabbit_stew.json b/assets/minecraft/items/rabbit_stew.json new file mode 100644 index 00000000..3d01e38e --- /dev/null +++ b/assets/minecraft/items/rabbit_stew.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rabbit_stew" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rail.json b/assets/minecraft/items/rail.json new file mode 100644 index 00000000..79de80b3 --- /dev/null +++ b/assets/minecraft/items/rail.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rail" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raiser_armor_trim_smithing_template.json b/assets/minecraft/items/raiser_armor_trim_smithing_template.json new file mode 100644 index 00000000..9b78cc73 --- /dev/null +++ b/assets/minecraft/items/raiser_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/raiser_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ravager_spawn_egg.json b/assets/minecraft/items/ravager_spawn_egg.json new file mode 100644 index 00000000..caa7b1c8 --- /dev/null +++ b/assets/minecraft/items/ravager_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -9079696 + }, + { + "type": "minecraft:constant", + "value": -10792887 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raw_copper.json b/assets/minecraft/items/raw_copper.json new file mode 100644 index 00000000..1acac00a --- /dev/null +++ b/assets/minecraft/items/raw_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/raw_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raw_copper_block.json b/assets/minecraft/items/raw_copper_block.json new file mode 100644 index 00000000..74e4268c --- /dev/null +++ b/assets/minecraft/items/raw_copper_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/raw_copper_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raw_gold.json b/assets/minecraft/items/raw_gold.json new file mode 100644 index 00000000..c409fb4b --- /dev/null +++ b/assets/minecraft/items/raw_gold.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/raw_gold" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raw_gold_block.json b/assets/minecraft/items/raw_gold_block.json new file mode 100644 index 00000000..8636565f --- /dev/null +++ b/assets/minecraft/items/raw_gold_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/raw_gold_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raw_iron.json b/assets/minecraft/items/raw_iron.json new file mode 100644 index 00000000..0b5b2178 --- /dev/null +++ b/assets/minecraft/items/raw_iron.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/raw_iron" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/raw_iron_block.json b/assets/minecraft/items/raw_iron_block.json new file mode 100644 index 00000000..368a35a7 --- /dev/null +++ b/assets/minecraft/items/raw_iron_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/raw_iron_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/recovery_compass.json b/assets/minecraft/items/recovery_compass.json new file mode 100644 index 00000000..676d0366 --- /dev/null +++ b/assets/minecraft/items/recovery_compass.json @@ -0,0 +1,241 @@ +{ + "model": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_16" + }, + "threshold": 0.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_17" + }, + "threshold": 0.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_18" + }, + "threshold": 1.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_19" + }, + "threshold": 2.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_20" + }, + "threshold": 3.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_21" + }, + "threshold": 4.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_22" + }, + "threshold": 5.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_23" + }, + "threshold": 6.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_24" + }, + "threshold": 7.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_25" + }, + "threshold": 8.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_26" + }, + "threshold": 9.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_27" + }, + "threshold": 10.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_28" + }, + "threshold": 11.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_29" + }, + "threshold": 12.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_30" + }, + "threshold": 13.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_31" + }, + "threshold": 14.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_00" + }, + "threshold": 15.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_01" + }, + "threshold": 16.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_02" + }, + "threshold": 17.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_03" + }, + "threshold": 18.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_04" + }, + "threshold": 19.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_05" + }, + "threshold": 20.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_06" + }, + "threshold": 21.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_07" + }, + "threshold": 22.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_08" + }, + "threshold": 23.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_09" + }, + "threshold": 24.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_10" + }, + "threshold": 25.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_11" + }, + "threshold": 26.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_12" + }, + "threshold": 27.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_13" + }, + "threshold": 28.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_14" + }, + "threshold": 29.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_15" + }, + "threshold": 30.5 + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/recovery_compass_16" + }, + "threshold": 31.5 + } + ], + "property": "minecraft:compass", + "scale": 32.0, + "target": "recovery" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_banner.json b/assets/minecraft/items/red_banner.json new file mode 100644 index 00000000..80cdff09 --- /dev/null +++ b/assets/minecraft/items/red_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "red" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_bed.json b/assets/minecraft/items/red_bed.json new file mode 100644 index 00000000..9b772b37 --- /dev/null +++ b/assets/minecraft/items/red_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/red_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:red" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_bundle.json b/assets/minecraft/items/red_bundle.json new file mode 100644 index 00000000..811afd56 --- /dev/null +++ b/assets/minecraft/items/red_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/red_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/red_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/red_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/red_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_candle.json b/assets/minecraft/items/red_candle.json new file mode 100644 index 00000000..31e3952b --- /dev/null +++ b/assets/minecraft/items/red_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/red_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_carpet.json b/assets/minecraft/items/red_carpet.json new file mode 100644 index 00000000..c58019db --- /dev/null +++ b/assets/minecraft/items/red_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_concrete.json b/assets/minecraft/items/red_concrete.json new file mode 100644 index 00000000..756a4cea --- /dev/null +++ b/assets/minecraft/items/red_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_concrete_powder.json b/assets/minecraft/items/red_concrete_powder.json new file mode 100644 index 00000000..2f2b4885 --- /dev/null +++ b/assets/minecraft/items/red_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_dye.json b/assets/minecraft/items/red_dye.json new file mode 100644 index 00000000..2acc2762 --- /dev/null +++ b/assets/minecraft/items/red_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/red_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_glazed_terracotta.json b/assets/minecraft/items/red_glazed_terracotta.json new file mode 100644 index 00000000..b2ca9220 --- /dev/null +++ b/assets/minecraft/items/red_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_mushroom.json b/assets/minecraft/items/red_mushroom.json new file mode 100644 index 00000000..ede14929 --- /dev/null +++ b/assets/minecraft/items/red_mushroom.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/red_mushroom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_mushroom_block.json b/assets/minecraft/items/red_mushroom_block.json new file mode 100644 index 00000000..d7b80456 --- /dev/null +++ b/assets/minecraft/items/red_mushroom_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_mushroom_block_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_nether_brick_slab.json b/assets/minecraft/items/red_nether_brick_slab.json new file mode 100644 index 00000000..084cc145 --- /dev/null +++ b/assets/minecraft/items/red_nether_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_nether_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_nether_brick_stairs.json b/assets/minecraft/items/red_nether_brick_stairs.json new file mode 100644 index 00000000..4d655dbf --- /dev/null +++ b/assets/minecraft/items/red_nether_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_nether_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_nether_brick_wall.json b/assets/minecraft/items/red_nether_brick_wall.json new file mode 100644 index 00000000..d5a4313a --- /dev/null +++ b/assets/minecraft/items/red_nether_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_nether_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_nether_bricks.json b/assets/minecraft/items/red_nether_bricks.json new file mode 100644 index 00000000..4bc5ad7d --- /dev/null +++ b/assets/minecraft/items/red_nether_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_nether_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_sand.json b/assets/minecraft/items/red_sand.json new file mode 100644 index 00000000..18a6982d --- /dev/null +++ b/assets/minecraft/items/red_sand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_sand" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_sandstone.json b/assets/minecraft/items/red_sandstone.json new file mode 100644 index 00000000..99efe2f3 --- /dev/null +++ b/assets/minecraft/items/red_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_sandstone_slab.json b/assets/minecraft/items/red_sandstone_slab.json new file mode 100644 index 00000000..3ab55118 --- /dev/null +++ b/assets/minecraft/items/red_sandstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_sandstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_sandstone_stairs.json b/assets/minecraft/items/red_sandstone_stairs.json new file mode 100644 index 00000000..f26d3ed8 --- /dev/null +++ b/assets/minecraft/items/red_sandstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_sandstone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_sandstone_wall.json b/assets/minecraft/items/red_sandstone_wall.json new file mode 100644 index 00000000..52cb9c27 --- /dev/null +++ b/assets/minecraft/items/red_sandstone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_sandstone_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_shulker_box.json b/assets/minecraft/items/red_shulker_box.json new file mode 100644 index 00000000..41278f48 --- /dev/null +++ b/assets/minecraft/items/red_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/red_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_red" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_stained_glass.json b/assets/minecraft/items/red_stained_glass.json new file mode 100644 index 00000000..8b567b7a --- /dev/null +++ b/assets/minecraft/items/red_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_stained_glass_pane.json b/assets/minecraft/items/red_stained_glass_pane.json new file mode 100644 index 00000000..d65611ec --- /dev/null +++ b/assets/minecraft/items/red_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/red_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_terracotta.json b/assets/minecraft/items/red_terracotta.json new file mode 100644 index 00000000..4b994092 --- /dev/null +++ b/assets/minecraft/items/red_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_tulip.json b/assets/minecraft/items/red_tulip.json new file mode 100644 index 00000000..dc62d0b8 --- /dev/null +++ b/assets/minecraft/items/red_tulip.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/red_tulip" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/red_wool.json b/assets/minecraft/items/red_wool.json new file mode 100644 index 00000000..310df92d --- /dev/null +++ b/assets/minecraft/items/red_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/red_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/redstone.json b/assets/minecraft/items/redstone.json new file mode 100644 index 00000000..d09f3de6 --- /dev/null +++ b/assets/minecraft/items/redstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/redstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/redstone_block.json b/assets/minecraft/items/redstone_block.json new file mode 100644 index 00000000..20d75a80 --- /dev/null +++ b/assets/minecraft/items/redstone_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/redstone_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/redstone_lamp.json b/assets/minecraft/items/redstone_lamp.json new file mode 100644 index 00000000..4edf1ab0 --- /dev/null +++ b/assets/minecraft/items/redstone_lamp.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/redstone_lamp" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/redstone_ore.json b/assets/minecraft/items/redstone_ore.json new file mode 100644 index 00000000..a6a5f3e3 --- /dev/null +++ b/assets/minecraft/items/redstone_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/redstone_ore" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/redstone_torch.json b/assets/minecraft/items/redstone_torch.json new file mode 100644 index 00000000..45deab45 --- /dev/null +++ b/assets/minecraft/items/redstone_torch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/redstone_torch" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/reinforced_deepslate.json b/assets/minecraft/items/reinforced_deepslate.json new file mode 100644 index 00000000..7e8fd3ec --- /dev/null +++ b/assets/minecraft/items/reinforced_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/reinforced_deepslate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/repeater.json b/assets/minecraft/items/repeater.json new file mode 100644 index 00000000..b0446ebe --- /dev/null +++ b/assets/minecraft/items/repeater.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/repeater" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/repeating_command_block.json b/assets/minecraft/items/repeating_command_block.json new file mode 100644 index 00000000..40457941 --- /dev/null +++ b/assets/minecraft/items/repeating_command_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/repeating_command_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_block.json b/assets/minecraft/items/resin_block.json new file mode 100644 index 00000000..d50dedec --- /dev/null +++ b/assets/minecraft/items/resin_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/resin_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_brick.json b/assets/minecraft/items/resin_brick.json new file mode 100644 index 00000000..3443227b --- /dev/null +++ b/assets/minecraft/items/resin_brick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/resin_brick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_brick_slab.json b/assets/minecraft/items/resin_brick_slab.json new file mode 100644 index 00000000..e45cebb3 --- /dev/null +++ b/assets/minecraft/items/resin_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/resin_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_brick_stairs.json b/assets/minecraft/items/resin_brick_stairs.json new file mode 100644 index 00000000..2ea91f79 --- /dev/null +++ b/assets/minecraft/items/resin_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/resin_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_brick_wall.json b/assets/minecraft/items/resin_brick_wall.json new file mode 100644 index 00000000..36d28477 --- /dev/null +++ b/assets/minecraft/items/resin_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/resin_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_bricks.json b/assets/minecraft/items/resin_bricks.json new file mode 100644 index 00000000..659164ae --- /dev/null +++ b/assets/minecraft/items/resin_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/resin_clump.json b/assets/minecraft/items/resin_clump.json new file mode 100644 index 00000000..566ea523 --- /dev/null +++ b/assets/minecraft/items/resin_clump.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/resin_clump" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/respawn_anchor.json b/assets/minecraft/items/respawn_anchor.json new file mode 100644 index 00000000..4d9f0c72 --- /dev/null +++ b/assets/minecraft/items/respawn_anchor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/respawn_anchor_0" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rib_armor_trim_smithing_template.json b/assets/minecraft/items/rib_armor_trim_smithing_template.json new file mode 100644 index 00000000..94267177 --- /dev/null +++ b/assets/minecraft/items/rib_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rib_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rooted_dirt.json b/assets/minecraft/items/rooted_dirt.json new file mode 100644 index 00000000..c881387e --- /dev/null +++ b/assets/minecraft/items/rooted_dirt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/rooted_dirt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rose_bush.json b/assets/minecraft/items/rose_bush.json new file mode 100644 index 00000000..2f7fcbb6 --- /dev/null +++ b/assets/minecraft/items/rose_bush.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rose_bush" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/rotten_flesh.json b/assets/minecraft/items/rotten_flesh.json new file mode 100644 index 00000000..a589c2af --- /dev/null +++ b/assets/minecraft/items/rotten_flesh.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/rotten_flesh" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/saddle.json b/assets/minecraft/items/saddle.json new file mode 100644 index 00000000..7fd03e7a --- /dev/null +++ b/assets/minecraft/items/saddle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/saddle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/salmon.json b/assets/minecraft/items/salmon.json new file mode 100644 index 00000000..ad1ff962 --- /dev/null +++ b/assets/minecraft/items/salmon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/salmon" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/salmon_bucket.json b/assets/minecraft/items/salmon_bucket.json new file mode 100644 index 00000000..b5c3af3d --- /dev/null +++ b/assets/minecraft/items/salmon_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/salmon_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/salmon_spawn_egg.json b/assets/minecraft/items/salmon_spawn_egg.json new file mode 100644 index 00000000..bd0fd4bb --- /dev/null +++ b/assets/minecraft/items/salmon_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6287600 + }, + { + "type": "minecraft:constant", + "value": -15825804 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sand.json b/assets/minecraft/items/sand.json new file mode 100644 index 00000000..0d053d91 --- /dev/null +++ b/assets/minecraft/items/sand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sand" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sandstone.json b/assets/minecraft/items/sandstone.json new file mode 100644 index 00000000..a8071c3d --- /dev/null +++ b/assets/minecraft/items/sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sandstone_slab.json b/assets/minecraft/items/sandstone_slab.json new file mode 100644 index 00000000..63249734 --- /dev/null +++ b/assets/minecraft/items/sandstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sandstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sandstone_stairs.json b/assets/minecraft/items/sandstone_stairs.json new file mode 100644 index 00000000..d3bd4df7 --- /dev/null +++ b/assets/minecraft/items/sandstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sandstone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sandstone_wall.json b/assets/minecraft/items/sandstone_wall.json new file mode 100644 index 00000000..4c63f461 --- /dev/null +++ b/assets/minecraft/items/sandstone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sandstone_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/scaffolding.json b/assets/minecraft/items/scaffolding.json new file mode 100644 index 00000000..c3692b7e --- /dev/null +++ b/assets/minecraft/items/scaffolding.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/scaffolding_stable" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/scrape_pottery_sherd.json b/assets/minecraft/items/scrape_pottery_sherd.json new file mode 100644 index 00000000..020a80ec --- /dev/null +++ b/assets/minecraft/items/scrape_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/scrape_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sculk.json b/assets/minecraft/items/sculk.json new file mode 100644 index 00000000..73211e5f --- /dev/null +++ b/assets/minecraft/items/sculk.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sculk" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sculk_catalyst.json b/assets/minecraft/items/sculk_catalyst.json new file mode 100644 index 00000000..fd27d784 --- /dev/null +++ b/assets/minecraft/items/sculk_catalyst.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sculk_catalyst" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sculk_sensor.json b/assets/minecraft/items/sculk_sensor.json new file mode 100644 index 00000000..7ffe1c99 --- /dev/null +++ b/assets/minecraft/items/sculk_sensor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sculk_sensor_inactive" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sculk_shrieker.json b/assets/minecraft/items/sculk_shrieker.json new file mode 100644 index 00000000..5c4166a2 --- /dev/null +++ b/assets/minecraft/items/sculk_shrieker.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sculk_shrieker" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sculk_vein.json b/assets/minecraft/items/sculk_vein.json new file mode 100644 index 00000000..468d5a93 --- /dev/null +++ b/assets/minecraft/items/sculk_vein.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sculk_vein" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sea_lantern.json b/assets/minecraft/items/sea_lantern.json new file mode 100644 index 00000000..33663f59 --- /dev/null +++ b/assets/minecraft/items/sea_lantern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sea_lantern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sea_pickle.json b/assets/minecraft/items/sea_pickle.json new file mode 100644 index 00000000..46e93249 --- /dev/null +++ b/assets/minecraft/items/sea_pickle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sea_pickle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/seagrass.json b/assets/minecraft/items/seagrass.json new file mode 100644 index 00000000..39d338bc --- /dev/null +++ b/assets/minecraft/items/seagrass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/seagrass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sentry_armor_trim_smithing_template.json b/assets/minecraft/items/sentry_armor_trim_smithing_template.json new file mode 100644 index 00000000..1c3fd115 --- /dev/null +++ b/assets/minecraft/items/sentry_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sentry_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shaper_armor_trim_smithing_template.json b/assets/minecraft/items/shaper_armor_trim_smithing_template.json new file mode 100644 index 00000000..1d7a2122 --- /dev/null +++ b/assets/minecraft/items/shaper_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/shaper_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sheaf_pottery_sherd.json b/assets/minecraft/items/sheaf_pottery_sherd.json new file mode 100644 index 00000000..25308a86 --- /dev/null +++ b/assets/minecraft/items/sheaf_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sheaf_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shears.json b/assets/minecraft/items/shears.json new file mode 100644 index 00000000..10f58ec8 --- /dev/null +++ b/assets/minecraft/items/shears.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/shears" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sheep_spawn_egg.json b/assets/minecraft/items/sheep_spawn_egg.json new file mode 100644 index 00000000..609bbd43 --- /dev/null +++ b/assets/minecraft/items/sheep_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1579033 + }, + { + "type": "minecraft:constant", + "value": -19019 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shelter_pottery_sherd.json b/assets/minecraft/items/shelter_pottery_sherd.json new file mode 100644 index 00000000..392707eb --- /dev/null +++ b/assets/minecraft/items/shelter_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/shelter_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shield.json b/assets/minecraft/items/shield.json new file mode 100644 index 00000000..f6bc4b3e --- /dev/null +++ b/assets/minecraft/items/shield.json @@ -0,0 +1,20 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:special", + "base": "minecraft:item/shield", + "model": { + "type": "minecraft:shield" + } + }, + "on_true": { + "type": "minecraft:special", + "base": "minecraft:item/shield_blocking", + "model": { + "type": "minecraft:shield" + } + }, + "property": "minecraft:using_item" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/short_grass.json b/assets/minecraft/items/short_grass.json new file mode 100644 index 00000000..d218bc01 --- /dev/null +++ b/assets/minecraft/items/short_grass.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/short_grass", + "tints": [ + { + "type": "minecraft:grass", + "downfall": 1.0, + "temperature": 0.5 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shroomlight.json b/assets/minecraft/items/shroomlight.json new file mode 100644 index 00000000..2cbf73b0 --- /dev/null +++ b/assets/minecraft/items/shroomlight.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/shroomlight" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shulker_box.json b/assets/minecraft/items/shulker_box.json new file mode 100644 index 00000000..b688cdb3 --- /dev/null +++ b/assets/minecraft/items/shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shulker_shell.json b/assets/minecraft/items/shulker_shell.json new file mode 100644 index 00000000..fbb0597f --- /dev/null +++ b/assets/minecraft/items/shulker_shell.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/shulker_shell" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/shulker_spawn_egg.json b/assets/minecraft/items/shulker_spawn_egg.json new file mode 100644 index 00000000..d7ff35fc --- /dev/null +++ b/assets/minecraft/items/shulker_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -7051372 + }, + { + "type": "minecraft:constant", + "value": -11716526 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/silence_armor_trim_smithing_template.json b/assets/minecraft/items/silence_armor_trim_smithing_template.json new file mode 100644 index 00000000..c19819d9 --- /dev/null +++ b/assets/minecraft/items/silence_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/silence_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/silverfish_spawn_egg.json b/assets/minecraft/items/silverfish_spawn_egg.json new file mode 100644 index 00000000..8f28286f --- /dev/null +++ b/assets/minecraft/items/silverfish_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -9539986 + }, + { + "type": "minecraft:constant", + "value": -13619152 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/skeleton_horse_spawn_egg.json b/assets/minecraft/items/skeleton_horse_spawn_egg.json new file mode 100644 index 00000000..48c07e13 --- /dev/null +++ b/assets/minecraft/items/skeleton_horse_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -9934769 + }, + { + "type": "minecraft:constant", + "value": -1710632 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/skeleton_skull.json b/assets/minecraft/items/skeleton_skull.json new file mode 100644 index 00000000..68cf144e --- /dev/null +++ b/assets/minecraft/items/skeleton_skull.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_skull", + "model": { + "type": "minecraft:head", + "kind": "skeleton" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/skeleton_spawn_egg.json b/assets/minecraft/items/skeleton_spawn_egg.json new file mode 100644 index 00000000..e6f776df --- /dev/null +++ b/assets/minecraft/items/skeleton_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -4079167 + }, + { + "type": "minecraft:constant", + "value": -11974327 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/skull_banner_pattern.json b/assets/minecraft/items/skull_banner_pattern.json new file mode 100644 index 00000000..9bee46be --- /dev/null +++ b/assets/minecraft/items/skull_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/skull_banner_pattern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/skull_pottery_sherd.json b/assets/minecraft/items/skull_pottery_sherd.json new file mode 100644 index 00000000..22a43641 --- /dev/null +++ b/assets/minecraft/items/skull_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/skull_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/slime_ball.json b/assets/minecraft/items/slime_ball.json new file mode 100644 index 00000000..799ca93a --- /dev/null +++ b/assets/minecraft/items/slime_ball.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/slime_ball" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/slime_block.json b/assets/minecraft/items/slime_block.json new file mode 100644 index 00000000..b066f9fa --- /dev/null +++ b/assets/minecraft/items/slime_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/slime_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/slime_spawn_egg.json b/assets/minecraft/items/slime_spawn_egg.json new file mode 100644 index 00000000..a6d20b21 --- /dev/null +++ b/assets/minecraft/items/slime_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -11427778 + }, + { + "type": "minecraft:constant", + "value": -8470674 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/small_amethyst_bud.json b/assets/minecraft/items/small_amethyst_bud.json new file mode 100644 index 00000000..8d8a72b9 --- /dev/null +++ b/assets/minecraft/items/small_amethyst_bud.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/small_amethyst_bud" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/small_dripleaf.json b/assets/minecraft/items/small_dripleaf.json new file mode 100644 index 00000000..e95125a1 --- /dev/null +++ b/assets/minecraft/items/small_dripleaf.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/small_dripleaf" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smithing_table.json b/assets/minecraft/items/smithing_table.json new file mode 100644 index 00000000..4e3e7f1f --- /dev/null +++ b/assets/minecraft/items/smithing_table.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smithing_table" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smoker.json b/assets/minecraft/items/smoker.json new file mode 100644 index 00000000..2d0f5cdc --- /dev/null +++ b/assets/minecraft/items/smoker.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smoker" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_basalt.json b/assets/minecraft/items/smooth_basalt.json new file mode 100644 index 00000000..7700ef6e --- /dev/null +++ b/assets/minecraft/items/smooth_basalt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_basalt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_quartz.json b/assets/minecraft/items/smooth_quartz.json new file mode 100644 index 00000000..cac9ae92 --- /dev/null +++ b/assets/minecraft/items/smooth_quartz.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_quartz" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_quartz_slab.json b/assets/minecraft/items/smooth_quartz_slab.json new file mode 100644 index 00000000..ec964501 --- /dev/null +++ b/assets/minecraft/items/smooth_quartz_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_quartz_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_quartz_stairs.json b/assets/minecraft/items/smooth_quartz_stairs.json new file mode 100644 index 00000000..ab1bf730 --- /dev/null +++ b/assets/minecraft/items/smooth_quartz_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_quartz_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_red_sandstone.json b/assets/minecraft/items/smooth_red_sandstone.json new file mode 100644 index 00000000..7f06dab4 --- /dev/null +++ b/assets/minecraft/items/smooth_red_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_red_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_red_sandstone_slab.json b/assets/minecraft/items/smooth_red_sandstone_slab.json new file mode 100644 index 00000000..292247fa --- /dev/null +++ b/assets/minecraft/items/smooth_red_sandstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_red_sandstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_red_sandstone_stairs.json b/assets/minecraft/items/smooth_red_sandstone_stairs.json new file mode 100644 index 00000000..048905e0 --- /dev/null +++ b/assets/minecraft/items/smooth_red_sandstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_red_sandstone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_sandstone.json b/assets/minecraft/items/smooth_sandstone.json new file mode 100644 index 00000000..8fca1362 --- /dev/null +++ b/assets/minecraft/items/smooth_sandstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_sandstone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_sandstone_slab.json b/assets/minecraft/items/smooth_sandstone_slab.json new file mode 100644 index 00000000..23348d0d --- /dev/null +++ b/assets/minecraft/items/smooth_sandstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_sandstone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_sandstone_stairs.json b/assets/minecraft/items/smooth_sandstone_stairs.json new file mode 100644 index 00000000..9222c154 --- /dev/null +++ b/assets/minecraft/items/smooth_sandstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_sandstone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_stone.json b/assets/minecraft/items/smooth_stone.json new file mode 100644 index 00000000..5b3ef2dd --- /dev/null +++ b/assets/minecraft/items/smooth_stone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_stone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/smooth_stone_slab.json b/assets/minecraft/items/smooth_stone_slab.json new file mode 100644 index 00000000..fd1c9d9c --- /dev/null +++ b/assets/minecraft/items/smooth_stone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/smooth_stone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sniffer_egg.json b/assets/minecraft/items/sniffer_egg.json new file mode 100644 index 00000000..675288c0 --- /dev/null +++ b/assets/minecraft/items/sniffer_egg.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sniffer_egg" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sniffer_spawn_egg.json b/assets/minecraft/items/sniffer_spawn_egg.json new file mode 100644 index 00000000..2930eba9 --- /dev/null +++ b/assets/minecraft/items/sniffer_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -7922167 + }, + { + "type": "minecraft:constant", + "value": -14308496 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/snort_pottery_sherd.json b/assets/minecraft/items/snort_pottery_sherd.json new file mode 100644 index 00000000..91e2e548 --- /dev/null +++ b/assets/minecraft/items/snort_pottery_sherd.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/snort_pottery_sherd" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/snout_armor_trim_smithing_template.json b/assets/minecraft/items/snout_armor_trim_smithing_template.json new file mode 100644 index 00000000..37b25e53 --- /dev/null +++ b/assets/minecraft/items/snout_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/snout_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/snow.json b/assets/minecraft/items/snow.json new file mode 100644 index 00000000..532c7444 --- /dev/null +++ b/assets/minecraft/items/snow.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/snow_height2" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/snow_block.json b/assets/minecraft/items/snow_block.json new file mode 100644 index 00000000..b2bb073b --- /dev/null +++ b/assets/minecraft/items/snow_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/snow_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/snow_golem_spawn_egg.json b/assets/minecraft/items/snow_golem_spawn_egg.json new file mode 100644 index 00000000..cdf6accd --- /dev/null +++ b/assets/minecraft/items/snow_golem_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -2493710 + }, + { + "type": "minecraft:constant", + "value": -8280924 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/snowball.json b/assets/minecraft/items/snowball.json new file mode 100644 index 00000000..d33a77a4 --- /dev/null +++ b/assets/minecraft/items/snowball.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/snowball" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/soul_campfire.json b/assets/minecraft/items/soul_campfire.json new file mode 100644 index 00000000..e6bc3042 --- /dev/null +++ b/assets/minecraft/items/soul_campfire.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/soul_campfire" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/soul_lantern.json b/assets/minecraft/items/soul_lantern.json new file mode 100644 index 00000000..5798a9a9 --- /dev/null +++ b/assets/minecraft/items/soul_lantern.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/soul_lantern" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/soul_sand.json b/assets/minecraft/items/soul_sand.json new file mode 100644 index 00000000..8101cb3c --- /dev/null +++ b/assets/minecraft/items/soul_sand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/soul_sand" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/soul_soil.json b/assets/minecraft/items/soul_soil.json new file mode 100644 index 00000000..2345c55e --- /dev/null +++ b/assets/minecraft/items/soul_soil.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/soul_soil" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/soul_torch.json b/assets/minecraft/items/soul_torch.json new file mode 100644 index 00000000..530bfc4f --- /dev/null +++ b/assets/minecraft/items/soul_torch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/soul_torch" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spawner.json b/assets/minecraft/items/spawner.json new file mode 100644 index 00000000..6064177a --- /dev/null +++ b/assets/minecraft/items/spawner.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spawner" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spectral_arrow.json b/assets/minecraft/items/spectral_arrow.json new file mode 100644 index 00000000..92b39e7e --- /dev/null +++ b/assets/minecraft/items/spectral_arrow.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spectral_arrow" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spider_eye.json b/assets/minecraft/items/spider_eye.json new file mode 100644 index 00000000..2e5832c2 --- /dev/null +++ b/assets/minecraft/items/spider_eye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spider_eye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spider_spawn_egg.json b/assets/minecraft/items/spider_spawn_egg.json new file mode 100644 index 00000000..2ea93aa4 --- /dev/null +++ b/assets/minecraft/items/spider_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -13357785 + }, + { + "type": "minecraft:constant", + "value": -5763570 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spire_armor_trim_smithing_template.json b/assets/minecraft/items/spire_armor_trim_smithing_template.json new file mode 100644 index 00000000..c0ced75d --- /dev/null +++ b/assets/minecraft/items/spire_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spire_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/splash_potion.json b/assets/minecraft/items/splash_potion.json new file mode 100644 index 00000000..7fa6e714 --- /dev/null +++ b/assets/minecraft/items/splash_potion.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/splash_potion", + "tints": [ + { + "type": "minecraft:potion", + "default": -13083194 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sponge.json b/assets/minecraft/items/sponge.json new file mode 100644 index 00000000..c60720ee --- /dev/null +++ b/assets/minecraft/items/sponge.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sponge" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spore_blossom.json b/assets/minecraft/items/spore_blossom.json new file mode 100644 index 00000000..7e9cc6e7 --- /dev/null +++ b/assets/minecraft/items/spore_blossom.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spore_blossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_boat.json b/assets/minecraft/items/spruce_boat.json new file mode 100644 index 00000000..59d05726 --- /dev/null +++ b/assets/minecraft/items/spruce_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_button.json b/assets/minecraft/items/spruce_button.json new file mode 100644 index 00000000..dd3c78eb --- /dev/null +++ b/assets/minecraft/items/spruce_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_chest_boat.json b/assets/minecraft/items/spruce_chest_boat.json new file mode 100644 index 00000000..89dbfdeb --- /dev/null +++ b/assets/minecraft/items/spruce_chest_boat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_chest_boat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_door.json b/assets/minecraft/items/spruce_door.json new file mode 100644 index 00000000..dda164c2 --- /dev/null +++ b/assets/minecraft/items/spruce_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_fence.json b/assets/minecraft/items/spruce_fence.json new file mode 100644 index 00000000..22837ca4 --- /dev/null +++ b/assets/minecraft/items/spruce_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_fence_gate.json b/assets/minecraft/items/spruce_fence_gate.json new file mode 100644 index 00000000..539e3b6b --- /dev/null +++ b/assets/minecraft/items/spruce_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_hanging_sign.json b/assets/minecraft/items/spruce_hanging_sign.json new file mode 100644 index 00000000..a2ccee41 --- /dev/null +++ b/assets/minecraft/items/spruce_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_leaves.json b/assets/minecraft/items/spruce_leaves.json new file mode 100644 index 00000000..48be842c --- /dev/null +++ b/assets/minecraft/items/spruce_leaves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_leaves", + "tints": [ + { + "type": "minecraft:constant", + "value": -10380959 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_log.json b/assets/minecraft/items/spruce_log.json new file mode 100644 index 00000000..f106ea3c --- /dev/null +++ b/assets/minecraft/items/spruce_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_planks.json b/assets/minecraft/items/spruce_planks.json new file mode 100644 index 00000000..bda83bc8 --- /dev/null +++ b/assets/minecraft/items/spruce_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_pressure_plate.json b/assets/minecraft/items/spruce_pressure_plate.json new file mode 100644 index 00000000..2a85b4fe --- /dev/null +++ b/assets/minecraft/items/spruce_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_sapling.json b/assets/minecraft/items/spruce_sapling.json new file mode 100644 index 00000000..ad926af2 --- /dev/null +++ b/assets/minecraft/items/spruce_sapling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_sapling" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_sign.json b/assets/minecraft/items/spruce_sign.json new file mode 100644 index 00000000..e4c5355c --- /dev/null +++ b/assets/minecraft/items/spruce_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_slab.json b/assets/minecraft/items/spruce_slab.json new file mode 100644 index 00000000..1f398c16 --- /dev/null +++ b/assets/minecraft/items/spruce_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_stairs.json b/assets/minecraft/items/spruce_stairs.json new file mode 100644 index 00000000..7282b434 --- /dev/null +++ b/assets/minecraft/items/spruce_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_trapdoor.json b/assets/minecraft/items/spruce_trapdoor.json new file mode 100644 index 00000000..1aed9773 --- /dev/null +++ b/assets/minecraft/items/spruce_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spruce_wood.json b/assets/minecraft/items/spruce_wood.json new file mode 100644 index 00000000..c7f5f46f --- /dev/null +++ b/assets/minecraft/items/spruce_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/spruce_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/spyglass.json b/assets/minecraft/items/spyglass.json new file mode 100644 index 00000000..91bbd848 --- /dev/null +++ b/assets/minecraft/items/spyglass.json @@ -0,0 +1,23 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spyglass" + }, + "when": [ + "gui", + "ground", + "fixed" + ] + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/spyglass_in_hand" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/squid_spawn_egg.json b/assets/minecraft/items/squid_spawn_egg.json new file mode 100644 index 00000000..ad34e590 --- /dev/null +++ b/assets/minecraft/items/squid_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -14533811 + }, + { + "type": "minecraft:constant", + "value": -9402215 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stick.json b/assets/minecraft/items/stick.json new file mode 100644 index 00000000..d2e5fd07 --- /dev/null +++ b/assets/minecraft/items/stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/stick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sticky_piston.json b/assets/minecraft/items/sticky_piston.json new file mode 100644 index 00000000..7d62c70d --- /dev/null +++ b/assets/minecraft/items/sticky_piston.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/sticky_piston_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone.json b/assets/minecraft/items/stone.json new file mode 100644 index 00000000..f5c9f2a0 --- /dev/null +++ b/assets/minecraft/items/stone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_axe.json b/assets/minecraft/items/stone_axe.json new file mode 100644 index 00000000..439896b1 --- /dev/null +++ b/assets/minecraft/items/stone_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/stone_axe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_brick_slab.json b/assets/minecraft/items/stone_brick_slab.json new file mode 100644 index 00000000..470cba9e --- /dev/null +++ b/assets/minecraft/items/stone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_brick_stairs.json b/assets/minecraft/items/stone_brick_stairs.json new file mode 100644 index 00000000..a80ee964 --- /dev/null +++ b/assets/minecraft/items/stone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_brick_wall.json b/assets/minecraft/items/stone_brick_wall.json new file mode 100644 index 00000000..1690e1d7 --- /dev/null +++ b/assets/minecraft/items/stone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_bricks.json b/assets/minecraft/items/stone_bricks.json new file mode 100644 index 00000000..a61dd731 --- /dev/null +++ b/assets/minecraft/items/stone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_button.json b/assets/minecraft/items/stone_button.json new file mode 100644 index 00000000..fe492729 --- /dev/null +++ b/assets/minecraft/items/stone_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_hoe.json b/assets/minecraft/items/stone_hoe.json new file mode 100644 index 00000000..c9aa4f30 --- /dev/null +++ b/assets/minecraft/items/stone_hoe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/stone_hoe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_pickaxe.json b/assets/minecraft/items/stone_pickaxe.json new file mode 100644 index 00000000..43c46496 --- /dev/null +++ b/assets/minecraft/items/stone_pickaxe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/stone_pickaxe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_pressure_plate.json b/assets/minecraft/items/stone_pressure_plate.json new file mode 100644 index 00000000..eed8e4d5 --- /dev/null +++ b/assets/minecraft/items/stone_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_shovel.json b/assets/minecraft/items/stone_shovel.json new file mode 100644 index 00000000..83c3f305 --- /dev/null +++ b/assets/minecraft/items/stone_shovel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/stone_shovel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_slab.json b/assets/minecraft/items/stone_slab.json new file mode 100644 index 00000000..277a5928 --- /dev/null +++ b/assets/minecraft/items/stone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_stairs.json b/assets/minecraft/items/stone_stairs.json new file mode 100644 index 00000000..16adbff0 --- /dev/null +++ b/assets/minecraft/items/stone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stone_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stone_sword.json b/assets/minecraft/items/stone_sword.json new file mode 100644 index 00000000..7213642e --- /dev/null +++ b/assets/minecraft/items/stone_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/stone_sword" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stonecutter.json b/assets/minecraft/items/stonecutter.json new file mode 100644 index 00000000..cd72ad0e --- /dev/null +++ b/assets/minecraft/items/stonecutter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stonecutter" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stray_spawn_egg.json b/assets/minecraft/items/stray_spawn_egg.json new file mode 100644 index 00000000..af04df23 --- /dev/null +++ b/assets/minecraft/items/stray_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -10389897 + }, + { + "type": "minecraft:constant", + "value": -2233622 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/strider_spawn_egg.json b/assets/minecraft/items/strider_spawn_egg.json new file mode 100644 index 00000000..807fdf82 --- /dev/null +++ b/assets/minecraft/items/strider_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6540234 + }, + { + "type": "minecraft:constant", + "value": -11712179 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/string.json b/assets/minecraft/items/string.json new file mode 100644 index 00000000..8f748c80 --- /dev/null +++ b/assets/minecraft/items/string.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/string" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_acacia_log.json b/assets/minecraft/items/stripped_acacia_log.json new file mode 100644 index 00000000..6c34eef1 --- /dev/null +++ b/assets/minecraft/items/stripped_acacia_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_acacia_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_acacia_wood.json b/assets/minecraft/items/stripped_acacia_wood.json new file mode 100644 index 00000000..34e2ee6d --- /dev/null +++ b/assets/minecraft/items/stripped_acacia_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_acacia_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_bamboo_block.json b/assets/minecraft/items/stripped_bamboo_block.json new file mode 100644 index 00000000..4cabea36 --- /dev/null +++ b/assets/minecraft/items/stripped_bamboo_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_bamboo_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_birch_log.json b/assets/minecraft/items/stripped_birch_log.json new file mode 100644 index 00000000..c99a9a8c --- /dev/null +++ b/assets/minecraft/items/stripped_birch_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_birch_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_birch_wood.json b/assets/minecraft/items/stripped_birch_wood.json new file mode 100644 index 00000000..80f86c85 --- /dev/null +++ b/assets/minecraft/items/stripped_birch_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_birch_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_cherry_log.json b/assets/minecraft/items/stripped_cherry_log.json new file mode 100644 index 00000000..47cde5cc --- /dev/null +++ b/assets/minecraft/items/stripped_cherry_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_cherry_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_cherry_wood.json b/assets/minecraft/items/stripped_cherry_wood.json new file mode 100644 index 00000000..daefe8ee --- /dev/null +++ b/assets/minecraft/items/stripped_cherry_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_cherry_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_crimson_hyphae.json b/assets/minecraft/items/stripped_crimson_hyphae.json new file mode 100644 index 00000000..5cf344ef --- /dev/null +++ b/assets/minecraft/items/stripped_crimson_hyphae.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_crimson_hyphae" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_crimson_stem.json b/assets/minecraft/items/stripped_crimson_stem.json new file mode 100644 index 00000000..96e913a1 --- /dev/null +++ b/assets/minecraft/items/stripped_crimson_stem.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_crimson_stem" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_dark_oak_log.json b/assets/minecraft/items/stripped_dark_oak_log.json new file mode 100644 index 00000000..b8416662 --- /dev/null +++ b/assets/minecraft/items/stripped_dark_oak_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_dark_oak_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_dark_oak_wood.json b/assets/minecraft/items/stripped_dark_oak_wood.json new file mode 100644 index 00000000..f673458a --- /dev/null +++ b/assets/minecraft/items/stripped_dark_oak_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_dark_oak_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_jungle_log.json b/assets/minecraft/items/stripped_jungle_log.json new file mode 100644 index 00000000..1e1a81bc --- /dev/null +++ b/assets/minecraft/items/stripped_jungle_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_jungle_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_jungle_wood.json b/assets/minecraft/items/stripped_jungle_wood.json new file mode 100644 index 00000000..79a56093 --- /dev/null +++ b/assets/minecraft/items/stripped_jungle_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_jungle_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_mangrove_log.json b/assets/minecraft/items/stripped_mangrove_log.json new file mode 100644 index 00000000..ad55c407 --- /dev/null +++ b/assets/minecraft/items/stripped_mangrove_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_mangrove_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_mangrove_wood.json b/assets/minecraft/items/stripped_mangrove_wood.json new file mode 100644 index 00000000..a9316c1a --- /dev/null +++ b/assets/minecraft/items/stripped_mangrove_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_mangrove_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_oak_log.json b/assets/minecraft/items/stripped_oak_log.json new file mode 100644 index 00000000..9f4bf584 --- /dev/null +++ b/assets/minecraft/items/stripped_oak_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_oak_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_oak_wood.json b/assets/minecraft/items/stripped_oak_wood.json new file mode 100644 index 00000000..7ad32214 --- /dev/null +++ b/assets/minecraft/items/stripped_oak_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_oak_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_pale_oak_log.json b/assets/minecraft/items/stripped_pale_oak_log.json new file mode 100644 index 00000000..0446e281 --- /dev/null +++ b/assets/minecraft/items/stripped_pale_oak_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_pale_oak_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_pale_oak_wood.json b/assets/minecraft/items/stripped_pale_oak_wood.json new file mode 100644 index 00000000..109ad1ac --- /dev/null +++ b/assets/minecraft/items/stripped_pale_oak_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_pale_oak_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_spruce_log.json b/assets/minecraft/items/stripped_spruce_log.json new file mode 100644 index 00000000..cdd2f292 --- /dev/null +++ b/assets/minecraft/items/stripped_spruce_log.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_spruce_log" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_spruce_wood.json b/assets/minecraft/items/stripped_spruce_wood.json new file mode 100644 index 00000000..28cf5b63 --- /dev/null +++ b/assets/minecraft/items/stripped_spruce_wood.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_spruce_wood" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_warped_hyphae.json b/assets/minecraft/items/stripped_warped_hyphae.json new file mode 100644 index 00000000..4e814822 --- /dev/null +++ b/assets/minecraft/items/stripped_warped_hyphae.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_warped_hyphae" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/stripped_warped_stem.json b/assets/minecraft/items/stripped_warped_stem.json new file mode 100644 index 00000000..e3bbcec3 --- /dev/null +++ b/assets/minecraft/items/stripped_warped_stem.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/stripped_warped_stem" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/structure_block.json b/assets/minecraft/items/structure_block.json new file mode 100644 index 00000000..bf984362 --- /dev/null +++ b/assets/minecraft/items/structure_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/structure_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/structure_void.json b/assets/minecraft/items/structure_void.json new file mode 100644 index 00000000..80679116 --- /dev/null +++ b/assets/minecraft/items/structure_void.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/structure_void" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sugar.json b/assets/minecraft/items/sugar.json new file mode 100644 index 00000000..8a2ac1f0 --- /dev/null +++ b/assets/minecraft/items/sugar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sugar" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sugar_cane.json b/assets/minecraft/items/sugar_cane.json new file mode 100644 index 00000000..fcffd263 --- /dev/null +++ b/assets/minecraft/items/sugar_cane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sugar_cane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sunflower.json b/assets/minecraft/items/sunflower.json new file mode 100644 index 00000000..db77a8cb --- /dev/null +++ b/assets/minecraft/items/sunflower.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sunflower" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/suspicious_gravel.json b/assets/minecraft/items/suspicious_gravel.json new file mode 100644 index 00000000..a2ae98d8 --- /dev/null +++ b/assets/minecraft/items/suspicious_gravel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/suspicious_gravel_0" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/suspicious_sand.json b/assets/minecraft/items/suspicious_sand.json new file mode 100644 index 00000000..d1e5b53e --- /dev/null +++ b/assets/minecraft/items/suspicious_sand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/suspicious_sand_0" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/suspicious_stew.json b/assets/minecraft/items/suspicious_stew.json new file mode 100644 index 00000000..39814c70 --- /dev/null +++ b/assets/minecraft/items/suspicious_stew.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/suspicious_stew" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/sweet_berries.json b/assets/minecraft/items/sweet_berries.json new file mode 100644 index 00000000..abce325f --- /dev/null +++ b/assets/minecraft/items/sweet_berries.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/sweet_berries" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tadpole_bucket.json b/assets/minecraft/items/tadpole_bucket.json new file mode 100644 index 00000000..6a3f1f5c --- /dev/null +++ b/assets/minecraft/items/tadpole_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tadpole_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tadpole_spawn_egg.json b/assets/minecraft/items/tadpole_spawn_egg.json new file mode 100644 index 00000000..1a2306bf --- /dev/null +++ b/assets/minecraft/items/tadpole_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -9612483 + }, + { + "type": "minecraft:constant", + "value": -15332864 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tall_grass.json b/assets/minecraft/items/tall_grass.json new file mode 100644 index 00000000..8e524c31 --- /dev/null +++ b/assets/minecraft/items/tall_grass.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tall_grass", + "tints": [ + { + "type": "minecraft:grass", + "downfall": 1.0, + "temperature": 0.5 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/target.json b/assets/minecraft/items/target.json new file mode 100644 index 00000000..06200fd8 --- /dev/null +++ b/assets/minecraft/items/target.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/target" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/terracotta.json b/assets/minecraft/items/terracotta.json new file mode 100644 index 00000000..690ee815 --- /dev/null +++ b/assets/minecraft/items/terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tide_armor_trim_smithing_template.json b/assets/minecraft/items/tide_armor_trim_smithing_template.json new file mode 100644 index 00000000..a4578f21 --- /dev/null +++ b/assets/minecraft/items/tide_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tide_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tinted_glass.json b/assets/minecraft/items/tinted_glass.json new file mode 100644 index 00000000..9a56958c --- /dev/null +++ b/assets/minecraft/items/tinted_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tinted_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tipped_arrow.json b/assets/minecraft/items/tipped_arrow.json new file mode 100644 index 00000000..77ba8aa8 --- /dev/null +++ b/assets/minecraft/items/tipped_arrow.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tipped_arrow", + "tints": [ + { + "type": "minecraft:potion", + "default": -13083194 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tnt.json b/assets/minecraft/items/tnt.json new file mode 100644 index 00000000..ed41988a --- /dev/null +++ b/assets/minecraft/items/tnt.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tnt" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tnt_minecart.json b/assets/minecraft/items/tnt_minecart.json new file mode 100644 index 00000000..f390cb9b --- /dev/null +++ b/assets/minecraft/items/tnt_minecart.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tnt_minecart" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/torch.json b/assets/minecraft/items/torch.json new file mode 100644 index 00000000..44a5efb9 --- /dev/null +++ b/assets/minecraft/items/torch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/torch" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/torchflower.json b/assets/minecraft/items/torchflower.json new file mode 100644 index 00000000..aeb1619c --- /dev/null +++ b/assets/minecraft/items/torchflower.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/torchflower" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/torchflower_seeds.json b/assets/minecraft/items/torchflower_seeds.json new file mode 100644 index 00000000..d8ad414e --- /dev/null +++ b/assets/minecraft/items/torchflower_seeds.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/torchflower_seeds" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/totem_of_undying.json b/assets/minecraft/items/totem_of_undying.json new file mode 100644 index 00000000..e1844f63 --- /dev/null +++ b/assets/minecraft/items/totem_of_undying.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/totem_of_undying" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/trader_llama_spawn_egg.json b/assets/minecraft/items/trader_llama_spawn_egg.json new file mode 100644 index 00000000..717eda54 --- /dev/null +++ b/assets/minecraft/items/trader_llama_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1399760 + }, + { + "type": "minecraft:constant", + "value": -12229994 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/trapped_chest.json b/assets/minecraft/items/trapped_chest.json new file mode 100644 index 00000000..bac5cdb5 --- /dev/null +++ b/assets/minecraft/items/trapped_chest.json @@ -0,0 +1,32 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:special", + "base": "minecraft:item/trapped_chest", + "model": { + "type": "minecraft:chest", + "texture": "minecraft:christmas" + } + }, + "when": [ + "12-24", + "12-25", + "12-26" + ] + } + ], + "fallback": { + "type": "minecraft:special", + "base": "minecraft:item/trapped_chest", + "model": { + "type": "minecraft:chest", + "texture": "minecraft:trapped" + } + }, + "pattern": "MM-dd", + "property": "minecraft:local_time" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/trial_key.json b/assets/minecraft/items/trial_key.json new file mode 100644 index 00000000..3a34cbaf --- /dev/null +++ b/assets/minecraft/items/trial_key.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/trial_key" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/trial_spawner.json b/assets/minecraft/items/trial_spawner.json new file mode 100644 index 00000000..809b4460 --- /dev/null +++ b/assets/minecraft/items/trial_spawner.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/trial_spawner" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/trident.json b/assets/minecraft/items/trident.json new file mode 100644 index 00000000..9f6c4780 --- /dev/null +++ b/assets/minecraft/items/trident.json @@ -0,0 +1,37 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/trident" + }, + "when": [ + "gui", + "ground", + "fixed" + ] + } + ], + "fallback": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:special", + "base": "minecraft:item/trident_in_hand", + "model": { + "type": "minecraft:trident" + } + }, + "on_true": { + "type": "minecraft:special", + "base": "minecraft:item/trident_throwing", + "model": { + "type": "minecraft:trident" + } + }, + "property": "minecraft:using_item" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tripwire_hook.json b/assets/minecraft/items/tripwire_hook.json new file mode 100644 index 00000000..f9bf5abd --- /dev/null +++ b/assets/minecraft/items/tripwire_hook.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tripwire_hook" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tropical_fish.json b/assets/minecraft/items/tropical_fish.json new file mode 100644 index 00000000..26f2f487 --- /dev/null +++ b/assets/minecraft/items/tropical_fish.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tropical_fish" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tropical_fish_bucket.json b/assets/minecraft/items/tropical_fish_bucket.json new file mode 100644 index 00000000..2db71364 --- /dev/null +++ b/assets/minecraft/items/tropical_fish_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tropical_fish_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tropical_fish_spawn_egg.json b/assets/minecraft/items/tropical_fish_spawn_egg.json new file mode 100644 index 00000000..f0966e93 --- /dev/null +++ b/assets/minecraft/items/tropical_fish_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1087211 + }, + { + "type": "minecraft:constant", + "value": -1553 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tube_coral.json b/assets/minecraft/items/tube_coral.json new file mode 100644 index 00000000..93108780 --- /dev/null +++ b/assets/minecraft/items/tube_coral.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tube_coral" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tube_coral_block.json b/assets/minecraft/items/tube_coral_block.json new file mode 100644 index 00000000..790d51d2 --- /dev/null +++ b/assets/minecraft/items/tube_coral_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tube_coral_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tube_coral_fan.json b/assets/minecraft/items/tube_coral_fan.json new file mode 100644 index 00000000..6159f263 --- /dev/null +++ b/assets/minecraft/items/tube_coral_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tube_coral_fan" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff.json b/assets/minecraft/items/tuff.json new file mode 100644 index 00000000..610c254a --- /dev/null +++ b/assets/minecraft/items/tuff.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_brick_slab.json b/assets/minecraft/items/tuff_brick_slab.json new file mode 100644 index 00000000..0cdb4823 --- /dev/null +++ b/assets/minecraft/items/tuff_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_brick_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_brick_stairs.json b/assets/minecraft/items/tuff_brick_stairs.json new file mode 100644 index 00000000..378136c3 --- /dev/null +++ b/assets/minecraft/items/tuff_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_brick_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_brick_wall.json b/assets/minecraft/items/tuff_brick_wall.json new file mode 100644 index 00000000..7ce46809 --- /dev/null +++ b/assets/minecraft/items/tuff_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_brick_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_bricks.json b/assets/minecraft/items/tuff_bricks.json new file mode 100644 index 00000000..2d4f32e6 --- /dev/null +++ b/assets/minecraft/items/tuff_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_slab.json b/assets/minecraft/items/tuff_slab.json new file mode 100644 index 00000000..abd0a96a --- /dev/null +++ b/assets/minecraft/items/tuff_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_stairs.json b/assets/minecraft/items/tuff_stairs.json new file mode 100644 index 00000000..7011809e --- /dev/null +++ b/assets/minecraft/items/tuff_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/tuff_wall.json b/assets/minecraft/items/tuff_wall.json new file mode 100644 index 00000000..886b4bcb --- /dev/null +++ b/assets/minecraft/items/tuff_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/tuff_wall_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/turtle_egg.json b/assets/minecraft/items/turtle_egg.json new file mode 100644 index 00000000..fc91fe7d --- /dev/null +++ b/assets/minecraft/items/turtle_egg.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_egg" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/turtle_helmet.json b/assets/minecraft/items/turtle_helmet.json new file mode 100644 index 00000000..5fa761e9 --- /dev/null +++ b/assets/minecraft/items/turtle_helmet.json @@ -0,0 +1,89 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_quartz_trim" + }, + "when": "minecraft:quartz" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_iron_trim" + }, + "when": "minecraft:iron" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_netherite_trim" + }, + "when": "minecraft:netherite" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_redstone_trim" + }, + "when": "minecraft:redstone" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_copper_trim" + }, + "when": "minecraft:copper" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_gold_trim" + }, + "when": "minecraft:gold" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_emerald_trim" + }, + "when": "minecraft:emerald" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_diamond_trim" + }, + "when": "minecraft:diamond" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_lapis_trim" + }, + "when": "minecraft:lapis" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_amethyst_trim" + }, + "when": "minecraft:amethyst" + }, + { + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet_resin_trim" + }, + "when": "minecraft:resin" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_helmet" + }, + "property": "minecraft:trim_material" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/turtle_scute.json b/assets/minecraft/items/turtle_scute.json new file mode 100644 index 00000000..9c250150 --- /dev/null +++ b/assets/minecraft/items/turtle_scute.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/turtle_scute" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/turtle_spawn_egg.json b/assets/minecraft/items/turtle_spawn_egg.json new file mode 100644 index 00000000..1f072089 --- /dev/null +++ b/assets/minecraft/items/turtle_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1579033 + }, + { + "type": "minecraft:constant", + "value": -16732241 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/twisting_vines.json b/assets/minecraft/items/twisting_vines.json new file mode 100644 index 00000000..53aa26dd --- /dev/null +++ b/assets/minecraft/items/twisting_vines.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/twisting_vines" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/vault.json b/assets/minecraft/items/vault.json new file mode 100644 index 00000000..822f3d24 --- /dev/null +++ b/assets/minecraft/items/vault.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/vault" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/verdant_froglight.json b/assets/minecraft/items/verdant_froglight.json new file mode 100644 index 00000000..78844215 --- /dev/null +++ b/assets/minecraft/items/verdant_froglight.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/verdant_froglight" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/vex_armor_trim_smithing_template.json b/assets/minecraft/items/vex_armor_trim_smithing_template.json new file mode 100644 index 00000000..59c22037 --- /dev/null +++ b/assets/minecraft/items/vex_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/vex_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/vex_spawn_egg.json b/assets/minecraft/items/vex_spawn_egg.json new file mode 100644 index 00000000..4a941b7d --- /dev/null +++ b/assets/minecraft/items/vex_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -8744796 + }, + { + "type": "minecraft:constant", + "value": -1511951 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/villager_spawn_egg.json b/assets/minecraft/items/villager_spawn_egg.json new file mode 100644 index 00000000..c8b680aa --- /dev/null +++ b/assets/minecraft/items/villager_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -11125709 + }, + { + "type": "minecraft:constant", + "value": -4355214 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/vindicator_spawn_egg.json b/assets/minecraft/items/vindicator_spawn_egg.json new file mode 100644 index 00000000..f60cf9d9 --- /dev/null +++ b/assets/minecraft/items/vindicator_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -6972517 + }, + { + "type": "minecraft:constant", + "value": -14197151 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/vine.json b/assets/minecraft/items/vine.json new file mode 100644 index 00000000..e13000c1 --- /dev/null +++ b/assets/minecraft/items/vine.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/vine", + "tints": [ + { + "type": "minecraft:constant", + "value": -12012264 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wandering_trader_spawn_egg.json b/assets/minecraft/items/wandering_trader_spawn_egg.json new file mode 100644 index 00000000..0e6d1b5f --- /dev/null +++ b/assets/minecraft/items/wandering_trader_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -12229994 + }, + { + "type": "minecraft:constant", + "value": -1399760 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/ward_armor_trim_smithing_template.json b/assets/minecraft/items/ward_armor_trim_smithing_template.json new file mode 100644 index 00000000..c329bccc --- /dev/null +++ b/assets/minecraft/items/ward_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/ward_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warden_spawn_egg.json b/assets/minecraft/items/warden_spawn_egg.json new file mode 100644 index 00000000..c51f0f27 --- /dev/null +++ b/assets/minecraft/items/warden_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15776183 + }, + { + "type": "minecraft:constant", + "value": -12986656 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_button.json b/assets/minecraft/items/warped_button.json new file mode 100644 index 00000000..aa659e22 --- /dev/null +++ b/assets/minecraft/items/warped_button.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_button_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_door.json b/assets/minecraft/items/warped_door.json new file mode 100644 index 00000000..dbeece42 --- /dev/null +++ b/assets/minecraft/items/warped_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/warped_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_fence.json b/assets/minecraft/items/warped_fence.json new file mode 100644 index 00000000..815eacdb --- /dev/null +++ b/assets/minecraft/items/warped_fence.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_fence_inventory" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_fence_gate.json b/assets/minecraft/items/warped_fence_gate.json new file mode 100644 index 00000000..e572057d --- /dev/null +++ b/assets/minecraft/items/warped_fence_gate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_fence_gate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_fungus.json b/assets/minecraft/items/warped_fungus.json new file mode 100644 index 00000000..085c1e25 --- /dev/null +++ b/assets/minecraft/items/warped_fungus.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/warped_fungus" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_fungus_on_a_stick.json b/assets/minecraft/items/warped_fungus_on_a_stick.json new file mode 100644 index 00000000..678bf626 --- /dev/null +++ b/assets/minecraft/items/warped_fungus_on_a_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/warped_fungus_on_a_stick" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_hanging_sign.json b/assets/minecraft/items/warped_hanging_sign.json new file mode 100644 index 00000000..f823655b --- /dev/null +++ b/assets/minecraft/items/warped_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/warped_hanging_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_hyphae.json b/assets/minecraft/items/warped_hyphae.json new file mode 100644 index 00000000..cb3ab3d2 --- /dev/null +++ b/assets/minecraft/items/warped_hyphae.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_hyphae" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_nylium.json b/assets/minecraft/items/warped_nylium.json new file mode 100644 index 00000000..a9627787 --- /dev/null +++ b/assets/minecraft/items/warped_nylium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_nylium" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_planks.json b/assets/minecraft/items/warped_planks.json new file mode 100644 index 00000000..25e02f2f --- /dev/null +++ b/assets/minecraft/items/warped_planks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_pressure_plate.json b/assets/minecraft/items/warped_pressure_plate.json new file mode 100644 index 00000000..13d62076 --- /dev/null +++ b/assets/minecraft/items/warped_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_pressure_plate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_roots.json b/assets/minecraft/items/warped_roots.json new file mode 100644 index 00000000..f9e0e5d0 --- /dev/null +++ b/assets/minecraft/items/warped_roots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/warped_roots" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_sign.json b/assets/minecraft/items/warped_sign.json new file mode 100644 index 00000000..c8a6a952 --- /dev/null +++ b/assets/minecraft/items/warped_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/warped_sign" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_slab.json b/assets/minecraft/items/warped_slab.json new file mode 100644 index 00000000..bcde31a9 --- /dev/null +++ b/assets/minecraft/items/warped_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_stairs.json b/assets/minecraft/items/warped_stairs.json new file mode 100644 index 00000000..9d6eff56 --- /dev/null +++ b/assets/minecraft/items/warped_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_stem.json b/assets/minecraft/items/warped_stem.json new file mode 100644 index 00000000..6766888d --- /dev/null +++ b/assets/minecraft/items/warped_stem.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_stem" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_trapdoor.json b/assets/minecraft/items/warped_trapdoor.json new file mode 100644 index 00000000..f3a05d24 --- /dev/null +++ b/assets/minecraft/items/warped_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/warped_wart_block.json b/assets/minecraft/items/warped_wart_block.json new file mode 100644 index 00000000..cd1c6408 --- /dev/null +++ b/assets/minecraft/items/warped_wart_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/warped_wart_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/water_bucket.json b/assets/minecraft/items/water_bucket.json new file mode 100644 index 00000000..0a616959 --- /dev/null +++ b/assets/minecraft/items/water_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/water_bucket" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_chiseled_copper.json b/assets/minecraft/items/waxed_chiseled_copper.json new file mode 100644 index 00000000..99d4996d --- /dev/null +++ b/assets/minecraft/items/waxed_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_copper_block.json b/assets/minecraft/items/waxed_copper_block.json new file mode 100644 index 00000000..5060ed21 --- /dev/null +++ b/assets/minecraft/items/waxed_copper_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_copper_bulb.json b/assets/minecraft/items/waxed_copper_bulb.json new file mode 100644 index 00000000..feafbf2c --- /dev/null +++ b/assets/minecraft/items/waxed_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_copper_door.json b/assets/minecraft/items/waxed_copper_door.json new file mode 100644 index 00000000..6bc75ee4 --- /dev/null +++ b/assets/minecraft/items/waxed_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_copper_grate.json b/assets/minecraft/items/waxed_copper_grate.json new file mode 100644 index 00000000..7d9789bc --- /dev/null +++ b/assets/minecraft/items/waxed_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_copper_trapdoor.json b/assets/minecraft/items/waxed_copper_trapdoor.json new file mode 100644 index 00000000..03981dc9 --- /dev/null +++ b/assets/minecraft/items/waxed_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_cut_copper.json b/assets/minecraft/items/waxed_cut_copper.json new file mode 100644 index 00000000..69a734c6 --- /dev/null +++ b/assets/minecraft/items/waxed_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_cut_copper_slab.json b/assets/minecraft/items/waxed_cut_copper_slab.json new file mode 100644 index 00000000..1f8c6197 --- /dev/null +++ b/assets/minecraft/items/waxed_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_cut_copper_stairs.json b/assets/minecraft/items/waxed_cut_copper_stairs.json new file mode 100644 index 00000000..d63128c1 --- /dev/null +++ b/assets/minecraft/items/waxed_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_chiseled_copper.json b/assets/minecraft/items/waxed_exposed_chiseled_copper.json new file mode 100644 index 00000000..22657b6a --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_copper.json b/assets/minecraft/items/waxed_exposed_copper.json new file mode 100644 index 00000000..632da674 --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_copper_bulb.json b/assets/minecraft/items/waxed_exposed_copper_bulb.json new file mode 100644 index 00000000..d54e6306 --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_copper_door.json b/assets/minecraft/items/waxed_exposed_copper_door.json new file mode 100644 index 00000000..0ca6e2ca --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/exposed_copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_copper_grate.json b/assets/minecraft/items/waxed_exposed_copper_grate.json new file mode 100644 index 00000000..07c561b4 --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_copper_trapdoor.json b/assets/minecraft/items/waxed_exposed_copper_trapdoor.json new file mode 100644 index 00000000..260b680e --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_cut_copper.json b/assets/minecraft/items/waxed_exposed_cut_copper.json new file mode 100644 index 00000000..35932366 --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_cut_copper_slab.json b/assets/minecraft/items/waxed_exposed_cut_copper_slab.json new file mode 100644 index 00000000..818f8860 --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_exposed_cut_copper_stairs.json b/assets/minecraft/items/waxed_exposed_cut_copper_stairs.json new file mode 100644 index 00000000..54f5c1f0 --- /dev/null +++ b/assets/minecraft/items/waxed_exposed_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/exposed_cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_chiseled_copper.json b/assets/minecraft/items/waxed_oxidized_chiseled_copper.json new file mode 100644 index 00000000..78b7eae0 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_copper.json b/assets/minecraft/items/waxed_oxidized_copper.json new file mode 100644 index 00000000..c58b7f62 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_copper_bulb.json b/assets/minecraft/items/waxed_oxidized_copper_bulb.json new file mode 100644 index 00000000..aeab2c8c --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_copper_door.json b/assets/minecraft/items/waxed_oxidized_copper_door.json new file mode 100644 index 00000000..b5cc84d3 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oxidized_copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_copper_grate.json b/assets/minecraft/items/waxed_oxidized_copper_grate.json new file mode 100644 index 00000000..90d2a483 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_copper_trapdoor.json b/assets/minecraft/items/waxed_oxidized_copper_trapdoor.json new file mode 100644 index 00000000..245f08ef --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_cut_copper.json b/assets/minecraft/items/waxed_oxidized_cut_copper.json new file mode 100644 index 00000000..ec0748d3 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_cut_copper_slab.json b/assets/minecraft/items/waxed_oxidized_cut_copper_slab.json new file mode 100644 index 00000000..3e15eec7 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_oxidized_cut_copper_stairs.json b/assets/minecraft/items/waxed_oxidized_cut_copper_stairs.json new file mode 100644 index 00000000..7fd0b7f0 --- /dev/null +++ b/assets/minecraft/items/waxed_oxidized_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/oxidized_cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_chiseled_copper.json b/assets/minecraft/items/waxed_weathered_chiseled_copper.json new file mode 100644 index 00000000..f046852b --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_copper.json b/assets/minecraft/items/waxed_weathered_copper.json new file mode 100644 index 00000000..75710bc9 --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_copper_bulb.json b/assets/minecraft/items/waxed_weathered_copper_bulb.json new file mode 100644 index 00000000..5866e1d3 --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_copper_door.json b/assets/minecraft/items/waxed_weathered_copper_door.json new file mode 100644 index 00000000..4ec7f82f --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/weathered_copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_copper_grate.json b/assets/minecraft/items/waxed_weathered_copper_grate.json new file mode 100644 index 00000000..c23ee224 --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_copper_trapdoor.json b/assets/minecraft/items/waxed_weathered_copper_trapdoor.json new file mode 100644 index 00000000..d09a144f --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_cut_copper.json b/assets/minecraft/items/waxed_weathered_cut_copper.json new file mode 100644 index 00000000..15a90ec8 --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_cut_copper_slab.json b/assets/minecraft/items/waxed_weathered_cut_copper_slab.json new file mode 100644 index 00000000..0084def1 --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/waxed_weathered_cut_copper_stairs.json b/assets/minecraft/items/waxed_weathered_cut_copper_stairs.json new file mode 100644 index 00000000..2050ef4d --- /dev/null +++ b/assets/minecraft/items/waxed_weathered_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wayfinder_armor_trim_smithing_template.json b/assets/minecraft/items/wayfinder_armor_trim_smithing_template.json new file mode 100644 index 00000000..cd3ba959 --- /dev/null +++ b/assets/minecraft/items/wayfinder_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wayfinder_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_chiseled_copper.json b/assets/minecraft/items/weathered_chiseled_copper.json new file mode 100644 index 00000000..f046852b --- /dev/null +++ b/assets/minecraft/items/weathered_chiseled_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_chiseled_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_copper.json b/assets/minecraft/items/weathered_copper.json new file mode 100644 index 00000000..75710bc9 --- /dev/null +++ b/assets/minecraft/items/weathered_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_copper_bulb.json b/assets/minecraft/items/weathered_copper_bulb.json new file mode 100644 index 00000000..5866e1d3 --- /dev/null +++ b/assets/minecraft/items/weathered_copper_bulb.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper_bulb" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_copper_door.json b/assets/minecraft/items/weathered_copper_door.json new file mode 100644 index 00000000..4ec7f82f --- /dev/null +++ b/assets/minecraft/items/weathered_copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/weathered_copper_door" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_copper_grate.json b/assets/minecraft/items/weathered_copper_grate.json new file mode 100644 index 00000000..c23ee224 --- /dev/null +++ b/assets/minecraft/items/weathered_copper_grate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper_grate" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_copper_trapdoor.json b/assets/minecraft/items/weathered_copper_trapdoor.json new file mode 100644 index 00000000..d09a144f --- /dev/null +++ b/assets/minecraft/items/weathered_copper_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_copper_trapdoor_bottom" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_cut_copper.json b/assets/minecraft/items/weathered_cut_copper.json new file mode 100644 index 00000000..15a90ec8 --- /dev/null +++ b/assets/minecraft/items/weathered_cut_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_cut_copper" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_cut_copper_slab.json b/assets/minecraft/items/weathered_cut_copper_slab.json new file mode 100644 index 00000000..0084def1 --- /dev/null +++ b/assets/minecraft/items/weathered_cut_copper_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_cut_copper_slab" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weathered_cut_copper_stairs.json b/assets/minecraft/items/weathered_cut_copper_stairs.json new file mode 100644 index 00000000..2050ef4d --- /dev/null +++ b/assets/minecraft/items/weathered_cut_copper_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/weathered_cut_copper_stairs" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/weeping_vines.json b/assets/minecraft/items/weeping_vines.json new file mode 100644 index 00000000..3f169a7a --- /dev/null +++ b/assets/minecraft/items/weeping_vines.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/weeping_vines" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wet_sponge.json b/assets/minecraft/items/wet_sponge.json new file mode 100644 index 00000000..7e33cdd2 --- /dev/null +++ b/assets/minecraft/items/wet_sponge.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/wet_sponge" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wheat.json b/assets/minecraft/items/wheat.json new file mode 100644 index 00000000..f4fb4b7b --- /dev/null +++ b/assets/minecraft/items/wheat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wheat" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wheat_seeds.json b/assets/minecraft/items/wheat_seeds.json new file mode 100644 index 00000000..8ae46474 --- /dev/null +++ b/assets/minecraft/items/wheat_seeds.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wheat_seeds" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_banner.json b/assets/minecraft/items/white_banner.json new file mode 100644 index 00000000..f87b23e9 --- /dev/null +++ b/assets/minecraft/items/white_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "white" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_bed.json b/assets/minecraft/items/white_bed.json new file mode 100644 index 00000000..7e3aa006 --- /dev/null +++ b/assets/minecraft/items/white_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/white_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:white" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_bundle.json b/assets/minecraft/items/white_bundle.json new file mode 100644 index 00000000..05c547af --- /dev/null +++ b/assets/minecraft/items/white_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/white_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/white_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/white_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/white_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_candle.json b/assets/minecraft/items/white_candle.json new file mode 100644 index 00000000..6d60a581 --- /dev/null +++ b/assets/minecraft/items/white_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/white_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_carpet.json b/assets/minecraft/items/white_carpet.json new file mode 100644 index 00000000..d56e7f94 --- /dev/null +++ b/assets/minecraft/items/white_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_concrete.json b/assets/minecraft/items/white_concrete.json new file mode 100644 index 00000000..822c0565 --- /dev/null +++ b/assets/minecraft/items/white_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_concrete_powder.json b/assets/minecraft/items/white_concrete_powder.json new file mode 100644 index 00000000..56e5f763 --- /dev/null +++ b/assets/minecraft/items/white_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_dye.json b/assets/minecraft/items/white_dye.json new file mode 100644 index 00000000..2684014a --- /dev/null +++ b/assets/minecraft/items/white_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/white_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_glazed_terracotta.json b/assets/minecraft/items/white_glazed_terracotta.json new file mode 100644 index 00000000..5cb0220c --- /dev/null +++ b/assets/minecraft/items/white_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_shulker_box.json b/assets/minecraft/items/white_shulker_box.json new file mode 100644 index 00000000..3e4d8e80 --- /dev/null +++ b/assets/minecraft/items/white_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/white_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_white" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_stained_glass.json b/assets/minecraft/items/white_stained_glass.json new file mode 100644 index 00000000..ae78ae28 --- /dev/null +++ b/assets/minecraft/items/white_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_stained_glass_pane.json b/assets/minecraft/items/white_stained_glass_pane.json new file mode 100644 index 00000000..72f6e606 --- /dev/null +++ b/assets/minecraft/items/white_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/white_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_terracotta.json b/assets/minecraft/items/white_terracotta.json new file mode 100644 index 00000000..af76a078 --- /dev/null +++ b/assets/minecraft/items/white_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_tulip.json b/assets/minecraft/items/white_tulip.json new file mode 100644 index 00000000..d56307a2 --- /dev/null +++ b/assets/minecraft/items/white_tulip.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/white_tulip" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/white_wool.json b/assets/minecraft/items/white_wool.json new file mode 100644 index 00000000..709d4843 --- /dev/null +++ b/assets/minecraft/items/white_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/white_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wild_armor_trim_smithing_template.json b/assets/minecraft/items/wild_armor_trim_smithing_template.json new file mode 100644 index 00000000..37b2bf40 --- /dev/null +++ b/assets/minecraft/items/wild_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wild_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wind_charge.json b/assets/minecraft/items/wind_charge.json new file mode 100644 index 00000000..b9f3a063 --- /dev/null +++ b/assets/minecraft/items/wind_charge.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wind_charge" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/witch_spawn_egg.json b/assets/minecraft/items/witch_spawn_egg.json new file mode 100644 index 00000000..cf62f2ba --- /dev/null +++ b/assets/minecraft/items/witch_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -13369344 + }, + { + "type": "minecraft:constant", + "value": -11427778 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wither_rose.json b/assets/minecraft/items/wither_rose.json new file mode 100644 index 00000000..558c37f7 --- /dev/null +++ b/assets/minecraft/items/wither_rose.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wither_rose" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wither_skeleton_skull.json b/assets/minecraft/items/wither_skeleton_skull.json new file mode 100644 index 00000000..67302cda --- /dev/null +++ b/assets/minecraft/items/wither_skeleton_skull.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_skull", + "model": { + "type": "minecraft:head", + "kind": "wither_skeleton" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wither_skeleton_spawn_egg.json b/assets/minecraft/items/wither_skeleton_spawn_egg.json new file mode 100644 index 00000000..b59dd39d --- /dev/null +++ b/assets/minecraft/items/wither_skeleton_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15461356 + }, + { + "type": "minecraft:constant", + "value": -12104371 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wither_spawn_egg.json b/assets/minecraft/items/wither_spawn_egg.json new file mode 100644 index 00000000..c4081fb5 --- /dev/null +++ b/assets/minecraft/items/wither_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -15461356 + }, + { + "type": "minecraft:constant", + "value": -11701600 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wolf_armor.json b/assets/minecraft/items/wolf_armor.json new file mode 100644 index 00000000..443cc953 --- /dev/null +++ b/assets/minecraft/items/wolf_armor.json @@ -0,0 +1,25 @@ +{ + "model": { + "type": "minecraft:condition", + "component": "minecraft:dyed_color", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/wolf_armor" + }, + "on_true": { + "type": "minecraft:model", + "model": "minecraft:item/wolf_armor_dyed", + "tints": [ + { + "type": "minecraft:constant", + "value": -1 + }, + { + "type": "minecraft:dye", + "default": 0 + } + ] + }, + "property": "minecraft:has_component" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wolf_spawn_egg.json b/assets/minecraft/items/wolf_spawn_egg.json new file mode 100644 index 00000000..66528078 --- /dev/null +++ b/assets/minecraft/items/wolf_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -2632749 + }, + { + "type": "minecraft:constant", + "value": -3231850 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wooden_axe.json b/assets/minecraft/items/wooden_axe.json new file mode 100644 index 00000000..1794004d --- /dev/null +++ b/assets/minecraft/items/wooden_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wooden_axe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wooden_hoe.json b/assets/minecraft/items/wooden_hoe.json new file mode 100644 index 00000000..33fa0070 --- /dev/null +++ b/assets/minecraft/items/wooden_hoe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wooden_hoe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wooden_pickaxe.json b/assets/minecraft/items/wooden_pickaxe.json new file mode 100644 index 00000000..353c33e0 --- /dev/null +++ b/assets/minecraft/items/wooden_pickaxe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wooden_pickaxe" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wooden_shovel.json b/assets/minecraft/items/wooden_shovel.json new file mode 100644 index 00000000..5fbb6c68 --- /dev/null +++ b/assets/minecraft/items/wooden_shovel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wooden_shovel" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/wooden_sword.json b/assets/minecraft/items/wooden_sword.json new file mode 100644 index 00000000..aacc2b94 --- /dev/null +++ b/assets/minecraft/items/wooden_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wooden_sword" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/writable_book.json b/assets/minecraft/items/writable_book.json new file mode 100644 index 00000000..6cea1bd9 --- /dev/null +++ b/assets/minecraft/items/writable_book.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/writable_book" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/written_book.json b/assets/minecraft/items/written_book.json new file mode 100644 index 00000000..e49699a3 --- /dev/null +++ b/assets/minecraft/items/written_book.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/written_book" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_banner.json b/assets/minecraft/items/yellow_banner.json new file mode 100644 index 00000000..1acffce4 --- /dev/null +++ b/assets/minecraft/items/yellow_banner.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_banner", + "model": { + "type": "minecraft:banner", + "color": "yellow" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_bed.json b/assets/minecraft/items/yellow_bed.json new file mode 100644 index 00000000..184bfe99 --- /dev/null +++ b/assets/minecraft/items/yellow_bed.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/yellow_bed", + "model": { + "type": "minecraft:bed", + "texture": "minecraft:yellow" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_bundle.json b/assets/minecraft/items/yellow_bundle.json new file mode 100644 index 00000000..d37eca64 --- /dev/null +++ b/assets/minecraft/items/yellow_bundle.json @@ -0,0 +1,39 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/yellow_bundle" + }, + "on_true": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "minecraft:item/yellow_bundle_open_back" + }, + { + "type": "minecraft:bundle/selected_item" + }, + { + "type": "minecraft:model", + "model": "minecraft:item/yellow_bundle_open_front" + } + ] + }, + "property": "minecraft:bundle/has_selected_item" + }, + "when": "gui" + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/yellow_bundle" + }, + "property": "minecraft:display_context" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_candle.json b/assets/minecraft/items/yellow_candle.json new file mode 100644 index 00000000..5ed2d61e --- /dev/null +++ b/assets/minecraft/items/yellow_candle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/yellow_candle" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_carpet.json b/assets/minecraft/items/yellow_carpet.json new file mode 100644 index 00000000..2f270df8 --- /dev/null +++ b/assets/minecraft/items/yellow_carpet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_carpet" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_concrete.json b/assets/minecraft/items/yellow_concrete.json new file mode 100644 index 00000000..c55b15f1 --- /dev/null +++ b/assets/minecraft/items/yellow_concrete.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_concrete" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_concrete_powder.json b/assets/minecraft/items/yellow_concrete_powder.json new file mode 100644 index 00000000..839a491d --- /dev/null +++ b/assets/minecraft/items/yellow_concrete_powder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_concrete_powder" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_dye.json b/assets/minecraft/items/yellow_dye.json new file mode 100644 index 00000000..a56a986b --- /dev/null +++ b/assets/minecraft/items/yellow_dye.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/yellow_dye" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_glazed_terracotta.json b/assets/minecraft/items/yellow_glazed_terracotta.json new file mode 100644 index 00000000..3da8eb40 --- /dev/null +++ b/assets/minecraft/items/yellow_glazed_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_glazed_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_shulker_box.json b/assets/minecraft/items/yellow_shulker_box.json new file mode 100644 index 00000000..bd78cb72 --- /dev/null +++ b/assets/minecraft/items/yellow_shulker_box.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/yellow_shulker_box", + "model": { + "type": "minecraft:shulker_box", + "texture": "minecraft:shulker_yellow" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_stained_glass.json b/assets/minecraft/items/yellow_stained_glass.json new file mode 100644 index 00000000..e4f6432a --- /dev/null +++ b/assets/minecraft/items/yellow_stained_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_stained_glass" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_stained_glass_pane.json b/assets/minecraft/items/yellow_stained_glass_pane.json new file mode 100644 index 00000000..bf3c0337 --- /dev/null +++ b/assets/minecraft/items/yellow_stained_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/yellow_stained_glass_pane" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_terracotta.json b/assets/minecraft/items/yellow_terracotta.json new file mode 100644 index 00000000..411c0705 --- /dev/null +++ b/assets/minecraft/items/yellow_terracotta.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_terracotta" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/yellow_wool.json b/assets/minecraft/items/yellow_wool.json new file mode 100644 index 00000000..7e1fa953 --- /dev/null +++ b/assets/minecraft/items/yellow_wool.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:block/yellow_wool" + } +} \ No newline at end of file diff --git a/assets/minecraft/items/zoglin_spawn_egg.json b/assets/minecraft/items/zoglin_spawn_egg.json new file mode 100644 index 00000000..2c763328 --- /dev/null +++ b/assets/minecraft/items/zoglin_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -3772843 + }, + { + "type": "minecraft:constant", + "value": -1644826 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/zombie_head.json b/assets/minecraft/items/zombie_head.json new file mode 100644 index 00000000..f30d13bb --- /dev/null +++ b/assets/minecraft/items/zombie_head.json @@ -0,0 +1,10 @@ +{ + "model": { + "type": "minecraft:special", + "base": "minecraft:item/template_skull", + "model": { + "type": "minecraft:head", + "kind": "zombie" + } + } +} \ No newline at end of file diff --git a/assets/minecraft/items/zombie_horse_spawn_egg.json b/assets/minecraft/items/zombie_horse_spawn_egg.json new file mode 100644 index 00000000..142a150e --- /dev/null +++ b/assets/minecraft/items/zombie_horse_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -13544908 + }, + { + "type": "minecraft:constant", + "value": -6831484 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/zombie_spawn_egg.json b/assets/minecraft/items/zombie_spawn_egg.json new file mode 100644 index 00000000..eb8b35cb --- /dev/null +++ b/assets/minecraft/items/zombie_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -16732241 + }, + { + "type": "minecraft:constant", + "value": -8807323 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/zombie_villager_spawn_egg.json b/assets/minecraft/items/zombie_villager_spawn_egg.json new file mode 100644 index 00000000..f351c001 --- /dev/null +++ b/assets/minecraft/items/zombie_villager_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -11125709 + }, + { + "type": "minecraft:constant", + "value": -8807323 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/items/zombified_piglin_spawn_egg.json b/assets/minecraft/items/zombified_piglin_spawn_egg.json new file mode 100644 index 00000000..9be3d478 --- /dev/null +++ b/assets/minecraft/items/zombified_piglin_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -1404013 + }, + { + "type": "minecraft:constant", + "value": -11767511 + } + ] + } +} \ No newline at end of file diff --git a/assets/minecraft/lang/deprecated.json b/assets/minecraft/lang/deprecated.json index b7987e7a..531668eb 100644 --- a/assets/minecraft/lang/deprecated.json +++ b/assets/minecraft/lang/deprecated.json @@ -24,7 +24,10 @@ "dataPack.update_1_20.name", "dataPack.update_1_21.description", "dataPack.update_1_21.name", + "dataPack.winter_drop.description", + "dataPack.winter_drop.name", "deathScreen.score", + "entity.minecraft.creaking_transient", "event.minecraft.raid.defeat", "event.minecraft.raid.victory", "gui.abuseReport.reason.false_reporting", @@ -179,6 +182,8 @@ "subtitles.entity.goat.step", "subtitles.entity.hoglin.step", "subtitles.entity.llama.step", + "subtitles.entity.minecart.inside", + "subtitles.entity.minecart.inside_underwater", "subtitles.entity.panda.step", "subtitles.entity.piglin_brute.step", "subtitles.entity.piglin.step", @@ -231,7 +236,11 @@ "attribute.name.zombie.spawn_reinforcements", "realms.missing.snapshot.error.text", "entity.minecraft.boat", - "entity.minecraft.chest_boat" + "entity.minecraft.chest_boat", + "subtitles.ambient.cave", + "subtitles.block.creaking_heart.idle", + "subtitles.block.eyeblossom.idle", + "subtitles.block.generic.idle" ], "renamed": { "item.minecraft.dune_armor_trim_smithing_template.new": "item.minecraft.dune_armor_trim_smithing_template", @@ -267,6 +276,9 @@ "selectWorld.allowCommands.new": "selectWorld.allowCommands", "gui.abuseReport.reason.generic": "gui.abuseReport.reason.i_want_to_report_them", "gui.abuseReport.reason.generic.description": "gui.abuseReport.reason.i_want_to_report_them.description", - "commands.drop.no_loot_table": "commands.drop.no_loot_table.entity" + "commands.drop.no_loot_table": "commands.drop.no_loot_table.entity", + "item.op_block_warning.line1": "item.op_warning.line1", + "item.op_block_warning.line2": "item.op_warning.line2", + "item.op_block_warning.line3": "item.op_warning.line3" } } diff --git a/assets/minecraft/lang/en_us.json b/assets/minecraft/lang/en_us.json index ea1055b5..c32a35d3 100644 --- a/assets/minecraft/lang/en_us.json +++ b/assets/minecraft/lang/en_us.json @@ -1429,6 +1429,7 @@ "block.minecraft.chiseled_polished_blackstone": "Chiseled Polished Blackstone", "block.minecraft.chiseled_quartz_block": "Chiseled Quartz Block", "block.minecraft.chiseled_red_sandstone": "Chiseled Red Sandstone", + "block.minecraft.chiseled_resin_bricks": "Chiseled Resin Bricks", "block.minecraft.chiseled_sandstone": "Chiseled Sandstone", "block.minecraft.chiseled_stone_bricks": "Chiseled Stone Bricks", "block.minecraft.chiseled_tuff": "Chiseled Tuff", @@ -1436,6 +1437,7 @@ "block.minecraft.chorus_flower": "Chorus Flower", "block.minecraft.chorus_plant": "Chorus Plant", "block.minecraft.clay": "Clay", + "block.minecraft.closed_eyeblossom": "Closed Eyeblossom", "block.minecraft.coal_block": "Block of Coal", "block.minecraft.coal_ore": "Coal Ore", "block.minecraft.coarse_dirt": "Coarse Dirt", @@ -1856,6 +1858,7 @@ "block.minecraft.obsidian": "Obsidian", "block.minecraft.ochre_froglight": "Ochre Froglight", "block.minecraft.ominous_banner": "Ominous Banner", + "block.minecraft.open_eyeblossom": "Open Eyeblossom", "block.minecraft.orange_banner": "Orange Banner", "block.minecraft.orange_bed": "Orange Bed", "block.minecraft.orange_candle": "Orange Candle", @@ -1971,6 +1974,7 @@ "block.minecraft.potted_brown_mushroom": "Potted Brown Mushroom", "block.minecraft.potted_cactus": "Potted Cactus", "block.minecraft.potted_cherry_sapling": "Potted Cherry Sapling", + "block.minecraft.potted_closed_eyeblossom": "Potted Closed Eyeblossom", "block.minecraft.potted_cornflower": "Potted Cornflower", "block.minecraft.potted_crimson_fungus": "Potted Crimson Fungus", "block.minecraft.potted_crimson_roots": "Potted Crimson Roots", @@ -1983,6 +1987,7 @@ "block.minecraft.potted_lily_of_the_valley": "Potted Lily of the Valley", "block.minecraft.potted_mangrove_propagule": "Potted Mangrove Propagule", "block.minecraft.potted_oak_sapling": "Potted Oak Sapling", + "block.minecraft.potted_open_eyeblossom": "Potted Open Eyeblossom", "block.minecraft.potted_orange_tulip": "Potted Orange Tulip", "block.minecraft.potted_oxeye_daisy": "Potted Oxeye Daisy", "block.minecraft.potted_pale_oak_sapling": "Potted Pale Oak Sapling", @@ -2068,6 +2073,12 @@ "block.minecraft.reinforced_deepslate": "Reinforced Deepslate", "block.minecraft.repeater": "Redstone Repeater", "block.minecraft.repeating_command_block": "Repeating Command Block", + "block.minecraft.resin_block": "Block of Resin", + "block.minecraft.resin_brick_slab": "Resin Brick Slab", + "block.minecraft.resin_brick_stairs": "Resin Brick Stairs", + "block.minecraft.resin_brick_wall": "Resin Brick Wall", + "block.minecraft.resin_bricks": "Resin Bricks", + "block.minecraft.resin_clump": "Resin Clump", "block.minecraft.respawn_anchor": "Respawn Anchor", "block.minecraft.rooted_dirt": "Rooted Dirt", "block.minecraft.rose_bush": "Rose Bush", @@ -2431,6 +2442,7 @@ "commands.advancement.revoke.one.to.one.failure": "Couldn't revoke advancement %s from %s as they don't have it", "commands.advancement.revoke.one.to.one.success": "Revoked the advancement %s from %s", "commands.attribute.base_value.get.success": "Base value of attribute %s for entity %s is %s", + "commands.attribute.base_value.reset.success": "Base value for attribute %s for entity %s reset to default %s", "commands.attribute.base_value.set.success": "Base value for attribute %s for entity %s set to %s", "commands.attribute.failed.entity": "%s is not a valid entity for this command", "commands.attribute.failed.modifier_already_present": "Modifier %s is already present on attribute %s for entity %s", @@ -4358,6 +4370,8 @@ "item.minecraft.red_bundle": "Red Bundle", "item.minecraft.red_dye": "Red Dye", "item.minecraft.redstone": "Redstone Dust", + "item.minecraft.resin_brick": "Resin Brick", + "item.minecraft.resin_clump": "Resin Clump", "item.minecraft.rib_armor_trim_smithing_template": "Smithing Template", "item.minecraft.rib_armor_trim_smithing_template.new": "Rib Armor Trim", "item.minecraft.rotten_flesh": "Rotten Flesh", @@ -4569,6 +4583,9 @@ "item.modifiers.mainhand": "When in Main Hand:", "item.modifiers.offhand": "When in Off Hand:", "item.nbt_tags": "NBT: %s tag(s)", + "item.op_block_warning.line1": "Warning:", + "item.op_block_warning.line2": "Use of this item might lead to command execution", + "item.op_block_warning.line3": "Do not use unless you know the exact contents!", "item.unbreakable": "Unbreakable", "itemGroup.buildingBlocks": "Building Blocks", "itemGroup.coloredBlocks": "Colored Blocks", @@ -5999,6 +6016,7 @@ "structure_block.size.z": "structure size z", "structure_block.structure_name": "Structure Name", "subtitles.ambient.cave": "Eerie noise", + "subtitles.ambient.sound": "Eerie noise", "subtitles.block.amethyst_block.chime": "Amethyst chimes", "subtitles.block.amethyst_block.resonate": "Amethyst resonates", "subtitles.block.anvil.destroy": "Anvil destroyed", @@ -6050,7 +6068,7 @@ "subtitles.block.copper_trapdoor.open": "Trapdoor opens", "subtitles.block.crafter.craft": "Crafter crafts", "subtitles.block.crafter.fail": "Crafter fails crafting", - "subtitles.block.creaking_heart.hurt": "Creaking Heart screams", + "subtitles.block.creaking_heart.hurt": "Creaking Heart grumbles", "subtitles.block.creaking_heart.idle": "Eerie noise", "subtitles.block.creaking_heart.spawn": "Creaking Heart awakens", "subtitles.block.decorated_pot.insert": "Decorated Pot fills", @@ -6062,12 +6080,16 @@ "subtitles.block.enchantment_table.use": "Enchanting Table used", "subtitles.block.end_portal_frame.fill": "Eye of Ender attaches", "subtitles.block.end_portal.spawn": "End Portal opens", + "subtitles.block.eyeblossom.close": "Eyeblossom closes", + "subtitles.block.eyeblossom.idle": "Eyeblossom whispers", + "subtitles.block.eyeblossom.open": "Eyeblossom opens", "subtitles.block.fence_gate.toggle": "Fence Gate creaks", "subtitles.block.fire.ambient": "Fire crackles", "subtitles.block.fire.extinguish": "Fire extinguished", "subtitles.block.frogspawn.hatch": "Tadpole hatches", "subtitles.block.furnace.fire_crackle": "Furnace crackles", "subtitles.block.generic.break": "Block broken", + "subtitles.block.generic.fall": "Something falls on a block", "subtitles.block.generic.footsteps": "Footsteps", "subtitles.block.generic.hit": "Block breaking", "subtitles.block.generic.place": "Block placed", @@ -6240,15 +6262,15 @@ "subtitles.entity.cow.death": "Cow dies", "subtitles.entity.cow.hurt": "Cow hurts", "subtitles.entity.cow.milk": "Cow gets milked", - "subtitles.entity.creaking.activate": "Creaking activates", + "subtitles.entity.creaking.activate": "Creaking watches", "subtitles.entity.creaking.ambient": "Creaking creaks", - "subtitles.entity.creaking.angry": "Creaking sees player", "subtitles.entity.creaking.attack": "Creaking attacks", - "subtitles.entity.creaking.deactivate": "Creaking deactivates", - "subtitles.entity.creaking.death": "Creaking dies", + "subtitles.entity.creaking.deactivate": "Creaking calms", + "subtitles.entity.creaking.death": "Creaking crumbles", "subtitles.entity.creaking.freeze": "Creaking stops", - "subtitles.entity.creaking.spawn": "Creaking lives", - "subtitles.entity.creaking.sway": "Creaking is shielded", + "subtitles.entity.creaking.spawn": "Creaking manifests", + "subtitles.entity.creaking.sway": "Creaking is hit", + "subtitles.entity.creaking.twitch": "Creaking twitches", "subtitles.entity.creaking.unfreeze": "Creaking moves", "subtitles.entity.creeper.death": "Creeper dies", "subtitles.entity.creeper.hurt": "Creeper hurts", @@ -6315,6 +6337,7 @@ "subtitles.entity.firework_rocket.blast": "Firework blasts", "subtitles.entity.firework_rocket.launch": "Firework launches", "subtitles.entity.firework_rocket.twinkle": "Firework twinkles", + "subtitles.entity.fish.swim": "Splashes", "subtitles.entity.fishing_bobber.retrieve": "Bobber retrieved", "subtitles.entity.fishing_bobber.splash": "Fishing Bobber splashes", "subtitles.entity.fishing_bobber.throw": "Bobber thrown", @@ -6434,6 +6457,8 @@ "subtitles.entity.magma_cube.death": "Magma Cube dies", "subtitles.entity.magma_cube.hurt": "Magma Cube hurts", "subtitles.entity.magma_cube.squish": "Magma Cube squishes", + "subtitles.entity.minecart.inside": "Minecart jangles", + "subtitles.entity.minecart.inside_underwater": "Minecart jangles underwater", "subtitles.entity.minecart.riding": "Minecart rolls", "subtitles.entity.mooshroom.convert": "Mooshroom transforms", "subtitles.entity.mooshroom.eat": "Mooshroom eats", @@ -6590,6 +6615,7 @@ "subtitles.entity.skeleton_horse.ambient": "Skeleton Horse cries", "subtitles.entity.skeleton_horse.death": "Skeleton Horse dies", "subtitles.entity.skeleton_horse.hurt": "Skeleton Horse hurts", + "subtitles.entity.skeleton_horse.jump_water": "Skeleton Horse jumps", "subtitles.entity.skeleton_horse.swim": "Skeleton Horse swims", "subtitles.entity.skeleton.ambient": "Skeleton rattles", "subtitles.entity.skeleton.converted_to_stray": "Skeleton converts to Stray", @@ -6802,6 +6828,7 @@ "subtitles.item.crossbow.load": "Crossbow loads", "subtitles.item.crossbow.shoot": "Crossbow fires", "subtitles.item.dye.use": "Dye stains", + "subtitles.item.elytra.flying": "Swoosh", "subtitles.item.firecharge.use": "Fireball whooshes", "subtitles.item.flintandsteel.use": "Flint and Steel click", "subtitles.item.glow_ink_sac.use": "Glow Ink Sac splotches", @@ -6936,6 +6963,7 @@ "trim_material.minecraft.netherite": "Netherite Material", "trim_material.minecraft.quartz": "Quartz Material", "trim_material.minecraft.redstone": "Redstone Material", + "trim_material.minecraft.resin": "Resin Material", "trim_pattern.minecraft.bolt": "Bolt Armor Trim", "trim_pattern.minecraft.coast": "Coast Armor Trim", "trim_pattern.minecraft.dune": "Dune Armor Trim", diff --git a/assets/minecraft/models/block/air.json b/assets/minecraft/models/block/air.json index 2c63c085..e7062e63 100644 --- a/assets/minecraft/models/block/air.json +++ b/assets/minecraft/models/block/air.json @@ -1,2 +1,5 @@ { + "textures": { + "particle": "minecraft:missingno" + } } diff --git a/assets/minecraft/models/block/chiseled_resin_bricks.json b/assets/minecraft/models/block/chiseled_resin_bricks.json new file mode 100644 index 00000000..16b8f9af --- /dev/null +++ b/assets/minecraft/models/block/chiseled_resin_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "minecraft:block/chiseled_resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/closed_eyeblossom.json b/assets/minecraft/models/block/closed_eyeblossom.json new file mode 100644 index 00000000..a99d9a51 --- /dev/null +++ b/assets/minecraft/models/block/closed_eyeblossom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "minecraft:block/closed_eyeblossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/cross_emissive.json b/assets/minecraft/models/block/cross_emissive.json new file mode 100644 index 00000000..d8fe3490 --- /dev/null +++ b/assets/minecraft/models/block/cross_emissive.json @@ -0,0 +1,46 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#cross" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" } + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "light_emission": 15, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "light_emission": 15, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" } + } + } + ] +} diff --git a/assets/minecraft/models/block/custom_fence_inventory.json b/assets/minecraft/models/block/custom_fence_inventory.json index 7baa4a1e..8de00b6d 100644 --- a/assets/minecraft/models/block/custom_fence_inventory.json +++ b/assets/minecraft/models/block/custom_fence_inventory.json @@ -12,6 +12,9 @@ "scale":[ 0.5, 0.5, 0.5 ] } }, + "textures": { + "particle": "#texture" + }, "elements": [ { "from": [ 6, 0, 0 ], "to": [ 10, 16, 4 ], diff --git a/assets/minecraft/models/block/custom_fence_side_east.json b/assets/minecraft/models/block/custom_fence_side_east.json index 1177bf20..9a4bc2de 100644 --- a/assets/minecraft/models/block/custom_fence_side_east.json +++ b/assets/minecraft/models/block/custom_fence_side_east.json @@ -1,4 +1,7 @@ { + "textures": { + "particle": "#texture" + }, "elements": [ { "name": "top bar", diff --git a/assets/minecraft/models/block/custom_fence_side_north.json b/assets/minecraft/models/block/custom_fence_side_north.json index d96583ef..a99e1820 100644 --- a/assets/minecraft/models/block/custom_fence_side_north.json +++ b/assets/minecraft/models/block/custom_fence_side_north.json @@ -1,4 +1,7 @@ { + "textures": { + "particle": "#texture" + }, "elements": [ { "name": "top bar", diff --git a/assets/minecraft/models/block/custom_fence_side_south.json b/assets/minecraft/models/block/custom_fence_side_south.json index 9186ac0a..9c7c4669 100644 --- a/assets/minecraft/models/block/custom_fence_side_south.json +++ b/assets/minecraft/models/block/custom_fence_side_south.json @@ -1,4 +1,7 @@ { + "textures": { + "particle": "#texture" + }, "elements": [ { "name": "top bar", diff --git a/assets/minecraft/models/block/custom_fence_side_west.json b/assets/minecraft/models/block/custom_fence_side_west.json index 9c33406c..8bca73fe 100644 --- a/assets/minecraft/models/block/custom_fence_side_west.json +++ b/assets/minecraft/models/block/custom_fence_side_west.json @@ -1,4 +1,7 @@ { + "textures": { + "particle": "#texture" + }, "elements": [ { "name": "top bar", diff --git a/assets/minecraft/models/block/end_gateway.json b/assets/minecraft/models/block/end_gateway.json new file mode 100644 index 00000000..ae6b33b2 --- /dev/null +++ b/assets/minecraft/models/block/end_gateway.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "minecraft:block/obsidian" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/flower_pot_cross_emissive.json b/assets/minecraft/models/block/flower_pot_cross_emissive.json new file mode 100644 index 00000000..e8fd2d53 --- /dev/null +++ b/assets/minecraft/models/block/flower_pot_cross_emissive.json @@ -0,0 +1,95 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "block/flower_pot", + "flowerpot": "block/flower_pot", + "dirt": "block/dirt" + }, + "elements": [ + { "from": [ 5, 0, 5 ], + "to": [ 6, 6, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 10, 0, 5 ], + "to": [ 11, 6, 11 ], + "faces": { + "down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 5 ], + "to": [ 10, 6, 6 ], + "faces": { + "down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 10 ], + "to": [ 10, 6, 11 ], + "faces": { + "down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 6 ], + "to": [ 10, 4, 10 ], + "faces": { + "down": { "uv": [ 6, 12, 10, 16 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" } + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant" } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant" } + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "light_emission": 15, + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "light_emission": 15, + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" } + } + } + ] +} diff --git a/assets/minecraft/models/block/open_eyeblossom.json b/assets/minecraft/models/block/open_eyeblossom.json new file mode 100644 index 00000000..1d2194bb --- /dev/null +++ b/assets/minecraft/models/block/open_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross_emissive", + "textures": { + "cross": "minecraft:block/open_eyeblossom", + "cross_emissive": "minecraft:block/open_eyeblossom_emissive" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/potted_closed_eyeblossom.json b/assets/minecraft/models/block/potted_closed_eyeblossom.json new file mode 100644 index 00000000..12f3acbe --- /dev/null +++ b/assets/minecraft/models/block/potted_closed_eyeblossom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "minecraft:block/closed_eyeblossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/potted_open_eyeblossom.json b/assets/minecraft/models/block/potted_open_eyeblossom.json new file mode 100644 index 00000000..adcdc0e4 --- /dev/null +++ b/assets/minecraft/models/block/potted_open_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross_emissive", + "textures": { + "cross_emissive": "minecraft:block/open_eyeblossom_emissive", + "plant": "minecraft:block/open_eyeblossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_block.json b/assets/minecraft/models/block/resin_block.json new file mode 100644 index 00000000..00105c85 --- /dev/null +++ b/assets/minecraft/models/block/resin_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "minecraft:block/resin_block" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_slab.json b/assets/minecraft/models/block/resin_brick_slab.json new file mode 100644 index 00000000..2bfd9fd3 --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/resin_bricks", + "side": "minecraft:block/resin_bricks", + "top": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_slab_top.json b/assets/minecraft/models/block/resin_brick_slab_top.json new file mode 100644 index 00000000..4e4c9f7f --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/resin_bricks", + "side": "minecraft:block/resin_bricks", + "top": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_stairs.json b/assets/minecraft/models/block/resin_brick_stairs.json new file mode 100644 index 00000000..bd7641da --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/resin_bricks", + "side": "minecraft:block/resin_bricks", + "top": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_stairs_inner.json b/assets/minecraft/models/block/resin_brick_stairs_inner.json new file mode 100644 index 00000000..c047a26e --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/resin_bricks", + "side": "minecraft:block/resin_bricks", + "top": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_stairs_outer.json b/assets/minecraft/models/block/resin_brick_stairs_outer.json new file mode 100644 index 00000000..224ab606 --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/resin_bricks", + "side": "minecraft:block/resin_bricks", + "top": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_wall_inventory.json b/assets/minecraft/models/block/resin_brick_wall_inventory.json new file mode 100644 index 00000000..3df22e2a --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_wall_post.json b/assets/minecraft/models/block/resin_brick_wall_post.json new file mode 100644 index 00000000..6279361f --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_wall_side.json b/assets/minecraft/models/block/resin_brick_wall_side.json new file mode 100644 index 00000000..60f1aa1d --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_brick_wall_side_tall.json b/assets/minecraft/models/block/resin_brick_wall_side_tall.json new file mode 100644 index 00000000..d72cfbaf --- /dev/null +++ b/assets/minecraft/models/block/resin_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_bricks.json b/assets/minecraft/models/block/resin_bricks.json new file mode 100644 index 00000000..60373f8e --- /dev/null +++ b/assets/minecraft/models/block/resin_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "minecraft:block/resin_bricks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/block/resin_clump.json b/assets/minecraft/models/block/resin_clump.json new file mode 100644 index 00000000..5f2f603d --- /dev/null +++ b/assets/minecraft/models/block/resin_clump.json @@ -0,0 +1,16 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "block/resin_clump", + "texture": "block/resin_clump" + }, + "elements": [ + { "from": [ 0, 0, 0.1 ], + "to": [ 16, 16, 0.1 ], + "faces": { + "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/assets/minecraft/models/block/sculk_vein.json b/assets/minecraft/models/block/sculk_vein.json index 03f39419..808c3ca9 100644 --- a/assets/minecraft/models/block/sculk_vein.json +++ b/assets/minecraft/models/block/sculk_vein.json @@ -8,7 +8,7 @@ { "from": [ 0, 0, 0.1 ], "to": [ 16, 16, 0.1 ], "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#sculk_vein" }, + "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#sculk_vein" }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#sculk_vein" } } } diff --git a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_left.json b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_left.json index ee8a35b9..f224a1e8 100644 --- a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_left.json +++ b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_left.json @@ -1,6 +1,6 @@ { "textures": { - "texture": "#texture" + "particle": "#texture" }, "elements": [ { diff --git a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_mid.json b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_mid.json index f29dadfc..a1c54d92 100644 --- a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_mid.json +++ b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_mid.json @@ -1,7 +1,7 @@ { - "textures": { - "texture": "#texture" - }, + "textures": { + "particle": "#texture" + }, "elements": [ { "from": [5, 0, 0], diff --git a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_right.json b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_right.json index c4ccaaff..5acdabdf 100644 --- a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_right.json +++ b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_bottom_right.json @@ -1,7 +1,7 @@ { - "textures": { - "texture": "#texture" - }, + "textures": { + "particle": "#texture" + }, "elements": [ { "from": [0, 0, 0], diff --git a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_left.json b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_left.json index 77dcb59a..da9fc591 100644 --- a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_left.json +++ b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_left.json @@ -1,7 +1,7 @@ { - "textures": { - "texture": "#texture" - }, + "textures": { + "particle": "#texture" + }, "elements": [ { "from": [10, 8, 0], diff --git a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_mid.json b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_mid.json index 736bf09c..25cc8308 100644 --- a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_mid.json +++ b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_mid.json @@ -1,7 +1,7 @@ { - "textures": { - "texture": "#texture" - }, + "textures": { + "particle": "#texture" + }, "elements": [ { "from": [5, 8, 0], diff --git a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_right.json b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_right.json index 072a1eef..077f1276 100644 --- a/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_right.json +++ b/assets/minecraft/models/block/template_chiseled_bookshelf_slot_top_right.json @@ -1,7 +1,7 @@ { - "textures": { - "texture": "#texture" - }, + "textures": { + "particle": "#texture" + }, "elements": [ { "from": [0, 8, 0], diff --git a/assets/minecraft/models/block/trapped_chest.json b/assets/minecraft/models/block/trapped_chest.json new file mode 100644 index 00000000..9406a849 --- /dev/null +++ b/assets/minecraft/models/block/trapped_chest.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "minecraft:block/oak_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_button.json b/assets/minecraft/models/item/acacia_button.json deleted file mode 100644 index d5affffa..00000000 --- a/assets/minecraft/models/item/acacia_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_fence.json b/assets/minecraft/models/item/acacia_fence.json deleted file mode 100644 index 4db3c891..00000000 --- a/assets/minecraft/models/item/acacia_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_fence_gate.json b/assets/minecraft/models/item/acacia_fence_gate.json deleted file mode 100644 index f5875533..00000000 --- a/assets/minecraft/models/item/acacia_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_leaves.json b/assets/minecraft/models/item/acacia_leaves.json deleted file mode 100644 index b1ef8fa9..00000000 --- a/assets/minecraft/models/item/acacia_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_log.json b/assets/minecraft/models/item/acacia_log.json deleted file mode 100644 index 0b9f607e..00000000 --- a/assets/minecraft/models/item/acacia_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_planks.json b/assets/minecraft/models/item/acacia_planks.json deleted file mode 100644 index 3c90abef..00000000 --- a/assets/minecraft/models/item/acacia_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_pressure_plate.json b/assets/minecraft/models/item/acacia_pressure_plate.json deleted file mode 100644 index 318e49ad..00000000 --- a/assets/minecraft/models/item/acacia_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_slab.json b/assets/minecraft/models/item/acacia_slab.json deleted file mode 100644 index bb3480c7..00000000 --- a/assets/minecraft/models/item/acacia_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_stairs.json b/assets/minecraft/models/item/acacia_stairs.json deleted file mode 100644 index 58ab5e2d..00000000 --- a/assets/minecraft/models/item/acacia_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_trapdoor.json b/assets/minecraft/models/item/acacia_trapdoor.json deleted file mode 100644 index 701a6862..00000000 --- a/assets/minecraft/models/item/acacia_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/acacia_wood.json b/assets/minecraft/models/item/acacia_wood.json deleted file mode 100644 index 4a5086de..00000000 --- a/assets/minecraft/models/item/acacia_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/acacia_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/air.json b/assets/minecraft/models/item/air.json index 2c63c085..e7062e63 100644 --- a/assets/minecraft/models/item/air.json +++ b/assets/minecraft/models/item/air.json @@ -1,2 +1,5 @@ { + "textures": { + "particle": "minecraft:missingno" + } } diff --git a/assets/minecraft/models/item/allay_spawn_egg.json b/assets/minecraft/models/item/allay_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/allay_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/amethyst_block.json b/assets/minecraft/models/item/amethyst_block.json deleted file mode 100644 index b4899515..00000000 --- a/assets/minecraft/models/item/amethyst_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/amethyst_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ancient_debris.json b/assets/minecraft/models/item/ancient_debris.json deleted file mode 100644 index f8c6c3d5..00000000 --- a/assets/minecraft/models/item/ancient_debris.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/ancient_debris" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/andesite.json b/assets/minecraft/models/item/andesite.json deleted file mode 100644 index d6b76e17..00000000 --- a/assets/minecraft/models/item/andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/andesite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/andesite_slab.json b/assets/minecraft/models/item/andesite_slab.json deleted file mode 100644 index 4bd78770..00000000 --- a/assets/minecraft/models/item/andesite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/andesite_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/andesite_stairs.json b/assets/minecraft/models/item/andesite_stairs.json deleted file mode 100644 index 03e452df..00000000 --- a/assets/minecraft/models/item/andesite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/andesite_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/andesite_wall.json b/assets/minecraft/models/item/andesite_wall.json deleted file mode 100644 index f10f1ec3..00000000 --- a/assets/minecraft/models/item/andesite_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/andesite_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/anvil.json b/assets/minecraft/models/item/anvil.json deleted file mode 100644 index 9168b26b..00000000 --- a/assets/minecraft/models/item/anvil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/anvil" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/armadillo_spawn_egg.json b/assets/minecraft/models/item/armadillo_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/armadillo_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/axolotl_spawn_egg.json b/assets/minecraft/models/item/axolotl_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/axolotl_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/azalea.json b/assets/minecraft/models/item/azalea.json deleted file mode 100644 index 062330c7..00000000 --- a/assets/minecraft/models/item/azalea.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/azalea" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/azalea_leaves.json b/assets/minecraft/models/item/azalea_leaves.json deleted file mode 100644 index 6b26318b..00000000 --- a/assets/minecraft/models/item/azalea_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/azalea_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_block.json b/assets/minecraft/models/item/bamboo_block.json deleted file mode 100644 index f75fac0f..00000000 --- a/assets/minecraft/models/item/bamboo_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_button.json b/assets/minecraft/models/item/bamboo_button.json deleted file mode 100644 index c1152b50..00000000 --- a/assets/minecraft/models/item/bamboo_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_fence.json b/assets/minecraft/models/item/bamboo_fence.json deleted file mode 100644 index 2b11ca8c..00000000 --- a/assets/minecraft/models/item/bamboo_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_fence_gate.json b/assets/minecraft/models/item/bamboo_fence_gate.json deleted file mode 100644 index eba9a06e..00000000 --- a/assets/minecraft/models/item/bamboo_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_mosaic.json b/assets/minecraft/models/item/bamboo_mosaic.json deleted file mode 100644 index 6892f31f..00000000 --- a/assets/minecraft/models/item/bamboo_mosaic.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_mosaic" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_mosaic_slab.json b/assets/minecraft/models/item/bamboo_mosaic_slab.json deleted file mode 100644 index d7b3e3e2..00000000 --- a/assets/minecraft/models/item/bamboo_mosaic_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_mosaic_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_mosaic_stairs.json b/assets/minecraft/models/item/bamboo_mosaic_stairs.json deleted file mode 100644 index e6ae86d0..00000000 --- a/assets/minecraft/models/item/bamboo_mosaic_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_mosaic_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_planks.json b/assets/minecraft/models/item/bamboo_planks.json deleted file mode 100644 index 4e591abe..00000000 --- a/assets/minecraft/models/item/bamboo_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_pressure_plate.json b/assets/minecraft/models/item/bamboo_pressure_plate.json deleted file mode 100644 index 8a7a0ff5..00000000 --- a/assets/minecraft/models/item/bamboo_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_slab.json b/assets/minecraft/models/item/bamboo_slab.json deleted file mode 100644 index 0d94c19f..00000000 --- a/assets/minecraft/models/item/bamboo_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_stairs.json b/assets/minecraft/models/item/bamboo_stairs.json deleted file mode 100644 index c96c6069..00000000 --- a/assets/minecraft/models/item/bamboo_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bamboo_trapdoor.json b/assets/minecraft/models/item/bamboo_trapdoor.json deleted file mode 100644 index cd10b18e..00000000 --- a/assets/minecraft/models/item/bamboo_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bamboo_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/barrel.json b/assets/minecraft/models/item/barrel.json deleted file mode 100644 index 553ec3e0..00000000 --- a/assets/minecraft/models/item/barrel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/barrel" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/basalt.json b/assets/minecraft/models/item/basalt.json deleted file mode 100644 index eaa67e62..00000000 --- a/assets/minecraft/models/item/basalt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/basalt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bat_spawn_egg.json b/assets/minecraft/models/item/bat_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/bat_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/beacon.json b/assets/minecraft/models/item/beacon.json deleted file mode 100644 index b6a014e6..00000000 --- a/assets/minecraft/models/item/beacon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/beacon" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bedrock.json b/assets/minecraft/models/item/bedrock.json deleted file mode 100644 index c1b8427e..00000000 --- a/assets/minecraft/models/item/bedrock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bedrock" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bee_nest.json b/assets/minecraft/models/item/bee_nest.json deleted file mode 100644 index 39634a5b..00000000 --- a/assets/minecraft/models/item/bee_nest.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "parent": "minecraft:block/bee_nest_empty", - "overrides" : [ - { - "predicate" : { - "honey_level" : 0 - }, - "model" : "item/bee_nest_empty" - }, - { - "predicate" : { - "honey_level" : 1 - }, - "model" : "item/bee_nest_honey" - } - ] -} diff --git a/assets/minecraft/models/item/bee_nest_empty.json b/assets/minecraft/models/item/bee_nest_empty.json deleted file mode 100644 index ac0aa623..00000000 --- a/assets/minecraft/models/item/bee_nest_empty.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "minecraft:block/orientable_with_bottom", - "textures": { - "bottom": "minecraft:block/bee_nest_bottom", - "front": "minecraft:block/bee_nest_front", - "particle": "minecraft:block/bee_nest_side", - "side": "minecraft:block/bee_nest_side", - "top": "minecraft:block/bee_nest_top" - } -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bee_nest_honey.json b/assets/minecraft/models/item/bee_nest_honey.json deleted file mode 100644 index 25850dbf..00000000 --- a/assets/minecraft/models/item/bee_nest_honey.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "minecraft:block/orientable_with_bottom", - "textures": { - "bottom": "minecraft:block/bee_nest_bottom", - "front": "minecraft:block/bee_nest_front_honey", - "particle": "minecraft:block/bee_nest_side", - "side": "minecraft:block/bee_nest_side", - "top": "minecraft:block/bee_nest_top" - } -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bee_spawn_egg.json b/assets/minecraft/models/item/bee_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/bee_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/beehive.json b/assets/minecraft/models/item/beehive.json deleted file mode 100644 index afc4081b..00000000 --- a/assets/minecraft/models/item/beehive.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "parent": "minecraft:block/beehive_empty", - "overrides" : [ - { - "predicate" : { - "honey_level" : 0 - }, - "model" : "item/beehive_empty" - }, - { - "predicate" : { - "honey_level" : 1 - }, - "model" : "item/beehive_honey" - } - ] -} diff --git a/assets/minecraft/models/item/beehive_empty.json b/assets/minecraft/models/item/beehive_empty.json deleted file mode 100644 index 4c875e63..00000000 --- a/assets/minecraft/models/item/beehive_empty.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "minecraft:block/orientable_with_bottom", - "textures": { - "bottom": "minecraft:block/beehive_end", - "front": "minecraft:block/beehive_front", - "particle": "minecraft:block/beehive_side", - "side": "minecraft:block/beehive_side", - "top": "minecraft:block/beehive_end" - } -} \ No newline at end of file diff --git a/assets/minecraft/models/item/beehive_honey.json b/assets/minecraft/models/item/beehive_honey.json deleted file mode 100644 index 1973867c..00000000 --- a/assets/minecraft/models/item/beehive_honey.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "minecraft:block/orientable_with_bottom", - "textures": { - "bottom": "minecraft:block/beehive_end", - "front": "minecraft:block/beehive_front_honey", - "particle": "minecraft:block/beehive_side", - "side": "minecraft:block/beehive_side", - "top": "minecraft:block/beehive_end" - } -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_button.json b/assets/minecraft/models/item/birch_button.json deleted file mode 100644 index f0065c47..00000000 --- a/assets/minecraft/models/item/birch_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_fence.json b/assets/minecraft/models/item/birch_fence.json deleted file mode 100644 index ca097fb1..00000000 --- a/assets/minecraft/models/item/birch_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_fence_gate.json b/assets/minecraft/models/item/birch_fence_gate.json deleted file mode 100644 index 732026b8..00000000 --- a/assets/minecraft/models/item/birch_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_leaves.json b/assets/minecraft/models/item/birch_leaves.json deleted file mode 100644 index 4f543d46..00000000 --- a/assets/minecraft/models/item/birch_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_log.json b/assets/minecraft/models/item/birch_log.json deleted file mode 100644 index cd42b0b7..00000000 --- a/assets/minecraft/models/item/birch_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_planks.json b/assets/minecraft/models/item/birch_planks.json deleted file mode 100644 index 06e3a6d3..00000000 --- a/assets/minecraft/models/item/birch_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_pressure_plate.json b/assets/minecraft/models/item/birch_pressure_plate.json deleted file mode 100644 index e8dfb642..00000000 --- a/assets/minecraft/models/item/birch_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_slab.json b/assets/minecraft/models/item/birch_slab.json deleted file mode 100644 index c17a8e79..00000000 --- a/assets/minecraft/models/item/birch_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_stairs.json b/assets/minecraft/models/item/birch_stairs.json deleted file mode 100644 index ec8fd2b9..00000000 --- a/assets/minecraft/models/item/birch_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_trapdoor.json b/assets/minecraft/models/item/birch_trapdoor.json deleted file mode 100644 index 7db49741..00000000 --- a/assets/minecraft/models/item/birch_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/birch_wood.json b/assets/minecraft/models/item/birch_wood.json deleted file mode 100644 index cd1881b0..00000000 --- a/assets/minecraft/models/item/birch_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/birch_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_banner.json b/assets/minecraft/models/item/black_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/black_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_bundle_open_back.json b/assets/minecraft/models/item/black_bundle_open_back.json index 863e592b..ff313951 100644 --- a/assets/minecraft/models/item/black_bundle_open_back.json +++ b/assets/minecraft/models/item/black_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/black_bundle_open_back" + "layer0": "minecraft:item/black_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_bundle_open_front.json b/assets/minecraft/models/item/black_bundle_open_front.json index d0159a8f..d31bc086 100644 --- a/assets/minecraft/models/item/black_bundle_open_front.json +++ b/assets/minecraft/models/item/black_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/black_bundle_open_front" + "layer0": "minecraft:item/black_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_carpet.json b/assets/minecraft/models/item/black_carpet.json deleted file mode 100644 index 618d2130..00000000 --- a/assets/minecraft/models/item/black_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_concrete.json b/assets/minecraft/models/item/black_concrete.json deleted file mode 100644 index eb5aadc3..00000000 --- a/assets/minecraft/models/item/black_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_concrete_powder.json b/assets/minecraft/models/item/black_concrete_powder.json deleted file mode 100644 index 03af09ea..00000000 --- a/assets/minecraft/models/item/black_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_glazed_terracotta.json b/assets/minecraft/models/item/black_glazed_terracotta.json deleted file mode 100644 index e1f73ff8..00000000 --- a/assets/minecraft/models/item/black_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_stained_glass.json b/assets/minecraft/models/item/black_stained_glass.json deleted file mode 100644 index dfc8fab3..00000000 --- a/assets/minecraft/models/item/black_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_terracotta.json b/assets/minecraft/models/item/black_terracotta.json deleted file mode 100644 index eee57e8e..00000000 --- a/assets/minecraft/models/item/black_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/black_wool.json b/assets/minecraft/models/item/black_wool.json deleted file mode 100644 index a0e49abc..00000000 --- a/assets/minecraft/models/item/black_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/black_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blackstone.json b/assets/minecraft/models/item/blackstone.json deleted file mode 100644 index e4defbd6..00000000 --- a/assets/minecraft/models/item/blackstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blackstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blackstone_slab.json b/assets/minecraft/models/item/blackstone_slab.json deleted file mode 100644 index 481376f4..00000000 --- a/assets/minecraft/models/item/blackstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blackstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blackstone_stairs.json b/assets/minecraft/models/item/blackstone_stairs.json deleted file mode 100644 index 83a61e18..00000000 --- a/assets/minecraft/models/item/blackstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blackstone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blackstone_wall.json b/assets/minecraft/models/item/blackstone_wall.json deleted file mode 100644 index 8c2bc6d6..00000000 --- a/assets/minecraft/models/item/blackstone_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blackstone_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blast_furnace.json b/assets/minecraft/models/item/blast_furnace.json deleted file mode 100644 index 5189a013..00000000 --- a/assets/minecraft/models/item/blast_furnace.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blast_furnace" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blaze_spawn_egg.json b/assets/minecraft/models/item/blaze_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/blaze_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_banner.json b/assets/minecraft/models/item/blue_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/blue_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_bundle_open_back.json b/assets/minecraft/models/item/blue_bundle_open_back.json index 29011ca3..ff7d420e 100644 --- a/assets/minecraft/models/item/blue_bundle_open_back.json +++ b/assets/minecraft/models/item/blue_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/blue_bundle_open_back" + "layer0": "minecraft:item/blue_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_bundle_open_front.json b/assets/minecraft/models/item/blue_bundle_open_front.json index 0dca2593..3e06e408 100644 --- a/assets/minecraft/models/item/blue_bundle_open_front.json +++ b/assets/minecraft/models/item/blue_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/blue_bundle_open_front" + "layer0": "minecraft:item/blue_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_carpet.json b/assets/minecraft/models/item/blue_carpet.json deleted file mode 100644 index 0ced6287..00000000 --- a/assets/minecraft/models/item/blue_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_concrete.json b/assets/minecraft/models/item/blue_concrete.json deleted file mode 100644 index 4c15897c..00000000 --- a/assets/minecraft/models/item/blue_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_concrete_powder.json b/assets/minecraft/models/item/blue_concrete_powder.json deleted file mode 100644 index e5f13d4a..00000000 --- a/assets/minecraft/models/item/blue_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_glazed_terracotta.json b/assets/minecraft/models/item/blue_glazed_terracotta.json deleted file mode 100644 index f7b0efbb..00000000 --- a/assets/minecraft/models/item/blue_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_ice.json b/assets/minecraft/models/item/blue_ice.json deleted file mode 100644 index 86d267e5..00000000 --- a/assets/minecraft/models/item/blue_ice.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_ice" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_stained_glass.json b/assets/minecraft/models/item/blue_stained_glass.json deleted file mode 100644 index c3727cd8..00000000 --- a/assets/minecraft/models/item/blue_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_terracotta.json b/assets/minecraft/models/item/blue_terracotta.json deleted file mode 100644 index a89b057d..00000000 --- a/assets/minecraft/models/item/blue_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/blue_wool.json b/assets/minecraft/models/item/blue_wool.json deleted file mode 100644 index 22458dbd..00000000 --- a/assets/minecraft/models/item/blue_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/blue_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bogged_spawn_egg.json b/assets/minecraft/models/item/bogged_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/bogged_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bone_block.json b/assets/minecraft/models/item/bone_block.json deleted file mode 100644 index 1374ccda..00000000 --- a/assets/minecraft/models/item/bone_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bone_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bookshelf.json b/assets/minecraft/models/item/bookshelf.json deleted file mode 100644 index 57943d42..00000000 --- a/assets/minecraft/models/item/bookshelf.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bookshelf" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bow.json b/assets/minecraft/models/item/bow.json index c2128757..f6c19330 100644 --- a/assets/minecraft/models/item/bow.json +++ b/assets/minecraft/models/item/bow.json @@ -24,27 +24,5 @@ "translation": [ 1.13, 3.2, 1.13], "scale": [ 0.68, 0.68, 0.68 ] } - }, - "overrides": [ - { - "predicate": { - "pulling": 1 - }, - "model": "item/bow_pulling_0" - }, - { - "predicate": { - "pulling": 1, - "pull": 0.65 - }, - "model": "item/bow_pulling_1" - }, - { - "predicate": { - "pulling": 1, - "pull": 0.9 - }, - "model": "item/bow_pulling_2" - } - ] + } } diff --git a/assets/minecraft/models/item/bow_pulling_0.json b/assets/minecraft/models/item/bow_pulling_0.json index 8a44db20..06526481 100644 --- a/assets/minecraft/models/item/bow_pulling_0.json +++ b/assets/minecraft/models/item/bow_pulling_0.json @@ -1,6 +1,6 @@ { - "parent": "item/bow", - "textures": { - "layer0": "item/bow_pulling_0" - } -} + "parent": "minecraft:item/bow", + "textures": { + "layer0": "minecraft:item/bow_pulling_0" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/bow_pulling_1.json b/assets/minecraft/models/item/bow_pulling_1.json index 5fd94893..bc1f9778 100644 --- a/assets/minecraft/models/item/bow_pulling_1.json +++ b/assets/minecraft/models/item/bow_pulling_1.json @@ -1,6 +1,6 @@ { - "parent": "item/bow", - "textures": { - "layer0": "item/bow_pulling_1" - } -} + "parent": "minecraft:item/bow", + "textures": { + "layer0": "minecraft:item/bow_pulling_1" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/bow_pulling_2.json b/assets/minecraft/models/item/bow_pulling_2.json index 8584d5b3..cec87c74 100644 --- a/assets/minecraft/models/item/bow_pulling_2.json +++ b/assets/minecraft/models/item/bow_pulling_2.json @@ -1,6 +1,6 @@ { - "parent": "item/bow", - "textures": { - "layer0": "item/bow_pulling_2" - } -} + "parent": "minecraft:item/bow", + "textures": { + "layer0": "minecraft:item/bow_pulling_2" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/brain_coral_block.json b/assets/minecraft/models/item/brain_coral_block.json deleted file mode 100644 index 04d112ab..00000000 --- a/assets/minecraft/models/item/brain_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brain_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/breeze_spawn_egg.json b/assets/minecraft/models/item/breeze_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/breeze_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brick_slab.json b/assets/minecraft/models/item/brick_slab.json deleted file mode 100644 index 754deec6..00000000 --- a/assets/minecraft/models/item/brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brick_stairs.json b/assets/minecraft/models/item/brick_stairs.json deleted file mode 100644 index 2a2318dc..00000000 --- a/assets/minecraft/models/item/brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brick_wall.json b/assets/minecraft/models/item/brick_wall.json deleted file mode 100644 index 52dcc04e..00000000 --- a/assets/minecraft/models/item/brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bricks.json b/assets/minecraft/models/item/bricks.json deleted file mode 100644 index dd257a86..00000000 --- a/assets/minecraft/models/item/bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/broken_elytra.json b/assets/minecraft/models/item/broken_elytra.json deleted file mode 100644 index ca77df44..00000000 --- a/assets/minecraft/models/item/broken_elytra.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "item/broken_elytra" - } -} diff --git a/assets/minecraft/models/item/brown_banner.json b/assets/minecraft/models/item/brown_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/brown_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_bundle_open_back.json b/assets/minecraft/models/item/brown_bundle_open_back.json index bf1e27b0..fa9041eb 100644 --- a/assets/minecraft/models/item/brown_bundle_open_back.json +++ b/assets/minecraft/models/item/brown_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/brown_bundle_open_back" + "layer0": "minecraft:item/brown_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_bundle_open_front.json b/assets/minecraft/models/item/brown_bundle_open_front.json index 637ad47e..e0fa96f0 100644 --- a/assets/minecraft/models/item/brown_bundle_open_front.json +++ b/assets/minecraft/models/item/brown_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/brown_bundle_open_front" + "layer0": "minecraft:item/brown_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_carpet.json b/assets/minecraft/models/item/brown_carpet.json deleted file mode 100644 index 144ce5ad..00000000 --- a/assets/minecraft/models/item/brown_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_concrete.json b/assets/minecraft/models/item/brown_concrete.json deleted file mode 100644 index 7aec153e..00000000 --- a/assets/minecraft/models/item/brown_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_concrete_powder.json b/assets/minecraft/models/item/brown_concrete_powder.json deleted file mode 100644 index e228eaaa..00000000 --- a/assets/minecraft/models/item/brown_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_glazed_terracotta.json b/assets/minecraft/models/item/brown_glazed_terracotta.json deleted file mode 100644 index 8ed9bac4..00000000 --- a/assets/minecraft/models/item/brown_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_mushroom_block.json b/assets/minecraft/models/item/brown_mushroom_block.json deleted file mode 100644 index c9d6b06e..00000000 --- a/assets/minecraft/models/item/brown_mushroom_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_mushroom_block_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_stained_glass.json b/assets/minecraft/models/item/brown_stained_glass.json deleted file mode 100644 index a3aac572..00000000 --- a/assets/minecraft/models/item/brown_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_terracotta.json b/assets/minecraft/models/item/brown_terracotta.json deleted file mode 100644 index 17f524a7..00000000 --- a/assets/minecraft/models/item/brown_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brown_wool.json b/assets/minecraft/models/item/brown_wool.json deleted file mode 100644 index 85520a1b..00000000 --- a/assets/minecraft/models/item/brown_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/brown_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/brush.json b/assets/minecraft/models/item/brush.json index 231aa70c..8973ac98 100644 --- a/assets/minecraft/models/item/brush.json +++ b/assets/minecraft/models/item/brush.json @@ -19,25 +19,5 @@ "translation": [ 0, 4, 0 ], "scale": [ 0.9, 0.9, 0.9 ] } - }, - "overrides": [ - { - "predicate": { - "brushing": 0.25 - }, - "model": "item/brush_brushing_0" - }, - { - "predicate": { - "brushing": 0.5 - }, - "model": "item/brush_brushing_1" - }, - { - "predicate": { - "brushing": 0.75 - }, - "model": "item/brush_brushing_2" - } - ] + } } diff --git a/assets/minecraft/models/item/bubble_coral_block.json b/assets/minecraft/models/item/bubble_coral_block.json deleted file mode 100644 index 05a1309f..00000000 --- a/assets/minecraft/models/item/bubble_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/bubble_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/budding_amethyst.json b/assets/minecraft/models/item/budding_amethyst.json deleted file mode 100644 index c210bd6e..00000000 --- a/assets/minecraft/models/item/budding_amethyst.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/budding_amethyst" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/bundle_open_back.json b/assets/minecraft/models/item/bundle_open_back.json index 66851f18..18ed887f 100644 --- a/assets/minecraft/models/item/bundle_open_back.json +++ b/assets/minecraft/models/item/bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/bundle_open_back" + "layer0": "minecraft:item/bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/bundle_open_front.json b/assets/minecraft/models/item/bundle_open_front.json index 9c254570..aa799600 100644 --- a/assets/minecraft/models/item/bundle_open_front.json +++ b/assets/minecraft/models/item/bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/bundle_open_front" + "layer0": "minecraft:item/bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/cactus.json b/assets/minecraft/models/item/cactus.json deleted file mode 100644 index d1413ecf..00000000 --- a/assets/minecraft/models/item/cactus.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cactus" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/calcite.json b/assets/minecraft/models/item/calcite.json deleted file mode 100644 index 11a880b3..00000000 --- a/assets/minecraft/models/item/calcite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/calcite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/calibrated_sculk_sensor.json b/assets/minecraft/models/item/calibrated_sculk_sensor.json deleted file mode 100644 index d99476e5..00000000 --- a/assets/minecraft/models/item/calibrated_sculk_sensor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/calibrated_sculk_sensor_inactive" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/camel_spawn_egg.json b/assets/minecraft/models/item/camel_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/camel_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cartography_table.json b/assets/minecraft/models/item/cartography_table.json deleted file mode 100644 index b7fe4e47..00000000 --- a/assets/minecraft/models/item/cartography_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cartography_table" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/carved_pumpkin.json b/assets/minecraft/models/item/carved_pumpkin.json deleted file mode 100644 index 54f009c0..00000000 --- a/assets/minecraft/models/item/carved_pumpkin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/carved_pumpkin" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cat_spawn_egg.json b/assets/minecraft/models/item/cat_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/cat_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cave_spider_spawn_egg.json b/assets/minecraft/models/item/cave_spider_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/cave_spider_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chain_command_block.json b/assets/minecraft/models/item/chain_command_block.json deleted file mode 100644 index 44af865a..00000000 --- a/assets/minecraft/models/item/chain_command_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chain_command_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chainmail_boots.json b/assets/minecraft/models/item/chainmail_boots.json index 1e54e8c6..35126d5e 100644 --- a/assets/minecraft/models/item/chainmail_boots.json +++ b/assets/minecraft/models/item/chainmail_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/chainmail_boots_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/chainmail_boots_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/chainmail_boots_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/chainmail_boots_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/chainmail_boots_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/chainmail_boots_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/chainmail_boots_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/chainmail_boots_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/chainmail_boots_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/chainmail_boots_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/chainmail_boots" } diff --git a/assets/minecraft/models/item/chainmail_boots_resin_trim.json b/assets/minecraft/models/item/chainmail_boots_resin_trim.json new file mode 100644 index 00000000..b6c36c2d --- /dev/null +++ b/assets/minecraft/models/item/chainmail_boots_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/chainmail_boots", + "layer1": "minecraft:trims/items/boots_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/chainmail_chestplate.json b/assets/minecraft/models/item/chainmail_chestplate.json index 0bdb24bb..3efbf410 100644 --- a/assets/minecraft/models/item/chainmail_chestplate.json +++ b/assets/minecraft/models/item/chainmail_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/chainmail_chestplate_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/chainmail_chestplate_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/chainmail_chestplate" } diff --git a/assets/minecraft/models/item/chainmail_chestplate_resin_trim.json b/assets/minecraft/models/item/chainmail_chestplate_resin_trim.json new file mode 100644 index 00000000..f44bdc5e --- /dev/null +++ b/assets/minecraft/models/item/chainmail_chestplate_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/chainmail_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/chainmail_helmet.json b/assets/minecraft/models/item/chainmail_helmet.json index dc35c600..e5bd2d42 100644 --- a/assets/minecraft/models/item/chainmail_helmet.json +++ b/assets/minecraft/models/item/chainmail_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/chainmail_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/chainmail_helmet_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/chainmail_helmet_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/chainmail_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/chainmail_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/chainmail_helmet_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/chainmail_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/chainmail_helmet_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/chainmail_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/chainmail_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/chainmail_helmet" } diff --git a/assets/minecraft/models/item/chainmail_helmet_resin_trim.json b/assets/minecraft/models/item/chainmail_helmet_resin_trim.json new file mode 100644 index 00000000..0d859307 --- /dev/null +++ b/assets/minecraft/models/item/chainmail_helmet_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/chainmail_helmet", + "layer1": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/chainmail_leggings.json b/assets/minecraft/models/item/chainmail_leggings.json index 23bebc65..22530cf9 100644 --- a/assets/minecraft/models/item/chainmail_leggings.json +++ b/assets/minecraft/models/item/chainmail_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/chainmail_leggings_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/chainmail_leggings_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/chainmail_leggings_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/chainmail_leggings_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/chainmail_leggings_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/chainmail_leggings_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/chainmail_leggings_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/chainmail_leggings_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/chainmail_leggings_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/chainmail_leggings_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/chainmail_leggings" } diff --git a/assets/minecraft/models/item/chainmail_leggings_resin_trim.json b/assets/minecraft/models/item/chainmail_leggings_resin_trim.json new file mode 100644 index 00000000..35912539 --- /dev/null +++ b/assets/minecraft/models/item/chainmail_leggings_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/chainmail_leggings", + "layer1": "minecraft:trims/items/leggings_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_button.json b/assets/minecraft/models/item/cherry_button.json deleted file mode 100644 index bec3bdc6..00000000 --- a/assets/minecraft/models/item/cherry_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_fence.json b/assets/minecraft/models/item/cherry_fence.json deleted file mode 100644 index ffe1fb32..00000000 --- a/assets/minecraft/models/item/cherry_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_fence_gate.json b/assets/minecraft/models/item/cherry_fence_gate.json deleted file mode 100644 index b4137071..00000000 --- a/assets/minecraft/models/item/cherry_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_leaves.json b/assets/minecraft/models/item/cherry_leaves.json deleted file mode 100644 index 0b0683e9..00000000 --- a/assets/minecraft/models/item/cherry_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_log.json b/assets/minecraft/models/item/cherry_log.json deleted file mode 100644 index 7aceccbd..00000000 --- a/assets/minecraft/models/item/cherry_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_planks.json b/assets/minecraft/models/item/cherry_planks.json deleted file mode 100644 index d4f8dfef..00000000 --- a/assets/minecraft/models/item/cherry_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_pressure_plate.json b/assets/minecraft/models/item/cherry_pressure_plate.json deleted file mode 100644 index b207b042..00000000 --- a/assets/minecraft/models/item/cherry_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_slab.json b/assets/minecraft/models/item/cherry_slab.json deleted file mode 100644 index 50774910..00000000 --- a/assets/minecraft/models/item/cherry_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_stairs.json b/assets/minecraft/models/item/cherry_stairs.json deleted file mode 100644 index df08ac73..00000000 --- a/assets/minecraft/models/item/cherry_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_trapdoor.json b/assets/minecraft/models/item/cherry_trapdoor.json deleted file mode 100644 index 19daaafa..00000000 --- a/assets/minecraft/models/item/cherry_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cherry_wood.json b/assets/minecraft/models/item/cherry_wood.json deleted file mode 100644 index 71e59d45..00000000 --- a/assets/minecraft/models/item/cherry_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cherry_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chest.json b/assets/minecraft/models/item/chest.json index cdfd5488..fb1b4c69 100644 --- a/assets/minecraft/models/item/chest.json +++ b/assets/minecraft/models/item/chest.json @@ -1,38 +1,6 @@ { - "parent": "builtin/entity", - "textures": { - "particle": "block/oak_planks" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0], - "scale":[ 0.25, 0.25, 0.25 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 1, 1, 1] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.5, 0.5, 0.5 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0], - "scale": [ 0.375, 0.375, 0.375 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 0, 0], - "scale": [ 0.4, 0.4, 0.4 ] - } - } -} + "parent": "minecraft:item/template_chest", + "textures": { + "particle": "minecraft:block/oak_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/chicken_spawn_egg.json b/assets/minecraft/models/item/chicken_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/chicken_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chipped_anvil.json b/assets/minecraft/models/item/chipped_anvil.json deleted file mode 100644 index 46804e59..00000000 --- a/assets/minecraft/models/item/chipped_anvil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chipped_anvil" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_bookshelf.json b/assets/minecraft/models/item/chiseled_bookshelf.json deleted file mode 100644 index 90befea8..00000000 --- a/assets/minecraft/models/item/chiseled_bookshelf.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_bookshelf_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_copper.json b/assets/minecraft/models/item/chiseled_copper.json deleted file mode 100644 index b88e810b..00000000 --- a/assets/minecraft/models/item/chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_deepslate.json b/assets/minecraft/models/item/chiseled_deepslate.json deleted file mode 100644 index 811f62f9..00000000 --- a/assets/minecraft/models/item/chiseled_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_deepslate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_nether_bricks.json b/assets/minecraft/models/item/chiseled_nether_bricks.json deleted file mode 100644 index fb134fe3..00000000 --- a/assets/minecraft/models/item/chiseled_nether_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_nether_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_polished_blackstone.json b/assets/minecraft/models/item/chiseled_polished_blackstone.json deleted file mode 100644 index a2615345..00000000 --- a/assets/minecraft/models/item/chiseled_polished_blackstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_polished_blackstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_quartz_block.json b/assets/minecraft/models/item/chiseled_quartz_block.json deleted file mode 100644 index f8b20616..00000000 --- a/assets/minecraft/models/item/chiseled_quartz_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_quartz_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_red_sandstone.json b/assets/minecraft/models/item/chiseled_red_sandstone.json deleted file mode 100644 index e3ded796..00000000 --- a/assets/minecraft/models/item/chiseled_red_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_red_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_sandstone.json b/assets/minecraft/models/item/chiseled_sandstone.json deleted file mode 100644 index f6261725..00000000 --- a/assets/minecraft/models/item/chiseled_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_stone_bricks.json b/assets/minecraft/models/item/chiseled_stone_bricks.json deleted file mode 100644 index ac7e5e66..00000000 --- a/assets/minecraft/models/item/chiseled_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_tuff.json b/assets/minecraft/models/item/chiseled_tuff.json deleted file mode 100644 index 845bc289..00000000 --- a/assets/minecraft/models/item/chiseled_tuff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_tuff" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chiseled_tuff_bricks.json b/assets/minecraft/models/item/chiseled_tuff_bricks.json deleted file mode 100644 index 6bea9351..00000000 --- a/assets/minecraft/models/item/chiseled_tuff_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_tuff_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chorus_flower.json b/assets/minecraft/models/item/chorus_flower.json deleted file mode 100644 index dc807298..00000000 --- a/assets/minecraft/models/item/chorus_flower.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chorus_flower" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/chorus_plant.json b/assets/minecraft/models/item/chorus_plant.json deleted file mode 100644 index b0741a69..00000000 --- a/assets/minecraft/models/item/chorus_plant.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chorus_plant" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/clay.json b/assets/minecraft/models/item/clay.json deleted file mode 100644 index 2510d78a..00000000 --- a/assets/minecraft/models/item/clay.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/clay" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/clock.json b/assets/minecraft/models/item/clock.json deleted file mode 100644 index 407b8aa7..00000000 --- a/assets/minecraft/models/item/clock.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "item/clock_00" - }, - "overrides": [ - { "predicate": { "time": 0.0000000 }, "model": "item/clock" }, - { "predicate": { "time": 0.0078125 }, "model": "item/clock_01" }, - { "predicate": { "time": 0.0234375 }, "model": "item/clock_02" }, - { "predicate": { "time": 0.0390625 }, "model": "item/clock_03" }, - { "predicate": { "time": 0.0546875 }, "model": "item/clock_04" }, - { "predicate": { "time": 0.0703125 }, "model": "item/clock_05" }, - { "predicate": { "time": 0.0859375 }, "model": "item/clock_06" }, - { "predicate": { "time": 0.1015625 }, "model": "item/clock_07" }, - { "predicate": { "time": 0.1171875 }, "model": "item/clock_08" }, - { "predicate": { "time": 0.1328125 }, "model": "item/clock_09" }, - { "predicate": { "time": 0.1484375 }, "model": "item/clock_10" }, - { "predicate": { "time": 0.1640625 }, "model": "item/clock_11" }, - { "predicate": { "time": 0.1796875 }, "model": "item/clock_12" }, - { "predicate": { "time": 0.1953125 }, "model": "item/clock_13" }, - { "predicate": { "time": 0.2109375 }, "model": "item/clock_14" }, - { "predicate": { "time": 0.2265625 }, "model": "item/clock_15" }, - { "predicate": { "time": 0.2421875 }, "model": "item/clock_16" }, - { "predicate": { "time": 0.2578125 }, "model": "item/clock_17" }, - { "predicate": { "time": 0.2734375 }, "model": "item/clock_18" }, - { "predicate": { "time": 0.2890625 }, "model": "item/clock_19" }, - { "predicate": { "time": 0.3046875 }, "model": "item/clock_20" }, - { "predicate": { "time": 0.3203125 }, "model": "item/clock_21" }, - { "predicate": { "time": 0.3359375 }, "model": "item/clock_22" }, - { "predicate": { "time": 0.3515625 }, "model": "item/clock_23" }, - { "predicate": { "time": 0.3671875 }, "model": "item/clock_24" }, - { "predicate": { "time": 0.3828125 }, "model": "item/clock_25" }, - { "predicate": { "time": 0.3984375 }, "model": "item/clock_26" }, - { "predicate": { "time": 0.4140625 }, "model": "item/clock_27" }, - { "predicate": { "time": 0.4296875 }, "model": "item/clock_28" }, - { "predicate": { "time": 0.4453125 }, "model": "item/clock_29" }, - { "predicate": { "time": 0.4609375 }, "model": "item/clock_30" }, - { "predicate": { "time": 0.4765625 }, "model": "item/clock_31" }, - { "predicate": { "time": 0.4921875 }, "model": "item/clock_32" }, - { "predicate": { "time": 0.5078125 }, "model": "item/clock_33" }, - { "predicate": { "time": 0.5234375 }, "model": "item/clock_34" }, - { "predicate": { "time": 0.5390625 }, "model": "item/clock_35" }, - { "predicate": { "time": 0.5546875 }, "model": "item/clock_36" }, - { "predicate": { "time": 0.5703125 }, "model": "item/clock_37" }, - { "predicate": { "time": 0.5859375 }, "model": "item/clock_38" }, - { "predicate": { "time": 0.6015625 }, "model": "item/clock_39" }, - { "predicate": { "time": 0.6171875 }, "model": "item/clock_40" }, - { "predicate": { "time": 0.6328125 }, "model": "item/clock_41" }, - { "predicate": { "time": 0.6484375 }, "model": "item/clock_42" }, - { "predicate": { "time": 0.6640625 }, "model": "item/clock_43" }, - { "predicate": { "time": 0.6796875 }, "model": "item/clock_44" }, - { "predicate": { "time": 0.6953125 }, "model": "item/clock_45" }, - { "predicate": { "time": 0.7109375 }, "model": "item/clock_46" }, - { "predicate": { "time": 0.7265625 }, "model": "item/clock_47" }, - { "predicate": { "time": 0.7421875 }, "model": "item/clock_48" }, - { "predicate": { "time": 0.7578125 }, "model": "item/clock_49" }, - { "predicate": { "time": 0.7734375 }, "model": "item/clock_50" }, - { "predicate": { "time": 0.7890625 }, "model": "item/clock_51" }, - { "predicate": { "time": 0.8046875 }, "model": "item/clock_52" }, - { "predicate": { "time": 0.8203125 }, "model": "item/clock_53" }, - { "predicate": { "time": 0.8359375 }, "model": "item/clock_54" }, - { "predicate": { "time": 0.8515625 }, "model": "item/clock_55" }, - { "predicate": { "time": 0.8671875 }, "model": "item/clock_56" }, - { "predicate": { "time": 0.8828125 }, "model": "item/clock_57" }, - { "predicate": { "time": 0.8984375 }, "model": "item/clock_58" }, - { "predicate": { "time": 0.9140625 }, "model": "item/clock_59" }, - { "predicate": { "time": 0.9296875 }, "model": "item/clock_60" }, - { "predicate": { "time": 0.9453125 }, "model": "item/clock_61" }, - { "predicate": { "time": 0.9609375 }, "model": "item/clock_62" }, - { "predicate": { "time": 0.9765625 }, "model": "item/clock_63" }, - { "predicate": { "time": 0.9921875 }, "model": "item/clock" } - ] -} diff --git a/assets/minecraft/models/item/clock_00.json b/assets/minecraft/models/item/clock_00.json new file mode 100644 index 00000000..e8dfc609 --- /dev/null +++ b/assets/minecraft/models/item/clock_00.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/clock_00" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/closed_eyeblossom.json b/assets/minecraft/models/item/closed_eyeblossom.json new file mode 100644 index 00000000..a75232fd --- /dev/null +++ b/assets/minecraft/models/item/closed_eyeblossom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:block/closed_eyeblossom" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/coal_block.json b/assets/minecraft/models/item/coal_block.json deleted file mode 100644 index ee242673..00000000 --- a/assets/minecraft/models/item/coal_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/coal_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/coal_ore.json b/assets/minecraft/models/item/coal_ore.json deleted file mode 100644 index d6971d35..00000000 --- a/assets/minecraft/models/item/coal_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/coal_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/coarse_dirt.json b/assets/minecraft/models/item/coarse_dirt.json deleted file mode 100644 index 797b7cc7..00000000 --- a/assets/minecraft/models/item/coarse_dirt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/coarse_dirt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobbled_deepslate.json b/assets/minecraft/models/item/cobbled_deepslate.json deleted file mode 100644 index aceda4d8..00000000 --- a/assets/minecraft/models/item/cobbled_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobbled_deepslate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobbled_deepslate_slab.json b/assets/minecraft/models/item/cobbled_deepslate_slab.json deleted file mode 100644 index a4ea4d2d..00000000 --- a/assets/minecraft/models/item/cobbled_deepslate_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobbled_deepslate_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobbled_deepslate_stairs.json b/assets/minecraft/models/item/cobbled_deepslate_stairs.json deleted file mode 100644 index 054c8e6c..00000000 --- a/assets/minecraft/models/item/cobbled_deepslate_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobbled_deepslate_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobbled_deepslate_wall.json b/assets/minecraft/models/item/cobbled_deepslate_wall.json deleted file mode 100644 index 25b44645..00000000 --- a/assets/minecraft/models/item/cobbled_deepslate_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobbled_deepslate_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobblestone.json b/assets/minecraft/models/item/cobblestone.json deleted file mode 100644 index 35e828df..00000000 --- a/assets/minecraft/models/item/cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobblestone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobblestone_slab.json b/assets/minecraft/models/item/cobblestone_slab.json deleted file mode 100644 index 701123f0..00000000 --- a/assets/minecraft/models/item/cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobblestone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobblestone_stairs.json b/assets/minecraft/models/item/cobblestone_stairs.json deleted file mode 100644 index 48910bcc..00000000 --- a/assets/minecraft/models/item/cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobblestone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cobblestone_wall.json b/assets/minecraft/models/item/cobblestone_wall.json deleted file mode 100644 index 5c603a85..00000000 --- a/assets/minecraft/models/item/cobblestone_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobblestone_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cod_spawn_egg.json b/assets/minecraft/models/item/cod_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/cod_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/command_block.json b/assets/minecraft/models/item/command_block.json deleted file mode 100644 index 43605276..00000000 --- a/assets/minecraft/models/item/command_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/command_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/compass.json b/assets/minecraft/models/item/compass.json deleted file mode 100644 index ec66bb16..00000000 --- a/assets/minecraft/models/item/compass.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "item/compass_16" - }, - "overrides": [ - { "predicate": { "angle": 0.000000 }, "model": "item/compass" }, - { "predicate": { "angle": 0.015625 }, "model": "item/compass_17" }, - { "predicate": { "angle": 0.046875 }, "model": "item/compass_18" }, - { "predicate": { "angle": 0.078125 }, "model": "item/compass_19" }, - { "predicate": { "angle": 0.109375 }, "model": "item/compass_20" }, - { "predicate": { "angle": 0.140625 }, "model": "item/compass_21" }, - { "predicate": { "angle": 0.171875 }, "model": "item/compass_22" }, - { "predicate": { "angle": 0.203125 }, "model": "item/compass_23" }, - { "predicate": { "angle": 0.234375 }, "model": "item/compass_24" }, - { "predicate": { "angle": 0.265625 }, "model": "item/compass_25" }, - { "predicate": { "angle": 0.296875 }, "model": "item/compass_26" }, - { "predicate": { "angle": 0.328125 }, "model": "item/compass_27" }, - { "predicate": { "angle": 0.359375 }, "model": "item/compass_28" }, - { "predicate": { "angle": 0.390625 }, "model": "item/compass_29" }, - { "predicate": { "angle": 0.421875 }, "model": "item/compass_30" }, - { "predicate": { "angle": 0.453125 }, "model": "item/compass_31" }, - { "predicate": { "angle": 0.484375 }, "model": "item/compass_00" }, - { "predicate": { "angle": 0.515625 }, "model": "item/compass_01" }, - { "predicate": { "angle": 0.546875 }, "model": "item/compass_02" }, - { "predicate": { "angle": 0.578125 }, "model": "item/compass_03" }, - { "predicate": { "angle": 0.609375 }, "model": "item/compass_04" }, - { "predicate": { "angle": 0.640625 }, "model": "item/compass_05" }, - { "predicate": { "angle": 0.671875 }, "model": "item/compass_06" }, - { "predicate": { "angle": 0.703125 }, "model": "item/compass_07" }, - { "predicate": { "angle": 0.734375 }, "model": "item/compass_08" }, - { "predicate": { "angle": 0.765625 }, "model": "item/compass_09" }, - { "predicate": { "angle": 0.796875 }, "model": "item/compass_10" }, - { "predicate": { "angle": 0.828125 }, "model": "item/compass_11" }, - { "predicate": { "angle": 0.859375 }, "model": "item/compass_12" }, - { "predicate": { "angle": 0.890625 }, "model": "item/compass_13" }, - { "predicate": { "angle": 0.921875 }, "model": "item/compass_14" }, - { "predicate": { "angle": 0.953125 }, "model": "item/compass_15" }, - { "predicate": { "angle": 0.984375 }, "model": "item/compass" } - ] -} diff --git a/assets/minecraft/models/item/compass_16.json b/assets/minecraft/models/item/compass_16.json new file mode 100644 index 00000000..19788d5e --- /dev/null +++ b/assets/minecraft/models/item/compass_16.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/compass_16" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/composter.json b/assets/minecraft/models/item/composter.json deleted file mode 100644 index a8a9be3b..00000000 --- a/assets/minecraft/models/item/composter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/composter" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/conduit.json b/assets/minecraft/models/item/conduit.json index f5785cdf..c8efa785 100644 --- a/assets/minecraft/models/item/conduit.json +++ b/assets/minecraft/models/item/conduit.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "textures": { "particle": "block/conduit" }, diff --git a/assets/minecraft/models/item/copper_block.json b/assets/minecraft/models/item/copper_block.json deleted file mode 100644 index 7bc2c018..00000000 --- a/assets/minecraft/models/item/copper_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/copper_bulb.json b/assets/minecraft/models/item/copper_bulb.json deleted file mode 100644 index bdf2e175..00000000 --- a/assets/minecraft/models/item/copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/copper_grate.json b/assets/minecraft/models/item/copper_grate.json deleted file mode 100644 index f4cff513..00000000 --- a/assets/minecraft/models/item/copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/copper_ore.json b/assets/minecraft/models/item/copper_ore.json deleted file mode 100644 index 773d4593..00000000 --- a/assets/minecraft/models/item/copper_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/copper_trapdoor.json b/assets/minecraft/models/item/copper_trapdoor.json deleted file mode 100644 index 77db2f8d..00000000 --- a/assets/minecraft/models/item/copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cow_spawn_egg.json b/assets/minecraft/models/item/cow_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/cow_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cracked_deepslate_bricks.json b/assets/minecraft/models/item/cracked_deepslate_bricks.json deleted file mode 100644 index 5edc2399..00000000 --- a/assets/minecraft/models/item/cracked_deepslate_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cracked_deepslate_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cracked_deepslate_tiles.json b/assets/minecraft/models/item/cracked_deepslate_tiles.json deleted file mode 100644 index 9fc7a8c0..00000000 --- a/assets/minecraft/models/item/cracked_deepslate_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cracked_deepslate_tiles" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cracked_nether_bricks.json b/assets/minecraft/models/item/cracked_nether_bricks.json deleted file mode 100644 index 09da8a18..00000000 --- a/assets/minecraft/models/item/cracked_nether_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cracked_nether_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cracked_polished_blackstone_bricks.json b/assets/minecraft/models/item/cracked_polished_blackstone_bricks.json deleted file mode 100644 index 87b9f26e..00000000 --- a/assets/minecraft/models/item/cracked_polished_blackstone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cracked_polished_blackstone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cracked_stone_bricks.json b/assets/minecraft/models/item/cracked_stone_bricks.json deleted file mode 100644 index 46802074..00000000 --- a/assets/minecraft/models/item/cracked_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cracked_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crafter.json b/assets/minecraft/models/item/crafter.json deleted file mode 100644 index 65fda300..00000000 --- a/assets/minecraft/models/item/crafter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crafter" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crafting_table.json b/assets/minecraft/models/item/crafting_table.json deleted file mode 100644 index 323e84b6..00000000 --- a/assets/minecraft/models/item/crafting_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crafting_table" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/creaking_heart.json b/assets/minecraft/models/item/creaking_heart.json deleted file mode 100644 index a071b726..00000000 --- a/assets/minecraft/models/item/creaking_heart.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/creaking_heart" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/creaking_spawn_egg.json b/assets/minecraft/models/item/creaking_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/creaking_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/creeper_head.json b/assets/minecraft/models/item/creeper_head.json deleted file mode 100644 index 364b6e65..00000000 --- a/assets/minecraft/models/item/creeper_head.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_skull" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/creeper_spawn_egg.json b/assets/minecraft/models/item/creeper_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/creeper_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_button.json b/assets/minecraft/models/item/crimson_button.json deleted file mode 100644 index f58c71fc..00000000 --- a/assets/minecraft/models/item/crimson_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_fence.json b/assets/minecraft/models/item/crimson_fence.json deleted file mode 100644 index 3bdd71d1..00000000 --- a/assets/minecraft/models/item/crimson_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_fence_gate.json b/assets/minecraft/models/item/crimson_fence_gate.json deleted file mode 100644 index 36ef1c8c..00000000 --- a/assets/minecraft/models/item/crimson_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_hyphae.json b/assets/minecraft/models/item/crimson_hyphae.json deleted file mode 100644 index 6efe4610..00000000 --- a/assets/minecraft/models/item/crimson_hyphae.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_hyphae" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_nylium.json b/assets/minecraft/models/item/crimson_nylium.json deleted file mode 100644 index 74f93924..00000000 --- a/assets/minecraft/models/item/crimson_nylium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_nylium" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_planks.json b/assets/minecraft/models/item/crimson_planks.json deleted file mode 100644 index 759128e1..00000000 --- a/assets/minecraft/models/item/crimson_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_pressure_plate.json b/assets/minecraft/models/item/crimson_pressure_plate.json deleted file mode 100644 index 436b0ba9..00000000 --- a/assets/minecraft/models/item/crimson_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_slab.json b/assets/minecraft/models/item/crimson_slab.json deleted file mode 100644 index 63ad2927..00000000 --- a/assets/minecraft/models/item/crimson_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_stairs.json b/assets/minecraft/models/item/crimson_stairs.json deleted file mode 100644 index 9cefb2d2..00000000 --- a/assets/minecraft/models/item/crimson_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_stem.json b/assets/minecraft/models/item/crimson_stem.json deleted file mode 100644 index 56d2001d..00000000 --- a/assets/minecraft/models/item/crimson_stem.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_stem" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crimson_trapdoor.json b/assets/minecraft/models/item/crimson_trapdoor.json deleted file mode 100644 index b1cba031..00000000 --- a/assets/minecraft/models/item/crimson_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crimson_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/crossbow.json b/assets/minecraft/models/item/crossbow.json index 0cddcac4..173cac0f 100644 --- a/assets/minecraft/models/item/crossbow.json +++ b/assets/minecraft/models/item/crossbow.json @@ -24,40 +24,5 @@ "translation": [ 1.13, 3.2, 1.13], "scale": [ 0.68, 0.68, 0.68 ] } - }, - "overrides": [ - { - "predicate": { - "pulling": 1 - }, - "model": "item/crossbow_pulling_0" - }, - { - "predicate": { - "pulling": 1, - "pull": 0.58 - }, - "model": "item/crossbow_pulling_1" - }, - { - "predicate": { - "pulling": 1, - "pull": 1.0 - }, - "model": "item/crossbow_pulling_2" - }, - { - "predicate": { - "charged": 1 - }, - "model": "item/crossbow_arrow" - }, - { - "predicate": { - "charged": 1, - "firework": 1 - }, - "model": "item/crossbow_firework" - } - ] + } } diff --git a/assets/minecraft/models/item/crossbow_arrow.json b/assets/minecraft/models/item/crossbow_arrow.json index bc3e3543..5d324f9e 100644 --- a/assets/minecraft/models/item/crossbow_arrow.json +++ b/assets/minecraft/models/item/crossbow_arrow.json @@ -1,6 +1,6 @@ { - "parent": "item/crossbow", - "textures": { - "layer0": "item/crossbow_arrow" - } -} + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "minecraft:item/crossbow_arrow" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/crossbow_firework.json b/assets/minecraft/models/item/crossbow_firework.json index 1ebe175a..577cfeac 100644 --- a/assets/minecraft/models/item/crossbow_firework.json +++ b/assets/minecraft/models/item/crossbow_firework.json @@ -1,6 +1,6 @@ { - "parent": "item/crossbow", - "textures": { - "layer0": "item/crossbow_firework" - } -} + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "minecraft:item/crossbow_firework" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/crossbow_pulling_0.json b/assets/minecraft/models/item/crossbow_pulling_0.json index afd73b86..1eca0652 100644 --- a/assets/minecraft/models/item/crossbow_pulling_0.json +++ b/assets/minecraft/models/item/crossbow_pulling_0.json @@ -1,6 +1,6 @@ { - "parent": "item/crossbow", - "textures": { - "layer0": "item/crossbow_pulling_0" - } -} + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "minecraft:item/crossbow_pulling_0" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/crossbow_pulling_1.json b/assets/minecraft/models/item/crossbow_pulling_1.json index 1c48a748..d704c814 100644 --- a/assets/minecraft/models/item/crossbow_pulling_1.json +++ b/assets/minecraft/models/item/crossbow_pulling_1.json @@ -1,6 +1,6 @@ { - "parent": "item/crossbow", - "textures": { - "layer0": "item/crossbow_pulling_1" - } -} + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "minecraft:item/crossbow_pulling_1" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/crossbow_pulling_2.json b/assets/minecraft/models/item/crossbow_pulling_2.json index 3c2df500..aa95a944 100644 --- a/assets/minecraft/models/item/crossbow_pulling_2.json +++ b/assets/minecraft/models/item/crossbow_pulling_2.json @@ -1,6 +1,6 @@ { - "parent": "item/crossbow", - "textures": { - "layer0": "item/crossbow_pulling_2" - } -} + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "minecraft:item/crossbow_pulling_2" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/crying_obsidian.json b/assets/minecraft/models/item/crying_obsidian.json deleted file mode 100644 index 0d94bfb8..00000000 --- a/assets/minecraft/models/item/crying_obsidian.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/crying_obsidian" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_copper.json b/assets/minecraft/models/item/cut_copper.json deleted file mode 100644 index ce1ec597..00000000 --- a/assets/minecraft/models/item/cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_copper_slab.json b/assets/minecraft/models/item/cut_copper_slab.json deleted file mode 100644 index b6b05101..00000000 --- a/assets/minecraft/models/item/cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_copper_stairs.json b/assets/minecraft/models/item/cut_copper_stairs.json deleted file mode 100644 index 7376f52c..00000000 --- a/assets/minecraft/models/item/cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_red_sandstone.json b/assets/minecraft/models/item/cut_red_sandstone.json deleted file mode 100644 index 665df158..00000000 --- a/assets/minecraft/models/item/cut_red_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_red_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_red_sandstone_slab.json b/assets/minecraft/models/item/cut_red_sandstone_slab.json deleted file mode 100644 index 7767595c..00000000 --- a/assets/minecraft/models/item/cut_red_sandstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_red_sandstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_sandstone.json b/assets/minecraft/models/item/cut_sandstone.json deleted file mode 100644 index 865262dc..00000000 --- a/assets/minecraft/models/item/cut_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cut_sandstone_slab.json b/assets/minecraft/models/item/cut_sandstone_slab.json deleted file mode 100644 index cccc0035..00000000 --- a/assets/minecraft/models/item/cut_sandstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_sandstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_banner.json b/assets/minecraft/models/item/cyan_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/cyan_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_bundle_open_back.json b/assets/minecraft/models/item/cyan_bundle_open_back.json index 27a03d17..44e1d54a 100644 --- a/assets/minecraft/models/item/cyan_bundle_open_back.json +++ b/assets/minecraft/models/item/cyan_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/cyan_bundle_open_back" + "layer0": "minecraft:item/cyan_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_bundle_open_front.json b/assets/minecraft/models/item/cyan_bundle_open_front.json index c7eccd84..e5e484d8 100644 --- a/assets/minecraft/models/item/cyan_bundle_open_front.json +++ b/assets/minecraft/models/item/cyan_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/cyan_bundle_open_front" + "layer0": "minecraft:item/cyan_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_carpet.json b/assets/minecraft/models/item/cyan_carpet.json deleted file mode 100644 index f67e7062..00000000 --- a/assets/minecraft/models/item/cyan_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_concrete.json b/assets/minecraft/models/item/cyan_concrete.json deleted file mode 100644 index 210de101..00000000 --- a/assets/minecraft/models/item/cyan_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_concrete_powder.json b/assets/minecraft/models/item/cyan_concrete_powder.json deleted file mode 100644 index 8fe4c546..00000000 --- a/assets/minecraft/models/item/cyan_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_glazed_terracotta.json b/assets/minecraft/models/item/cyan_glazed_terracotta.json deleted file mode 100644 index c98c2ac8..00000000 --- a/assets/minecraft/models/item/cyan_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_stained_glass.json b/assets/minecraft/models/item/cyan_stained_glass.json deleted file mode 100644 index 8cdd4b93..00000000 --- a/assets/minecraft/models/item/cyan_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_terracotta.json b/assets/minecraft/models/item/cyan_terracotta.json deleted file mode 100644 index 4053734c..00000000 --- a/assets/minecraft/models/item/cyan_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/cyan_wool.json b/assets/minecraft/models/item/cyan_wool.json deleted file mode 100644 index 30c92e7a..00000000 --- a/assets/minecraft/models/item/cyan_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cyan_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/damaged_anvil.json b/assets/minecraft/models/item/damaged_anvil.json deleted file mode 100644 index 657cbd68..00000000 --- a/assets/minecraft/models/item/damaged_anvil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/damaged_anvil" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_button.json b/assets/minecraft/models/item/dark_oak_button.json deleted file mode 100644 index f2ff59ba..00000000 --- a/assets/minecraft/models/item/dark_oak_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_fence.json b/assets/minecraft/models/item/dark_oak_fence.json deleted file mode 100644 index c624d9c9..00000000 --- a/assets/minecraft/models/item/dark_oak_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_fence_gate.json b/assets/minecraft/models/item/dark_oak_fence_gate.json deleted file mode 100644 index 25cbe805..00000000 --- a/assets/minecraft/models/item/dark_oak_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_leaves.json b/assets/minecraft/models/item/dark_oak_leaves.json deleted file mode 100644 index 395882a7..00000000 --- a/assets/minecraft/models/item/dark_oak_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_log.json b/assets/minecraft/models/item/dark_oak_log.json deleted file mode 100644 index 6304aefb..00000000 --- a/assets/minecraft/models/item/dark_oak_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_planks.json b/assets/minecraft/models/item/dark_oak_planks.json deleted file mode 100644 index a3adda1d..00000000 --- a/assets/minecraft/models/item/dark_oak_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_pressure_plate.json b/assets/minecraft/models/item/dark_oak_pressure_plate.json deleted file mode 100644 index 7cd16b9d..00000000 --- a/assets/minecraft/models/item/dark_oak_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_slab.json b/assets/minecraft/models/item/dark_oak_slab.json deleted file mode 100644 index c66e4e43..00000000 --- a/assets/minecraft/models/item/dark_oak_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_stairs.json b/assets/minecraft/models/item/dark_oak_stairs.json deleted file mode 100644 index 1d7b821b..00000000 --- a/assets/minecraft/models/item/dark_oak_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_trapdoor.json b/assets/minecraft/models/item/dark_oak_trapdoor.json deleted file mode 100644 index a91f3c8f..00000000 --- a/assets/minecraft/models/item/dark_oak_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_oak_wood.json b/assets/minecraft/models/item/dark_oak_wood.json deleted file mode 100644 index 3a285ba3..00000000 --- a/assets/minecraft/models/item/dark_oak_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_oak_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_prismarine.json b/assets/minecraft/models/item/dark_prismarine.json deleted file mode 100644 index 461468df..00000000 --- a/assets/minecraft/models/item/dark_prismarine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_prismarine" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_prismarine_slab.json b/assets/minecraft/models/item/dark_prismarine_slab.json deleted file mode 100644 index a9605d9f..00000000 --- a/assets/minecraft/models/item/dark_prismarine_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_prismarine_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dark_prismarine_stairs.json b/assets/minecraft/models/item/dark_prismarine_stairs.json deleted file mode 100644 index 2a11dead..00000000 --- a/assets/minecraft/models/item/dark_prismarine_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dark_prismarine_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/daylight_detector.json b/assets/minecraft/models/item/daylight_detector.json deleted file mode 100644 index f52d6d9a..00000000 --- a/assets/minecraft/models/item/daylight_detector.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/daylight_detector" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dead_brain_coral_block.json b/assets/minecraft/models/item/dead_brain_coral_block.json deleted file mode 100644 index 3134d2b7..00000000 --- a/assets/minecraft/models/item/dead_brain_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dead_brain_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dead_bubble_coral_block.json b/assets/minecraft/models/item/dead_bubble_coral_block.json deleted file mode 100644 index ba3411da..00000000 --- a/assets/minecraft/models/item/dead_bubble_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dead_bubble_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dead_fire_coral_block.json b/assets/minecraft/models/item/dead_fire_coral_block.json deleted file mode 100644 index f169720a..00000000 --- a/assets/minecraft/models/item/dead_fire_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dead_fire_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dead_horn_coral_block.json b/assets/minecraft/models/item/dead_horn_coral_block.json deleted file mode 100644 index a7ed136d..00000000 --- a/assets/minecraft/models/item/dead_horn_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dead_horn_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dead_tube_coral_block.json b/assets/minecraft/models/item/dead_tube_coral_block.json deleted file mode 100644 index a16902f9..00000000 --- a/assets/minecraft/models/item/dead_tube_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dead_tube_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/decorated_pot.json b/assets/minecraft/models/item/decorated_pot.json index 70c96e0f..27f62a4a 100644 --- a/assets/minecraft/models/item/decorated_pot.json +++ b/assets/minecraft/models/item/decorated_pot.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "gui_light": "front", "textures": { "particle": "entity/decorated_pot/decorated_pot_side" diff --git a/assets/minecraft/models/item/deepslate.json b/assets/minecraft/models/item/deepslate.json deleted file mode 100644 index 13980a84..00000000 --- a/assets/minecraft/models/item/deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_brick_slab.json b/assets/minecraft/models/item/deepslate_brick_slab.json deleted file mode 100644 index 7e35175d..00000000 --- a/assets/minecraft/models/item/deepslate_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_brick_stairs.json b/assets/minecraft/models/item/deepslate_brick_stairs.json deleted file mode 100644 index 38c5e3f9..00000000 --- a/assets/minecraft/models/item/deepslate_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_brick_wall.json b/assets/minecraft/models/item/deepslate_brick_wall.json deleted file mode 100644 index d13b4d42..00000000 --- a/assets/minecraft/models/item/deepslate_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_bricks.json b/assets/minecraft/models/item/deepslate_bricks.json deleted file mode 100644 index 5c152588..00000000 --- a/assets/minecraft/models/item/deepslate_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_coal_ore.json b/assets/minecraft/models/item/deepslate_coal_ore.json deleted file mode 100644 index f94aeada..00000000 --- a/assets/minecraft/models/item/deepslate_coal_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_coal_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_copper_ore.json b/assets/minecraft/models/item/deepslate_copper_ore.json deleted file mode 100644 index b5425550..00000000 --- a/assets/minecraft/models/item/deepslate_copper_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_copper_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_diamond_ore.json b/assets/minecraft/models/item/deepslate_diamond_ore.json deleted file mode 100644 index 24eb2e5a..00000000 --- a/assets/minecraft/models/item/deepslate_diamond_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_diamond_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_emerald_ore.json b/assets/minecraft/models/item/deepslate_emerald_ore.json deleted file mode 100644 index a5354b18..00000000 --- a/assets/minecraft/models/item/deepslate_emerald_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_emerald_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_gold_ore.json b/assets/minecraft/models/item/deepslate_gold_ore.json deleted file mode 100644 index 910ff2f7..00000000 --- a/assets/minecraft/models/item/deepslate_gold_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_gold_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_iron_ore.json b/assets/minecraft/models/item/deepslate_iron_ore.json deleted file mode 100644 index 0b10edea..00000000 --- a/assets/minecraft/models/item/deepslate_iron_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_iron_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_lapis_ore.json b/assets/minecraft/models/item/deepslate_lapis_ore.json deleted file mode 100644 index d829cea2..00000000 --- a/assets/minecraft/models/item/deepslate_lapis_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_lapis_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_redstone_ore.json b/assets/minecraft/models/item/deepslate_redstone_ore.json deleted file mode 100644 index c9832e9a..00000000 --- a/assets/minecraft/models/item/deepslate_redstone_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_redstone_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_tile_slab.json b/assets/minecraft/models/item/deepslate_tile_slab.json deleted file mode 100644 index f0979640..00000000 --- a/assets/minecraft/models/item/deepslate_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_tile_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_tile_stairs.json b/assets/minecraft/models/item/deepslate_tile_stairs.json deleted file mode 100644 index 2a7ec05e..00000000 --- a/assets/minecraft/models/item/deepslate_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_tile_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_tile_wall.json b/assets/minecraft/models/item/deepslate_tile_wall.json deleted file mode 100644 index 226fa452..00000000 --- a/assets/minecraft/models/item/deepslate_tile_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_tile_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/deepslate_tiles.json b/assets/minecraft/models/item/deepslate_tiles.json deleted file mode 100644 index bdaaaec5..00000000 --- a/assets/minecraft/models/item/deepslate_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate_tiles" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/diamond_block.json b/assets/minecraft/models/item/diamond_block.json deleted file mode 100644 index 48d351c4..00000000 --- a/assets/minecraft/models/item/diamond_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/diamond_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/diamond_boots.json b/assets/minecraft/models/item/diamond_boots.json index 2badf8fd..d3257821 100644 --- a/assets/minecraft/models/item/diamond_boots.json +++ b/assets/minecraft/models/item/diamond_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/diamond_boots_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/diamond_boots_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/diamond_boots_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/diamond_boots_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/diamond_boots_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/diamond_boots_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/diamond_boots_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/diamond_boots_diamond_darker_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/diamond_boots_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/diamond_boots_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/diamond_boots" } diff --git a/assets/minecraft/models/item/diamond_boots_diamond_darker_trim.json b/assets/minecraft/models/item/diamond_boots_diamond_trim.json similarity index 100% rename from assets/minecraft/models/item/diamond_boots_diamond_darker_trim.json rename to assets/minecraft/models/item/diamond_boots_diamond_trim.json diff --git a/assets/minecraft/models/item/diamond_boots_resin_trim.json b/assets/minecraft/models/item/diamond_boots_resin_trim.json new file mode 100644 index 00000000..ffe193dc --- /dev/null +++ b/assets/minecraft/models/item/diamond_boots_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/diamond_boots", + "layer1": "minecraft:trims/items/boots_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/diamond_chestplate.json b/assets/minecraft/models/item/diamond_chestplate.json index b87eb4b5..2ca3222a 100644 --- a/assets/minecraft/models/item/diamond_chestplate.json +++ b/assets/minecraft/models/item/diamond_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/diamond_chestplate_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/diamond_chestplate_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/diamond_chestplate_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/diamond_chestplate_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/diamond_chestplate_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/diamond_chestplate_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/diamond_chestplate_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/diamond_chestplate_diamond_darker_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/diamond_chestplate_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/diamond_chestplate_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/diamond_chestplate" } diff --git a/assets/minecraft/models/item/diamond_chestplate_diamond_darker_trim.json b/assets/minecraft/models/item/diamond_chestplate_diamond_trim.json similarity index 100% rename from assets/minecraft/models/item/diamond_chestplate_diamond_darker_trim.json rename to assets/minecraft/models/item/diamond_chestplate_diamond_trim.json diff --git a/assets/minecraft/models/item/diamond_chestplate_resin_trim.json b/assets/minecraft/models/item/diamond_chestplate_resin_trim.json new file mode 100644 index 00000000..5c70bed5 --- /dev/null +++ b/assets/minecraft/models/item/diamond_chestplate_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/diamond_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/diamond_helmet.json b/assets/minecraft/models/item/diamond_helmet.json index 982a1110..8ab9fc02 100644 --- a/assets/minecraft/models/item/diamond_helmet.json +++ b/assets/minecraft/models/item/diamond_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/diamond_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/diamond_helmet_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/diamond_helmet_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/diamond_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/diamond_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/diamond_helmet_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/diamond_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/diamond_helmet_diamond_darker_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/diamond_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/diamond_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/diamond_helmet" } diff --git a/assets/minecraft/models/item/diamond_helmet_diamond_darker_trim.json b/assets/minecraft/models/item/diamond_helmet_diamond_trim.json similarity index 100% rename from assets/minecraft/models/item/diamond_helmet_diamond_darker_trim.json rename to assets/minecraft/models/item/diamond_helmet_diamond_trim.json diff --git a/assets/minecraft/models/item/diamond_helmet_resin_trim.json b/assets/minecraft/models/item/diamond_helmet_resin_trim.json new file mode 100644 index 00000000..3acc4297 --- /dev/null +++ b/assets/minecraft/models/item/diamond_helmet_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/diamond_helmet", + "layer1": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/diamond_leggings.json b/assets/minecraft/models/item/diamond_leggings.json index fdc94914..11622ca5 100644 --- a/assets/minecraft/models/item/diamond_leggings.json +++ b/assets/minecraft/models/item/diamond_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/diamond_leggings_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/diamond_leggings_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/diamond_leggings_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/diamond_leggings_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/diamond_leggings_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/diamond_leggings_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/diamond_leggings_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/diamond_leggings_diamond_darker_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/diamond_leggings_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/diamond_leggings_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/diamond_leggings" } diff --git a/assets/minecraft/models/item/diamond_leggings_diamond_darker_trim.json b/assets/minecraft/models/item/diamond_leggings_diamond_trim.json similarity index 100% rename from assets/minecraft/models/item/diamond_leggings_diamond_darker_trim.json rename to assets/minecraft/models/item/diamond_leggings_diamond_trim.json diff --git a/assets/minecraft/models/item/diamond_leggings_resin_trim.json b/assets/minecraft/models/item/diamond_leggings_resin_trim.json new file mode 100644 index 00000000..bf555e5d --- /dev/null +++ b/assets/minecraft/models/item/diamond_leggings_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/diamond_leggings", + "layer1": "minecraft:trims/items/leggings_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/diamond_ore.json b/assets/minecraft/models/item/diamond_ore.json deleted file mode 100644 index da18313d..00000000 --- a/assets/minecraft/models/item/diamond_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/diamond_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/diorite.json b/assets/minecraft/models/item/diorite.json deleted file mode 100644 index f9d3f6b4..00000000 --- a/assets/minecraft/models/item/diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/diorite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/diorite_slab.json b/assets/minecraft/models/item/diorite_slab.json deleted file mode 100644 index fbfbc7a6..00000000 --- a/assets/minecraft/models/item/diorite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/diorite_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/diorite_stairs.json b/assets/minecraft/models/item/diorite_stairs.json deleted file mode 100644 index fdfa11ab..00000000 --- a/assets/minecraft/models/item/diorite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/diorite_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/diorite_wall.json b/assets/minecraft/models/item/diorite_wall.json deleted file mode 100644 index 192d7282..00000000 --- a/assets/minecraft/models/item/diorite_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/diorite_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dirt.json b/assets/minecraft/models/item/dirt.json deleted file mode 100644 index 8f9dbab5..00000000 --- a/assets/minecraft/models/item/dirt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dirt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dirt_path.json b/assets/minecraft/models/item/dirt_path.json deleted file mode 100644 index e60515e4..00000000 --- a/assets/minecraft/models/item/dirt_path.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dirt_path" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dispenser.json b/assets/minecraft/models/item/dispenser.json deleted file mode 100644 index b88156bc..00000000 --- a/assets/minecraft/models/item/dispenser.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dispenser" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dolphin_spawn_egg.json b/assets/minecraft/models/item/dolphin_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/dolphin_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/donkey_spawn_egg.json b/assets/minecraft/models/item/donkey_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/donkey_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dragon_egg.json b/assets/minecraft/models/item/dragon_egg.json deleted file mode 100644 index 1570a78a..00000000 --- a/assets/minecraft/models/item/dragon_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dragon_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dried_kelp_block.json b/assets/minecraft/models/item/dried_kelp_block.json deleted file mode 100644 index 2f3f1c32..00000000 --- a/assets/minecraft/models/item/dried_kelp_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dried_kelp_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dripstone_block.json b/assets/minecraft/models/item/dripstone_block.json deleted file mode 100644 index d6d9c09d..00000000 --- a/assets/minecraft/models/item/dripstone_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dripstone_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/dropper.json b/assets/minecraft/models/item/dropper.json deleted file mode 100644 index a8b40e59..00000000 --- a/assets/minecraft/models/item/dropper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/dropper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/drowned_spawn_egg.json b/assets/minecraft/models/item/drowned_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/drowned_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/elder_guardian_spawn_egg.json b/assets/minecraft/models/item/elder_guardian_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/elder_guardian_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/elytra.json b/assets/minecraft/models/item/elytra.json index 3909ded5..2f1789e6 100644 --- a/assets/minecraft/models/item/elytra.json +++ b/assets/minecraft/models/item/elytra.json @@ -1,14 +1,6 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/elytra" - }, - "overrides": [ - { - "predicate": { - "broken": 1 - }, - "model": "item/broken_elytra" - } - ] -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/elytra" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/elytra_broken.json b/assets/minecraft/models/item/elytra_broken.json new file mode 100644 index 00000000..6751976a --- /dev/null +++ b/assets/minecraft/models/item/elytra_broken.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/elytra_broken" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/emerald_block.json b/assets/minecraft/models/item/emerald_block.json deleted file mode 100644 index 27c3713a..00000000 --- a/assets/minecraft/models/item/emerald_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/emerald_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/emerald_ore.json b/assets/minecraft/models/item/emerald_ore.json deleted file mode 100644 index 3569bde1..00000000 --- a/assets/minecraft/models/item/emerald_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/emerald_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/enchanting_table.json b/assets/minecraft/models/item/enchanting_table.json deleted file mode 100644 index 9f76fca2..00000000 --- a/assets/minecraft/models/item/enchanting_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/enchanting_table" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_portal_frame.json b/assets/minecraft/models/item/end_portal_frame.json deleted file mode 100644 index 718814c2..00000000 --- a/assets/minecraft/models/item/end_portal_frame.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_portal_frame" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_rod.json b/assets/minecraft/models/item/end_rod.json deleted file mode 100644 index 809dec3f..00000000 --- a/assets/minecraft/models/item/end_rod.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_rod" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_stone.json b/assets/minecraft/models/item/end_stone.json deleted file mode 100644 index fc4cf92a..00000000 --- a/assets/minecraft/models/item/end_stone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_stone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_stone_brick_slab.json b/assets/minecraft/models/item/end_stone_brick_slab.json deleted file mode 100644 index 3daf7072..00000000 --- a/assets/minecraft/models/item/end_stone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_stone_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_stone_brick_stairs.json b/assets/minecraft/models/item/end_stone_brick_stairs.json deleted file mode 100644 index b43fdfe6..00000000 --- a/assets/minecraft/models/item/end_stone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_stone_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_stone_brick_wall.json b/assets/minecraft/models/item/end_stone_brick_wall.json deleted file mode 100644 index a0a4f843..00000000 --- a/assets/minecraft/models/item/end_stone_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_stone_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/end_stone_bricks.json b/assets/minecraft/models/item/end_stone_bricks.json deleted file mode 100644 index a0bb1b98..00000000 --- a/assets/minecraft/models/item/end_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/end_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ender_chest.json b/assets/minecraft/models/item/ender_chest.json index 58aba338..31a5c7d7 100644 --- a/assets/minecraft/models/item/ender_chest.json +++ b/assets/minecraft/models/item/ender_chest.json @@ -1,6 +1,6 @@ { - "parent": "item/chest", - "textures": { - "particle": "block/obsidian" - } -} + "parent": "minecraft:item/template_chest", + "textures": { + "particle": "minecraft:block/obsidian" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/ender_dragon_spawn_egg.json b/assets/minecraft/models/item/ender_dragon_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/ender_dragon_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/enderman_spawn_egg.json b/assets/minecraft/models/item/enderman_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/enderman_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/endermite_spawn_egg.json b/assets/minecraft/models/item/endermite_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/endermite_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/evoker_spawn_egg.json b/assets/minecraft/models/item/evoker_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/evoker_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_chiseled_copper.json b/assets/minecraft/models/item/exposed_chiseled_copper.json deleted file mode 100644 index 11278b6a..00000000 --- a/assets/minecraft/models/item/exposed_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_copper.json b/assets/minecraft/models/item/exposed_copper.json deleted file mode 100644 index 5881fd7b..00000000 --- a/assets/minecraft/models/item/exposed_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_copper_bulb.json b/assets/minecraft/models/item/exposed_copper_bulb.json deleted file mode 100644 index 6ddcba9a..00000000 --- a/assets/minecraft/models/item/exposed_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_copper_grate.json b/assets/minecraft/models/item/exposed_copper_grate.json deleted file mode 100644 index b7a3c78e..00000000 --- a/assets/minecraft/models/item/exposed_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_copper_trapdoor.json b/assets/minecraft/models/item/exposed_copper_trapdoor.json deleted file mode 100644 index 7546ce3c..00000000 --- a/assets/minecraft/models/item/exposed_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_copper_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_cut_copper.json b/assets/minecraft/models/item/exposed_cut_copper.json deleted file mode 100644 index b5c7d8f0..00000000 --- a/assets/minecraft/models/item/exposed_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_cut_copper_slab.json b/assets/minecraft/models/item/exposed_cut_copper_slab.json deleted file mode 100644 index 29ce4723..00000000 --- a/assets/minecraft/models/item/exposed_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/exposed_cut_copper_stairs.json b/assets/minecraft/models/item/exposed_cut_copper_stairs.json deleted file mode 100644 index 24bdd285..00000000 --- a/assets/minecraft/models/item/exposed_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/farmland.json b/assets/minecraft/models/item/farmland.json deleted file mode 100644 index 1c5eceae..00000000 --- a/assets/minecraft/models/item/farmland.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/farmland" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/filled_map.json b/assets/minecraft/models/item/filled_map.json index 077d2530..2d681387 100644 --- a/assets/minecraft/models/item/filled_map.json +++ b/assets/minecraft/models/item/filled_map.json @@ -1,7 +1,7 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/filled_map", - "layer1": "item/filled_map_markings" - } -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/filled_map", + "layer1": "minecraft:item/filled_map_markings" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/fire_coral_block.json b/assets/minecraft/models/item/fire_coral_block.json deleted file mode 100644 index eebe05e1..00000000 --- a/assets/minecraft/models/item/fire_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/fire_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/firework_star.json b/assets/minecraft/models/item/firework_star.json index 4e2e9fe8..b54ca29d 100644 --- a/assets/minecraft/models/item/firework_star.json +++ b/assets/minecraft/models/item/firework_star.json @@ -1,7 +1,7 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/firework_star", - "layer1": "item/firework_star_overlay" - } -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/firework_star", + "layer1": "minecraft:item/firework_star_overlay" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/fishing_rod.json b/assets/minecraft/models/item/fishing_rod.json index 6d52bb97..32143f32 100644 --- a/assets/minecraft/models/item/fishing_rod.json +++ b/assets/minecraft/models/item/fishing_rod.json @@ -1,14 +1,6 @@ { - "parent": "item/handheld_rod", - "textures": { - "layer0": "item/fishing_rod" - }, - "overrides": [ - { - "predicate": { - "cast": 1 - }, - "model": "item/fishing_rod_cast" - } - ] -} + "parent": "minecraft:item/handheld_rod", + "textures": { + "layer0": "minecraft:item/fishing_rod" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/fishing_rod_cast.json b/assets/minecraft/models/item/fishing_rod_cast.json index 55c2a525..63190afc 100644 --- a/assets/minecraft/models/item/fishing_rod_cast.json +++ b/assets/minecraft/models/item/fishing_rod_cast.json @@ -1,6 +1,6 @@ { - "parent": "item/fishing_rod", - "textures": { - "layer0": "item/fishing_rod_cast" - } -} + "parent": "minecraft:item/handheld_rod", + "textures": { + "layer0": "minecraft:item/fishing_rod_cast" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/fletching_table.json b/assets/minecraft/models/item/fletching_table.json deleted file mode 100644 index bc2b1bdc..00000000 --- a/assets/minecraft/models/item/fletching_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/fletching_table" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/flowering_azalea.json b/assets/minecraft/models/item/flowering_azalea.json deleted file mode 100644 index e5f437e8..00000000 --- a/assets/minecraft/models/item/flowering_azalea.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/flowering_azalea" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/flowering_azalea_leaves.json b/assets/minecraft/models/item/flowering_azalea_leaves.json deleted file mode 100644 index c3ecf6e7..00000000 --- a/assets/minecraft/models/item/flowering_azalea_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/flowering_azalea_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/fox_spawn_egg.json b/assets/minecraft/models/item/fox_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/fox_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/frog_spawn_egg.json b/assets/minecraft/models/item/frog_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/frog_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/furnace.json b/assets/minecraft/models/item/furnace.json deleted file mode 100644 index 593027e9..00000000 --- a/assets/minecraft/models/item/furnace.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/furnace" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ghast_spawn_egg.json b/assets/minecraft/models/item/ghast_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/ghast_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gilded_blackstone.json b/assets/minecraft/models/item/gilded_blackstone.json deleted file mode 100644 index a0779ccd..00000000 --- a/assets/minecraft/models/item/gilded_blackstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gilded_blackstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/glass.json b/assets/minecraft/models/item/glass.json deleted file mode 100644 index 65825434..00000000 --- a/assets/minecraft/models/item/glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/glow_squid_spawn_egg.json b/assets/minecraft/models/item/glow_squid_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/glow_squid_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/glowstone.json b/assets/minecraft/models/item/glowstone.json deleted file mode 100644 index 5567a887..00000000 --- a/assets/minecraft/models/item/glowstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/glowstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/goat_horn.json b/assets/minecraft/models/item/goat_horn.json index eb549504..d2632890 100644 --- a/assets/minecraft/models/item/goat_horn.json +++ b/assets/minecraft/models/item/goat_horn.json @@ -24,13 +24,5 @@ "translation": [ 1.13, 3.2, 1.13 ], "scale": [ 0.68, 0.68, 0.68 ] } - }, - "overrides": [ - { - "predicate": { - "tooting": 1 - }, - "model": "item/tooting_goat_horn" - } - ] + } } diff --git a/assets/minecraft/models/item/goat_spawn_egg.json b/assets/minecraft/models/item/goat_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/goat_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gold_block.json b/assets/minecraft/models/item/gold_block.json deleted file mode 100644 index f9cefd04..00000000 --- a/assets/minecraft/models/item/gold_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gold_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gold_ore.json b/assets/minecraft/models/item/gold_ore.json deleted file mode 100644 index 64c16453..00000000 --- a/assets/minecraft/models/item/gold_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gold_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/golden_boots.json b/assets/minecraft/models/item/golden_boots.json index 427896c3..24f3c587 100644 --- a/assets/minecraft/models/item/golden_boots.json +++ b/assets/minecraft/models/item/golden_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/golden_boots_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/golden_boots_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/golden_boots_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/golden_boots_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/golden_boots_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/golden_boots_gold_darker_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/golden_boots_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/golden_boots_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/golden_boots_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/golden_boots_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/golden_boots" } diff --git a/assets/minecraft/models/item/golden_boots_gold_darker_trim.json b/assets/minecraft/models/item/golden_boots_gold_trim.json similarity index 100% rename from assets/minecraft/models/item/golden_boots_gold_darker_trim.json rename to assets/minecraft/models/item/golden_boots_gold_trim.json diff --git a/assets/minecraft/models/item/golden_boots_resin_trim.json b/assets/minecraft/models/item/golden_boots_resin_trim.json new file mode 100644 index 00000000..3bf3bb8e --- /dev/null +++ b/assets/minecraft/models/item/golden_boots_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/golden_boots", + "layer1": "minecraft:trims/items/boots_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/golden_chestplate.json b/assets/minecraft/models/item/golden_chestplate.json index b828f032..8c7b0bbf 100644 --- a/assets/minecraft/models/item/golden_chestplate.json +++ b/assets/minecraft/models/item/golden_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/golden_chestplate_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/golden_chestplate_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/golden_chestplate_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/golden_chestplate_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/golden_chestplate_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/golden_chestplate_gold_darker_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/golden_chestplate_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/golden_chestplate_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/golden_chestplate_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/golden_chestplate_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/golden_chestplate" } diff --git a/assets/minecraft/models/item/golden_chestplate_gold_darker_trim.json b/assets/minecraft/models/item/golden_chestplate_gold_trim.json similarity index 100% rename from assets/minecraft/models/item/golden_chestplate_gold_darker_trim.json rename to assets/minecraft/models/item/golden_chestplate_gold_trim.json diff --git a/assets/minecraft/models/item/golden_chestplate_resin_trim.json b/assets/minecraft/models/item/golden_chestplate_resin_trim.json new file mode 100644 index 00000000..98f609a0 --- /dev/null +++ b/assets/minecraft/models/item/golden_chestplate_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/golden_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/golden_helmet.json b/assets/minecraft/models/item/golden_helmet.json index 114e5693..d0c08156 100644 --- a/assets/minecraft/models/item/golden_helmet.json +++ b/assets/minecraft/models/item/golden_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/golden_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/golden_helmet_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/golden_helmet_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/golden_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/golden_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/golden_helmet_gold_darker_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/golden_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/golden_helmet_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/golden_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/golden_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/golden_helmet" } diff --git a/assets/minecraft/models/item/golden_helmet_gold_darker_trim.json b/assets/minecraft/models/item/golden_helmet_gold_trim.json similarity index 100% rename from assets/minecraft/models/item/golden_helmet_gold_darker_trim.json rename to assets/minecraft/models/item/golden_helmet_gold_trim.json diff --git a/assets/minecraft/models/item/golden_helmet_resin_trim.json b/assets/minecraft/models/item/golden_helmet_resin_trim.json new file mode 100644 index 00000000..d9d23f2e --- /dev/null +++ b/assets/minecraft/models/item/golden_helmet_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/golden_helmet", + "layer1": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/golden_leggings.json b/assets/minecraft/models/item/golden_leggings.json index 285ffb0d..cb5bd0e6 100644 --- a/assets/minecraft/models/item/golden_leggings.json +++ b/assets/minecraft/models/item/golden_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/golden_leggings_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/golden_leggings_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/golden_leggings_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/golden_leggings_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/golden_leggings_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/golden_leggings_gold_darker_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/golden_leggings_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/golden_leggings_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/golden_leggings_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/golden_leggings_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/golden_leggings" } diff --git a/assets/minecraft/models/item/golden_leggings_gold_darker_trim.json b/assets/minecraft/models/item/golden_leggings_gold_trim.json similarity index 100% rename from assets/minecraft/models/item/golden_leggings_gold_darker_trim.json rename to assets/minecraft/models/item/golden_leggings_gold_trim.json diff --git a/assets/minecraft/models/item/golden_leggings_resin_trim.json b/assets/minecraft/models/item/golden_leggings_resin_trim.json new file mode 100644 index 00000000..b685dc67 --- /dev/null +++ b/assets/minecraft/models/item/golden_leggings_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/golden_leggings", + "layer1": "minecraft:trims/items/leggings_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/granite.json b/assets/minecraft/models/item/granite.json deleted file mode 100644 index 4dd54d02..00000000 --- a/assets/minecraft/models/item/granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/granite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/granite_slab.json b/assets/minecraft/models/item/granite_slab.json deleted file mode 100644 index 95ee6109..00000000 --- a/assets/minecraft/models/item/granite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/granite_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/granite_stairs.json b/assets/minecraft/models/item/granite_stairs.json deleted file mode 100644 index 68b4e669..00000000 --- a/assets/minecraft/models/item/granite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/granite_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/granite_wall.json b/assets/minecraft/models/item/granite_wall.json deleted file mode 100644 index de494270..00000000 --- a/assets/minecraft/models/item/granite_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/granite_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/grass_block.json b/assets/minecraft/models/item/grass_block.json deleted file mode 100644 index f54d345a..00000000 --- a/assets/minecraft/models/item/grass_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/grass_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gravel.json b/assets/minecraft/models/item/gravel.json deleted file mode 100644 index ee8cbc03..00000000 --- a/assets/minecraft/models/item/gravel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gravel" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_banner.json b/assets/minecraft/models/item/gray_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/gray_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_bundle_open_back.json b/assets/minecraft/models/item/gray_bundle_open_back.json index 7b4a9a7d..f27e9553 100644 --- a/assets/minecraft/models/item/gray_bundle_open_back.json +++ b/assets/minecraft/models/item/gray_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/gray_bundle_open_back" + "layer0": "minecraft:item/gray_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_bundle_open_front.json b/assets/minecraft/models/item/gray_bundle_open_front.json index cbcccfec..9c7bb376 100644 --- a/assets/minecraft/models/item/gray_bundle_open_front.json +++ b/assets/minecraft/models/item/gray_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/gray_bundle_open_front" + "layer0": "minecraft:item/gray_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_carpet.json b/assets/minecraft/models/item/gray_carpet.json deleted file mode 100644 index 5fe85f09..00000000 --- a/assets/minecraft/models/item/gray_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_concrete.json b/assets/minecraft/models/item/gray_concrete.json deleted file mode 100644 index 9b89dd7b..00000000 --- a/assets/minecraft/models/item/gray_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_concrete_powder.json b/assets/minecraft/models/item/gray_concrete_powder.json deleted file mode 100644 index 47d3dd50..00000000 --- a/assets/minecraft/models/item/gray_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_glazed_terracotta.json b/assets/minecraft/models/item/gray_glazed_terracotta.json deleted file mode 100644 index d58bce8a..00000000 --- a/assets/minecraft/models/item/gray_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_stained_glass.json b/assets/minecraft/models/item/gray_stained_glass.json deleted file mode 100644 index 34c0fa6c..00000000 --- a/assets/minecraft/models/item/gray_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_terracotta.json b/assets/minecraft/models/item/gray_terracotta.json deleted file mode 100644 index 6c415c03..00000000 --- a/assets/minecraft/models/item/gray_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/gray_wool.json b/assets/minecraft/models/item/gray_wool.json deleted file mode 100644 index 88c930a6..00000000 --- a/assets/minecraft/models/item/gray_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/gray_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_banner.json b/assets/minecraft/models/item/green_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/green_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_bundle_open_back.json b/assets/minecraft/models/item/green_bundle_open_back.json index a0b9c2a7..81ffde32 100644 --- a/assets/minecraft/models/item/green_bundle_open_back.json +++ b/assets/minecraft/models/item/green_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/green_bundle_open_back" + "layer0": "minecraft:item/green_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_bundle_open_front.json b/assets/minecraft/models/item/green_bundle_open_front.json index 23dd6989..a188a6a1 100644 --- a/assets/minecraft/models/item/green_bundle_open_front.json +++ b/assets/minecraft/models/item/green_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/green_bundle_open_front" + "layer0": "minecraft:item/green_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_carpet.json b/assets/minecraft/models/item/green_carpet.json deleted file mode 100644 index 772c294f..00000000 --- a/assets/minecraft/models/item/green_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_concrete.json b/assets/minecraft/models/item/green_concrete.json deleted file mode 100644 index 0e3b0f95..00000000 --- a/assets/minecraft/models/item/green_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_concrete_powder.json b/assets/minecraft/models/item/green_concrete_powder.json deleted file mode 100644 index 4c9c70f0..00000000 --- a/assets/minecraft/models/item/green_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_glazed_terracotta.json b/assets/minecraft/models/item/green_glazed_terracotta.json deleted file mode 100644 index 68333f84..00000000 --- a/assets/minecraft/models/item/green_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_stained_glass.json b/assets/minecraft/models/item/green_stained_glass.json deleted file mode 100644 index e10e37a8..00000000 --- a/assets/minecraft/models/item/green_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_terracotta.json b/assets/minecraft/models/item/green_terracotta.json deleted file mode 100644 index bf20f272..00000000 --- a/assets/minecraft/models/item/green_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/green_wool.json b/assets/minecraft/models/item/green_wool.json deleted file mode 100644 index a8cfdf47..00000000 --- a/assets/minecraft/models/item/green_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/green_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/grindstone.json b/assets/minecraft/models/item/grindstone.json deleted file mode 100644 index 2faa8ae8..00000000 --- a/assets/minecraft/models/item/grindstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/grindstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/guardian_spawn_egg.json b/assets/minecraft/models/item/guardian_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/guardian_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/hay_block.json b/assets/minecraft/models/item/hay_block.json deleted file mode 100644 index 6c92e25d..00000000 --- a/assets/minecraft/models/item/hay_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/hay_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/heavy_core.json b/assets/minecraft/models/item/heavy_core.json deleted file mode 100644 index aed92e07..00000000 --- a/assets/minecraft/models/item/heavy_core.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/heavy_core" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/heavy_weighted_pressure_plate.json b/assets/minecraft/models/item/heavy_weighted_pressure_plate.json deleted file mode 100644 index ef384772..00000000 --- a/assets/minecraft/models/item/heavy_weighted_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/heavy_weighted_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/hoglin_spawn_egg.json b/assets/minecraft/models/item/hoglin_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/hoglin_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/honey_block.json b/assets/minecraft/models/item/honey_block.json deleted file mode 100644 index 29818ade..00000000 --- a/assets/minecraft/models/item/honey_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/honey_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/honeycomb_block.json b/assets/minecraft/models/item/honeycomb_block.json deleted file mode 100644 index 0a2c9541..00000000 --- a/assets/minecraft/models/item/honeycomb_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/honeycomb_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/horn_coral_block.json b/assets/minecraft/models/item/horn_coral_block.json deleted file mode 100644 index ba702d24..00000000 --- a/assets/minecraft/models/item/horn_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/horn_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/horse_spawn_egg.json b/assets/minecraft/models/item/horse_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/horse_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/husk_spawn_egg.json b/assets/minecraft/models/item/husk_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/husk_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ice.json b/assets/minecraft/models/item/ice.json deleted file mode 100644 index 1ec90d77..00000000 --- a/assets/minecraft/models/item/ice.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/ice" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_chiseled_stone_bricks.json b/assets/minecraft/models/item/infested_chiseled_stone_bricks.json deleted file mode 100644 index ac7e5e66..00000000 --- a/assets/minecraft/models/item/infested_chiseled_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_cobblestone.json b/assets/minecraft/models/item/infested_cobblestone.json deleted file mode 100644 index 35e828df..00000000 --- a/assets/minecraft/models/item/infested_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cobblestone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_cracked_stone_bricks.json b/assets/minecraft/models/item/infested_cracked_stone_bricks.json deleted file mode 100644 index 46802074..00000000 --- a/assets/minecraft/models/item/infested_cracked_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cracked_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_deepslate.json b/assets/minecraft/models/item/infested_deepslate.json deleted file mode 100644 index 13980a84..00000000 --- a/assets/minecraft/models/item/infested_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/deepslate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_mossy_stone_bricks.json b/assets/minecraft/models/item/infested_mossy_stone_bricks.json deleted file mode 100644 index a9fe750f..00000000 --- a/assets/minecraft/models/item/infested_mossy_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_stone.json b/assets/minecraft/models/item/infested_stone.json deleted file mode 100644 index 37f27f10..00000000 --- a/assets/minecraft/models/item/infested_stone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/infested_stone_bricks.json b/assets/minecraft/models/item/infested_stone_bricks.json deleted file mode 100644 index 51de871c..00000000 --- a/assets/minecraft/models/item/infested_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_block.json b/assets/minecraft/models/item/iron_block.json deleted file mode 100644 index acac52ca..00000000 --- a/assets/minecraft/models/item/iron_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/iron_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_boots.json b/assets/minecraft/models/item/iron_boots.json index a1f2a4fc..ee127da2 100644 --- a/assets/minecraft/models/item/iron_boots.json +++ b/assets/minecraft/models/item/iron_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/iron_boots_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/iron_boots_iron_darker_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/iron_boots_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/iron_boots_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/iron_boots_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/iron_boots_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/iron_boots_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/iron_boots_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/iron_boots_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/iron_boots_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/iron_boots" } diff --git a/assets/minecraft/models/item/iron_boots_iron_darker_trim.json b/assets/minecraft/models/item/iron_boots_iron_trim.json similarity index 100% rename from assets/minecraft/models/item/iron_boots_iron_darker_trim.json rename to assets/minecraft/models/item/iron_boots_iron_trim.json diff --git a/assets/minecraft/models/item/iron_boots_resin_trim.json b/assets/minecraft/models/item/iron_boots_resin_trim.json new file mode 100644 index 00000000..50976be4 --- /dev/null +++ b/assets/minecraft/models/item/iron_boots_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/iron_boots", + "layer1": "minecraft:trims/items/boots_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_chestplate.json b/assets/minecraft/models/item/iron_chestplate.json index a0385c25..2c52d1bd 100644 --- a/assets/minecraft/models/item/iron_chestplate.json +++ b/assets/minecraft/models/item/iron_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/iron_chestplate_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/iron_chestplate_iron_darker_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/iron_chestplate_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/iron_chestplate_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/iron_chestplate_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/iron_chestplate_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/iron_chestplate_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/iron_chestplate_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/iron_chestplate_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/iron_chestplate_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/iron_chestplate" } diff --git a/assets/minecraft/models/item/iron_chestplate_iron_darker_trim.json b/assets/minecraft/models/item/iron_chestplate_iron_trim.json similarity index 100% rename from assets/minecraft/models/item/iron_chestplate_iron_darker_trim.json rename to assets/minecraft/models/item/iron_chestplate_iron_trim.json diff --git a/assets/minecraft/models/item/iron_chestplate_resin_trim.json b/assets/minecraft/models/item/iron_chestplate_resin_trim.json new file mode 100644 index 00000000..2b877534 --- /dev/null +++ b/assets/minecraft/models/item/iron_chestplate_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/iron_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_golem_spawn_egg.json b/assets/minecraft/models/item/iron_golem_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/iron_golem_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_helmet.json b/assets/minecraft/models/item/iron_helmet.json index a2e575f9..8203b8a5 100644 --- a/assets/minecraft/models/item/iron_helmet.json +++ b/assets/minecraft/models/item/iron_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/iron_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/iron_helmet_iron_darker_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/iron_helmet_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/iron_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/iron_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/iron_helmet_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/iron_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/iron_helmet_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/iron_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/iron_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/iron_helmet" } diff --git a/assets/minecraft/models/item/iron_helmet_iron_darker_trim.json b/assets/minecraft/models/item/iron_helmet_iron_trim.json similarity index 100% rename from assets/minecraft/models/item/iron_helmet_iron_darker_trim.json rename to assets/minecraft/models/item/iron_helmet_iron_trim.json diff --git a/assets/minecraft/models/item/iron_helmet_resin_trim.json b/assets/minecraft/models/item/iron_helmet_resin_trim.json new file mode 100644 index 00000000..0292053d --- /dev/null +++ b/assets/minecraft/models/item/iron_helmet_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/iron_helmet", + "layer1": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_leggings.json b/assets/minecraft/models/item/iron_leggings.json index 826c4f73..324b71c1 100644 --- a/assets/minecraft/models/item/iron_leggings.json +++ b/assets/minecraft/models/item/iron_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/iron_leggings_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/iron_leggings_iron_darker_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/iron_leggings_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/iron_leggings_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/iron_leggings_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/iron_leggings_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/iron_leggings_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/iron_leggings_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/iron_leggings_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/iron_leggings_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/iron_leggings" } diff --git a/assets/minecraft/models/item/iron_leggings_iron_darker_trim.json b/assets/minecraft/models/item/iron_leggings_iron_trim.json similarity index 100% rename from assets/minecraft/models/item/iron_leggings_iron_darker_trim.json rename to assets/minecraft/models/item/iron_leggings_iron_trim.json diff --git a/assets/minecraft/models/item/iron_leggings_resin_trim.json b/assets/minecraft/models/item/iron_leggings_resin_trim.json new file mode 100644 index 00000000..11dba3be --- /dev/null +++ b/assets/minecraft/models/item/iron_leggings_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/iron_leggings", + "layer1": "minecraft:trims/items/leggings_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_ore.json b/assets/minecraft/models/item/iron_ore.json deleted file mode 100644 index 5a356139..00000000 --- a/assets/minecraft/models/item/iron_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/iron_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/iron_trapdoor.json b/assets/minecraft/models/item/iron_trapdoor.json deleted file mode 100644 index b3a30b76..00000000 --- a/assets/minecraft/models/item/iron_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/iron_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jack_o_lantern.json b/assets/minecraft/models/item/jack_o_lantern.json deleted file mode 100644 index d2307203..00000000 --- a/assets/minecraft/models/item/jack_o_lantern.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jack_o_lantern" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jigsaw.json b/assets/minecraft/models/item/jigsaw.json deleted file mode 100644 index b0c47630..00000000 --- a/assets/minecraft/models/item/jigsaw.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jigsaw" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jukebox.json b/assets/minecraft/models/item/jukebox.json deleted file mode 100644 index 4d2923ac..00000000 --- a/assets/minecraft/models/item/jukebox.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jukebox" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_button.json b/assets/minecraft/models/item/jungle_button.json deleted file mode 100644 index 360738a3..00000000 --- a/assets/minecraft/models/item/jungle_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_fence.json b/assets/minecraft/models/item/jungle_fence.json deleted file mode 100644 index c5e6b2aa..00000000 --- a/assets/minecraft/models/item/jungle_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_fence_gate.json b/assets/minecraft/models/item/jungle_fence_gate.json deleted file mode 100644 index 8612c91d..00000000 --- a/assets/minecraft/models/item/jungle_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_leaves.json b/assets/minecraft/models/item/jungle_leaves.json deleted file mode 100644 index 4be7c1ad..00000000 --- a/assets/minecraft/models/item/jungle_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_log.json b/assets/minecraft/models/item/jungle_log.json deleted file mode 100644 index 2e6c371b..00000000 --- a/assets/minecraft/models/item/jungle_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_planks.json b/assets/minecraft/models/item/jungle_planks.json deleted file mode 100644 index 03f6926a..00000000 --- a/assets/minecraft/models/item/jungle_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_pressure_plate.json b/assets/minecraft/models/item/jungle_pressure_plate.json deleted file mode 100644 index 18a6d0f5..00000000 --- a/assets/minecraft/models/item/jungle_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_slab.json b/assets/minecraft/models/item/jungle_slab.json deleted file mode 100644 index ed5a4321..00000000 --- a/assets/minecraft/models/item/jungle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_stairs.json b/assets/minecraft/models/item/jungle_stairs.json deleted file mode 100644 index 87e9264c..00000000 --- a/assets/minecraft/models/item/jungle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_trapdoor.json b/assets/minecraft/models/item/jungle_trapdoor.json deleted file mode 100644 index 996f2808..00000000 --- a/assets/minecraft/models/item/jungle_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/jungle_wood.json b/assets/minecraft/models/item/jungle_wood.json deleted file mode 100644 index c993caea..00000000 --- a/assets/minecraft/models/item/jungle_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/jungle_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lapis_block.json b/assets/minecraft/models/item/lapis_block.json deleted file mode 100644 index 1dcdaf6e..00000000 --- a/assets/minecraft/models/item/lapis_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lapis_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lapis_ore.json b/assets/minecraft/models/item/lapis_ore.json deleted file mode 100644 index 87cec1e4..00000000 --- a/assets/minecraft/models/item/lapis_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lapis_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/leather_boots.json b/assets/minecraft/models/item/leather_boots.json index fcba9da9..54bdcdbf 100644 --- a/assets/minecraft/models/item/leather_boots.json +++ b/assets/minecraft/models/item/leather_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/leather_boots_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/leather_boots_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/leather_boots_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/leather_boots_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/leather_boots_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/leather_boots_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/leather_boots_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/leather_boots_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/leather_boots_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/leather_boots_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/leather_boots", "layer1": "minecraft:item/leather_boots_overlay" diff --git a/assets/minecraft/models/item/leather_boots_resin_trim.json b/assets/minecraft/models/item/leather_boots_resin_trim.json new file mode 100644 index 00000000..43fcb574 --- /dev/null +++ b/assets/minecraft/models/item/leather_boots_resin_trim.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/leather_boots", + "layer1": "minecraft:item/leather_boots_overlay", + "layer2": "minecraft:trims/items/boots_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/leather_chestplate.json b/assets/minecraft/models/item/leather_chestplate.json index 93976e78..4628d113 100644 --- a/assets/minecraft/models/item/leather_chestplate.json +++ b/assets/minecraft/models/item/leather_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/leather_chestplate_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/leather_chestplate_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/leather_chestplate_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/leather_chestplate_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/leather_chestplate_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/leather_chestplate_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/leather_chestplate_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/leather_chestplate_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/leather_chestplate_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/leather_chestplate_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/leather_chestplate", "layer1": "minecraft:item/leather_chestplate_overlay" diff --git a/assets/minecraft/models/item/leather_chestplate_resin_trim.json b/assets/minecraft/models/item/leather_chestplate_resin_trim.json new file mode 100644 index 00000000..41205308 --- /dev/null +++ b/assets/minecraft/models/item/leather_chestplate_resin_trim.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/leather_chestplate", + "layer1": "minecraft:item/leather_chestplate_overlay", + "layer2": "minecraft:trims/items/chestplate_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/leather_helmet.json b/assets/minecraft/models/item/leather_helmet.json index 616e6ebd..74041e7c 100644 --- a/assets/minecraft/models/item/leather_helmet.json +++ b/assets/minecraft/models/item/leather_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/leather_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/leather_helmet_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/leather_helmet_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/leather_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/leather_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/leather_helmet_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/leather_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/leather_helmet_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/leather_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/leather_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/leather_helmet", "layer1": "minecraft:item/leather_helmet_overlay" diff --git a/assets/minecraft/models/item/leather_helmet_resin_trim.json b/assets/minecraft/models/item/leather_helmet_resin_trim.json new file mode 100644 index 00000000..1812bdd3 --- /dev/null +++ b/assets/minecraft/models/item/leather_helmet_resin_trim.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/leather_helmet", + "layer1": "minecraft:item/leather_helmet_overlay", + "layer2": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/leather_leggings.json b/assets/minecraft/models/item/leather_leggings.json index dcf68e17..0d101f4e 100644 --- a/assets/minecraft/models/item/leather_leggings.json +++ b/assets/minecraft/models/item/leather_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/leather_leggings_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/leather_leggings_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/leather_leggings_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/leather_leggings_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/leather_leggings_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/leather_leggings_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/leather_leggings_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/leather_leggings_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/leather_leggings_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/leather_leggings_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/leather_leggings", "layer1": "minecraft:item/leather_leggings_overlay" diff --git a/assets/minecraft/models/item/leather_leggings_resin_trim.json b/assets/minecraft/models/item/leather_leggings_resin_trim.json new file mode 100644 index 00000000..73cde2c4 --- /dev/null +++ b/assets/minecraft/models/item/leather_leggings_resin_trim.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/leather_leggings", + "layer1": "minecraft:item/leather_leggings_overlay", + "layer2": "minecraft:trims/items/leggings_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/lectern.json b/assets/minecraft/models/item/lectern.json deleted file mode 100644 index 4f2c887a..00000000 --- a/assets/minecraft/models/item/lectern.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lectern" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light.json b/assets/minecraft/models/item/light.json index f53de1b5..9afb5f2d 100644 --- a/assets/minecraft/models/item/light.json +++ b/assets/minecraft/models/item/light.json @@ -2,23 +2,5 @@ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/light" - }, - "overrides": [ - { "predicate": { "level": 0.0000 }, "model": "item/light_00" }, - { "predicate": { "level": 0.0625 }, "model": "item/light_01" }, - { "predicate": { "level": 0.1250 }, "model": "item/light_02" }, - { "predicate": { "level": 0.1875 }, "model": "item/light_03" }, - { "predicate": { "level": 0.2500 }, "model": "item/light_04" }, - { "predicate": { "level": 0.3125 }, "model": "item/light_05" }, - { "predicate": { "level": 0.3750 }, "model": "item/light_06" }, - { "predicate": { "level": 0.4375 }, "model": "item/light_07" }, - { "predicate": { "level": 0.5000 }, "model": "item/light_08" }, - { "predicate": { "level": 0.5625 }, "model": "item/light_09" }, - { "predicate": { "level": 0.6250 }, "model": "item/light_10" }, - { "predicate": { "level": 0.6875 }, "model": "item/light_11" }, - { "predicate": { "level": 0.7500 }, "model": "item/light_12" }, - { "predicate": { "level": 0.8125 }, "model": "item/light_13" }, - { "predicate": { "level": 0.8750 }, "model": "item/light_14" }, - { "predicate": { "level": 0.9375 }, "model": "item/light_15" } - ] -} + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_banner.json b/assets/minecraft/models/item/light_blue_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/light_blue_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_bundle_open_back.json b/assets/minecraft/models/item/light_blue_bundle_open_back.json index 3a0cfc26..e5a589c9 100644 --- a/assets/minecraft/models/item/light_blue_bundle_open_back.json +++ b/assets/minecraft/models/item/light_blue_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/light_blue_bundle_open_back" + "layer0": "minecraft:item/light_blue_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_bundle_open_front.json b/assets/minecraft/models/item/light_blue_bundle_open_front.json index 824e3ccd..02e93921 100644 --- a/assets/minecraft/models/item/light_blue_bundle_open_front.json +++ b/assets/minecraft/models/item/light_blue_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/light_blue_bundle_open_front" + "layer0": "minecraft:item/light_blue_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_carpet.json b/assets/minecraft/models/item/light_blue_carpet.json deleted file mode 100644 index 9f199e5c..00000000 --- a/assets/minecraft/models/item/light_blue_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_concrete.json b/assets/minecraft/models/item/light_blue_concrete.json deleted file mode 100644 index 68a0890f..00000000 --- a/assets/minecraft/models/item/light_blue_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_concrete_powder.json b/assets/minecraft/models/item/light_blue_concrete_powder.json deleted file mode 100644 index 22ec71d5..00000000 --- a/assets/minecraft/models/item/light_blue_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_glazed_terracotta.json b/assets/minecraft/models/item/light_blue_glazed_terracotta.json deleted file mode 100644 index 3d2b3bd7..00000000 --- a/assets/minecraft/models/item/light_blue_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_stained_glass.json b/assets/minecraft/models/item/light_blue_stained_glass.json deleted file mode 100644 index 0aef7a92..00000000 --- a/assets/minecraft/models/item/light_blue_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_terracotta.json b/assets/minecraft/models/item/light_blue_terracotta.json deleted file mode 100644 index 06294ea2..00000000 --- a/assets/minecraft/models/item/light_blue_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_blue_wool.json b/assets/minecraft/models/item/light_blue_wool.json deleted file mode 100644 index 4f7bd4de..00000000 --- a/assets/minecraft/models/item/light_blue_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_blue_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_banner.json b/assets/minecraft/models/item/light_gray_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/light_gray_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_bundle_open_back.json b/assets/minecraft/models/item/light_gray_bundle_open_back.json index cbeab629..91f04e7c 100644 --- a/assets/minecraft/models/item/light_gray_bundle_open_back.json +++ b/assets/minecraft/models/item/light_gray_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/light_gray_bundle_open_back" + "layer0": "minecraft:item/light_gray_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_bundle_open_front.json b/assets/minecraft/models/item/light_gray_bundle_open_front.json index bb274a9b..3887d1bb 100644 --- a/assets/minecraft/models/item/light_gray_bundle_open_front.json +++ b/assets/minecraft/models/item/light_gray_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/light_gray_bundle_open_front" + "layer0": "minecraft:item/light_gray_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_carpet.json b/assets/minecraft/models/item/light_gray_carpet.json deleted file mode 100644 index f603263e..00000000 --- a/assets/minecraft/models/item/light_gray_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_concrete.json b/assets/minecraft/models/item/light_gray_concrete.json deleted file mode 100644 index 9a4e67de..00000000 --- a/assets/minecraft/models/item/light_gray_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_concrete_powder.json b/assets/minecraft/models/item/light_gray_concrete_powder.json deleted file mode 100644 index 6726d569..00000000 --- a/assets/minecraft/models/item/light_gray_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_glazed_terracotta.json b/assets/minecraft/models/item/light_gray_glazed_terracotta.json deleted file mode 100644 index 46b9f176..00000000 --- a/assets/minecraft/models/item/light_gray_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_stained_glass.json b/assets/minecraft/models/item/light_gray_stained_glass.json deleted file mode 100644 index e05c7e8d..00000000 --- a/assets/minecraft/models/item/light_gray_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_terracotta.json b/assets/minecraft/models/item/light_gray_terracotta.json deleted file mode 100644 index a6cbc241..00000000 --- a/assets/minecraft/models/item/light_gray_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_gray_wool.json b/assets/minecraft/models/item/light_gray_wool.json deleted file mode 100644 index 0bdc80f4..00000000 --- a/assets/minecraft/models/item/light_gray_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_gray_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/light_weighted_pressure_plate.json b/assets/minecraft/models/item/light_weighted_pressure_plate.json deleted file mode 100644 index 0922c670..00000000 --- a/assets/minecraft/models/item/light_weighted_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/light_weighted_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lightning_rod.json b/assets/minecraft/models/item/lightning_rod.json deleted file mode 100644 index d701601a..00000000 --- a/assets/minecraft/models/item/lightning_rod.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lightning_rod" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_banner.json b/assets/minecraft/models/item/lime_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/lime_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_bundle_open_back.json b/assets/minecraft/models/item/lime_bundle_open_back.json index 5516ba15..c4aae642 100644 --- a/assets/minecraft/models/item/lime_bundle_open_back.json +++ b/assets/minecraft/models/item/lime_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/lime_bundle_open_back" + "layer0": "minecraft:item/lime_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_bundle_open_front.json b/assets/minecraft/models/item/lime_bundle_open_front.json index 2179105a..a7917184 100644 --- a/assets/minecraft/models/item/lime_bundle_open_front.json +++ b/assets/minecraft/models/item/lime_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/lime_bundle_open_front" + "layer0": "minecraft:item/lime_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_carpet.json b/assets/minecraft/models/item/lime_carpet.json deleted file mode 100644 index b6f18c0a..00000000 --- a/assets/minecraft/models/item/lime_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_concrete.json b/assets/minecraft/models/item/lime_concrete.json deleted file mode 100644 index 6becad9d..00000000 --- a/assets/minecraft/models/item/lime_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_concrete_powder.json b/assets/minecraft/models/item/lime_concrete_powder.json deleted file mode 100644 index a74380d0..00000000 --- a/assets/minecraft/models/item/lime_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_glazed_terracotta.json b/assets/minecraft/models/item/lime_glazed_terracotta.json deleted file mode 100644 index 14b5723d..00000000 --- a/assets/minecraft/models/item/lime_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_stained_glass.json b/assets/minecraft/models/item/lime_stained_glass.json deleted file mode 100644 index becc3296..00000000 --- a/assets/minecraft/models/item/lime_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_terracotta.json b/assets/minecraft/models/item/lime_terracotta.json deleted file mode 100644 index e6123030..00000000 --- a/assets/minecraft/models/item/lime_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lime_wool.json b/assets/minecraft/models/item/lime_wool.json deleted file mode 100644 index e6600fa8..00000000 --- a/assets/minecraft/models/item/lime_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lime_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lingering_potion.json b/assets/minecraft/models/item/lingering_potion.json index 35ce5d79..a786fc0a 100644 --- a/assets/minecraft/models/item/lingering_potion.json +++ b/assets/minecraft/models/item/lingering_potion.json @@ -1,7 +1,7 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/potion_overlay", - "layer1": "item/lingering_potion" - } -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/potion_overlay", + "layer1": "minecraft:item/lingering_potion" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/llama_spawn_egg.json b/assets/minecraft/models/item/llama_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/llama_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/lodestone.json b/assets/minecraft/models/item/lodestone.json deleted file mode 100644 index f926ec2e..00000000 --- a/assets/minecraft/models/item/lodestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/lodestone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/loom.json b/assets/minecraft/models/item/loom.json deleted file mode 100644 index 0fe6a7fa..00000000 --- a/assets/minecraft/models/item/loom.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/loom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_banner.json b/assets/minecraft/models/item/magenta_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/magenta_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_bundle_open_back.json b/assets/minecraft/models/item/magenta_bundle_open_back.json index 6d8ed84d..2cb31ce2 100644 --- a/assets/minecraft/models/item/magenta_bundle_open_back.json +++ b/assets/minecraft/models/item/magenta_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/magenta_bundle_open_back" + "layer0": "minecraft:item/magenta_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_bundle_open_front.json b/assets/minecraft/models/item/magenta_bundle_open_front.json index 89b5a622..925f1c1c 100644 --- a/assets/minecraft/models/item/magenta_bundle_open_front.json +++ b/assets/minecraft/models/item/magenta_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/magenta_bundle_open_front" + "layer0": "minecraft:item/magenta_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_carpet.json b/assets/minecraft/models/item/magenta_carpet.json deleted file mode 100644 index 386f8fcc..00000000 --- a/assets/minecraft/models/item/magenta_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_concrete.json b/assets/minecraft/models/item/magenta_concrete.json deleted file mode 100644 index 8dce5e8f..00000000 --- a/assets/minecraft/models/item/magenta_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_concrete_powder.json b/assets/minecraft/models/item/magenta_concrete_powder.json deleted file mode 100644 index e221911b..00000000 --- a/assets/minecraft/models/item/magenta_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_glazed_terracotta.json b/assets/minecraft/models/item/magenta_glazed_terracotta.json deleted file mode 100644 index 45b94ea3..00000000 --- a/assets/minecraft/models/item/magenta_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_stained_glass.json b/assets/minecraft/models/item/magenta_stained_glass.json deleted file mode 100644 index 62ff86a5..00000000 --- a/assets/minecraft/models/item/magenta_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_terracotta.json b/assets/minecraft/models/item/magenta_terracotta.json deleted file mode 100644 index 07d44199..00000000 --- a/assets/minecraft/models/item/magenta_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magenta_wool.json b/assets/minecraft/models/item/magenta_wool.json deleted file mode 100644 index e3ef178b..00000000 --- a/assets/minecraft/models/item/magenta_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magenta_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magma_block.json b/assets/minecraft/models/item/magma_block.json deleted file mode 100644 index ac1aa2f4..00000000 --- a/assets/minecraft/models/item/magma_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/magma_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/magma_cube_spawn_egg.json b/assets/minecraft/models/item/magma_cube_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/magma_cube_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_button.json b/assets/minecraft/models/item/mangrove_button.json deleted file mode 100644 index 4bab5228..00000000 --- a/assets/minecraft/models/item/mangrove_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_fence.json b/assets/minecraft/models/item/mangrove_fence.json deleted file mode 100644 index b0d4d8c4..00000000 --- a/assets/minecraft/models/item/mangrove_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_fence_gate.json b/assets/minecraft/models/item/mangrove_fence_gate.json deleted file mode 100644 index 7eddb339..00000000 --- a/assets/minecraft/models/item/mangrove_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_leaves.json b/assets/minecraft/models/item/mangrove_leaves.json deleted file mode 100644 index be1fca78..00000000 --- a/assets/minecraft/models/item/mangrove_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_log.json b/assets/minecraft/models/item/mangrove_log.json deleted file mode 100644 index 9dbddf08..00000000 --- a/assets/minecraft/models/item/mangrove_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_planks.json b/assets/minecraft/models/item/mangrove_planks.json deleted file mode 100644 index 4c4f23bc..00000000 --- a/assets/minecraft/models/item/mangrove_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_pressure_plate.json b/assets/minecraft/models/item/mangrove_pressure_plate.json deleted file mode 100644 index 90b728fe..00000000 --- a/assets/minecraft/models/item/mangrove_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_roots.json b/assets/minecraft/models/item/mangrove_roots.json deleted file mode 100644 index 39131b24..00000000 --- a/assets/minecraft/models/item/mangrove_roots.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_roots" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_slab.json b/assets/minecraft/models/item/mangrove_slab.json deleted file mode 100644 index 036a10f7..00000000 --- a/assets/minecraft/models/item/mangrove_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_stairs.json b/assets/minecraft/models/item/mangrove_stairs.json deleted file mode 100644 index 281b61b5..00000000 --- a/assets/minecraft/models/item/mangrove_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_trapdoor.json b/assets/minecraft/models/item/mangrove_trapdoor.json deleted file mode 100644 index dec13fde..00000000 --- a/assets/minecraft/models/item/mangrove_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mangrove_wood.json b/assets/minecraft/models/item/mangrove_wood.json deleted file mode 100644 index 99e25bc7..00000000 --- a/assets/minecraft/models/item/mangrove_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mangrove_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/melon.json b/assets/minecraft/models/item/melon.json deleted file mode 100644 index f0bcf44e..00000000 --- a/assets/minecraft/models/item/melon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/melon" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mooshroom_spawn_egg.json b/assets/minecraft/models/item/mooshroom_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/mooshroom_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/moss_block.json b/assets/minecraft/models/item/moss_block.json deleted file mode 100644 index 14bf2a81..00000000 --- a/assets/minecraft/models/item/moss_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/moss_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/moss_carpet.json b/assets/minecraft/models/item/moss_carpet.json deleted file mode 100644 index 86a4dfd8..00000000 --- a/assets/minecraft/models/item/moss_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/moss_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_cobblestone.json b/assets/minecraft/models/item/mossy_cobblestone.json deleted file mode 100644 index e865e8fc..00000000 --- a/assets/minecraft/models/item/mossy_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_cobblestone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_cobblestone_slab.json b/assets/minecraft/models/item/mossy_cobblestone_slab.json deleted file mode 100644 index 814e6a7a..00000000 --- a/assets/minecraft/models/item/mossy_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_cobblestone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_cobblestone_stairs.json b/assets/minecraft/models/item/mossy_cobblestone_stairs.json deleted file mode 100644 index bc2712d2..00000000 --- a/assets/minecraft/models/item/mossy_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_cobblestone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_cobblestone_wall.json b/assets/minecraft/models/item/mossy_cobblestone_wall.json deleted file mode 100644 index 8baaff2b..00000000 --- a/assets/minecraft/models/item/mossy_cobblestone_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_cobblestone_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_stone_brick_slab.json b/assets/minecraft/models/item/mossy_stone_brick_slab.json deleted file mode 100644 index 539b7424..00000000 --- a/assets/minecraft/models/item/mossy_stone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_stone_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_stone_brick_stairs.json b/assets/minecraft/models/item/mossy_stone_brick_stairs.json deleted file mode 100644 index 2366348b..00000000 --- a/assets/minecraft/models/item/mossy_stone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_stone_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_stone_brick_wall.json b/assets/minecraft/models/item/mossy_stone_brick_wall.json deleted file mode 100644 index 185b158a..00000000 --- a/assets/minecraft/models/item/mossy_stone_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_stone_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mossy_stone_bricks.json b/assets/minecraft/models/item/mossy_stone_bricks.json deleted file mode 100644 index a9fe750f..00000000 --- a/assets/minecraft/models/item/mossy_stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mossy_stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mud.json b/assets/minecraft/models/item/mud.json deleted file mode 100644 index bee0b1b0..00000000 --- a/assets/minecraft/models/item/mud.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mud" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mud_brick_slab.json b/assets/minecraft/models/item/mud_brick_slab.json deleted file mode 100644 index 06e29291..00000000 --- a/assets/minecraft/models/item/mud_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mud_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mud_brick_stairs.json b/assets/minecraft/models/item/mud_brick_stairs.json deleted file mode 100644 index f6d908dd..00000000 --- a/assets/minecraft/models/item/mud_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mud_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mud_brick_wall.json b/assets/minecraft/models/item/mud_brick_wall.json deleted file mode 100644 index 1679aa63..00000000 --- a/assets/minecraft/models/item/mud_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mud_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mud_bricks.json b/assets/minecraft/models/item/mud_bricks.json deleted file mode 100644 index 4ff42f1c..00000000 --- a/assets/minecraft/models/item/mud_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mud_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/muddy_mangrove_roots.json b/assets/minecraft/models/item/muddy_mangrove_roots.json deleted file mode 100644 index a23b27d1..00000000 --- a/assets/minecraft/models/item/muddy_mangrove_roots.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/muddy_mangrove_roots" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mule_spawn_egg.json b/assets/minecraft/models/item/mule_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/mule_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mushroom_stem.json b/assets/minecraft/models/item/mushroom_stem.json deleted file mode 100644 index b791415f..00000000 --- a/assets/minecraft/models/item/mushroom_stem.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mushroom_stem_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/mycelium.json b/assets/minecraft/models/item/mycelium.json deleted file mode 100644 index c97f2ec0..00000000 --- a/assets/minecraft/models/item/mycelium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/mycelium" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_brick_fence.json b/assets/minecraft/models/item/nether_brick_fence.json deleted file mode 100644 index 5a72d31a..00000000 --- a/assets/minecraft/models/item/nether_brick_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_brick_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_brick_slab.json b/assets/minecraft/models/item/nether_brick_slab.json deleted file mode 100644 index dc7b2097..00000000 --- a/assets/minecraft/models/item/nether_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_brick_stairs.json b/assets/minecraft/models/item/nether_brick_stairs.json deleted file mode 100644 index c0669dfe..00000000 --- a/assets/minecraft/models/item/nether_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_brick_wall.json b/assets/minecraft/models/item/nether_brick_wall.json deleted file mode 100644 index e01270d4..00000000 --- a/assets/minecraft/models/item/nether_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_bricks.json b/assets/minecraft/models/item/nether_bricks.json deleted file mode 100644 index ada571f6..00000000 --- a/assets/minecraft/models/item/nether_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_gold_ore.json b/assets/minecraft/models/item/nether_gold_ore.json deleted file mode 100644 index ca989c79..00000000 --- a/assets/minecraft/models/item/nether_gold_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_gold_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_quartz_ore.json b/assets/minecraft/models/item/nether_quartz_ore.json deleted file mode 100644 index 4c6d1bf7..00000000 --- a/assets/minecraft/models/item/nether_quartz_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_quartz_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/nether_wart_block.json b/assets/minecraft/models/item/nether_wart_block.json deleted file mode 100644 index a66f9a27..00000000 --- a/assets/minecraft/models/item/nether_wart_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/nether_wart_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/netherite_block.json b/assets/minecraft/models/item/netherite_block.json deleted file mode 100644 index 828da634..00000000 --- a/assets/minecraft/models/item/netherite_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/netherite_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/netherite_boots.json b/assets/minecraft/models/item/netherite_boots.json index 6aa46fb3..c7dae902 100644 --- a/assets/minecraft/models/item/netherite_boots.json +++ b/assets/minecraft/models/item/netherite_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/netherite_boots_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/netherite_boots_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/netherite_boots_netherite_darker_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/netherite_boots_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/netherite_boots_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/netherite_boots_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/netherite_boots_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/netherite_boots_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/netherite_boots_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/netherite_boots_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/netherite_boots" } diff --git a/assets/minecraft/models/item/netherite_boots_netherite_darker_trim.json b/assets/minecraft/models/item/netherite_boots_netherite_trim.json similarity index 100% rename from assets/minecraft/models/item/netherite_boots_netherite_darker_trim.json rename to assets/minecraft/models/item/netherite_boots_netherite_trim.json diff --git a/assets/minecraft/models/item/netherite_boots_resin_trim.json b/assets/minecraft/models/item/netherite_boots_resin_trim.json new file mode 100644 index 00000000..a6395da1 --- /dev/null +++ b/assets/minecraft/models/item/netherite_boots_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/netherite_boots", + "layer1": "minecraft:trims/items/boots_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/netherite_chestplate.json b/assets/minecraft/models/item/netherite_chestplate.json index 64e84e2a..61d2982a 100644 --- a/assets/minecraft/models/item/netherite_chestplate.json +++ b/assets/minecraft/models/item/netherite_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/netherite_chestplate_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/netherite_chestplate_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/netherite_chestplate_netherite_darker_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/netherite_chestplate_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/netherite_chestplate_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/netherite_chestplate_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/netherite_chestplate_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/netherite_chestplate_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/netherite_chestplate_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/netherite_chestplate_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/netherite_chestplate" } diff --git a/assets/minecraft/models/item/netherite_chestplate_netherite_darker_trim.json b/assets/minecraft/models/item/netherite_chestplate_netherite_trim.json similarity index 100% rename from assets/minecraft/models/item/netherite_chestplate_netherite_darker_trim.json rename to assets/minecraft/models/item/netherite_chestplate_netherite_trim.json diff --git a/assets/minecraft/models/item/netherite_chestplate_resin_trim.json b/assets/minecraft/models/item/netherite_chestplate_resin_trim.json new file mode 100644 index 00000000..b352e3be --- /dev/null +++ b/assets/minecraft/models/item/netherite_chestplate_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/netherite_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/netherite_helmet.json b/assets/minecraft/models/item/netherite_helmet.json index a39c9484..4df20a59 100644 --- a/assets/minecraft/models/item/netherite_helmet.json +++ b/assets/minecraft/models/item/netherite_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/netherite_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/netherite_helmet_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/netherite_helmet_netherite_darker_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/netherite_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/netherite_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/netherite_helmet_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/netherite_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/netherite_helmet_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/netherite_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/netherite_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/netherite_helmet" } diff --git a/assets/minecraft/models/item/netherite_helmet_netherite_darker_trim.json b/assets/minecraft/models/item/netherite_helmet_netherite_trim.json similarity index 100% rename from assets/minecraft/models/item/netherite_helmet_netherite_darker_trim.json rename to assets/minecraft/models/item/netherite_helmet_netherite_trim.json diff --git a/assets/minecraft/models/item/netherite_helmet_resin_trim.json b/assets/minecraft/models/item/netherite_helmet_resin_trim.json new file mode 100644 index 00000000..07e5f3e5 --- /dev/null +++ b/assets/minecraft/models/item/netherite_helmet_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/netherite_helmet", + "layer1": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/netherite_leggings.json b/assets/minecraft/models/item/netherite_leggings.json index eb732807..e3e889cc 100644 --- a/assets/minecraft/models/item/netherite_leggings.json +++ b/assets/minecraft/models/item/netherite_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/netherite_leggings_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/netherite_leggings_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/netherite_leggings_netherite_darker_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/netherite_leggings_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/netherite_leggings_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/netherite_leggings_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/netherite_leggings_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/netherite_leggings_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/netherite_leggings_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/netherite_leggings_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/netherite_leggings" } diff --git a/assets/minecraft/models/item/netherite_leggings_netherite_darker_trim.json b/assets/minecraft/models/item/netherite_leggings_netherite_trim.json similarity index 100% rename from assets/minecraft/models/item/netherite_leggings_netherite_darker_trim.json rename to assets/minecraft/models/item/netherite_leggings_netherite_trim.json diff --git a/assets/minecraft/models/item/netherite_leggings_resin_trim.json b/assets/minecraft/models/item/netherite_leggings_resin_trim.json new file mode 100644 index 00000000..46652a0d --- /dev/null +++ b/assets/minecraft/models/item/netherite_leggings_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/netherite_leggings", + "layer1": "minecraft:trims/items/leggings_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/netherrack.json b/assets/minecraft/models/item/netherrack.json deleted file mode 100644 index 39d75ee8..00000000 --- a/assets/minecraft/models/item/netherrack.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/netherrack" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/note_block.json b/assets/minecraft/models/item/note_block.json deleted file mode 100644 index dd873344..00000000 --- a/assets/minecraft/models/item/note_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/note_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_button.json b/assets/minecraft/models/item/oak_button.json deleted file mode 100644 index 7e99608e..00000000 --- a/assets/minecraft/models/item/oak_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_fence.json b/assets/minecraft/models/item/oak_fence.json deleted file mode 100644 index 039fd914..00000000 --- a/assets/minecraft/models/item/oak_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_fence_gate.json b/assets/minecraft/models/item/oak_fence_gate.json deleted file mode 100644 index 04dee087..00000000 --- a/assets/minecraft/models/item/oak_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_leaves.json b/assets/minecraft/models/item/oak_leaves.json deleted file mode 100644 index a54fc8a7..00000000 --- a/assets/minecraft/models/item/oak_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_log.json b/assets/minecraft/models/item/oak_log.json deleted file mode 100644 index b450f38f..00000000 --- a/assets/minecraft/models/item/oak_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_planks.json b/assets/minecraft/models/item/oak_planks.json deleted file mode 100644 index a0351753..00000000 --- a/assets/minecraft/models/item/oak_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_pressure_plate.json b/assets/minecraft/models/item/oak_pressure_plate.json deleted file mode 100644 index ec3f4456..00000000 --- a/assets/minecraft/models/item/oak_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_slab.json b/assets/minecraft/models/item/oak_slab.json deleted file mode 100644 index 263d7d00..00000000 --- a/assets/minecraft/models/item/oak_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_stairs.json b/assets/minecraft/models/item/oak_stairs.json deleted file mode 100644 index 282b4310..00000000 --- a/assets/minecraft/models/item/oak_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_trapdoor.json b/assets/minecraft/models/item/oak_trapdoor.json deleted file mode 100644 index a041a5b4..00000000 --- a/assets/minecraft/models/item/oak_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oak_wood.json b/assets/minecraft/models/item/oak_wood.json deleted file mode 100644 index a51270ef..00000000 --- a/assets/minecraft/models/item/oak_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oak_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/observer.json b/assets/minecraft/models/item/observer.json deleted file mode 100644 index c1e1ddfe..00000000 --- a/assets/minecraft/models/item/observer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/observer" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/obsidian.json b/assets/minecraft/models/item/obsidian.json deleted file mode 100644 index 0c124ed6..00000000 --- a/assets/minecraft/models/item/obsidian.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/obsidian" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ocelot_spawn_egg.json b/assets/minecraft/models/item/ocelot_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/ocelot_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ochre_froglight.json b/assets/minecraft/models/item/ochre_froglight.json deleted file mode 100644 index d5bf2ba4..00000000 --- a/assets/minecraft/models/item/ochre_froglight.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/ochre_froglight" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/open_eyeblossom.json b/assets/minecraft/models/item/open_eyeblossom.json new file mode 100644 index 00000000..ac735ccd --- /dev/null +++ b/assets/minecraft/models/item/open_eyeblossom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:block/open_eyeblossom", + "layer1": "minecraft:block/open_eyeblossom_emissive" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_banner.json b/assets/minecraft/models/item/orange_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/orange_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_bundle_open_back.json b/assets/minecraft/models/item/orange_bundle_open_back.json index f9980720..b484ed1f 100644 --- a/assets/minecraft/models/item/orange_bundle_open_back.json +++ b/assets/minecraft/models/item/orange_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/orange_bundle_open_back" + "layer0": "minecraft:item/orange_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_bundle_open_front.json b/assets/minecraft/models/item/orange_bundle_open_front.json index 4387fded..7f55075b 100644 --- a/assets/minecraft/models/item/orange_bundle_open_front.json +++ b/assets/minecraft/models/item/orange_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/orange_bundle_open_front" + "layer0": "minecraft:item/orange_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_carpet.json b/assets/minecraft/models/item/orange_carpet.json deleted file mode 100644 index f1421e23..00000000 --- a/assets/minecraft/models/item/orange_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_concrete.json b/assets/minecraft/models/item/orange_concrete.json deleted file mode 100644 index 6238369f..00000000 --- a/assets/minecraft/models/item/orange_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_concrete_powder.json b/assets/minecraft/models/item/orange_concrete_powder.json deleted file mode 100644 index 3c854fe1..00000000 --- a/assets/minecraft/models/item/orange_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_glazed_terracotta.json b/assets/minecraft/models/item/orange_glazed_terracotta.json deleted file mode 100644 index 9a67ff62..00000000 --- a/assets/minecraft/models/item/orange_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_stained_glass.json b/assets/minecraft/models/item/orange_stained_glass.json deleted file mode 100644 index b00fed28..00000000 --- a/assets/minecraft/models/item/orange_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_terracotta.json b/assets/minecraft/models/item/orange_terracotta.json deleted file mode 100644 index 6d399783..00000000 --- a/assets/minecraft/models/item/orange_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/orange_wool.json b/assets/minecraft/models/item/orange_wool.json deleted file mode 100644 index e7c54f33..00000000 --- a/assets/minecraft/models/item/orange_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/orange_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_chiseled_copper.json b/assets/minecraft/models/item/oxidized_chiseled_copper.json deleted file mode 100644 index 72020427..00000000 --- a/assets/minecraft/models/item/oxidized_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_copper.json b/assets/minecraft/models/item/oxidized_copper.json deleted file mode 100644 index 63a0dabe..00000000 --- a/assets/minecraft/models/item/oxidized_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_copper_bulb.json b/assets/minecraft/models/item/oxidized_copper_bulb.json deleted file mode 100644 index 1624fe6e..00000000 --- a/assets/minecraft/models/item/oxidized_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_copper_grate.json b/assets/minecraft/models/item/oxidized_copper_grate.json deleted file mode 100644 index e2521c38..00000000 --- a/assets/minecraft/models/item/oxidized_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_copper_trapdoor.json b/assets/minecraft/models/item/oxidized_copper_trapdoor.json deleted file mode 100644 index 3685e9b2..00000000 --- a/assets/minecraft/models/item/oxidized_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_copper_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_cut_copper.json b/assets/minecraft/models/item/oxidized_cut_copper.json deleted file mode 100644 index 36dfa030..00000000 --- a/assets/minecraft/models/item/oxidized_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_cut_copper_slab.json b/assets/minecraft/models/item/oxidized_cut_copper_slab.json deleted file mode 100644 index a3d02242..00000000 --- a/assets/minecraft/models/item/oxidized_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/oxidized_cut_copper_stairs.json b/assets/minecraft/models/item/oxidized_cut_copper_stairs.json deleted file mode 100644 index fd8af1aa..00000000 --- a/assets/minecraft/models/item/oxidized_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/packed_ice.json b/assets/minecraft/models/item/packed_ice.json deleted file mode 100644 index bada5d8e..00000000 --- a/assets/minecraft/models/item/packed_ice.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/packed_ice" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/packed_mud.json b/assets/minecraft/models/item/packed_mud.json deleted file mode 100644 index 8ac65758..00000000 --- a/assets/minecraft/models/item/packed_mud.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/packed_mud" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_moss_block.json b/assets/minecraft/models/item/pale_moss_block.json deleted file mode 100644 index 89a69ea6..00000000 --- a/assets/minecraft/models/item/pale_moss_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_moss_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_moss_carpet.json b/assets/minecraft/models/item/pale_moss_carpet.json deleted file mode 100644 index 26f94ad4..00000000 --- a/assets/minecraft/models/item/pale_moss_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_moss_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_button.json b/assets/minecraft/models/item/pale_oak_button.json deleted file mode 100644 index cdad389a..00000000 --- a/assets/minecraft/models/item/pale_oak_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_fence.json b/assets/minecraft/models/item/pale_oak_fence.json deleted file mode 100644 index b5b71354..00000000 --- a/assets/minecraft/models/item/pale_oak_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_fence_gate.json b/assets/minecraft/models/item/pale_oak_fence_gate.json deleted file mode 100644 index 1c5a842a..00000000 --- a/assets/minecraft/models/item/pale_oak_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_leaves.json b/assets/minecraft/models/item/pale_oak_leaves.json deleted file mode 100644 index 5b7e1362..00000000 --- a/assets/minecraft/models/item/pale_oak_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_log.json b/assets/minecraft/models/item/pale_oak_log.json deleted file mode 100644 index 0eb844ba..00000000 --- a/assets/minecraft/models/item/pale_oak_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_planks.json b/assets/minecraft/models/item/pale_oak_planks.json deleted file mode 100644 index d797221c..00000000 --- a/assets/minecraft/models/item/pale_oak_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_pressure_plate.json b/assets/minecraft/models/item/pale_oak_pressure_plate.json deleted file mode 100644 index 4cd5b4f2..00000000 --- a/assets/minecraft/models/item/pale_oak_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_slab.json b/assets/minecraft/models/item/pale_oak_slab.json deleted file mode 100644 index bcd617ec..00000000 --- a/assets/minecraft/models/item/pale_oak_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_stairs.json b/assets/minecraft/models/item/pale_oak_stairs.json deleted file mode 100644 index 6b682772..00000000 --- a/assets/minecraft/models/item/pale_oak_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_trapdoor.json b/assets/minecraft/models/item/pale_oak_trapdoor.json deleted file mode 100644 index 4da9662e..00000000 --- a/assets/minecraft/models/item/pale_oak_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pale_oak_wood.json b/assets/minecraft/models/item/pale_oak_wood.json deleted file mode 100644 index 60be9f58..00000000 --- a/assets/minecraft/models/item/pale_oak_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pale_oak_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/panda_spawn_egg.json b/assets/minecraft/models/item/panda_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/panda_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/parrot_spawn_egg.json b/assets/minecraft/models/item/parrot_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/parrot_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pearlescent_froglight.json b/assets/minecraft/models/item/pearlescent_froglight.json deleted file mode 100644 index 3a9d87f4..00000000 --- a/assets/minecraft/models/item/pearlescent_froglight.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pearlescent_froglight" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/petrified_oak_slab.json b/assets/minecraft/models/item/petrified_oak_slab.json deleted file mode 100644 index 36ecfd7c..00000000 --- a/assets/minecraft/models/item/petrified_oak_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/petrified_oak_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/phantom_spawn_egg.json b/assets/minecraft/models/item/phantom_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/phantom_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pig_spawn_egg.json b/assets/minecraft/models/item/pig_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/pig_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/piglin_brute_spawn_egg.json b/assets/minecraft/models/item/piglin_brute_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/piglin_brute_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/piglin_head.json b/assets/minecraft/models/item/piglin_head.json deleted file mode 100644 index 364b6e65..00000000 --- a/assets/minecraft/models/item/piglin_head.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_skull" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/piglin_spawn_egg.json b/assets/minecraft/models/item/piglin_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/piglin_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pillager_spawn_egg.json b/assets/minecraft/models/item/pillager_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/pillager_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_banner.json b/assets/minecraft/models/item/pink_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/pink_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_bundle_open_back.json b/assets/minecraft/models/item/pink_bundle_open_back.json index c30768bb..a99ca47f 100644 --- a/assets/minecraft/models/item/pink_bundle_open_back.json +++ b/assets/minecraft/models/item/pink_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/pink_bundle_open_back" + "layer0": "minecraft:item/pink_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_bundle_open_front.json b/assets/minecraft/models/item/pink_bundle_open_front.json index 26d8f26d..4f7b5fb4 100644 --- a/assets/minecraft/models/item/pink_bundle_open_front.json +++ b/assets/minecraft/models/item/pink_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/pink_bundle_open_front" + "layer0": "minecraft:item/pink_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_carpet.json b/assets/minecraft/models/item/pink_carpet.json deleted file mode 100644 index b2709108..00000000 --- a/assets/minecraft/models/item/pink_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_concrete.json b/assets/minecraft/models/item/pink_concrete.json deleted file mode 100644 index 770e1feb..00000000 --- a/assets/minecraft/models/item/pink_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_concrete_powder.json b/assets/minecraft/models/item/pink_concrete_powder.json deleted file mode 100644 index 29803f66..00000000 --- a/assets/minecraft/models/item/pink_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_glazed_terracotta.json b/assets/minecraft/models/item/pink_glazed_terracotta.json deleted file mode 100644 index c8ea2b25..00000000 --- a/assets/minecraft/models/item/pink_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_stained_glass.json b/assets/minecraft/models/item/pink_stained_glass.json deleted file mode 100644 index b0bc8968..00000000 --- a/assets/minecraft/models/item/pink_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_terracotta.json b/assets/minecraft/models/item/pink_terracotta.json deleted file mode 100644 index 2e558749..00000000 --- a/assets/minecraft/models/item/pink_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pink_wool.json b/assets/minecraft/models/item/pink_wool.json deleted file mode 100644 index 9f1e510f..00000000 --- a/assets/minecraft/models/item/pink_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pink_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/piston.json b/assets/minecraft/models/item/piston.json deleted file mode 100644 index 669d1c40..00000000 --- a/assets/minecraft/models/item/piston.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/piston_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/player_head.json b/assets/minecraft/models/item/player_head.json deleted file mode 100644 index 364b6e65..00000000 --- a/assets/minecraft/models/item/player_head.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_skull" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/podzol.json b/assets/minecraft/models/item/podzol.json deleted file mode 100644 index ec047498..00000000 --- a/assets/minecraft/models/item/podzol.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/podzol" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polar_bear_spawn_egg.json b/assets/minecraft/models/item/polar_bear_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/polar_bear_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_andesite.json b/assets/minecraft/models/item/polished_andesite.json deleted file mode 100644 index 4968aa47..00000000 --- a/assets/minecraft/models/item/polished_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_andesite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_andesite_slab.json b/assets/minecraft/models/item/polished_andesite_slab.json deleted file mode 100644 index dbaf20ca..00000000 --- a/assets/minecraft/models/item/polished_andesite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_andesite_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_andesite_stairs.json b/assets/minecraft/models/item/polished_andesite_stairs.json deleted file mode 100644 index 0695848c..00000000 --- a/assets/minecraft/models/item/polished_andesite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_andesite_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_basalt.json b/assets/minecraft/models/item/polished_basalt.json deleted file mode 100644 index 00d0a8ab..00000000 --- a/assets/minecraft/models/item/polished_basalt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_basalt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone.json b/assets/minecraft/models/item/polished_blackstone.json deleted file mode 100644 index b60255af..00000000 --- a/assets/minecraft/models/item/polished_blackstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_brick_slab.json b/assets/minecraft/models/item/polished_blackstone_brick_slab.json deleted file mode 100644 index 35a5786c..00000000 --- a/assets/minecraft/models/item/polished_blackstone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_brick_stairs.json b/assets/minecraft/models/item/polished_blackstone_brick_stairs.json deleted file mode 100644 index bfdf49c1..00000000 --- a/assets/minecraft/models/item/polished_blackstone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_brick_wall.json b/assets/minecraft/models/item/polished_blackstone_brick_wall.json deleted file mode 100644 index 58262eed..00000000 --- a/assets/minecraft/models/item/polished_blackstone_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_bricks.json b/assets/minecraft/models/item/polished_blackstone_bricks.json deleted file mode 100644 index 2c7c6530..00000000 --- a/assets/minecraft/models/item/polished_blackstone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_button.json b/assets/minecraft/models/item/polished_blackstone_button.json deleted file mode 100644 index e815336b..00000000 --- a/assets/minecraft/models/item/polished_blackstone_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_pressure_plate.json b/assets/minecraft/models/item/polished_blackstone_pressure_plate.json deleted file mode 100644 index 766e8c66..00000000 --- a/assets/minecraft/models/item/polished_blackstone_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_slab.json b/assets/minecraft/models/item/polished_blackstone_slab.json deleted file mode 100644 index ab598bb6..00000000 --- a/assets/minecraft/models/item/polished_blackstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_stairs.json b/assets/minecraft/models/item/polished_blackstone_stairs.json deleted file mode 100644 index a21c5771..00000000 --- a/assets/minecraft/models/item/polished_blackstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_blackstone_wall.json b/assets/minecraft/models/item/polished_blackstone_wall.json deleted file mode 100644 index 23e2c0d4..00000000 --- a/assets/minecraft/models/item/polished_blackstone_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_blackstone_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_deepslate.json b/assets/minecraft/models/item/polished_deepslate.json deleted file mode 100644 index a2e3fde1..00000000 --- a/assets/minecraft/models/item/polished_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_deepslate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_deepslate_slab.json b/assets/minecraft/models/item/polished_deepslate_slab.json deleted file mode 100644 index 0bb03241..00000000 --- a/assets/minecraft/models/item/polished_deepslate_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_deepslate_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_deepslate_stairs.json b/assets/minecraft/models/item/polished_deepslate_stairs.json deleted file mode 100644 index 06f41f9f..00000000 --- a/assets/minecraft/models/item/polished_deepslate_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_deepslate_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_deepslate_wall.json b/assets/minecraft/models/item/polished_deepslate_wall.json deleted file mode 100644 index 1d05cf88..00000000 --- a/assets/minecraft/models/item/polished_deepslate_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_deepslate_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_diorite.json b/assets/minecraft/models/item/polished_diorite.json deleted file mode 100644 index aed47750..00000000 --- a/assets/minecraft/models/item/polished_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_diorite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_diorite_slab.json b/assets/minecraft/models/item/polished_diorite_slab.json deleted file mode 100644 index 2fd79e18..00000000 --- a/assets/minecraft/models/item/polished_diorite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_diorite_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_diorite_stairs.json b/assets/minecraft/models/item/polished_diorite_stairs.json deleted file mode 100644 index 0ec5d5a6..00000000 --- a/assets/minecraft/models/item/polished_diorite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_diorite_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_granite.json b/assets/minecraft/models/item/polished_granite.json deleted file mode 100644 index 11ee51c4..00000000 --- a/assets/minecraft/models/item/polished_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_granite" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_granite_slab.json b/assets/minecraft/models/item/polished_granite_slab.json deleted file mode 100644 index add758b6..00000000 --- a/assets/minecraft/models/item/polished_granite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_granite_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_granite_stairs.json b/assets/minecraft/models/item/polished_granite_stairs.json deleted file mode 100644 index 083d71c8..00000000 --- a/assets/minecraft/models/item/polished_granite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_granite_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_tuff.json b/assets/minecraft/models/item/polished_tuff.json deleted file mode 100644 index a34c7b0a..00000000 --- a/assets/minecraft/models/item/polished_tuff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_tuff" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_tuff_slab.json b/assets/minecraft/models/item/polished_tuff_slab.json deleted file mode 100644 index 948607bf..00000000 --- a/assets/minecraft/models/item/polished_tuff_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_tuff_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_tuff_stairs.json b/assets/minecraft/models/item/polished_tuff_stairs.json deleted file mode 100644 index 98b91c00..00000000 --- a/assets/minecraft/models/item/polished_tuff_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_tuff_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/polished_tuff_wall.json b/assets/minecraft/models/item/polished_tuff_wall.json deleted file mode 100644 index c0a8bed6..00000000 --- a/assets/minecraft/models/item/polished_tuff_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/polished_tuff_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/potion.json b/assets/minecraft/models/item/potion.json index 73c2a578..b4ae02ba 100644 --- a/assets/minecraft/models/item/potion.json +++ b/assets/minecraft/models/item/potion.json @@ -1,7 +1,7 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/potion_overlay", - "layer1": "item/potion" - } -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/potion_overlay", + "layer1": "minecraft:item/potion" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine.json b/assets/minecraft/models/item/prismarine.json deleted file mode 100644 index 052a4159..00000000 --- a/assets/minecraft/models/item/prismarine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine_brick_slab.json b/assets/minecraft/models/item/prismarine_brick_slab.json deleted file mode 100644 index 905e4429..00000000 --- a/assets/minecraft/models/item/prismarine_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine_brick_stairs.json b/assets/minecraft/models/item/prismarine_brick_stairs.json deleted file mode 100644 index e5f6c0f4..00000000 --- a/assets/minecraft/models/item/prismarine_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine_bricks.json b/assets/minecraft/models/item/prismarine_bricks.json deleted file mode 100644 index dfe1634f..00000000 --- a/assets/minecraft/models/item/prismarine_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine_slab.json b/assets/minecraft/models/item/prismarine_slab.json deleted file mode 100644 index 9894ef18..00000000 --- a/assets/minecraft/models/item/prismarine_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine_stairs.json b/assets/minecraft/models/item/prismarine_stairs.json deleted file mode 100644 index 356abf59..00000000 --- a/assets/minecraft/models/item/prismarine_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/prismarine_wall.json b/assets/minecraft/models/item/prismarine_wall.json deleted file mode 100644 index 16dec992..00000000 --- a/assets/minecraft/models/item/prismarine_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/prismarine_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pufferfish_spawn_egg.json b/assets/minecraft/models/item/pufferfish_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/pufferfish_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/pumpkin.json b/assets/minecraft/models/item/pumpkin.json deleted file mode 100644 index f725b476..00000000 --- a/assets/minecraft/models/item/pumpkin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/pumpkin" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_banner.json b/assets/minecraft/models/item/purple_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/purple_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_bundle_open_back.json b/assets/minecraft/models/item/purple_bundle_open_back.json index 17cf859e..51c7f27f 100644 --- a/assets/minecraft/models/item/purple_bundle_open_back.json +++ b/assets/minecraft/models/item/purple_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/purple_bundle_open_back" + "layer0": "minecraft:item/purple_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_bundle_open_front.json b/assets/minecraft/models/item/purple_bundle_open_front.json index 6ac61497..55a80b56 100644 --- a/assets/minecraft/models/item/purple_bundle_open_front.json +++ b/assets/minecraft/models/item/purple_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/purple_bundle_open_front" + "layer0": "minecraft:item/purple_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_carpet.json b/assets/minecraft/models/item/purple_carpet.json deleted file mode 100644 index 94ffd9f4..00000000 --- a/assets/minecraft/models/item/purple_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_concrete.json b/assets/minecraft/models/item/purple_concrete.json deleted file mode 100644 index 437f58fc..00000000 --- a/assets/minecraft/models/item/purple_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_concrete_powder.json b/assets/minecraft/models/item/purple_concrete_powder.json deleted file mode 100644 index 77dba432..00000000 --- a/assets/minecraft/models/item/purple_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_glazed_terracotta.json b/assets/minecraft/models/item/purple_glazed_terracotta.json deleted file mode 100644 index be42ab1a..00000000 --- a/assets/minecraft/models/item/purple_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_stained_glass.json b/assets/minecraft/models/item/purple_stained_glass.json deleted file mode 100644 index cf2ee673..00000000 --- a/assets/minecraft/models/item/purple_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_terracotta.json b/assets/minecraft/models/item/purple_terracotta.json deleted file mode 100644 index a69670d8..00000000 --- a/assets/minecraft/models/item/purple_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purple_wool.json b/assets/minecraft/models/item/purple_wool.json deleted file mode 100644 index 71160d26..00000000 --- a/assets/minecraft/models/item/purple_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purple_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purpur_block.json b/assets/minecraft/models/item/purpur_block.json deleted file mode 100644 index 3e7dfa5a..00000000 --- a/assets/minecraft/models/item/purpur_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purpur_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purpur_pillar.json b/assets/minecraft/models/item/purpur_pillar.json deleted file mode 100644 index 2cb1ab30..00000000 --- a/assets/minecraft/models/item/purpur_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purpur_pillar" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purpur_slab.json b/assets/minecraft/models/item/purpur_slab.json deleted file mode 100644 index 385a03be..00000000 --- a/assets/minecraft/models/item/purpur_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purpur_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/purpur_stairs.json b/assets/minecraft/models/item/purpur_stairs.json deleted file mode 100644 index 4f881026..00000000 --- a/assets/minecraft/models/item/purpur_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/purpur_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/quartz_block.json b/assets/minecraft/models/item/quartz_block.json deleted file mode 100644 index f0966126..00000000 --- a/assets/minecraft/models/item/quartz_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/quartz_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/quartz_bricks.json b/assets/minecraft/models/item/quartz_bricks.json deleted file mode 100644 index d2d45cf7..00000000 --- a/assets/minecraft/models/item/quartz_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/quartz_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/quartz_pillar.json b/assets/minecraft/models/item/quartz_pillar.json deleted file mode 100644 index 52905d11..00000000 --- a/assets/minecraft/models/item/quartz_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/quartz_pillar" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/quartz_slab.json b/assets/minecraft/models/item/quartz_slab.json deleted file mode 100644 index 9cd0ebe7..00000000 --- a/assets/minecraft/models/item/quartz_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/quartz_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/quartz_stairs.json b/assets/minecraft/models/item/quartz_stairs.json deleted file mode 100644 index 4126d6e4..00000000 --- a/assets/minecraft/models/item/quartz_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/quartz_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/rabbit_spawn_egg.json b/assets/minecraft/models/item/rabbit_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/rabbit_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/ravager_spawn_egg.json b/assets/minecraft/models/item/ravager_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/ravager_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/raw_copper_block.json b/assets/minecraft/models/item/raw_copper_block.json deleted file mode 100644 index d24df466..00000000 --- a/assets/minecraft/models/item/raw_copper_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/raw_copper_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/raw_gold_block.json b/assets/minecraft/models/item/raw_gold_block.json deleted file mode 100644 index 915e94b9..00000000 --- a/assets/minecraft/models/item/raw_gold_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/raw_gold_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/raw_iron_block.json b/assets/minecraft/models/item/raw_iron_block.json deleted file mode 100644 index b6e6e032..00000000 --- a/assets/minecraft/models/item/raw_iron_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/raw_iron_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/recovery_compass.json b/assets/minecraft/models/item/recovery_compass.json deleted file mode 100644 index 91fb13b8..00000000 --- a/assets/minecraft/models/item/recovery_compass.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "item/recovery_compass_16" - }, - "overrides": [ - { "predicate": { "angle": 0.000000 }, "model": "item/recovery_compass" }, - { "predicate": { "angle": 0.015625 }, "model": "item/recovery_compass_17" }, - { "predicate": { "angle": 0.046875 }, "model": "item/recovery_compass_18" }, - { "predicate": { "angle": 0.078125 }, "model": "item/recovery_compass_19" }, - { "predicate": { "angle": 0.109375 }, "model": "item/recovery_compass_20" }, - { "predicate": { "angle": 0.140625 }, "model": "item/recovery_compass_21" }, - { "predicate": { "angle": 0.171875 }, "model": "item/recovery_compass_22" }, - { "predicate": { "angle": 0.203125 }, "model": "item/recovery_compass_23" }, - { "predicate": { "angle": 0.234375 }, "model": "item/recovery_compass_24" }, - { "predicate": { "angle": 0.265625 }, "model": "item/recovery_compass_25" }, - { "predicate": { "angle": 0.296875 }, "model": "item/recovery_compass_26" }, - { "predicate": { "angle": 0.328125 }, "model": "item/recovery_compass_27" }, - { "predicate": { "angle": 0.359375 }, "model": "item/recovery_compass_28" }, - { "predicate": { "angle": 0.390625 }, "model": "item/recovery_compass_29" }, - { "predicate": { "angle": 0.421875 }, "model": "item/recovery_compass_30" }, - { "predicate": { "angle": 0.453125 }, "model": "item/recovery_compass_31" }, - { "predicate": { "angle": 0.484375 }, "model": "item/recovery_compass_00" }, - { "predicate": { "angle": 0.515625 }, "model": "item/recovery_compass_01" }, - { "predicate": { "angle": 0.546875 }, "model": "item/recovery_compass_02" }, - { "predicate": { "angle": 0.578125 }, "model": "item/recovery_compass_03" }, - { "predicate": { "angle": 0.609375 }, "model": "item/recovery_compass_04" }, - { "predicate": { "angle": 0.640625 }, "model": "item/recovery_compass_05" }, - { "predicate": { "angle": 0.671875 }, "model": "item/recovery_compass_06" }, - { "predicate": { "angle": 0.703125 }, "model": "item/recovery_compass_07" }, - { "predicate": { "angle": 0.734375 }, "model": "item/recovery_compass_08" }, - { "predicate": { "angle": 0.765625 }, "model": "item/recovery_compass_09" }, - { "predicate": { "angle": 0.796875 }, "model": "item/recovery_compass_10" }, - { "predicate": { "angle": 0.828125 }, "model": "item/recovery_compass_11" }, - { "predicate": { "angle": 0.859375 }, "model": "item/recovery_compass_12" }, - { "predicate": { "angle": 0.890625 }, "model": "item/recovery_compass_13" }, - { "predicate": { "angle": 0.921875 }, "model": "item/recovery_compass_14" }, - { "predicate": { "angle": 0.953125 }, "model": "item/recovery_compass_15" }, - { "predicate": { "angle": 0.984375 }, "model": "item/recovery_compass" } - ] -} diff --git a/assets/minecraft/models/item/recovery_compass_16.json b/assets/minecraft/models/item/recovery_compass_16.json new file mode 100644 index 00000000..ff17fc8e --- /dev/null +++ b/assets/minecraft/models/item/recovery_compass_16.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/recovery_compass_16" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_banner.json b/assets/minecraft/models/item/red_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/red_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_bundle_open_back.json b/assets/minecraft/models/item/red_bundle_open_back.json index 1ff1d08e..8d01e6cd 100644 --- a/assets/minecraft/models/item/red_bundle_open_back.json +++ b/assets/minecraft/models/item/red_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/red_bundle_open_back" + "layer0": "minecraft:item/red_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_bundle_open_front.json b/assets/minecraft/models/item/red_bundle_open_front.json index b8fe9c32..502fe44a 100644 --- a/assets/minecraft/models/item/red_bundle_open_front.json +++ b/assets/minecraft/models/item/red_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/red_bundle_open_front" + "layer0": "minecraft:item/red_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_carpet.json b/assets/minecraft/models/item/red_carpet.json deleted file mode 100644 index 18e4d52e..00000000 --- a/assets/minecraft/models/item/red_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_concrete.json b/assets/minecraft/models/item/red_concrete.json deleted file mode 100644 index 34a0630b..00000000 --- a/assets/minecraft/models/item/red_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_concrete_powder.json b/assets/minecraft/models/item/red_concrete_powder.json deleted file mode 100644 index 36e0ede7..00000000 --- a/assets/minecraft/models/item/red_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_glazed_terracotta.json b/assets/minecraft/models/item/red_glazed_terracotta.json deleted file mode 100644 index 3870bc2c..00000000 --- a/assets/minecraft/models/item/red_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_mushroom_block.json b/assets/minecraft/models/item/red_mushroom_block.json deleted file mode 100644 index 5ed44fb4..00000000 --- a/assets/minecraft/models/item/red_mushroom_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_mushroom_block_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_nether_brick_slab.json b/assets/minecraft/models/item/red_nether_brick_slab.json deleted file mode 100644 index 73ba1684..00000000 --- a/assets/minecraft/models/item/red_nether_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_nether_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_nether_brick_stairs.json b/assets/minecraft/models/item/red_nether_brick_stairs.json deleted file mode 100644 index 98d716be..00000000 --- a/assets/minecraft/models/item/red_nether_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_nether_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_nether_brick_wall.json b/assets/minecraft/models/item/red_nether_brick_wall.json deleted file mode 100644 index 48f50a64..00000000 --- a/assets/minecraft/models/item/red_nether_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_nether_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_nether_bricks.json b/assets/minecraft/models/item/red_nether_bricks.json deleted file mode 100644 index 51d3d11c..00000000 --- a/assets/minecraft/models/item/red_nether_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_nether_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_sand.json b/assets/minecraft/models/item/red_sand.json deleted file mode 100644 index f3459a82..00000000 --- a/assets/minecraft/models/item/red_sand.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_sand" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_sandstone.json b/assets/minecraft/models/item/red_sandstone.json deleted file mode 100644 index 305751fa..00000000 --- a/assets/minecraft/models/item/red_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_sandstone_slab.json b/assets/minecraft/models/item/red_sandstone_slab.json deleted file mode 100644 index c7473565..00000000 --- a/assets/minecraft/models/item/red_sandstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_sandstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_sandstone_stairs.json b/assets/minecraft/models/item/red_sandstone_stairs.json deleted file mode 100644 index 6c0f1c52..00000000 --- a/assets/minecraft/models/item/red_sandstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_sandstone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_sandstone_wall.json b/assets/minecraft/models/item/red_sandstone_wall.json deleted file mode 100644 index 7dc10d93..00000000 --- a/assets/minecraft/models/item/red_sandstone_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_sandstone_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_stained_glass.json b/assets/minecraft/models/item/red_stained_glass.json deleted file mode 100644 index 235d35da..00000000 --- a/assets/minecraft/models/item/red_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_terracotta.json b/assets/minecraft/models/item/red_terracotta.json deleted file mode 100644 index 2ded3a9d..00000000 --- a/assets/minecraft/models/item/red_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/red_wool.json b/assets/minecraft/models/item/red_wool.json deleted file mode 100644 index b0dd8dd6..00000000 --- a/assets/minecraft/models/item/red_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/red_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/redstone_block.json b/assets/minecraft/models/item/redstone_block.json deleted file mode 100644 index 71d9d176..00000000 --- a/assets/minecraft/models/item/redstone_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/redstone_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/redstone_lamp.json b/assets/minecraft/models/item/redstone_lamp.json deleted file mode 100644 index 47f36c43..00000000 --- a/assets/minecraft/models/item/redstone_lamp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/redstone_lamp" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/redstone_ore.json b/assets/minecraft/models/item/redstone_ore.json deleted file mode 100644 index 503fed06..00000000 --- a/assets/minecraft/models/item/redstone_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/redstone_ore" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/reinforced_deepslate.json b/assets/minecraft/models/item/reinforced_deepslate.json deleted file mode 100644 index 624fd3c4..00000000 --- a/assets/minecraft/models/item/reinforced_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/reinforced_deepslate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/repeating_command_block.json b/assets/minecraft/models/item/repeating_command_block.json deleted file mode 100644 index 75492a4b..00000000 --- a/assets/minecraft/models/item/repeating_command_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/repeating_command_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/resin_brick.json b/assets/minecraft/models/item/resin_brick.json new file mode 100644 index 00000000..4b91fc38 --- /dev/null +++ b/assets/minecraft/models/item/resin_brick.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/resin_brick" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/resin_clump.json b/assets/minecraft/models/item/resin_clump.json new file mode 100644 index 00000000..edfacb65 --- /dev/null +++ b/assets/minecraft/models/item/resin_clump.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/resin_clump" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/respawn_anchor.json b/assets/minecraft/models/item/respawn_anchor.json deleted file mode 100644 index 7fa102a3..00000000 --- a/assets/minecraft/models/item/respawn_anchor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/respawn_anchor_0" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/rooted_dirt.json b/assets/minecraft/models/item/rooted_dirt.json deleted file mode 100644 index 3d6a9cda..00000000 --- a/assets/minecraft/models/item/rooted_dirt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/rooted_dirt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/salmon_spawn_egg.json b/assets/minecraft/models/item/salmon_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/salmon_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sand.json b/assets/minecraft/models/item/sand.json deleted file mode 100644 index 96c1d00d..00000000 --- a/assets/minecraft/models/item/sand.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sand" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sandstone.json b/assets/minecraft/models/item/sandstone.json deleted file mode 100644 index 474b0ddb..00000000 --- a/assets/minecraft/models/item/sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sandstone_slab.json b/assets/minecraft/models/item/sandstone_slab.json deleted file mode 100644 index 7b8fc6bd..00000000 --- a/assets/minecraft/models/item/sandstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sandstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sandstone_stairs.json b/assets/minecraft/models/item/sandstone_stairs.json deleted file mode 100644 index 989e41ff..00000000 --- a/assets/minecraft/models/item/sandstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sandstone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sandstone_wall.json b/assets/minecraft/models/item/sandstone_wall.json deleted file mode 100644 index b4f2149b..00000000 --- a/assets/minecraft/models/item/sandstone_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sandstone_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/scaffolding.json b/assets/minecraft/models/item/scaffolding.json deleted file mode 100644 index 1946d80f..00000000 --- a/assets/minecraft/models/item/scaffolding.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/scaffolding_stable" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sculk.json b/assets/minecraft/models/item/sculk.json deleted file mode 100644 index 12d25d5f..00000000 --- a/assets/minecraft/models/item/sculk.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sculk" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sculk_catalyst.json b/assets/minecraft/models/item/sculk_catalyst.json deleted file mode 100644 index 89e0b5f7..00000000 --- a/assets/minecraft/models/item/sculk_catalyst.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sculk_catalyst" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sculk_sensor.json b/assets/minecraft/models/item/sculk_sensor.json deleted file mode 100644 index a2b8a77d..00000000 --- a/assets/minecraft/models/item/sculk_sensor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sculk_sensor_inactive" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sculk_shrieker.json b/assets/minecraft/models/item/sculk_shrieker.json deleted file mode 100644 index a6c19ae0..00000000 --- a/assets/minecraft/models/item/sculk_shrieker.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sculk_shrieker" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sea_lantern.json b/assets/minecraft/models/item/sea_lantern.json deleted file mode 100644 index 72561fc0..00000000 --- a/assets/minecraft/models/item/sea_lantern.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sea_lantern" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sheep_spawn_egg.json b/assets/minecraft/models/item/sheep_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/sheep_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/shield.json b/assets/minecraft/models/item/shield.json index dbfc1938..c9ec6c76 100644 --- a/assets/minecraft/models/item/shield.json +++ b/assets/minecraft/models/item/shield.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "gui_light": "front", "textures": { "particle": "block/dark_oak_planks" @@ -40,13 +39,5 @@ "translation": [ 2, 4, 2], "scale":[ 0.25, 0.25, 0.25] } - }, - "overrides": [ - { - "predicate": { - "blocking": 1 - }, - "model": "item/shield_blocking" - } - ] + } } diff --git a/assets/minecraft/models/item/shield_blocking.json b/assets/minecraft/models/item/shield_blocking.json index c68d1cf3..c688ef03 100644 --- a/assets/minecraft/models/item/shield_blocking.json +++ b/assets/minecraft/models/item/shield_blocking.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "gui_light": "front", "textures": { "particle": "block/dark_oak_planks" diff --git a/assets/minecraft/models/item/shroomlight.json b/assets/minecraft/models/item/shroomlight.json deleted file mode 100644 index 5d8aef63..00000000 --- a/assets/minecraft/models/item/shroomlight.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/shroomlight" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/shulker_spawn_egg.json b/assets/minecraft/models/item/shulker_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/shulker_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/silverfish_spawn_egg.json b/assets/minecraft/models/item/silverfish_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/silverfish_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/skeleton_horse_spawn_egg.json b/assets/minecraft/models/item/skeleton_horse_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/skeleton_horse_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/skeleton_skull.json b/assets/minecraft/models/item/skeleton_skull.json deleted file mode 100644 index 364b6e65..00000000 --- a/assets/minecraft/models/item/skeleton_skull.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_skull" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/skeleton_spawn_egg.json b/assets/minecraft/models/item/skeleton_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/skeleton_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/slime_block.json b/assets/minecraft/models/item/slime_block.json deleted file mode 100644 index 848fbdaf..00000000 --- a/assets/minecraft/models/item/slime_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/slime_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/slime_spawn_egg.json b/assets/minecraft/models/item/slime_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/slime_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smithing_table.json b/assets/minecraft/models/item/smithing_table.json deleted file mode 100644 index 3028d70f..00000000 --- a/assets/minecraft/models/item/smithing_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smithing_table" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smoker.json b/assets/minecraft/models/item/smoker.json deleted file mode 100644 index 7d274018..00000000 --- a/assets/minecraft/models/item/smoker.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smoker" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_basalt.json b/assets/minecraft/models/item/smooth_basalt.json deleted file mode 100644 index 327e0054..00000000 --- a/assets/minecraft/models/item/smooth_basalt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_basalt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_quartz.json b/assets/minecraft/models/item/smooth_quartz.json deleted file mode 100644 index b2047c83..00000000 --- a/assets/minecraft/models/item/smooth_quartz.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_quartz" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_quartz_slab.json b/assets/minecraft/models/item/smooth_quartz_slab.json deleted file mode 100644 index 55c15fa9..00000000 --- a/assets/minecraft/models/item/smooth_quartz_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_quartz_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_quartz_stairs.json b/assets/minecraft/models/item/smooth_quartz_stairs.json deleted file mode 100644 index bddcd1cc..00000000 --- a/assets/minecraft/models/item/smooth_quartz_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_quartz_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_red_sandstone.json b/assets/minecraft/models/item/smooth_red_sandstone.json deleted file mode 100644 index 3e8943e4..00000000 --- a/assets/minecraft/models/item/smooth_red_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_red_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_red_sandstone_slab.json b/assets/minecraft/models/item/smooth_red_sandstone_slab.json deleted file mode 100644 index cae67922..00000000 --- a/assets/minecraft/models/item/smooth_red_sandstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_red_sandstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_red_sandstone_stairs.json b/assets/minecraft/models/item/smooth_red_sandstone_stairs.json deleted file mode 100644 index 1ba4dd5e..00000000 --- a/assets/minecraft/models/item/smooth_red_sandstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_red_sandstone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_sandstone.json b/assets/minecraft/models/item/smooth_sandstone.json deleted file mode 100644 index d702d287..00000000 --- a/assets/minecraft/models/item/smooth_sandstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_sandstone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_sandstone_slab.json b/assets/minecraft/models/item/smooth_sandstone_slab.json deleted file mode 100644 index 934c7ada..00000000 --- a/assets/minecraft/models/item/smooth_sandstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_sandstone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_sandstone_stairs.json b/assets/minecraft/models/item/smooth_sandstone_stairs.json deleted file mode 100644 index 74ab5a1a..00000000 --- a/assets/minecraft/models/item/smooth_sandstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_sandstone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_stone.json b/assets/minecraft/models/item/smooth_stone.json deleted file mode 100644 index 393605bd..00000000 --- a/assets/minecraft/models/item/smooth_stone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_stone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/smooth_stone_slab.json b/assets/minecraft/models/item/smooth_stone_slab.json deleted file mode 100644 index e33dcb4c..00000000 --- a/assets/minecraft/models/item/smooth_stone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/smooth_stone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sniffer_spawn_egg.json b/assets/minecraft/models/item/sniffer_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/sniffer_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/snow.json b/assets/minecraft/models/item/snow.json deleted file mode 100644 index a4d1c989..00000000 --- a/assets/minecraft/models/item/snow.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/snow_height2" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/snow_block.json b/assets/minecraft/models/item/snow_block.json deleted file mode 100644 index 1564e775..00000000 --- a/assets/minecraft/models/item/snow_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/snow_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/snow_golem_spawn_egg.json b/assets/minecraft/models/item/snow_golem_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/snow_golem_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/soul_sand.json b/assets/minecraft/models/item/soul_sand.json deleted file mode 100644 index 50df79cf..00000000 --- a/assets/minecraft/models/item/soul_sand.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/soul_sand" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/soul_soil.json b/assets/minecraft/models/item/soul_soil.json deleted file mode 100644 index c8c62d36..00000000 --- a/assets/minecraft/models/item/soul_soil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/soul_soil" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spawner.json b/assets/minecraft/models/item/spawner.json deleted file mode 100644 index f54a94f6..00000000 --- a/assets/minecraft/models/item/spawner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spawner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spider_spawn_egg.json b/assets/minecraft/models/item/spider_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/spider_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/splash_potion.json b/assets/minecraft/models/item/splash_potion.json index d9aaa6b8..626ccc0f 100644 --- a/assets/minecraft/models/item/splash_potion.json +++ b/assets/minecraft/models/item/splash_potion.json @@ -1,7 +1,7 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/potion_overlay", - "layer1": "item/splash_potion" - } -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/potion_overlay", + "layer1": "minecraft:item/splash_potion" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/sponge.json b/assets/minecraft/models/item/sponge.json deleted file mode 100644 index 4e456fd9..00000000 --- a/assets/minecraft/models/item/sponge.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sponge" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spore_blossom.json b/assets/minecraft/models/item/spore_blossom.json deleted file mode 100644 index 3eb054c8..00000000 --- a/assets/minecraft/models/item/spore_blossom.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spore_blossom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_button.json b/assets/minecraft/models/item/spruce_button.json deleted file mode 100644 index 91d8bc03..00000000 --- a/assets/minecraft/models/item/spruce_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_fence.json b/assets/minecraft/models/item/spruce_fence.json deleted file mode 100644 index e2c37840..00000000 --- a/assets/minecraft/models/item/spruce_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_fence_gate.json b/assets/minecraft/models/item/spruce_fence_gate.json deleted file mode 100644 index 6f4473e4..00000000 --- a/assets/minecraft/models/item/spruce_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_leaves.json b/assets/minecraft/models/item/spruce_leaves.json deleted file mode 100644 index 6c64eda5..00000000 --- a/assets/minecraft/models/item/spruce_leaves.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_leaves" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_log.json b/assets/minecraft/models/item/spruce_log.json deleted file mode 100644 index 84bd7dc3..00000000 --- a/assets/minecraft/models/item/spruce_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_planks.json b/assets/minecraft/models/item/spruce_planks.json deleted file mode 100644 index d87b1720..00000000 --- a/assets/minecraft/models/item/spruce_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_pressure_plate.json b/assets/minecraft/models/item/spruce_pressure_plate.json deleted file mode 100644 index b0de0787..00000000 --- a/assets/minecraft/models/item/spruce_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_slab.json b/assets/minecraft/models/item/spruce_slab.json deleted file mode 100644 index d5fa4c0f..00000000 --- a/assets/minecraft/models/item/spruce_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_stairs.json b/assets/minecraft/models/item/spruce_stairs.json deleted file mode 100644 index 7957a5a1..00000000 --- a/assets/minecraft/models/item/spruce_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_trapdoor.json b/assets/minecraft/models/item/spruce_trapdoor.json deleted file mode 100644 index 0eb91e4a..00000000 --- a/assets/minecraft/models/item/spruce_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spruce_wood.json b/assets/minecraft/models/item/spruce_wood.json deleted file mode 100644 index 593e4ec8..00000000 --- a/assets/minecraft/models/item/spruce_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/spruce_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/spyglass_in_hand.json b/assets/minecraft/models/item/spyglass_in_hand.json index 073bfd29..1baca0ea 100644 --- a/assets/minecraft/models/item/spyglass_in_hand.json +++ b/assets/minecraft/models/item/spyglass_in_hand.json @@ -1,6 +1,7 @@ { "textures": { - "spyglass": "item/spyglass_model" + "spyglass": "item/spyglass_model", + "particle": "#spyglass" }, "elements": [ { diff --git a/assets/minecraft/models/item/squid_spawn_egg.json b/assets/minecraft/models/item/squid_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/squid_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/sticky_piston.json b/assets/minecraft/models/item/sticky_piston.json deleted file mode 100644 index 69bfdc94..00000000 --- a/assets/minecraft/models/item/sticky_piston.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/sticky_piston_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone.json b/assets/minecraft/models/item/stone.json deleted file mode 100644 index 37f27f10..00000000 --- a/assets/minecraft/models/item/stone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_brick_slab.json b/assets/minecraft/models/item/stone_brick_slab.json deleted file mode 100644 index 9dd874ac..00000000 --- a/assets/minecraft/models/item/stone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_brick_stairs.json b/assets/minecraft/models/item/stone_brick_stairs.json deleted file mode 100644 index d62eb4b3..00000000 --- a/assets/minecraft/models/item/stone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_brick_wall.json b/assets/minecraft/models/item/stone_brick_wall.json deleted file mode 100644 index 929da51f..00000000 --- a/assets/minecraft/models/item/stone_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_bricks.json b/assets/minecraft/models/item/stone_bricks.json deleted file mode 100644 index 51de871c..00000000 --- a/assets/minecraft/models/item/stone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_button.json b/assets/minecraft/models/item/stone_button.json deleted file mode 100644 index 8802ddfb..00000000 --- a/assets/minecraft/models/item/stone_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_pressure_plate.json b/assets/minecraft/models/item/stone_pressure_plate.json deleted file mode 100644 index bcb76d79..00000000 --- a/assets/minecraft/models/item/stone_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_slab.json b/assets/minecraft/models/item/stone_slab.json deleted file mode 100644 index 63de5381..00000000 --- a/assets/minecraft/models/item/stone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stone_stairs.json b/assets/minecraft/models/item/stone_stairs.json deleted file mode 100644 index 7b9a82a9..00000000 --- a/assets/minecraft/models/item/stone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stone_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stonecutter.json b/assets/minecraft/models/item/stonecutter.json deleted file mode 100644 index 54ffedeb..00000000 --- a/assets/minecraft/models/item/stonecutter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stonecutter" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stray_spawn_egg.json b/assets/minecraft/models/item/stray_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/stray_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/strider_spawn_egg.json b/assets/minecraft/models/item/strider_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/strider_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_acacia_log.json b/assets/minecraft/models/item/stripped_acacia_log.json deleted file mode 100644 index d9a3ce1f..00000000 --- a/assets/minecraft/models/item/stripped_acacia_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_acacia_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_acacia_wood.json b/assets/minecraft/models/item/stripped_acacia_wood.json deleted file mode 100644 index 4c653723..00000000 --- a/assets/minecraft/models/item/stripped_acacia_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_acacia_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_bamboo_block.json b/assets/minecraft/models/item/stripped_bamboo_block.json deleted file mode 100644 index 38c93f32..00000000 --- a/assets/minecraft/models/item/stripped_bamboo_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_bamboo_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_birch_log.json b/assets/minecraft/models/item/stripped_birch_log.json deleted file mode 100644 index d984bf7d..00000000 --- a/assets/minecraft/models/item/stripped_birch_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_birch_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_birch_wood.json b/assets/minecraft/models/item/stripped_birch_wood.json deleted file mode 100644 index dc0b6698..00000000 --- a/assets/minecraft/models/item/stripped_birch_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_birch_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_cherry_log.json b/assets/minecraft/models/item/stripped_cherry_log.json deleted file mode 100644 index 6fb61fed..00000000 --- a/assets/minecraft/models/item/stripped_cherry_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_cherry_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_cherry_wood.json b/assets/minecraft/models/item/stripped_cherry_wood.json deleted file mode 100644 index 73a11cdc..00000000 --- a/assets/minecraft/models/item/stripped_cherry_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_cherry_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_crimson_hyphae.json b/assets/minecraft/models/item/stripped_crimson_hyphae.json deleted file mode 100644 index 254d5515..00000000 --- a/assets/minecraft/models/item/stripped_crimson_hyphae.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_crimson_hyphae" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_crimson_stem.json b/assets/minecraft/models/item/stripped_crimson_stem.json deleted file mode 100644 index 701f5670..00000000 --- a/assets/minecraft/models/item/stripped_crimson_stem.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_crimson_stem" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_dark_oak_log.json b/assets/minecraft/models/item/stripped_dark_oak_log.json deleted file mode 100644 index d193f5f0..00000000 --- a/assets/minecraft/models/item/stripped_dark_oak_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_dark_oak_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_dark_oak_wood.json b/assets/minecraft/models/item/stripped_dark_oak_wood.json deleted file mode 100644 index 683446da..00000000 --- a/assets/minecraft/models/item/stripped_dark_oak_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_dark_oak_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_jungle_log.json b/assets/minecraft/models/item/stripped_jungle_log.json deleted file mode 100644 index 1c6cf473..00000000 --- a/assets/minecraft/models/item/stripped_jungle_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_jungle_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_jungle_wood.json b/assets/minecraft/models/item/stripped_jungle_wood.json deleted file mode 100644 index ed78aec7..00000000 --- a/assets/minecraft/models/item/stripped_jungle_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_jungle_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_mangrove_log.json b/assets/minecraft/models/item/stripped_mangrove_log.json deleted file mode 100644 index 4155be18..00000000 --- a/assets/minecraft/models/item/stripped_mangrove_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_mangrove_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_mangrove_wood.json b/assets/minecraft/models/item/stripped_mangrove_wood.json deleted file mode 100644 index 159d89d9..00000000 --- a/assets/minecraft/models/item/stripped_mangrove_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_mangrove_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_oak_log.json b/assets/minecraft/models/item/stripped_oak_log.json deleted file mode 100644 index bb3cafbe..00000000 --- a/assets/minecraft/models/item/stripped_oak_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_oak_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_oak_wood.json b/assets/minecraft/models/item/stripped_oak_wood.json deleted file mode 100644 index 9ba3fb2a..00000000 --- a/assets/minecraft/models/item/stripped_oak_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_oak_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_pale_oak_log.json b/assets/minecraft/models/item/stripped_pale_oak_log.json deleted file mode 100644 index 3021c285..00000000 --- a/assets/minecraft/models/item/stripped_pale_oak_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_pale_oak_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_pale_oak_wood.json b/assets/minecraft/models/item/stripped_pale_oak_wood.json deleted file mode 100644 index c55c0a6a..00000000 --- a/assets/minecraft/models/item/stripped_pale_oak_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_pale_oak_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_spruce_log.json b/assets/minecraft/models/item/stripped_spruce_log.json deleted file mode 100644 index e110cdf5..00000000 --- a/assets/minecraft/models/item/stripped_spruce_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_spruce_log" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_spruce_wood.json b/assets/minecraft/models/item/stripped_spruce_wood.json deleted file mode 100644 index 658f768b..00000000 --- a/assets/minecraft/models/item/stripped_spruce_wood.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_spruce_wood" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_warped_hyphae.json b/assets/minecraft/models/item/stripped_warped_hyphae.json deleted file mode 100644 index 0ebe2320..00000000 --- a/assets/minecraft/models/item/stripped_warped_hyphae.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_warped_hyphae" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/stripped_warped_stem.json b/assets/minecraft/models/item/stripped_warped_stem.json deleted file mode 100644 index 6147725d..00000000 --- a/assets/minecraft/models/item/stripped_warped_stem.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/stripped_warped_stem" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/structure_block.json b/assets/minecraft/models/item/structure_block.json deleted file mode 100644 index 1325f770..00000000 --- a/assets/minecraft/models/item/structure_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/structure_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/suspicious_gravel.json b/assets/minecraft/models/item/suspicious_gravel.json deleted file mode 100644 index dd5bed5f..00000000 --- a/assets/minecraft/models/item/suspicious_gravel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/suspicious_gravel_0" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/suspicious_sand.json b/assets/minecraft/models/item/suspicious_sand.json deleted file mode 100644 index c8a0dcb0..00000000 --- a/assets/minecraft/models/item/suspicious_sand.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/suspicious_sand_0" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tadpole_spawn_egg.json b/assets/minecraft/models/item/tadpole_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/tadpole_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/target.json b/assets/minecraft/models/item/target.json deleted file mode 100644 index 0e4e696b..00000000 --- a/assets/minecraft/models/item/target.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/target" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/template_banner.json b/assets/minecraft/models/item/template_banner.json index d5987555..14b25dcc 100644 --- a/assets/minecraft/models/item/template_banner.json +++ b/assets/minecraft/models/item/template_banner.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "gui_light": "front", "textures": { "particle": "block/oak_planks" diff --git a/assets/minecraft/models/item/template_bed.json b/assets/minecraft/models/item/template_bed.json index 2f5d6979..c8e39749 100644 --- a/assets/minecraft/models/item/template_bed.json +++ b/assets/minecraft/models/item/template_bed.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "display": { "thirdperson_righthand": { "rotation": [ 30, 160, 0 ], diff --git a/assets/minecraft/models/item/template_bundle_open_back.json b/assets/minecraft/models/item/template_bundle_open_back.json new file mode 100644 index 00000000..a710db4d --- /dev/null +++ b/assets/minecraft/models/item/template_bundle_open_back.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "display": { + "gui": { + "translation": [ 0, 0, -16 ] + } + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/template_bundle_open_front.json b/assets/minecraft/models/item/template_bundle_open_front.json new file mode 100644 index 00000000..51442b45 --- /dev/null +++ b/assets/minecraft/models/item/template_bundle_open_front.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "display": { + "gui": { + "translation": [ 0, 0, 16 ] + } + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/template_chest.json b/assets/minecraft/models/item/template_chest.json new file mode 100644 index 00000000..455c5427 --- /dev/null +++ b/assets/minecraft/models/item/template_chest.json @@ -0,0 +1,34 @@ +{ + "display": { + "gui": { + "rotation": [ 30, 45, 0 ], + "translation": [ 0, 0, 0], + "scale":[ 0.625, 0.625, 0.625 ] + }, + "ground": { + "rotation": [ 0, 0, 0 ], + "translation": [ 0, 3, 0], + "scale":[ 0.25, 0.25, 0.25 ] + }, + "head": { + "rotation": [ 0, 180, 0 ], + "translation": [ 0, 0, 0], + "scale":[ 1, 1, 1] + }, + "fixed": { + "rotation": [ 0, 180, 0 ], + "translation": [ 0, 0, 0], + "scale":[ 0.5, 0.5, 0.5 ] + }, + "thirdperson_righthand": { + "rotation": [ 75, 315, 0 ], + "translation": [ 0, 2.5, 0], + "scale": [ 0.375, 0.375, 0.375 ] + }, + "firstperson_righthand": { + "rotation": [ 0, 315, 0 ], + "translation": [ 0, 0, 0], + "scale": [ 0.4, 0.4, 0.4 ] + } + } +} diff --git a/assets/minecraft/models/item/template_shulker_box.json b/assets/minecraft/models/item/template_shulker_box.json index 7bfe2e69..455c5427 100644 --- a/assets/minecraft/models/item/template_shulker_box.json +++ b/assets/minecraft/models/item/template_shulker_box.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "display": { "gui": { "rotation": [ 30, 45, 0 ], diff --git a/assets/minecraft/models/item/template_skull.json b/assets/minecraft/models/item/template_skull.json index 232416fc..4ec347ad 100644 --- a/assets/minecraft/models/item/template_skull.json +++ b/assets/minecraft/models/item/template_skull.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "textures": { "particle": "block/soul_sand" }, diff --git a/assets/minecraft/models/item/terracotta.json b/assets/minecraft/models/item/terracotta.json deleted file mode 100644 index c443c890..00000000 --- a/assets/minecraft/models/item/terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tinted_glass.json b/assets/minecraft/models/item/tinted_glass.json deleted file mode 100644 index 18f610b8..00000000 --- a/assets/minecraft/models/item/tinted_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tinted_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tipped_arrow.json b/assets/minecraft/models/item/tipped_arrow.json index 578defec..0b124105 100644 --- a/assets/minecraft/models/item/tipped_arrow.json +++ b/assets/minecraft/models/item/tipped_arrow.json @@ -1,7 +1,7 @@ { - "parent": "item/generated", - "textures": { - "layer0": "item/tipped_arrow_head", - "layer1": "item/tipped_arrow_base" - } -} + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/tipped_arrow_head", + "layer1": "minecraft:item/tipped_arrow_base" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/tnt.json b/assets/minecraft/models/item/tnt.json deleted file mode 100644 index 688d3f95..00000000 --- a/assets/minecraft/models/item/tnt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tnt" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/trader_llama_spawn_egg.json b/assets/minecraft/models/item/trader_llama_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/trader_llama_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/trapped_chest.json b/assets/minecraft/models/item/trapped_chest.json index c7435714..fb1b4c69 100644 --- a/assets/minecraft/models/item/trapped_chest.json +++ b/assets/minecraft/models/item/trapped_chest.json @@ -1,3 +1,6 @@ { - "parent": "item/chest" -} + "parent": "minecraft:item/template_chest", + "textures": { + "particle": "minecraft:block/oak_planks" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/trial_spawner.json b/assets/minecraft/models/item/trial_spawner.json deleted file mode 100644 index 22e70fe9..00000000 --- a/assets/minecraft/models/item/trial_spawner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/trial_spawner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/trident_in_hand.json b/assets/minecraft/models/item/trident_in_hand.json index 6685dcca..e7562b4a 100644 --- a/assets/minecraft/models/item/trident_in_hand.json +++ b/assets/minecraft/models/item/trident_in_hand.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "gui_light": "front", "textures": { "particle": "item/trident" @@ -40,13 +39,5 @@ "translation": [ 4, 4, 2], "scale":[ 0.25, 0.25, 0.25] } - }, - "overrides": [ - { - "predicate": { - "throwing": 1 - }, - "model": "item/trident_throwing" - } - ] + } } diff --git a/assets/minecraft/models/item/trident_throwing.json b/assets/minecraft/models/item/trident_throwing.json index fb8e96a3..0749afcd 100644 --- a/assets/minecraft/models/item/trident_throwing.json +++ b/assets/minecraft/models/item/trident_throwing.json @@ -1,5 +1,4 @@ { - "parent": "builtin/entity", "gui_light": "front", "textures": { "particle": "item/trident" diff --git a/assets/minecraft/models/item/tropical_fish_spawn_egg.json b/assets/minecraft/models/item/tropical_fish_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/tropical_fish_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tube_coral_block.json b/assets/minecraft/models/item/tube_coral_block.json deleted file mode 100644 index 14e2d576..00000000 --- a/assets/minecraft/models/item/tube_coral_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tube_coral_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff.json b/assets/minecraft/models/item/tuff.json deleted file mode 100644 index 187958d9..00000000 --- a/assets/minecraft/models/item/tuff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_brick_slab.json b/assets/minecraft/models/item/tuff_brick_slab.json deleted file mode 100644 index b793fc27..00000000 --- a/assets/minecraft/models/item/tuff_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_brick_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_brick_stairs.json b/assets/minecraft/models/item/tuff_brick_stairs.json deleted file mode 100644 index d5156694..00000000 --- a/assets/minecraft/models/item/tuff_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_brick_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_brick_wall.json b/assets/minecraft/models/item/tuff_brick_wall.json deleted file mode 100644 index bfb8d8b5..00000000 --- a/assets/minecraft/models/item/tuff_brick_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_brick_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_bricks.json b/assets/minecraft/models/item/tuff_bricks.json deleted file mode 100644 index d13c6e5a..00000000 --- a/assets/minecraft/models/item/tuff_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_bricks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_slab.json b/assets/minecraft/models/item/tuff_slab.json deleted file mode 100644 index 5f037430..00000000 --- a/assets/minecraft/models/item/tuff_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_stairs.json b/assets/minecraft/models/item/tuff_stairs.json deleted file mode 100644 index eacc1e5e..00000000 --- a/assets/minecraft/models/item/tuff_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/tuff_wall.json b/assets/minecraft/models/item/tuff_wall.json deleted file mode 100644 index 91a87f52..00000000 --- a/assets/minecraft/models/item/tuff_wall.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/tuff_wall_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/turtle_helmet.json b/assets/minecraft/models/item/turtle_helmet.json index e61aa3c8..60d78346 100644 --- a/assets/minecraft/models/item/turtle_helmet.json +++ b/assets/minecraft/models/item/turtle_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "minecraft:item/turtle_helmet_quartz_trim", - "predicate": { - "trim_type": 0.1 - } - }, - { - "model": "minecraft:item/turtle_helmet_iron_trim", - "predicate": { - "trim_type": 0.2 - } - }, - { - "model": "minecraft:item/turtle_helmet_netherite_trim", - "predicate": { - "trim_type": 0.3 - } - }, - { - "model": "minecraft:item/turtle_helmet_redstone_trim", - "predicate": { - "trim_type": 0.4 - } - }, - { - "model": "minecraft:item/turtle_helmet_copper_trim", - "predicate": { - "trim_type": 0.5 - } - }, - { - "model": "minecraft:item/turtle_helmet_gold_trim", - "predicate": { - "trim_type": 0.6 - } - }, - { - "model": "minecraft:item/turtle_helmet_emerald_trim", - "predicate": { - "trim_type": 0.7 - } - }, - { - "model": "minecraft:item/turtle_helmet_diamond_trim", - "predicate": { - "trim_type": 0.8 - } - }, - { - "model": "minecraft:item/turtle_helmet_lapis_trim", - "predicate": { - "trim_type": 0.9 - } - }, - { - "model": "minecraft:item/turtle_helmet_amethyst_trim", - "predicate": { - "trim_type": 1.0 - } - } - ], "textures": { "layer0": "minecraft:item/turtle_helmet" } diff --git a/assets/minecraft/models/item/turtle_helmet_resin_trim.json b/assets/minecraft/models/item/turtle_helmet_resin_trim.json new file mode 100644 index 00000000..64adf32e --- /dev/null +++ b/assets/minecraft/models/item/turtle_helmet_resin_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/turtle_helmet", + "layer1": "minecraft:trims/items/helmet_trim_resin" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/turtle_spawn_egg.json b/assets/minecraft/models/item/turtle_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/turtle_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/vault.json b/assets/minecraft/models/item/vault.json deleted file mode 100644 index 848fa309..00000000 --- a/assets/minecraft/models/item/vault.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/vault" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/verdant_froglight.json b/assets/minecraft/models/item/verdant_froglight.json deleted file mode 100644 index 6b9f7d21..00000000 --- a/assets/minecraft/models/item/verdant_froglight.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/verdant_froglight" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/vex_spawn_egg.json b/assets/minecraft/models/item/vex_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/vex_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/villager_spawn_egg.json b/assets/minecraft/models/item/villager_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/villager_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/vindicator_spawn_egg.json b/assets/minecraft/models/item/vindicator_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/vindicator_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/wandering_trader_spawn_egg.json b/assets/minecraft/models/item/wandering_trader_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/wandering_trader_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warden_spawn_egg.json b/assets/minecraft/models/item/warden_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/warden_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_button.json b/assets/minecraft/models/item/warped_button.json deleted file mode 100644 index 182a0ac6..00000000 --- a/assets/minecraft/models/item/warped_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_button_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_fence.json b/assets/minecraft/models/item/warped_fence.json deleted file mode 100644 index d45dd46d..00000000 --- a/assets/minecraft/models/item/warped_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_fence_inventory" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_fence_gate.json b/assets/minecraft/models/item/warped_fence_gate.json deleted file mode 100644 index 1f521bc7..00000000 --- a/assets/minecraft/models/item/warped_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_fence_gate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_hyphae.json b/assets/minecraft/models/item/warped_hyphae.json deleted file mode 100644 index 6cc4c5a4..00000000 --- a/assets/minecraft/models/item/warped_hyphae.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_hyphae" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_nylium.json b/assets/minecraft/models/item/warped_nylium.json deleted file mode 100644 index 20309492..00000000 --- a/assets/minecraft/models/item/warped_nylium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_nylium" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_planks.json b/assets/minecraft/models/item/warped_planks.json deleted file mode 100644 index 92cfb4ca..00000000 --- a/assets/minecraft/models/item/warped_planks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_planks" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_pressure_plate.json b/assets/minecraft/models/item/warped_pressure_plate.json deleted file mode 100644 index 58d9b443..00000000 --- a/assets/minecraft/models/item/warped_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_pressure_plate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_slab.json b/assets/minecraft/models/item/warped_slab.json deleted file mode 100644 index ce7153c4..00000000 --- a/assets/minecraft/models/item/warped_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_stairs.json b/assets/minecraft/models/item/warped_stairs.json deleted file mode 100644 index 08260fdd..00000000 --- a/assets/minecraft/models/item/warped_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_stem.json b/assets/minecraft/models/item/warped_stem.json deleted file mode 100644 index 0bab3df6..00000000 --- a/assets/minecraft/models/item/warped_stem.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_stem" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_trapdoor.json b/assets/minecraft/models/item/warped_trapdoor.json deleted file mode 100644 index c716c468..00000000 --- a/assets/minecraft/models/item/warped_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/warped_wart_block.json b/assets/minecraft/models/item/warped_wart_block.json deleted file mode 100644 index 754439ab..00000000 --- a/assets/minecraft/models/item/warped_wart_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/warped_wart_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_chiseled_copper.json b/assets/minecraft/models/item/waxed_chiseled_copper.json deleted file mode 100644 index b88e810b..00000000 --- a/assets/minecraft/models/item/waxed_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_copper_block.json b/assets/minecraft/models/item/waxed_copper_block.json deleted file mode 100644 index 7bc2c018..00000000 --- a/assets/minecraft/models/item/waxed_copper_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_block" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_copper_bulb.json b/assets/minecraft/models/item/waxed_copper_bulb.json deleted file mode 100644 index 08e49a53..00000000 --- a/assets/minecraft/models/item/waxed_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_copper_door.json b/assets/minecraft/models/item/waxed_copper_door.json deleted file mode 100644 index 4466e7a3..00000000 --- a/assets/minecraft/models/item/waxed_copper_door.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/copper_door" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_copper_grate.json b/assets/minecraft/models/item/waxed_copper_grate.json deleted file mode 100644 index f4cff513..00000000 --- a/assets/minecraft/models/item/waxed_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_copper_trapdoor.json b/assets/minecraft/models/item/waxed_copper_trapdoor.json deleted file mode 100644 index 87df71b2..00000000 --- a/assets/minecraft/models/item/waxed_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/copper_trapdoor" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_cut_copper.json b/assets/minecraft/models/item/waxed_cut_copper.json deleted file mode 100644 index ce1ec597..00000000 --- a/assets/minecraft/models/item/waxed_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_cut_copper_slab.json b/assets/minecraft/models/item/waxed_cut_copper_slab.json deleted file mode 100644 index b6b05101..00000000 --- a/assets/minecraft/models/item/waxed_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_cut_copper_stairs.json b/assets/minecraft/models/item/waxed_cut_copper_stairs.json deleted file mode 100644 index 7376f52c..00000000 --- a/assets/minecraft/models/item/waxed_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_chiseled_copper.json b/assets/minecraft/models/item/waxed_exposed_chiseled_copper.json deleted file mode 100644 index 11278b6a..00000000 --- a/assets/minecraft/models/item/waxed_exposed_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_copper.json b/assets/minecraft/models/item/waxed_exposed_copper.json deleted file mode 100644 index 5881fd7b..00000000 --- a/assets/minecraft/models/item/waxed_exposed_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_copper_bulb.json b/assets/minecraft/models/item/waxed_exposed_copper_bulb.json deleted file mode 100644 index efd8e9d9..00000000 --- a/assets/minecraft/models/item/waxed_exposed_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/exposed_copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_copper_door.json b/assets/minecraft/models/item/waxed_exposed_copper_door.json deleted file mode 100644 index 7e3a7045..00000000 --- a/assets/minecraft/models/item/waxed_exposed_copper_door.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/exposed_copper_door" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_copper_grate.json b/assets/minecraft/models/item/waxed_exposed_copper_grate.json deleted file mode 100644 index b7a3c78e..00000000 --- a/assets/minecraft/models/item/waxed_exposed_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_copper_trapdoor.json b/assets/minecraft/models/item/waxed_exposed_copper_trapdoor.json deleted file mode 100644 index e3f5e9ad..00000000 --- a/assets/minecraft/models/item/waxed_exposed_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/exposed_copper_trapdoor" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_cut_copper.json b/assets/minecraft/models/item/waxed_exposed_cut_copper.json deleted file mode 100644 index b5c7d8f0..00000000 --- a/assets/minecraft/models/item/waxed_exposed_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_cut_copper_slab.json b/assets/minecraft/models/item/waxed_exposed_cut_copper_slab.json deleted file mode 100644 index 29ce4723..00000000 --- a/assets/minecraft/models/item/waxed_exposed_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_exposed_cut_copper_stairs.json b/assets/minecraft/models/item/waxed_exposed_cut_copper_stairs.json deleted file mode 100644 index 24bdd285..00000000 --- a/assets/minecraft/models/item/waxed_exposed_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/exposed_cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_chiseled_copper.json b/assets/minecraft/models/item/waxed_oxidized_chiseled_copper.json deleted file mode 100644 index 72020427..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_copper.json b/assets/minecraft/models/item/waxed_oxidized_copper.json deleted file mode 100644 index 63a0dabe..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_copper_bulb.json b/assets/minecraft/models/item/waxed_oxidized_copper_bulb.json deleted file mode 100644 index 59b8fb7b..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/oxidized_copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_copper_door.json b/assets/minecraft/models/item/waxed_oxidized_copper_door.json deleted file mode 100644 index 313143e1..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_copper_door.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/oxidized_copper_door" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_copper_grate.json b/assets/minecraft/models/item/waxed_oxidized_copper_grate.json deleted file mode 100644 index e2521c38..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_copper_trapdoor.json b/assets/minecraft/models/item/waxed_oxidized_copper_trapdoor.json deleted file mode 100644 index 9d3a8bee..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/oxidized_copper_trapdoor" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_cut_copper.json b/assets/minecraft/models/item/waxed_oxidized_cut_copper.json deleted file mode 100644 index 36dfa030..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_cut_copper_slab.json b/assets/minecraft/models/item/waxed_oxidized_cut_copper_slab.json deleted file mode 100644 index a3d02242..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_oxidized_cut_copper_stairs.json b/assets/minecraft/models/item/waxed_oxidized_cut_copper_stairs.json deleted file mode 100644 index fd8af1aa..00000000 --- a/assets/minecraft/models/item/waxed_oxidized_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/oxidized_cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_chiseled_copper.json b/assets/minecraft/models/item/waxed_weathered_chiseled_copper.json deleted file mode 100644 index c27086d6..00000000 --- a/assets/minecraft/models/item/waxed_weathered_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_copper.json b/assets/minecraft/models/item/waxed_weathered_copper.json deleted file mode 100644 index 743af49a..00000000 --- a/assets/minecraft/models/item/waxed_weathered_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_copper_bulb.json b/assets/minecraft/models/item/waxed_weathered_copper_bulb.json deleted file mode 100644 index 6e29d291..00000000 --- a/assets/minecraft/models/item/waxed_weathered_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/weathered_copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_copper_door.json b/assets/minecraft/models/item/waxed_weathered_copper_door.json deleted file mode 100644 index 409c8efa..00000000 --- a/assets/minecraft/models/item/waxed_weathered_copper_door.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/weathered_copper_door" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_copper_grate.json b/assets/minecraft/models/item/waxed_weathered_copper_grate.json deleted file mode 100644 index 17430d64..00000000 --- a/assets/minecraft/models/item/waxed_weathered_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_copper_trapdoor.json b/assets/minecraft/models/item/waxed_weathered_copper_trapdoor.json deleted file mode 100644 index 7c3335de..00000000 --- a/assets/minecraft/models/item/waxed_weathered_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/weathered_copper_trapdoor" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_cut_copper.json b/assets/minecraft/models/item/waxed_weathered_cut_copper.json deleted file mode 100644 index e49a231b..00000000 --- a/assets/minecraft/models/item/waxed_weathered_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_cut_copper_slab.json b/assets/minecraft/models/item/waxed_weathered_cut_copper_slab.json deleted file mode 100644 index acda09e0..00000000 --- a/assets/minecraft/models/item/waxed_weathered_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/waxed_weathered_cut_copper_stairs.json b/assets/minecraft/models/item/waxed_weathered_cut_copper_stairs.json deleted file mode 100644 index 01ce5972..00000000 --- a/assets/minecraft/models/item/waxed_weathered_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_chiseled_copper.json b/assets/minecraft/models/item/weathered_chiseled_copper.json deleted file mode 100644 index c27086d6..00000000 --- a/assets/minecraft/models/item/weathered_chiseled_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_chiseled_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_copper.json b/assets/minecraft/models/item/weathered_copper.json deleted file mode 100644 index 743af49a..00000000 --- a/assets/minecraft/models/item/weathered_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_copper_bulb.json b/assets/minecraft/models/item/weathered_copper_bulb.json deleted file mode 100644 index 276559f8..00000000 --- a/assets/minecraft/models/item/weathered_copper_bulb.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_copper_bulb" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_copper_grate.json b/assets/minecraft/models/item/weathered_copper_grate.json deleted file mode 100644 index 17430d64..00000000 --- a/assets/minecraft/models/item/weathered_copper_grate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_copper_grate" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_copper_trapdoor.json b/assets/minecraft/models/item/weathered_copper_trapdoor.json deleted file mode 100644 index 7b067302..00000000 --- a/assets/minecraft/models/item/weathered_copper_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_copper_trapdoor_bottom" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_cut_copper.json b/assets/minecraft/models/item/weathered_cut_copper.json deleted file mode 100644 index e49a231b..00000000 --- a/assets/minecraft/models/item/weathered_cut_copper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_cut_copper" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_cut_copper_slab.json b/assets/minecraft/models/item/weathered_cut_copper_slab.json deleted file mode 100644 index acda09e0..00000000 --- a/assets/minecraft/models/item/weathered_cut_copper_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_cut_copper_slab" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/weathered_cut_copper_stairs.json b/assets/minecraft/models/item/weathered_cut_copper_stairs.json deleted file mode 100644 index 01ce5972..00000000 --- a/assets/minecraft/models/item/weathered_cut_copper_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/weathered_cut_copper_stairs" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/wet_sponge.json b/assets/minecraft/models/item/wet_sponge.json deleted file mode 100644 index d662daae..00000000 --- a/assets/minecraft/models/item/wet_sponge.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/wet_sponge" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_banner.json b/assets/minecraft/models/item/white_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/white_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_bundle_open_back.json b/assets/minecraft/models/item/white_bundle_open_back.json index 6692dda4..29479f6a 100644 --- a/assets/minecraft/models/item/white_bundle_open_back.json +++ b/assets/minecraft/models/item/white_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/white_bundle_open_back" + "layer0": "minecraft:item/white_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_bundle_open_front.json b/assets/minecraft/models/item/white_bundle_open_front.json index ca14ae3b..0946151a 100644 --- a/assets/minecraft/models/item/white_bundle_open_front.json +++ b/assets/minecraft/models/item/white_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/white_bundle_open_front" + "layer0": "minecraft:item/white_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_carpet.json b/assets/minecraft/models/item/white_carpet.json deleted file mode 100644 index 8ef6f034..00000000 --- a/assets/minecraft/models/item/white_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_concrete.json b/assets/minecraft/models/item/white_concrete.json deleted file mode 100644 index 16475ed4..00000000 --- a/assets/minecraft/models/item/white_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_concrete_powder.json b/assets/minecraft/models/item/white_concrete_powder.json deleted file mode 100644 index c001b383..00000000 --- a/assets/minecraft/models/item/white_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_glazed_terracotta.json b/assets/minecraft/models/item/white_glazed_terracotta.json deleted file mode 100644 index 55881dbc..00000000 --- a/assets/minecraft/models/item/white_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_stained_glass.json b/assets/minecraft/models/item/white_stained_glass.json deleted file mode 100644 index 28c61d95..00000000 --- a/assets/minecraft/models/item/white_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_terracotta.json b/assets/minecraft/models/item/white_terracotta.json deleted file mode 100644 index 973fa966..00000000 --- a/assets/minecraft/models/item/white_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/white_wool.json b/assets/minecraft/models/item/white_wool.json deleted file mode 100644 index 5908f340..00000000 --- a/assets/minecraft/models/item/white_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/white_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/witch_spawn_egg.json b/assets/minecraft/models/item/witch_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/witch_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/wither_skeleton_skull.json b/assets/minecraft/models/item/wither_skeleton_skull.json deleted file mode 100644 index 364b6e65..00000000 --- a/assets/minecraft/models/item/wither_skeleton_skull.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_skull" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/wither_skeleton_spawn_egg.json b/assets/minecraft/models/item/wither_skeleton_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/wither_skeleton_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/wither_spawn_egg.json b/assets/minecraft/models/item/wither_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/wither_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/wolf_armor.json b/assets/minecraft/models/item/wolf_armor.json index b08d0829..11f10428 100644 --- a/assets/minecraft/models/item/wolf_armor.json +++ b/assets/minecraft/models/item/wolf_armor.json @@ -1,7 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "minecraft:item/wolf_armor", - "layer1": "minecraft:item/wolf_armor_overlay" + "layer0": "minecraft:item/wolf_armor" } } \ No newline at end of file diff --git a/assets/minecraft/models/item/wolf_armor_dyed.json b/assets/minecraft/models/item/wolf_armor_dyed.json new file mode 100644 index 00000000..b08d0829 --- /dev/null +++ b/assets/minecraft/models/item/wolf_armor_dyed.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/wolf_armor", + "layer1": "minecraft:item/wolf_armor_overlay" + } +} \ No newline at end of file diff --git a/assets/minecraft/models/item/wolf_spawn_egg.json b/assets/minecraft/models/item/wolf_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/wolf_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_banner.json b/assets/minecraft/models/item/yellow_banner.json deleted file mode 100644 index 661a106d..00000000 --- a/assets/minecraft/models/item/yellow_banner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_banner" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_bundle_open_back.json b/assets/minecraft/models/item/yellow_bundle_open_back.json index 9f598be7..04998c2b 100644 --- a/assets/minecraft/models/item/yellow_bundle_open_back.json +++ b/assets/minecraft/models/item/yellow_bundle_open_back.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_back", "textures": { - "layer0": "item/yellow_bundle_open_back" + "layer0": "minecraft:item/yellow_bundle_open_back" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_bundle_open_front.json b/assets/minecraft/models/item/yellow_bundle_open_front.json index 9c3f41e1..a4794d6b 100644 --- a/assets/minecraft/models/item/yellow_bundle_open_front.json +++ b/assets/minecraft/models/item/yellow_bundle_open_front.json @@ -1,6 +1,6 @@ { - "parent": "item/bundle", + "parent": "minecraft:item/template_bundle_open_front", "textures": { - "layer0": "item/yellow_bundle_open_front" + "layer0": "minecraft:item/yellow_bundle_open_front" } -} +} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_carpet.json b/assets/minecraft/models/item/yellow_carpet.json deleted file mode 100644 index c3b3710e..00000000 --- a/assets/minecraft/models/item/yellow_carpet.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_carpet" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_concrete.json b/assets/minecraft/models/item/yellow_concrete.json deleted file mode 100644 index ed8ebe4c..00000000 --- a/assets/minecraft/models/item/yellow_concrete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_concrete" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_concrete_powder.json b/assets/minecraft/models/item/yellow_concrete_powder.json deleted file mode 100644 index 38bac8bf..00000000 --- a/assets/minecraft/models/item/yellow_concrete_powder.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_concrete_powder" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_glazed_terracotta.json b/assets/minecraft/models/item/yellow_glazed_terracotta.json deleted file mode 100644 index 4d819984..00000000 --- a/assets/minecraft/models/item/yellow_glazed_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_glazed_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_stained_glass.json b/assets/minecraft/models/item/yellow_stained_glass.json deleted file mode 100644 index e102e2d5..00000000 --- a/assets/minecraft/models/item/yellow_stained_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_stained_glass" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_terracotta.json b/assets/minecraft/models/item/yellow_terracotta.json deleted file mode 100644 index 50dfb7ea..00000000 --- a/assets/minecraft/models/item/yellow_terracotta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_terracotta" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/yellow_wool.json b/assets/minecraft/models/item/yellow_wool.json deleted file mode 100644 index e0de4bb8..00000000 --- a/assets/minecraft/models/item/yellow_wool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/yellow_wool" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/zoglin_spawn_egg.json b/assets/minecraft/models/item/zoglin_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/zoglin_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/zombie_head.json b/assets/minecraft/models/item/zombie_head.json deleted file mode 100644 index 364b6e65..00000000 --- a/assets/minecraft/models/item/zombie_head.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_skull" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/zombie_horse_spawn_egg.json b/assets/minecraft/models/item/zombie_horse_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/zombie_horse_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/zombie_spawn_egg.json b/assets/minecraft/models/item/zombie_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/zombie_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/zombie_villager_spawn_egg.json b/assets/minecraft/models/item/zombie_villager_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/zombie_villager_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/models/item/zombified_piglin_spawn_egg.json b/assets/minecraft/models/item/zombified_piglin_spawn_egg.json deleted file mode 100644 index d1aaa9d6..00000000 --- a/assets/minecraft/models/item/zombified_piglin_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/assets/minecraft/particles/pale_oak_leaves.json b/assets/minecraft/particles/pale_oak_leaves.json new file mode 100644 index 00000000..8769866f --- /dev/null +++ b/assets/minecraft/particles/pale_oak_leaves.json @@ -0,0 +1,16 @@ +{ + "textures": [ + "minecraft:pale_oak_0", + "minecraft:pale_oak_1", + "minecraft:pale_oak_2", + "minecraft:pale_oak_3", + "minecraft:pale_oak_4", + "minecraft:pale_oak_5", + "minecraft:pale_oak_6", + "minecraft:pale_oak_7", + "minecraft:pale_oak_8", + "minecraft:pale_oak_9", + "minecraft:pale_oak_10", + "minecraft:pale_oak_11" + ] +} diff --git a/assets/minecraft/textures/block/bricks.png b/assets/minecraft/textures/block/bricks.png index 71c7d076..0b301720 100644 --- a/assets/minecraft/textures/block/bricks.png +++ b/assets/minecraft/textures/block/bricks.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33f9411f1cb233a2020df0cf3fda32c0f67a4b0fac3751bde2ba6f2fee81b169 -size 216 +oid sha256:3242cb8e441c940156633b0d867e08c887ddaeaa32343b212d4b1e5ca3dae123 +size 206 diff --git a/assets/minecraft/textures/block/chiseled_nether_bricks.png b/assets/minecraft/textures/block/chiseled_nether_bricks.png index 240a441d..909d644c 100644 --- a/assets/minecraft/textures/block/chiseled_nether_bricks.png +++ b/assets/minecraft/textures/block/chiseled_nether_bricks.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:912db8068dc28f858988821e76cc7be62405f3a05a10f84d0b9fe3bdf214ca08 -size 214 +oid sha256:c404d7fd31864978639528de6a2660c0b6929689ada66fc132929938b72193e0 +size 199 diff --git a/assets/minecraft/textures/block/chiseled_resin_bricks.png b/assets/minecraft/textures/block/chiseled_resin_bricks.png new file mode 100644 index 00000000..4cff2b57 --- /dev/null +++ b/assets/minecraft/textures/block/chiseled_resin_bricks.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e0d6bdcfcc420b52660e53c2058747ef709fe293295128e8c8690eace91a9e9 +size 208 diff --git a/assets/minecraft/textures/block/closed_eyeblossom.png b/assets/minecraft/textures/block/closed_eyeblossom.png new file mode 100644 index 00000000..7cf73997 --- /dev/null +++ b/assets/minecraft/textures/block/closed_eyeblossom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:581ecac12232a67e56a6becd110d7bd764ae7b40ab3e2d4f109ebd0030749989 +size 297 diff --git a/assets/minecraft/textures/block/cracked_nether_bricks.png b/assets/minecraft/textures/block/cracked_nether_bricks.png index 9332f12d..2f87930e 100644 --- a/assets/minecraft/textures/block/cracked_nether_bricks.png +++ b/assets/minecraft/textures/block/cracked_nether_bricks.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29314fb4debac85bcfe820d539707538add507b7e7b964237611aef7d8933524 -size 216 +oid sha256:e4d72096b6d64c111322abe482b13ec8d859fa85537dad25b26f16cb3122c982 +size 215 diff --git a/assets/minecraft/textures/block/creaking_heart_top.png b/assets/minecraft/textures/block/creaking_heart_top.png index e7c16c53..01b68903 100644 --- a/assets/minecraft/textures/block/creaking_heart_top.png +++ b/assets/minecraft/textures/block/creaking_heart_top.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c98cfb528d113b8b11972466f545daaedf4cd2af1da63abc867c840ac3f4e4c -size 225 +oid sha256:96f9d77f2649d122717c2fccea6e62df99d41661c1342cf655a4a8617ec9241b +size 226 diff --git a/assets/minecraft/textures/block/exposed_copper_bulb_lit_powered.png b/assets/minecraft/textures/block/exposed_copper_bulb_lit_powered.png index 97c36319..08c640b0 100644 --- a/assets/minecraft/textures/block/exposed_copper_bulb_lit_powered.png +++ b/assets/minecraft/textures/block/exposed_copper_bulb_lit_powered.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47a78e0b8d0a044404ad19433d2707c1857136112682625efdf5c3843eea501e -size 263 +oid sha256:e384d9d6816fcc4132fb6bf167790553de8a91489def66941963e38b68d7b8ea +size 265 diff --git a/assets/minecraft/textures/block/nether_bricks.png b/assets/minecraft/textures/block/nether_bricks.png index 79333514..0ab212a7 100644 --- a/assets/minecraft/textures/block/nether_bricks.png +++ b/assets/minecraft/textures/block/nether_bricks.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cf860896f5977a69eea6432f8d920c4f380229ad8b2cf19184d4629faca4627 -size 193 +oid sha256:2eba1f96e7fcaa5d9ea8ae2dd8c196494039fa41e9ed4c89909c90d942297318 +size 190 diff --git a/assets/minecraft/textures/block/open_eyeblossom.png b/assets/minecraft/textures/block/open_eyeblossom.png new file mode 100644 index 00000000..4486637f --- /dev/null +++ b/assets/minecraft/textures/block/open_eyeblossom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fedee209983d9df1df1eb4946664d1f0bdc1cb2b703720573fb4533772bb8efb +size 316 diff --git a/assets/minecraft/textures/block/open_eyeblossom_emissive.png b/assets/minecraft/textures/block/open_eyeblossom_emissive.png new file mode 100644 index 00000000..960ca884 --- /dev/null +++ b/assets/minecraft/textures/block/open_eyeblossom_emissive.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bbccb88bf07c8225da7ee2a5ba4bbe75c6b60400eb67b166364f980703bdce6 +size 101 diff --git a/assets/minecraft/textures/block/red_nether_bricks.png b/assets/minecraft/textures/block/red_nether_bricks.png index 2ac0542a..e50114d9 100644 --- a/assets/minecraft/textures/block/red_nether_bricks.png +++ b/assets/minecraft/textures/block/red_nether_bricks.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86516fbe227cf501e20d97b2cf0049102b406e4f80971b33904dde544fe2fc44 -size 197 +oid sha256:a158bae8173f719d7f1e0fb713cff7fcd47615b647088bebcd02e0cd04c71663 +size 190 diff --git a/assets/minecraft/textures/block/resin_block.png b/assets/minecraft/textures/block/resin_block.png new file mode 100644 index 00000000..5895a3a5 --- /dev/null +++ b/assets/minecraft/textures/block/resin_block.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f39a1f402a25f97828e9391a2953e3c84a46cc5c4a6c0b10e72bb9e6ed7bcfdf +size 205 diff --git a/assets/minecraft/textures/block/resin_bricks.png b/assets/minecraft/textures/block/resin_bricks.png new file mode 100644 index 00000000..539bd9cb --- /dev/null +++ b/assets/minecraft/textures/block/resin_bricks.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab7b68d7fd987c8d82e9225a33b783419a86ff4a2e77e5b1cc22cd63f546445c +size 200 diff --git a/assets/minecraft/textures/block/resin_clump.png b/assets/minecraft/textures/block/resin_clump.png new file mode 100644 index 00000000..784bce93 --- /dev/null +++ b/assets/minecraft/textures/block/resin_clump.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24196521916d0169f048423b8317846a67ee62e9adec6bca5223437fd1043265 +size 154 diff --git a/assets/minecraft/textures/entity/signs/hanging/pale_oak.png b/assets/minecraft/textures/entity/signs/hanging/pale_oak.png index 13d8267a..2ed26df1 100644 --- a/assets/minecraft/textures/entity/signs/hanging/pale_oak.png +++ b/assets/minecraft/textures/entity/signs/hanging/pale_oak.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0b7766d12a383dcce32dca2bf158ff876a02cb30737cd49b74cb0f259984418 -size 409 +oid sha256:6f8c9f29e49165a5df3bd9168bcb105f2228dbb6ad1a67549ae69d3db2c2dd83 +size 394 diff --git a/assets/minecraft/textures/entity/signs/pale_oak.png b/assets/minecraft/textures/entity/signs/pale_oak.png index 173fd810..14d7bfd7 100644 --- a/assets/minecraft/textures/entity/signs/pale_oak.png +++ b/assets/minecraft/textures/entity/signs/pale_oak.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d83dc5bac3be05d0783f1aca78800d63f9e026509d2c18b8ded4f9571f019bee -size 432 +oid sha256:6f5123d4b1588459649cce32182b756d91441e9ff77907c23eb4393716091664 +size 461 diff --git a/assets/minecraft/textures/entity/slime/magmacube.png b/assets/minecraft/textures/entity/slime/magmacube.png index 2cda2629..2962d9d8 100644 --- a/assets/minecraft/textures/entity/slime/magmacube.png +++ b/assets/minecraft/textures/entity/slime/magmacube.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f25bfb01e93c7004c2d9d780534215464fe644f8f26cb7eb0570238b5a43910 -size 772 +oid sha256:5a094598401348a086c7e2c17d749cd5b903b09259f96959e7937fcd0cac6968 +size 732 diff --git a/assets/minecraft/textures/gui/container/brewing_stand.png b/assets/minecraft/textures/gui/container/brewing_stand.png index d1a23395..1dd95f9e 100644 --- a/assets/minecraft/textures/gui/container/brewing_stand.png +++ b/assets/minecraft/textures/gui/container/brewing_stand.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d958c996b8b95cba9997c4a0f47326589164b5cd609048db745b420dc74aa5b -size 791 +oid sha256:b7dfd2610763891af7a65f2b40b0ee1835872c6f9e73055f753ff925e0034d53 +size 637 diff --git a/assets/minecraft/textures/gui/sprites/advancements/box_obtained.png.mcmeta b/assets/minecraft/textures/gui/sprites/advancements/box_obtained.png.mcmeta new file mode 100644 index 00000000..14436098 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/advancements/box_obtained.png.mcmeta @@ -0,0 +1,10 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 200, + "height": 26, + "border": 10 + } + } +} diff --git a/assets/minecraft/textures/gui/sprites/advancements/box_unobtained.png.mcmeta b/assets/minecraft/textures/gui/sprites/advancements/box_unobtained.png.mcmeta new file mode 100644 index 00000000..14436098 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/advancements/box_unobtained.png.mcmeta @@ -0,0 +1,10 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 200, + "height": 26, + "border": 10 + } + } +} diff --git a/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png b/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png index aff884c2..81699bcd 100644 --- a/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png +++ b/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c56d1a3124b838baf20e7022fe76e94f5d15cbe6eadbd6060ac374107de51965 -size 111 +oid sha256:f3d867c9e19e0bfb049b42e9fac35983c5375d3bb7b7801baa755e297215b20d +size 113 diff --git a/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png.mcmeta b/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png.mcmeta new file mode 100644 index 00000000..21fe5868 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/bundle/slot_background.png.mcmeta @@ -0,0 +1,10 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 24, + "height": 24, + "border": 4 + } + } +} diff --git a/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_back.png b/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_back.png index 3fb006e3..0f3e3021 100644 --- a/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_back.png +++ b/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_back.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53002d882dc48b6d4d3727a9f64df361ba97d12a53e00a3db4f7bf24e389f226 -size 96 +oid sha256:5890dbb32cf2a55d6bc62dd56e6afc6c8d6ce2f3e6df579c5fd7ec35374cc67e +size 114 diff --git a/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_front.png b/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_front.png index 41a55e37..ca0e3ff6 100644 --- a/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_front.png +++ b/assets/minecraft/textures/gui/sprites/container/bundle/slot_highlight_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5eaada2b194107aa6a3efa9927b12473feaa73a2881c5dec7e0773adc7d38519 -size 96 +oid sha256:534acc950a68d207ac99f20b681c0d40225d46df24a68a5500beb3c7c7655c4a +size 114 diff --git a/assets/minecraft/textures/gui/sprites/container/horse/armor_slot.png b/assets/minecraft/textures/gui/sprites/container/horse/armor_slot.png deleted file mode 100644 index 189ee257..00000000 --- a/assets/minecraft/textures/gui/sprites/container/horse/armor_slot.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca1592758268de83071a0fa6ebf11658938c4360fd290724c04a6524acd8ef6f -size 141 diff --git a/assets/minecraft/textures/gui/sprites/container/horse/llama_armor_slot.png b/assets/minecraft/textures/gui/sprites/container/horse/llama_armor_slot.png deleted file mode 100644 index 12611e7f..00000000 --- a/assets/minecraft/textures/gui/sprites/container/horse/llama_armor_slot.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6051d481a62708df563fae491ead5c7a66ad3dac25b351cdd233c78eed475bb -size 127 diff --git a/assets/minecraft/textures/gui/sprites/container/horse/saddle_slot.png b/assets/minecraft/textures/gui/sprites/container/horse/saddle_slot.png deleted file mode 100644 index ce6e8561..00000000 --- a/assets/minecraft/textures/gui/sprites/container/horse/saddle_slot.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e7ed9a679caa522dc406f207e79188bb783f86cb8b340ae77cb2fd0b682605de -size 151 diff --git a/assets/minecraft/textures/gui/sprites/container/loom/banner_slot.png b/assets/minecraft/textures/gui/sprites/container/loom/banner_slot.png deleted file mode 100644 index 4156aa13..00000000 --- a/assets/minecraft/textures/gui/sprites/container/loom/banner_slot.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:abf5e5810f57faa47b81f672216824db6a3826ffd282d25b7dda06e2a868cecc -size 102 diff --git a/assets/minecraft/textures/gui/sprites/container/loom/dye_slot.png b/assets/minecraft/textures/gui/sprites/container/loom/dye_slot.png deleted file mode 100644 index 6babbbdd..00000000 --- a/assets/minecraft/textures/gui/sprites/container/loom/dye_slot.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bf2abc0ec5327828eb307428d1af19d2de2592a7ea42853aba4b06e565eedd4a -size 124 diff --git a/assets/minecraft/textures/gui/sprites/container/loom/pattern_slot.png b/assets/minecraft/textures/gui/sprites/container/loom/pattern_slot.png deleted file mode 100644 index 395cbb4a..00000000 --- a/assets/minecraft/textures/gui/sprites/container/loom/pattern_slot.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59d8dd78dcc044cf67ffff8c4b5d2da84abea2177d8062917fcea6246b8b9b94 -size 114 diff --git a/assets/minecraft/textures/item/empty_slot_amethyst_shard.png b/assets/minecraft/textures/gui/sprites/container/slot/amethyst_shard.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_amethyst_shard.png rename to assets/minecraft/textures/gui/sprites/container/slot/amethyst_shard.png diff --git a/assets/minecraft/textures/item/empty_slot_axe.png b/assets/minecraft/textures/gui/sprites/container/slot/axe.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_axe.png rename to assets/minecraft/textures/gui/sprites/container/slot/axe.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/banner.png b/assets/minecraft/textures/gui/sprites/container/slot/banner.png new file mode 100644 index 00000000..bec783eb --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/banner.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30d33905125d25ad15415ebb29ca3cf323fb9eb13d603926b352ecf2f83e53d3 +size 116 diff --git a/assets/minecraft/textures/gui/sprites/container/slot/banner_pattern.png b/assets/minecraft/textures/gui/sprites/container/slot/banner_pattern.png new file mode 100644 index 00000000..31a0e8d2 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/banner_pattern.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40fca99325e8d73cca483885f734d711cefbfd3b3c5751ac8bf809b3c131eb85 +size 129 diff --git a/assets/minecraft/textures/item/empty_armor_slot_boots.png b/assets/minecraft/textures/gui/sprites/container/slot/boots.png similarity index 100% rename from assets/minecraft/textures/item/empty_armor_slot_boots.png rename to assets/minecraft/textures/gui/sprites/container/slot/boots.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/brewing_fuel.png b/assets/minecraft/textures/gui/sprites/container/slot/brewing_fuel.png new file mode 100644 index 00000000..9977e193 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/brewing_fuel.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec2392bf047df85ce09209d01229345b5125b057d8bc0a4aabc3274843ab347 +size 138 diff --git a/assets/minecraft/textures/item/empty_armor_slot_chestplate.png b/assets/minecraft/textures/gui/sprites/container/slot/chestplate.png similarity index 100% rename from assets/minecraft/textures/item/empty_armor_slot_chestplate.png rename to assets/minecraft/textures/gui/sprites/container/slot/chestplate.png diff --git a/assets/minecraft/textures/item/empty_slot_diamond.png b/assets/minecraft/textures/gui/sprites/container/slot/diamond.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_diamond.png rename to assets/minecraft/textures/gui/sprites/container/slot/diamond.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/dye.png b/assets/minecraft/textures/gui/sprites/container/slot/dye.png new file mode 100644 index 00000000..d948f23a --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/dye.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:656833a0804ccb512a76144417c4abeafd81f40be1b156bc4174d36bf3fa1add +size 132 diff --git a/assets/minecraft/textures/item/empty_slot_emerald.png b/assets/minecraft/textures/gui/sprites/container/slot/emerald.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_emerald.png rename to assets/minecraft/textures/gui/sprites/container/slot/emerald.png diff --git a/assets/minecraft/textures/item/empty_armor_slot_helmet.png b/assets/minecraft/textures/gui/sprites/container/slot/helmet.png similarity index 100% rename from assets/minecraft/textures/item/empty_armor_slot_helmet.png rename to assets/minecraft/textures/gui/sprites/container/slot/helmet.png diff --git a/assets/minecraft/textures/item/empty_slot_hoe.png b/assets/minecraft/textures/gui/sprites/container/slot/hoe.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_hoe.png rename to assets/minecraft/textures/gui/sprites/container/slot/hoe.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/horse_armor.png b/assets/minecraft/textures/gui/sprites/container/slot/horse_armor.png new file mode 100644 index 00000000..fe802190 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/horse_armor.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f99614e412f61c01067e9f88cb0bbad918371bd9ca5e8b59651d1d3a6819574e +size 128 diff --git a/assets/minecraft/textures/item/empty_slot_ingot.png b/assets/minecraft/textures/gui/sprites/container/slot/ingot.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_ingot.png rename to assets/minecraft/textures/gui/sprites/container/slot/ingot.png diff --git a/assets/minecraft/textures/item/empty_slot_lapis_lazuli.png b/assets/minecraft/textures/gui/sprites/container/slot/lapis_lazuli.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_lapis_lazuli.png rename to assets/minecraft/textures/gui/sprites/container/slot/lapis_lazuli.png diff --git a/assets/minecraft/textures/item/empty_armor_slot_leggings.png b/assets/minecraft/textures/gui/sprites/container/slot/leggings.png similarity index 100% rename from assets/minecraft/textures/item/empty_armor_slot_leggings.png rename to assets/minecraft/textures/gui/sprites/container/slot/leggings.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/llama_armor.png b/assets/minecraft/textures/gui/sprites/container/slot/llama_armor.png new file mode 100644 index 00000000..cc749581 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/llama_armor.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f335294feb44045a170b6e4bf55456adbed29c4a92c68516b396c54a766044 +size 118 diff --git a/assets/minecraft/textures/item/empty_slot_pickaxe.png b/assets/minecraft/textures/gui/sprites/container/slot/pickaxe.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_pickaxe.png rename to assets/minecraft/textures/gui/sprites/container/slot/pickaxe.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/potion.png b/assets/minecraft/textures/gui/sprites/container/slot/potion.png new file mode 100644 index 00000000..d3ee1255 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/potion.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbcc06031d8038d1343ea43c07d8f2958c551f6e3a63b7d56e64281d5a3056be +size 134 diff --git a/assets/minecraft/textures/item/empty_slot_quartz.png b/assets/minecraft/textures/gui/sprites/container/slot/quartz.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_quartz.png rename to assets/minecraft/textures/gui/sprites/container/slot/quartz.png diff --git a/assets/minecraft/textures/item/empty_slot_redstone_dust.png b/assets/minecraft/textures/gui/sprites/container/slot/redstone_dust.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_redstone_dust.png rename to assets/minecraft/textures/gui/sprites/container/slot/redstone_dust.png diff --git a/assets/minecraft/textures/gui/sprites/container/slot/saddle.png b/assets/minecraft/textures/gui/sprites/container/slot/saddle.png new file mode 100644 index 00000000..7cdbb512 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/container/slot/saddle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a20887f79c63f89705b0752c85370811cd9cf3a8f1befd919a199523844f11d +size 132 diff --git a/assets/minecraft/textures/item/empty_armor_slot_shield.png b/assets/minecraft/textures/gui/sprites/container/slot/shield.png similarity index 100% rename from assets/minecraft/textures/item/empty_armor_slot_shield.png rename to assets/minecraft/textures/gui/sprites/container/slot/shield.png diff --git a/assets/minecraft/textures/item/empty_slot_shovel.png b/assets/minecraft/textures/gui/sprites/container/slot/shovel.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_shovel.png rename to assets/minecraft/textures/gui/sprites/container/slot/shovel.png diff --git a/assets/minecraft/textures/item/empty_slot_smithing_template_armor_trim.png b/assets/minecraft/textures/gui/sprites/container/slot/smithing_template_armor_trim.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_smithing_template_armor_trim.png rename to assets/minecraft/textures/gui/sprites/container/slot/smithing_template_armor_trim.png diff --git a/assets/minecraft/textures/item/empty_slot_smithing_template_netherite_upgrade.png b/assets/minecraft/textures/gui/sprites/container/slot/smithing_template_netherite_upgrade.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_smithing_template_netherite_upgrade.png rename to assets/minecraft/textures/gui/sprites/container/slot/smithing_template_netherite_upgrade.png diff --git a/assets/minecraft/textures/item/empty_slot_sword.png b/assets/minecraft/textures/gui/sprites/container/slot/sword.png similarity index 100% rename from assets/minecraft/textures/item/empty_slot_sword.png rename to assets/minecraft/textures/gui/sprites/container/slot/sword.png diff --git a/assets/minecraft/textures/gui/sprites/toast/system.png b/assets/minecraft/textures/gui/sprites/toast/system.png index 0c373c38..6e585a0a 100644 --- a/assets/minecraft/textures/gui/sprites/toast/system.png +++ b/assets/minecraft/textures/gui/sprites/toast/system.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e2a0fa4ef3dbfd3d7bd0012cb838ef2865120160ebac5a4239b853193991e7d -size 147 +oid sha256:025070341685b12420583b3711d02814936ab622208f896782626acae92e0e9b +size 169 diff --git a/assets/minecraft/textures/gui/sprites/toast/system.png.mcmeta b/assets/minecraft/textures/gui/sprites/toast/system.png.mcmeta new file mode 100644 index 00000000..c5f90dd0 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/toast/system.png.mcmeta @@ -0,0 +1,15 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 160, + "height": 64, + "border": { + "left": 17, + "top": 30, + "right": 4, + "bottom": 4 + } + } + } +} diff --git a/assets/minecraft/textures/gui/sprites/toast/tutorial.png.mcmeta b/assets/minecraft/textures/gui/sprites/toast/tutorial.png.mcmeta new file mode 100644 index 00000000..7e3e21c7 --- /dev/null +++ b/assets/minecraft/textures/gui/sprites/toast/tutorial.png.mcmeta @@ -0,0 +1,10 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 160, + "height": 32, + "border": 3 + } + } +} diff --git a/assets/minecraft/textures/item/black_bundle_open_front.png b/assets/minecraft/textures/item/black_bundle_open_front.png index e89c48bb..931b56e9 100644 --- a/assets/minecraft/textures/item/black_bundle_open_front.png +++ b/assets/minecraft/textures/item/black_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47573721a22bbc59e4ff33c8b0b00eb8fb535d7d020943651f642f39b82655d9 +oid sha256:ae590e3c3bd621f55b6a8ca24ee6fc62f974ee385e1460fe1bd8b43bac8ecccf size 191 diff --git a/assets/minecraft/textures/item/blue_bundle_open_front.png b/assets/minecraft/textures/item/blue_bundle_open_front.png index cd159f82..5a455683 100644 --- a/assets/minecraft/textures/item/blue_bundle_open_front.png +++ b/assets/minecraft/textures/item/blue_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c74ea271b2654846efc44bb551bcb040dd782c25c6cc43cd9e58dcd992f0e33 +oid sha256:dbf0b75202fa0748bd6e0a3f53a5a07d37bc9f20b8b72ad747c48ed3e68dc7f3 size 191 diff --git a/assets/minecraft/textures/item/brown_bundle_open_front.png b/assets/minecraft/textures/item/brown_bundle_open_front.png index aa086cb2..7de1e69b 100644 --- a/assets/minecraft/textures/item/brown_bundle_open_front.png +++ b/assets/minecraft/textures/item/brown_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b3783b255e0e87940936a63a46eaa74f8dc79698bfe1082772d32ca832cd204 -size 197 +oid sha256:80ed4f57815b2e9d802bc1e8b02b5d18268b997f1d503810b153ee5076944899 +size 191 diff --git a/assets/minecraft/textures/item/bundle_open_front.png b/assets/minecraft/textures/item/bundle_open_front.png index 6e5e2c2e..eea6f5fb 100644 --- a/assets/minecraft/textures/item/bundle_open_front.png +++ b/assets/minecraft/textures/item/bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fec97f3abc6d15e1f341751e59c255fd01c693195b2fc9af8f724b45c1a4270 +oid sha256:2bb8c49f0f0285724de85ae1795f98a7963aa6e9058c3172107393405841d9f9 size 191 diff --git a/assets/minecraft/textures/item/cyan_bundle_open_front.png b/assets/minecraft/textures/item/cyan_bundle_open_front.png index 90dcbccf..02306145 100644 --- a/assets/minecraft/textures/item/cyan_bundle_open_front.png +++ b/assets/minecraft/textures/item/cyan_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4698af2c5c6b660176d6b893be3189cc006ab90a1e2f74d6a6911ece5a1712f0 +oid sha256:4b46772c5d48942caea6a83d10663edc0726206a02e13482a9c4b52bd3c7da6b size 191 diff --git a/assets/minecraft/textures/item/broken_elytra.png b/assets/minecraft/textures/item/elytra_broken.png similarity index 100% rename from assets/minecraft/textures/item/broken_elytra.png rename to assets/minecraft/textures/item/elytra_broken.png diff --git a/assets/minecraft/textures/item/gray_bundle_open_front.png b/assets/minecraft/textures/item/gray_bundle_open_front.png index aee53ef7..dc5c1828 100644 --- a/assets/minecraft/textures/item/gray_bundle_open_front.png +++ b/assets/minecraft/textures/item/gray_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19bb276fe396b71f213c493d1259e1a5e8f7f74880825a495d153923ffbbb3fe +oid sha256:1af2cf1f5142ff63929a5f29bbabc50ebf52272f77e452b56df2d17550fd621e size 191 diff --git a/assets/minecraft/textures/item/green_bundle_open_front.png b/assets/minecraft/textures/item/green_bundle_open_front.png index 24882995..de8057ee 100644 --- a/assets/minecraft/textures/item/green_bundle_open_front.png +++ b/assets/minecraft/textures/item/green_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebdea03ba52bce5f3d2fbb350e65e9c69dd7543b7b1bc63f03a7b6384482b79e +oid sha256:32db865dbebcf66d9e279305ffd78e7960a9ea988c73159e07e5f0030ba69721 size 191 diff --git a/assets/minecraft/textures/item/light_blue_bundle_open_front.png b/assets/minecraft/textures/item/light_blue_bundle_open_front.png index eadc9ddb..e0618174 100644 --- a/assets/minecraft/textures/item/light_blue_bundle_open_front.png +++ b/assets/minecraft/textures/item/light_blue_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12482a7694f665417c37d00e8d4e757c5763c30cdf437f1e758d85741c873ef8 +oid sha256:7b1439dcbde6706414fc557f16c233d2fd228bc8a994ff799c8e49a3a45ee2c8 size 191 diff --git a/assets/minecraft/textures/item/light_gray_bundle_open_front.png b/assets/minecraft/textures/item/light_gray_bundle_open_front.png index 303a864a..cf3070b7 100644 --- a/assets/minecraft/textures/item/light_gray_bundle_open_front.png +++ b/assets/minecraft/textures/item/light_gray_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e4a77f88bea4a12003bc62742d874d27c77cdced9c1c5d948f9cd75cd955920 +oid sha256:2f3a75457158ae841815cb0a61e490753bed15c0bd72c251266269ef6b721c9c size 191 diff --git a/assets/minecraft/textures/item/lime_bundle_open_front.png b/assets/minecraft/textures/item/lime_bundle_open_front.png index 9260ec10..c1b2acad 100644 --- a/assets/minecraft/textures/item/lime_bundle_open_front.png +++ b/assets/minecraft/textures/item/lime_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a5fe6e456dd6df0c9d02ba4eb8a5f5b8d4fa3a4c7cfa4f081e29527a4f9a0c4 +oid sha256:c8256856787785f41f9b6fdbe1a7135a985ff3d6ad8971db4077ea605a95115b size 191 diff --git a/assets/minecraft/textures/item/magenta_bundle_open_front.png b/assets/minecraft/textures/item/magenta_bundle_open_front.png index b814a934..359eb0a2 100644 --- a/assets/minecraft/textures/item/magenta_bundle_open_front.png +++ b/assets/minecraft/textures/item/magenta_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4d6c3bb0be02c595a85410284c7957e85f8dc8a6a3d44d76f038a3e613548f5 -size 191 +oid sha256:65dd65416b09257c4ede3d29e16bad1802513063ad2c9e6a56434b3aeaea12e1 +size 190 diff --git a/assets/minecraft/textures/item/orange_bundle_open_front.png b/assets/minecraft/textures/item/orange_bundle_open_front.png index a2d617d3..9279806d 100644 --- a/assets/minecraft/textures/item/orange_bundle_open_front.png +++ b/assets/minecraft/textures/item/orange_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:064c96232802cf6ee2a31dae4d484b6a04163c0003fe5ec504dea927d70d3726 +oid sha256:30881cee8f71ea67ffdaafa7f855fac6f7ba1366fca106f465c9ce055331ff06 size 191 diff --git a/assets/minecraft/textures/item/pale_oak_chest_boat.png b/assets/minecraft/textures/item/pale_oak_chest_boat.png index f887f296..805c061a 100644 --- a/assets/minecraft/textures/item/pale_oak_chest_boat.png +++ b/assets/minecraft/textures/item/pale_oak_chest_boat.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d184c633358827c2d9eca7dbc8a41cf94b8956532985d27e4ae66cd815d2fab2 -size 251 +oid sha256:3af7da2a2fa9791c4f723752db809791546bbde9e5f7aebfd8d0d234bf4d5bcc +size 256 diff --git a/assets/minecraft/textures/item/pale_oak_hanging_sign.png b/assets/minecraft/textures/item/pale_oak_hanging_sign.png index 36ba9250..74eae7c9 100644 --- a/assets/minecraft/textures/item/pale_oak_hanging_sign.png +++ b/assets/minecraft/textures/item/pale_oak_hanging_sign.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cff876b061caa78988a8dd8e20794b02fbca65c1a33dd8b8dbbbb881eec973e -size 207 +oid sha256:d5b8bd8c7d1fead4e2481c38942c20a7fd106eb71859fc09f25b1e5929480a74 +size 204 diff --git a/assets/minecraft/textures/item/pale_oak_sign.png b/assets/minecraft/textures/item/pale_oak_sign.png index 066538c6..8a1b2e14 100644 --- a/assets/minecraft/textures/item/pale_oak_sign.png +++ b/assets/minecraft/textures/item/pale_oak_sign.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aab37b8a151108437681161d78767451f1982e761e0f93631dae2ad55e9d67aa -size 183 +oid sha256:f8f7e2fe6923e1ea4229e2957118031d9268df4d47be1d4324e7d7e370d78f70 +size 194 diff --git a/assets/minecraft/textures/item/pink_bundle_open_front.png b/assets/minecraft/textures/item/pink_bundle_open_front.png index fd595bc1..f9ad5882 100644 --- a/assets/minecraft/textures/item/pink_bundle_open_front.png +++ b/assets/minecraft/textures/item/pink_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0b97be39f55dd506f64d96363ebc2d62463485145b8d7ce4cfa02ccc0269f3e +oid sha256:be151e35deca8dfb49dac84ba080ab7643442dd2c04a67ed262f07f28447f611 size 191 diff --git a/assets/minecraft/textures/item/purple_bundle_open_front.png b/assets/minecraft/textures/item/purple_bundle_open_front.png index 143dac8f..2c471e15 100644 --- a/assets/minecraft/textures/item/purple_bundle_open_front.png +++ b/assets/minecraft/textures/item/purple_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80b4c5a85a303c3544935e37246eea8e2a6fc440917e92a4dec1de0adac4bcaa +oid sha256:301244edf18b3205c828423a1576ef4d365848af3a9a75691fbd8dfec8a12ea6 size 191 diff --git a/assets/minecraft/textures/item/red_bundle_open_front.png b/assets/minecraft/textures/item/red_bundle_open_front.png index 9559e05e..3045dff0 100644 --- a/assets/minecraft/textures/item/red_bundle_open_front.png +++ b/assets/minecraft/textures/item/red_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:298c9eb545ee593740eb63d97165eaafc784f69939cdf3408e4e288bb073c6df -size 197 +oid sha256:720016ee326e7c1577e511331fbfeb39eba3bed20f70fdc79a938310212af8f1 +size 191 diff --git a/assets/minecraft/textures/item/resin_brick.png b/assets/minecraft/textures/item/resin_brick.png new file mode 100644 index 00000000..1d28b46d --- /dev/null +++ b/assets/minecraft/textures/item/resin_brick.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d73d5495b3357a0efd5971c932ac5f9e9aa369339190b8b14c6cac9ddbff3c +size 198 diff --git a/assets/minecraft/textures/item/resin_clump.png b/assets/minecraft/textures/item/resin_clump.png new file mode 100644 index 00000000..e8374699 --- /dev/null +++ b/assets/minecraft/textures/item/resin_clump.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2540522d3d04f64bb8ebe73a173e44ec516d27ba1fe375834d77e7bda32758b +size 196 diff --git a/assets/minecraft/textures/item/white_bundle_open_front.png b/assets/minecraft/textures/item/white_bundle_open_front.png index 0ebd5c2c..4c40fb81 100644 --- a/assets/minecraft/textures/item/white_bundle_open_front.png +++ b/assets/minecraft/textures/item/white_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:325109e77c1de7c3a2a4bc65ee1218d062cb681fed43fb838966452d912115e1 +oid sha256:b4eaa82b3d1489e80305bac817f40d3fedaf48e3a56ea2f4b679fa091d9cc380 size 191 diff --git a/assets/minecraft/textures/item/yellow_bundle_open_front.png b/assets/minecraft/textures/item/yellow_bundle_open_front.png index a81c9e7d..650097f9 100644 --- a/assets/minecraft/textures/item/yellow_bundle_open_front.png +++ b/assets/minecraft/textures/item/yellow_bundle_open_front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16da871fe81cf9f51f67dd49e745a458b5eca7216fa5c309f304a8207aa12b32 +oid sha256:3008f402c8beff4c2fa8eb53f8779fc88d170206e1843aefa5732be3f98caf6b size 191 diff --git a/assets/minecraft/textures/particle/pale_oak_0.png b/assets/minecraft/textures/particle/pale_oak_0.png new file mode 100644 index 00000000..4fdbbce4 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aecb48b0c756e050e4468883644d650dd56bdec5444913682743592ecf006ae7 +size 95 diff --git a/assets/minecraft/textures/particle/pale_oak_1.png b/assets/minecraft/textures/particle/pale_oak_1.png new file mode 100644 index 00000000..fea3eccf --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:754f516a7a7fe081f6e962f7230022f79b3441f0e90ee2ad390a6960624898fe +size 92 diff --git a/assets/minecraft/textures/particle/pale_oak_10.png b/assets/minecraft/textures/particle/pale_oak_10.png new file mode 100644 index 00000000..73bdec7a --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_10.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fdce87d727d5be2ad7bca671016325c15343175a14bf6471aca5030d8bc25c1 +size 97 diff --git a/assets/minecraft/textures/particle/pale_oak_11.png b/assets/minecraft/textures/particle/pale_oak_11.png new file mode 100644 index 00000000..b6bc5b34 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_11.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8cbbbb05eea4cd6ad3b9ef4a64fdd53670d89e83c78510aac06dadc9dda2be8 +size 94 diff --git a/assets/minecraft/textures/particle/pale_oak_2.png b/assets/minecraft/textures/particle/pale_oak_2.png new file mode 100644 index 00000000..4efb0160 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8b610ce176ce5dca89dd557c276265dff45db0d770aba100c9dbd349eb20f8 +size 97 diff --git a/assets/minecraft/textures/particle/pale_oak_3.png b/assets/minecraft/textures/particle/pale_oak_3.png new file mode 100644 index 00000000..6c260bb5 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb2fa0dd775defd7c023dd396b9b230c97055cc8a1ce40a3b2869812f89e123c +size 94 diff --git a/assets/minecraft/textures/particle/pale_oak_4.png b/assets/minecraft/textures/particle/pale_oak_4.png new file mode 100644 index 00000000..daf0fca2 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a49e3d95b1d810c3454fe40dd0d9a8355259289db3ea36b34dbc24ed7ca78257 +size 95 diff --git a/assets/minecraft/textures/particle/pale_oak_5.png b/assets/minecraft/textures/particle/pale_oak_5.png new file mode 100644 index 00000000..999350d3 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74f4f572734b02f37f9a72564ec5c57b89c9fb9b3c3f39229f949fc3b2894d80 +size 92 diff --git a/assets/minecraft/textures/particle/pale_oak_6.png b/assets/minecraft/textures/particle/pale_oak_6.png new file mode 100644 index 00000000..aa1438d4 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:887e6d2048f557924e7927242b51343751ae00e8d7204d51b90d4eb683417891 +size 97 diff --git a/assets/minecraft/textures/particle/pale_oak_7.png b/assets/minecraft/textures/particle/pale_oak_7.png new file mode 100644 index 00000000..605cb1dc --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_7.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d320ae1240c36380e5fdbe94c688090aa21c55eb39b459936c8b4532be225de +size 94 diff --git a/assets/minecraft/textures/particle/pale_oak_8.png b/assets/minecraft/textures/particle/pale_oak_8.png new file mode 100644 index 00000000..81e122a0 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_8.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d56959b02fa4ae70ceb98115ae946f27776b69cd8df7e24d74a01171fc20b6f +size 95 diff --git a/assets/minecraft/textures/particle/pale_oak_9.png b/assets/minecraft/textures/particle/pale_oak_9.png new file mode 100644 index 00000000..278fc4c0 --- /dev/null +++ b/assets/minecraft/textures/particle/pale_oak_9.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ccdb8f0ad5f1253d7db45f449415f1d5e41b5955287c018d6071065232032fc +size 92 diff --git a/assets/minecraft/textures/trims/color_palettes/resin.png b/assets/minecraft/textures/trims/color_palettes/resin.png new file mode 100644 index 00000000..b1119433 --- /dev/null +++ b/assets/minecraft/textures/trims/color_palettes/resin.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45b7dad5f876474a49ab0a9547cd31f3f693222e5f5eeb30d4d5ae26602e5ea7 +size 90 diff --git a/com/mojang/blaze3d/platform/GlConst.java b/com/mojang/blaze3d/platform/GlConst.java index afbde063..34d6bb33 100644 --- a/com/mojang/blaze3d/platform/GlConst.java +++ b/com/mojang/blaze3d/platform/GlConst.java @@ -34,6 +34,7 @@ public class GlConst { public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; public static final int GL_CLAMP_TO_EDGE = 33071; + public static final int GL_REPEAT = 10497; public static final int GL_FRONT = 1028; public static final int GL_FRONT_AND_BACK = 1032; public static final int GL_LINE = 6913; diff --git a/com/mojang/blaze3d/platform/NativeImage.java b/com/mojang/blaze3d/platform/NativeImage.java index eea76fde..543f2120 100644 --- a/com/mojang/blaze3d/platform/NativeImage.java +++ b/com/mojang/blaze3d/platform/NativeImage.java @@ -123,15 +123,34 @@ public final class NativeImage implements AutoCloseable { } public static NativeImage read(byte[] bytes) throws IOException { - NativeImage var3; - try (MemoryStack memoryStack = MemoryStack.stackPush()) { - ByteBuffer byteBuffer = memoryStack.malloc(bytes.length); - byteBuffer.put(bytes); - byteBuffer.rewind(); - var3 = read(byteBuffer); - } + MemoryStack memoryStack = MemoryStack.stackGet(); + int i = memoryStack.getPointer(); + if (i < bytes.length) { + ByteBuffer byteBuffer = MemoryUtil.memAlloc(bytes.length); - return var3; + NativeImage var13; + try { + var13 = putAndRead(byteBuffer, bytes); + } finally { + MemoryUtil.memFree(byteBuffer); + } + + return var13; + } else { + NativeImage var5; + try (MemoryStack memoryStack2 = MemoryStack.stackPush()) { + ByteBuffer byteBuffer2 = memoryStack2.malloc(bytes.length); + var5 = putAndRead(byteBuffer2, bytes); + } + + return var5; + } + } + + private static NativeImage putAndRead(ByteBuffer buffer, byte[] bytes) throws IOException { + buffer.put(bytes); + buffer.rewind(); + return read(buffer); } public static NativeImage read(@Nullable NativeImage.Format format, ByteBuffer textureData) throws IOException { @@ -161,17 +180,6 @@ public final class NativeImage implements AutoCloseable { } } - private static void setFilter(boolean linear, boolean mipmap) { - RenderSystem.assertOnRenderThreadOrInit(); - if (linear) { - GlStateManager._texParameter(3553, 10241, mipmap ? 9987 : 9729); - GlStateManager._texParameter(3553, 10240, 9729); - } else { - GlStateManager._texParameter(3553, 10241, mipmap ? 9986 : 9728); - GlStateManager._texParameter(3553, 10240, 9728); - } - } - private void checkAllocated() { if (this.pixels == 0L) { throw new IllegalStateException("Image is not allocated."); @@ -323,50 +331,21 @@ public final class NativeImage implements AutoCloseable { } public void upload(int level, int xOffset, int yOffset, boolean mipmap) { - this.upload(level, xOffset, yOffset, 0, 0, this.width, this.height, false, mipmap); + this.upload(level, xOffset, yOffset, 0, 0, this.width, this.height, mipmap); } - public void upload(int level, int xOffset, int yOffset, int unpackSkipPixels, int unpackSkipRows, int width, int height, boolean mipmap, boolean autoClose) { - this.upload(level, xOffset, yOffset, unpackSkipPixels, unpackSkipRows, width, height, false, false, mipmap, autoClose); - } - - public void upload( - int level, - int xOffset, - int yOffset, - int unpackSkipPixels, - int unpackSkipRows, - int width, - int height, - boolean blur, - boolean clamp, - boolean mipmap, - boolean autoClose - ) { + public void upload(int level, int xOffset, int yOffset, int unpackSkipPixels, int unpackSkipRows, int width, int height, boolean autoClose) { if (!RenderSystem.isOnRenderThreadOrInit()) { - RenderSystem.recordRenderCall(() -> this._upload(level, xOffset, yOffset, unpackSkipPixels, unpackSkipRows, width, height, blur, clamp, mipmap, autoClose)); + RenderSystem.recordRenderCall(() -> this._upload(level, xOffset, yOffset, unpackSkipPixels, unpackSkipRows, width, height, autoClose)); } else { - this._upload(level, xOffset, yOffset, unpackSkipPixels, unpackSkipRows, width, height, blur, clamp, mipmap, autoClose); + this._upload(level, xOffset, yOffset, unpackSkipPixels, unpackSkipRows, width, height, autoClose); } } - private void _upload( - int level, - int xOffset, - int yOffset, - int unpackSkipPixels, - int unpackSkipRows, - int width, - int height, - boolean blur, - boolean clamp, - boolean mipmap, - boolean autoClose - ) { + private void _upload(int level, int xOffset, int yOffset, int unpackSkipPixels, int unpackSkipRows, int width, int height, boolean autoClose) { try { RenderSystem.assertOnRenderThreadOrInit(); this.checkAllocated(); - setFilter(blur, mipmap); if (width == this.getWidth()) { GlStateManager._pixelStore(3314, 0); } else { @@ -377,10 +356,6 @@ public final class NativeImage implements AutoCloseable { GlStateManager._pixelStore(3315, unpackSkipRows); this.format.setUnpackPixelStoreState(); GlStateManager._texSubImage2D(3553, level, xOffset, yOffset, width, height, this.format.glFormat(), 5121, this.pixels); - if (clamp) { - GlStateManager._texParameter(3553, 10242, 33071); - GlStateManager._texParameter(3553, 10243, 33071); - } } finally { if (autoClose) { this.close(); diff --git a/com/mojang/blaze3d/platform/Window.java b/com/mojang/blaze3d/platform/Window.java index ea58729a..84ab6fb3 100644 --- a/com/mojang/blaze3d/platform/Window.java +++ b/com/mojang/blaze3d/platform/Window.java @@ -62,6 +62,7 @@ public final class Window implements AutoCloseable { private boolean dirty; private boolean vsync; private boolean iconified; + private boolean minimized; public Window( WindowEventHandler eventHandler, ScreenManager screenManager, DisplayData displayData, @Nullable String preferredFullscreenVideoMode, String title @@ -245,6 +246,7 @@ public final class Window implements AutoCloseable { int i = this.getWidth(); int j = this.getHeight(); if (framebufferWidth != 0 && framebufferHeight != 0) { + this.minimized = false; this.framebufferWidth = framebufferWidth; this.framebufferHeight = framebufferHeight; if (this.getWidth() != i || this.getHeight() != j) { @@ -258,6 +260,8 @@ public final class Window implements AutoCloseable { throw new ReportedException(crashReport); } } + } else { + this.minimized = true; } } } @@ -491,6 +495,10 @@ public final class Window implements AutoCloseable { } } + public boolean isMinimized() { + return this.minimized; + } + @Environment(EnvType.CLIENT) public static class WindowInitFailed extends SilentInitException { WindowInitFailed(String string) { diff --git a/com/mojang/blaze3d/systems/RenderSystem.java b/com/mojang/blaze3d/systems/RenderSystem.java index dca18030..970d0be8 100644 --- a/com/mojang/blaze3d/systems/RenderSystem.java +++ b/com/mojang/blaze3d/systems/RenderSystem.java @@ -10,9 +10,13 @@ import com.mojang.blaze3d.buffers.GpuBuffer; import com.mojang.blaze3d.pipeline.RenderCall; import com.mojang.blaze3d.platform.GLX; import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.platform.GlStateManager.DestFactor; +import com.mojang.blaze3d.platform.GlStateManager.LogicOp; +import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; import com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer.IndexGenerator; import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormat.IndexType; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import com.mojang.logging.LogUtils; import java.nio.ByteBuffer; import java.nio.FloatBuffer; @@ -207,7 +211,7 @@ public class RenderSystem { GlStateManager._disableBlend(); } - public static void blendFunc(GlStateManager.SourceFactor sourceFactor, GlStateManager.DestFactor destFactor) { + public static void blendFunc(SourceFactor sourceFactor, DestFactor destFactor) { assertOnRenderThread(); GlStateManager._blendFunc(sourceFactor.value, destFactor.value); } @@ -217,12 +221,7 @@ public class RenderSystem { GlStateManager._blendFunc(i, j); } - public static void blendFuncSeparate( - GlStateManager.SourceFactor sourceFactor, - GlStateManager.DestFactor destFactor, - GlStateManager.SourceFactor sourceFactor2, - GlStateManager.DestFactor destFactor2 - ) { + public static void blendFuncSeparate(SourceFactor sourceFactor, DestFactor destFactor, SourceFactor sourceFactor2, DestFactor destFactor2) { assertOnRenderThread(); GlStateManager._blendFuncSeparate(sourceFactor.value, destFactor.value, sourceFactor2.value, destFactor2.value); } @@ -277,7 +276,7 @@ public class RenderSystem { GlStateManager._disableColorLogicOp(); } - public static void logicOp(GlStateManager.LogicOp logicOp) { + public static void logicOp(LogicOp logicOp) { assertOnRenderThread(); GlStateManager._logicOp(logicOp.value); } @@ -619,13 +618,7 @@ public class RenderSystem { } public static void defaultBlendFunc() { - blendFuncSeparate( - GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO - ); - } - - public static void overlayBlendFunc() { - blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + blendFuncSeparate(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ZERO); } @Nullable @@ -721,7 +714,7 @@ public class RenderSystem { return textureMatrix; } - public static RenderSystem.AutoStorageIndexBuffer getSequentialBuffer(VertexFormat.Mode mode) { + public static RenderSystem.AutoStorageIndexBuffer getSequentialBuffer(Mode mode) { assertOnRenderThread(); return switch (mode) { @@ -753,7 +746,7 @@ public class RenderSystem { private final IndexGenerator generator; @Nullable private GpuBuffer buffer; - private VertexFormat.IndexType type = VertexFormat.IndexType.SHORT; + private IndexType type = IndexType.SHORT; private int indexCount; AutoStorageIndexBuffer(int vertexStride, int indexStride, IndexGenerator generator) { @@ -781,7 +774,7 @@ public class RenderSystem { RenderSystem.LOGGER.debug("Growing IndexBuffer: Old limit {}, new limit {}.", this.indexCount, neededIndexCount); int i = neededIndexCount / this.indexStride; int j = i * this.vertexStride; - VertexFormat.IndexType indexType = VertexFormat.IndexType.least(j); + IndexType indexType = IndexType.least(j); int k = Mth.roundToward(neededIndexCount * indexType.bytes, 4); ByteBuffer byteBuffer = MemoryUtil.memAlloc(k); @@ -814,7 +807,7 @@ public class RenderSystem { } } - public VertexFormat.IndexType type() { + public IndexType type() { return this.type; } } diff --git a/com/mojang/blaze3d/vertex/BufferBuilder.java b/com/mojang/blaze3d/vertex/BufferBuilder.java index 805dbf09..9b68680e 100644 --- a/com/mojang/blaze3d/vertex/BufferBuilder.java +++ b/com/mojang/blaze3d/vertex/BufferBuilder.java @@ -2,6 +2,8 @@ package com.mojang.blaze3d.vertex; import com.mojang.blaze3d.vertex.ByteBufferBuilder.Result; import com.mojang.blaze3d.vertex.MeshData.DrawState; +import com.mojang.blaze3d.vertex.VertexFormat.IndexType; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import java.nio.ByteOrder; import java.util.stream.Collectors; import net.fabricmc.api.EnvType; @@ -20,7 +22,7 @@ public class BufferBuilder implements VertexConsumer { private long vertexPointer = -1L; private int vertices; private final VertexFormat format; - private final VertexFormat.Mode mode; + private final Mode mode; private final boolean fastFormat; private final boolean fullFormat; private final int vertexSize; @@ -29,7 +31,7 @@ public class BufferBuilder implements VertexConsumer { private int elementsToFill; private boolean building = true; - public BufferBuilder(ByteBufferBuilder buffer, VertexFormat.Mode mode, VertexFormat format) { + public BufferBuilder(ByteBufferBuilder buffer, Mode mode, VertexFormat format) { if (!format.contains(VertexFormatElement.POSITION)) { throw new IllegalArgumentException("Cannot build mesh with no position element"); } else { @@ -81,7 +83,7 @@ public class BufferBuilder implements VertexConsumer { return null; } else { int i = this.mode.indexCount(this.vertices); - VertexFormat.IndexType indexType = VertexFormat.IndexType.least(this.vertices); + IndexType indexType = IndexType.least(this.vertices); return new MeshData(result, new DrawState(this.format, this.vertices, i, this.mode, indexType)); } } @@ -118,7 +120,7 @@ public class BufferBuilder implements VertexConsumer { String string = (String)VertexFormatElement.elementsFromMask(this.elementsToFill).map(this.format::getElementName).collect(Collectors.joining(", ")); throw new IllegalStateException("Missing elements in vertex: " + string); } else { - if (this.mode == VertexFormat.Mode.LINES || this.mode == VertexFormat.Mode.LINE_STRIP) { + if (this.mode == Mode.LINES || this.mode == Mode.LINE_STRIP) { long l = this.buffer.reserve(this.vertexSize); MemoryUtil.memCopy(l - this.vertexSize, l, this.vertexSize); this.vertices++; diff --git a/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java b/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java index 56a18b92..cf49a6f1 100644 --- a/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java +++ b/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java @@ -1,5 +1,6 @@ package com.mojang.blaze3d.vertex; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.Direction; @@ -19,7 +20,7 @@ public class SheetedDecalTextureGenerator implements VertexConsumer { private float y; private float z; - public SheetedDecalTextureGenerator(VertexConsumer delegate, PoseStack.Pose pose, float textureScale) { + public SheetedDecalTextureGenerator(VertexConsumer delegate, Pose pose, float textureScale) { this.delegate = delegate; this.cameraInversePose = new Matrix4f(pose.pose()).invert(); this.normalInversePose = new Matrix3f(pose.normal()).invert(); diff --git a/com/mojang/blaze3d/vertex/VertexBuffer.java b/com/mojang/blaze3d/vertex/VertexBuffer.java index b305a3f7..b6573a7c 100644 --- a/com/mojang/blaze3d/vertex/VertexBuffer.java +++ b/com/mojang/blaze3d/vertex/VertexBuffer.java @@ -5,14 +5,17 @@ import com.mojang.blaze3d.buffers.BufferUsage; import com.mojang.blaze3d.buffers.GpuBuffer; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer; import com.mojang.blaze3d.vertex.ByteBufferBuilder.Result; import com.mojang.blaze3d.vertex.MeshData.DrawState; +import com.mojang.blaze3d.vertex.VertexFormat.IndexType; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import java.nio.ByteBuffer; +import java.util.function.Consumer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.CompiledShaderProgram; +import net.minecraft.client.renderer.RenderType; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; @@ -26,10 +29,10 @@ public class VertexBuffer implements AutoCloseable { @Nullable private VertexFormat format; @Nullable - private AutoStorageIndexBuffer sequentialIndices; - private VertexFormat.IndexType indexType; + private RenderSystem.AutoStorageIndexBuffer sequentialIndices; + private IndexType indexType; private int indexCount; - private VertexFormat.Mode mode; + private Mode mode; public VertexBuffer(BufferUsage usage) { this.usage = usage; @@ -38,6 +41,16 @@ public class VertexBuffer implements AutoCloseable { this.arrayObjectId = GlStateManager._glGenVertexArrays(); } + public static VertexBuffer uploadStatic(Mode mode, VertexFormat format, Consumer builder) { + BufferBuilder bufferBuilder = Tesselator.getInstance().begin(mode, format); + builder.accept(bufferBuilder); + VertexBuffer vertexBuffer = new VertexBuffer(BufferUsage.STATIC_WRITE); + vertexBuffer.bind(); + vertexBuffer.upload(bufferBuilder.buildOrThrow()); + unbind(); + return vertexBuffer; + } + public void upload(MeshData meshData) { MeshData var2 = meshData; @@ -143,7 +156,7 @@ public class VertexBuffer implements AutoCloseable { } @Nullable - private AutoStorageIndexBuffer uploadIndexBuffer(DrawState drawState, @Nullable ByteBuffer buffer) { + private RenderSystem.AutoStorageIndexBuffer uploadIndexBuffer(DrawState drawState, @Nullable ByteBuffer buffer) { if (buffer != null) { if (this.indexBuffer != null) { this.indexBuffer.close(); @@ -152,7 +165,7 @@ public class VertexBuffer implements AutoCloseable { this.indexBuffer = new GpuBuffer(BufferType.INDICES, this.usage, buffer); return null; } else { - AutoStorageIndexBuffer autoStorageIndexBuffer = RenderSystem.getSequentialBuffer(drawState.mode()); + RenderSystem.AutoStorageIndexBuffer autoStorageIndexBuffer = RenderSystem.getSequentialBuffer(drawState.mode()); if (autoStorageIndexBuffer != this.sequentialIndices || !autoStorageIndexBuffer.hasStorage(drawState.indexCount())) { autoStorageIndexBuffer.bind(drawState.indexCount()); } @@ -175,8 +188,8 @@ public class VertexBuffer implements AutoCloseable { RenderSystem.drawElements(this.mode.asGLMode, this.indexCount, this.getIndexType().asGLType); } - private VertexFormat.IndexType getIndexType() { - AutoStorageIndexBuffer autoStorageIndexBuffer = this.sequentialIndices; + private IndexType getIndexType() { + RenderSystem.AutoStorageIndexBuffer autoStorageIndexBuffer = this.sequentialIndices; return autoStorageIndexBuffer != null ? autoStorageIndexBuffer.type() : this.indexType; } @@ -190,6 +203,14 @@ public class VertexBuffer implements AutoCloseable { } } + public void drawWithRenderType(RenderType renderType) { + renderType.setupRenderState(); + this.bind(); + this.drawWithShader(RenderSystem.getModelViewMatrix(), RenderSystem.getProjectionMatrix(), RenderSystem.getShader()); + unbind(); + renderType.clearRenderState(); + } + public void close() { this.vertexBuffer.close(); if (this.indexBuffer != null) { diff --git a/com/mojang/blaze3d/vertex/VertexConsumer.java b/com/mojang/blaze3d/vertex/VertexConsumer.java index e2d47d5d..69363e5f 100644 --- a/com/mojang/blaze3d/vertex/VertexConsumer.java +++ b/com/mojang/blaze3d/vertex/VertexConsumer.java @@ -1,5 +1,6 @@ package com.mojang.blaze3d.vertex; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import java.nio.ByteBuffer; import java.nio.IntBuffer; import net.fabricmc.api.EnvType; @@ -55,7 +56,7 @@ public interface VertexConsumer { return this.setUv1(packedOverlay & 65535, packedOverlay >> 16 & 65535); } - default void putBulkData(PoseStack.Pose pose, BakedQuad quad, float red, float green, float blue, float alpha, int packedLight, int packedOverlay) { + default void putBulkData(Pose pose, BakedQuad quad, float red, float green, float blue, float alpha, int packedLight, int packedOverlay) { this.putBulkData( pose, quad, @@ -71,16 +72,7 @@ public interface VertexConsumer { } default void putBulkData( - PoseStack.Pose pose, - BakedQuad quad, - float[] brightness, - float red, - float green, - float blue, - float alpha, - int[] lightmap, - int packedOverlay, - boolean readAlpha + Pose pose, BakedQuad quad, float[] brightness, float red, float green, float blue, float alpha, int[] lightmap, int packedOverlay, boolean readExistingColor ) { int[] is = quad.getVertices(); Vec3i vec3i = quad.getDirection().getUnitVec3i(); @@ -104,7 +96,7 @@ public interface VertexConsumer { float q; float r; float s; - if (readAlpha) { + if (readExistingColor) { float n = byteBuffer.get(12) & 255; float o = byteBuffer.get(13) & 255; float p = byteBuffer.get(14) & 255; @@ -131,11 +123,11 @@ public interface VertexConsumer { return this.addVertex(pos.x(), pos.y(), pos.z()); } - default VertexConsumer addVertex(PoseStack.Pose pose, Vector3f pos) { + default VertexConsumer addVertex(Pose pose, Vector3f pos) { return this.addVertex(pose, pos.x(), pos.y(), pos.z()); } - default VertexConsumer addVertex(PoseStack.Pose pose, float x, float y, float z) { + default VertexConsumer addVertex(Pose pose, float x, float y, float z) { return this.addVertex(pose.pose(), x, y, z); } @@ -144,12 +136,12 @@ public interface VertexConsumer { return this.addVertex(vector3f.x(), vector3f.y(), vector3f.z()); } - default VertexConsumer setNormal(PoseStack.Pose pose, float normalX, float normalY, float normalZ) { + default VertexConsumer setNormal(Pose pose, float normalX, float normalY, float normalZ) { Vector3f vector3f = pose.transformNormal(normalX, normalY, normalZ, new Vector3f()); return this.setNormal(vector3f.x(), vector3f.y(), vector3f.z()); } - default VertexConsumer setNormal(PoseStack.Pose pose, Vector3f normalVector) { + default VertexConsumer setNormal(Pose pose, Vector3f normalVector) { return this.setNormal(pose, normalVector.x(), normalVector.y(), normalVector.z()); } } diff --git a/com/mojang/math/MatrixUtil.java b/com/mojang/math/MatrixUtil.java index 0264a71c..4766d9b0 100644 --- a/com/mojang/math/MatrixUtil.java +++ b/com/mojang/math/MatrixUtil.java @@ -147,6 +147,10 @@ public class MatrixUtil { return Triple.of(quaternionf2, vector3f, quaternionf.conjugate()); } + public static boolean isIdentity(Matrix4f matrix) { + return (matrix.properties() & 4) != 0; + } + public static boolean isPureTranslation(Matrix4f matrix) { return (matrix.properties() & 8) != 0; } diff --git a/com/mojang/realmsclient/RealmsMainScreen.java b/com/mojang/realmsclient/RealmsMainScreen.java index 49dcb57c..443707e2 100644 --- a/com/mojang/realmsclient/RealmsMainScreen.java +++ b/com/mojang/realmsclient/RealmsMainScreen.java @@ -15,6 +15,7 @@ import com.mojang.realmsclient.dto.RealmsServerPlayerLists; import com.mojang.realmsclient.dto.RegionPingResult; import com.mojang.realmsclient.dto.RealmsNotification.InfoPopup; import com.mojang.realmsclient.dto.RealmsNotification.VisitUrl; +import com.mojang.realmsclient.dto.RealmsServer.State; import com.mojang.realmsclient.exception.RealmsServiceException; import com.mojang.realmsclient.gui.RealmsDataFetcher; import com.mojang.realmsclient.gui.RealmsServerList; @@ -63,8 +64,6 @@ import net.minecraft.client.gui.components.PopupScreen; import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.components.WidgetSprites; import net.minecraft.client.gui.components.WidgetTooltipHolder; -import net.minecraft.client.gui.components.Button.OnPress; -import net.minecraft.client.gui.components.PopupScreen.Builder; import net.minecraft.client.gui.components.SpriteIconButton.CenteredIcon; import net.minecraft.client.gui.layouts.FrameLayout; import net.minecraft.client.gui.layouts.GridLayout; @@ -78,7 +77,7 @@ import net.minecraft.client.gui.navigation.CommonInputs; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.gui.screens.ConfirmLinkScreen; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.tooltip.ClientActivePlayersTooltip; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientActivePlayersTooltip.ActivePlayersTooltip; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.CommonComponents; @@ -206,7 +205,7 @@ public class RealmsMainScreen extends RealmsScreen { this.leaveButton = Button.builder(LEAVE_SERVER_TEXT, button -> this.leaveClicked(this.getSelectedServer())).width(100).build(); this.addRealmButton = Button.builder(Component.translatable("mco.selectServer.purchase"), button -> this.openTrialAvailablePopup()).size(100, 20).build(); this.backButton = Button.builder(CommonComponents.GUI_BACK, button -> this.onClose()).width(100).build(); - if (RealmsClient.ENVIRONMENT == RealmsClient.Environment.STAGE) { + if (RealmsClient.ENVIRONMENT == com.mojang.realmsclient.client.RealmsClient.Environment.STAGE) { this.addRenderableWidget( CycleButton.booleanBuilder(Component.literal("Snapshot"), Component.literal("Release")) .create(5, 5, 100, 20, Component.literal("Realm"), (cycleButton, boolean_) -> { @@ -339,7 +338,7 @@ public class RealmsMainScreen extends RealmsScreen { } boolean shouldPlayButtonBeActive(RealmsServer realmsServer) { - boolean bl = !realmsServer.expired && realmsServer.state == RealmsServer.State.OPEN; + boolean bl = !realmsServer.expired && realmsServer.state == State.OPEN; return bl && (realmsServer.isCompatible() || realmsServer.needsUpgrade() || isSelfOwnedServer(realmsServer)); } @@ -348,7 +347,7 @@ public class RealmsMainScreen extends RealmsScreen { } private boolean shouldConfigureButtonBeActive(RealmsServer realmsServer) { - return isSelfOwnedServer(realmsServer) && realmsServer.state != RealmsServer.State.UNINITIALIZED; + return isSelfOwnedServer(realmsServer) && realmsServer.state != State.UNINITIALIZED; } private boolean shouldLeaveButtonBeActive(RealmsServer realmsServer) { @@ -630,7 +629,7 @@ public class RealmsMainScreen extends RealmsScreen { case INCOMPATIBLE: Minecraft.getInstance() .setScreen( - new Builder(lastScreen, INCOMPATIBLE_POPUP_TITLE) + new PopupScreen.Builder(lastScreen, INCOMPATIBLE_POPUP_TITLE) .setMessage( Component.translatable( "mco.compatibility.incompatible.series.popup.message", @@ -645,7 +644,7 @@ public class RealmsMainScreen extends RealmsScreen { case RELEASE_TYPE_INCOMPATIBLE: Minecraft.getInstance() .setScreen( - new Builder(lastScreen, INCOMPATIBLE_POPUP_TITLE) + new PopupScreen.Builder(lastScreen, INCOMPATIBLE_POPUP_TITLE) .setMessage(INCOMPATIBLE_RELEASE_TYPE_POPUP_MESSAGE) .addButton(CommonComponents.GUI_BACK, PopupScreen::onClose) .build() @@ -655,7 +654,7 @@ public class RealmsMainScreen extends RealmsScreen { } private static void confirmToPlay(RealmsServer realmsServer, Screen lastScreen, Component title, Component message, Component confirmButton) { - Minecraft.getInstance().setScreen(new Builder(lastScreen, title).setMessage(message).addButton(confirmButton, popupScreen -> { + Minecraft.getInstance().setScreen(new PopupScreen.Builder(lastScreen, title).setMessage(message).addButton(confirmButton, popupScreen -> { Minecraft.getInstance().setScreen(new RealmsLongRunningMcoTaskScreen(lastScreen, new GetServerDetailsTask(lastScreen, realmsServer))); refreshServerList(); }).addButton(CommonComponents.GUI_CANCEL, PopupScreen::onClose).build()); @@ -697,7 +696,7 @@ public class RealmsMainScreen extends RealmsScreen { guiGraphics.pose().translate((float)(this.width / 2 - 25), 20.0F, 0.0F); guiGraphics.pose().mulPose(Axis.ZP.rotationDegrees(-20.0F)); guiGraphics.pose().scale(1.5F, 1.5F, 1.5F); - guiGraphics.drawString(this.font, text, 0, 0, color, false); + guiGraphics.drawString(this.font, text, 0, 0, color); guiGraphics.pose().popPose(); } @@ -738,7 +737,7 @@ public class RealmsMainScreen extends RealmsScreen { public boolean keyPressed(int keyCode, int scanCode, int modifiers) { if (CommonInputs.selected(keyCode)) { this.addSnapshotRealm(); - return true; + return false; } else { return super.keyPressed(keyCode, scanCode, modifiers); } @@ -748,7 +747,7 @@ public class RealmsMainScreen extends RealmsScreen { RealmsMainScreen.this.minecraft.getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F)); RealmsMainScreen.this.minecraft .setScreen( - new Builder(RealmsMainScreen.this, Component.translatable("mco.snapshot.createSnapshotPopup.title")) + new PopupScreen.Builder(RealmsMainScreen.this, Component.translatable("mco.snapshot.createSnapshotPopup.title")) .setMessage(Component.translatable("mco.snapshot.createSnapshotPopup.text")) .addButton( Component.translatable("mco.selectServer.create"), @@ -813,7 +812,7 @@ public class RealmsMainScreen extends RealmsScreen { ResourceLocation.withDefaultNamespace("widget/cross_button"), ResourceLocation.withDefaultNamespace("widget/cross_button_highlighted") ); - protected CrossButton(OnPress onPress, Component message) { + protected CrossButton(Button.OnPress onPress, Component message) { super(0, 0, 14, 14, SPRITES, onPress); this.setTooltip(Tooltip.create(message)); } @@ -843,7 +842,7 @@ public class RealmsMainScreen extends RealmsScreen { int j = y + 2; if (realmsServer.expired) { this.drawRealmStatus(guiGraphics, i, j, mouseX, mouseY, RealmsMainScreen.EXPIRED_SPRITE, () -> RealmsMainScreen.SERVER_EXPIRED_TOOLTIP); - } else if (realmsServer.state == RealmsServer.State.CLOSED) { + } else if (realmsServer.state == State.CLOSED) { this.drawRealmStatus(guiGraphics, i, j, mouseX, mouseY, RealmsMainScreen.CLOSED_SPRITE, () -> RealmsMainScreen.SERVER_CLOSED_TOOLTIP); } else if (RealmsMainScreen.isSelfOwnedServer(realmsServer) && realmsServer.daysLeft < 7) { this.drawRealmStatus( @@ -863,7 +862,7 @@ public class RealmsMainScreen extends RealmsScreen { } } ); - } else if (realmsServer.state == RealmsServer.State.OPEN) { + } else if (realmsServer.state == State.OPEN) { this.drawRealmStatus(guiGraphics, i, j, mouseX, mouseY, RealmsMainScreen.OPEN_SPRITE, () -> RealmsMainScreen.SERVER_OPEN_TOOLTIP); } } @@ -882,10 +881,10 @@ public class RealmsMainScreen extends RealmsScreen { int j = this.firstLineY(top); int k = this.thirdLineY(j); if (!RealmsMainScreen.isSelfOwnedServer(server)) { - guiGraphics.drawString(RealmsMainScreen.this.font, server.owner, i, this.thirdLineY(j), -8355712, false); + guiGraphics.drawString(RealmsMainScreen.this.font, server.owner, i, this.thirdLineY(j), -8355712); } else if (server.expired) { Component component = server.expiredTrial ? RealmsMainScreen.TRIAL_EXPIRED_TEXT : RealmsMainScreen.SUBSCRIPTION_EXPIRED_TEXT; - guiGraphics.drawString(RealmsMainScreen.this.font, component, i, k, -2142128, false); + guiGraphics.drawString(RealmsMainScreen.this.font, component, i, k, -2142128); } } @@ -894,9 +893,9 @@ public class RealmsMainScreen extends RealmsScreen { int i = maxX - minX; if (RealmsMainScreen.this.font.width(text) > i) { String string = RealmsMainScreen.this.font.plainSubstrByWidth(text, i - RealmsMainScreen.this.font.width("... ")); - guiGraphics.drawString(RealmsMainScreen.this.font, string + "...", minX, y, color, false); + guiGraphics.drawString(RealmsMainScreen.this.font, string + "...", minX, y, color); } else { - guiGraphics.drawString(RealmsMainScreen.this.font, text, minX, y, color, false); + guiGraphics.drawString(RealmsMainScreen.this.font, text, minX, y, color); } } } @@ -916,7 +915,7 @@ public class RealmsMainScreen extends RealmsScreen { if (GameType.isValidId(i)) { Component component = RealmsMainScreen.getGameModeComponent(i, bl); j = this.gameModeTextX(left, width, component); - guiGraphics.drawString(RealmsMainScreen.this.font, component, j, this.secondLineY(firstLineY), -8355712, false); + guiGraphics.drawString(RealmsMainScreen.this.font, component, j, this.secondLineY(firstLineY), -8355712); } if (bl) { @@ -970,7 +969,7 @@ public class RealmsMainScreen extends RealmsScreen { private static final int SPRITE_SIZE = 14; private int notificationCount; - public NotificationButton(Component message, ResourceLocation sprite, OnPress onPress) { + public NotificationButton(Component message, ResourceLocation sprite, Button.OnPress onPress) { super(20, 20, message, 14, 14, sprite, onPress, null); } @@ -1112,7 +1111,7 @@ public class RealmsMainScreen extends RealmsScreen { int k = this.versionTextX(left, width, component); this.renderClampedString(guiGraphics, this.server.getName(), i, j, k, -8355712); if (component != CommonComponents.EMPTY) { - guiGraphics.drawString(RealmsMainScreen.this.font, component, k, j, -8355712, false); + guiGraphics.drawString(RealmsMainScreen.this.font, component, k, j, -8355712); } int l = left; @@ -1138,8 +1137,8 @@ public class RealmsMainScreen extends RealmsScreen { super(Minecraft.getInstance(), RealmsMainScreen.this.width, RealmsMainScreen.this.height, 0, 36); } - public void setSelected(@Nullable RealmsMainScreen.Entry selected) { - super.setSelected(selected); + public void setSelected(@Nullable RealmsMainScreen.Entry entry) { + super.setSelected(entry); RealmsMainScreen.this.updateButtonStates(); } @@ -1170,7 +1169,7 @@ public class RealmsMainScreen extends RealmsScreen { for (RealmsServer realmsServer : RealmsMainScreen.this.serverList) { RealmsMainScreen.Entry entry; if (RealmsMainScreen.isSnapshot() && !realmsServer.isSnapshotRealm()) { - if (realmsServer.state == RealmsServer.State.UNINITIALIZED) { + if (realmsServer.state == State.UNINITIALIZED) { continue; } @@ -1225,7 +1224,7 @@ public class RealmsMainScreen extends RealmsScreen { @Override public void render(GuiGraphics guiGraphics, int index, int top, int left, int width, int height, int mouseX, int mouseY, boolean hovering, float partialTick) { - if (this.serverData.state == RealmsServer.State.UNINITIALIZED) { + if (this.serverData.state == State.UNINITIALIZED) { guiGraphics.blitSprite(RenderType::guiTextured, RealmsMainScreen.NEW_REALM_SPRITE, left - 5, top + height / 2 - 10, 40, 20); int i = top + height / 2 - 9 / 2; guiGraphics.drawString(RealmsMainScreen.this.font, RealmsMainScreen.SERVER_UNITIALIZED_TEXT, left + 40 - 2, i, 8388479); @@ -1250,7 +1249,7 @@ public class RealmsMainScreen extends RealmsScreen { int k = this.versionTextX(left, width, component); this.renderClampedString(guiGraphics, this.serverData.getName(), i, j, k, -1); if (component != CommonComponents.EMPTY && !this.serverData.isMinigameActive()) { - guiGraphics.drawString(RealmsMainScreen.this.font, component, k, j, -8355712, false); + guiGraphics.drawString(RealmsMainScreen.this.font, component, k, j, -8355712); } } @@ -1262,7 +1261,7 @@ public class RealmsMainScreen extends RealmsScreen { boolean bl = this.serverData.isMinigameActive(); if (bl && string != null) { Component component = Component.literal(string).withStyle(ChatFormatting.GRAY); - guiGraphics.drawString(RealmsMainScreen.this.font, Component.translatable("mco.selectServer.minigameName", component).withColor(-171), i, k, -1, false); + guiGraphics.drawString(RealmsMainScreen.this.font, Component.translatable("mco.selectServer.minigameName", component).withColor(-171), i, k, -1); } else { int l = this.renderGameMode(this.serverData, guiGraphics, left, width, j); this.renderClampedString(guiGraphics, this.serverData.getDescription(), i, this.secondLineY(j), l, -8355712); @@ -1282,13 +1281,7 @@ public class RealmsMainScreen extends RealmsScreen { } if (mouseX >= k && mouseX <= i && mouseY >= j && mouseY <= j + 9) { - guiGraphics.renderTooltip( - RealmsMainScreen.this.font, - List.of(ONLINE_PLAYERS_TOOLTIP_HEADER), - Optional.of(new ClientActivePlayersTooltip.ActivePlayersTooltip(list)), - mouseX, - mouseY - ); + guiGraphics.renderTooltip(RealmsMainScreen.this.font, List.of(ONLINE_PLAYERS_TOOLTIP_HEADER), Optional.of(new ActivePlayersTooltip(list)), mouseX, mouseY); return true; } } @@ -1309,7 +1302,7 @@ public class RealmsMainScreen extends RealmsScreen { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (this.serverData.state == RealmsServer.State.UNINITIALIZED) { + if (this.serverData.state == State.UNINITIALIZED) { this.createUnitializedRealm(); } else if (RealmsMainScreen.this.shouldPlayButtonBeActive(this.serverData)) { if (Util.getMillis() - RealmsMainScreen.this.lastClickTime < 250L && this.isFocused()) { @@ -1325,7 +1318,7 @@ public class RealmsMainScreen extends RealmsScreen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { if (CommonInputs.selected(keyCode)) { - if (this.serverData.state == RealmsServer.State.UNINITIALIZED) { + if (this.serverData.state == State.UNINITIALIZED) { this.createUnitializedRealm(); return true; } @@ -1341,7 +1334,7 @@ public class RealmsMainScreen extends RealmsScreen { @Override public Component getNarration() { - return (Component)(this.serverData.state == RealmsServer.State.UNINITIALIZED + return (Component)(this.serverData.state == State.UNINITIALIZED ? RealmsMainScreen.UNITIALIZED_WORLD_NARRATION : Component.translatable("narrator.select", Objects.requireNonNullElse(this.serverData.name, "unknown server"))); } diff --git a/com/mojang/realmsclient/gui/screens/AddRealmPopupScreen.java b/com/mojang/realmsclient/gui/screens/AddRealmPopupScreen.java index 20972e8a..e323d6da 100644 --- a/com/mojang/realmsclient/gui/screens/AddRealmPopupScreen.java +++ b/com/mojang/realmsclient/gui/screens/AddRealmPopupScreen.java @@ -89,7 +89,7 @@ public class AddRealmPopupScreen extends RealmsScreen { this.right() - 10 - 100, this.top() + 10, 100, i, POPUP_TEXT, this.font ); if (fittingMultiLineTextWidget.showingScrollBar()) { - fittingMultiLineTextWidget.setWidth(100 - fittingMultiLineTextWidget.scrollbarWidth()); + fittingMultiLineTextWidget.setWidth(94); } this.addRenderableWidget(fittingMultiLineTextWidget); diff --git a/com/mojang/realmsclient/gui/screens/RealmsBackupScreen.java b/com/mojang/realmsclient/gui/screens/RealmsBackupScreen.java index 6ce0aa22..76c1ad42 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsBackupScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsBackupScreen.java @@ -80,12 +80,7 @@ public class RealmsBackupScreen extends RealmsScreen { super.render(guiGraphics, mouseX, mouseY, partialTick); if (this.noBackups && this.backupList != null) { guiGraphics.drawString( - this.font, - NO_BACKUPS_LABEL, - this.width / 2 - this.font.width(NO_BACKUPS_LABEL) / 2, - this.backupList.getY() + this.backupList.getHeight() / 2 - 9 / 2, - -1, - false + this.font, NO_BACKUPS_LABEL, this.width / 2 - this.font.width(NO_BACKUPS_LABEL) / 2, this.backupList.getY() + this.backupList.getHeight() / 2 - 9 / 2, -1 ); } } @@ -286,10 +281,9 @@ public class RealmsBackupScreen extends RealmsScreen { Component.translatable("mco.backup.entry", RealmsUtil.convertToAgePresentationFromInstant(this.backup.lastModifiedDate)), left, j, - l, - false + l ); - guiGraphics.drawString(RealmsBackupScreen.this.font, this.getMediumDatePresentation(this.backup.lastModifiedDate), left, k, 5000268, false); + guiGraphics.drawString(RealmsBackupScreen.this.font, this.getMediumDatePresentation(this.backup.lastModifiedDate), left, k, 5000268); int m = 0; int n = top + height / 2 - 10; if (this.restoreButton != null) { diff --git a/com/mojang/realmsclient/gui/screens/RealmsBrokenWorldScreen.java b/com/mojang/realmsclient/gui/screens/RealmsBrokenWorldScreen.java index dc6eff97..b2e1adc6 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsBrokenWorldScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsBrokenWorldScreen.java @@ -7,6 +7,7 @@ import com.mojang.realmsclient.client.RealmsClient; import com.mojang.realmsclient.dto.RealmsServer; import com.mojang.realmsclient.dto.RealmsWorldOptions; import com.mojang.realmsclient.dto.WorldDownload; +import com.mojang.realmsclient.dto.RealmsServer.State; import com.mojang.realmsclient.exception.RealmsServiceException; import com.mojang.realmsclient.gui.RealmsWorldSlotButton; import com.mojang.realmsclient.util.RealmsTextureManager; @@ -179,7 +180,7 @@ public class RealmsBrokenWorldScreen extends RealmsScreen { new Thread( () -> { RealmsClient realmsClient = RealmsClient.create(); - if (this.serverData.state == RealmsServer.State.CLOSED) { + if (this.serverData.state == State.CLOSED) { this.minecraft .execute(() -> this.minecraft.setScreen(new RealmsLongRunningMcoTaskScreen(this, new OpenServerTask(this.serverData, this, true, this.minecraft)))); } else { diff --git a/com/mojang/realmsclient/gui/screens/RealmsConfigureWorldScreen.java b/com/mojang/realmsclient/gui/screens/RealmsConfigureWorldScreen.java index 4808453b..d6fbdefd 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsConfigureWorldScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsConfigureWorldScreen.java @@ -7,9 +7,11 @@ import com.mojang.realmsclient.client.RealmsClient; import com.mojang.realmsclient.dto.RealmsServer; import com.mojang.realmsclient.dto.RealmsWorldOptions; import com.mojang.realmsclient.dto.WorldTemplate; +import com.mojang.realmsclient.dto.RealmsServer.WorldType; import com.mojang.realmsclient.dto.WorldTemplate.WorldTemplateType; import com.mojang.realmsclient.exception.RealmsServiceException; import com.mojang.realmsclient.gui.RealmsWorldSlotButton; +import com.mojang.realmsclient.gui.RealmsWorldSlotButton.State; import com.mojang.realmsclient.util.task.CloseServerTask; import com.mojang.realmsclient.util.task.OpenServerTask; import com.mojang.realmsclient.util.task.SwitchMinigameTask; @@ -112,9 +114,7 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { Component.translatable("mco.configure.world.buttons.switchminigame"), button -> this.minecraft .setScreen( - new RealmsSelectWorldTemplateScreen( - Component.translatable("mco.template.title.minigame"), this::templateSelectionCallback, RealmsServer.WorldType.MINIGAME - ) + new RealmsSelectWorldTemplateScreen(Component.translatable("mco.template.title.minigame"), this::templateSelectionCallback, WorldType.MINIGAME) ) ) .bounds(this.leftButton(0), row(13) - 5, 100, 20) @@ -174,7 +174,7 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { int i = this.frame(index); int j = row(5) + 5; RealmsWorldSlotButton realmsWorldSlotButton = new RealmsWorldSlotButton(i, j, 80, 80, index, button -> { - RealmsWorldSlotButton.State state = ((RealmsWorldSlotButton)button).getState(); + State state = ((RealmsWorldSlotButton)button).getState(); if (state != null) { switch (state.action) { case NOTHING: @@ -221,7 +221,7 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { } else { String string = (String)Objects.requireNonNullElse(this.serverData.getName(), ""); int i = this.font.width(string); - int j = this.serverData.state == RealmsServer.State.CLOSED ? -6250336 : 8388479; + int j = this.serverData.state == com.mojang.realmsclient.dto.RealmsServer.State.CLOSED ? -6250336 : 8388479; int k = this.font.width(this.title); guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 12, -1); guiGraphics.drawCenteredString(this.font, string, this.width / 2, 24, j); @@ -230,7 +230,7 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { if (this.isMinigame()) { String string2 = this.serverData.getMinigameName(); if (string2 != null) { - guiGraphics.drawString(this.font, Component.translatable("mco.configure.world.minigame", string2), this.leftX + 80 + 20 + 10, row(13), -1, false); + guiGraphics.drawString(this.font, Component.translatable("mco.configure.world.minigame", string2), this.leftX + 80 + 20 + 10, row(13), -1); } } } @@ -286,7 +286,7 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { } private void joinRealm(RealmsServer server) { - if (this.serverData.state == RealmsServer.State.OPEN) { + if (this.serverData.state == com.mojang.realmsclient.dto.RealmsServer.State.OPEN) { RealmsMainScreen.play(server, this); } else { this.openTheWorld(true); @@ -295,7 +295,7 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { private void switchToMinigame() { RealmsSelectWorldTemplateScreen realmsSelectWorldTemplateScreen = new RealmsSelectWorldTemplateScreen( - Component.translatable("mco.template.title.minigame"), this::templateSelectionCallback, RealmsServer.WorldType.MINIGAME + Component.translatable("mco.template.title.minigame"), this::templateSelectionCallback, WorldType.MINIGAME ); realmsSelectWorldTemplateScreen.setWarning(Component.translatable("mco.minigame.world.info.line1"), Component.translatable("mco.minigame.world.info.line2")); this.minecraft.setScreen(realmsSelectWorldTemplateScreen); @@ -340,9 +340,9 @@ public class RealmsConfigureWorldScreen extends RealmsScreen { private void drawServerStatus(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { if (this.serverData.expired) { this.drawRealmStatus(guiGraphics, x, y, mouseX, mouseY, EXPIRED_SPRITE, () -> SERVER_EXPIRED_TOOLTIP); - } else if (this.serverData.state == RealmsServer.State.CLOSED) { + } else if (this.serverData.state == com.mojang.realmsclient.dto.RealmsServer.State.CLOSED) { this.drawRealmStatus(guiGraphics, x, y, mouseX, mouseY, CLOSED_SPRITE, () -> SERVER_CLOSED_TOOLTIP); - } else if (this.serverData.state == RealmsServer.State.OPEN) { + } else if (this.serverData.state == com.mojang.realmsclient.dto.RealmsServer.State.OPEN) { if (this.serverData.daysLeft < 7) { this.drawRealmStatus( guiGraphics, diff --git a/com/mojang/realmsclient/gui/screens/RealmsCreateRealmScreen.java b/com/mojang/realmsclient/gui/screens/RealmsCreateRealmScreen.java index c50217f4..85a52ad8 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsCreateRealmScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsCreateRealmScreen.java @@ -35,10 +35,10 @@ public class RealmsCreateRealmScreen extends RealmsScreen { private EditBox descriptionBox; private final Runnable createWorldRunnable; - public RealmsCreateRealmScreen(RealmsMainScreen lastScreen, RealmsServer server, boolean isSnapshor) { + public RealmsCreateRealmScreen(RealmsMainScreen lastScreen, RealmsServer server, boolean isSnapshot) { super(CREATE_REALM_TEXT); this.lastScreen = lastScreen; - this.createWorldRunnable = () -> this.createWorld(server, isSnapshor); + this.createWorldRunnable = () -> this.createWorld(server, isSnapshot); } @Override diff --git a/com/mojang/realmsclient/gui/screens/RealmsDownloadLatestWorldScreen.java b/com/mojang/realmsclient/gui/screens/RealmsDownloadLatestWorldScreen.java index c4987c6d..9ee9a828 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsDownloadLatestWorldScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsDownloadLatestWorldScreen.java @@ -159,7 +159,7 @@ public class RealmsDownloadLatestWorldScreen extends RealmsScreen { this.dotIndex++; } - guiGraphics.drawString(this.font, DOTS[this.dotIndex % DOTS.length], this.width / 2 + i / 2 + 5, 50, -1, false); + guiGraphics.drawString(this.font, DOTS[this.dotIndex % DOTS.length], this.width / 2 + i / 2 + 5, 50, -1); } private void drawProgressBar(GuiGraphics guiGraphics) { @@ -194,9 +194,7 @@ public class RealmsDownloadLatestWorldScreen extends RealmsScreen { private void drawDownloadSpeed0(GuiGraphics guiGraphics, long bytesPerSecond) { if (bytesPerSecond > 0L) { int i = this.font.width(this.progress); - guiGraphics.drawString( - this.font, Component.translatable("mco.download.speed", Unit.humanReadable(bytesPerSecond)), this.width / 2 + i / 2 + 15, 84, -1, false - ); + guiGraphics.drawString(this.font, Component.translatable("mco.download.speed", Unit.humanReadable(bytesPerSecond)), this.width / 2 + i / 2 + 15, 84, -1); } } diff --git a/com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen.java b/com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen.java index 1511eb4a..94c56d96 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen.java @@ -1,6 +1,7 @@ package com.mojang.realmsclient.gui.screens; import com.mojang.realmsclient.RealmsAvailability; +import com.mojang.realmsclient.RealmsAvailability.Type; import com.mojang.realmsclient.dto.RealmsNotification; import com.mojang.realmsclient.gui.RealmsDataFetcher; import com.mojang.realmsclient.gui.task.DataFetcher.Subscription; @@ -22,7 +23,7 @@ public class RealmsNotificationsScreen extends RealmsScreen { private static final ResourceLocation NEWS_SPRITE = ResourceLocation.withDefaultNamespace("icon/news"); private static final ResourceLocation INVITE_SPRITE = ResourceLocation.withDefaultNamespace("icon/invite"); private static final ResourceLocation TRIAL_AVAILABLE_SPRITE = ResourceLocation.withDefaultNamespace("icon/trial_available"); - private final CompletableFuture validClient = RealmsAvailability.get().thenApply(result -> result.type() == RealmsAvailability.Type.SUCCESS); + private final CompletableFuture validClient = RealmsAvailability.get().thenApply(result -> result.type() == Type.SUCCESS); @Nullable private Subscription realmsDataSubscription; @Nullable diff --git a/com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen.java b/com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen.java index ef2d5259..9d91a16e 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen.java @@ -160,11 +160,9 @@ public class RealmsPendingInvitesScreen extends RealmsScreen { } private void renderPendingInvitationItem(GuiGraphics guiGraphics, PendingInvite pendingInvite, int x, int y, int mouseX, int mouseY) { - guiGraphics.drawString(RealmsPendingInvitesScreen.this.font, pendingInvite.realmName, x + 38, y + 1, -1, false); - guiGraphics.drawString(RealmsPendingInvitesScreen.this.font, pendingInvite.realmOwnerName, x + 38, y + 12, 7105644, false); - guiGraphics.drawString( - RealmsPendingInvitesScreen.this.font, RealmsUtil.convertToAgePresentationFromInstant(pendingInvite.date), x + 38, y + 24, 7105644, false - ); + guiGraphics.drawString(RealmsPendingInvitesScreen.this.font, pendingInvite.realmName, x + 38, y + 1, -1); + guiGraphics.drawString(RealmsPendingInvitesScreen.this.font, pendingInvite.realmOwnerName, x + 38, y + 12, 7105644); + guiGraphics.drawString(RealmsPendingInvitesScreen.this.font, RealmsUtil.convertToAgePresentationFromInstant(pendingInvite.date), x + 38, y + 24, 7105644); RowButton.drawButtonsInRow(guiGraphics, this.rowButtons, RealmsPendingInvitesScreen.this.pendingInvitationSelectionList, x, y, mouseX, mouseY); RealmsUtil.renderPlayerFace(guiGraphics, x, y, 32, pendingInvite.realmOwnerUuid); } diff --git a/com/mojang/realmsclient/gui/screens/RealmsPlayerScreen.java b/com/mojang/realmsclient/gui/screens/RealmsPlayerScreen.java index 72d1e9b4..6be08c36 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsPlayerScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsPlayerScreen.java @@ -239,7 +239,7 @@ public class RealmsPlayerScreen extends RealmsScreen { int j = top + height / 2 - 16; RealmsUtil.renderPlayerFace(guiGraphics, left, j, 32, this.playerInfo.getUuid()); int k = top + height / 2 - 9 / 2; - guiGraphics.drawString(RealmsPlayerScreen.this.font, this.playerInfo.getName(), left + 8 + 32, k, i, false); + guiGraphics.drawString(RealmsPlayerScreen.this.font, this.playerInfo.getName(), left + 8 + 32, k, i); int l = top + height / 2 - 10; int m = left + width - this.removeButton.getWidth(); this.removeButton.setPosition(m, l); @@ -262,16 +262,16 @@ public class RealmsPlayerScreen extends RealmsScreen { RealmsPlayerScreen.this.width, RealmsPlayerScreen.this.layout.getContentHeight(), RealmsPlayerScreen.this.layout.getHeaderHeight(), - 36 + 36, + (int)(9.0F * 1.5F) ); - this.setRenderHeader(true, (int)(9.0F * 1.5F)); } @Override protected void renderHeader(GuiGraphics guiGraphics, int x, int y) { String string = RealmsPlayerScreen.this.serverData.players != null ? Integer.toString(RealmsPlayerScreen.this.serverData.players.size()) : "0"; Component component = Component.translatable("mco.configure.world.invited.number", string).withStyle(ChatFormatting.UNDERLINE); - guiGraphics.drawString(RealmsPlayerScreen.this.font, component, x + this.getRowWidth() / 2 - RealmsPlayerScreen.this.font.width(component) / 2, y, -1, false); + guiGraphics.drawString(RealmsPlayerScreen.this.font, component, x + this.getRowWidth() / 2 - RealmsPlayerScreen.this.font.width(component) / 2, y, -1); } @Override diff --git a/com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen.java b/com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen.java index 8f8ac4f9..0f996ef7 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen.java @@ -7,6 +7,7 @@ import com.mojang.realmsclient.client.worldupload.RealmsCreateWorldFlow; import com.mojang.realmsclient.dto.RealmsServer; import com.mojang.realmsclient.dto.WorldTemplate; import com.mojang.realmsclient.dto.WorldTemplatePaginatedList; +import com.mojang.realmsclient.dto.RealmsServer.WorldType; import com.mojang.realmsclient.exception.RealmsServiceException; import com.mojang.realmsclient.util.task.LongRunningTask; import com.mojang.realmsclient.util.task.RealmCreationTask; @@ -146,10 +147,10 @@ public class RealmsResetWorldScreen extends RealmsScreen { RealmsClient realmsClient = RealmsClient.create(); try { - WorldTemplatePaginatedList worldTemplatePaginatedList = realmsClient.fetchWorldTemplates(1, 10, RealmsServer.WorldType.NORMAL); - WorldTemplatePaginatedList worldTemplatePaginatedList2 = realmsClient.fetchWorldTemplates(1, 10, RealmsServer.WorldType.ADVENTUREMAP); - WorldTemplatePaginatedList worldTemplatePaginatedList3 = realmsClient.fetchWorldTemplates(1, 10, RealmsServer.WorldType.EXPERIENCE); - WorldTemplatePaginatedList worldTemplatePaginatedList4 = realmsClient.fetchWorldTemplates(1, 10, RealmsServer.WorldType.INSPIRATION); + WorldTemplatePaginatedList worldTemplatePaginatedList = realmsClient.fetchWorldTemplates(1, 10, WorldType.NORMAL); + WorldTemplatePaginatedList worldTemplatePaginatedList2 = realmsClient.fetchWorldTemplates(1, 10, WorldType.ADVENTUREMAP); + WorldTemplatePaginatedList worldTemplatePaginatedList3 = realmsClient.fetchWorldTemplates(1, 10, WorldType.EXPERIENCE); + WorldTemplatePaginatedList worldTemplatePaginatedList4 = realmsClient.fetchWorldTemplates(1, 10, WorldType.INSPIRATION); RealmsResetWorldScreen.this.minecraft.execute(() -> { RealmsResetWorldScreen.this.templates = worldTemplatePaginatedList; RealmsResetWorldScreen.this.adventuremaps = worldTemplatePaginatedList2; @@ -186,7 +187,7 @@ public class RealmsResetWorldScreen extends RealmsScreen { WORLD_TEMPLATES_TITLE, SURVIVAL_SPAWN_LOCATION, button -> this.minecraft - .setScreen(new RealmsSelectWorldTemplateScreen(WORLD_TEMPLATES_TITLE, this::templateSelectionCallback, RealmsServer.WorldType.NORMAL, this.templates)) + .setScreen(new RealmsSelectWorldTemplateScreen(WORLD_TEMPLATES_TITLE, this::templateSelectionCallback, WorldType.NORMAL, this.templates)) ) ); rowHelper.addChild(SpacerElement.height(16), 3); @@ -196,7 +197,7 @@ public class RealmsResetWorldScreen extends RealmsScreen { ADVENTURES_TITLE, ADVENTURE_MAP_LOCATION, button -> this.minecraft - .setScreen(new RealmsSelectWorldTemplateScreen(ADVENTURES_TITLE, this::templateSelectionCallback, RealmsServer.WorldType.ADVENTUREMAP, this.adventuremaps)) + .setScreen(new RealmsSelectWorldTemplateScreen(ADVENTURES_TITLE, this::templateSelectionCallback, WorldType.ADVENTUREMAP, this.adventuremaps)) ) ); rowHelper.addChild( @@ -205,7 +206,7 @@ public class RealmsResetWorldScreen extends RealmsScreen { EXPERIENCES_TITLE, EXPERIENCE_LOCATION, button -> this.minecraft - .setScreen(new RealmsSelectWorldTemplateScreen(EXPERIENCES_TITLE, this::templateSelectionCallback, RealmsServer.WorldType.EXPERIENCE, this.experiences)) + .setScreen(new RealmsSelectWorldTemplateScreen(EXPERIENCES_TITLE, this::templateSelectionCallback, WorldType.EXPERIENCE, this.experiences)) ) ); rowHelper.addChild( @@ -214,7 +215,7 @@ public class RealmsResetWorldScreen extends RealmsScreen { INSPIRATION_TITLE, INSPIRATION_LOCATION, button -> this.minecraft - .setScreen(new RealmsSelectWorldTemplateScreen(INSPIRATION_TITLE, this::templateSelectionCallback, RealmsServer.WorldType.INSPIRATION, this.inspirations)) + .setScreen(new RealmsSelectWorldTemplateScreen(INSPIRATION_TITLE, this::templateSelectionCallback, WorldType.INSPIRATION, this.inspirations)) ) ); this.layout.addToFooter(Button.builder(CommonComponents.GUI_BACK, button -> this.onClose()).build()); diff --git a/com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen.java b/com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen.java index 3f140346..e9b83913 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen.java @@ -18,8 +18,8 @@ import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.realms.RealmsLabel; import net.minecraft.realms.RealmsScreen; -import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelSummary; +import net.minecraft.world.level.storage.LevelStorageSource.LevelCandidates; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -51,7 +51,7 @@ public class RealmsSelectFileToUploadScreen extends RealmsScreen { } private void loadLevelList() { - LevelStorageSource.LevelCandidates levelCandidates = this.minecraft.getLevelSource().findLevelCandidates(); + LevelCandidates levelCandidates = this.minecraft.getLevelSource().findLevelCandidates(); this.levelList = (List)((List)this.minecraft.getLevelSource().loadLevelSummaries(levelCandidates).join()) .stream() .filter(LevelSummary::canUpload) @@ -156,9 +156,9 @@ public class RealmsSelectFileToUploadScreen extends RealmsScreen { string = this.name; } - guiGraphics.drawString(RealmsSelectFileToUploadScreen.this.font, string, x + 2, y + 1, 16777215, false); - guiGraphics.drawString(RealmsSelectFileToUploadScreen.this.font, this.id, x + 2, y + 12, -8355712, false); - guiGraphics.drawString(RealmsSelectFileToUploadScreen.this.font, this.info, x + 2, y + 12 + 10, -8355712, false); + guiGraphics.drawString(RealmsSelectFileToUploadScreen.this.font, string, x + 2, y + 1, -1); + guiGraphics.drawString(RealmsSelectFileToUploadScreen.this.font, this.id, x + 2, y + 12, -8355712); + guiGraphics.drawString(RealmsSelectFileToUploadScreen.this.font, this.info, x + 2, y + 12 + 10, -8355712); } @Override @@ -188,9 +188,9 @@ public class RealmsSelectFileToUploadScreen extends RealmsScreen { this.addEntry(RealmsSelectFileToUploadScreen.this.new Entry(levelSummary)); } - public void setSelected(@Nullable RealmsSelectFileToUploadScreen.Entry selected) { - super.setSelected(selected); - RealmsSelectFileToUploadScreen.this.selectedWorld = this.children().indexOf(selected); + public void setSelected(@Nullable RealmsSelectFileToUploadScreen.Entry entry) { + super.setSelected(entry); + RealmsSelectFileToUploadScreen.this.selectedWorld = this.children().indexOf(entry); RealmsSelectFileToUploadScreen.this.uploadButton.active = RealmsSelectFileToUploadScreen.this.selectedWorld >= 0 && RealmsSelectFileToUploadScreen.this.selectedWorld < this.getItemCount() && !((LevelSummary)RealmsSelectFileToUploadScreen.this.levelList.get(RealmsSelectFileToUploadScreen.this.selectedWorld)).isHardcore(); diff --git a/com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen.java b/com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen.java index 40f6474d..ac4b33e2 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen.java @@ -4,9 +4,9 @@ import com.google.common.collect.Lists; import com.mojang.datafixers.util.Either; import com.mojang.logging.LogUtils; import com.mojang.realmsclient.client.RealmsClient; -import com.mojang.realmsclient.dto.RealmsServer; import com.mojang.realmsclient.dto.WorldTemplate; import com.mojang.realmsclient.dto.WorldTemplatePaginatedList; +import com.mojang.realmsclient.dto.RealmsServer.WorldType; import com.mojang.realmsclient.exception.RealmsServiceException; import com.mojang.realmsclient.util.RealmsTextureManager; import com.mojang.realmsclient.util.TextRenderingUtils; @@ -53,7 +53,7 @@ public class RealmsSelectWorldTemplateScreen extends RealmsScreen { private final HeaderAndFooterLayout layout = new HeaderAndFooterLayout(this); final Consumer callback; RealmsSelectWorldTemplateScreen.WorldTemplateList worldTemplateList; - private final RealmsServer.WorldType worldType; + private final WorldType worldType; private Button selectButton; private Button trailerButton; private Button publisherButton; @@ -66,12 +66,12 @@ public class RealmsSelectWorldTemplateScreen extends RealmsScreen { @Nullable List noTemplatesMessage; - public RealmsSelectWorldTemplateScreen(Component title, Consumer callback, RealmsServer.WorldType worldType) { + public RealmsSelectWorldTemplateScreen(Component title, Consumer callback, WorldType worldType) { this(title, callback, worldType, null); } public RealmsSelectWorldTemplateScreen( - Component title, Consumer callback, RealmsServer.WorldType worldType, @Nullable WorldTemplatePaginatedList worldTemplatePaginatedList + Component title, Consumer callback, WorldType worldType, @Nullable WorldTemplatePaginatedList worldTemplatePaginatedList ) { super(title); this.callback = callback; @@ -315,11 +315,11 @@ public class RealmsSelectWorldTemplateScreen extends RealmsScreen { int k = left + 45 + 20; int l = top + 5; - guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.name, k, l, -1, false); - guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.version, left + width - j - 5, l, 7105644, false); - guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.author, k, l + 9 + 5, -6250336, false); + guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.name, k, l, -1); + guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.version, left + width - j - 5, l, 7105644); + guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.author, k, l + 9 + 5, -6250336); if (!this.template.recommendedPlayers.isBlank()) { - guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.recommendedPlayers, k, top + height - 9 / 2 - 5, 5000268, false); + guiGraphics.drawString(RealmsSelectWorldTemplateScreen.this.font, this.template.recommendedPlayers, k, top + height - 9 / 2 - 5, 5000268); } } @@ -366,9 +366,9 @@ public class RealmsSelectWorldTemplateScreen extends RealmsScreen { } } - public void setSelected(@Nullable RealmsSelectWorldTemplateScreen.Entry selected) { - super.setSelected(selected); - RealmsSelectWorldTemplateScreen.this.selectedTemplate = selected == null ? null : selected.template; + public void setSelected(@Nullable RealmsSelectWorldTemplateScreen.Entry entry) { + super.setSelected(entry); + RealmsSelectWorldTemplateScreen.this.selectedTemplate = entry == null ? null : entry.template; RealmsSelectWorldTemplateScreen.this.updateButtonStates(); } diff --git a/com/mojang/realmsclient/gui/screens/RealmsSettingsScreen.java b/com/mojang/realmsclient/gui/screens/RealmsSettingsScreen.java index 6fb5e55a..370948fa 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsSettingsScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsSettingsScreen.java @@ -1,6 +1,7 @@ package com.mojang.realmsclient.gui.screens; import com.mojang.realmsclient.dto.RealmsServer; +import com.mojang.realmsclient.dto.RealmsServer.State; import java.util.Objects; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -31,11 +32,11 @@ public class RealmsSettingsScreen extends RealmsScreen { @Override public void init() { int i = this.width / 2 - 106; - String string = this.serverData.state == RealmsServer.State.OPEN ? "mco.configure.world.buttons.close" : "mco.configure.world.buttons.open"; + String string = this.serverData.state == State.OPEN ? "mco.configure.world.buttons.close" : "mco.configure.world.buttons.open"; Button button = Button.builder( Component.translatable(string), buttonx -> { - if (this.serverData.state == RealmsServer.State.OPEN) { + if (this.serverData.state == State.OPEN) { this.minecraft .setScreen( RealmsPopups.infoPopupScreen( @@ -79,8 +80,8 @@ public class RealmsSettingsScreen extends RealmsScreen { public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { super.render(guiGraphics, mouseX, mouseY, partialTick); guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 17, -1); - guiGraphics.drawString(this.font, NAME_LABEL, this.width / 2 - 106, row(3), -1, false); - guiGraphics.drawString(this.font, DESCRIPTION_LABEL, this.width / 2 - 106, row(7), -1, false); + guiGraphics.drawString(this.font, NAME_LABEL, this.width / 2 - 106, row(3), -1); + guiGraphics.drawString(this.font, DESCRIPTION_LABEL, this.width / 2 - 106, row(7), -1); } public void save() { diff --git a/com/mojang/realmsclient/gui/screens/RealmsSlotOptionsScreen.java b/com/mojang/realmsclient/gui/screens/RealmsSlotOptionsScreen.java index edc8c348..bd2da02b 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsSlotOptionsScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsSlotOptionsScreen.java @@ -1,8 +1,8 @@ package com.mojang.realmsclient.gui.screens; import com.google.common.collect.ImmutableList; -import com.mojang.realmsclient.dto.RealmsServer; import com.mojang.realmsclient.dto.RealmsWorldOptions; +import com.mojang.realmsclient.dto.RealmsServer.WorldType; import java.util.List; import java.util.function.Consumer; import net.fabricmc.api.EnvType; @@ -33,7 +33,7 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { private int column1X; private int columnWidth; private final RealmsWorldOptions options; - private final RealmsServer.WorldType worldType; + private final WorldType worldType; private Difficulty difficulty; private GameType gameMode; private final String defaultSlotName; @@ -45,7 +45,7 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { private boolean forceGameMode; RealmsSlotOptionsScreen.SettingsSlider spawnProtectionButton; - public RealmsSlotOptionsScreen(RealmsConfigureWorldScreen parent, RealmsWorldOptions options, RealmsServer.WorldType worldType, int activeSlot) { + public RealmsSlotOptionsScreen(RealmsConfigureWorldScreen parent, RealmsWorldOptions options, WorldType worldType, int activeSlot) { super(Component.translatable("mco.configure.world.buttons.options")); this.parentScreen = parent; this.options = options; @@ -54,7 +54,7 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { this.gameMode = findByIndex(GAME_MODES, options.gameMode, 0); this.defaultSlotName = options.getDefaultSlotName(activeSlot); this.setWorldName(options.getSlotName(activeSlot)); - if (worldType == RealmsServer.WorldType.NORMAL) { + if (worldType == WorldType.NORMAL) { this.pvp = options.pvp; this.spawnProtection = options.spawnProtection; this.forceGameMode = options.forceGameMode; @@ -92,11 +92,11 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { this.columnWidth = 170; this.column1X = this.width / 2 - this.columnWidth; int i = this.width / 2 + 10; - if (this.worldType != RealmsServer.WorldType.NORMAL) { + if (this.worldType != WorldType.NORMAL) { Component component; - if (this.worldType == RealmsServer.WorldType.ADVENTUREMAP) { + if (this.worldType == WorldType.ADVENTUREMAP) { component = Component.translatable("mco.configure.world.edit.subscreen.adventuremap"); - } else if (this.worldType == RealmsServer.WorldType.INSPIRATION) { + } else if (this.worldType == WorldType.INSPIRATION) { component = Component.translatable("mco.configure.world.edit.subscreen.inspiration"); } else { component = Component.translatable("mco.configure.world.edit.subscreen.experience"); @@ -140,7 +140,7 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { .withInitialValue(this.difficulty) .create(this.column1X, row(5), this.columnWidth, 20, Component.translatable("options.difficulty"), (cycleButton2x, difficulty) -> { this.difficulty = difficulty; - if (this.worldType == RealmsServer.WorldType.NORMAL) { + if (this.worldType == WorldType.NORMAL) { boolean bl = this.difficulty != Difficulty.PEACEFUL; cycleButton2.active = bl; cycleButton2.setValue(bl && this.spawnMonsters); @@ -165,7 +165,7 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { i, row(7), this.columnWidth, 20, Component.translatable("mco.configure.world.commandBlocks"), (cycleButtonx, boolean_) -> this.commandBlocks = boolean_ ) ); - if (this.worldType != RealmsServer.WorldType.NORMAL) { + if (this.worldType != WorldType.NORMAL) { cycleButton.active = false; cycleButton2.active = false; this.spawnProtectionButton.active = false; @@ -207,7 +207,7 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { super.render(guiGraphics, mouseX, mouseY, partialTick); guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 17, -1); - guiGraphics.drawString(this.font, NAME_LABEL, this.column1X + this.columnWidth / 2 - this.font.width(NAME_LABEL) / 2, row(0) - 5, -1, false); + guiGraphics.drawString(this.font, NAME_LABEL, this.column1X + this.columnWidth / 2 - this.font.width(NAME_LABEL) / 2, row(0) - 5, -1); this.nameEdit.render(guiGraphics, mouseX, mouseY, partialTick); } @@ -222,10 +222,8 @@ public class RealmsSlotOptionsScreen extends RealmsScreen { private void saveSettings() { int i = findIndex(DIFFICULTIES, this.difficulty, 2); int j = findIndex(GAME_MODES, this.gameMode, 0); - if (this.worldType != RealmsServer.WorldType.ADVENTUREMAP - && this.worldType != RealmsServer.WorldType.EXPERIENCE - && this.worldType != RealmsServer.WorldType.INSPIRATION) { - boolean bl = this.worldType == RealmsServer.WorldType.NORMAL && this.difficulty != Difficulty.PEACEFUL && this.spawnMonsters; + if (this.worldType != WorldType.ADVENTUREMAP && this.worldType != WorldType.EXPERIENCE && this.worldType != WorldType.INSPIRATION) { + boolean bl = this.worldType == WorldType.NORMAL && this.difficulty != Difficulty.PEACEFUL && this.spawnMonsters; this.parentScreen .saveSlotSettings( new RealmsWorldOptions( diff --git a/com/mojang/realmsclient/gui/screens/RealmsSubscriptionInfoScreen.java b/com/mojang/realmsclient/gui/screens/RealmsSubscriptionInfoScreen.java index b6b49924..908a4810 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsSubscriptionInfoScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsSubscriptionInfoScreen.java @@ -139,15 +139,15 @@ public class RealmsSubscriptionInfoScreen extends RealmsScreen { super.render(guiGraphics, mouseX, mouseY, partialTick); int i = this.width / 2 - 100; guiGraphics.drawCenteredString(this.font, SUBSCRIPTION_TITLE, this.width / 2, 17, -1); - guiGraphics.drawString(this.font, SUBSCRIPTION_START_LABEL, i, row(0), -6250336, false); - guiGraphics.drawString(this.font, this.startDate, i, row(1), -1, false); + guiGraphics.drawString(this.font, SUBSCRIPTION_START_LABEL, i, row(0), -6250336); + guiGraphics.drawString(this.font, this.startDate, i, row(1), -1); if (this.type == SubscriptionType.NORMAL) { - guiGraphics.drawString(this.font, TIME_LEFT_LABEL, i, row(3), -6250336, false); + guiGraphics.drawString(this.font, TIME_LEFT_LABEL, i, row(3), -6250336); } else if (this.type == SubscriptionType.RECURRING) { - guiGraphics.drawString(this.font, DAYS_LEFT_LABEL, i, row(3), -6250336, false); + guiGraphics.drawString(this.font, DAYS_LEFT_LABEL, i, row(3), -6250336); } - guiGraphics.drawString(this.font, this.daysLeft, i, row(4), -1, false); + guiGraphics.drawString(this.font, this.daysLeft, i, row(4), -1); } private Component daysLeftPresentation(int daysLeft) { diff --git a/com/mojang/realmsclient/gui/screens/RealmsTermsScreen.java b/com/mojang/realmsclient/gui/screens/RealmsTermsScreen.java index c1d3fdc6..3b5625e6 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsTermsScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsTermsScreen.java @@ -94,13 +94,13 @@ public class RealmsTermsScreen extends RealmsScreen { public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { super.render(guiGraphics, mouseX, mouseY, partialTick); guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 17, -1); - guiGraphics.drawString(this.font, TERMS_STATIC_TEXT, this.width / 2 - 120, row(5), -1, false); + guiGraphics.drawString(this.font, TERMS_STATIC_TEXT, this.width / 2 - 120, row(5), -1); int i = this.font.width(TERMS_STATIC_TEXT); int j = this.width / 2 - 121 + i; int k = row(5); int l = j + this.font.width(TERMS_LINK_TEXT) + 1; int m = k + 1 + 9; this.onLink = j <= mouseX && mouseX <= l && k <= mouseY && mouseY <= m; - guiGraphics.drawString(this.font, TERMS_LINK_TEXT, this.width / 2 - 120 + i, row(5), this.onLink ? 7107012 : 3368635, false); + guiGraphics.drawString(this.font, TERMS_LINK_TEXT, this.width / 2 - 120 + i, row(5), this.onLink ? 7107012 : 3368635); } } diff --git a/com/mojang/realmsclient/gui/screens/RealmsUploadScreen.java b/com/mojang/realmsclient/gui/screens/RealmsUploadScreen.java index 4dfa8ff0..ab9f8179 100644 --- a/com/mojang/realmsclient/gui/screens/RealmsUploadScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsUploadScreen.java @@ -157,7 +157,7 @@ public class RealmsUploadScreen extends RealmsScreen implements RealmsWorldUploa guiGraphics.drawCenteredString(this.font, this.status, this.width / 2, 50, -1); if (this.showDots) { - guiGraphics.drawString(this.font, DOTS[this.tickCount / 10 % DOTS.length], this.width / 2 + this.font.width(this.status) / 2 + 5, 50, -1, false); + guiGraphics.drawString(this.font, DOTS[this.tickCount / 10 % DOTS.length], this.width / 2 + this.font.width(this.status) / 2 + 5, 50, -1); } if (this.uploadStatus.uploadStarted() && !this.cancelled) { @@ -192,7 +192,7 @@ public class RealmsUploadScreen extends RealmsScreen implements RealmsWorldUploa if (bytesPerSecond > 0L && string != null) { int i = this.font.width(string); String string2 = "(" + Unit.humanReadable(bytesPerSecond) + "/s)"; - guiGraphics.drawString(this.font, string2, this.width / 2 + i / 2 + 15, 84, -1, false); + guiGraphics.drawString(this.font, string2, this.width / 2 + i / 2 + 15, 84, -1); } } diff --git a/data/minecraft/advancement/adventure/adventuring_time.json b/data/minecraft/advancement/adventure/adventuring_time.json index 698b3745..5e301dc3 100644 --- a/data/minecraft/advancement/adventure/adventuring_time.json +++ b/data/minecraft/advancement/adventure/adventuring_time.json @@ -529,6 +529,22 @@ }, "trigger": "minecraft:location" }, + "minecraft:pale_garden": { + "conditions": { + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "biomes": "minecraft:pale_garden" + } + } + } + ] + }, + "trigger": "minecraft:location" + }, "minecraft:plains": { "conditions": { "player": [ @@ -1011,6 +1027,9 @@ [ "minecraft:cherry_grove" ], + [ + "minecraft:pale_garden" + ], [ "minecraft:frozen_peaks" ], diff --git a/data/minecraft/advancement/adventure/kill_a_mob.json b/data/minecraft/advancement/adventure/kill_a_mob.json index 85ac6c83..ceda2e68 100644 --- a/data/minecraft/advancement/adventure/kill_a_mob.json +++ b/data/minecraft/advancement/adventure/kill_a_mob.json @@ -57,6 +57,20 @@ }, "trigger": "minecraft:player_killed_entity" }, + "minecraft:creaking": { + "conditions": { + "entity": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "minecraft:creaking" + } + } + ] + }, + "trigger": "minecraft:player_killed_entity" + }, "minecraft:creeper": { "conditions": { "entity": [ @@ -524,6 +538,7 @@ "minecraft:bogged", "minecraft:breeze", "minecraft:cave_spider", + "minecraft:creaking", "minecraft:creeper", "minecraft:drowned", "minecraft:elder_guardian", diff --git a/data/minecraft/advancement/adventure/kill_all_mobs.json b/data/minecraft/advancement/adventure/kill_all_mobs.json index e7ffa09a..06894711 100644 --- a/data/minecraft/advancement/adventure/kill_all_mobs.json +++ b/data/minecraft/advancement/adventure/kill_all_mobs.json @@ -57,6 +57,20 @@ }, "trigger": "minecraft:player_killed_entity" }, + "minecraft:creaking": { + "conditions": { + "entity": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "minecraft:creaking" + } + } + ] + }, + "trigger": "minecraft:player_killed_entity" + }, "minecraft:creeper": { "conditions": { "entity": [ @@ -532,6 +546,9 @@ [ "minecraft:cave_spider" ], + [ + "minecraft:creaking" + ], [ "minecraft:creeper" ], diff --git a/data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks.json b/data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks.json new file mode 100644 index 00000000..f57d5e4a --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_brick_slab": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_brick_slab" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:chiseled_resin_bricks" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_brick_slab" + ] + ], + "rewards": { + "recipes": [ + "minecraft:chiseled_resin_bricks" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks_from_resin_bricks_stonecutting.json b/data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..77b8a16e --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/chiseled_resin_bricks_from_resin_bricks_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:chiseled_resin_bricks_from_resin_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:chiseled_resin_bricks_from_resin_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_planks.json b/data/minecraft/advancement/recipes/building_blocks/pale_oak_planks.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_planks.json rename to data/minecraft/advancement/recipes/building_blocks/pale_oak_planks.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_slab.json b/data/minecraft/advancement/recipes/building_blocks/pale_oak_slab.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_slab.json rename to data/minecraft/advancement/recipes/building_blocks/pale_oak_slab.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_stairs.json b/data/minecraft/advancement/recipes/building_blocks/pale_oak_stairs.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_stairs.json rename to data/minecraft/advancement/recipes/building_blocks/pale_oak_stairs.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_wood.json b/data/minecraft/advancement/recipes/building_blocks/pale_oak_wood.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/pale_oak_wood.json rename to data/minecraft/advancement/recipes/building_blocks/pale_oak_wood.json diff --git a/data/minecraft/advancement/recipes/building_blocks/resin_block.json b/data/minecraft/advancement/recipes/building_blocks/resin_block.json new file mode 100644 index 00000000..22188009 --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/resin_block.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_clump": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_clump" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_block" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_clump" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_block" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/building_blocks/resin_brick_slab.json b/data/minecraft/advancement/recipes/building_blocks/resin_brick_slab.json new file mode 100644 index 00000000..b5ea3c4b --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/resin_brick_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick_slab" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick_slab" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/building_blocks/resin_brick_slab_from_resin_bricks_stonecutting.json b/data/minecraft/advancement/recipes/building_blocks/resin_brick_slab_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..0d4173bd --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/resin_brick_slab_from_resin_bricks_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick_slab_from_resin_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick_slab_from_resin_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs.json b/data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs.json new file mode 100644 index 00000000..25305d7e --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick_stairs" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick_stairs" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs_from_resin_bricks_stonecutting.json b/data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..5acd47e3 --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/resin_brick_stairs_from_resin_bricks_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick_stairs_from_resin_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick_stairs_from_resin_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/building_blocks/resin_bricks.json b/data/minecraft/advancement/recipes/building_blocks/resin_bricks.json new file mode 100644 index 00000000..1b20dfcd --- /dev/null +++ b/data/minecraft/advancement/recipes/building_blocks/resin_bricks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_brick": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_brick" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_bricks" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_brick" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_bricks" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/stripped_pale_oak_wood.json b/data/minecraft/advancement/recipes/building_blocks/stripped_pale_oak_wood.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/building_blocks/stripped_pale_oak_wood.json rename to data/minecraft/advancement/recipes/building_blocks/stripped_pale_oak_wood.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_moss_carpet.json b/data/minecraft/advancement/recipes/decorations/pale_moss_carpet.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_moss_carpet.json rename to data/minecraft/advancement/recipes/decorations/pale_moss_carpet.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_oak_fence.json b/data/minecraft/advancement/recipes/decorations/pale_oak_fence.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_oak_fence.json rename to data/minecraft/advancement/recipes/decorations/pale_oak_fence.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_oak_hanging_sign.json b/data/minecraft/advancement/recipes/decorations/pale_oak_hanging_sign.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_oak_hanging_sign.json rename to data/minecraft/advancement/recipes/decorations/pale_oak_hanging_sign.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_oak_sign.json b/data/minecraft/advancement/recipes/decorations/pale_oak_sign.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/decorations/pale_oak_sign.json rename to data/minecraft/advancement/recipes/decorations/pale_oak_sign.json diff --git a/data/minecraft/advancement/recipes/decorations/resin_brick_wall.json b/data/minecraft/advancement/recipes/decorations/resin_brick_wall.json new file mode 100644 index 00000000..64cdcde5 --- /dev/null +++ b/data/minecraft/advancement/recipes/decorations/resin_brick_wall.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick_wall" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick_wall" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/decorations/resin_brick_wall_from_resin_bricks_stonecutting.json b/data/minecraft/advancement/recipes/decorations/resin_brick_wall_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..d6871b65 --- /dev/null +++ b/data/minecraft/advancement/recipes/decorations/resin_brick_wall_from_resin_bricks_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_bricks": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_bricks" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick_wall_from_resin_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_bricks" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick_wall_from_resin_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/food/suspicious_stew_from_closed_eyeblossom.json b/data/minecraft/advancement/recipes/food/suspicious_stew_from_closed_eyeblossom.json new file mode 100644 index 00000000..86399a3a --- /dev/null +++ b/data/minecraft/advancement/recipes/food/suspicious_stew_from_closed_eyeblossom.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_closed_eyeblossom": { + "conditions": { + "items": [ + { + "items": "minecraft:closed_eyeblossom" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:suspicious_stew_from_closed_eyeblossom" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_closed_eyeblossom" + ] + ], + "rewards": { + "recipes": [ + "minecraft:suspicious_stew_from_closed_eyeblossom" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/food/suspicious_stew_from_open_eyeblossom.json b/data/minecraft/advancement/recipes/food/suspicious_stew_from_open_eyeblossom.json new file mode 100644 index 00000000..54e096cb --- /dev/null +++ b/data/minecraft/advancement/recipes/food/suspicious_stew_from_open_eyeblossom.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_open_eyeblossom": { + "conditions": { + "items": [ + { + "items": "minecraft:open_eyeblossom" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:suspicious_stew_from_open_eyeblossom" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_open_eyeblossom" + ] + ], + "rewards": { + "recipes": [ + "minecraft:suspicious_stew_from_open_eyeblossom" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/misc/creaking_heart.json b/data/minecraft/advancement/recipes/misc/creaking_heart.json new file mode 100644 index 00000000..cffc161a --- /dev/null +++ b/data/minecraft/advancement/recipes/misc/creaking_heart.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_block": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_block" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:creaking_heart" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_block" + ] + ], + "rewards": { + "recipes": [ + "minecraft:creaking_heart" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/misc/gray_dye_from_closed_eyeblossom.json b/data/minecraft/advancement/recipes/misc/gray_dye_from_closed_eyeblossom.json new file mode 100644 index 00000000..4b28341d --- /dev/null +++ b/data/minecraft/advancement/recipes/misc/gray_dye_from_closed_eyeblossom.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_closed_eyeblossom": { + "conditions": { + "items": [ + { + "items": "minecraft:closed_eyeblossom" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:gray_dye_from_closed_eyeblossom" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_closed_eyeblossom" + ] + ], + "rewards": { + "recipes": [ + "minecraft:gray_dye_from_closed_eyeblossom" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/misc/orange_dye_from_open_eyeblossom.json b/data/minecraft/advancement/recipes/misc/orange_dye_from_open_eyeblossom.json new file mode 100644 index 00000000..2183c653 --- /dev/null +++ b/data/minecraft/advancement/recipes/misc/orange_dye_from_open_eyeblossom.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_open_eyeblossom": { + "conditions": { + "items": [ + { + "items": "minecraft:open_eyeblossom" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:orange_dye_from_open_eyeblossom" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_open_eyeblossom" + ] + ], + "rewards": { + "recipes": [ + "minecraft:orange_dye_from_open_eyeblossom" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/misc/resin_brick.json b/data/minecraft/advancement/recipes/misc/resin_brick.json new file mode 100644 index 00000000..1a30bf38 --- /dev/null +++ b/data/minecraft/advancement/recipes/misc/resin_brick.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_clump": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_clump" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_brick" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_clump" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_brick" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/advancement/recipes/misc/resin_clump.json b/data/minecraft/advancement/recipes/misc/resin_clump.json new file mode 100644 index 00000000..9a5c3895 --- /dev/null +++ b/data/minecraft/advancement/recipes/misc/resin_clump.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_resin_block": { + "conditions": { + "items": [ + { + "items": "minecraft:resin_block" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:resin_clump" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_resin_block" + ] + ], + "rewards": { + "recipes": [ + "minecraft:resin_clump" + ] + } +} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_button.json b/data/minecraft/advancement/recipes/redstone/pale_oak_button.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_button.json rename to data/minecraft/advancement/recipes/redstone/pale_oak_button.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_door.json b/data/minecraft/advancement/recipes/redstone/pale_oak_door.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_door.json rename to data/minecraft/advancement/recipes/redstone/pale_oak_door.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_fence_gate.json b/data/minecraft/advancement/recipes/redstone/pale_oak_fence_gate.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_fence_gate.json rename to data/minecraft/advancement/recipes/redstone/pale_oak_fence_gate.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_pressure_plate.json b/data/minecraft/advancement/recipes/redstone/pale_oak_pressure_plate.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_pressure_plate.json rename to data/minecraft/advancement/recipes/redstone/pale_oak_pressure_plate.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_trapdoor.json b/data/minecraft/advancement/recipes/redstone/pale_oak_trapdoor.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/redstone/pale_oak_trapdoor.json rename to data/minecraft/advancement/recipes/redstone/pale_oak_trapdoor.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/transportation/pale_oak_boat.json b/data/minecraft/advancement/recipes/transportation/pale_oak_boat.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/transportation/pale_oak_boat.json rename to data/minecraft/advancement/recipes/transportation/pale_oak_boat.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/transportation/pale_oak_chest_boat.json b/data/minecraft/advancement/recipes/transportation/pale_oak_chest_boat.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/advancement/recipes/transportation/pale_oak_chest_boat.json rename to data/minecraft/advancement/recipes/transportation/pale_oak_chest_boat.json diff --git a/data/minecraft/datapacks/minecart_improvements/pack.mcmeta b/data/minecraft/datapacks/minecart_improvements/pack.mcmeta index 5aa6ede3..22d5b922 100644 --- a/data/minecraft/datapacks/minecart_improvements/pack.mcmeta +++ b/data/minecraft/datapacks/minecart_improvements/pack.mcmeta @@ -8,6 +8,6 @@ "description": { "translate": "dataPack.minecart_improvements.description" }, - "pack_format": 57 + "pack_format": 61 } } \ No newline at end of file diff --git a/data/minecraft/datapacks/redstone_experiments/pack.mcmeta b/data/minecraft/datapacks/redstone_experiments/pack.mcmeta index 10177ea5..4a3248be 100644 --- a/data/minecraft/datapacks/redstone_experiments/pack.mcmeta +++ b/data/minecraft/datapacks/redstone_experiments/pack.mcmeta @@ -8,6 +8,6 @@ "description": { "translate": "dataPack.redstone_experiments.description" }, - "pack_format": 57 + "pack_format": 61 } } \ No newline at end of file diff --git a/data/minecraft/datapacks/trade_rebalance/pack.mcmeta b/data/minecraft/datapacks/trade_rebalance/pack.mcmeta index 21d85752..653aff19 100644 --- a/data/minecraft/datapacks/trade_rebalance/pack.mcmeta +++ b/data/minecraft/datapacks/trade_rebalance/pack.mcmeta @@ -8,6 +8,6 @@ "description": { "translate": "dataPack.trade_rebalance.description" }, - "pack_format": 57 + "pack_format": 61 } } \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/adventuring_time.json b/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/adventuring_time.json deleted file mode 100644 index 5e301dc3..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/adventuring_time.json +++ /dev/null @@ -1,1050 +0,0 @@ -{ - "parent": "minecraft:adventure/sleep_in_bed", - "criteria": { - "minecraft:badlands": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:badlands" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:bamboo_jungle": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:bamboo_jungle" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:beach": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:beach" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:birch_forest": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:birch_forest" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:cherry_grove": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:cherry_grove" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:cold_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:cold_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:dark_forest": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:dark_forest" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:deep_cold_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:deep_cold_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:deep_dark": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:deep_dark" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:deep_frozen_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:deep_frozen_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:deep_lukewarm_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:deep_lukewarm_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:deep_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:deep_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:desert": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:desert" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:dripstone_caves": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:dripstone_caves" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:eroded_badlands": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:eroded_badlands" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:flower_forest": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:flower_forest" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:forest": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:forest" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:frozen_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:frozen_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:frozen_peaks": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:frozen_peaks" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:frozen_river": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:frozen_river" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:grove": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:grove" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:ice_spikes": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:ice_spikes" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:jagged_peaks": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:jagged_peaks" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:jungle": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:jungle" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:lukewarm_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:lukewarm_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:lush_caves": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:lush_caves" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:mangrove_swamp": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:mangrove_swamp" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:meadow": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:meadow" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:mushroom_fields": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:mushroom_fields" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:old_growth_birch_forest": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:old_growth_birch_forest" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:old_growth_pine_taiga": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:old_growth_pine_taiga" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:old_growth_spruce_taiga": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:old_growth_spruce_taiga" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:pale_garden": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:pale_garden" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:plains": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:plains" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:river": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:river" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:savanna": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:savanna" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:savanna_plateau": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:savanna_plateau" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:snowy_beach": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:snowy_beach" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:snowy_plains": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:snowy_plains" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:snowy_slopes": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:snowy_slopes" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:snowy_taiga": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:snowy_taiga" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:sparse_jungle": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:sparse_jungle" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:stony_peaks": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:stony_peaks" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:stony_shore": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:stony_shore" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:sunflower_plains": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:sunflower_plains" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:swamp": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:swamp" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:taiga": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:taiga" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:warm_ocean": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:warm_ocean" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:windswept_forest": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:windswept_forest" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:windswept_gravelly_hills": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:windswept_gravelly_hills" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:windswept_hills": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:windswept_hills" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:windswept_savanna": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:windswept_savanna" - } - } - } - ] - }, - "trigger": "minecraft:location" - }, - "minecraft:wooded_badlands": { - "conditions": { - "player": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "location": { - "biomes": "minecraft:wooded_badlands" - } - } - } - ] - }, - "trigger": "minecraft:location" - } - }, - "display": { - "description": { - "translate": "advancements.adventure.adventuring_time.description" - }, - "frame": "challenge", - "icon": { - "count": 1, - "id": "minecraft:diamond_boots" - }, - "title": { - "translate": "advancements.adventure.adventuring_time.title" - } - }, - "requirements": [ - [ - "minecraft:mushroom_fields" - ], - [ - "minecraft:deep_frozen_ocean" - ], - [ - "minecraft:frozen_ocean" - ], - [ - "minecraft:deep_cold_ocean" - ], - [ - "minecraft:cold_ocean" - ], - [ - "minecraft:deep_ocean" - ], - [ - "minecraft:ocean" - ], - [ - "minecraft:deep_lukewarm_ocean" - ], - [ - "minecraft:lukewarm_ocean" - ], - [ - "minecraft:warm_ocean" - ], - [ - "minecraft:stony_shore" - ], - [ - "minecraft:swamp" - ], - [ - "minecraft:mangrove_swamp" - ], - [ - "minecraft:snowy_slopes" - ], - [ - "minecraft:snowy_plains" - ], - [ - "minecraft:snowy_beach" - ], - [ - "minecraft:windswept_gravelly_hills" - ], - [ - "minecraft:grove" - ], - [ - "minecraft:windswept_hills" - ], - [ - "minecraft:snowy_taiga" - ], - [ - "minecraft:windswept_forest" - ], - [ - "minecraft:taiga" - ], - [ - "minecraft:plains" - ], - [ - "minecraft:meadow" - ], - [ - "minecraft:beach" - ], - [ - "minecraft:forest" - ], - [ - "minecraft:old_growth_spruce_taiga" - ], - [ - "minecraft:flower_forest" - ], - [ - "minecraft:birch_forest" - ], - [ - "minecraft:dark_forest" - ], - [ - "minecraft:savanna_plateau" - ], - [ - "minecraft:savanna" - ], - [ - "minecraft:jungle" - ], - [ - "minecraft:badlands" - ], - [ - "minecraft:desert" - ], - [ - "minecraft:wooded_badlands" - ], - [ - "minecraft:jagged_peaks" - ], - [ - "minecraft:stony_peaks" - ], - [ - "minecraft:frozen_river" - ], - [ - "minecraft:river" - ], - [ - "minecraft:ice_spikes" - ], - [ - "minecraft:old_growth_pine_taiga" - ], - [ - "minecraft:sunflower_plains" - ], - [ - "minecraft:old_growth_birch_forest" - ], - [ - "minecraft:sparse_jungle" - ], - [ - "minecraft:bamboo_jungle" - ], - [ - "minecraft:eroded_badlands" - ], - [ - "minecraft:windswept_savanna" - ], - [ - "minecraft:cherry_grove" - ], - [ - "minecraft:pale_garden" - ], - [ - "minecraft:frozen_peaks" - ], - [ - "minecraft:dripstone_caves" - ], - [ - "minecraft:lush_caves" - ], - [ - "minecraft:deep_dark" - ] - ], - "rewards": { - "experience": 500 - }, - "sends_telemetry_event": true -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_a_mob.json b/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_a_mob.json deleted file mode 100644 index ba17fb7e..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_a_mob.json +++ /dev/null @@ -1,577 +0,0 @@ -{ - "parent": "minecraft:adventure/root", - "criteria": { - "minecraft:blaze": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:blaze" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:bogged": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:bogged" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:breeze": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:breeze" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:cave_spider": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:cave_spider" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:creaking_transient": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:creaking_transient" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:creeper": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:creeper" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:drowned": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:drowned" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:elder_guardian": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:elder_guardian" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:ender_dragon": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:ender_dragon" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:enderman": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:enderman" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:endermite": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:endermite" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:evoker": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:evoker" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:ghast": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:ghast" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:guardian": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:guardian" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:hoglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:hoglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:husk": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:husk" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:magma_cube": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:magma_cube" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:phantom": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:phantom" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:piglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:piglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:piglin_brute": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:piglin_brute" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:pillager": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:pillager" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:ravager": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:ravager" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:shulker": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:shulker" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:silverfish": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:silverfish" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:skeleton": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:skeleton" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:slime": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:slime" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:spider": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:spider" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:stray": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:stray" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:vex": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:vex" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:vindicator": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:vindicator" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:witch": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:witch" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:wither": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:wither" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:wither_skeleton": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:wither_skeleton" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zoglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zoglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zombie": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zombie" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zombie_villager": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zombie_villager" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zombified_piglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zombified_piglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - } - }, - "display": { - "description": { - "translate": "advancements.adventure.kill_a_mob.description" - }, - "icon": { - "count": 1, - "id": "minecraft:iron_sword" - }, - "title": { - "translate": "advancements.adventure.kill_a_mob.title" - } - }, - "requirements": [ - [ - "minecraft:blaze", - "minecraft:bogged", - "minecraft:breeze", - "minecraft:cave_spider", - "minecraft:creeper", - "minecraft:drowned", - "minecraft:elder_guardian", - "minecraft:ender_dragon", - "minecraft:enderman", - "minecraft:endermite", - "minecraft:evoker", - "minecraft:ghast", - "minecraft:guardian", - "minecraft:hoglin", - "minecraft:husk", - "minecraft:magma_cube", - "minecraft:phantom", - "minecraft:piglin", - "minecraft:piglin_brute", - "minecraft:pillager", - "minecraft:ravager", - "minecraft:shulker", - "minecraft:silverfish", - "minecraft:skeleton", - "minecraft:slime", - "minecraft:spider", - "minecraft:stray", - "minecraft:vex", - "minecraft:vindicator", - "minecraft:witch", - "minecraft:wither_skeleton", - "minecraft:wither", - "minecraft:zoglin", - "minecraft:zombie_villager", - "minecraft:zombie", - "minecraft:zombified_piglin", - "minecraft:creaking_transient" - ] - ], - "sends_telemetry_event": true -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_all_mobs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_all_mobs.json deleted file mode 100644 index a4ab20a9..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/advancement/adventure/kill_all_mobs.json +++ /dev/null @@ -1,653 +0,0 @@ -{ - "parent": "minecraft:adventure/kill_a_mob", - "criteria": { - "minecraft:blaze": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:blaze" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:bogged": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:bogged" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:breeze": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:breeze" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:cave_spider": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:cave_spider" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:creaking_transient": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:creaking_transient" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:creeper": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:creeper" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:drowned": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:drowned" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:elder_guardian": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:elder_guardian" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:ender_dragon": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:ender_dragon" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:enderman": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:enderman" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:endermite": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:endermite" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:evoker": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:evoker" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:ghast": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:ghast" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:guardian": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:guardian" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:hoglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:hoglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:husk": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:husk" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:magma_cube": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:magma_cube" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:phantom": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:phantom" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:piglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:piglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:piglin_brute": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:piglin_brute" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:pillager": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:pillager" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:ravager": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:ravager" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:shulker": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:shulker" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:silverfish": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:silverfish" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:skeleton": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:skeleton" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:slime": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:slime" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:spider": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:spider" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:stray": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:stray" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:vex": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:vex" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:vindicator": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:vindicator" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:witch": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:witch" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:wither": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:wither" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:wither_skeleton": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:wither_skeleton" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zoglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zoglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zombie": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zombie" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zombie_villager": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zombie_villager" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - }, - "minecraft:zombified_piglin": { - "conditions": { - "entity": [ - { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "type": "minecraft:zombified_piglin" - } - } - ] - }, - "trigger": "minecraft:player_killed_entity" - } - }, - "display": { - "description": { - "translate": "advancements.adventure.kill_all_mobs.description" - }, - "frame": "challenge", - "icon": { - "count": 1, - "id": "minecraft:diamond_sword" - }, - "title": { - "translate": "advancements.adventure.kill_all_mobs.title" - } - }, - "requirements": [ - [ - "minecraft:blaze" - ], - [ - "minecraft:bogged" - ], - [ - "minecraft:breeze" - ], - [ - "minecraft:cave_spider" - ], - [ - "minecraft:creeper" - ], - [ - "minecraft:drowned" - ], - [ - "minecraft:elder_guardian" - ], - [ - "minecraft:ender_dragon" - ], - [ - "minecraft:enderman" - ], - [ - "minecraft:endermite" - ], - [ - "minecraft:evoker" - ], - [ - "minecraft:ghast" - ], - [ - "minecraft:guardian" - ], - [ - "minecraft:hoglin" - ], - [ - "minecraft:husk" - ], - [ - "minecraft:magma_cube" - ], - [ - "minecraft:phantom" - ], - [ - "minecraft:piglin" - ], - [ - "minecraft:piglin_brute" - ], - [ - "minecraft:pillager" - ], - [ - "minecraft:ravager" - ], - [ - "minecraft:shulker" - ], - [ - "minecraft:silverfish" - ], - [ - "minecraft:skeleton" - ], - [ - "minecraft:slime" - ], - [ - "minecraft:spider" - ], - [ - "minecraft:stray" - ], - [ - "minecraft:vex" - ], - [ - "minecraft:vindicator" - ], - [ - "minecraft:witch" - ], - [ - "minecraft:wither_skeleton" - ], - [ - "minecraft:wither" - ], - [ - "minecraft:zoglin" - ], - [ - "minecraft:zombie_villager" - ], - [ - "minecraft:zombie" - ], - [ - "minecraft:zombified_piglin" - ], - [ - "minecraft:creaking_transient" - ] - ], - "rewards": { - "experience": 100 - }, - "sends_telemetry_event": true -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/creaking_heart.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/creaking_heart.json deleted file mode 100644 index 0cd62c71..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/creaking_heart.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:creaking_heart" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/creaking_heart" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_hanging_moss.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_hanging_moss.json deleted file mode 100644 index 6f06ee04..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_hanging_moss.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "items": "minecraft:shears" - } - }, - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ] - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_hanging_moss" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_hanging_moss" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_block.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_block.json deleted file mode 100644 index 8a535930..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_block.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_moss_block" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_moss_block" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_carpet.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_carpet.json deleted file mode 100644 index 609106a6..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_moss_carpet.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "conditions": [ - { - "block": "minecraft:pale_moss_carpet", - "condition": "minecraft:block_state_property", - "properties": { - "bottom": "true" - } - } - ], - "functions": [ - { - "function": "minecraft:explosion_decay" - } - ], - "name": "minecraft:pale_moss_carpet" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_moss_carpet" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_button.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_button.json deleted file mode 100644 index 3782634d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_button.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_button" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_button" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_door.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_door.json deleted file mode 100644 index e54f21a6..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_door.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "conditions": [ - { - "block": "minecraft:pale_oak_door", - "condition": "minecraft:block_state_property", - "properties": { - "half": "lower" - } - } - ], - "name": "minecraft:pale_oak_door" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_door" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence.json deleted file mode 100644 index 443e0156..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_fence" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_fence" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json deleted file mode 100644 index 7614cd5c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_fence_gate" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_fence_gate" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json deleted file mode 100644 index 93f5c08e..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_hanging_sign" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_hanging_sign" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_leaves.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_leaves.json deleted file mode 100644 index 1122938a..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_leaves.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "items": "minecraft:shears" - } - }, - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ] - } - ], - "name": "minecraft:pale_oak_leaves" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - }, - { - "chances": [ - 0.05, - 0.0625, - 0.083333336, - 0.1 - ], - "condition": "minecraft:table_bonus", - "enchantment": "minecraft:fortune" - } - ], - "name": "minecraft:pale_oak_sapling" - } - ] - } - ], - "rolls": 1.0 - }, - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:inverted", - "term": { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "items": "minecraft:shears" - } - }, - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ] - } - } - ], - "entries": [ - { - "type": "minecraft:item", - "conditions": [ - { - "chances": [ - 0.02, - 0.022222223, - 0.025, - 0.033333335, - 0.1 - ], - "condition": "minecraft:table_bonus", - "enchantment": "minecraft:fortune" - } - ], - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 - }, - "function": "minecraft:set_count" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "minecraft:stick" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_leaves" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_log.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_log.json deleted file mode 100644 index 4dc2e078..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_log" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_log" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_planks.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_planks.json deleted file mode 100644 index 0097b5e0..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_planks.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_planks" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_planks" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json deleted file mode 100644 index 45f4fc49..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_pressure_plate" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_pressure_plate" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sapling.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sapling.json deleted file mode 100644 index 960d922b..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sapling.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_sapling" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_sapling" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sign.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sign.json deleted file mode 100644 index d46ce7a9..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_sign.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_sign" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_sign" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_slab.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_slab.json deleted file mode 100644 index 6170569b..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_slab.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "conditions": [ - { - "block": "minecraft:pale_oak_slab", - "condition": "minecraft:block_state_property", - "properties": { - "type": "double" - } - } - ], - "count": 2.0, - "function": "minecraft:set_count" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "minecraft:pale_oak_slab" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_slab" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_stairs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_stairs.json deleted file mode 100644 index d64c5bf7..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_stairs.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_stairs" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_stairs" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json deleted file mode 100644 index 9acb6ce1..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_trapdoor" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_trapdoor" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_wood.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_wood.json deleted file mode 100644 index 128fc986..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/pale_oak_wood.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_wood" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/pale_oak_wood" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json deleted file mode 100644 index 7ebed877..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:flower_pot" - } - ], - "rolls": 1.0 - }, - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:pale_oak_sapling" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/potted_pale_oak_sapling" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json deleted file mode 100644 index 5254c198..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:stripped_pale_oak_log" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/stripped_pale_oak_log" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json b/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json deleted file mode 100644 index ac053b60..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:stripped_pale_oak_wood" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "minecraft:blocks/stripped_pale_oak_wood" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/ceiling_hanging_signs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/ceiling_hanging_signs.json deleted file mode 100644 index b446dbd0..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/ceiling_hanging_signs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_hanging_sign" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/combination_step_sound_blocks.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/combination_step_sound_blocks.json deleted file mode 100644 index be02e6ad..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/combination_step_sound_blocks.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_moss_carpet" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/dirt.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/dirt.json deleted file mode 100644 index 39ea165c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/dirt.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_moss_block" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/fence_gates.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/fence_gates.json deleted file mode 100644 index 3ff6469d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/fence_gates.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_fence_gate" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/flower_pots.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/flower_pots.json deleted file mode 100644 index 28754e83..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/flower_pots.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:potted_pale_oak_sapling" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/leaves.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/leaves.json deleted file mode 100644 index 8eee584d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/leaves.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_leaves" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/logs_that_burn.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/logs_that_burn.json deleted file mode 100644 index 9729f24d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/logs_that_burn.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "#minecraft:pale_oak_logs" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/axe.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/axe.json deleted file mode 100644 index 7c0cd811..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/axe.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:creaking_heart" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/hoe.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/hoe.json deleted file mode 100644 index fb91ba32..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/mineable/hoe.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_leaves", - "minecraft:pale_moss_block", - "minecraft:pale_moss_carpet" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/overworld_natural_logs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/overworld_natural_logs.json deleted file mode 100644 index 50f65eb8..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/overworld_natural_logs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_log" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/planks.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/planks.json deleted file mode 100644 index 8091821d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/planks.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_planks" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/saplings.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/saplings.json deleted file mode 100644 index caa562a2..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/saplings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_sapling" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/standing_signs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/standing_signs.json deleted file mode 100644 index 2721611a..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/standing_signs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_sign" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/sword_efficient.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/sword_efficient.json deleted file mode 100644 index be02e6ad..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/sword_efficient.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_moss_carpet" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_hanging_signs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_hanging_signs.json deleted file mode 100644 index f4a00a9f..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_hanging_signs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_wall_hanging_sign" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_signs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_signs.json deleted file mode 100644 index 37546445..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wall_signs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_wall_sign" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_buttons.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_buttons.json deleted file mode 100644 index 5bbbea72..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_buttons.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_button" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_doors.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_doors.json deleted file mode 100644 index 17036482..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_doors.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_door" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_fences.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_fences.json deleted file mode 100644 index 4010b73a..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_fences.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_fence" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_pressure_plates.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_pressure_plates.json deleted file mode 100644 index 057d1bbc..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_pressure_plates.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_pressure_plate" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_slabs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_slabs.json deleted file mode 100644 index 5542b1d4..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_slabs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_slab" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_stairs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_stairs.json deleted file mode 100644 index 009f67b7..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_stairs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_stairs" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_trapdoors.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_trapdoors.json deleted file mode 100644 index cc39955f..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/wooden_trapdoors.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_trapdoor" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/entity_type/boat.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/entity_type/boat.json deleted file mode 100644 index 78a3ec94..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/entity_type/boat.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_boat" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/boats.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/boats.json deleted file mode 100644 index 78a3ec94..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/boats.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_boat" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/chest_boats.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/chest_boats.json deleted file mode 100644 index 8b94bd21..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/chest_boats.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_chest_boat" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/dirt.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/dirt.json deleted file mode 100644 index 39ea165c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/dirt.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_moss_block" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/fence_gates.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/fence_gates.json deleted file mode 100644 index 3ff6469d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/fence_gates.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_fence_gate" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/hanging_signs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/hanging_signs.json deleted file mode 100644 index b446dbd0..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/hanging_signs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_hanging_sign" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/leaves.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/leaves.json deleted file mode 100644 index 8eee584d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/leaves.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_leaves" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/logs_that_burn.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/logs_that_burn.json deleted file mode 100644 index 9729f24d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/logs_that_burn.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "#minecraft:pale_oak_logs" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/planks.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/planks.json deleted file mode 100644 index 8091821d..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/planks.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_planks" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/saplings.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/saplings.json deleted file mode 100644 index caa562a2..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/saplings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_sapling" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/signs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/signs.json deleted file mode 100644 index 2721611a..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/signs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_sign" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_buttons.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_buttons.json deleted file mode 100644 index 5bbbea72..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_buttons.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_button" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_doors.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_doors.json deleted file mode 100644 index 17036482..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_doors.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_door" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_fences.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_fences.json deleted file mode 100644 index 4010b73a..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_fences.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_fence" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_pressure_plates.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_pressure_plates.json deleted file mode 100644 index 057d1bbc..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_pressure_plates.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_pressure_plate" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_slabs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_slabs.json deleted file mode 100644 index 5542b1d4..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_slabs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_slab" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_stairs.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_stairs.json deleted file mode 100644 index 009f67b7..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_stairs.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_stairs" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_trapdoors.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_trapdoors.json deleted file mode 100644 index cc39955f..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/wooden_trapdoors.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_oak_trapdoor" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json deleted file mode 100644 index 16abb77c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_garden" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_forest.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_forest.json deleted file mode 100644 index 16abb77c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_forest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_garden" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_overworld.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_overworld.json deleted file mode 100644 index 16abb77c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/is_overworld.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_garden" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json b/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json deleted file mode 100644 index 16abb77c..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "minecraft:pale_garden" - ] -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/multi_noise_biome_source_parameter_list/overworld.json b/data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/multi_noise_biome_source_parameter_list/overworld.json deleted file mode 100644 index 4acb5d56..00000000 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/multi_noise_biome_source_parameter_list/overworld.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "preset": "minecraft:overworld_winter_drop" -} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/pack.mcmeta b/data/minecraft/datapacks/winter_drop/pack.mcmeta deleted file mode 100644 index cec534b4..00000000 --- a/data/minecraft/datapacks/winter_drop/pack.mcmeta +++ /dev/null @@ -1,13 +0,0 @@ -{ - "features": { - "enabled": [ - "minecraft:winter_drop" - ] - }, - "pack": { - "description": { - "translate": "dataPack.winter_drop.description" - }, - "pack_format": 57 - } -} \ No newline at end of file diff --git a/data/minecraft/enchantment/frost_walker.json b/data/minecraft/enchantment/frost_walker.json index d4313f5e..5bd83b7f 100644 --- a/data/minecraft/enchantment/frost_walker.json +++ b/data/minecraft/enchantment/frost_walker.json @@ -81,13 +81,28 @@ "trigger_game_event": "minecraft:block_place" }, "requirements": { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "flags": { - "is_on_ground": true + "condition": "minecraft:all_of", + "terms": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "flags": { + "is_on_ground": true + } + } + }, + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "vehicle": {} + } + } } - } + ] } } ] diff --git a/data/minecraft/enchantment/power.json b/data/minecraft/enchantment/power.json index 9f86f0e6..145936c2 100644 --- a/data/minecraft/enchantment/power.json +++ b/data/minecraft/enchantment/power.json @@ -10,7 +10,7 @@ "type": "minecraft:add", "value": { "type": "minecraft:linear", - "base": 0.5, + "base": 1.0, "per_level_above_first": 0.5 } }, diff --git a/data/minecraft/loot_table/blocks/chiseled_resin_bricks.json b/data/minecraft/loot_table/blocks/chiseled_resin_bricks.json new file mode 100644 index 00000000..10f6ba15 --- /dev/null +++ b/data/minecraft/loot_table/blocks/chiseled_resin_bricks.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:chiseled_resin_bricks" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/chiseled_resin_bricks" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/closed_eyeblossom.json b/data/minecraft/loot_table/blocks/closed_eyeblossom.json new file mode 100644 index 00000000..a15cac59 --- /dev/null +++ b/data/minecraft/loot_table/blocks/closed_eyeblossom.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:closed_eyeblossom" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/closed_eyeblossom" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/creaking_heart.json b/data/minecraft/loot_table/blocks/creaking_heart.json index 3190c9a3..69ec1a69 100644 --- a/data/minecraft/loot_table/blocks/creaking_heart.json +++ b/data/minecraft/loot_table/blocks/creaking_heart.json @@ -1,4 +1,70 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "minecraft:creaking_heart" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "function": "minecraft:apply_bonus", + "parameters": { + "bonusMultiplier": 1 + } + }, + { + "function": "minecraft:limit_count", + "limit": { + "max": 9.0 + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:resin_clump" + } + ] + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/creaking_heart" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/open_eyeblossom.json b/data/minecraft/loot_table/blocks/open_eyeblossom.json new file mode 100644 index 00000000..7f02f9e1 --- /dev/null +++ b/data/minecraft/loot_table/blocks/open_eyeblossom.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:open_eyeblossom" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/open_eyeblossom" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_hanging_moss.json b/data/minecraft/loot_table/blocks/pale_hanging_moss.json index 34df4809..6f06ee04 100644 --- a/data/minecraft/loot_table/blocks/pale_hanging_moss.json +++ b/data/minecraft/loot_table/blocks/pale_hanging_moss.json @@ -1,4 +1,44 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_hanging_moss" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_hanging_moss" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_moss_block.json b/data/minecraft/loot_table/blocks/pale_moss_block.json index 2c6c2985..8a535930 100644 --- a/data/minecraft/loot_table/blocks/pale_moss_block.json +++ b/data/minecraft/loot_table/blocks/pale_moss_block.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_moss_block" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_moss_block" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_moss_carpet.json b/data/minecraft/loot_table/blocks/pale_moss_carpet.json index 11c440e7..609106a6 100644 --- a/data/minecraft/loot_table/blocks/pale_moss_carpet.json +++ b/data/minecraft/loot_table/blocks/pale_moss_carpet.json @@ -1,4 +1,30 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "minecraft:pale_moss_carpet", + "condition": "minecraft:block_state_property", + "properties": { + "bottom": "true" + } + } + ], + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:pale_moss_carpet" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_moss_carpet" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_button.json b/data/minecraft/loot_table/blocks/pale_oak_button.json index d74e70b3..3782634d 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_button.json +++ b/data/minecraft/loot_table/blocks/pale_oak_button.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_button" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_button" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_door.json b/data/minecraft/loot_table/blocks/pale_oak_door.json index b5c2c624..e54f21a6 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_door.json +++ b/data/minecraft/loot_table/blocks/pale_oak_door.json @@ -1,4 +1,30 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "minecraft:pale_oak_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "minecraft:pale_oak_door" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_door" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_fence.json b/data/minecraft/loot_table/blocks/pale_oak_fence.json index d4c2b074..443e0156 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_fence.json +++ b/data/minecraft/loot_table/blocks/pale_oak_fence.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_fence" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_fence" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json b/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json index 97468de5..7614cd5c 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json +++ b/data/minecraft/loot_table/blocks/pale_oak_fence_gate.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_fence_gate" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_fence_gate" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json b/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json index 5d01eff3..93f5c08e 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json +++ b/data/minecraft/loot_table/blocks/pale_oak_hanging_sign.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_hanging_sign" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_hanging_sign" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_leaves.json b/data/minecraft/loot_table/blocks/pale_oak_leaves.json index f5d266df..1122938a 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_leaves.json +++ b/data/minecraft/loot_table/blocks/pale_oak_leaves.json @@ -1,4 +1,136 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + ], + "name": "minecraft:pale_oak_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "name": "minecraft:pale_oak_sapling" + } + ] + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_leaves" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_log.json b/data/minecraft/loot_table/blocks/pale_oak_log.json index d6dda4c7..4dc2e078 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_log.json +++ b/data/minecraft/loot_table/blocks/pale_oak_log.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_log" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_log" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_planks.json b/data/minecraft/loot_table/blocks/pale_oak_planks.json index 4bdf975a..0097b5e0 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_planks.json +++ b/data/minecraft/loot_table/blocks/pale_oak_planks.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_planks" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_planks" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json b/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json index 0868ed08..45f4fc49 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json +++ b/data/minecraft/loot_table/blocks/pale_oak_pressure_plate.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_pressure_plate" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_pressure_plate" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_sapling.json b/data/minecraft/loot_table/blocks/pale_oak_sapling.json index 6f40b964..960d922b 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_sapling.json +++ b/data/minecraft/loot_table/blocks/pale_oak_sapling.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_sapling" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_sapling" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_sign.json b/data/minecraft/loot_table/blocks/pale_oak_sign.json index 8ba6344a..d46ce7a9 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_sign.json +++ b/data/minecraft/loot_table/blocks/pale_oak_sign.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_sign" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_sign" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_slab.json b/data/minecraft/loot_table/blocks/pale_oak_slab.json index 4face22d..6170569b 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_slab.json +++ b/data/minecraft/loot_table/blocks/pale_oak_slab.json @@ -1,4 +1,35 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "minecraft:pale_oak_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:pale_oak_slab" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_slab" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_stairs.json b/data/minecraft/loot_table/blocks/pale_oak_stairs.json index 8fc8cc65..d64c5bf7 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_stairs.json +++ b/data/minecraft/loot_table/blocks/pale_oak_stairs.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_stairs" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_stairs" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json b/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json index 048ff598..9acb6ce1 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json +++ b/data/minecraft/loot_table/blocks/pale_oak_trapdoor.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_trapdoor" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_trapdoor" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/pale_oak_wood.json b/data/minecraft/loot_table/blocks/pale_oak_wood.json index 487d4bd8..128fc986 100644 --- a/data/minecraft/loot_table/blocks/pale_oak_wood.json +++ b/data/minecraft/loot_table/blocks/pale_oak_wood.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_wood" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/pale_oak_wood" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/potted_closed_eyeblossom.json b/data/minecraft/loot_table/blocks/potted_closed_eyeblossom.json new file mode 100644 index 00000000..2e7f5160 --- /dev/null +++ b/data/minecraft/loot_table/blocks/potted_closed_eyeblossom.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:closed_eyeblossom" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/potted_closed_eyeblossom" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/potted_open_eyeblossom.json b/data/minecraft/loot_table/blocks/potted_open_eyeblossom.json new file mode 100644 index 00000000..5b2e9d07 --- /dev/null +++ b/data/minecraft/loot_table/blocks/potted_open_eyeblossom.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:open_eyeblossom" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/potted_open_eyeblossom" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json b/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json index 23fb62c3..7ebed877 100644 --- a/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json +++ b/data/minecraft/loot_table/blocks/potted_pale_oak_sapling.json @@ -1,4 +1,36 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:pale_oak_sapling" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/potted_pale_oak_sapling" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/resin_block.json b/data/minecraft/loot_table/blocks/resin_block.json new file mode 100644 index 00000000..aff47617 --- /dev/null +++ b/data/minecraft/loot_table/blocks/resin_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:resin_block" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/resin_block" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/resin_brick_slab.json b/data/minecraft/loot_table/blocks/resin_brick_slab.json new file mode 100644 index 00000000..0c50e3e8 --- /dev/null +++ b/data/minecraft/loot_table/blocks/resin_brick_slab.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:resin_brick_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/resin_brick_slab" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/resin_brick_stairs.json b/data/minecraft/loot_table/blocks/resin_brick_stairs.json new file mode 100644 index 00000000..45cac065 --- /dev/null +++ b/data/minecraft/loot_table/blocks/resin_brick_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:resin_brick_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/resin_brick_stairs" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/resin_brick_wall.json b/data/minecraft/loot_table/blocks/resin_brick_wall.json new file mode 100644 index 00000000..8624725a --- /dev/null +++ b/data/minecraft/loot_table/blocks/resin_brick_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:resin_brick_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/resin_brick_wall" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/resin_bricks.json b/data/minecraft/loot_table/blocks/resin_bricks.json new file mode 100644 index 00000000..10fb8963 --- /dev/null +++ b/data/minecraft/loot_table/blocks/resin_bricks.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:resin_bricks" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/resin_bricks" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/resin_clump.json b/data/minecraft/loot_table/blocks/resin_clump.json new file mode 100644 index 00000000..d2f4b6f8 --- /dev/null +++ b/data/minecraft/loot_table/blocks/resin_clump.json @@ -0,0 +1,110 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": true, + "conditions": [ + { + "block": "minecraft:resin_clump", + "condition": "minecraft:block_state_property", + "properties": { + "down": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "minecraft:resin_clump", + "condition": "minecraft:block_state_property", + "properties": { + "up": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "minecraft:resin_clump", + "condition": "minecraft:block_state_property", + "properties": { + "north": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "minecraft:resin_clump", + "condition": "minecraft:block_state_property", + "properties": { + "south": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "minecraft:resin_clump", + "condition": "minecraft:block_state_property", + "properties": { + "west": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "minecraft:resin_clump", + "condition": "minecraft:block_state_property", + "properties": { + "east": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "count": -1.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:resin_clump" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/resin_clump" +} \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json b/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json index 4dc6cf4a..5254c198 100644 --- a/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json +++ b/data/minecraft/loot_table/blocks/stripped_pale_oak_log.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stripped_pale_oak_log" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/stripped_pale_oak_log" } \ No newline at end of file diff --git a/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json b/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json index ff80a591..ac053b60 100644 --- a/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json +++ b/data/minecraft/loot_table/blocks/stripped_pale_oak_wood.json @@ -1,4 +1,21 @@ { "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stripped_pale_oak_wood" + } + ], + "rolls": 1.0 + } + ], "random_sequence": "minecraft:blocks/stripped_pale_oak_wood" } \ No newline at end of file diff --git a/data/minecraft/loot_table/chests/woodland_mansion.json b/data/minecraft/loot_table/chests/woodland_mansion.json index ad13eda0..38fdd555 100644 --- a/data/minecraft/loot_table/chests/woodland_mansion.json +++ b/data/minecraft/loot_table/chests/woodland_mansion.json @@ -207,6 +207,22 @@ ], "name": "minecraft:beetroot_seeds", "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:resin_clump", + "weight": 50 } ], "rolls": { diff --git a/data/minecraft/loot_table/entities/creaking_transient.json b/data/minecraft/loot_table/entities/creaking_transient.json deleted file mode 100644 index a318df2e..00000000 --- a/data/minecraft/loot_table/entities/creaking_transient.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "minecraft:entity", - "random_sequence": "minecraft:entities/creaking_transient" -} \ No newline at end of file diff --git a/data/minecraft/recipe/chiseled_resin_bricks.json b/data/minecraft/recipe/chiseled_resin_bricks.json new file mode 100644 index 00000000..c01b3930 --- /dev/null +++ b/data/minecraft/recipe/chiseled_resin_bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "minecraft:resin_brick_slab" + }, + "pattern": [ + "#", + "#" + ], + "result": { + "count": 1, + "id": "minecraft:chiseled_resin_bricks" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/chiseled_resin_bricks_from_resin_bricks_stonecutting.json b/data/minecraft/recipe/chiseled_resin_bricks_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..747489c9 --- /dev/null +++ b/data/minecraft/recipe/chiseled_resin_bricks_from_resin_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "minecraft:resin_bricks", + "result": { + "count": 1, + "id": "minecraft:chiseled_resin_bricks" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/creaking_heart.json b/data/minecraft/recipe/creaking_heart.json new file mode 100644 index 00000000..3ce281cd --- /dev/null +++ b/data/minecraft/recipe/creaking_heart.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "L": "minecraft:pale_oak_log", + "R": "minecraft:resin_block" + }, + "pattern": [ + " L ", + " R ", + " L " + ], + "result": { + "count": 1, + "id": "minecraft:creaking_heart" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/gray_dye_from_closed_eyeblossom.json b/data/minecraft/recipe/gray_dye_from_closed_eyeblossom.json new file mode 100644 index 00000000..22214909 --- /dev/null +++ b/data/minecraft/recipe/gray_dye_from_closed_eyeblossom.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "gray_dye", + "ingredients": [ + "minecraft:closed_eyeblossom" + ], + "result": { + "count": 1, + "id": "minecraft:gray_dye" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/orange_dye_from_open_eyeblossom.json b/data/minecraft/recipe/orange_dye_from_open_eyeblossom.json new file mode 100644 index 00000000..39566d2e --- /dev/null +++ b/data/minecraft/recipe/orange_dye_from_open_eyeblossom.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "orange_dye", + "ingredients": [ + "minecraft:open_eyeblossom" + ], + "result": { + "count": 1, + "id": "minecraft:orange_dye" + } +} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_moss_carpet.json b/data/minecraft/recipe/pale_moss_carpet.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_moss_carpet.json rename to data/minecraft/recipe/pale_moss_carpet.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_boat.json b/data/minecraft/recipe/pale_oak_boat.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_boat.json rename to data/minecraft/recipe/pale_oak_boat.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_button.json b/data/minecraft/recipe/pale_oak_button.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_button.json rename to data/minecraft/recipe/pale_oak_button.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_chest_boat.json b/data/minecraft/recipe/pale_oak_chest_boat.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_chest_boat.json rename to data/minecraft/recipe/pale_oak_chest_boat.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_door.json b/data/minecraft/recipe/pale_oak_door.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_door.json rename to data/minecraft/recipe/pale_oak_door.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_fence.json b/data/minecraft/recipe/pale_oak_fence.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_fence.json rename to data/minecraft/recipe/pale_oak_fence.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_fence_gate.json b/data/minecraft/recipe/pale_oak_fence_gate.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_fence_gate.json rename to data/minecraft/recipe/pale_oak_fence_gate.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_hanging_sign.json b/data/minecraft/recipe/pale_oak_hanging_sign.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_hanging_sign.json rename to data/minecraft/recipe/pale_oak_hanging_sign.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_planks.json b/data/minecraft/recipe/pale_oak_planks.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_planks.json rename to data/minecraft/recipe/pale_oak_planks.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_pressure_plate.json b/data/minecraft/recipe/pale_oak_pressure_plate.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_pressure_plate.json rename to data/minecraft/recipe/pale_oak_pressure_plate.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_sign.json b/data/minecraft/recipe/pale_oak_sign.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_sign.json rename to data/minecraft/recipe/pale_oak_sign.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_slab.json b/data/minecraft/recipe/pale_oak_slab.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_slab.json rename to data/minecraft/recipe/pale_oak_slab.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_stairs.json b/data/minecraft/recipe/pale_oak_stairs.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_stairs.json rename to data/minecraft/recipe/pale_oak_stairs.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_trapdoor.json b/data/minecraft/recipe/pale_oak_trapdoor.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_trapdoor.json rename to data/minecraft/recipe/pale_oak_trapdoor.json diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_wood.json b/data/minecraft/recipe/pale_oak_wood.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/pale_oak_wood.json rename to data/minecraft/recipe/pale_oak_wood.json diff --git a/data/minecraft/recipe/resin_block.json b/data/minecraft/recipe/resin_block.json new file mode 100644 index 00000000..473c9e23 --- /dev/null +++ b/data/minecraft/recipe/resin_block.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "minecraft:resin_clump" + }, + "pattern": [ + "###", + "###", + "###" + ], + "result": { + "count": 1, + "id": "minecraft:resin_block" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick.json b/data/minecraft/recipe/resin_brick.json new file mode 100644 index 00000000..a686fe97 --- /dev/null +++ b/data/minecraft/recipe/resin_brick.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.1, + "ingredient": "minecraft:resin_clump", + "result": { + "id": "minecraft:resin_brick" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick_slab.json b/data/minecraft/recipe/resin_brick_slab.json new file mode 100644 index 00000000..6ae5a421 --- /dev/null +++ b/data/minecraft/recipe/resin_brick_slab.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "minecraft:resin_bricks" + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "minecraft:resin_brick_slab" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick_slab_from_resin_bricks_stonecutting.json b/data/minecraft/recipe/resin_brick_slab_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..f235fbf1 --- /dev/null +++ b/data/minecraft/recipe/resin_brick_slab_from_resin_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "minecraft:resin_bricks", + "result": { + "count": 2, + "id": "minecraft:resin_brick_slab" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick_stairs.json b/data/minecraft/recipe/resin_brick_stairs.json new file mode 100644 index 00000000..29f45369 --- /dev/null +++ b/data/minecraft/recipe/resin_brick_stairs.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "minecraft:resin_bricks" + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "minecraft:resin_brick_stairs" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick_stairs_from_resin_bricks_stonecutting.json b/data/minecraft/recipe/resin_brick_stairs_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..51523720 --- /dev/null +++ b/data/minecraft/recipe/resin_brick_stairs_from_resin_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "minecraft:resin_bricks", + "result": { + "count": 1, + "id": "minecraft:resin_brick_stairs" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick_wall.json b/data/minecraft/recipe/resin_brick_wall.json new file mode 100644 index 00000000..d78e468a --- /dev/null +++ b/data/minecraft/recipe/resin_brick_wall.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": "minecraft:resin_bricks" + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "minecraft:resin_brick_wall" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_brick_wall_from_resin_bricks_stonecutting.json b/data/minecraft/recipe/resin_brick_wall_from_resin_bricks_stonecutting.json new file mode 100644 index 00000000..278b4dd1 --- /dev/null +++ b/data/minecraft/recipe/resin_brick_wall_from_resin_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "minecraft:resin_bricks", + "result": { + "count": 1, + "id": "minecraft:resin_brick_wall" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_bricks.json b/data/minecraft/recipe/resin_bricks.json new file mode 100644 index 00000000..38d41654 --- /dev/null +++ b/data/minecraft/recipe/resin_bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "minecraft:resin_brick" + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 1, + "id": "minecraft:resin_bricks" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/resin_clump.json b/data/minecraft/recipe/resin_clump.json new file mode 100644 index 00000000..e11603f0 --- /dev/null +++ b/data/minecraft/recipe/resin_clump.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "minecraft:resin_block" + ], + "result": { + "count": 9, + "id": "minecraft:resin_clump" + } +} \ No newline at end of file diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/recipe/stripped_pale_oak_wood.json b/data/minecraft/recipe/stripped_pale_oak_wood.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/recipe/stripped_pale_oak_wood.json rename to data/minecraft/recipe/stripped_pale_oak_wood.json diff --git a/data/minecraft/recipe/suspicious_stew_from_allium.json b/data/minecraft/recipe/suspicious_stew_from_allium.json index a1a74114..931613c0 100644 --- a/data/minecraft/recipe/suspicious_stew_from_allium.json +++ b/data/minecraft/recipe/suspicious_stew_from_allium.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 80, + "duration": 60, "id": "minecraft:fire_resistance" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_azure_bluet.json b/data/minecraft/recipe/suspicious_stew_from_azure_bluet.json index 8d7a4cd7..0f3006c9 100644 --- a/data/minecraft/recipe/suspicious_stew_from_azure_bluet.json +++ b/data/minecraft/recipe/suspicious_stew_from_azure_bluet.json @@ -12,6 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { + "duration": 220, "id": "minecraft:blindness" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_closed_eyeblossom.json b/data/minecraft/recipe/suspicious_stew_from_closed_eyeblossom.json new file mode 100644 index 00000000..634b5159 --- /dev/null +++ b/data/minecraft/recipe/suspicious_stew_from_closed_eyeblossom.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "suspicious_stew", + "ingredients": [ + "minecraft:bowl", + "minecraft:brown_mushroom", + "minecraft:red_mushroom", + "minecraft:closed_eyeblossom" + ], + "result": { + "components": { + "minecraft:suspicious_stew_effects": [ + { + "duration": 140, + "id": "minecraft:nausea" + } + ] + }, + "count": 1, + "id": "minecraft:suspicious_stew" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/suspicious_stew_from_cornflower.json b/data/minecraft/recipe/suspicious_stew_from_cornflower.json index 22f6e150..2f05a427 100644 --- a/data/minecraft/recipe/suspicious_stew_from_cornflower.json +++ b/data/minecraft/recipe/suspicious_stew_from_cornflower.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 120, + "duration": 100, "id": "minecraft:jump_boost" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_lily_of_the_valley.json b/data/minecraft/recipe/suspicious_stew_from_lily_of_the_valley.json index 44e0dad1..d83720a0 100644 --- a/data/minecraft/recipe/suspicious_stew_from_lily_of_the_valley.json +++ b/data/minecraft/recipe/suspicious_stew_from_lily_of_the_valley.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 240, + "duration": 220, "id": "minecraft:poison" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_open_eyeblossom.json b/data/minecraft/recipe/suspicious_stew_from_open_eyeblossom.json new file mode 100644 index 00000000..2eba8b62 --- /dev/null +++ b/data/minecraft/recipe/suspicious_stew_from_open_eyeblossom.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "group": "suspicious_stew", + "ingredients": [ + "minecraft:bowl", + "minecraft:brown_mushroom", + "minecraft:red_mushroom", + "minecraft:open_eyeblossom" + ], + "result": { + "components": { + "minecraft:suspicious_stew_effects": [ + { + "duration": 220, + "id": "minecraft:blindness" + } + ] + }, + "count": 1, + "id": "minecraft:suspicious_stew" + } +} \ No newline at end of file diff --git a/data/minecraft/recipe/suspicious_stew_from_orange_tulip.json b/data/minecraft/recipe/suspicious_stew_from_orange_tulip.json index 2188593b..ce565dd4 100644 --- a/data/minecraft/recipe/suspicious_stew_from_orange_tulip.json +++ b/data/minecraft/recipe/suspicious_stew_from_orange_tulip.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 180, + "duration": 140, "id": "minecraft:weakness" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_oxeye_daisy.json b/data/minecraft/recipe/suspicious_stew_from_oxeye_daisy.json index b1d419af..831f4f87 100644 --- a/data/minecraft/recipe/suspicious_stew_from_oxeye_daisy.json +++ b/data/minecraft/recipe/suspicious_stew_from_oxeye_daisy.json @@ -12,6 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { + "duration": 140, "id": "minecraft:regeneration" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_pink_tulip.json b/data/minecraft/recipe/suspicious_stew_from_pink_tulip.json index 173ecec6..2fcc231b 100644 --- a/data/minecraft/recipe/suspicious_stew_from_pink_tulip.json +++ b/data/minecraft/recipe/suspicious_stew_from_pink_tulip.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 180, + "duration": 140, "id": "minecraft:weakness" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_red_tulip.json b/data/minecraft/recipe/suspicious_stew_from_red_tulip.json index 72f6eec6..fa00489e 100644 --- a/data/minecraft/recipe/suspicious_stew_from_red_tulip.json +++ b/data/minecraft/recipe/suspicious_stew_from_red_tulip.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 180, + "duration": 140, "id": "minecraft:weakness" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_white_tulip.json b/data/minecraft/recipe/suspicious_stew_from_white_tulip.json index fc056df2..c0b77fc7 100644 --- a/data/minecraft/recipe/suspicious_stew_from_white_tulip.json +++ b/data/minecraft/recipe/suspicious_stew_from_white_tulip.json @@ -12,7 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { - "duration": 180, + "duration": 140, "id": "minecraft:weakness" } ] diff --git a/data/minecraft/recipe/suspicious_stew_from_wither_rose.json b/data/minecraft/recipe/suspicious_stew_from_wither_rose.json index 256de104..a6db3131 100644 --- a/data/minecraft/recipe/suspicious_stew_from_wither_rose.json +++ b/data/minecraft/recipe/suspicious_stew_from_wither_rose.json @@ -12,6 +12,7 @@ "components": { "minecraft:suspicious_stew_effects": [ { + "duration": 140, "id": "minecraft:wither" } ] diff --git a/data/minecraft/structure/ancient_city/city/entrance/entrance_connector.nbt b/data/minecraft/structure/ancient_city/city/entrance/entrance_connector.nbt index 3dac2d12..86f0f9d2 100644 --- a/data/minecraft/structure/ancient_city/city/entrance/entrance_connector.nbt +++ b/data/minecraft/structure/ancient_city/city/entrance/entrance_connector.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e638cf22311deb71e7c20b8f52edb654b0d99631c63719f44a3255db89b9489 -size 9417 +oid sha256:823a2ddb5e368e114803eb9f00b0cb74d1882b776034a385f6884ea3af0a8ce7 +size 9415 diff --git a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_1.nbt b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_1.nbt index 4e3d5883..365d5e3d 100644 --- a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_1.nbt +++ b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29ccadb7bc10dfa202a6ac2b65ff77b0f1370e84d1b44c2f546c3ffce113a780 -size 9752 +oid sha256:23ccd853597bb2375e0149e4651b549d11e7ce8a96aaa5a1ff67b3ce177d0887 +size 9751 diff --git a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_2.nbt b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_2.nbt index ad8af760..a354ae22 100644 --- a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_2.nbt +++ b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:203a84e64b97965eaef7b2278721fce7c6b5a81025156e1a2d60af34fc19d084 -size 13778 +oid sha256:2e9cda58ad4bc88670d5962661c7903a57839e721e60e8518b6836d5e16d4b8a +size 13777 diff --git a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_3.nbt b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_3.nbt index bae37106..544bec90 100644 --- a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_3.nbt +++ b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dfdb99f3b533b53f6e236a7e9823e659a9a585b9624ba82bbc7d5c3619fba8d -size 12154 +oid sha256:1f2ba2b3c69ae0de97d818e8b61a8246e62aeaab7a9fc21a7b527296715b1a54 +size 12152 diff --git a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_4.nbt b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_4.nbt index cb552991..6e46196f 100644 --- a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_4.nbt +++ b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4143cfa097c741b2b0a8a576f02c3bf10fe0073bb1c73d3691738ac612067afc -size 11789 +oid sha256:fdb71e2d694c1292f55735046ae0c11e47707657307a62d8c6b46400b2a66ca6 +size 11786 diff --git a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_5.nbt b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_5.nbt index 9e32876b..67e4bf3e 100644 --- a/data/minecraft/structure/ancient_city/city/entrance/entrance_path_5.nbt +++ b/data/minecraft/structure/ancient_city/city/entrance/entrance_path_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4197f0f5cc59ba4812894830f5fbc392a54e3175a2e8c670498494825f0bd5dd -size 9069 +oid sha256:0d82b042122ae4a5d98274e1233580ce155f211b1d9db12d5674a0fdd6fbd112 +size 9067 diff --git a/data/minecraft/structure/ancient_city/city_center/city_center_1.nbt b/data/minecraft/structure/ancient_city/city_center/city_center_1.nbt index f341471f..1058dd3e 100644 --- a/data/minecraft/structure/ancient_city/city_center/city_center_1.nbt +++ b/data/minecraft/structure/ancient_city/city_center/city_center_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9856162a2a13d89986d6da6c882dc3606925d1dc4db072220d75f89f7b813b62 -size 26261 +oid sha256:7888e4014fb4d51e7658958426d7d8f9490b15e257c8f9a4cd0ddb8f0ed3e751 +size 26259 diff --git a/data/minecraft/structure/ancient_city/city_center/city_center_2.nbt b/data/minecraft/structure/ancient_city/city_center/city_center_2.nbt index 7e4bad95..dd0aacc8 100644 --- a/data/minecraft/structure/ancient_city/city_center/city_center_2.nbt +++ b/data/minecraft/structure/ancient_city/city_center/city_center_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d7347b14ca33ece2486fa09ba46a8f6848d59390f75fc97eef4ad256ef8a68b -size 26656 +oid sha256:959d03cb955e168dc3c875bf0df55332f6075b3422c4cfb0d0d6b030d23d3c59 +size 26676 diff --git a/data/minecraft/structure/ancient_city/city_center/city_center_3.nbt b/data/minecraft/structure/ancient_city/city_center/city_center_3.nbt index 4bee8769..92c7db22 100644 --- a/data/minecraft/structure/ancient_city/city_center/city_center_3.nbt +++ b/data/minecraft/structure/ancient_city/city_center/city_center_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:248b4c16a9a84d08604ec8673aa355847f72dc23896ea8d18c24208a51af1097 -size 26124 +oid sha256:92d00cec6098df181975d7422721150a47356564fdcf677255848d421560aa4e +size 26122 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/bottom_1.nbt b/data/minecraft/structure/ancient_city/city_center/walls/bottom_1.nbt index 2cd69aec..7299a5f7 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/bottom_1.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/bottom_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:744e20c89838ab02f583e1c2b403a76cac4787ab845e6cf6f12cb6b61adeeb84 -size 7473 +oid sha256:f3d4e77e601cf2918da46d66833d39f4278d1f362f3672724698332d3f2a7e1f +size 7472 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/bottom_2.nbt b/data/minecraft/structure/ancient_city/city_center/walls/bottom_2.nbt index f10894ca..448c0cbc 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/bottom_2.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/bottom_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4042bc3a8722a5b271ad129d5d3b9833e66d10ed22b923148dadac0e42c5913f -size 7002 +oid sha256:40d66aab8b7e975f2d704938ebf8452c05daf3d8117328cb50c6f27729e5fb1e +size 7001 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/bottom_left_corner.nbt b/data/minecraft/structure/ancient_city/city_center/walls/bottom_left_corner.nbt index 66b997f0..fa856088 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/bottom_left_corner.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/bottom_left_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:499db8be5698cc63dc09edee3158b41761c3712665d02845bf9e36e570a66f89 -size 2612 +oid sha256:d121001109f2dae19085e98d04d15b57f6f441fc2ee67e33b2736a81887c928a +size 2611 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner.nbt b/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner.nbt index 31c0e0e9..82ef139c 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6af9b62de66bf3762c55212fd484528236e4e2889250933c7329f551a1673b7e -size 3048 +oid sha256:110f413260a34b9379cfd2dd0ba610a075ca35e9aab43ead965d4428bc189ef2 +size 3047 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_1.nbt b/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_1.nbt index 14333864..3fa8f597 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_1.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2aa0c0ef8d568d93b371f8e5077ed7a73ce04ae9a5b0d61f714a39b4021db62 -size 2597 +oid sha256:779b296455f9e918a378e2a38fa8b7090176bf971abe6738c51f4ead019dd719 +size 2596 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_2.nbt b/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_2.nbt index 7389c83b..7ae5a889 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_2.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/bottom_right_corner_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cb3bb42d9b528bdaf63129c0df3eec3f37bf1a6d63476e91d928fd4ac652a05 -size 2668 +oid sha256:90d23d66e97e5c01106b1e52342fbe387da700a83e043e4cb2e2591f7b2aadcd +size 2667 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/left.nbt b/data/minecraft/structure/ancient_city/city_center/walls/left.nbt index 65967c3e..c6f37bb7 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/left.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/left.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aab15972e90b5d76df82c53788435cb3afdc7a0788780687e2f25069d72ff151 -size 3183 +oid sha256:18c2bcd95cd325ff0b9276d4a77d62c9e43c48a28e873e7f2a9c98695b227484 +size 3182 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/right.nbt b/data/minecraft/structure/ancient_city/city_center/walls/right.nbt index 8978863e..dc40ea08 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/right.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/right.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:546d30cbe95313e161cc1dea005d76a916806d91d11a50a45f189959c0a35c64 -size 3178 +oid sha256:b6f7f0b11946c9e4c6096bc3db6b7272dd09da0fdba3c7488dc609322277b2db +size 3177 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/top.nbt b/data/minecraft/structure/ancient_city/city_center/walls/top.nbt index e450bcde..bcc21300 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/top.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3423246080175e7691d28f03215fcd0d6bd2bf1c3e5085261eb7d382f96968ff -size 7119 +oid sha256:45abba184f9e7f9b5c923324ede9540fd4d13fac2e947a9516c772269028b9a1 +size 7118 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/top_left_corner.nbt b/data/minecraft/structure/ancient_city/city_center/walls/top_left_corner.nbt index eebd80d9..43249bdb 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/top_left_corner.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/top_left_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdd54e6a43934f627cff470ce5c6573ec01b648b71a4b932b3fe36bd63a8b1ea -size 2598 +oid sha256:fca0d27b58c083ab8cee3fe03998653f32e7ae76ee88df383fafc31f8405bd90 +size 2597 diff --git a/data/minecraft/structure/ancient_city/city_center/walls/top_right_corner.nbt b/data/minecraft/structure/ancient_city/city_center/walls/top_right_corner.nbt index b4bcb424..9f6a0969 100644 --- a/data/minecraft/structure/ancient_city/city_center/walls/top_right_corner.nbt +++ b/data/minecraft/structure/ancient_city/city_center/walls/top_right_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb1d32714cf7c7462a96d9b96987f6a5e7f40e32ed07532b41e52c46862f1acf -size 2644 +oid sha256:3963266d7580b9b7ac675ce300c9d35a751916b1b5ea97e84a5b2333c8742689 +size 2643 diff --git a/data/minecraft/structure/ancient_city/structures/barracks.nbt b/data/minecraft/structure/ancient_city/structures/barracks.nbt index 00c7d6f1..a5afa272 100644 --- a/data/minecraft/structure/ancient_city/structures/barracks.nbt +++ b/data/minecraft/structure/ancient_city/structures/barracks.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62fa0806b5e9dc19943cbab4e2ebbc3755f59bd9d7da89a2e2fd92424ec9d961 -size 5634 +oid sha256:d5af96d34a63407cbdda0cd0c8c2b878899d8e944cc054e852e4353cb8a75aaa +size 5633 diff --git a/data/minecraft/structure/ancient_city/structures/camp_1.nbt b/data/minecraft/structure/ancient_city/structures/camp_1.nbt index 109a92e1..4e37d284 100644 --- a/data/minecraft/structure/ancient_city/structures/camp_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/camp_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e72a65f29fd68e3b62296118c8a3d5189289f82c44ffa106d6cc13cfdf69b10 -size 1164 +oid sha256:f8003cdb17ec3537ddb74b46408a763626d5ad284b5aa6419a11ee7dfd1a10b9 +size 1165 diff --git a/data/minecraft/structure/ancient_city/structures/camp_2.nbt b/data/minecraft/structure/ancient_city/structures/camp_2.nbt index f7adc896..3031ce22 100644 --- a/data/minecraft/structure/ancient_city/structures/camp_2.nbt +++ b/data/minecraft/structure/ancient_city/structures/camp_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69c82cda533ba53cf07ffe136c468220123697f4fc55e1c105e39ecdc1f4ec2d -size 1274 +oid sha256:d9b646e951eb83117f052add8f5dac4b007411d9bb7e74975469403100b505ac +size 1272 diff --git a/data/minecraft/structure/ancient_city/structures/camp_3.nbt b/data/minecraft/structure/ancient_city/structures/camp_3.nbt index 1bdce851..18266861 100644 --- a/data/minecraft/structure/ancient_city/structures/camp_3.nbt +++ b/data/minecraft/structure/ancient_city/structures/camp_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1b07f4f92d675924672025da1b07c3fb4553c138f7e6010bcbd2afded1f2ae1 -size 1017 +oid sha256:23eb7c40bee473fac6dba13a2eeab1afd956b3eb09a133e9ff79959874e5642d +size 1015 diff --git a/data/minecraft/structure/ancient_city/structures/chamber_1.nbt b/data/minecraft/structure/ancient_city/structures/chamber_1.nbt index d7b7dd8e..bbc3562f 100644 --- a/data/minecraft/structure/ancient_city/structures/chamber_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/chamber_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0214e897ab7b4fbbda53ad8789d44d9010241b7ab9d31200b0b5fd0c11962b8 -size 2536 +oid sha256:6e3dc78b5240f1298a2372b40f7db47663f058c3ccaf9794faaf3d25b2819dd6 +size 2535 diff --git a/data/minecraft/structure/ancient_city/structures/chamber_2.nbt b/data/minecraft/structure/ancient_city/structures/chamber_2.nbt index 8630f1a2..32cedc94 100644 --- a/data/minecraft/structure/ancient_city/structures/chamber_2.nbt +++ b/data/minecraft/structure/ancient_city/structures/chamber_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9113c3974f9c10eaee56a8d4c0140d4b34e9dec8776ddd32cb68f350a0f94fb2 -size 1312 +oid sha256:030e087e477f453eda22bbd5d84063e0912f8b18b7680e2727e6c3a80915d60a +size 1311 diff --git a/data/minecraft/structure/ancient_city/structures/chamber_3.nbt b/data/minecraft/structure/ancient_city/structures/chamber_3.nbt index c31b91a1..be9b4d4c 100644 --- a/data/minecraft/structure/ancient_city/structures/chamber_3.nbt +++ b/data/minecraft/structure/ancient_city/structures/chamber_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85aabc1c7bb5ace0c25e1c569cf78d36afe480624c828987616c31a1d0324892 -size 1101 +oid sha256:37824bdcb8647628a786cf8dcc298b5c4c06659f47e95442c543b56cc75eed54 +size 1100 diff --git a/data/minecraft/structure/ancient_city/structures/ice_box_1.nbt b/data/minecraft/structure/ancient_city/structures/ice_box_1.nbt index a39a3eda..08ce1d22 100644 --- a/data/minecraft/structure/ancient_city/structures/ice_box_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/ice_box_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44e2357b56af088c39fafa2322da3bc56e21058cb0df5b8e8ed3e5cd944a7b12 -size 3908 +oid sha256:dc9a8e771975d02d23c7400134b40c4dc4b4447bd49585bbad4ac04e3f1e2fe2 +size 3907 diff --git a/data/minecraft/structure/ancient_city/structures/large_pillar_1.nbt b/data/minecraft/structure/ancient_city/structures/large_pillar_1.nbt index ccfaa8c7..b823e326 100644 --- a/data/minecraft/structure/ancient_city/structures/large_pillar_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/large_pillar_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e50e99f13608aa03c5ff3c500a48b386d08a4085b47be77959d231045ea6e136 -size 1477 +oid sha256:565d4d0b7f0ffa8ca23c47bae9dfd6f8a947fafbfc95ec2b0494f010149eafe9 +size 1476 diff --git a/data/minecraft/structure/ancient_city/structures/large_ruin_1.nbt b/data/minecraft/structure/ancient_city/structures/large_ruin_1.nbt index fe4e96d3..ed442200 100644 --- a/data/minecraft/structure/ancient_city/structures/large_ruin_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/large_ruin_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ad812dc1949f9fcb4efc54ac955ba784c41c1b3279812fa0df29b6b03c2f188 -size 398 +oid sha256:70f64505d423d3c319042df588098733437b3a3c356054ce075476e0a7482dcc +size 396 diff --git a/data/minecraft/structure/ancient_city/structures/medium_pillar_1.nbt b/data/minecraft/structure/ancient_city/structures/medium_pillar_1.nbt index cb45bbde..88a7ad23 100644 --- a/data/minecraft/structure/ancient_city/structures/medium_pillar_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/medium_pillar_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bd3a7d4765cc6df560ffdd62d6d697477f65c03c1f119176dd24500a32975bc -size 960 +oid sha256:36100fcfcdeacd91142d1a393f8a32aaece692d677d2537853f057670c65f144 +size 959 diff --git a/data/minecraft/structure/ancient_city/structures/medium_ruin_1.nbt b/data/minecraft/structure/ancient_city/structures/medium_ruin_1.nbt index fabf3979..62d9fe0e 100644 --- a/data/minecraft/structure/ancient_city/structures/medium_ruin_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/medium_ruin_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55debdf8f340506814156c6941f65ac2bd9e7b3deb677186fa02a0056507c593 -size 327 +oid sha256:4b8e5f8dcf2a4a25d0fcd142da9e8c8dedd9b9dd90b8d605d8a7c715cea832dd +size 326 diff --git a/data/minecraft/structure/ancient_city/structures/medium_ruin_2.nbt b/data/minecraft/structure/ancient_city/structures/medium_ruin_2.nbt index fc0b6833..a264ed81 100644 --- a/data/minecraft/structure/ancient_city/structures/medium_ruin_2.nbt +++ b/data/minecraft/structure/ancient_city/structures/medium_ruin_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5770e65f8a5d04d241554944b5d42dc894a6ff9a8ab499f49cd19adc8dcd7014 -size 353 +oid sha256:993099d30a0a7465910e56242c1b26188d41895a881d9a3342a3580b3a29a2ce +size 352 diff --git a/data/minecraft/structure/ancient_city/structures/sauna_1.nbt b/data/minecraft/structure/ancient_city/structures/sauna_1.nbt index f9ceb02d..cc03323c 100644 --- a/data/minecraft/structure/ancient_city/structures/sauna_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/sauna_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a646f51f5f9e6ffafb83a688b257c11d9d1f50790c43670463dba07b0efbc58 -size 6958 +oid sha256:77d0a4ebe772d2528cc4ab35d2a75133ff7549b6c5c3ee31c25556ca0979139d +size 6957 diff --git a/data/minecraft/structure/ancient_city/structures/small_ruin_1.nbt b/data/minecraft/structure/ancient_city/structures/small_ruin_1.nbt index 9ca94c2d..fba30423 100644 --- a/data/minecraft/structure/ancient_city/structures/small_ruin_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/small_ruin_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba015b1949f4310cdb700ad68a73836ecaec84809f3c8d13561e13f113a57fb3 -size 315 +oid sha256:9e344cab82a07330f7a98656f4046215561a64b0a8713f5a38ff4efc65a80bbf +size 313 diff --git a/data/minecraft/structure/ancient_city/structures/small_ruin_2.nbt b/data/minecraft/structure/ancient_city/structures/small_ruin_2.nbt index 2bf532dd..cb734849 100644 --- a/data/minecraft/structure/ancient_city/structures/small_ruin_2.nbt +++ b/data/minecraft/structure/ancient_city/structures/small_ruin_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c936e67ee32b00e08ce69ad291c0faaa8ed00f3d9d550e4cdfc808f46f5127d1 -size 310 +oid sha256:4ee5235f0959a3c8b23e093569b33bae8dfdfb46c58393b9029503af18a6eca4 +size 309 diff --git a/data/minecraft/structure/ancient_city/structures/small_statue.nbt b/data/minecraft/structure/ancient_city/structures/small_statue.nbt index 758b2062..2b2e4be1 100644 --- a/data/minecraft/structure/ancient_city/structures/small_statue.nbt +++ b/data/minecraft/structure/ancient_city/structures/small_statue.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e75471a5186695d7c2474a2abfdb395cdf1aac358adfb5eb0b388ac6a7d6bfe -size 893 +oid sha256:6ce98efd5acb5c2c3a83b4df2fc656825b5b27bb96cd558f393682f078538bc1 +size 891 diff --git a/data/minecraft/structure/ancient_city/structures/tall_ruin_1.nbt b/data/minecraft/structure/ancient_city/structures/tall_ruin_1.nbt index 7b836991..46c2ab7d 100644 --- a/data/minecraft/structure/ancient_city/structures/tall_ruin_1.nbt +++ b/data/minecraft/structure/ancient_city/structures/tall_ruin_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d7371a367c2ce633cca39b2f18541a41db28cd1ebdc2c49baf524db63d076da -size 2794 +oid sha256:02b23969284d1b223290dfb8f0c82116f611d2bd32795d21a710a6625f9f4fb1 +size 2792 diff --git a/data/minecraft/structure/ancient_city/structures/tall_ruin_2.nbt b/data/minecraft/structure/ancient_city/structures/tall_ruin_2.nbt index a390daf5..d521a1f2 100644 --- a/data/minecraft/structure/ancient_city/structures/tall_ruin_2.nbt +++ b/data/minecraft/structure/ancient_city/structures/tall_ruin_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:493a80c071a65a6cd16ea4df5f72ffb76cf930e2dc07e327a49e3c59ddd9f52a -size 3487 +oid sha256:96794e34297fdbb76273ecb69e7f6f28e0cc370ae2426d40109183c43533ce58 +size 3486 diff --git a/data/minecraft/structure/ancient_city/structures/tall_ruin_3.nbt b/data/minecraft/structure/ancient_city/structures/tall_ruin_3.nbt index 9718b9ea..6fdc4f18 100644 --- a/data/minecraft/structure/ancient_city/structures/tall_ruin_3.nbt +++ b/data/minecraft/structure/ancient_city/structures/tall_ruin_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86438a3f54d4784904dc0b75225e86da19e47f60a26a65079bb898109a6c2f1c -size 1522 +oid sha256:bd2dcd6cc9e4283d5ab6729586b2d6d8da4481e56ae133aa633c14cb8069dd8d +size 1521 diff --git a/data/minecraft/structure/ancient_city/structures/tall_ruin_4.nbt b/data/minecraft/structure/ancient_city/structures/tall_ruin_4.nbt index 71a42b81..af36eebc 100644 --- a/data/minecraft/structure/ancient_city/structures/tall_ruin_4.nbt +++ b/data/minecraft/structure/ancient_city/structures/tall_ruin_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e17836a790a5f1768322b3e2e5064460781b66eb93ca690e15c3c93d8f16975 -size 2297 +oid sha256:c580d8648d523a919fff9458595f45f0ff586ba44a9c5593d44861b5791384f1 +size 2295 diff --git a/data/minecraft/structure/ancient_city/walls/intact_corner_wall_1.nbt b/data/minecraft/structure/ancient_city/walls/intact_corner_wall_1.nbt index 350e2f38..fd381614 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_corner_wall_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_corner_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ffcf7aa9adfd7c0d47075e6bb6a7b3e2996c3ed751ce581d2583ea0b253316c9 -size 3838 +oid sha256:eabc111d53b090bc74f3bab6374f1ae9554b765f6573ab74a19765bd942329cd +size 3836 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_1.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_1.nbt index 82e913c3..de1f83eb 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e385c96d3f83ce1e172da287958b32546ff0c89edaf195abb8588fb82244df3 -size 2027 +oid sha256:f66497a243142ac646617d69e9b397a32285febd3084b637eef6fbc6695c5947 +size 2026 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_2.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_2.nbt index 2a330f85..00a37005 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_2.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:392682eb9751eed63762b0d720323d6c344944d1951a778feb07af9bcec5ee75 +oid sha256:3428ba502df1144e517fb6190b71257ba6d6c32fd1106fb3a66dfc96ed4ddff0 size 2006 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_bridge.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_bridge.nbt index 336b50e8..cfe873cd 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_bridge.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_bridge.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5665b9e8bd684dec10209fd88203b248820307fd27ea4f70626758ae8916e343 -size 2721 +oid sha256:712886bddcbafc3e900ed2c0f1d4f8b3ac288689409d7be1e70fbb8541c8bad3 +size 2720 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_passage_1.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_passage_1.nbt index dc56721f..c050b982 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_passage_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_passage_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b30fbb5a90ba7614018eb69775856ae6aa259acf18514dee93eb9683cfc5e85 -size 1662 +oid sha256:c8a4428a6367611f5ad78672a6b40246cfe69bd09231694f4a730cfb5b316105 +size 1661 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_1.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_1.nbt index 31302bb5..42b0ab8a 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93c2f13c06eadd2b016c8d6537af63be16a09e53934c1418a2190196ff6e8060 -size 2119 +oid sha256:147e37200643d8357fcd2c0ad07f88f3a92f0bf1e4dba40c447450648f822425 +size 2118 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_2.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_2.nbt index 0c8fd654..6274ed1c 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_2.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec29840cb40d8f307e3c62dc5fedf24fd445c30489dca886ed7e958987e82f56 -size 2170 +oid sha256:241d38f5ee0ecafe53882a664370bb8b6bcd219336e56dcc142d996c64876ae6 +size 2169 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_3.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_3.nbt index cbffae5f..3e001718 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_3.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8996ef715f5174a9dad54c8d465b320fee28cfa92625c74a008522a56b41d9a5 -size 2157 +oid sha256:16da322f96373ce4a50adbcf06971d9af7b8abe33d91ac470b1c29e2d7d9fa62 +size 2155 diff --git a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_4.nbt b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_4.nbt index d6f2e88a..c143c257 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_4.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_horizontal_wall_stairs_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bead5d7b14be11496255cabb91989f0de0bec0b22c1299ae0a0d656b1b33e47 -size 2055 +oid sha256:6ac835ec10951c46390f79dc0549e6bd1044c59ff4ab784ca4d5de1e3f50a31c +size 2054 diff --git a/data/minecraft/structure/ancient_city/walls/intact_intersection_wall_1.nbt b/data/minecraft/structure/ancient_city/walls/intact_intersection_wall_1.nbt index 47ad1c1c..f877a20f 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_intersection_wall_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_intersection_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f0315133fb2e7d60a170438755e16dead31c6a317ad0fc14d17cb1f27e06947 -size 3126 +oid sha256:d37b7ae5be0b8286bb4c1143e27198979563ba3495de83133a82a5116a5ca830 +size 3125 diff --git a/data/minecraft/structure/ancient_city/walls/intact_lshape_wall_1.nbt b/data/minecraft/structure/ancient_city/walls/intact_lshape_wall_1.nbt index c5039b6b..33e7d458 100644 --- a/data/minecraft/structure/ancient_city/walls/intact_lshape_wall_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/intact_lshape_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1dea167b1b6d21581751296bfebb93576a98edfa603d5adb135ad5ef6f0366ef -size 2385 +oid sha256:f7eece610e12114fa5beb4f051bc3cb77e2db5589496caa7a5c92a5b48cb049b +size 2383 diff --git a/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_1.nbt b/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_1.nbt index ec5dffde..1761b583 100644 --- a/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab8ad88a6c137d7b5a64595bb5b25e7d0fa47f7c1401156f901c236a7ccd89fc -size 4171 +oid sha256:71325405b85062af94c9fd5379ff27aa85ca8b8eac21c3131ad99ea6e34f23d0 +size 4170 diff --git a/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_2.nbt b/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_2.nbt index 112585b0..5c771c88 100644 --- a/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_2.nbt +++ b/data/minecraft/structure/ancient_city/walls/ruined_corner_wall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c6d3e85d799757c96f1dd0fc8a52690de32729974591cd7ebde9b2bf4b657a9 -size 3305 +oid sha256:f76fbe15d8e318652e7febcb58d0b5b45c1de7eb6b8e25f88cb5440f2ecc219c +size 3303 diff --git a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_1.nbt b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_1.nbt index 9156e6c8..fc44a370 100644 --- a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_1.nbt +++ b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:684041640be149dfa47dfb263ec2d78194d91c9cb91920c088b2f05cd66cbce3 -size 1491 +oid sha256:ffc5dcf7ec1c300a2523d0f29b8a4aeb75e3ae3cb96bad90e4b3116d28397083 +size 1490 diff --git a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_2.nbt b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_2.nbt index 8586c183..00745f63 100644 --- a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_2.nbt +++ b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db791cbd289de8a7ba2c69f4d55d660232473946364d1743a8a74b6f208887b2 -size 1976 +oid sha256:4db621a08f95bf214bf7588b9f531e785d76b4c62a76610894eb63dd0b6c0ed6 +size 1975 diff --git a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_3.nbt b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_3.nbt index b6d17131..b69d92df 100644 --- a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_3.nbt +++ b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5f6ea26b17d1d59ae6a8a7c4338543ecf907337f96dfab3fdbd2855a705062d -size 1386 +oid sha256:bac72a124f2ce911b7f3b4bebf53c721516eac3909e46bda7166664557b02694 +size 1385 diff --git a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_4.nbt b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_4.nbt index 41792cc2..d56eb8e0 100644 --- a/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_4.nbt +++ b/data/minecraft/structure/ancient_city/walls/ruined_horizontal_wall_stairs_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:698b51c8453ee76e301e565e70746f0dd3adf396026b99db16ff393e43022179 -size 1341 +oid sha256:4eea175b6d53251c83b8e3dd72757b0262e980a7e95d086fdd2854c7cba49c82 +size 1340 diff --git a/data/minecraft/structure/bastion/blocks/air.nbt b/data/minecraft/structure/bastion/blocks/air.nbt index eef44af9..907f6a9b 100644 --- a/data/minecraft/structure/bastion/blocks/air.nbt +++ b/data/minecraft/structure/bastion/blocks/air.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5db307259699cde3303592c71c34cc3db088f70ab48fac79c71963c148f53ab -size 228 +oid sha256:f93c8a32c888d484f07de30eff54c1bcf74f6e2f878591c776553132045fcc4d +size 227 diff --git a/data/minecraft/structure/bastion/blocks/gold.nbt b/data/minecraft/structure/bastion/blocks/gold.nbt index f231b794..5f6cd50c 100644 --- a/data/minecraft/structure/bastion/blocks/gold.nbt +++ b/data/minecraft/structure/bastion/blocks/gold.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:597edb35d265c68b149118bc1e8e3f839d7dce4855b489616f66719fde539039 -size 233 +oid sha256:24c908fa0fd8544936d230e44c2f169b2bc0cf91b8dcf580d5adb10d6c6ca6d9 +size 232 diff --git a/data/minecraft/structure/bastion/bridge/bridge_pieces/bridge.nbt b/data/minecraft/structure/bastion/bridge/bridge_pieces/bridge.nbt index 778ca7d5..85191df6 100644 --- a/data/minecraft/structure/bastion/bridge/bridge_pieces/bridge.nbt +++ b/data/minecraft/structure/bastion/bridge/bridge_pieces/bridge.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd47001bd3db005fe0372c93b7cff4a54a8587b39335ea4ba9dfedf00071821d -size 15687 +oid sha256:3e5aa0d91aa215e5ac912cd1db54d9a6f593857dc9c2367abbbb97fd9061e69f +size 15685 diff --git a/data/minecraft/structure/bastion/bridge/connectors/back_bridge_bottom.nbt b/data/minecraft/structure/bastion/bridge/connectors/back_bridge_bottom.nbt index ac01cce7..7f9fb78d 100644 --- a/data/minecraft/structure/bastion/bridge/connectors/back_bridge_bottom.nbt +++ b/data/minecraft/structure/bastion/bridge/connectors/back_bridge_bottom.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6784f0ff6d3ca7b5cc02ad14793823564eb7d158b192ca141e3b108269bacf44 -size 1428 +oid sha256:d073fa65a473d8527e05a17dd2b2b9b74b77d37ccd6533a833638f41c50d2d02 +size 1427 diff --git a/data/minecraft/structure/bastion/bridge/connectors/back_bridge_top.nbt b/data/minecraft/structure/bastion/bridge/connectors/back_bridge_top.nbt index 22c67320..fd492a03 100644 --- a/data/minecraft/structure/bastion/bridge/connectors/back_bridge_top.nbt +++ b/data/minecraft/structure/bastion/bridge/connectors/back_bridge_top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67bab3b30e5615fa7d53e1a94f1a00a5a99c71fa1b2d3a781604f82dfe5993af -size 1375 +oid sha256:966450b0ffe023b78498a2195aa758c37d9d29d6a76e27d088eb95a80e0aa09f +size 1374 diff --git a/data/minecraft/structure/bastion/bridge/legs/leg_0.nbt b/data/minecraft/structure/bastion/bridge/legs/leg_0.nbt index d1004ede..abca39ee 100644 --- a/data/minecraft/structure/bastion/bridge/legs/leg_0.nbt +++ b/data/minecraft/structure/bastion/bridge/legs/leg_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6438252e1b84fe993325c75cb4759b2c1d5e945e6c13130947de36892b76c78 -size 708 +oid sha256:4b823385d7a57a63490b7f77edfd9c15c15307fa3cbc3f937925ceb7b99cb446 +size 707 diff --git a/data/minecraft/structure/bastion/bridge/legs/leg_1.nbt b/data/minecraft/structure/bastion/bridge/legs/leg_1.nbt index 2ea0a9c0..ac63f8eb 100644 --- a/data/minecraft/structure/bastion/bridge/legs/leg_1.nbt +++ b/data/minecraft/structure/bastion/bridge/legs/leg_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e703a8aff164f7c3d798059403b7c7d77bc0907f7b43ea7e4d48866938ccbf39 -size 739 +oid sha256:61e39169fbaca13f6773e936a5c518c7b5fd301c00013277927a9b616191548d +size 738 diff --git a/data/minecraft/structure/bastion/bridge/rampart_plates/plate_0.nbt b/data/minecraft/structure/bastion/bridge/rampart_plates/plate_0.nbt index 0507b316..e05399f8 100644 --- a/data/minecraft/structure/bastion/bridge/rampart_plates/plate_0.nbt +++ b/data/minecraft/structure/bastion/bridge/rampart_plates/plate_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71de3454ef0268dd809ed62b3077a8b2c23783b672bd073967459001cd932876 -size 2055 +oid sha256:ba9025b662e686e754a5ef05510fee4e6694722d86cf7d2ebbef57e7c1541d4d +size 2054 diff --git a/data/minecraft/structure/bastion/bridge/ramparts/rampart_0.nbt b/data/minecraft/structure/bastion/bridge/ramparts/rampart_0.nbt index 5790bf79..be99a47e 100644 --- a/data/minecraft/structure/bastion/bridge/ramparts/rampart_0.nbt +++ b/data/minecraft/structure/bastion/bridge/ramparts/rampart_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a04266083f7d9aa1d9cdf5f62a2cc0489c29ef01d07bc81e3ca4b31d9c6330b2 -size 12579 +oid sha256:e8873d1c06400ba3c8cbb87a0a9dddfe8ae09758a004d59b221df88b8606d329 +size 12578 diff --git a/data/minecraft/structure/bastion/bridge/ramparts/rampart_1.nbt b/data/minecraft/structure/bastion/bridge/ramparts/rampart_1.nbt index 2ade3f6a..f1e30c10 100644 --- a/data/minecraft/structure/bastion/bridge/ramparts/rampart_1.nbt +++ b/data/minecraft/structure/bastion/bridge/ramparts/rampart_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:450c598e840f31be8d122376a31eeb1c3a1b556307bb07bd40b4995cbf3826ed -size 19410 +oid sha256:d643b43cb6d0d91b8a083578ee4f44b4f9c7ce86fb1d043bfaaeba0a7d8830e6 +size 19409 diff --git a/data/minecraft/structure/bastion/bridge/starting_pieces/entrance.nbt b/data/minecraft/structure/bastion/bridge/starting_pieces/entrance.nbt index 055e5600..15c34221 100644 --- a/data/minecraft/structure/bastion/bridge/starting_pieces/entrance.nbt +++ b/data/minecraft/structure/bastion/bridge/starting_pieces/entrance.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f45bfa4fc48b79a6b56c0f7a4dab11f1e095570a87c6f805fdb9688c5408bbae -size 41138 +oid sha256:c37a2d1c63b54f5c9cdbc5a7f607973c8243932347c98bd0ddc65ece018215e9 +size 41137 diff --git a/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_base.nbt b/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_base.nbt index 83c074ab..40641c18 100644 --- a/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_base.nbt +++ b/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc6fe3b9a1f0f3ca2963934f4c221aad8b7f923b92a8e525e272c5c3a4c16c00 -size 45585 +oid sha256:0caef26a9caf79a80ce0cb3aef2f8310cb3266cadb6555290bd42c912408a8f9 +size 45584 diff --git a/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_face.nbt b/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_face.nbt index 5043df2f..7ca65598 100644 --- a/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_face.nbt +++ b/data/minecraft/structure/bastion/bridge/starting_pieces/entrance_face.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:614f41d12c4f61d3b8765c23fe26fcdad7feba4df28696efa83b224459a7d2e8 -size 2739 +oid sha256:79b66892610d47f1f5ba0dc8cf33b0909f02436450c3164e11c2fa6fa95c8853 +size 2738 diff --git a/data/minecraft/structure/bastion/bridge/walls/wall_base_0.nbt b/data/minecraft/structure/bastion/bridge/walls/wall_base_0.nbt index 8d8b4962..d4d93b45 100644 --- a/data/minecraft/structure/bastion/bridge/walls/wall_base_0.nbt +++ b/data/minecraft/structure/bastion/bridge/walls/wall_base_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e0c62adfb239d13f52b658b90c5f35f8f9057d84da01a6813457948546b18ca -size 17433 +oid sha256:9c81199788d107781377b9b8a302a576c09bf295d52eac85e550405a61039fbe +size 17431 diff --git a/data/minecraft/structure/bastion/bridge/walls/wall_base_1.nbt b/data/minecraft/structure/bastion/bridge/walls/wall_base_1.nbt index f402ad77..ce1e6a17 100644 --- a/data/minecraft/structure/bastion/bridge/walls/wall_base_1.nbt +++ b/data/minecraft/structure/bastion/bridge/walls/wall_base_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbdf7bb5a79ba9ec841460c69d62a94aafdf08f228822c3661246751168113ea -size 17260 +oid sha256:47024f55446364131e5d6eb770318895fb752ab2e5f5e15bdd66535bcd1ec052 +size 17258 diff --git a/data/minecraft/structure/bastion/hoglin_stable/air_base.nbt b/data/minecraft/structure/bastion/hoglin_stable/air_base.nbt index 2b37b349..f5809011 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/air_base.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/air_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cd1c7dedfa2416b100dd3cf72dd1bfb63df67758d7a7f3470b35e737c68fbf3 -size 80384 +oid sha256:efb8bb5e956e15ff26259d68715388709464cc079f6c1a083ac06956e453f2c0 +size 80382 diff --git a/data/minecraft/structure/bastion/hoglin_stable/connectors/end_post_connector.nbt b/data/minecraft/structure/bastion/hoglin_stable/connectors/end_post_connector.nbt index 54d5c6d8..270d1b38 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/connectors/end_post_connector.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/connectors/end_post_connector.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1843a624c40411e4ad2777e358c855c1dbb4ecb0e1683cfd919fb336afb4f4ee -size 288 +oid sha256:3d953cc73865962ff43dcddf3a7f95b538d0117242a1042601d9776922905804 +size 287 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_0.nbt index 11cd1d48..c56d88c9 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b67d8357b7a8ea611621ec0dac5a4cc102b29c4ee7f695b1e9b01cce1e9d505b -size 1880 +oid sha256:965d2b5f052ffd2cf6e1a8cfc8e46eca08cf4b28fc9b585304788defe9e58832 +size 1878 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_1.nbt index ded44e9b..466b4b81 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64647f60fce8a00e8a316a1a566ccc749f22dc11c75c5cbf2927da0a37dd2f94 +oid sha256:6822668bbafe03234691f5a805f9e84227ded17ab174277a1cbd3c3f5261a062 size 2076 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_2.nbt index 0c254267..958b82a4 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64bb3387070c096dfd52c0318e7c5322614d2718b1bec2f08ebfea415b814bab -size 2353 +oid sha256:8bb559721f41b8a7e3b8a294afaca2f677d9c0e55b4d7c2937ed1b251c57959d +size 2351 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_3.nbt index 0464073d..0ede1cb2 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f2ea5b80d54d140071a00cf185793fbb81ec3a6a48839f284b2a8009b51b5de -size 2399 +oid sha256:7bb74a77b458e8f10efc7e58e2fccbe541fefef89a9cc84bcc07f5ba934b6ebc +size 2398 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_4.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_4.nbt index 01564432..84733fc9 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_4.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/inner_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb09febb57d33e35b017903b8bb89589112063c95ab13f55b78fd8c1efcc71aa -size 2147 +oid sha256:5cd2a16e44dcc7146a9e4906096da63212e9de79fabb883507b57e02cca43374 +size 2145 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_0.nbt index 9d11c676..74067ec2 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba223906650aeb270f4052ed7f5af7c5e3ed3914e6b8df213bbbe82cdd07235f -size 1965 +oid sha256:fcfcf69a57c5df41e45aa49b552da830351c132d3f37c2b7f6e83bdc8bf30a2e +size 1964 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_1.nbt index 522dc997..52a7e263 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86c6ed5590f559e43f0875e5b0a87c368950d7316d464dbded28bce41e23cfb4 -size 2319 +oid sha256:6e049096dc2c2badfd6a74421e87993b165ba3403adab45c2c4cd6cdf32576ff +size 2317 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_2.nbt index 3a9be30d..f6dd4e96 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01c7448dc5d66796818d95786e7bb69834ca8f3daa5f01cf6fdc94fae5c1cc1b +oid sha256:3d6032f5a180e9a3cfdc116628f63d194160cc89c324f12242a713aa20d235b1 size 2555 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_3.nbt index d26e4997..3e2c8c71 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6f308a65411e2c53e0ffe2f8f130e3fb13d1aeba2fb34acd10779332e5ff5d9 -size 2454 +oid sha256:1d1390d0c1e791a4894591c371c5e263bef7795f61c4609c6aad031a359c0029 +size 2452 diff --git a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_4.nbt b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_4.nbt index db71f6a2..3bc80d7a 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_4.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/large_stables/outer_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5d2b1c92df2e3a0269f4df8dc3768e6fb48121b1f7ed0607cdc74ec59b5a279 -size 2398 +oid sha256:4b5a24318c5af4f10e0fda5d76fb87552902cd47d802138186617582e2726a77 +size 2397 diff --git a/data/minecraft/structure/bastion/hoglin_stable/posts/end_post.nbt b/data/minecraft/structure/bastion/hoglin_stable/posts/end_post.nbt index a64ce127..9ef5a91a 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/posts/end_post.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/posts/end_post.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13506749abc475274b397ea4518268d32cfa05b7e1861018d70905c59d30b80f -size 530 +oid sha256:a178a297b471e47f0c3c4be0d821111631300bd089ff7c237af7a0f0eb54c6cb +size 529 diff --git a/data/minecraft/structure/bastion/hoglin_stable/posts/stair_post.nbt b/data/minecraft/structure/bastion/hoglin_stable/posts/stair_post.nbt index c09464d9..f041d8b9 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/posts/stair_post.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/posts/stair_post.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d6428a73b2d392f30def84d4222d7b3f60c8e28c24d30de5c37b6f6e1432398 -size 1168 +oid sha256:dc16ed051b723069f74ad9ba08916f9244608c77dd976e39cf8ae56dc1cd7364 +size 1166 diff --git a/data/minecraft/structure/bastion/hoglin_stable/rampart_plates/rampart_plate_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/rampart_plates/rampart_plate_1.nbt index 8b05ac9e..7ab29299 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/rampart_plates/rampart_plate_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/rampart_plates/rampart_plate_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ab9ed04ff71e70fd696c54815f125509480cfb3bf47ba9418af278e96cf3fdf -size 2179 +oid sha256:15620370087f39f218e995478c9c0c2aa1c6e713738ea3c11b5fce1ee86d4295 +size 2178 diff --git a/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_1.nbt index f472ac82..08f28c85 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68edc398a5e611a884afa1ec424f43a507cf72408b21bb5c369b1ada0acb8e91 +oid sha256:6c463accc6cd932fb065acdd1b2568b77de5ccabcbacb409a36d157785401a46 size 19109 diff --git a/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_2.nbt index 3633ab07..a8f92d1a 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33c379fdcc4b08663610b84cdbebfe2873b4c64b739cdddefa1e3dab8d7666d2 -size 12207 +oid sha256:06351642f0bb6371e869b5b57f159fe367a7ca46a47fb7edc9942779cee3e221 +size 12206 diff --git a/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_3.nbt index bee373a3..762b963d 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/ramparts/ramparts_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e39e5167ae7f1a0b403c8c5deb1161ea64fc27f37f153a0b58bcdce6973c5dcf +oid sha256:297cf29156d466ae2220da61d10e70ed58ed5e7650a09d793774cafada726959 size 6389 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_0.nbt index fc2e9536..8dcf66d0 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb1b7b6af702b0fdd71769360b2ea6843bfed8256ff121d3781eb82a8b3d5729 -size 1898 +oid sha256:1342f06cbe3b94bf78487c8ade45701a778ce5fc5c96c0aa3b575580addd8ae9 +size 1896 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_1.nbt index 6b7f9bfb..99d205fd 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6ff5602de297d3122bab4fe63c202eaef3fea2234239c8625d6d30b2da733af -size 1980 +oid sha256:7e39f5a4788295c7dd89f4124c1e427f2b6344155a7efd26d1cad67ab6294ba0 +size 1979 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_2.nbt index 0d66827a..9da824b9 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:684c27243ad2818ea3a7b73ea7c889da561550ed5eb15ea955f2cf4603cf876c -size 2211 +oid sha256:7cc8dde80548c771e27c98704751edc3d75a50ade486e5cfc0422f8363027ec8 +size 2210 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_3.nbt index ef59562f..07b1cbee 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/inner_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8bdbf12a78ecfb3b347541edb718b3bc8f2448b1d5801adb04051dba850928d8 -size 1681 +oid sha256:041d606a423573fb06a808c1b3de754e41a414b246292e99fce5b777a4488d79 +size 1679 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_0.nbt index 0fbb4eb3..f047cf90 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ffb843222488ffd105f02e635f7111e24fab7cf41497ed3ee3b8509163839b0 -size 2138 +oid sha256:0014a6e3bd79adff2136fc1aa4d4f183b6c217469fa29a7564641014a3903870 +size 2137 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_1.nbt index ea6c10a5..6f11eee9 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:003f5ae13731336dfcf188b8f2bef05341cde65d02ce2d666034203fe3374b9c -size 2065 +oid sha256:729ad227cb3bd0187578df0bd154fa5a6cc17a2a8b21e5e30f0869b49f960771 +size 2063 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_2.nbt index ac6d0fd3..592ca007 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f15c985127436664e31bb3bc475f03aa5f8ca003ed475fb93adfbb6adb09092a -size 2150 +oid sha256:cc7eb66352d0e5c61bfb43e8d4df026a7a40fd897fe97ea3ba00110f27d4ac11 +size 2149 diff --git a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_3.nbt index 5bb3c3ea..8b2f4ab4 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/small_stables/outer_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f4bcb30581f55b471ea027c9df50828ddc662ef037f6b1b631ce3ba8fdbca9f -size 1850 +oid sha256:2ecfd1d9eb48c4285bf97e643df831439e7bf15175716d71553c01a7240464c6 +size 1849 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_0.nbt index d1b7dc91..09cbcd91 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e13ee2fb668e22e032274702212ac6408a0fe887e93a212d1506b73db3972280 -size 4466 +oid sha256:4e4d40e0127156c32650902c1dc25e0d7c3373b704f857dfe5548f31d2ccf9b6 +size 4465 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_1.nbt index 8373ac74..ec7f86e3 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e05e7ca4d8f50b5e881799b0b41b3d092c1698cfac56ba2ce3846502324c9884 -size 4275 +oid sha256:dbb5151c35e0b4762775c062f62e9afb35fe77a9dfeb1ea8dd2787a34d21405e +size 4274 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_2.nbt index 7e5078c7..7d74d3e7 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b6d4a2e0a325ae7df5e07e5f28a11b0339ee13d606fe511e32ba8dc3edf5a78 -size 4338 +oid sha256:0cfca130a9bbf5b3eb11834f1f85befcc16d23a4bdf6ede9b4dc061d3ea1c789 +size 4336 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_3.nbt index 8b5079d1..ce199c66 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b231daf7f7c32b8f22390df3f6bbbb8cf3f2ee3070acf25b1ee582cbe5aee305 -size 4498 +oid sha256:f6fa23f81a9738a53c0c18e941082746c45a4801803a58879d55da1d6285f498 +size 4497 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_4.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_4.nbt index fa4a10de..f2057351 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_4.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_1_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7b32cfa7406547d2036df1fd89b231747a684cc51b8c025f5a2bfa173c0b93e -size 4439 +oid sha256:59b94a0bc6a7508a750f089da8b46ee95a4a457cea3c0e6969ebb08a86d87339 +size 4438 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_0.nbt index ce8a29d9..83e00316 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed27cefda80d483ea2268ed2fcf07925f045ec35f1b81aef97ef65c2f1e7ba83 -size 4412 +oid sha256:4e24b7cb01afb368c66f774bda21b084d00f2691693a2c9058dcf41354daec2e +size 4413 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_1.nbt index ec773d58..33c3fac6 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e32e7c3f4124c436842d9cd47d270dd4aae05ab6d8f09ae3a73f6e42afb2065 -size 4334 +oid sha256:2368d3978bf9c6d1ae4f8216fb874887fdb1deb346462e697122d89d469e1446 +size 4333 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_2.nbt index f6db6fa6..d559e75f 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce8fbb7f73e03d9944d0a409c1c0b18ca1c726925a3a4b8005dbe7e73ac7e7e3 -size 4119 +oid sha256:81d843800586a6dd7c532a1c07892593a6a2d7176861454340661253d20a25c6 +size 4118 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_3.nbt index 83e04c7e..d67da3b5 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83a4f8a7af1f92e532922e7d98bf465a45b307123bf5bab26c3181bcda534529 -size 3303 +oid sha256:d5a5d3266c77ac57ff38efbbd29e7e401ec44011514cd88934b9b5344d8afc10 +size 3301 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_4.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_4.nbt index 89e01495..46745e26 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_4.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_2_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d2b193d2814178ef930c92b3e1d667bdc5d5b40a03c064469e6affcf1c571ec +oid sha256:7947d0ea0abf7defe887581e33c0d6f3804dd30fabdb9daaa443886722da6c19 size 4378 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_0.nbt index 5a32ab07..08bd9d8d 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b311af5ab3ffcb3e27d5d16471d9bb5118b9a200fcd87babb52b887f3f76557d -size 4021 +oid sha256:a836db9a5e0af535dd005a95085ea2aa9d3acecd1f9d6b5cec5e3dcd23ade211 +size 4019 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_1.nbt index 74855800..91534faf 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64a5edf4d4643fa151c4d4d566e8ca095c33adf5ec1392ee916b23dc64a09841 -size 4005 +oid sha256:eda3b1d5cca5138cbe59572ec5d47569ab0f2166255308b5fb7a0e0b47e9aec8 +size 4004 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_2.nbt index 6eb433ff..2e737e6f 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c8ceeedf4c8b4233a0d9a88f2a9bfc5e59bd4a17f49b1338618feb6acdacaed -size 4210 +oid sha256:922c799ec52e0812c373f1a94f07d427b01352b23fd5b0dded5fff2855dd6257 +size 4208 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_3.nbt index 0abdca66..e198c654 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54c9dcfd6645196a56a797f310ab470e448889196e4b3e01b635566d17a507f9 -size 4322 +oid sha256:26f15dadc4dcfb163221cc2f331aecc747e561e0f1a1cd80d7e770f76f03e6e5 +size 4321 diff --git a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_4.nbt b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_4.nbt index a547b116..9f4dd35f 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_4.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/stairs/stairs_3_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39056748bc35af7a17353ee20e42a64d9145bb662d1c6b0216fe84b67a2e4049 -size 2779 +oid sha256:c1ae72530436521f4352a6000a98ee59de465898625aab49f025c03b7aca508d +size 2778 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_0_mirrored.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_0_mirrored.nbt index 376bf5ed..80752e61 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_0_mirrored.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_0_mirrored.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59e2cca691bf5b23083497764bb3e8781e3c08e2a78bd8f71291505c796eca12 -size 4612 +oid sha256:cd1c207d0d42902f88fd20e56a3306e1756bed0a7d1c4d00a6ec70ca16fc3035 +size 4611 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_1_mirrored.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_1_mirrored.nbt index 9227297d..0c598b5d 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_1_mirrored.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_1_mirrored.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd50deaa3c3f10e2e10a0ebfd2e3804cf2aaf899f575bb5ec826b49870a4c825 +oid sha256:7fc242ffb5f8bc7f5e9b1668d3fda4e95ab08088ded7398f5a07723d4e971fda size 4626 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_2_mirrored.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_2_mirrored.nbt index 3cf1a341..17dbd105 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_2_mirrored.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_2_mirrored.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1713137cdbbfd9c04bdb89f8e9fd30af9b5c32c3b4115d1987056d9ee4192074 -size 4543 +oid sha256:b76b303b6b19d703ca476ca72885be3bbbe1c317640bc79c5336f7f4b2cb2d8c +size 4542 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_3_mirrored.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_3_mirrored.nbt index 379ec120..346af0c6 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_3_mirrored.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_3_mirrored.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09c774e6bcfec0610ee0e0e1392ab47256dd9ec4a82e6a8ffe93d03f13de2d39 -size 4742 +oid sha256:b709c1b852d3159dbfd22731a68636a9af5d74ff8263dc6daae02401889fb73f +size 4740 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_4_mirrored.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_4_mirrored.nbt index f1836372..d10ae414 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_4_mirrored.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/stairs_4_mirrored.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ff2e07bdce2057dd83ca483569fa901b9a77a77c2ec849b71ea97d6d9871a74 -size 4591 +oid sha256:2de91b504debc09903360479fa502c2d078ec1230db918492398c0480ca9154a +size 4590 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_0.nbt index 73ac4aa2..acd3c563 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c5d0512ea67bcd4ca906f816ac2eab048fbfdfa384eab0789c39b5769e20ae0 -size 4627 +oid sha256:e602b7c2ce7177ff588cf7b2eec7127b527468d39891206401c914a88b52f17f +size 4626 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_1.nbt index bd6fe30b..082b96e3 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:203f862908897536739b0c19413f428702f984ddae9965f8764b35cf7e4d6f4a -size 4911 +oid sha256:503485f584873c89f6e9904b250f8b2c6261f77d6590323234aa24334d642400 +size 4909 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_2.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_2.nbt index b9f188ad..80e3eb11 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_2.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7825a0a7e32e68bdfe75f3a85fca39332da3882d0cdd8a97b7bc1d660d9cd13c -size 4910 +oid sha256:f39aa37d1265b29f6146b285c510d1f0a89584b739b172e54c528370489e65ec +size 4909 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_3.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_3.nbt index fdf90bb8..992daada 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_3.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e25d0c5927442d2460a66fad852ccb918200f67895d6c17f6eb5548f01b3b70 -size 4917 +oid sha256:0c6e2c349fd750e3c476693ad40fd84a3f4777c671519122501a015a3e6cbca7 +size 4915 diff --git a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_4.nbt b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_4.nbt index b9802c0b..9249a5ad 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_4.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/starting_pieces/starting_stairs_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abd9cd8ac95f84cf3564f956573d5b2d3eeace8d59d4f3bebb2696275f93fd31 -size 4585 +oid sha256:2ed5a9590ff2737bfac95f359944ca79b75c14cf6f24a6757080c7f23da4d6b8 +size 4584 diff --git a/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_0.nbt b/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_0.nbt index 81d0bac9..b3d0681e 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_0.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:408a7892404736e954066eee64b014cbc3f720fd10a131462c149cd04724bc0b -size 16617 +oid sha256:35eb431428f128e966fcdb8b4d61a1ac98ff81aaf7550ca39743591d39ea7ae2 +size 16616 diff --git a/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_1.nbt b/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_1.nbt index 9460e537..9994176f 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_1.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/walls/side_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9690296879c2bc2ddd6d4acf52ba9d02bd247c0a60daa0e9a79d65bdbf44d158 -size 17027 +oid sha256:e2f73c3bf3a202105911a237a8adc42ca3a05b67166b1989e1c6bfe72cefd93f +size 17026 diff --git a/data/minecraft/structure/bastion/hoglin_stable/walls/wall_base.nbt b/data/minecraft/structure/bastion/hoglin_stable/walls/wall_base.nbt index 18180896..41604d5f 100644 --- a/data/minecraft/structure/bastion/hoglin_stable/walls/wall_base.nbt +++ b/data/minecraft/structure/bastion/hoglin_stable/walls/wall_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38f0e3a697d697e3ac31a9a9d37ea00b044537301fb362622a3d62b10abb0a1f +oid sha256:ac77b718612b1318c6fb5935cd968abcb9bdafff85447ad838651ee02ed07d6c size 16415 diff --git a/data/minecraft/structure/bastion/mobs/crossbow_piglin.nbt b/data/minecraft/structure/bastion/mobs/crossbow_piglin.nbt index 6d0cd40f..285409bc 100644 --- a/data/minecraft/structure/bastion/mobs/crossbow_piglin.nbt +++ b/data/minecraft/structure/bastion/mobs/crossbow_piglin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a41104cd881a232036947a5f4faa5618ecb3176ec4de56f2ad72dae4d20e717c +oid sha256:f10641951b43d745a3ff0bb707bcd5621efb3f9c34b758ae751f5f243098fa3a size 695 diff --git a/data/minecraft/structure/bastion/mobs/empty.nbt b/data/minecraft/structure/bastion/mobs/empty.nbt index d101e44a..202b1db2 100644 --- a/data/minecraft/structure/bastion/mobs/empty.nbt +++ b/data/minecraft/structure/bastion/mobs/empty.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0282222fef99b148ed2e652a202b210f7b85df04598d2c86327c6d779d4973f5 -size 229 +oid sha256:e412d41750ee3eef44731f59174fd011c28e08e347e78966a375760665c1ace1 +size 228 diff --git a/data/minecraft/structure/bastion/mobs/hoglin.nbt b/data/minecraft/structure/bastion/mobs/hoglin.nbt index 0fb013c8..2ea9c618 100644 --- a/data/minecraft/structure/bastion/mobs/hoglin.nbt +++ b/data/minecraft/structure/bastion/mobs/hoglin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ccb6e25604e869bac89f8d00d256f411c1125570902f3cf3eae86e9fbbe2f59 -size 737 +oid sha256:d59f3600c15dfcffda4f1e498f51ed56a4b63ecac06fc9eb51b587da4ef0d05e +size 738 diff --git a/data/minecraft/structure/bastion/mobs/melee_piglin.nbt b/data/minecraft/structure/bastion/mobs/melee_piglin.nbt index ba83843c..d4eed86c 100644 --- a/data/minecraft/structure/bastion/mobs/melee_piglin.nbt +++ b/data/minecraft/structure/bastion/mobs/melee_piglin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37008ad95c9d692e013598e7b44897a2358dcca6e881e556507df68105099ee2 +oid sha256:5e0afe78516c84e1ee0fa87076d6e68ad13d62794acba505a7664e1e15c46d44 size 682 diff --git a/data/minecraft/structure/bastion/mobs/melee_piglin_always.nbt b/data/minecraft/structure/bastion/mobs/melee_piglin_always.nbt index deadff7b..a4616e2c 100644 --- a/data/minecraft/structure/bastion/mobs/melee_piglin_always.nbt +++ b/data/minecraft/structure/bastion/mobs/melee_piglin_always.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:146c9f79c2444f04796253d47ced40a8fb7d081d0d48d4d74c4f05d45e960625 +oid sha256:5e9dbf0b856e8ed0423dd4ab23b464ae648f731d7d04f4b88458d2829a57f9b7 size 674 diff --git a/data/minecraft/structure/bastion/mobs/sword_piglin.nbt b/data/minecraft/structure/bastion/mobs/sword_piglin.nbt index d8d3194e..3db1060d 100644 --- a/data/minecraft/structure/bastion/mobs/sword_piglin.nbt +++ b/data/minecraft/structure/bastion/mobs/sword_piglin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abcd4ab643c6220d20592c2f80c7895e5f07489d8f13bee6dd7e339941c9b128 +oid sha256:46c50fc1c9df5d717baae01dca48764c02f7bee63b134941e18b2ca686e43f59 size 701 diff --git a/data/minecraft/structure/bastion/treasure/bases/centers/center_0.nbt b/data/minecraft/structure/bastion/treasure/bases/centers/center_0.nbt index ab8e66b2..2af23529 100644 --- a/data/minecraft/structure/bastion/treasure/bases/centers/center_0.nbt +++ b/data/minecraft/structure/bastion/treasure/bases/centers/center_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce81c28374c15afa28704ba75249a731e2b2724211f40b274e5f90dd1bccbcae -size 1025 +oid sha256:65df56ca7141814454364652f90c6711b8785561a62ba0d98d5a05bc8d1ae106 +size 1024 diff --git a/data/minecraft/structure/bastion/treasure/bases/centers/center_1.nbt b/data/minecraft/structure/bastion/treasure/bases/centers/center_1.nbt index fdc634a2..7c6ae5ae 100644 --- a/data/minecraft/structure/bastion/treasure/bases/centers/center_1.nbt +++ b/data/minecraft/structure/bastion/treasure/bases/centers/center_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8858e966df0c20a1c54998feea6fbce5b584172bb8d4e415b696e9a6322694a -size 960 +oid sha256:65d09038d9d84a086217a7dd92bc5e4720de8d2976aab49a33ba3700c4a9a576 +size 959 diff --git a/data/minecraft/structure/bastion/treasure/bases/centers/center_2.nbt b/data/minecraft/structure/bastion/treasure/bases/centers/center_2.nbt index 9322d1a5..f121283b 100644 --- a/data/minecraft/structure/bastion/treasure/bases/centers/center_2.nbt +++ b/data/minecraft/structure/bastion/treasure/bases/centers/center_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:176a66e9941dc01f545e8ad028a1436c438927875e235f950e44dbcba810fba3 -size 1076 +oid sha256:8d23677f327f13796b8d68d1cfcb37e17d60838d65e470bd654a90af9d443783 +size 1075 diff --git a/data/minecraft/structure/bastion/treasure/bases/centers/center_3.nbt b/data/minecraft/structure/bastion/treasure/bases/centers/center_3.nbt index b3d54d87..dcb23b15 100644 --- a/data/minecraft/structure/bastion/treasure/bases/centers/center_3.nbt +++ b/data/minecraft/structure/bastion/treasure/bases/centers/center_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9d031dc1184965046fa0ca040e6bef6e5280bbce7dc3dffe01abbbc6cf387c2 -size 736 +oid sha256:3233e80e538305627a5795a47b10f02cee821f002757e6e56d4e5093e531b256 +size 735 diff --git a/data/minecraft/structure/bastion/treasure/bases/lava_basin.nbt b/data/minecraft/structure/bastion/treasure/bases/lava_basin.nbt index 643ef023..1dcd22a0 100644 --- a/data/minecraft/structure/bastion/treasure/bases/lava_basin.nbt +++ b/data/minecraft/structure/bastion/treasure/bases/lava_basin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6c93950391f4e73defb71db1e94e3175dc0d87ace3251e57936af25b10c4b79 -size 6585 +oid sha256:b04d2f1db93a741ddaa04c4defc34e751d5ff331684fc57eb29d7f794378c2e7 +size 6584 diff --git a/data/minecraft/structure/bastion/treasure/big_air_full.nbt b/data/minecraft/structure/bastion/treasure/big_air_full.nbt index 8f6a67b7..2344be3f 100644 --- a/data/minecraft/structure/bastion/treasure/big_air_full.nbt +++ b/data/minecraft/structure/bastion/treasure/big_air_full.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:737057f23e3014692d769cad9a6649e04dc0c5189c092bb7612fd7d11b6299c0 -size 69674 +oid sha256:6636335831a68c0061cdd49b13c105b1e28b435d31074dd4ed3b42943d300c3f +size 69672 diff --git a/data/minecraft/structure/bastion/treasure/brains/center_brain.nbt b/data/minecraft/structure/bastion/treasure/brains/center_brain.nbt index 15b339f5..4853e1f7 100644 --- a/data/minecraft/structure/bastion/treasure/brains/center_brain.nbt +++ b/data/minecraft/structure/bastion/treasure/brains/center_brain.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67eee448da798a7303248e6df579325c20f8c3c332fb693f2234e20edd6d4943 -size 416 +oid sha256:58ab80a74ffc88b5629915ea9b04e178bc5f2a706282e93f68432839fdcc1c77 +size 415 diff --git a/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_middle.nbt b/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_middle.nbt index 2fb2a1e6..d618ec99 100644 --- a/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_middle.nbt +++ b/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_middle.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df297f5a6c9d1ce31d893617f622453140b69cd55eb11b0a9af8ee5123d98da4 -size 288 +oid sha256:500a087d47396571496a52eb3935691c1490bfaf5eb6844da290ce0c57b38cb3 +size 286 diff --git a/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top.nbt b/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top.nbt index 5316c38f..fce42b7c 100644 --- a/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top.nbt +++ b/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fac6d6f2e60671edbf5de7cf2a4271fb5d4a6aef7e346a3ad3a5b32cb4d5fd98 -size 287 +oid sha256:6eacc92e816fd502d49769ada649db4969b1003ef05fde8f061ae4f8e602b54c +size 286 diff --git a/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top_entrance.nbt b/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top_entrance.nbt index bda316ee..a905bcbd 100644 --- a/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top_entrance.nbt +++ b/data/minecraft/structure/bastion/treasure/connectors/center_to_wall_top_entrance.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ca883d168c910d5e45e8a5ccf07d6a3c53011b409bf59e62cf170232a0e2cf0 -size 292 +oid sha256:a0017dad7eebd404963f911b5a216f4658a6a02876192d1ec11fa9882bc3f5f7 +size 291 diff --git a/data/minecraft/structure/bastion/treasure/corners/bottom/corner_0.nbt b/data/minecraft/structure/bastion/treasure/corners/bottom/corner_0.nbt index daaa489f..c0841abe 100644 --- a/data/minecraft/structure/bastion/treasure/corners/bottom/corner_0.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/bottom/corner_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8b66a5962d2da891f0e3770d4832a4716cfcd9d4e5fdef24c16c2a9ff72a5a3 -size 1685 +oid sha256:ae3ab5639fe964f7062dfb8bd983552826c5e6a277ca13ae2b2b0cf74d809fce +size 1684 diff --git a/data/minecraft/structure/bastion/treasure/corners/bottom/corner_1.nbt b/data/minecraft/structure/bastion/treasure/corners/bottom/corner_1.nbt index 28e58099..56c87725 100644 --- a/data/minecraft/structure/bastion/treasure/corners/bottom/corner_1.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/bottom/corner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94d0d797081d81e05c79fa87622895b9ecc13dd0400aa422796f6b763a2dbfc6 +oid sha256:32de1ca14eefc92401ddb603c8e35542bcd1479dbc1cfbb99a608c9f6661806e size 1680 diff --git a/data/minecraft/structure/bastion/treasure/corners/edges/bottom.nbt b/data/minecraft/structure/bastion/treasure/corners/edges/bottom.nbt index d12d86c9..f82da70c 100644 --- a/data/minecraft/structure/bastion/treasure/corners/edges/bottom.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/edges/bottom.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5f8e4268e4b0222d0d22fe14963012dac69d7cfa26f3d2adb2413eca230578b -size 451 +oid sha256:efac02b5292f1a730414b5cdfedb4c7599d1239a8f71053827da1f8475cf5b55 +size 450 diff --git a/data/minecraft/structure/bastion/treasure/corners/edges/middle.nbt b/data/minecraft/structure/bastion/treasure/corners/edges/middle.nbt index 11eb968d..6cb9a61a 100644 --- a/data/minecraft/structure/bastion/treasure/corners/edges/middle.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/edges/middle.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cc9fe3e89c1f3cad9a67a42189b8f2e4ed4682c38bdc0e7f72b6f832d015144 -size 440 +oid sha256:a100c6fb9643a9aa595c11242003ec2b2cbe0befebfd83ae015ea4a6966a5d7e +size 438 diff --git a/data/minecraft/structure/bastion/treasure/corners/edges/top.nbt b/data/minecraft/structure/bastion/treasure/corners/edges/top.nbt index 169dadb4..ccfecc4d 100644 --- a/data/minecraft/structure/bastion/treasure/corners/edges/top.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/edges/top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45ac9684b9c05470bddfa71414c20060c7184d4a5a7087aa7bceaa5f4db68d6f -size 457 +oid sha256:ef08fdc5b2c9b849c3b27e90a5fb7c0db5e9a73deb309206281f187ee67e6c3e +size 456 diff --git a/data/minecraft/structure/bastion/treasure/corners/middle/corner_0.nbt b/data/minecraft/structure/bastion/treasure/corners/middle/corner_0.nbt index a7de0d8e..7f9cae00 100644 --- a/data/minecraft/structure/bastion/treasure/corners/middle/corner_0.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/middle/corner_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d8f0c3c7e301cd3ceb4e4364715e1dd698f51f059801193d92e043bfed497b8 -size 1586 +oid sha256:1325ff8db027f34b7cbe610e52f44b3834c7063824243bc034b18eb138be1bc5 +size 1585 diff --git a/data/minecraft/structure/bastion/treasure/corners/middle/corner_1.nbt b/data/minecraft/structure/bastion/treasure/corners/middle/corner_1.nbt index caafce22..31acd4f5 100644 --- a/data/minecraft/structure/bastion/treasure/corners/middle/corner_1.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/middle/corner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4227e5c59b5e9b89c15c9bd7ef13f10d33d2bfa6473d130d592af94733dcf96 -size 1539 +oid sha256:6049fe3db91469cd8b3dc998e5cbb7746eca20d83cbf461a4d83ac172d5a26ed +size 1538 diff --git a/data/minecraft/structure/bastion/treasure/corners/top/corner_0.nbt b/data/minecraft/structure/bastion/treasure/corners/top/corner_0.nbt index 1421a69d..5b09e6fd 100644 --- a/data/minecraft/structure/bastion/treasure/corners/top/corner_0.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/top/corner_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00a779d02ac8cb0c0a931d6b7c90660f3c74ce618de6ea4b38b577fb94af1a5d -size 1553 +oid sha256:89cff2cdebeb79c5d0c8ad7f00386acbc0931adc0f0c4f64571ed70503205884 +size 1552 diff --git a/data/minecraft/structure/bastion/treasure/corners/top/corner_1.nbt b/data/minecraft/structure/bastion/treasure/corners/top/corner_1.nbt index e75300dc..90f458b2 100644 --- a/data/minecraft/structure/bastion/treasure/corners/top/corner_1.nbt +++ b/data/minecraft/structure/bastion/treasure/corners/top/corner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:683637ef82d077f99950a2ca57bf07f4074975051e8e227d36b081eb719db491 -size 1573 +oid sha256:1f35e0dc73fbbc07bb9296321f2c71b7da5a2c30f6a70f543b36ec9d9228982d +size 1572 diff --git a/data/minecraft/structure/bastion/treasure/entrances/entrance_0.nbt b/data/minecraft/structure/bastion/treasure/entrances/entrance_0.nbt index e0d93059..1f6d7beb 100644 --- a/data/minecraft/structure/bastion/treasure/entrances/entrance_0.nbt +++ b/data/minecraft/structure/bastion/treasure/entrances/entrance_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8249598c1f0a3e35e0ef328939042e3293ce46a415165ddd227c5b7ae47f780b -size 11197 +oid sha256:a47b1630834b2b0f6ff5076465d7a30c73d8efdf71915fcba6e40ae5cf53306d +size 11196 diff --git a/data/minecraft/structure/bastion/treasure/extensions/empty.nbt b/data/minecraft/structure/bastion/treasure/extensions/empty.nbt index 5288594f..1c133cae 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/empty.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/empty.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58bbc981ada3f2011f9f7d92aad411dff56728c24f6809cbeae10df9d7098a69 -size 233 +oid sha256:9e7f04faf08a9f025f4fe6b9c392b533dd67b4a17563a3f105dec49a1a71ec87 +size 232 diff --git a/data/minecraft/structure/bastion/treasure/extensions/fire_room.nbt b/data/minecraft/structure/bastion/treasure/extensions/fire_room.nbt index 89080adf..110d44cb 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/fire_room.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/fire_room.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24faa8ba8e284a0b86e85860bc6ad5f0d5b85d0e33856e4b2248c00c52c8aaaf -size 1867 +oid sha256:642d83c71c50aa6e38b84b609fba657abeb9fb92cfe86812ef6b782a9d5a57f7 +size 1865 diff --git a/data/minecraft/structure/bastion/treasure/extensions/house_0.nbt b/data/minecraft/structure/bastion/treasure/extensions/house_0.nbt index 471bed7b..757bf736 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/house_0.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/house_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ec438478830aac080cccb60ee303416cc9392a59ff6d29075137e42b8c82cd0 -size 2078 +oid sha256:4c2a0f24ca7f11cc68a1bc5ecf862ecaa4d64dbc6101f8d33506cfcf2c186c6a +size 2076 diff --git a/data/minecraft/structure/bastion/treasure/extensions/house_1.nbt b/data/minecraft/structure/bastion/treasure/extensions/house_1.nbt index 35fd1ec5..3f74380d 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/house_1.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10eadf6049584fda4f2209d2cce9e487924ebcf60c76cd68bf2e01e5d8984e43 -size 2160 +oid sha256:66860944b13efee264e6e586d8a5f0eef449f093b4d377e1b8ba5b84c9669fdf +size 2158 diff --git a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_0.nbt b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_0.nbt index 707a6086..38affa6e 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_0.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11d780d15e0550e6d507f3905e48c79511b503c684acba7784e55ead6030b5dc -size 455 +oid sha256:b4c97119244eafa32b50bc26f519ab152c38d4a7bb6c7e7071535b61064c6ebe +size 454 diff --git a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_1.nbt b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_1.nbt index 81f73bef..4c82e2e2 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_1.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6aeefc7b70261dcc1c9e20ee43ad9f98916e8acf7273fbe4bb3d938490dc5d05 -size 418 +oid sha256:90691991efeddf2f14c85971f6b08c95a64fd22aa3fc02301019de99f840094e +size 417 diff --git a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_2.nbt b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_2.nbt index 9ab3358f..1bf2d040 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_2.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61e4eac9fbfe753cfc32d6a0c661697f2195f09fd004a9c0b2331a7035cfa5a1 -size 539 +oid sha256:d7798bd7d7d381e84c4ce42bed366799772695a4a47adea35d3f27a71fee6496 +size 538 diff --git a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_3.nbt b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_3.nbt index c3f7727f..7cc254f9 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/large_bridge_3.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/large_bridge_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7579cc00122db91f605307d825e291c69a8f8afcd05a66272acd9222f0858f4c -size 616 +oid sha256:864375acae730747dd8e1dbc2ef1d7b1f8c5bd72974a704909b3d642cecb28c1 +size 615 diff --git a/data/minecraft/structure/bastion/treasure/extensions/roofed_bridge.nbt b/data/minecraft/structure/bastion/treasure/extensions/roofed_bridge.nbt index bdb92334..15a9fbe1 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/roofed_bridge.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/roofed_bridge.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:244f9720d26a4db6a6a435fde117187ba8bf4b78591b9f459dde949b931cbda8 -size 642 +oid sha256:803dd62f1d8eb45023c976554a0b5d1f0f78fca1d67959b8eb9c4c64a54ce141 +size 641 diff --git a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_0.nbt b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_0.nbt index 9cdad8a9..a54fe457 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_0.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ebb29a1b767083b10d820d763706a439c2178137f7205129a3fb11e4d2e0f08 -size 320 +oid sha256:623551b64b8bbe5f16e29e9280de743e45b0b82205c03ca13ce802d19739b151 +size 319 diff --git a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_1.nbt b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_1.nbt index 5f3e36c0..5a1ee914 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_1.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74d77166537c90196f4520d35048ced8cdec9607172cd8bb6e6bce2682dfba02 -size 390 +oid sha256:e211ea5b7be2f5b6a8f7f3946e1de11ee6aa6ab3331365696eefdde6e76aa347 +size 389 diff --git a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_2.nbt b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_2.nbt index e2154466..4e1ad7df 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_2.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a7c645c2480c76f97610101cc979074ba3cee64a37ab26ec21c26c5d41ac4c7 -size 349 +oid sha256:e6f453881646219422962a5e7419699d699315b6fc778bc3ba541400e2f5e326 +size 348 diff --git a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_3.nbt b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_3.nbt index 39036e76..e39c96ba 100644 --- a/data/minecraft/structure/bastion/treasure/extensions/small_bridge_3.nbt +++ b/data/minecraft/structure/bastion/treasure/extensions/small_bridge_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a70d3fe9007fb110b4bf0b8dd29fa34c70d45819a229eeefa0eabb5509e5da57 -size 480 +oid sha256:e85ab261979a6eedc148a9cfdc88ad4c055f2ce491abbdaa49808d82336443a1 +size 479 diff --git a/data/minecraft/structure/bastion/treasure/ramparts/bottom_wall_0.nbt b/data/minecraft/structure/bastion/treasure/ramparts/bottom_wall_0.nbt index 28e1f3de..4ad29ddf 100644 --- a/data/minecraft/structure/bastion/treasure/ramparts/bottom_wall_0.nbt +++ b/data/minecraft/structure/bastion/treasure/ramparts/bottom_wall_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68b815cb7459b01fd44135d7b4e0f78857e3e5dec7f3d1dea1767c3e4b484836 +oid sha256:5667afbd8f8fad677671a902c231ed87f9c6d845cbd15f9680978fe33e73bd9e size 11780 diff --git a/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_main.nbt b/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_main.nbt index 224440cc..dce0138f 100644 --- a/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_main.nbt +++ b/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_main.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ea628e23596667c28cb5b9ab1ca2b32da2addd6b23a257c07dfb7f5c7bae217 -size 24170 +oid sha256:d149f3914d9418f822f1d07e219451266a6f825ecbb0ea15f16b5291aca127c7 +size 24168 diff --git a/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_side.nbt b/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_side.nbt index 7139141f..85648745 100644 --- a/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_side.nbt +++ b/data/minecraft/structure/bastion/treasure/ramparts/lava_basin_side.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54fb03572b9da7501cdbf3ca16cbb92dcadde6cdba310df5f601465a1352598b -size 23969 +oid sha256:f18c95c16cd38733e3a28805f9a0aa44742407ab37e0d694094a555e63548e7f +size 23968 diff --git a/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_main.nbt b/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_main.nbt index d95ed08e..6ce6ebac 100644 --- a/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_main.nbt +++ b/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_main.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f91e6aa64a591272261c5afa3ed4d594040f8f56201407a1991a686d6e92d2df -size 18999 +oid sha256:355c43639fdbc05635f886c3af392dc6f6bcbb57ba43860aadbea5796a86d99c +size 18998 diff --git a/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_side.nbt b/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_side.nbt index aa01afa8..ed06b254 100644 --- a/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_side.nbt +++ b/data/minecraft/structure/bastion/treasure/ramparts/mid_wall_side.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57c3193656cc9be115d154f8987eb335820b1b7d641e6b3d6e2fbac7717cb0a3 -size 18147 +oid sha256:6bd8272928ed1b1383cbf4cf1aaf114df7f0ac7fa652ddd41cebca0a930c7ad2 +size 18146 diff --git a/data/minecraft/structure/bastion/treasure/ramparts/top_wall.nbt b/data/minecraft/structure/bastion/treasure/ramparts/top_wall.nbt index 00c3dcfa..fd33db34 100644 --- a/data/minecraft/structure/bastion/treasure/ramparts/top_wall.nbt +++ b/data/minecraft/structure/bastion/treasure/ramparts/top_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee9099d83904efde3c1ff0208f61adec3e807e454fbf0cf312a53b04ef9a8375 -size 9861 +oid sha256:1f7d3144597e7411b1bdfe51fb2c9087109101c2283945a48f1c931e1b075e6c +size 9860 diff --git a/data/minecraft/structure/bastion/treasure/roofs/center_roof.nbt b/data/minecraft/structure/bastion/treasure/roofs/center_roof.nbt index a2219030..85aa77fc 100644 --- a/data/minecraft/structure/bastion/treasure/roofs/center_roof.nbt +++ b/data/minecraft/structure/bastion/treasure/roofs/center_roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d64bc756fd9e798270837f729299cf1de0f6a1dc7a450da61d993cd52a4ef9a -size 3448 +oid sha256:46bfe4f34e03501bf8c7e858dfdbcc4136fba06afdd234fba1be1118300438c2 +size 3447 diff --git a/data/minecraft/structure/bastion/treasure/roofs/corner_roof.nbt b/data/minecraft/structure/bastion/treasure/roofs/corner_roof.nbt index 14dd291f..558ceb4d 100644 --- a/data/minecraft/structure/bastion/treasure/roofs/corner_roof.nbt +++ b/data/minecraft/structure/bastion/treasure/roofs/corner_roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d9f73b69404d6ca55562da9bb64af3d145d0f78eb4fb665629cd81b0e2804de -size 425 +oid sha256:21c3128d58e2deaa78ef762877b57842c76bf4d863e22054622553de66d08a16 +size 424 diff --git a/data/minecraft/structure/bastion/treasure/roofs/wall_roof.nbt b/data/minecraft/structure/bastion/treasure/roofs/wall_roof.nbt index b5dab95d..f4a085ee 100644 --- a/data/minecraft/structure/bastion/treasure/roofs/wall_roof.nbt +++ b/data/minecraft/structure/bastion/treasure/roofs/wall_roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:900b46cd5d639f03a91906301788e9ea0c75967338b9fedc6b45bf61850c835a +oid sha256:b6373766543575201120e9b6255e2d46d419194f4a0fd8ecef6ba8bead536d20 size 991 diff --git a/data/minecraft/structure/bastion/treasure/stairs/lower_stairs.nbt b/data/minecraft/structure/bastion/treasure/stairs/lower_stairs.nbt index 59442f8d..0d072ad0 100644 --- a/data/minecraft/structure/bastion/treasure/stairs/lower_stairs.nbt +++ b/data/minecraft/structure/bastion/treasure/stairs/lower_stairs.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c618813add54ef52c1e12966e813a78b6725f37f1e618ddbb210718a6457562a -size 447 +oid sha256:5977b994bcd6a62019b65e55afee4b81da6a087ecdd37121b5c72c3138cef67d +size 445 diff --git a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_0.nbt b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_0.nbt index 257d7fbd..a5499914 100644 --- a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_0.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f4c787832a0503206bfa41ada4d240d6545b3940d69f64f332e1020b409bf0a -size 6613 +oid sha256:de2e71ed8221d47308115e332d0379c9a42c673756b03d42fb052cbd4408ea8e +size 6611 diff --git a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_1.nbt b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_1.nbt index 2bfdfd4a..b3dde151 100644 --- a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_1.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf71c2125a56826fbf8fe3317fa8a020ad65be6657d4e072dd182d03bdb6d795 -size 6500 +oid sha256:0fa73c0ef1e17c6ab5439a05d5e2fdb2d1ddaa27ad7afe0fe82183482ca557b6 +size 6499 diff --git a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_2.nbt b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_2.nbt index d2261887..51974509 100644 --- a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_2.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fde0f9f9e281c15ce1e7b1dd2783f7c0454ef9504a142f5e503665d300ffe580 -size 6443 +oid sha256:a004390b206a8c30a6c6c3c7b4987f2bec3cc30f76ccf496d1ba15a5b7df961a +size 6442 diff --git a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_3.nbt b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_3.nbt index 07b8327c..efb79c0c 100644 --- a/data/minecraft/structure/bastion/treasure/walls/bottom/wall_3.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/bottom/wall_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd29734f3571496a6f399460eec7b95c521b887cab413c0379ac0d748fa0899e -size 6491 +oid sha256:c0ca74e37c70907c9bb7a89297e1b658b98b48267759eb778b24781b9bd255f6 +size 6489 diff --git a/data/minecraft/structure/bastion/treasure/walls/entrance_wall.nbt b/data/minecraft/structure/bastion/treasure/walls/entrance_wall.nbt index 953e0667..c725638b 100644 --- a/data/minecraft/structure/bastion/treasure/walls/entrance_wall.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/entrance_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0c299ee1518049adcf134cbb15375af5d5649bdf4f553b0dbc223fb4be5cf02 -size 2679 +oid sha256:d6eaca758f55c7575d719eb28b9cfccfa01a8806613ecb2f8b7841ebecad9597 +size 2678 diff --git a/data/minecraft/structure/bastion/treasure/walls/lava_wall.nbt b/data/minecraft/structure/bastion/treasure/walls/lava_wall.nbt index 99c36345..8b0d9566 100644 --- a/data/minecraft/structure/bastion/treasure/walls/lava_wall.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/lava_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c95d2d78d53c516aa4a03fc0c4f861b491259c92747f67d5bc52be2e4e5a0f87 +oid sha256:f6ec769d2205e2cf43a2ab6b23f75e2627b1565a2caac29c159c97491a8adb3b size 2798 diff --git a/data/minecraft/structure/bastion/treasure/walls/mid/wall_0.nbt b/data/minecraft/structure/bastion/treasure/walls/mid/wall_0.nbt index 24860086..9965b5a1 100644 --- a/data/minecraft/structure/bastion/treasure/walls/mid/wall_0.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/mid/wall_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d6f416c7696a3aa161150e713d91a7e0ecc5eb09975469c00803ef2121da6cd -size 6297 +oid sha256:0d2dc34c0643b18b6055ef8ccab6d9dd968ceddb8fb810e74460e555498cb0b8 +size 6296 diff --git a/data/minecraft/structure/bastion/treasure/walls/mid/wall_1.nbt b/data/minecraft/structure/bastion/treasure/walls/mid/wall_1.nbt index 69da20c9..8bc7c0a4 100644 --- a/data/minecraft/structure/bastion/treasure/walls/mid/wall_1.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/mid/wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:323266de1206feee0caae492b9e3aa1271d7a0640103bb9b40fb57d73f74a78f -size 6153 +oid sha256:ed05646e6445e4d94a063fe183dd02e6369a07a9009251181a3c26ac6868e384 +size 6152 diff --git a/data/minecraft/structure/bastion/treasure/walls/mid/wall_2.nbt b/data/minecraft/structure/bastion/treasure/walls/mid/wall_2.nbt index 1dd37cc8..6982b055 100644 --- a/data/minecraft/structure/bastion/treasure/walls/mid/wall_2.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/mid/wall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b77cd66f9a3e26497be9d8dd443147185bf9817486364268c964241967373395 -size 6175 +oid sha256:276d633bd6dfee1116697bf2211097cd0ddefbdc1ac7781838eee4c5bb75fa65 +size 6174 diff --git a/data/minecraft/structure/bastion/treasure/walls/outer/bottom_corner.nbt b/data/minecraft/structure/bastion/treasure/walls/outer/bottom_corner.nbt index 8f56f3f3..70022bcf 100644 --- a/data/minecraft/structure/bastion/treasure/walls/outer/bottom_corner.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/outer/bottom_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:679323d55486fd0865eb78d9a038077c5aad90ced304a49c90f5f0af51bf5cf8 -size 782 +oid sha256:f1d395a6aeda04bff46d75623869edf1e81a9fd789601d54ae49053f07484838 +size 780 diff --git a/data/minecraft/structure/bastion/treasure/walls/outer/medium_outer_wall.nbt b/data/minecraft/structure/bastion/treasure/walls/outer/medium_outer_wall.nbt index 0a55522b..8da1acb7 100644 --- a/data/minecraft/structure/bastion/treasure/walls/outer/medium_outer_wall.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/outer/medium_outer_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:644d3a1790912f81334f6781982f647a590c6e716f7cf4995aeb02c927ccca67 +oid sha256:851603196172d531995877168ffb707c15a15377b4079cd71d638ef1de2251d2 size 2333 diff --git a/data/minecraft/structure/bastion/treasure/walls/outer/mid_corner.nbt b/data/minecraft/structure/bastion/treasure/walls/outer/mid_corner.nbt index 94381904..4690718e 100644 --- a/data/minecraft/structure/bastion/treasure/walls/outer/mid_corner.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/outer/mid_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4871422347c2c90fbb9e799c154f1c9918b4f53aa57fc401767ab51539d43b82 -size 714 +oid sha256:347ffedc51f17edbcd7de2923658323645c9bec8b03542ca5a092ab71dad51ea +size 713 diff --git a/data/minecraft/structure/bastion/treasure/walls/outer/outer_wall.nbt b/data/minecraft/structure/bastion/treasure/walls/outer/outer_wall.nbt index 2d9081b8..da1e30ec 100644 --- a/data/minecraft/structure/bastion/treasure/walls/outer/outer_wall.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/outer/outer_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e376bb26d9fb48c0199eed441fe6a5429841c30c4103b47a6629fa75267e0b7 -size 2206 +oid sha256:43607212a2ee82c866d86475038cd19289d82b4fe213c5b28294fcc899942087 +size 2204 diff --git a/data/minecraft/structure/bastion/treasure/walls/outer/tall_outer_wall.nbt b/data/minecraft/structure/bastion/treasure/walls/outer/tall_outer_wall.nbt index fb52262f..eecc19a2 100644 --- a/data/minecraft/structure/bastion/treasure/walls/outer/tall_outer_wall.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/outer/tall_outer_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db06831846f378049e9fd3f754ef575dd8d8a3318da2643942ef3235534088e9 -size 2449 +oid sha256:e57ea31a95b6f2d416004ef60aa0ec73bfdcab611db93ecf826cb7af974917b7 +size 2448 diff --git a/data/minecraft/structure/bastion/treasure/walls/outer/top_corner.nbt b/data/minecraft/structure/bastion/treasure/walls/outer/top_corner.nbt index 0c3de42d..4e074a93 100644 --- a/data/minecraft/structure/bastion/treasure/walls/outer/top_corner.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/outer/top_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19979840c653e0b040b85632eec0a3853d246ffcc718f3cb7e7326ad101755d2 -size 806 +oid sha256:163dfbe00a2707ff12b159d9fad0f4b824a05f988e3dc7165a499124e05308d9 +size 805 diff --git a/data/minecraft/structure/bastion/treasure/walls/top/main_entrance.nbt b/data/minecraft/structure/bastion/treasure/walls/top/main_entrance.nbt index bc4a97ef..9e619cfb 100644 --- a/data/minecraft/structure/bastion/treasure/walls/top/main_entrance.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/top/main_entrance.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db4e8000b68a71e54e9f45a94f5480a6d63a2010cacd4e8bc81bc3afc6fe98a5 -size 6220 +oid sha256:2c0c049202b75f31dd02f726a6ea2a6304d6caf5acc9b04ff1568ea61fa867ed +size 6219 diff --git a/data/minecraft/structure/bastion/treasure/walls/top/wall_0.nbt b/data/minecraft/structure/bastion/treasure/walls/top/wall_0.nbt index 57b1d40c..dc1db813 100644 --- a/data/minecraft/structure/bastion/treasure/walls/top/wall_0.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/top/wall_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e01bbe2b4954aa7aa6dae1cfe7e86636d26bcc6979eeb63d6890827bd25b2534 -size 6226 +oid sha256:73372a7aa32eeb2095567953113cc7379f309667d5cad8c4d1fcdcf23d5a20f3 +size 6225 diff --git a/data/minecraft/structure/bastion/treasure/walls/top/wall_1.nbt b/data/minecraft/structure/bastion/treasure/walls/top/wall_1.nbt index b8c5af4f..a990cabe 100644 --- a/data/minecraft/structure/bastion/treasure/walls/top/wall_1.nbt +++ b/data/minecraft/structure/bastion/treasure/walls/top/wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61aa3cd68381bc20b98353d2aaf514e6f292b126c9f8d48a8257326a06380423 -size 6219 +oid sha256:6de3d6c5a535715d953408c9d9a93bddf4864df7cdc815c6dee4b44298314fc0 +size 6217 diff --git a/data/minecraft/structure/bastion/units/air_base.nbt b/data/minecraft/structure/bastion/units/air_base.nbt index 0b2202d1..e7f8c013 100644 --- a/data/minecraft/structure/bastion/units/air_base.nbt +++ b/data/minecraft/structure/bastion/units/air_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:633652ca0b28fe45df8a9eeec57cd5a6717d04c29384d5c136d08d41bfab3a12 -size 63633 +oid sha256:8efd04fdfd2c2bd073bf5dcf2c126c4155ef00912ac1d0b7e3d8a90ef0eef74e +size 63631 diff --git a/data/minecraft/structure/bastion/units/center_pieces/center_0.nbt b/data/minecraft/structure/bastion/units/center_pieces/center_0.nbt index b6acfb92..630ba63f 100644 --- a/data/minecraft/structure/bastion/units/center_pieces/center_0.nbt +++ b/data/minecraft/structure/bastion/units/center_pieces/center_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a18677c89a3915c3c07e8606dac2160304594941c34c41f254405b0435242621 -size 3083 +oid sha256:1727560b5058c438d96bdc6b4365fb549c061bd29a3f6783a338cdfaa43b9394 +size 3082 diff --git a/data/minecraft/structure/bastion/units/center_pieces/center_1.nbt b/data/minecraft/structure/bastion/units/center_pieces/center_1.nbt index e444e230..88ca3b21 100644 --- a/data/minecraft/structure/bastion/units/center_pieces/center_1.nbt +++ b/data/minecraft/structure/bastion/units/center_pieces/center_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44da2256b1fa270f37f6e1d71f0ffe11a4eb874f5f2d8198ee5eb220f66b132f -size 3293 +oid sha256:cfd0fb586fad6a46fc392731d147d191ca0f4d644fc1c191a343a73662237668 +size 3292 diff --git a/data/minecraft/structure/bastion/units/center_pieces/center_2.nbt b/data/minecraft/structure/bastion/units/center_pieces/center_2.nbt index cc18fcae..0e48c26b 100644 --- a/data/minecraft/structure/bastion/units/center_pieces/center_2.nbt +++ b/data/minecraft/structure/bastion/units/center_pieces/center_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aa162487badc8855bdca3366ec67304381239ee5325be9de6d5b929ee6ba9b4 -size 3359 +oid sha256:c6fe69409c5b3defe9c1a59277908aba4f5ed99ad72745e699f0d4f6df9075ff +size 3358 diff --git a/data/minecraft/structure/bastion/units/edges/edge_0.nbt b/data/minecraft/structure/bastion/units/edges/edge_0.nbt index d1e31271..22b8a91e 100644 --- a/data/minecraft/structure/bastion/units/edges/edge_0.nbt +++ b/data/minecraft/structure/bastion/units/edges/edge_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a92a8a16ba728c9bcceb4cee40142310cd98a65a79d6e83f6df5cf45c87dc4f5 -size 2382 +oid sha256:3af1754348206527c6791a3c79caf9b58f0bd226afa0e7e5a0968442399ca393 +size 2381 diff --git a/data/minecraft/structure/bastion/units/fillers/stage_0.nbt b/data/minecraft/structure/bastion/units/fillers/stage_0.nbt index 3b115511..b78f2841 100644 --- a/data/minecraft/structure/bastion/units/fillers/stage_0.nbt +++ b/data/minecraft/structure/bastion/units/fillers/stage_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc4852ee910c0779609cdd2827853ed7b47f5119c9e5443afa8402d68b6f2202 -size 2454 +oid sha256:c22c6d840d487f06c404cdfee74f1367f9261104b97ab0e872fc2c388b17a85b +size 2453 diff --git a/data/minecraft/structure/bastion/units/pathways/pathway_0.nbt b/data/minecraft/structure/bastion/units/pathways/pathway_0.nbt index 1610e5e8..c83b10cc 100644 --- a/data/minecraft/structure/bastion/units/pathways/pathway_0.nbt +++ b/data/minecraft/structure/bastion/units/pathways/pathway_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5b1ef64683018dde51c4f05deffb0781db846b3804319b737573ccc9e1125f2 -size 355 +oid sha256:29c64a75f34a49f34d9c527c0e40c88f1e6e38c0678ee2743b1ac3f2fa1737f8 +size 354 diff --git a/data/minecraft/structure/bastion/units/pathways/pathway_wall_0.nbt b/data/minecraft/structure/bastion/units/pathways/pathway_wall_0.nbt index 5a550f83..970268bd 100644 --- a/data/minecraft/structure/bastion/units/pathways/pathway_wall_0.nbt +++ b/data/minecraft/structure/bastion/units/pathways/pathway_wall_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f924199bb32fb5ad0a8aaec8ee889860fab2bba28c6330b9b43a4ff17367650b -size 355 +oid sha256:9ead8d1f254f8628d7e8568ca99c9f4c8eb81ad9a162a931ed364bd7cbdbcb21 +size 353 diff --git a/data/minecraft/structure/bastion/units/rampart_plates/plate_0.nbt b/data/minecraft/structure/bastion/units/rampart_plates/plate_0.nbt index 30720650..9b0cd8cd 100644 --- a/data/minecraft/structure/bastion/units/rampart_plates/plate_0.nbt +++ b/data/minecraft/structure/bastion/units/rampart_plates/plate_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d6acf44775086d9335a097da6a4080bc6cb0722e70c63fc362ef0d8da2eed3d -size 3657 +oid sha256:5a15ed4ffe5fe2729b85589e2f67e4e47ee62b567d59a05ee70a348c6b7f9438 +size 3656 diff --git a/data/minecraft/structure/bastion/units/ramparts/ramparts_0.nbt b/data/minecraft/structure/bastion/units/ramparts/ramparts_0.nbt index a77c34aa..0d66b0c5 100644 --- a/data/minecraft/structure/bastion/units/ramparts/ramparts_0.nbt +++ b/data/minecraft/structure/bastion/units/ramparts/ramparts_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2f7a22e8b805988d6af6fb5d1de05fe69531a6631e022f9662a339552c3045e +oid sha256:4a1d29dcc226596ccd412c34c9474bbdd163560e07a01cf7e3a8a2dc105a569b size 23660 diff --git a/data/minecraft/structure/bastion/units/ramparts/ramparts_1.nbt b/data/minecraft/structure/bastion/units/ramparts/ramparts_1.nbt index 55b9f6fe..89001a8c 100644 --- a/data/minecraft/structure/bastion/units/ramparts/ramparts_1.nbt +++ b/data/minecraft/structure/bastion/units/ramparts/ramparts_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:858ddf44d9305ef50873f9a3a5d117da2a2799c1a7a46dd9db6729ada3255157 -size 11771 +oid sha256:398a1cd58636ee512c4680c121c2cba80ba3d6e59131b07c0ea38c6727bd989c +size 11770 diff --git a/data/minecraft/structure/bastion/units/ramparts/ramparts_2.nbt b/data/minecraft/structure/bastion/units/ramparts/ramparts_2.nbt index 64ca3846..4fbd385b 100644 --- a/data/minecraft/structure/bastion/units/ramparts/ramparts_2.nbt +++ b/data/minecraft/structure/bastion/units/ramparts/ramparts_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a79bc2457a5d81e4e1611cd81aabd3d3fd605bfb87b6d1017c88108adfd2189e -size 6942 +oid sha256:e848fc7828cee35c94a3b94ef141aa81be5920ccd9f763c2f120b16457516b5e +size 6941 diff --git a/data/minecraft/structure/bastion/units/stages/rot/stage_1_0.nbt b/data/minecraft/structure/bastion/units/stages/rot/stage_1_0.nbt index a10e7118..15809db5 100644 --- a/data/minecraft/structure/bastion/units/stages/rot/stage_1_0.nbt +++ b/data/minecraft/structure/bastion/units/stages/rot/stage_1_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00045499792e2c29c1ba4cb903c38ea3c063f7daed14b5f2cfe510ca92f9e6a3 -size 2401 +oid sha256:147cd9a4b8a731e77b0d62a8a0f86621fc2c75d73e632d49c43550c4d73bec4e +size 2400 diff --git a/data/minecraft/structure/bastion/units/stages/stage_0_0.nbt b/data/minecraft/structure/bastion/units/stages/stage_0_0.nbt index 73509c56..f69fe3cd 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_0_0.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_0_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7dd63869031ccd8d9689445882d8b5e979dc567dede365cb7710529ee9a356b9 -size 2549 +oid sha256:22996e55c911f9025d720fb44dd1e52ddb86d706308d3408b74b0565ff1183f5 +size 2548 diff --git a/data/minecraft/structure/bastion/units/stages/stage_0_1.nbt b/data/minecraft/structure/bastion/units/stages/stage_0_1.nbt index b7bcffbc..54ed299a 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_0_1.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_0_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55e1da3c9e3217970a33ee08bb9f8eb7891e785ae22ce5e3fa9221299d4834d8 -size 2613 +oid sha256:b1e5f2cae28a0c7c8e7f60a5f1339039d95ba898b3f413bf30b17bb5f1fda4a8 +size 2612 diff --git a/data/minecraft/structure/bastion/units/stages/stage_0_2.nbt b/data/minecraft/structure/bastion/units/stages/stage_0_2.nbt index d636ec04..95c91226 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_0_2.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_0_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64fceff096932695e3a6183800ab9dd602eeb13c902de82da4903fac91b5774c -size 2705 +oid sha256:497f8ab1127b47de7724731e59ec719251d16130023e55cbed59b0d5e419531f +size 2703 diff --git a/data/minecraft/structure/bastion/units/stages/stage_0_3.nbt b/data/minecraft/structure/bastion/units/stages/stage_0_3.nbt index 2e1bccd1..a0c152ce 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_0_3.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_0_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7b419d50a77b8e50bf0a2e279a4599f6ce0f2a1d42abeed0e873eb5f03afb5f -size 2507 +oid sha256:b865aa8f857e931b9ef67f4c23c34d9d9c7648d502590f9a3053a6c2ae89b2f9 +size 2505 diff --git a/data/minecraft/structure/bastion/units/stages/stage_1_0.nbt b/data/minecraft/structure/bastion/units/stages/stage_1_0.nbt index 6665cb74..b23d6169 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_1_0.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_1_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0a69168cfb16df2cd83a65f5221f631420dbe8e310b067f1947c05c4126827d -size 2442 +oid sha256:6a3e4e14beb5ab08694ef52da38af0a5ee6d97b5f92eeda4b02e6dd8e87e8eb7 +size 2441 diff --git a/data/minecraft/structure/bastion/units/stages/stage_1_1.nbt b/data/minecraft/structure/bastion/units/stages/stage_1_1.nbt index b1c489c5..a15c439c 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_1_1.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_1_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3be464f734063e79d54b3ce1d4e263caaca84938effb295542da1806f083f687 -size 2422 +oid sha256:742f7f1e4ca7027352a55fbb2ce14543174ca807c744f90f7d1a062960cf87d2 +size 2420 diff --git a/data/minecraft/structure/bastion/units/stages/stage_1_2.nbt b/data/minecraft/structure/bastion/units/stages/stage_1_2.nbt index 0ef8384a..39fc3d31 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_1_2.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_1_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d93160de32ef64c6fa1916b73212cadd4785170d2945c3c6e20eb6abd7fb97e -size 2510 +oid sha256:0eed4168e4f3ac3a318b092c5de17e0d117a4cbfbafc53d05a3055091d7a2a7b +size 2509 diff --git a/data/minecraft/structure/bastion/units/stages/stage_1_3.nbt b/data/minecraft/structure/bastion/units/stages/stage_1_3.nbt index dfb2f039..e5b2f548 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_1_3.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_1_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ab1e07b29beba55c7556c8eb565c5747f1ffddb2ca6506c045d488de6ebcada -size 2486 +oid sha256:0e1527a1a5f853e75a57670af8920e2aa7dc33ca1bda803a18792024a1c5d36b +size 2485 diff --git a/data/minecraft/structure/bastion/units/stages/stage_2_0.nbt b/data/minecraft/structure/bastion/units/stages/stage_2_0.nbt index 58b88ffc..a11a5a25 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_2_0.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_2_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a772c1c2d881302fa92e2fd49f310235cd1534ce2d5959fb7a3a7f55cef34ae -size 2423 +oid sha256:0a5805791f7b63c15c0e1459191892ef398126da07f79d8925afc4fb7381f05f +size 2422 diff --git a/data/minecraft/structure/bastion/units/stages/stage_2_1.nbt b/data/minecraft/structure/bastion/units/stages/stage_2_1.nbt index eb140c8c..3ab5f1d0 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_2_1.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_2_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1156b93a87655fc14ad60817c159347992b6e9f393f68847df662652f1ca177 -size 2461 +oid sha256:c488b447cd3c5082454c70270498f5da01b028fca659f8c5faa8114c00f512ae +size 2459 diff --git a/data/minecraft/structure/bastion/units/stages/stage_3_0.nbt b/data/minecraft/structure/bastion/units/stages/stage_3_0.nbt index 958d16c7..b63998a4 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_3_0.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_3_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:221a683f5a8aa9cc18b743ec3b471bcf7f374a1923b760d148cdb7acca6b9343 -size 633 +oid sha256:4ca9b6afedb034bab7cbae1bf43f838b103a87b511d36c42346c3be93b1b60f4 +size 632 diff --git a/data/minecraft/structure/bastion/units/stages/stage_3_1.nbt b/data/minecraft/structure/bastion/units/stages/stage_3_1.nbt index 5548795b..70230e38 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_3_1.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_3_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18b2ca8cd1e06d94b5bb32fbb5f1878aaa959c806cc1af86cbadd337476bb73b -size 690 +oid sha256:7527a5e730663c5983944886f4b0723c27023c7a92df25d954b4a7a23e4c31f2 +size 689 diff --git a/data/minecraft/structure/bastion/units/stages/stage_3_2.nbt b/data/minecraft/structure/bastion/units/stages/stage_3_2.nbt index 5dd24aa6..00909102 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_3_2.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_3_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdc2948b152a5d3ea7dd1db159eaa422999a108c40772068f5515f105cdb3371 -size 629 +oid sha256:9e238b8285e0cac7d0827899775cd94abb1bc6c820196999b8249dc51389ad23 +size 628 diff --git a/data/minecraft/structure/bastion/units/stages/stage_3_3.nbt b/data/minecraft/structure/bastion/units/stages/stage_3_3.nbt index 32f7e725..5d66bced 100644 --- a/data/minecraft/structure/bastion/units/stages/stage_3_3.nbt +++ b/data/minecraft/structure/bastion/units/stages/stage_3_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1db05117f0120272414d0e0104ae09685b377a1146b4c0d1d31242e9c7e467e8 -size 656 +oid sha256:43d643a7b140fc951492122afa76d865a256875927fc868d0d94ecb43a9b4ecb +size 655 diff --git a/data/minecraft/structure/bastion/units/wall_units/edge_0_large.nbt b/data/minecraft/structure/bastion/units/wall_units/edge_0_large.nbt index 08f3c86b..e7a48970 100644 --- a/data/minecraft/structure/bastion/units/wall_units/edge_0_large.nbt +++ b/data/minecraft/structure/bastion/units/wall_units/edge_0_large.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d02fa400bf401c9b898d9d4d0ef6c8313c434a083759c118065ae86c88fe240 +oid sha256:45020723f656784a902a76139c41b5998f6df288f86367771c1c52c411ff9fa5 size 2821 diff --git a/data/minecraft/structure/bastion/units/wall_units/unit_0.nbt b/data/minecraft/structure/bastion/units/wall_units/unit_0.nbt index 465aaf9e..d6b77261 100644 --- a/data/minecraft/structure/bastion/units/wall_units/unit_0.nbt +++ b/data/minecraft/structure/bastion/units/wall_units/unit_0.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9ed68f8045169e935dea6a25086065b43a541ec018ec7385ce1e1ff26f6b6f7 -size 2500 +oid sha256:c27a5080ec7a86fa5edfc004642df0b71bb982f8f485efd8c66455ea40b93a4f +size 2499 diff --git a/data/minecraft/structure/bastion/units/walls/connected_wall.nbt b/data/minecraft/structure/bastion/units/walls/connected_wall.nbt index 5259ff52..90e80d6a 100644 --- a/data/minecraft/structure/bastion/units/walls/connected_wall.nbt +++ b/data/minecraft/structure/bastion/units/walls/connected_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1006f25a4113449ef99ce200cdc1600158ff053778e15c5f0e553aad7435a5a5 +oid sha256:447c0a3b847b96ae609d9df9ffb5cdcf67182183d185f068b654bfcbf863962d size 15616 diff --git a/data/minecraft/structure/bastion/units/walls/wall_base.nbt b/data/minecraft/structure/bastion/units/walls/wall_base.nbt index 9258b9e5..06478d2b 100644 --- a/data/minecraft/structure/bastion/units/walls/wall_base.nbt +++ b/data/minecraft/structure/bastion/units/walls/wall_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5e17565ce8493388fcf145b6cb12036ff70a40a44934a04beeab87a046b4be6 -size 16904 +oid sha256:1e5907afd081aed2e6e4a88e379e858fd4886c1940efd0e09be3692af4b563d2 +size 16903 diff --git a/data/minecraft/structure/end_city/base_floor.nbt b/data/minecraft/structure/end_city/base_floor.nbt index 09d5ff9b..7beee710 100644 --- a/data/minecraft/structure/end_city/base_floor.nbt +++ b/data/minecraft/structure/end_city/base_floor.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38317c4411beabb660c9148388b857cc2fcd365da5b48d7e88af023de2a81624 +oid sha256:d33bebb178493b32d77266ca96890bf78155ebc19f8ea21ee2eabf39edef9c1b size 1686 diff --git a/data/minecraft/structure/end_city/base_roof.nbt b/data/minecraft/structure/end_city/base_roof.nbt index c0dac588..0dadf555 100644 --- a/data/minecraft/structure/end_city/base_roof.nbt +++ b/data/minecraft/structure/end_city/base_roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a533f8b2809a084e6b5b7ee4a9cb263c722ddd7c498041a05217df7d16e5fc95 -size 1180 +oid sha256:951a1124ae92d8b483395df2befeb125dd5e6a693075e91df4eea0f34ce5f0b2 +size 1179 diff --git a/data/minecraft/structure/end_city/bridge_end.nbt b/data/minecraft/structure/end_city/bridge_end.nbt index 665880c1..9ff84ae8 100644 --- a/data/minecraft/structure/end_city/bridge_end.nbt +++ b/data/minecraft/structure/end_city/bridge_end.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4714bdff07a0ec8e9a18ec2870c8d5451ad78741495ddc940b3ff95f2b95bee5 -size 475 +oid sha256:2bc3e45a0f966769c8beb362a74e337b0631b938fd94c9fce2eca9545c4e4d78 +size 474 diff --git a/data/minecraft/structure/end_city/bridge_gentle_stairs.nbt b/data/minecraft/structure/end_city/bridge_gentle_stairs.nbt index 281917ac..7af5e6e7 100644 --- a/data/minecraft/structure/end_city/bridge_gentle_stairs.nbt +++ b/data/minecraft/structure/end_city/bridge_gentle_stairs.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74ee7121b2fcdc4d3006026b265a355960526aae14bc06c7230c797a4ab5e36b -size 1142 +oid sha256:594ea8d5ecaaf71b198b7075e7d40e0d88b8f35d5df921d1de47d1b3b2f2a91e +size 1141 diff --git a/data/minecraft/structure/end_city/bridge_piece.nbt b/data/minecraft/structure/end_city/bridge_piece.nbt index bea24e05..86e8d95d 100644 --- a/data/minecraft/structure/end_city/bridge_piece.nbt +++ b/data/minecraft/structure/end_city/bridge_piece.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d36bf17a981e53c16d8e011dfe1893e7af5866c5f8d83a6cc388a21fef11c30 -size 599 +oid sha256:239717279dbdfa0ce5d65c70902abd27ba76b586c8efcabd3c8170c6e0d9f8aa +size 598 diff --git a/data/minecraft/structure/end_city/bridge_steep_stairs.nbt b/data/minecraft/structure/end_city/bridge_steep_stairs.nbt index 30066040..12b29479 100644 --- a/data/minecraft/structure/end_city/bridge_steep_stairs.nbt +++ b/data/minecraft/structure/end_city/bridge_steep_stairs.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:124f3a0f8d981b50b7dd7a583cbc0e65bf6a4894a6f30e326e4d53407e11122a -size 714 +oid sha256:4a981289e38ece609015acefa9a9529491ad2de3c17bd1c9be308c5276fe1df2 +size 713 diff --git a/data/minecraft/structure/end_city/fat_tower_base.nbt b/data/minecraft/structure/end_city/fat_tower_base.nbt index 5de021ec..23d011dc 100644 --- a/data/minecraft/structure/end_city/fat_tower_base.nbt +++ b/data/minecraft/structure/end_city/fat_tower_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73e420c6113aa0cb4779b7916247eac7879ec8ea5fa6148afaeb27f51fa0cefc -size 2338 +oid sha256:9d30d19f349c4b772f1dea9fc10617af23f24d907829ef7eceed195d92b34d3f +size 2337 diff --git a/data/minecraft/structure/end_city/fat_tower_middle.nbt b/data/minecraft/structure/end_city/fat_tower_middle.nbt index e94cb014..6d9c6cdb 100644 --- a/data/minecraft/structure/end_city/fat_tower_middle.nbt +++ b/data/minecraft/structure/end_city/fat_tower_middle.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb5edd25975a892a71fc1d0bf6dcc79350b89f258960f0d6dbb78eb2f8caca81 -size 4468 +oid sha256:956951f0b0829696ea9767987fd11df2e5510febd5fc2cb537f83fa3d1b83363 +size 4467 diff --git a/data/minecraft/structure/end_city/fat_tower_top.nbt b/data/minecraft/structure/end_city/fat_tower_top.nbt index c8b6c7f5..642c0f5c 100644 --- a/data/minecraft/structure/end_city/fat_tower_top.nbt +++ b/data/minecraft/structure/end_city/fat_tower_top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8829622de14e4de10181c6b37eb6e8891114b8450f986080319918d151608fce -size 5959 +oid sha256:5cfd0131aa1c7679aeab6e2d74ac796629e0bcbd1beb058d082534438a1b651e +size 5958 diff --git a/data/minecraft/structure/end_city/second_floor_1.nbt b/data/minecraft/structure/end_city/second_floor_1.nbt index da5819fa..aeb5349d 100644 --- a/data/minecraft/structure/end_city/second_floor_1.nbt +++ b/data/minecraft/structure/end_city/second_floor_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6df6562d733c2b7c53edd2e13e683a60c9487d6ea5db418f8b4845f80e1a124 -size 3716 +oid sha256:ec5d2d16653c74f694fe8412c9e4ec2dc041221442c2ce1e23a27027302129ff +size 3715 diff --git a/data/minecraft/structure/end_city/second_floor_2.nbt b/data/minecraft/structure/end_city/second_floor_2.nbt index 65fbb548..8cba4869 100644 --- a/data/minecraft/structure/end_city/second_floor_2.nbt +++ b/data/minecraft/structure/end_city/second_floor_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b2ed03aa52dff8a48d4416a2e288275f27e55b4611ca57b23efbd0873cafbfa -size 3970 +oid sha256:646abf3645c9d1be63576369a7301e9632ddf22b0b88961a9bdcfd313f180fc5 +size 3968 diff --git a/data/minecraft/structure/end_city/second_roof.nbt b/data/minecraft/structure/end_city/second_roof.nbt index 13c83a93..c99212b9 100644 --- a/data/minecraft/structure/end_city/second_roof.nbt +++ b/data/minecraft/structure/end_city/second_roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adb01c24873fd50b831cabc75d349d7834988e2007046d20d105036553a8eef4 +oid sha256:64bd92e507532f41b0fb488afaa7633ebc8242d2acd000193f311caa6d34cbba size 1426 diff --git a/data/minecraft/structure/end_city/ship.nbt b/data/minecraft/structure/end_city/ship.nbt index 4d6f2bce..6e639bb9 100644 --- a/data/minecraft/structure/end_city/ship.nbt +++ b/data/minecraft/structure/end_city/ship.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de128a547cdac71d45e65aed186dfd463eb380612841cdc71e2d7ee90dc3ed3 -size 26445 +oid sha256:2a8f97894def86c5e2fee43b1168c22e7012e8177e17fefcc4393a810bcaf718 +size 26444 diff --git a/data/minecraft/structure/end_city/third_floor_1.nbt b/data/minecraft/structure/end_city/third_floor_1.nbt index f5a65f73..e221d0ed 100644 --- a/data/minecraft/structure/end_city/third_floor_1.nbt +++ b/data/minecraft/structure/end_city/third_floor_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e29a3b1f7304f093b8961f979dfcd6c6314f673fa9771f6c8c8cbd385238f0d -size 4787 +oid sha256:b5f61d414d1e5a4ca0ca58465747386b5bf9212d7812348e03d184e6597517fc +size 4786 diff --git a/data/minecraft/structure/end_city/third_floor_2.nbt b/data/minecraft/structure/end_city/third_floor_2.nbt index b990ee82..a12336bf 100644 --- a/data/minecraft/structure/end_city/third_floor_2.nbt +++ b/data/minecraft/structure/end_city/third_floor_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ba4997b74c3f187064eb97e17e10b52ac264198ac4dc1e2af9cb21133705d77 -size 5159 +oid sha256:ec66ca8842606bff3e4b8235ac4c8476564c81799871e44abc0b1804f2879786 +size 5158 diff --git a/data/minecraft/structure/end_city/third_roof.nbt b/data/minecraft/structure/end_city/third_roof.nbt index 810e1c63..5d36e3db 100644 --- a/data/minecraft/structure/end_city/third_roof.nbt +++ b/data/minecraft/structure/end_city/third_roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a43bffa7c26f8bfe9af7b013bfc1400b0f5f23f8393c3358595bcd0216071a36 -size 1831 +oid sha256:483480843093fc2297ed30ad538c9689c5afec40d0668f0e59b923be84861f57 +size 1830 diff --git a/data/minecraft/structure/end_city/tower_base.nbt b/data/minecraft/structure/end_city/tower_base.nbt index a572f9d9..fb5b36a6 100644 --- a/data/minecraft/structure/end_city/tower_base.nbt +++ b/data/minecraft/structure/end_city/tower_base.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9bebe45cb98ece6ab5e0960b929d35553d5ccb4b105dd30d78b890c4e63b3b6 -size 934 +oid sha256:1a37909898a827804e89930152d2325f4bf58b6efba201205ebab332783010e6 +size 932 diff --git a/data/minecraft/structure/end_city/tower_floor.nbt b/data/minecraft/structure/end_city/tower_floor.nbt index 3aed7dda..29cb982a 100644 --- a/data/minecraft/structure/end_city/tower_floor.nbt +++ b/data/minecraft/structure/end_city/tower_floor.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43d4ba07124cacaeea6c963bab37cc69025b236e71cde810ac0b97f9dd9ccf7a -size 980 +oid sha256:7837972b3379baf9b683b3782d16417f55c473824b2f38c5f5e472d5299254ba +size 979 diff --git a/data/minecraft/structure/end_city/tower_piece.nbt b/data/minecraft/structure/end_city/tower_piece.nbt index 456fcd72..6fe47047 100644 --- a/data/minecraft/structure/end_city/tower_piece.nbt +++ b/data/minecraft/structure/end_city/tower_piece.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:111d9d2acb926631536b95b176b6703338eeaa773aebf297270e0e9e9c245cbb -size 898 +oid sha256:aa37d27c3744978a54de448dc45033ae18d58ffafa1309202c1fb6f440a137d7 +size 897 diff --git a/data/minecraft/structure/end_city/tower_top.nbt b/data/minecraft/structure/end_city/tower_top.nbt index 6835703e..ae7c7160 100644 --- a/data/minecraft/structure/end_city/tower_top.nbt +++ b/data/minecraft/structure/end_city/tower_top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ffcecb5ec2f27894f9d99142289463377bc1e4b18174bc3f8f7e116eaacbacb -size 2036 +oid sha256:9938d809319779adafd43a763dde7f4e85c084051e2887a283be7160a8fadebc +size 2034 diff --git a/data/minecraft/structure/fossil/skull_1.nbt b/data/minecraft/structure/fossil/skull_1.nbt index f89f5e3a..c991249a 100644 --- a/data/minecraft/structure/fossil/skull_1.nbt +++ b/data/minecraft/structure/fossil/skull_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8fb4a28610867ff570a3152cbabd15107a027460b4b803a303b89e2c7b522504 -size 442 +oid sha256:80ab9628373a151bd8c031aefae36122a3257601a5045e8ac1549807c6e681db +size 441 diff --git a/data/minecraft/structure/fossil/skull_1_coal.nbt b/data/minecraft/structure/fossil/skull_1_coal.nbt index e2317343..b86f3010 100644 --- a/data/minecraft/structure/fossil/skull_1_coal.nbt +++ b/data/minecraft/structure/fossil/skull_1_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a40466271c2c49386acb08b65025d15edbc4f8764a495dde62d0beef33f61002 -size 397 +oid sha256:1f60bdf856fe4335a790222b2ba4bd12dd2f012c45ed9953550cbdfd42580480 +size 395 diff --git a/data/minecraft/structure/fossil/skull_2.nbt b/data/minecraft/structure/fossil/skull_2.nbt index 7438d756..3384b0f5 100644 --- a/data/minecraft/structure/fossil/skull_2.nbt +++ b/data/minecraft/structure/fossil/skull_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc5ff98f9ab592652cd9522e3d69044c0068658fb6665842263ca39ccd746171 -size 398 +oid sha256:cbfadaa2adff95bfe2cc15aa39d6265af8f9cbc2121c632a318e2114a10798c9 +size 397 diff --git a/data/minecraft/structure/fossil/skull_2_coal.nbt b/data/minecraft/structure/fossil/skull_2_coal.nbt index 714f36e3..796e80dd 100644 --- a/data/minecraft/structure/fossil/skull_2_coal.nbt +++ b/data/minecraft/structure/fossil/skull_2_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8538dc084dee5f794d7756959d15075d5859b6f55301db50501aa2d0d10964a -size 346 +oid sha256:204f8289772b5e8deef71ad259cf3fe1598706afde743cd58180d032587a3a45 +size 344 diff --git a/data/minecraft/structure/fossil/skull_3.nbt b/data/minecraft/structure/fossil/skull_3.nbt index 14aeb1c0..8dcf5a02 100644 --- a/data/minecraft/structure/fossil/skull_3.nbt +++ b/data/minecraft/structure/fossil/skull_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3321f683bb3b0054365927b71af7bdbba0d43c9b734ad85eb5d44506530429e3 -size 348 +oid sha256:a3ca225506640089c6e4666eca04de940adc6b7d69a38c568f8cd101df951e8a +size 347 diff --git a/data/minecraft/structure/fossil/skull_3_coal.nbt b/data/minecraft/structure/fossil/skull_3_coal.nbt index a39e16be..e9b69041 100644 --- a/data/minecraft/structure/fossil/skull_3_coal.nbt +++ b/data/minecraft/structure/fossil/skull_3_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bebcfca8508e844a1cfe13474a24cf835987da64c27f0e6bf5cf9035778e3041 -size 318 +oid sha256:bbe944c8b0ae7d4920b4c12dca6480ce9d57349144b13accb03d57e079806cea +size 316 diff --git a/data/minecraft/structure/fossil/skull_4.nbt b/data/minecraft/structure/fossil/skull_4.nbt index 79631e56..523ad40b 100644 --- a/data/minecraft/structure/fossil/skull_4.nbt +++ b/data/minecraft/structure/fossil/skull_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f3b638c0a3dc01b07486e4ec9f1828949eeec48e8ac9385292dd42bc0c8a3a8 -size 270 +oid sha256:218ba7866872f4e846cf245a5d3267323cea57036ffedf759774403984b0614d +size 269 diff --git a/data/minecraft/structure/fossil/skull_4_coal.nbt b/data/minecraft/structure/fossil/skull_4_coal.nbt index e3ac88d9..a5e072c2 100644 --- a/data/minecraft/structure/fossil/skull_4_coal.nbt +++ b/data/minecraft/structure/fossil/skull_4_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ff1f3e896b3fea4c2e17cdf96ac11191c8395da36d885ce52927d2d64121ffe -size 236 +oid sha256:23b59489339400ce1b0b024a53145614889ef9a707d9e3a0739025f3e320939b +size 234 diff --git a/data/minecraft/structure/fossil/spine_1.nbt b/data/minecraft/structure/fossil/spine_1.nbt index a84a805b..ca68596c 100644 --- a/data/minecraft/structure/fossil/spine_1.nbt +++ b/data/minecraft/structure/fossil/spine_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d2899ca64f8b7dd1ed5f672ffb128f8a74f18ed6c821a363a9f6f618fa5c3c5 -size 272 +oid sha256:bfae93d1777a839afd072f3c434809e9772284b3da8fb6600eea0b9bc4f55107 +size 271 diff --git a/data/minecraft/structure/fossil/spine_1_coal.nbt b/data/minecraft/structure/fossil/spine_1_coal.nbt index 2a59bc3c..8ceada2c 100644 --- a/data/minecraft/structure/fossil/spine_1_coal.nbt +++ b/data/minecraft/structure/fossil/spine_1_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8e9c31bc4b397880df4646ca6993ea364182bc437e0fe76dc82bf71e7ab70e1 -size 252 +oid sha256:93fdcd8c8e70967ae78ff2acb2ff1a67454a56bcc41b3105414c199882f84266 +size 251 diff --git a/data/minecraft/structure/fossil/spine_2.nbt b/data/minecraft/structure/fossil/spine_2.nbt index b5dc4b4e..2265ac3a 100644 --- a/data/minecraft/structure/fossil/spine_2.nbt +++ b/data/minecraft/structure/fossil/spine_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0757f65ef5d55a3b50f25fff5a4ce93377c4c2118a8a2b5faef6453bec53d09 -size 361 +oid sha256:c0d59528cc48ad0efbbf87903e27117ed5b2ea1e647eb6d20575123caeb9c720 +size 360 diff --git a/data/minecraft/structure/fossil/spine_2_coal.nbt b/data/minecraft/structure/fossil/spine_2_coal.nbt index 52f6a8ae..55400c14 100644 --- a/data/minecraft/structure/fossil/spine_2_coal.nbt +++ b/data/minecraft/structure/fossil/spine_2_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e1393d71a57777bf69ce1f2c1954b8387cb10b229aeefef995e2c484d3edbef -size 325 +oid sha256:89f2c1508135f4afdd9fa10130170b0e1bf3e3f84bbd1a82e8be91c5ff4209e0 +size 324 diff --git a/data/minecraft/structure/fossil/spine_3.nbt b/data/minecraft/structure/fossil/spine_3.nbt index e38120aa..06f92603 100644 --- a/data/minecraft/structure/fossil/spine_3.nbt +++ b/data/minecraft/structure/fossil/spine_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4178ee0578ea8d45dacbc97aeed9a38e97f98eaeeae0121cd3b30373d3857fb6 -size 457 +oid sha256:1b740fd27a05b852a0a29b48c0781ed837feb357d9e909a4f882e8f39c885760 +size 456 diff --git a/data/minecraft/structure/fossil/spine_3_coal.nbt b/data/minecraft/structure/fossil/spine_3_coal.nbt index c5e6cb28..dc1a8016 100644 --- a/data/minecraft/structure/fossil/spine_3_coal.nbt +++ b/data/minecraft/structure/fossil/spine_3_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66d2c7f713cafb40ad18ecefc7bb00e51f2fad42686ff4bae64399351ed89da1 -size 437 +oid sha256:c675d822d4b4e96043be207d80a3b604e0989f0115787149a8ea8b3cc733e3db +size 436 diff --git a/data/minecraft/structure/fossil/spine_4.nbt b/data/minecraft/structure/fossil/spine_4.nbt index 7077d241..bb2037ed 100644 --- a/data/minecraft/structure/fossil/spine_4.nbt +++ b/data/minecraft/structure/fossil/spine_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b11b6e1894477ca4589e0cd251d38533cbccf1340a23e5f86e34df622ec67017 -size 529 +oid sha256:577b427b05815478ee0a0e99f5c2f814fb8c5baedba93252ed96530048df554d +size 528 diff --git a/data/minecraft/structure/fossil/spine_4_coal.nbt b/data/minecraft/structure/fossil/spine_4_coal.nbt index 1eda52b3..a5ba3d39 100644 --- a/data/minecraft/structure/fossil/spine_4_coal.nbt +++ b/data/minecraft/structure/fossil/spine_4_coal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e14bfa04dc8d0a4f50f618059d32a69aaa25fa57b425a01ffd1c68c7c684031d -size 482 +oid sha256:d671376fe7672db0c985e335b21ca7235e1159fddf710679aa6bb554efadb05e +size 481 diff --git a/data/minecraft/structure/igloo/bottom.nbt b/data/minecraft/structure/igloo/bottom.nbt index d8fb11d9..293af824 100644 --- a/data/minecraft/structure/igloo/bottom.nbt +++ b/data/minecraft/structure/igloo/bottom.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80bd9f4b9eb4f4727c0018db9cfb5430ef1358fc02fbd05753bf75fdccd3922a -size 2772 +oid sha256:77f1acb0b16c382ffd9d2abb0a6af3fd76b313f95162b6665a43be9f074f77d1 +size 2777 diff --git a/data/minecraft/structure/igloo/middle.nbt b/data/minecraft/structure/igloo/middle.nbt index 19bb0ac0..a89d56e9 100644 --- a/data/minecraft/structure/igloo/middle.nbt +++ b/data/minecraft/structure/igloo/middle.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b5e53846bf2c777fb8b7350cada24212bd1508399b997667be2dc4c9b058bad -size 237 +oid sha256:d0c63aba5be0821ffba6d64fe65a27eb855c2ca0db07dae5ab2b1ff7fc6d4d5e +size 236 diff --git a/data/minecraft/structure/igloo/top.nbt b/data/minecraft/structure/igloo/top.nbt index c7e35957..1120d6ea 100644 --- a/data/minecraft/structure/igloo/top.nbt +++ b/data/minecraft/structure/igloo/top.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7738f9a9560607463bc750c327977cde4c3ce24c634e9ffe0cb0f06c9253ca59 -size 910 +oid sha256:3d4cc65f6b36574993ea33cfa9e711a2e866637c4d6c8bf3c733d0e31794031f +size 924 diff --git a/data/minecraft/structure/nether_fossils/fossil_1.nbt b/data/minecraft/structure/nether_fossils/fossil_1.nbt index 1a89b26e..60979b61 100644 --- a/data/minecraft/structure/nether_fossils/fossil_1.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5b1ecc103d2a7c54e27fb74865891e98d85465bab1dcd9ecf5fdd96d53c61a3 -size 398 +oid sha256:ca70aaad5ef2d217df2c17bb912517182b29ba63f157aefa97669bb54f6cf5c3 +size 397 diff --git a/data/minecraft/structure/nether_fossils/fossil_10.nbt b/data/minecraft/structure/nether_fossils/fossil_10.nbt index 0e8cbf53..6cd3c26a 100644 --- a/data/minecraft/structure/nether_fossils/fossil_10.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_10.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2264c6165bc9eb8c568dfcf66e3ef581dc1cc1d7d324a77fbe28379820479362 -size 238 +oid sha256:513213c37258ea11144db938414486121a78af8166015c99130470bd4ce28638 +size 237 diff --git a/data/minecraft/structure/nether_fossils/fossil_11.nbt b/data/minecraft/structure/nether_fossils/fossil_11.nbt index 413e28ce..ceb8b498 100644 --- a/data/minecraft/structure/nether_fossils/fossil_11.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_11.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8438c348b1a9abfff6a3c25efeae315e1a867ca733b51359a20595292d6f9670 -size 675 +oid sha256:80651127daa4ee8416c8e2d907b073ac11201b7200d07f3891962123d9a760b8 +size 674 diff --git a/data/minecraft/structure/nether_fossils/fossil_12.nbt b/data/minecraft/structure/nether_fossils/fossil_12.nbt index ef801e99..75db1b9c 100644 --- a/data/minecraft/structure/nether_fossils/fossil_12.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_12.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65a8cd48d59797e5d4b72819737a7792c4d6518fe0b02b74d35dc2c2cd776b03 -size 317 +oid sha256:7d17ba6ef330b0135490583036615a36ed6a5155dd7d93c2cef4243e08e601ff +size 316 diff --git a/data/minecraft/structure/nether_fossils/fossil_13.nbt b/data/minecraft/structure/nether_fossils/fossil_13.nbt index 7cb3d6ed..af252860 100644 --- a/data/minecraft/structure/nether_fossils/fossil_13.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_13.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:880eb13fa9d81ee65422fc9622cca740501178a9653e8af34915781bb245064d -size 525 +oid sha256:0b8b7bbdefb3f68b894f9d879471b500cb57a6f8e31c2ed50cea7f4dff67ff4f +size 523 diff --git a/data/minecraft/structure/nether_fossils/fossil_14.nbt b/data/minecraft/structure/nether_fossils/fossil_14.nbt index e8aa0730..8341882e 100644 --- a/data/minecraft/structure/nether_fossils/fossil_14.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_14.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d38a3b4fdc66f092b41bf61609033afb3e28d7a55c758262d51812a4f22babd2 +oid sha256:8c580c8fe946be18c2357439fb7881f00487a79f4d3488f7900b33ed03487919 size 938 diff --git a/data/minecraft/structure/nether_fossils/fossil_2.nbt b/data/minecraft/structure/nether_fossils/fossil_2.nbt index e640bd1e..e4560484 100644 --- a/data/minecraft/structure/nether_fossils/fossil_2.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfd8a862c491be461c13bcb8eea7e6396e649ce71ad175dd9528f9ec405d9241 -size 259 +oid sha256:5d16b8a3adb26f21ea0cb9f423057b69356a27175a379f722be2f8f20bc9e757 +size 258 diff --git a/data/minecraft/structure/nether_fossils/fossil_3.nbt b/data/minecraft/structure/nether_fossils/fossil_3.nbt index 098463f8..5a0d8ac6 100644 --- a/data/minecraft/structure/nether_fossils/fossil_3.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c20621eb7d31c05d57b28c084d9f4c7945cd102404e7559099aaaa5b14d11548 +oid sha256:92581ea2711a2a07c1cf81e121716f08f04c747cb34f4e2eca31a9e5bb8124c9 size 249 diff --git a/data/minecraft/structure/nether_fossils/fossil_4.nbt b/data/minecraft/structure/nether_fossils/fossil_4.nbt index b17310fb..7067f49d 100644 --- a/data/minecraft/structure/nether_fossils/fossil_4.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9adecb6a6ed846b74de9a062fedc6b78f4ed93a44095a05a3dca3edbb11ab72e -size 212 +oid sha256:789d4012d8b3d95820932cb9329580457f8d25549c0f45b272d5a850b2756fbc +size 211 diff --git a/data/minecraft/structure/nether_fossils/fossil_5.nbt b/data/minecraft/structure/nether_fossils/fossil_5.nbt index 132decca..f2a786f2 100644 --- a/data/minecraft/structure/nether_fossils/fossil_5.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa8ee153cd529a45697f60f94cb4be3c83a1ee9fab6da41381ae4d64d7ce232b -size 206 +oid sha256:0b38462a4dce7788bda78405e241e3fe99a51473c9976fd1851d58aca3f5deca +size 205 diff --git a/data/minecraft/structure/nether_fossils/fossil_6.nbt b/data/minecraft/structure/nether_fossils/fossil_6.nbt index e4aa9386..f37af7d9 100644 --- a/data/minecraft/structure/nether_fossils/fossil_6.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eaf582316ae3154d532aefe659ec651633bd35384d5dd47ba8413b88adf114e8 -size 631 +oid sha256:2c657f2870643f0723eb988a75a810c71c7269306e6217c0bc0ef1fbf5a1d2b9 +size 630 diff --git a/data/minecraft/structure/nether_fossils/fossil_7.nbt b/data/minecraft/structure/nether_fossils/fossil_7.nbt index 2ab319cb..434c60b8 100644 --- a/data/minecraft/structure/nether_fossils/fossil_7.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:041285cdc089848f943c64f84345812f02169c55fef3b3a7b2ceac23f9d8c31d -size 510 +oid sha256:3f586c483fb1e0f0dd10307ed44532101408aa677416012d53ae228d829e521b +size 509 diff --git a/data/minecraft/structure/nether_fossils/fossil_8.nbt b/data/minecraft/structure/nether_fossils/fossil_8.nbt index fe9d98a5..d35ed274 100644 --- a/data/minecraft/structure/nether_fossils/fossil_8.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2621e8eac6c5f64e07d09a20cd4069fcd204a080ae578f18f510ebbd371281d8 -size 221 +oid sha256:be2402c82059e7b66acac3e6536aae820b55e65c4b588934fa3f4132f7ac9dfc +size 219 diff --git a/data/minecraft/structure/nether_fossils/fossil_9.nbt b/data/minecraft/structure/nether_fossils/fossil_9.nbt index d993ead5..8f0ad092 100644 --- a/data/minecraft/structure/nether_fossils/fossil_9.nbt +++ b/data/minecraft/structure/nether_fossils/fossil_9.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc48c3da24634da34447b0907130d3d7700fd1ab735e856e15591bc1d0388b64 -size 395 +oid sha256:8eba90a038fd04426bd5eebd6195a255dc45a38d7ce346b77c7c5ab27c31d061 +size 394 diff --git a/data/minecraft/structure/pillager_outpost/base_plate.nbt b/data/minecraft/structure/pillager_outpost/base_plate.nbt index caf70ac2..59359a71 100644 --- a/data/minecraft/structure/pillager_outpost/base_plate.nbt +++ b/data/minecraft/structure/pillager_outpost/base_plate.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73fe3cd4c75755179b5d87144f6c067d5684a6dcd410b29b3442954f9ce1ca1f -size 19282 +oid sha256:9e3e8a9283f950e3c9c40964e6a1a2ad3c8093146817d91def5365878f22986a +size 19281 diff --git a/data/minecraft/structure/pillager_outpost/feature_cage1.nbt b/data/minecraft/structure/pillager_outpost/feature_cage1.nbt index c134ce72..6ebc5571 100644 --- a/data/minecraft/structure/pillager_outpost/feature_cage1.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_cage1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2bdf1ed8ac7ac394270f2f5580ed78f729528e88e1ac00db96ff64c5004c7b77 -size 1666 +oid sha256:622718bb038abe24e17850cea7ed651e31a234af257bb8210747121ffa1e3d6c +size 1662 diff --git a/data/minecraft/structure/pillager_outpost/feature_cage2.nbt b/data/minecraft/structure/pillager_outpost/feature_cage2.nbt index 4b2c95df..c581f7e4 100644 --- a/data/minecraft/structure/pillager_outpost/feature_cage2.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_cage2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0cf5230b47cc6af7f598fed6409bbd903ee6a47458ec41ad916d2b104761b73 -size 1032 +oid sha256:8812f9f1f68a8c01edf909e9fc64cfe64bb8aba456a46780411c2ee3242283ce +size 1031 diff --git a/data/minecraft/structure/pillager_outpost/feature_cage_with_allays.nbt b/data/minecraft/structure/pillager_outpost/feature_cage_with_allays.nbt index 578602ff..c15aef13 100644 --- a/data/minecraft/structure/pillager_outpost/feature_cage_with_allays.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_cage_with_allays.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a69bdb2ea13127e513115e0cfd820171c8d2ca1ac9278f430988e6437a51732 +oid sha256:47bd25a52d37d47d7feb6091c262b36e2d89cc81d09c9b5b001c1cab280b2a68 size 1791 diff --git a/data/minecraft/structure/pillager_outpost/feature_logs.nbt b/data/minecraft/structure/pillager_outpost/feature_logs.nbt index 5ea241d2..2fba6052 100644 --- a/data/minecraft/structure/pillager_outpost/feature_logs.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_logs.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a637707517e7d60e5b31b20cc678d086b19db90cc1568df2a5527277e5b9a8ea -size 659 +oid sha256:a9d36b8929c0114cf55854b150c97d9077dd6ebc4713a91dc69c79445b4bbf78 +size 658 diff --git a/data/minecraft/structure/pillager_outpost/feature_plate.nbt b/data/minecraft/structure/pillager_outpost/feature_plate.nbt index e5c3e012..b6774c35 100644 --- a/data/minecraft/structure/pillager_outpost/feature_plate.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_plate.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51bdade770803100ea275091ce9c2598bb853711d47aef97554577c1dff70460 -size 6039 +oid sha256:598f9d2ee0826853d4267b9edcf97793c1e338356e2bb8abc674d94e05091fd4 +size 6038 diff --git a/data/minecraft/structure/pillager_outpost/feature_targets.nbt b/data/minecraft/structure/pillager_outpost/feature_targets.nbt index 8df53cbf..ca071acd 100644 --- a/data/minecraft/structure/pillager_outpost/feature_targets.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_targets.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd096052b3bd1a62502c974dad1517dbb9eb5bf6b6a2c683e81ae04df3a3553a -size 579 +oid sha256:78dd174458271278901cfe883e258594db4fc76135127976e6bc03cda73b588d +size 578 diff --git a/data/minecraft/structure/pillager_outpost/feature_tent1.nbt b/data/minecraft/structure/pillager_outpost/feature_tent1.nbt index b33f6418..f0ef7bc2 100644 --- a/data/minecraft/structure/pillager_outpost/feature_tent1.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_tent1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3954d87f8d4aeff5aa977aa7906162c5fe937a9c801259880fdcb13acfe6043f -size 858 +oid sha256:77311436e6998ae8866a0918c911f04ffd8591c6ccc1d5c289576f2af7266ee1 +size 856 diff --git a/data/minecraft/structure/pillager_outpost/feature_tent2.nbt b/data/minecraft/structure/pillager_outpost/feature_tent2.nbt index 5390d4ce..ca89178e 100644 --- a/data/minecraft/structure/pillager_outpost/feature_tent2.nbt +++ b/data/minecraft/structure/pillager_outpost/feature_tent2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0671e5dd3ee5571507d22b4b414e0f3c01651b9ae6f54f6bbc087b85cc3a664c -size 869 +oid sha256:aaaa29e421a859dc9f93c9cc94cac1ba781cd774120def90c369f16e57873b37 +size 868 diff --git a/data/minecraft/structure/pillager_outpost/watchtower.nbt b/data/minecraft/structure/pillager_outpost/watchtower.nbt index 2e57c3a9..08d372ab 100644 --- a/data/minecraft/structure/pillager_outpost/watchtower.nbt +++ b/data/minecraft/structure/pillager_outpost/watchtower.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:525814cd903dd3c5688621410caca1c46661e4c37419be9aeb4e1026fbce6855 -size 14626 +oid sha256:adc61dc5e7505296c88800bdfc69ad2366bb818fc538c0d54cbfacf224b9d120 +size 14623 diff --git a/data/minecraft/structure/pillager_outpost/watchtower_overgrown.nbt b/data/minecraft/structure/pillager_outpost/watchtower_overgrown.nbt index 293477a2..d2ced393 100644 --- a/data/minecraft/structure/pillager_outpost/watchtower_overgrown.nbt +++ b/data/minecraft/structure/pillager_outpost/watchtower_overgrown.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cc3f2073f758fd7ddbfa4ae8bf01d2615a0e9f3d1663e4b91b54b007137008d -size 16066 +oid sha256:00292e6b7bb955aa291da0d26377b246f38ddaf5bf26a79ffeb79eaf7257e232 +size 16062 diff --git a/data/minecraft/structure/ruined_portal/giant_portal_1.nbt b/data/minecraft/structure/ruined_portal/giant_portal_1.nbt index b8e262d3..41444d17 100644 --- a/data/minecraft/structure/ruined_portal/giant_portal_1.nbt +++ b/data/minecraft/structure/ruined_portal/giant_portal_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c1e439f309384071d82fc80bf8fc0962823ad0805d8438c26dd6aa7617685fb -size 7200 +oid sha256:4cdcc34df38cc644ab3b148c1481b41ed1436814654b4c106c1c36e4bb6d3f75 +size 7199 diff --git a/data/minecraft/structure/ruined_portal/giant_portal_2.nbt b/data/minecraft/structure/ruined_portal/giant_portal_2.nbt index 215afbd5..76da1a84 100644 --- a/data/minecraft/structure/ruined_portal/giant_portal_2.nbt +++ b/data/minecraft/structure/ruined_portal/giant_portal_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f4813802d8df26f14a871fa7d516b7fb7c4b76d755adba3d0636f3ee30ca2cb -size 6839 +oid sha256:3791b39779a75e0dfb0688b0c87ba6301d3675a8e3d8c026a841191f6561b930 +size 6837 diff --git a/data/minecraft/structure/ruined_portal/giant_portal_3.nbt b/data/minecraft/structure/ruined_portal/giant_portal_3.nbt index 133b0bda..6f6edd09 100644 --- a/data/minecraft/structure/ruined_portal/giant_portal_3.nbt +++ b/data/minecraft/structure/ruined_portal/giant_portal_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92ed1de4f5f1ef91e1a9955bfeaa91776f68cba3d671e09a3eccf9fce43b2bca -size 9899 +oid sha256:8eb9de5917d23f45345157cbfd9f6d10b70ddb6f1415e58ae0a0b4bd96f3efbf +size 9898 diff --git a/data/minecraft/structure/ruined_portal/portal_1.nbt b/data/minecraft/structure/ruined_portal/portal_1.nbt index 987b003c..bfca2fba 100644 --- a/data/minecraft/structure/ruined_portal/portal_1.nbt +++ b/data/minecraft/structure/ruined_portal/portal_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b6e1eaee2d793e6c52fd18cfecdd0bd18d4ecc392f5bb37d287e5628b9a457d +oid sha256:fb4337778701b25fc9d0913cf01e7f3617e2e2d0f058a073bb78b8a551891dfd size 1431 diff --git a/data/minecraft/structure/ruined_portal/portal_10.nbt b/data/minecraft/structure/ruined_portal/portal_10.nbt index 9cf42b4d..4a5c0143 100644 --- a/data/minecraft/structure/ruined_portal/portal_10.nbt +++ b/data/minecraft/structure/ruined_portal/portal_10.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb983710dcfa8f9cb3e5ad8adbe560cddde6f05973f31b9dc9da23ad1a009e4a -size 2879 +oid sha256:303446efb62919f4a70e03d3a52df92d002b5a5c1dc15234cfa09b70019e1716 +size 2878 diff --git a/data/minecraft/structure/ruined_portal/portal_2.nbt b/data/minecraft/structure/ruined_portal/portal_2.nbt index 733ab6fd..00e5123e 100644 --- a/data/minecraft/structure/ruined_portal/portal_2.nbt +++ b/data/minecraft/structure/ruined_portal/portal_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:534f29840053bc7d97994c0b8b45c713a93a07068a7d35da7ae0a26b0c46b049 -size 2763 +oid sha256:b35405abc44e52b38a35bf32cfed6812fef7fb7cf3ea046997922d043f4ac0ad +size 2762 diff --git a/data/minecraft/structure/ruined_portal/portal_3.nbt b/data/minecraft/structure/ruined_portal/portal_3.nbt index ead4f2b5..478118ef 100644 --- a/data/minecraft/structure/ruined_portal/portal_3.nbt +++ b/data/minecraft/structure/ruined_portal/portal_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5758573c1e7e1773efaadcda78f65855ec26a5b699c4f978e78e77f6ca8fc5e +oid sha256:dbff37f9023dbcc183ab89d5c5edec0e23dd8d365e70d2336542d73b12e413ed size 1994 diff --git a/data/minecraft/structure/ruined_portal/portal_4.nbt b/data/minecraft/structure/ruined_portal/portal_4.nbt index f7c8d925..54921d0e 100644 --- a/data/minecraft/structure/ruined_portal/portal_4.nbt +++ b/data/minecraft/structure/ruined_portal/portal_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:520f3a12f4ba6b3cab48a589534a97db2703603dc2c55b5d308fda9cc9f13d9f +oid sha256:f47aba0ffdd0171748a6497d4d335be101ab9e57267b0704f465686241165bff size 1885 diff --git a/data/minecraft/structure/ruined_portal/portal_5.nbt b/data/minecraft/structure/ruined_portal/portal_5.nbt index f3476375..c19bf02f 100644 --- a/data/minecraft/structure/ruined_portal/portal_5.nbt +++ b/data/minecraft/structure/ruined_portal/portal_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68660d39f6826c7a03e8f9033eb5a70ceef8af01b25ea46a0edac4ea986b1450 -size 2217 +oid sha256:000938220556d2e6b33296edd4fe944cb5e366ba36a2124e7f5e9789fa29e894 +size 2215 diff --git a/data/minecraft/structure/ruined_portal/portal_6.nbt b/data/minecraft/structure/ruined_portal/portal_6.nbt index efbaacc4..86e152e3 100644 --- a/data/minecraft/structure/ruined_portal/portal_6.nbt +++ b/data/minecraft/structure/ruined_portal/portal_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:488bdb46537e0dcd674dcc8b53890f58504d66d94c08e93f789da3635ab83012 -size 984 +oid sha256:d56727da8d570340508b61fcc2980fd0db5950c20591e379d709cf1f7f96faf5 +size 982 diff --git a/data/minecraft/structure/ruined_portal/portal_7.nbt b/data/minecraft/structure/ruined_portal/portal_7.nbt index b9309ffa..c54d3afb 100644 --- a/data/minecraft/structure/ruined_portal/portal_7.nbt +++ b/data/minecraft/structure/ruined_portal/portal_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b6f4144858c7382f79cb5cfc744747a2c807dee60d652cd8a78e6416ca8a792 -size 1831 +oid sha256:44f9bb96e164f3149a6e3642e4700c5295428bf2dddc3d2602f5cc0c37884a81 +size 1830 diff --git a/data/minecraft/structure/ruined_portal/portal_8.nbt b/data/minecraft/structure/ruined_portal/portal_8.nbt index 6abe097d..2ed9d05e 100644 --- a/data/minecraft/structure/ruined_portal/portal_8.nbt +++ b/data/minecraft/structure/ruined_portal/portal_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2995d8acf74015167a1ecc48a8fd6b125bf134329c4a7270847d017b4286aa20 -size 3408 +oid sha256:575e61b9964f111c35f4770b181aa56c481a7cae6f832b4fba91d298b4df26ca +size 3407 diff --git a/data/minecraft/structure/ruined_portal/portal_9.nbt b/data/minecraft/structure/ruined_portal/portal_9.nbt index 9355a13f..0c14adad 100644 --- a/data/minecraft/structure/ruined_portal/portal_9.nbt +++ b/data/minecraft/structure/ruined_portal/portal_9.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d116587c84abf8ae846b4dfb5c080d4042ed8e6ad4e67342845d88e7a1b3a22b -size 2169 +oid sha256:bfa401185de9f31a8f3a63f3a7eaab52d6a99581ef3eb455192485d641629514 +size 2168 diff --git a/data/minecraft/structure/shipwreck/rightsideup_backhalf.nbt b/data/minecraft/structure/shipwreck/rightsideup_backhalf.nbt index 1f684a84..16d78f55 100644 --- a/data/minecraft/structure/shipwreck/rightsideup_backhalf.nbt +++ b/data/minecraft/structure/shipwreck/rightsideup_backhalf.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdcabd3a23946617c8246cf73ed792b703e092d5b2a12d5f2f4dc2a55177d868 +oid sha256:6b0c2436ce27849af2dc387783ca214a04d6d0d54eeedf9341e037ac45319446 size 2712 diff --git a/data/minecraft/structure/shipwreck/rightsideup_backhalf_degraded.nbt b/data/minecraft/structure/shipwreck/rightsideup_backhalf_degraded.nbt index a83fdec7..f75c28f8 100644 --- a/data/minecraft/structure/shipwreck/rightsideup_backhalf_degraded.nbt +++ b/data/minecraft/structure/shipwreck/rightsideup_backhalf_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3eae4d2c468203798d5469c0cb26d5f58208a8f37f52c5aa6100e8ac9e9b6b59 -size 2570 +oid sha256:d6daaef053fd60a9949c696b57ef3c1f4d7688debf7dc2cfe0a97803f579b2a4 +size 2569 diff --git a/data/minecraft/structure/shipwreck/rightsideup_fronthalf.nbt b/data/minecraft/structure/shipwreck/rightsideup_fronthalf.nbt index 17a8dcd7..63da855d 100644 --- a/data/minecraft/structure/shipwreck/rightsideup_fronthalf.nbt +++ b/data/minecraft/structure/shipwreck/rightsideup_fronthalf.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a8bb4d87f4e323e1a016b6799300b6077d3b74bd65d4f3927beece7f4c5518c -size 2476 +oid sha256:5fd72be9e9fec17e9cf67999bcb4485313557e1fdfa99a746503668a772f5ef7 +size 2475 diff --git a/data/minecraft/structure/shipwreck/rightsideup_fronthalf_degraded.nbt b/data/minecraft/structure/shipwreck/rightsideup_fronthalf_degraded.nbt index 881d92d9..8ffb7908 100644 --- a/data/minecraft/structure/shipwreck/rightsideup_fronthalf_degraded.nbt +++ b/data/minecraft/structure/shipwreck/rightsideup_fronthalf_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1a943adf5e79d3929a05c383b56d9d887bbe75c07f81b06eccbc7794bdfd06e -size 2253 +oid sha256:ab3cb79731e644e060d3ca78d982c351bb56c772620cae179ba8cfd02eaf272f +size 2252 diff --git a/data/minecraft/structure/shipwreck/rightsideup_full.nbt b/data/minecraft/structure/shipwreck/rightsideup_full.nbt index 9ab73933..886608f7 100644 --- a/data/minecraft/structure/shipwreck/rightsideup_full.nbt +++ b/data/minecraft/structure/shipwreck/rightsideup_full.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab6df19c50995663f54ade140ad1e953e783301ec1b4b8b2f64833794fd63c6b -size 3755 +oid sha256:9e52f8a22011da54f545d4defdda89615620f7ee3ae7bc6aaa53fac5fd89e105 +size 3754 diff --git a/data/minecraft/structure/shipwreck/rightsideup_full_degraded.nbt b/data/minecraft/structure/shipwreck/rightsideup_full_degraded.nbt index 2a61ed28..531cdb78 100644 --- a/data/minecraft/structure/shipwreck/rightsideup_full_degraded.nbt +++ b/data/minecraft/structure/shipwreck/rightsideup_full_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3677c2da418ac72666f8140f85a00a5433690f97f989fee2cb7b1bb7e7f04033 -size 3528 +oid sha256:6b0eb1a0ab17280b9bd5ae353732cb470db01898c64306e9cc7359b4bb6536cb +size 3527 diff --git a/data/minecraft/structure/shipwreck/sideways_backhalf.nbt b/data/minecraft/structure/shipwreck/sideways_backhalf.nbt index 5ed2e833..e7f3f05f 100644 --- a/data/minecraft/structure/shipwreck/sideways_backhalf.nbt +++ b/data/minecraft/structure/shipwreck/sideways_backhalf.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3269b1b09d1f0d16f1dc8366c7115a3b233768e2a262ce2932b1c0421cd09640 -size 2436 +oid sha256:e4aead076cfda640820ed91bfe91a0d004338923f5fbcc631bef7b7141e107f3 +size 2434 diff --git a/data/minecraft/structure/shipwreck/sideways_backhalf_degraded.nbt b/data/minecraft/structure/shipwreck/sideways_backhalf_degraded.nbt index f3cec973..9ee32728 100644 --- a/data/minecraft/structure/shipwreck/sideways_backhalf_degraded.nbt +++ b/data/minecraft/structure/shipwreck/sideways_backhalf_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc60197ce2341efd43e108c2600297512714d2f52e647fe04a9e2605f6a186e7 -size 2259 +oid sha256:e5e1ece59baceb637cef62925e8c9912afef650e34f22e104708227b8029feef +size 2258 diff --git a/data/minecraft/structure/shipwreck/sideways_fronthalf.nbt b/data/minecraft/structure/shipwreck/sideways_fronthalf.nbt index bb51486a..e40bb48d 100644 --- a/data/minecraft/structure/shipwreck/sideways_fronthalf.nbt +++ b/data/minecraft/structure/shipwreck/sideways_fronthalf.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d66a4ebd571a3179159e61a223b75b5c2200a4d36fc3255a9143128a5f5fb3a0 -size 2204 +oid sha256:4478ce8087a4b7899da664c9164bb3482f086a4bae77a594ad42365db7821371 +size 2203 diff --git a/data/minecraft/structure/shipwreck/sideways_fronthalf_degraded.nbt b/data/minecraft/structure/shipwreck/sideways_fronthalf_degraded.nbt index 7a516a9f..f1681c40 100644 --- a/data/minecraft/structure/shipwreck/sideways_fronthalf_degraded.nbt +++ b/data/minecraft/structure/shipwreck/sideways_fronthalf_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2f1abbab50a2154ccafbe50e1dbcbdb8a5903dca6e4498c4d0c62eaf8d80187 -size 1913 +oid sha256:c0e9edfad99dd6aab51ac3913abf13db403ee730504faa795786337a3fa39901 +size 1912 diff --git a/data/minecraft/structure/shipwreck/sideways_full.nbt b/data/minecraft/structure/shipwreck/sideways_full.nbt index 48d32436..03472d9c 100644 --- a/data/minecraft/structure/shipwreck/sideways_full.nbt +++ b/data/minecraft/structure/shipwreck/sideways_full.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fe8d54b223d5b1f744a16d220c7c35167f7030dda61ee58fcc7b8e5efe9a7cc -size 3512 +oid sha256:ad852520033ac3a7ca8b06ed20929ecb0d42ea10cd90e91b8d16f037fc5a16d2 +size 3511 diff --git a/data/minecraft/structure/shipwreck/sideways_full_degraded.nbt b/data/minecraft/structure/shipwreck/sideways_full_degraded.nbt index 7c0e57d8..4863509d 100644 --- a/data/minecraft/structure/shipwreck/sideways_full_degraded.nbt +++ b/data/minecraft/structure/shipwreck/sideways_full_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f80d75a8498c203b4e7182524969d316965ff542ca68e36fd15ef1a2de6d177 -size 3309 +oid sha256:4220aec0de6c05278cea7aeb78bd75adedddeeb62b2a2c6e101c3803af71d3ab +size 3307 diff --git a/data/minecraft/structure/shipwreck/upsidedown_backhalf.nbt b/data/minecraft/structure/shipwreck/upsidedown_backhalf.nbt index f4959230..e10b30a9 100644 --- a/data/minecraft/structure/shipwreck/upsidedown_backhalf.nbt +++ b/data/minecraft/structure/shipwreck/upsidedown_backhalf.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f871cb72356def7cb2d36c02990d0843b1bda214202d9084d40ba0c713bf6e7b -size 2518 +oid sha256:117b4aee46f749673b08e13ab9a09fdbd2bb803205b09ad9df5109d538e55f94 +size 2517 diff --git a/data/minecraft/structure/shipwreck/upsidedown_backhalf_degraded.nbt b/data/minecraft/structure/shipwreck/upsidedown_backhalf_degraded.nbt index f1a69417..1994d85a 100644 --- a/data/minecraft/structure/shipwreck/upsidedown_backhalf_degraded.nbt +++ b/data/minecraft/structure/shipwreck/upsidedown_backhalf_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ede09098e8857f2493ab88832deda00d32dfbd86e4d9b7fbc58da71a34e805bc +oid sha256:a1fdce1529617334bef02e34bdd2679462d4225d1b51e1a63e016813d843e881 size 2388 diff --git a/data/minecraft/structure/shipwreck/upsidedown_fronthalf.nbt b/data/minecraft/structure/shipwreck/upsidedown_fronthalf.nbt index 55b5896b..d1d69624 100644 --- a/data/minecraft/structure/shipwreck/upsidedown_fronthalf.nbt +++ b/data/minecraft/structure/shipwreck/upsidedown_fronthalf.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6130ad9f0afbd08b4936072307835e0be4407c3e9d6f1f6989fb760b350f4387 -size 2325 +oid sha256:8c0c2239ffd2af800125c482430c501dbb8317986559be5ef6105269898003f3 +size 2323 diff --git a/data/minecraft/structure/shipwreck/upsidedown_fronthalf_degraded.nbt b/data/minecraft/structure/shipwreck/upsidedown_fronthalf_degraded.nbt index 9b7315ae..e82d4931 100644 --- a/data/minecraft/structure/shipwreck/upsidedown_fronthalf_degraded.nbt +++ b/data/minecraft/structure/shipwreck/upsidedown_fronthalf_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95abef7c696943d62656ad2a5bfe2148dbe80f930a2392ac98cb7c43aba52bfd -size 2210 +oid sha256:cc8ea0f81103aa4985bc524349ffbaad747d981040f13caf07bc4d5c9e76834d +size 2209 diff --git a/data/minecraft/structure/shipwreck/upsidedown_full.nbt b/data/minecraft/structure/shipwreck/upsidedown_full.nbt index 974ba59b..5f3a0390 100644 --- a/data/minecraft/structure/shipwreck/upsidedown_full.nbt +++ b/data/minecraft/structure/shipwreck/upsidedown_full.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08e6b1ad8fa77edd711bd136cf47ef7cb27a961831f001c7ad2325a6123283a3 -size 3470 +oid sha256:399281000afc109f497f219ae5f4529f84d9593cd30c92b9dbae0c1aa30c44d1 +size 3469 diff --git a/data/minecraft/structure/shipwreck/upsidedown_full_degraded.nbt b/data/minecraft/structure/shipwreck/upsidedown_full_degraded.nbt index 8bac3d17..6522b649 100644 --- a/data/minecraft/structure/shipwreck/upsidedown_full_degraded.nbt +++ b/data/minecraft/structure/shipwreck/upsidedown_full_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fd830385764abd78199224be0f1b0dec6ecedeb60125f9c631b1844d03710b1 -size 3299 +oid sha256:def1bab3595a910d2b66d8f99656052d6ef20d7d289a22890007fe1101da6cf5 +size 3298 diff --git a/data/minecraft/structure/shipwreck/with_mast.nbt b/data/minecraft/structure/shipwreck/with_mast.nbt index 3b738eb7..9e062ced 100644 --- a/data/minecraft/structure/shipwreck/with_mast.nbt +++ b/data/minecraft/structure/shipwreck/with_mast.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a04b74150a6718f3618dbb392e7799d2db587debb03479ba3a9e0bcb2c9033a -size 3960 +oid sha256:028104d8f8e74d4b2aab1b92eff0cdb4587026a03106ad5087a11d19dc7329fe +size 3959 diff --git a/data/minecraft/structure/shipwreck/with_mast_degraded.nbt b/data/minecraft/structure/shipwreck/with_mast_degraded.nbt index 505cb65b..ff28fe8c 100644 --- a/data/minecraft/structure/shipwreck/with_mast_degraded.nbt +++ b/data/minecraft/structure/shipwreck/with_mast_degraded.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8383629d9f4e4551e76470c880b844c0e3e32f23af1f4c86dcadb7cbd0d02bda -size 3686 +oid sha256:f1a9c1c6f70782f76b487546a7e5db0843feb1b3d1d058f9ef47e34355daa68c +size 3684 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_full_1.nbt b/data/minecraft/structure/trail_ruins/buildings/group_full_1.nbt index be5a0264..caa26b08 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_full_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_full_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b64814f6c950f72b6106655bb4f722a9c89432c6b57e40d5185bdc37e18b9eae -size 1339 +oid sha256:3f246e40e0ee0518846bee3f715d2509b086083182415836be8221c25c5a9176 +size 1338 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_full_2.nbt b/data/minecraft/structure/trail_ruins/buildings/group_full_2.nbt index acf0eae3..0052221d 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_full_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_full_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31a2349f4e5aa35555a67da1a4e8615899d02b9f88c133bf7f28a424757f9777 -size 1281 +oid sha256:09f0d465345f9f0d1ae96289a5026dc6add57ab0704ca842b5b98042b90a95ce +size 1280 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_full_3.nbt b/data/minecraft/structure/trail_ruins/buildings/group_full_3.nbt index a38bd7aa..9276ee07 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_full_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_full_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:985f6e852fab9c0ee0d05c1b730c72d6b28b997e7c7f1279d3b07e03f11c115e -size 1299 +oid sha256:787e199c6c9dd3c57b58d7ec95c36614365c7ff87dd5d1e8c1f30a736fda835d +size 1298 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_full_4.nbt b/data/minecraft/structure/trail_ruins/buildings/group_full_4.nbt index 0c3e0897..f4df148c 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_full_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_full_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1558eee5da1748c9d840d1cd27ec16571677e053dcf212bf4d4a1dc3ae51118f -size 1263 +oid sha256:a975db80f20d3b4d13754242723bbc00e61f440bbae13027b44e0d832e5af998 +size 1262 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_full_5.nbt b/data/minecraft/structure/trail_ruins/buildings/group_full_5.nbt index d37ed7cb..0798044d 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_full_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_full_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ccf70fbc3fbb609b43b67b74bad8dabc13d6e7bc4c1be8f9abb63241e67dca22 -size 1261 +oid sha256:12d3a5f3dde4e69e9a2b5ca3740e5367f17c78507077f1d4f670a6dc748ae4dd +size 1260 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_hall_1.nbt b/data/minecraft/structure/trail_ruins/buildings/group_hall_1.nbt index 70d3c955..13db1daa 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_hall_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_hall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c2afd27bbec8c23d11eea607bf5c67c22e1d0fffa7cbe4488fd6d06a775da94 -size 1517 +oid sha256:cce6e1b100330194e63295486813a840c6dc4f83270996550ec71eb97b4e7289 +size 1516 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_hall_2.nbt b/data/minecraft/structure/trail_ruins/buildings/group_hall_2.nbt index f7d421b7..fe150589 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_hall_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_hall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52b1aa0e725c0eef76e624fb9bc2ce0a80294458fe59ab7a4109affabe55591a -size 1616 +oid sha256:945c7a567ccae2a06bb6603b9906180b5ac4169d3d9b23dd702822205053f296 +size 1615 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_hall_3.nbt b/data/minecraft/structure/trail_ruins/buildings/group_hall_3.nbt index d2147cd4..3313346a 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_hall_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_hall_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56d8b0d3270cbb05b4b3f1dd66d2f65949962edc0c5f5b984806571abed35f52 -size 1716 +oid sha256:7ae8ee07bd4964a96c13f5883d38d261eddc946bdccd57ad1fa63d1f6d6339ba +size 1715 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_hall_4.nbt b/data/minecraft/structure/trail_ruins/buildings/group_hall_4.nbt index 751bbd02..d2fc3e14 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_hall_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_hall_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d222006ed6275f4977a34d6a99cb31083abb9620b339233366b9286bfc1b3f3 -size 1640 +oid sha256:84beb2e18e8c682b66771f690b17e240bdcd89990c85f49ca23d10fc6e7bf3c2 +size 1639 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_hall_5.nbt b/data/minecraft/structure/trail_ruins/buildings/group_hall_5.nbt index b21166e7..ca83da29 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_hall_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_hall_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9fa0b3af2d112f34deab2fc1ccda0d9c5b527cc24c9c11185d58641b011199d -size 1526 +oid sha256:70f2f485a570f2134ff1e0de192a35b4cf1cb055ff16dc273c2deb68b35b26a6 +size 1525 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_lower_1.nbt b/data/minecraft/structure/trail_ruins/buildings/group_lower_1.nbt index 3c350f67..e7ab7f09 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_lower_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_lower_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e098e363bc95f0ec07a4d7e40f578371191af2a7f106b05729e8cf844ea9a799 -size 1047 +oid sha256:51bde80089fb7876f0508121e8bcc7eef8d420c6ef512d15bee98757dae2d7c4 +size 1046 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_lower_2.nbt b/data/minecraft/structure/trail_ruins/buildings/group_lower_2.nbt index a6f78004..bf002c59 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_lower_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_lower_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e192a27b38a0979518749af598c828dbf96fcc3e98ad6626d26878ca17ab8fd4 -size 1044 +oid sha256:0ac6ea29671cf7264adfe4798d6d1989f813efe5fc8de5b27f5760bd37a4d5b9 +size 1043 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_lower_3.nbt b/data/minecraft/structure/trail_ruins/buildings/group_lower_3.nbt index 5f5c30a9..8ff87eec 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_lower_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_lower_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c67a472a9209338faffbf919ab81d6b983a2947d1773ad23d879b3897e9bb01 -size 1047 +oid sha256:c6134d3974098fe7a907e419287108a1f4d6491ac0df5cec809917d3361aa486 +size 1046 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_lower_4.nbt b/data/minecraft/structure/trail_ruins/buildings/group_lower_4.nbt index fafd08e7..b9ec3cfa 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_lower_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_lower_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:484b1995a4bb04d66c9d0375d60a2211cdc9fd58f2b9bb9dfeed38d0899d01d7 -size 975 +oid sha256:e79d4fd763aaa7cad0a7de415263a69e6bf49e9463b68eea7dd90d374022ce54 +size 973 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_lower_5.nbt b/data/minecraft/structure/trail_ruins/buildings/group_lower_5.nbt index 43781825..a8fd6b86 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_lower_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_lower_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ac1a4ce951deeeab5df8307373dbea2a2984dd3468f59fa6cba0f1e18d98187 -size 973 +oid sha256:5b1bd57ac83776e694343a6c454f1146951bbfe32e7af759b87ab5ab61778e90 +size 972 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_room_1.nbt b/data/minecraft/structure/trail_ruins/buildings/group_room_1.nbt index 748a82c1..d8452f3f 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_room_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_room_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0597bde1135299e77b19f96a42e8d586651bdf60d87ac2a9acaeff736431adb -size 781 +oid sha256:88053e6b0ac4d75a5d8abc9c422262b8a8e7150dfc9d810d4369148837eea4be +size 779 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_room_2.nbt b/data/minecraft/structure/trail_ruins/buildings/group_room_2.nbt index b462d8fc..1d46786a 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_room_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_room_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:645abf3385915435bdfe3379e385ba46d3deac2d417dc5f4a88b030d578a0d79 -size 864 +oid sha256:fe1ff1037698c853225c1c7291df7dd5628258c66218763d4bf12ab3c5b258a9 +size 862 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_room_3.nbt b/data/minecraft/structure/trail_ruins/buildings/group_room_3.nbt index e81aba00..9fcbecef 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_room_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_room_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdc317da04963c8a67cae4a6b6fa3f7240f82bc28cf1c445f67d18c12985d00e -size 848 +oid sha256:55860b9263f44b3aee07cb64f70464af5d7c2bac5049cee992071b5f48743a37 +size 847 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_room_4.nbt b/data/minecraft/structure/trail_ruins/buildings/group_room_4.nbt index 9cb67b46..a423f16e 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_room_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_room_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8e4f5a1b8e17ce9d2135c00daaf4af8f54c92f4b5d3db16c44a9ebc97d3791b -size 781 +oid sha256:76152fa6465c14cbc8776808eade6adfdeebedb8b46c211ac394375370046638 +size 779 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_room_5.nbt b/data/minecraft/structure/trail_ruins/buildings/group_room_5.nbt index db8f6049..e0503837 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_room_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_room_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a91573710e6071220f241077cfaa9f6dae9e72c26239ac6ae8d8cd6d582d69ce -size 779 +oid sha256:65fc181e01f9fe1ceacd9a4eae421e63a7f99674b1121cbe2950fd908ad0e4b3 +size 778 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_upper_1.nbt b/data/minecraft/structure/trail_ruins/buildings/group_upper_1.nbt index 2e0a42cc..b6d2f66d 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_upper_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_upper_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b98b26b95029108cb5c557c84f6fc536f788b594449a1fdb9cf7990dca04f897 -size 1270 +oid sha256:ffd89f45f0054f6ceff28751e5297c5092b93dca44d7ca857d4a35fe1285f0d9 +size 1269 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_upper_2.nbt b/data/minecraft/structure/trail_ruins/buildings/group_upper_2.nbt index 42bfabce..d84e3c31 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_upper_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_upper_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d12d3d014ebbac1aa27381a290f4eb083aa72d0bc373c8c2bd0c1f0b14c17d5 -size 1263 +oid sha256:575e683c8d95d51db2d489a839129a3419c087befc8d524b74473b0504a90cc1 +size 1261 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_upper_3.nbt b/data/minecraft/structure/trail_ruins/buildings/group_upper_3.nbt index 5cc07d8f..be2d056e 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_upper_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_upper_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7d173f4b38c4cdbc3737ce2c6e049b64db22a8d353da7100a57d7e6d8147df1 -size 1274 +oid sha256:7009bde23f13cebc5bc99af999017d287326cf0da373f94375c038e5b0061644 +size 1272 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_upper_4.nbt b/data/minecraft/structure/trail_ruins/buildings/group_upper_4.nbt index 936d654a..9a0b2841 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_upper_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_upper_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7c6a5745dd1b73511034ee7b34499c7720a097b7ff9463c23c3e45343cba2f5 -size 1182 +oid sha256:03451baad49f7e4a4b927fc6b871f7ec71e23fdf10fd55e10d10788dc3252da3 +size 1180 diff --git a/data/minecraft/structure/trail_ruins/buildings/group_upper_5.nbt b/data/minecraft/structure/trail_ruins/buildings/group_upper_5.nbt index 073b5111..aa63848b 100644 --- a/data/minecraft/structure/trail_ruins/buildings/group_upper_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/group_upper_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c03addecb994ecdda93cd36458ca124059b497aeb2ce3ec5f7cf3e67200d523d -size 1178 +oid sha256:c24b7ec4eededf3c6eb01df37a4c0b7ea3ef75c29f0a66fb91a8f37634381ee0 +size 1176 diff --git a/data/minecraft/structure/trail_ruins/buildings/large_room_1.nbt b/data/minecraft/structure/trail_ruins/buildings/large_room_1.nbt index 105f68d6..8950b4db 100644 --- a/data/minecraft/structure/trail_ruins/buildings/large_room_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/large_room_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15e423eb63fbfdc4ac4d459a76ef83cbd849b1065c910c8fa1f7e08673b244d2 -size 1928 +oid sha256:e7ce23591b5ce23dd0a68b3b1cbfdefe18a0ed091b575a3347fe394304c723a0 +size 1945 diff --git a/data/minecraft/structure/trail_ruins/buildings/large_room_2.nbt b/data/minecraft/structure/trail_ruins/buildings/large_room_2.nbt index 5d2201dd..494a280a 100644 --- a/data/minecraft/structure/trail_ruins/buildings/large_room_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/large_room_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6ce8630eb6241ab45b58a23a40c7d3076a157f387bd8c7bb4b995a3f3f60e16 -size 1658 +oid sha256:45831083f3086ae2b3b324ebd2ad555a1ba19252c5e0916672a837778e1397d0 +size 1657 diff --git a/data/minecraft/structure/trail_ruins/buildings/large_room_3.nbt b/data/minecraft/structure/trail_ruins/buildings/large_room_3.nbt index a6647380..24261c4c 100644 --- a/data/minecraft/structure/trail_ruins/buildings/large_room_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/large_room_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0780f9063f5a904f9e402e8f5a16728a3fba8f5ea016b00d987209c1badde61 -size 2707 +oid sha256:02fa6169901a5fadcefbca8b11c0c2cefd6568f6349700e7588c5b86f7e7caac +size 2706 diff --git a/data/minecraft/structure/trail_ruins/buildings/large_room_4.nbt b/data/minecraft/structure/trail_ruins/buildings/large_room_4.nbt index 4c1970d9..f336e976 100644 --- a/data/minecraft/structure/trail_ruins/buildings/large_room_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/large_room_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa09ae4ec6237f50e6120b57646081a326dd9984be8ee3332b4c7a5b0b17e1e3 -size 1564 +oid sha256:24f28dadd38f69d96a679043bd0e87bea603cf72ec323c9db0cb7b79e5427d3b +size 1562 diff --git a/data/minecraft/structure/trail_ruins/buildings/large_room_5.nbt b/data/minecraft/structure/trail_ruins/buildings/large_room_5.nbt index ca34a6b6..64d6483c 100644 --- a/data/minecraft/structure/trail_ruins/buildings/large_room_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/large_room_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7be71be2790bd5e6b3da584f0c64e172dd75d32b02f09665965bffcc1f11c76b -size 3199 +oid sha256:24aec5cc96ca3d8a135567eb81c8cb38b297ba01416439db6586581a231ed60d +size 3217 diff --git a/data/minecraft/structure/trail_ruins/buildings/one_room_1.nbt b/data/minecraft/structure/trail_ruins/buildings/one_room_1.nbt index 53e515f8..1bba784a 100644 --- a/data/minecraft/structure/trail_ruins/buildings/one_room_1.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/one_room_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8548fd44dd427e418bdef4a052f4e6a70ed7a9249de2bef0a11c67f78559021 -size 1005 +oid sha256:3e150b341fbdc36c600519645a2a64827f9730c27e9a4dcc843b253ca1016a85 +size 1004 diff --git a/data/minecraft/structure/trail_ruins/buildings/one_room_2.nbt b/data/minecraft/structure/trail_ruins/buildings/one_room_2.nbt index 1fe6022a..d7eb7517 100644 --- a/data/minecraft/structure/trail_ruins/buildings/one_room_2.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/one_room_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e99dcceb783c0532b0e2537f96158a4b6df91402286eba615506e8eb67e8565 -size 1087 +oid sha256:3d0e5081fdf2859fa02f690d33efe1fa66f18f882066bd248d33a769c100eaaa +size 1085 diff --git a/data/minecraft/structure/trail_ruins/buildings/one_room_3.nbt b/data/minecraft/structure/trail_ruins/buildings/one_room_3.nbt index 025b6f70..0d73060b 100644 --- a/data/minecraft/structure/trail_ruins/buildings/one_room_3.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/one_room_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1e2335cb29057f5d85bc9cfdb599005bb980a702b15c58d5284f702494e8445 -size 1105 +oid sha256:1655abe423c6f386d62c6654a86b38fcd7211c72811a5a723f56e30db5f5085c +size 1104 diff --git a/data/minecraft/structure/trail_ruins/buildings/one_room_4.nbt b/data/minecraft/structure/trail_ruins/buildings/one_room_4.nbt index dee78f77..ff2e86a8 100644 --- a/data/minecraft/structure/trail_ruins/buildings/one_room_4.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/one_room_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d4a99092a2f667ed22ed95dfeac52914f90825b79ddeb9e54c0c4f3c9907d90 -size 1452 +oid sha256:402ff2d9a7e71744628d9aa4635a1d5aa8e26c6a8bcb850ff35eb768856c9850 +size 1451 diff --git a/data/minecraft/structure/trail_ruins/buildings/one_room_5.nbt b/data/minecraft/structure/trail_ruins/buildings/one_room_5.nbt index 20e71bd2..449773b8 100644 --- a/data/minecraft/structure/trail_ruins/buildings/one_room_5.nbt +++ b/data/minecraft/structure/trail_ruins/buildings/one_room_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c201d35e2340caec1ad2d21c8d02747a3f065d1a27fccb4105a96534459e80a8 -size 973 +oid sha256:4a11a755d76234174ce2a5cd5c97fd6f0a8649fd4560e74dedd258e4baeb2e19 +size 972 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_1.nbt b/data/minecraft/structure/trail_ruins/decor/decor_1.nbt index ca8a7714..fff7f01b 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_1.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc2d518512acacc594efaef1c061e0cb71acb632645ee914ac26c172895d0e7c -size 489 +oid sha256:b031fea8a6f853c6efb09d5fe3d1c3efe5b926d18aa9299dddc431a0c9bb474d +size 488 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_2.nbt b/data/minecraft/structure/trail_ruins/decor/decor_2.nbt index 487c043f..3f79baa8 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_2.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35ebe590b273a69f8f1491b1a5b47aa7510e722102f0483812500bde9b8d7605 -size 471 +oid sha256:b8ef4d671bff822a8696d9054e52a0a305d241acbaa43b318381deb896f6ba73 +size 469 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_3.nbt b/data/minecraft/structure/trail_ruins/decor/decor_3.nbt index 443d3118..526cee43 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_3.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88d3fbe9076c7cf547d586f155aba0aa8de54e051341ea7f7b3f1ad63a93e54a -size 377 +oid sha256:99a3d701fb746b506b908aa6d4e99ff648c5dcbd70aaecfb7f0d48bab096e87f +size 376 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_4.nbt b/data/minecraft/structure/trail_ruins/decor/decor_4.nbt index 8c6c4661..f37d26b1 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_4.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64cf012fbe7950f4e9bd085b7f796e7d0b67161306ce97e517a9644a9d8640a3 -size 417 +oid sha256:fd5703231619198ca217d5a0e8252e2da08184ae4e669973978789a4223e95d4 +size 415 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_5.nbt b/data/minecraft/structure/trail_ruins/decor/decor_5.nbt index 9b3d3fca..cd50e615 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_5.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6e5861dd10ea501559faead739bd80d3604d59cacdac72c9c23bd067f1f45b9 -size 492 +oid sha256:a65ed3a4788bc63c62c21877f52711ae19331c49faabbe1717cfce2c3fd14ca5 +size 491 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_6.nbt b/data/minecraft/structure/trail_ruins/decor/decor_6.nbt index e949adf1..921a927e 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_6.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f4f445219cac6f8054b05d683dba32a00706701a1c48ef261b530b5f7f3e38e -size 506 +oid sha256:a25288fa8b6fb9dfbb1a354f965cd9d865bfa55fbd1d3d240f5a04051a519b6b +size 505 diff --git a/data/minecraft/structure/trail_ruins/decor/decor_7.nbt b/data/minecraft/structure/trail_ruins/decor/decor_7.nbt index d13cc27e..c74ad550 100644 --- a/data/minecraft/structure/trail_ruins/decor/decor_7.nbt +++ b/data/minecraft/structure/trail_ruins/decor/decor_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:665f93ec30bb7ce9ea88d5436011cf4eca1aa4b194374a49c57cfb01442c1665 -size 632 +oid sha256:0bcc157bed3fd53d0d80b63796c122ee4a24d6a5ef90b69d4c6122f434a7135c +size 630 diff --git a/data/minecraft/structure/trail_ruins/roads/long_road_end.nbt b/data/minecraft/structure/trail_ruins/roads/long_road_end.nbt index 7a5d5e88..9ee66383 100644 --- a/data/minecraft/structure/trail_ruins/roads/long_road_end.nbt +++ b/data/minecraft/structure/trail_ruins/roads/long_road_end.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4bb9af2636346dbbfe3dedaec682f89b1aa70586d3e77ee36993f522d9ab80a5 -size 858 +oid sha256:bc128f5a4b10de8ed8412549bc487cb55d281badbabdc4d1b3162c8a0102ed8d +size 857 diff --git a/data/minecraft/structure/trail_ruins/roads/road_end_1.nbt b/data/minecraft/structure/trail_ruins/roads/road_end_1.nbt index cde6e095..9c8df213 100644 --- a/data/minecraft/structure/trail_ruins/roads/road_end_1.nbt +++ b/data/minecraft/structure/trail_ruins/roads/road_end_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:972cc2384a7d3f96c34c52a19143b6d2df06abe2f387270cb383dd6f59cf2356 -size 468 +oid sha256:d4f9f20059ee3ab682da82b446dbba25e21c6e261ee83f32f0e0e09cdb67dc31 +size 465 diff --git a/data/minecraft/structure/trail_ruins/roads/road_section_1.nbt b/data/minecraft/structure/trail_ruins/roads/road_section_1.nbt index 972bda8f..a13d6803 100644 --- a/data/minecraft/structure/trail_ruins/roads/road_section_1.nbt +++ b/data/minecraft/structure/trail_ruins/roads/road_section_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e5f4a48277e2990efb83f85342ffbb1f0022c88abd51495a7bc599bbdd45d7b -size 706 +oid sha256:2a5a3a2fd079d6aa67b76ede762862946b69c172e089d96b3a635a2501712775 +size 705 diff --git a/data/minecraft/structure/trail_ruins/roads/road_section_2.nbt b/data/minecraft/structure/trail_ruins/roads/road_section_2.nbt index 6b77960e..2f653bb9 100644 --- a/data/minecraft/structure/trail_ruins/roads/road_section_2.nbt +++ b/data/minecraft/structure/trail_ruins/roads/road_section_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48670741d8ac2223dea347fbd4bc4b7bc3cf34315eed2a6e927aaabdafa9b821 -size 719 +oid sha256:43ad76ffee60ba822170df65fc8dff496899112a466ab6e4d301e213ed25b1b8 +size 718 diff --git a/data/minecraft/structure/trail_ruins/roads/road_section_3.nbt b/data/minecraft/structure/trail_ruins/roads/road_section_3.nbt index fd42dedd..d3e10aac 100644 --- a/data/minecraft/structure/trail_ruins/roads/road_section_3.nbt +++ b/data/minecraft/structure/trail_ruins/roads/road_section_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88ec1143d5bb2d698721ceb7b3d93a06944c88a138c25e1f6f0503e6687b7ac5 -size 757 +oid sha256:095149fdbba051c2513c373ba2a5adf375bb4fbbc62b6cbe77735a01998a7fb1 +size 755 diff --git a/data/minecraft/structure/trail_ruins/roads/road_section_4.nbt b/data/minecraft/structure/trail_ruins/roads/road_section_4.nbt index 6c6d229a..43e52fb9 100644 --- a/data/minecraft/structure/trail_ruins/roads/road_section_4.nbt +++ b/data/minecraft/structure/trail_ruins/roads/road_section_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6e2b89ad9b6dc0aa5d557b00b375a7a04d37ba98405569985ff3f65d6b07731 -size 772 +oid sha256:e700d4004114a8851632fd12d14c69b8a2be3e5c4ae0a416ffdd526fbeabda3b +size 771 diff --git a/data/minecraft/structure/trail_ruins/roads/road_spacer_1.nbt b/data/minecraft/structure/trail_ruins/roads/road_spacer_1.nbt index 227e7601..90076fc5 100644 --- a/data/minecraft/structure/trail_ruins/roads/road_spacer_1.nbt +++ b/data/minecraft/structure/trail_ruins/roads/road_spacer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11162f3f8dc4f8d8b6bf20a014d589cff5ce936e7d3de71858916291b261065b -size 644 +oid sha256:a0fc029d36c407f785685ec07a3c25bb18b44bcce020fb95e87e533dd8c4447a +size 643 diff --git a/data/minecraft/structure/trail_ruins/tower/hall_1.nbt b/data/minecraft/structure/trail_ruins/tower/hall_1.nbt index 7ed4db9d..b68cfb42 100644 --- a/data/minecraft/structure/trail_ruins/tower/hall_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/hall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b33e5d03f442e94c7648ad34a7ac73636eeff9d9a01d29696e67c2e093ed2120 -size 1519 +oid sha256:343a8b161476fae7f739eb54e91c21959c74cfe9ce274bbedca2c04e80ba8dc1 +size 1518 diff --git a/data/minecraft/structure/trail_ruins/tower/hall_2.nbt b/data/minecraft/structure/trail_ruins/tower/hall_2.nbt index 73e54e27..28361039 100644 --- a/data/minecraft/structure/trail_ruins/tower/hall_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/hall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:907a981afe6f4ea504d9c9ac1d5bd6ef3d9376c2df8b8cc6aec96a31983d8b4a -size 1894 +oid sha256:f579f71d94c72c3d2966bd1d714e0de37a785a1ef7ff246767f4c66e3b4211e7 +size 1893 diff --git a/data/minecraft/structure/trail_ruins/tower/hall_3.nbt b/data/minecraft/structure/trail_ruins/tower/hall_3.nbt index c4d21f81..4f518a58 100644 --- a/data/minecraft/structure/trail_ruins/tower/hall_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/hall_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca0cf52ad445d08181c5244e0cdf50b8ce4f164d217effe4d62db93c053a842b -size 2140 +oid sha256:b9ba0753e7ff2928f8ca6f1a4ee5cbd51f4d1ab02e8db52fcfebbf4a9af29389 +size 2139 diff --git a/data/minecraft/structure/trail_ruins/tower/hall_4.nbt b/data/minecraft/structure/trail_ruins/tower/hall_4.nbt index a9f7896e..9ec4792f 100644 --- a/data/minecraft/structure/trail_ruins/tower/hall_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/hall_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ac22aad8b3f54efea0065a80ffc5747fb9fd115a605cff5d9589a9e1d8a310c -size 2031 +oid sha256:59f706dc80c8e50d71d80b6c1bc14599f513fd0403b8a2bf4b6075bf5b9f502b +size 2029 diff --git a/data/minecraft/structure/trail_ruins/tower/hall_5.nbt b/data/minecraft/structure/trail_ruins/tower/hall_5.nbt index 51ba9ba3..019d602f 100644 --- a/data/minecraft/structure/trail_ruins/tower/hall_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/hall_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36711909c413ff5769c3b30bbfee00b05040aa71d20dc4dd336de51f444b9e9d -size 1873 +oid sha256:f6cb966f56daea0c2f28caf8d2aa4194d1575b6505fce1c64d826f0965567d64 +size 1872 diff --git a/data/minecraft/structure/trail_ruins/tower/large_hall_1.nbt b/data/minecraft/structure/trail_ruins/tower/large_hall_1.nbt index 1563c13b..8255fb2d 100644 --- a/data/minecraft/structure/trail_ruins/tower/large_hall_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/large_hall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bef7b0cdc958d261de94e6e68d6caea19bc28e5394c74dd987ebc1849726e9da -size 2024 +oid sha256:cd78a6c37c5517a57c64a329a0071ae5eaa19d21da897d31ad2ab8bf50407262 +size 2023 diff --git a/data/minecraft/structure/trail_ruins/tower/large_hall_2.nbt b/data/minecraft/structure/trail_ruins/tower/large_hall_2.nbt index 1c4bd60d..54817686 100644 --- a/data/minecraft/structure/trail_ruins/tower/large_hall_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/large_hall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0c410e3b1ae55cb316c67ead2501d31b425f102c45ed52479293f119180c941 -size 1966 +oid sha256:c06b4300c0b094f78b06a2b7983a0611c118540e0a87cdce08cc4652568361c5 +size 1964 diff --git a/data/minecraft/structure/trail_ruins/tower/large_hall_3.nbt b/data/minecraft/structure/trail_ruins/tower/large_hall_3.nbt index 62435771..e7320537 100644 --- a/data/minecraft/structure/trail_ruins/tower/large_hall_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/large_hall_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d5f21108a59f3380c99110365d6fd50415a9761ad3a3e6f12e1a06c37811457 -size 2023 +oid sha256:516cbd4891136759aa31684515651dfdd8e5e125c99e8de157b0bed4b01917e6 +size 2022 diff --git a/data/minecraft/structure/trail_ruins/tower/large_hall_4.nbt b/data/minecraft/structure/trail_ruins/tower/large_hall_4.nbt index 4635a08c..3cb1558a 100644 --- a/data/minecraft/structure/trail_ruins/tower/large_hall_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/large_hall_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:369d13760b7443d968d87c3bcf66f57cffc001eb6594d9e8a3ac094b7e0f9a91 -size 1807 +oid sha256:8d2fd185149f7e53e921abfd8de8492f57e286143495e367a32cbecba9460a8a +size 1806 diff --git a/data/minecraft/structure/trail_ruins/tower/large_hall_5.nbt b/data/minecraft/structure/trail_ruins/tower/large_hall_5.nbt index 63c37ff0..a6f15678 100644 --- a/data/minecraft/structure/trail_ruins/tower/large_hall_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/large_hall_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5165a2ad7b9b634174597ce2e17022fea095ca269c2751a705a95f7e08edb9a2 -size 2003 +oid sha256:b9f7c90a6072556f3ddd34db8f5c94126459b4118a9611f19401c84367f6eca3 +size 2002 diff --git a/data/minecraft/structure/trail_ruins/tower/one_room_1.nbt b/data/minecraft/structure/trail_ruins/tower/one_room_1.nbt index 9c5a580d..f5035cfe 100644 --- a/data/minecraft/structure/trail_ruins/tower/one_room_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/one_room_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45bc43c6e74b6d56e375838fa2a9d0a050059047aeac147e186282e776795937 -size 649 +oid sha256:d8d77d060126c01be437d0fb228d3d1b2b5910da0ed9c959517c088d1159d932 +size 648 diff --git a/data/minecraft/structure/trail_ruins/tower/one_room_2.nbt b/data/minecraft/structure/trail_ruins/tower/one_room_2.nbt index 992fffb0..8e4f03c1 100644 --- a/data/minecraft/structure/trail_ruins/tower/one_room_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/one_room_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:439f29c333690ac20243aa57ecd2cea2709e2be0d205221cccabde40b6becf3d -size 718 +oid sha256:737f0385c75daaeecd16c457811516ec22a0f700bf57727589a83368fa737536 +size 717 diff --git a/data/minecraft/structure/trail_ruins/tower/one_room_3.nbt b/data/minecraft/structure/trail_ruins/tower/one_room_3.nbt index 7a9aebe7..82263b3a 100644 --- a/data/minecraft/structure/trail_ruins/tower/one_room_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/one_room_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6404ebf0b345815318135a9251dd345654b7ac32932496db26b502cb8dfb350b -size 624 +oid sha256:b2b3714e50ac771af470514770821a5849cc4ed0135ecf3e4712a36c70142fb0 +size 622 diff --git a/data/minecraft/structure/trail_ruins/tower/one_room_4.nbt b/data/minecraft/structure/trail_ruins/tower/one_room_4.nbt index cab85ea3..239a2e01 100644 --- a/data/minecraft/structure/trail_ruins/tower/one_room_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/one_room_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11253c797d20236c6dfe4680e745ab7b727da202979eda3c83154c99075f85b6 -size 615 +oid sha256:6171d246119ac786700e40264bb87cd529b2878f18b82c963de9033013a12dd0 +size 613 diff --git a/data/minecraft/structure/trail_ruins/tower/one_room_5.nbt b/data/minecraft/structure/trail_ruins/tower/one_room_5.nbt index f421c12b..67e2d066 100644 --- a/data/minecraft/structure/trail_ruins/tower/one_room_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/one_room_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4af617a379486102d76d1e4882e4c5bf427ed738946b7235eaac68338c041521 -size 637 +oid sha256:1a4cd354566136b7eb6fa866abaa8f731c4629e055c23a8d6fa0915d28e3a4f9 +size 636 diff --git a/data/minecraft/structure/trail_ruins/tower/platform_1.nbt b/data/minecraft/structure/trail_ruins/tower/platform_1.nbt index 8cda6f2b..76a84f8b 100644 --- a/data/minecraft/structure/trail_ruins/tower/platform_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/platform_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecb10f943b5b0af075032d4c29d8f24ba95e11a47326515c24a720faf44face2 -size 1197 +oid sha256:b42b1ea4f280dd7ce9900129beef134b77bb045771f9e36d8476b4ab109e59a9 +size 1195 diff --git a/data/minecraft/structure/trail_ruins/tower/platform_2.nbt b/data/minecraft/structure/trail_ruins/tower/platform_2.nbt index 43125113..2c70d297 100644 --- a/data/minecraft/structure/trail_ruins/tower/platform_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/platform_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37b59ff5c0cbe25a7472d98f8fa1fbf46f28ffd6352535415d96ad4dbc53738b -size 1135 +oid sha256:2199eebc1e8f30e9fd9754dfbc6f11b2731a32f61ab2c8c20af13cae09d63611 +size 1134 diff --git a/data/minecraft/structure/trail_ruins/tower/platform_3.nbt b/data/minecraft/structure/trail_ruins/tower/platform_3.nbt index df6221b8..2ea78c52 100644 --- a/data/minecraft/structure/trail_ruins/tower/platform_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/platform_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc946105f99a98c22501470cf5c20c2d6bd3e49d41229fc1bd8b79b1b6605791 -size 859 +oid sha256:9376976d8af404418b117bdc9a424ba881c3c6035ddfb0aeb51a1bd6deb789c2 +size 858 diff --git a/data/minecraft/structure/trail_ruins/tower/platform_4.nbt b/data/minecraft/structure/trail_ruins/tower/platform_4.nbt index 220cbfa2..c3b50b76 100644 --- a/data/minecraft/structure/trail_ruins/tower/platform_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/platform_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a77695c2f7832fe1c37c3acd8b13006f3b77883855a0b6d4358009ddc03322b9 +oid sha256:38af93bed95f3672d7c4b17f3ecc6eaae88a24ccac13b86910e2b7c0ff9fa6a2 size 1205 diff --git a/data/minecraft/structure/trail_ruins/tower/platform_5.nbt b/data/minecraft/structure/trail_ruins/tower/platform_5.nbt index 0867fe7b..8f225408 100644 --- a/data/minecraft/structure/trail_ruins/tower/platform_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/platform_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c06f47ea54702b945389b7e5a1212c931dfa36af2eed46b4f9960a33e9ea96b -size 1147 +oid sha256:b97e6711eecf3d2185ffadb6b8bbced6d622b836db0dc0759f59b6198997e5fb +size 1146 diff --git a/data/minecraft/structure/trail_ruins/tower/stable_1.nbt b/data/minecraft/structure/trail_ruins/tower/stable_1.nbt index e5fda64e..b81f7114 100644 --- a/data/minecraft/structure/trail_ruins/tower/stable_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/stable_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4effa878899a437816e0b71eb354d1e3c5631a39a8c87f06da7102906542da23 -size 1274 +oid sha256:3193bf0d88c179422f1db5e72d6aff9f041a2ff929df4a3cacff039ab3146332 +size 1272 diff --git a/data/minecraft/structure/trail_ruins/tower/stable_2.nbt b/data/minecraft/structure/trail_ruins/tower/stable_2.nbt index 54ebf7a3..f979b65f 100644 --- a/data/minecraft/structure/trail_ruins/tower/stable_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/stable_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bca904686fce99ac5c0a90a3c86f077240ade3b8cad8209db2ab9016d281ccb1 -size 1292 +oid sha256:ac3d84983b43b5e27eb146a820574a1e23438a00bcb415ea57aa8528b485ea9c +size 1290 diff --git a/data/minecraft/structure/trail_ruins/tower/stable_3.nbt b/data/minecraft/structure/trail_ruins/tower/stable_3.nbt index 0f98dffa..c2474416 100644 --- a/data/minecraft/structure/trail_ruins/tower/stable_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/stable_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4fc823f018e12b6f8236d94cf1fef18491c85fff0a728fd4735eeb32e9d0070 -size 1256 +oid sha256:3ae8868780dd6bb092b45a5c5f7d453084a6500879b810001492d32004d84b59 +size 1255 diff --git a/data/minecraft/structure/trail_ruins/tower/stable_4.nbt b/data/minecraft/structure/trail_ruins/tower/stable_4.nbt index 343b8235..1b38b43b 100644 --- a/data/minecraft/structure/trail_ruins/tower/stable_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/stable_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7403939476f744d44394b5841d4f3d95f0e1da4445ee9bee5fb24c297993d954 -size 1290 +oid sha256:68286da91c92a2434f46a76a66c0aeb26aaf383b152c5ee5e377327d546bbd2c +size 1289 diff --git a/data/minecraft/structure/trail_ruins/tower/stable_5.nbt b/data/minecraft/structure/trail_ruins/tower/stable_5.nbt index ae7c2a50..20bb8c08 100644 --- a/data/minecraft/structure/trail_ruins/tower/stable_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/stable_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:126e8eb5460a90cfc826446e064d5a26e72be8aa881ae21726236fe0d16097f1 +oid sha256:27d412aaa7c4bd6a00c6b5a31841a0f01269c5c0aecbf963f0030a48755c1ed1 size 1034 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_1.nbt b/data/minecraft/structure/trail_ruins/tower/tower_1.nbt index f24d45e6..621261c3 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88e5bd78dd0b869cad5cad87c0988ebc14b44f24a2e3f1439e1e682a3f421def -size 1585 +oid sha256:041f7736f3d03701494b6d78b7e4783f3560c94503c25e85304999dad4b7172b +size 1584 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_2.nbt b/data/minecraft/structure/trail_ruins/tower/tower_2.nbt index 5a655d81..2288e7ba 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30b2e88a8543bbc1d7485cb5fc9a6ba0b5d5922e823b047d01c5809be13e5506 -size 1619 +oid sha256:e877ba59843984fe959513da5ea17db0dff0f954a077525550c6d0e79828de5f +size 1618 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_3.nbt b/data/minecraft/structure/trail_ruins/tower/tower_3.nbt index c2640c5e..6978e276 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:171ceefa740f3af05268c0a3f4f2eb80628579028486e3218c91e6fa448683e8 -size 2229 +oid sha256:fc1096715236075c4a14cbb6a8322aa723da15d2938b526e9b3c183044f9cc7d +size 2228 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_4.nbt b/data/minecraft/structure/trail_ruins/tower/tower_4.nbt index 3db4f6b5..39caa3b2 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98de53890c0e096a66edc349b550fe86f4cb276864ba8115cf47e2ae6f52f9eb -size 2091 +oid sha256:691b66ae663e4a2be8f0dd5dc3bf0f46dbe04816874bfff97fc129d64a966824 +size 2089 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_5.nbt b/data/minecraft/structure/trail_ruins/tower/tower_5.nbt index a7639ec6..f8febde0 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e1c13526457c404e02fb34487ddab4b06ea06f669f4234d3bfc671e3908c108 -size 2062 +oid sha256:0b754c4d962f2180d29ddf891273bd0956c3789383a495196b0d69560ac91039 +size 2061 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_top_1.nbt b/data/minecraft/structure/trail_ruins/tower/tower_top_1.nbt index d93f29c0..19e96eb3 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_top_1.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_top_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3187c070f15fbf9dfcb48076c7cf4045dab725247e7379a908217691b93912d7 -size 505 +oid sha256:115d46d2f7859556844e267a2d6ed835fb3a29ebfc3c22c116f290718eac7685 +size 504 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_top_2.nbt b/data/minecraft/structure/trail_ruins/tower/tower_top_2.nbt index 66e2f437..e07d2c41 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_top_2.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_top_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8843ba8847b66e420973498cb81c761dd904dc195d17c63ac736ac8991e9fdb0 -size 522 +oid sha256:feca6dc3fa77dd2674785a19efe4307c911172bf5ef3dbae24f0f02f5afdb550 +size 521 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_top_3.nbt b/data/minecraft/structure/trail_ruins/tower/tower_top_3.nbt index ed2699f5..3b7fa734 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_top_3.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_top_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6933a6968264b50d15ef9bd3d9d5889d0dc623b6c2e1bb9389db587e3c7b900 -size 501 +oid sha256:0be4939566446deff21010857c15f297782a3cdc2195a8e804c2d0afd88df792 +size 500 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_top_4.nbt b/data/minecraft/structure/trail_ruins/tower/tower_top_4.nbt index 58a0a7e7..43616d11 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_top_4.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_top_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c490ad0da0f6391388d5db6190c9a13b687c5315a1eecc162e05edda891a0a34 -size 481 +oid sha256:17e108aab0812e7d1bf21805bd4c3b4ce03921d46f79924a8cc5710dedd20049 +size 479 diff --git a/data/minecraft/structure/trail_ruins/tower/tower_top_5.nbt b/data/minecraft/structure/trail_ruins/tower/tower_top_5.nbt index c6f41e93..08f510ac 100644 --- a/data/minecraft/structure/trail_ruins/tower/tower_top_5.nbt +++ b/data/minecraft/structure/trail_ruins/tower/tower_top_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:805d8e147805789d3feba9913c6e4eb9f90bf417ef03ebcc335b2d8cc745d297 -size 406 +oid sha256:8d86e731b6578b5dc10bbefbd90a54f83fa5f73b87ce1dddd2068900aaaf181d +size 405 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/c1_breeze.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/c1_breeze.nbt index 7006e22c..873ea27b 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/c1_breeze.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/c1_breeze.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86d2e5b4ffb9a2440589a5bad508e7040b3f2e59955e8cb987351fc46a705f8c -size 1695 +oid sha256:4d08dfcf253e992110875967b19867d5bfff6e34006ac0777a65e38f4d5280cb +size 1694 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/full_corner_column.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/full_corner_column.nbt index 58e1f37f..850eb7b0 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/full_corner_column.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/full_corner_column.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59a43bcb0c8f8eae3d19b192b0ca419216005ca24f044a301f1fe52e995d2a43 -size 4158 +oid sha256:28c612b09dee726633f2b298ce0a3d269b835d76ef6bff50d556e4590494d7a6 +size 4157 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway.nbt index 5b191527..d5550bd4 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9dc36057fe5fb5585fed53c38673af8e8f35e4511e4ca8419f2cd8fa253eb42 -size 4337 +oid sha256:07465129538f570d9609a8740506c1a2c71df51d6e1c099a845fd135b0a5ff96 +size 4336 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway_2.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway_2.nbt index 511f397b..39f75eeb 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/full_stacked_walkway_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35f3fa842af3468bff5c96df1add43398700407770250c3fe2197672a48643bf -size 4281 +oid sha256:c414525505046907d33cf27f631291824d94a1e0de47a0bf0707be3483541efb +size 4280 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/grate_bridge.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/grate_bridge.nbt index 065630c8..42d9b01e 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/grate_bridge.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/grate_bridge.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfb55d8de3893e47ee3baf37ea2475a1a7a2e1630ea22ecbe94e76459acd5369 -size 1754 +oid sha256:546332239ec348c5f5f129d7e20b9773bcd3b11081af57ad21fa8f7bd2108778 +size 1753 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/hanging_platform.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/hanging_platform.nbt index 1a2fb3da..5124e210 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/hanging_platform.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/hanging_platform.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79c61cb13c5e7d6d138863d1b4b87b6fe424b6d9c5681fd54ad33ab6449cb968 -size 488 +oid sha256:5d4eda960c683143e87de39efb2411c8dabbba39cc2226191d5f7bcd43ee216a +size 487 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/lower_staircase_down.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/lower_staircase_down.nbt index 66d1f258..5e4e495b 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/lower_staircase_down.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/lower_staircase_down.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55a5b45415df4ecbf72ffbae8582038ac1e0604b3fda50d086d36440925a869c -size 429 +oid sha256:adaba8e9d3e9b63ef88006831f623f28481b86626e65aadba4962708915d84ac +size 428 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/short_grate_platform.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/short_grate_platform.nbt index 6d6b7fbf..438a8c8f 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/short_grate_platform.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/short_grate_platform.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5fac60ed244cd003232830c1a36fa0b5a09d3a96e63c7a469f03ea7c6e0cf5e -size 800 +oid sha256:633646120df47c83ca5ebdb75734cb357a00c974ea383764f36c3acbf8770d6d +size 799 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/short_platform.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/short_platform.nbt index e9236a26..036afbc8 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/short_platform.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/short_platform.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5bc444e64165e000e62a95b09b278b5e1815f5f3ab7ecacef81eb85ea8843d0 -size 585 +oid sha256:9f7c6c2fcd7ec98346e911635e55914f2fb01ba23d2d792c7b45a994a8fd71fe +size 583 diff --git a/data/minecraft/structure/trial_chambers/chamber/addon/walkway_with_bridge_1.nbt b/data/minecraft/structure/trial_chambers/chamber/addon/walkway_with_bridge_1.nbt index bfd94317..fdf64e28 100644 --- a/data/minecraft/structure/trial_chambers/chamber/addon/walkway_with_bridge_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/addon/walkway_with_bridge_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78d60a8bbc9af05d4be153ad88332063d5c61b9b20c92a70ef852697c5cac9c7 +oid sha256:a97b398b182ee52e9332c1e43f2bd61defc6587610c1fe536910302397725ee5 size 6221 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly.nbt index e92e9ef0..314956d4 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4ae79e77e49cb6d086f06652a86f848b511de4d2d40532da703d35facce8dcd -size 54409 +oid sha256:834c52448847f4bb66aa2234a852e6487a9a3afbc1bd9f160f0dae284b72039d +size 54407 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_1.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_1.nbt index e72b6c2d..221cd531 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7d9f1e539f452137b532dc044e04f9309d0e55d19dd4b2d783613c6fb8bcc54 -size 957 +oid sha256:4471b0123e7553ecec70c60e4399ad59fd4d583b88b4db08488f66efb308db33 +size 956 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_2.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_2.nbt index e9cd4924..02d4a5b4 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:435110dee550f21850cfdba9cd1a6f0a7739156dea5d55f66ec7a13a5fcd23ac -size 950 +oid sha256:8eb32e9d2090342e9d3174d4f7e777c24227f35a742d5ca0062b90944c068e5a +size 949 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_3.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_3.nbt index 7ace0e23..1e0396c0 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2aa512d3a08bcf1f68aea56299446a9ae5f8c43fb91e78a1ffab843439116ef2 -size 957 +oid sha256:f8b4b10cbc517255b9c58a6e130baa2fc20f16f8f5a785b197817eae57197f01 +size 956 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_4.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_4.nbt index f756d52c..37d0f191 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61e739c8bc414499bf572491b02c078d10cef9e08841c4706997901698229ddb -size 953 +oid sha256:6a70c8836c3934dd7d102cf641ab5516500822739acd4c9658886576d7ede355 +size 952 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_5.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_5.nbt index fdc654df..43b7a4cd 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_5.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05bcf731fa1996230428c4fd3d6076f685e6cd0b3c04347b99a6d909e4f39243 -size 1025 +oid sha256:93e270d11014b5411c948b9c98840aee951f507016eaa3a84d16cc6ac2a6dd55 +size 1023 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_6.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_6.nbt index e10217b5..9ebf2eda 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_6.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c049b59934b183d0f15e9c849e6dbe52d6374888e113aee73d6634b7fdbb826 -size 1022 +oid sha256:d190cef037cff2d929df7d01ff1a509a96944e1fc954f2aa1e7cd235791b8405 +size 1021 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_7.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_7.nbt index 9b8437bc..9f956662 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/cover_7.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/cover_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7cbe749e8d2b0d98ee219f7be376af14f3c92e7aead062ff5f04533fffac4fc -size 756 +oid sha256:8bfa268ef616d54b685e77f8af925c5d5e4f774e2c5bd114edca0819bf1a4193 +size 755 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/full_column.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/full_column.nbt index 681b0fb0..a6d46c32 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/full_column.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/full_column.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7f168bf5eca60775fd128c2b8d6341dbb58181da7e06b5b6903e2c4ee855912 -size 661 +oid sha256:1ba06e037e8cf70fda41ee18045bbf1f7b0e6b4b3ea4d8dd04092289c137d03b +size 660 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_1.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_1.nbt index d2635a77..e2a9253c 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c31800af26837dc4ee31968c2cf4003363474183ccbf7f0d4bb952d99a90919 -size 587 +oid sha256:6cefd8c437e7e2462faad99130a6c364b9359dcc593e23d1e415b2bbee3ff78e +size 586 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_2.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_2.nbt index f1382bfc..fcf2b979 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0524f0e2a382138925bbcefafdc01dfd5b9db9c5bfd4c10c294c3aabe1a58c8b -size 869 +oid sha256:1dac1ad60d6aee737ea1d952f75c52e932dbc1c6d3a3ab67f5644e08dd4becb1 +size 868 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_3.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_3.nbt index f8d5cc59..37f6e10f 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0102c7b301e4f31ce6af7b33eff57f1546d299c0529dab5cea5ee914d49bf9b -size 537 +oid sha256:cdf5aec6d7d34a7b7b018ff14ad3ecaef526b27149faae1aeb7b553dc8adee48 +size 536 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_4.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_4.nbt index 4a546d45..491d90fb 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75b9a0d143c815aa22ac3327dbeed7ac039203dda0f72c6bfa2461cc92b466fd -size 639 +oid sha256:5d9ab38197e8d03a5626f9d28ae3cb5add29eead2ee5fe9d58952f156e8ded29 +size 638 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_5.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_5.nbt index 1451afa6..c8184dbf 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_5.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/hanging_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6617517ba525bdb12815ea438ec76ad939c79156af6ce4b934fe4a68dd23f9c3 -size 340 +oid sha256:2ea62ddefad6300c661bed636fae2ea927504ffadd30f89dc0438479feb3e47d +size 339 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_1.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_1.nbt index 818f2252..2f566247 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:449d58f1f1f6eefcb8ac7d6d8ac47256dcb87d06e342c7d84172568c239e623e -size 2462 +oid sha256:8c8b03678d3f6836b5f338b943bd2d82fb994e17cecbbd6098b7dfaeeaddc6e7 +size 2461 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_2.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_2.nbt index 4f653f72..94c79885 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc89b123bbe0f5cb0c57545e8a450deabec2434e45745c1c45b692465ac5e11f -size 2495 +oid sha256:46d8be41e6dd6c9b9eef7031173af9213c2c102a38be1cb11e24cc1931ffe83e +size 2494 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_3.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_3.nbt index 93fef574..bd3a9ac9 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/left_staircase_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdbf2434319b6b8863fda29cdb690b28cf3da77fed1dc7cdf7c8a46f72319c59 -size 2511 +oid sha256:a51e937fc375bb197023d3c3729f07fde71379357320bb80a0a55ef5f29bc70b +size 2509 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/platform_1.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/platform_1.nbt index e7c5bb45..553aef04 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/platform_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/platform_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3ddab51ac5521a295b4dfa88459d65bbf44cad2451da54cbd339813c8c0d32e -size 473 +oid sha256:9599bfdbe69dfc7df796e08ee6bb14c0432590f504bba6ef964fc641487bc385 +size 471 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_1.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_1.nbt index 3df7b1fc..0c0137ed 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7812ec8cc317dbf13120ab87ff3d9cd6d30d5aa2261517abdadaf0710290a496 -size 2424 +oid sha256:bacf83745cfe022a6426a272cd310839977444d8d4490ad1314498d74e1ac198 +size 2423 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_2.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_2.nbt index 35c512b3..b4dbebc4 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88d8cc3f66e55ce92fbb170f0d756d3e7547a05477b891ece884dd4273f5d123 -size 2551 +oid sha256:5fa88c6a18462787b8449d3c4ece6e23ba644d677b58e69c91e8d94a45ff37fc +size 2550 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_3.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_3.nbt index 293ee999..afb2f1ac 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/right_staircase_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51306eb74096264f33f10ef00888e12a3d9ee7e8edd309d362fc560ab3e9717f -size 2558 +oid sha256:02a3b7fd72ac0f50b9d3f7e0aa93a14b45b990701fe2d6de11b2f45a8f51f514 +size 2556 diff --git a/data/minecraft/structure/trial_chambers/chamber/assembly/spawner_1.nbt b/data/minecraft/structure/trial_chambers/chamber/assembly/spawner_1.nbt index 7602fe03..6a3e2743 100644 --- a/data/minecraft/structure/trial_chambers/chamber/assembly/spawner_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/assembly/spawner_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e01f184c22248cc67812c7403ac4473ef65c5fa27d057a4e0e18f516d402003 -size 916 +oid sha256:aabba3dc85d520dc5f85bf56bd7e8f1baba1f6873b1eb8356edd1465bf4933f0 +size 915 diff --git a/data/minecraft/structure/trial_chambers/chamber/chamber_1.nbt b/data/minecraft/structure/trial_chambers/chamber/chamber_1.nbt index 7942824b..ef082843 100644 --- a/data/minecraft/structure/trial_chambers/chamber/chamber_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/chamber_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19390578c674f7d1dff73a9af88383e5762a68b3546d9098cfdaa3e432a4d37a -size 38589 +oid sha256:6e8f807d861808bffe422131f405edbe143d99b228ed609d1d9fc900876439e4 +size 38588 diff --git a/data/minecraft/structure/trial_chambers/chamber/chamber_2.nbt b/data/minecraft/structure/trial_chambers/chamber/chamber_2.nbt index 82e2ea77..384465e2 100644 --- a/data/minecraft/structure/trial_chambers/chamber/chamber_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/chamber_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31a3489153d10f81d3451df22b6f04917aa93ca82376038651f26689987bff3d -size 38938 +oid sha256:987c0184040efbd87c253bbeb73c9f07461900ceda9edc7a3d75b8601b5076fd +size 38937 diff --git a/data/minecraft/structure/trial_chambers/chamber/chamber_4.nbt b/data/minecraft/structure/trial_chambers/chamber/chamber_4.nbt index a2dd6095..3de799b1 100644 --- a/data/minecraft/structure/trial_chambers/chamber/chamber_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/chamber_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5631b99b4a081f96719dc80ebc8fd080be79696c6cff67d5ede715cfb53bb90c -size 24479 +oid sha256:b1952a6577eb0a5cb45e51926d365fc52f2d52e09f773482e9cb739ddebff733 +size 24478 diff --git a/data/minecraft/structure/trial_chambers/chamber/chamber_8.nbt b/data/minecraft/structure/trial_chambers/chamber/chamber_8.nbt index 371d786b..c8646ed8 100644 --- a/data/minecraft/structure/trial_chambers/chamber/chamber_8.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/chamber_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c643773b262aafba4cc7cfbaae0b5e203933a4f9831033206c5ba555cb71058c +oid sha256:62d107d2825a4f447d0a360678c19e87d2356be4054bcb01aa617331a4eb541e size 19203 diff --git a/data/minecraft/structure/trial_chambers/chamber/entrance_cap.nbt b/data/minecraft/structure/trial_chambers/chamber/entrance_cap.nbt index 03def97f..1580b650 100644 --- a/data/minecraft/structure/trial_chambers/chamber/entrance_cap.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/entrance_cap.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26a77d478217ecaa3bf2c528190a1eb6c3dbde8f096eb4c1510a2fb88e1c2528 -size 384 +oid sha256:a0e55e446c6d63f5dede921b06d0ddb0dc1c72025329417623407e869ac6dc46 +size 382 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption.nbt index 6e201462..b6d15332 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e27f68d0179357e4cd250f16eb17ad75a92c5a67ac682c70e575927913026c0 -size 31897 +oid sha256:d179106c8babbe016eb72b320179b2aaec33940239ff7451d42404e6b3be2eff +size 31896 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/breeze_slice_1.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/breeze_slice_1.nbt index a4636250..9de5a415 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/breeze_slice_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/breeze_slice_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe1802966306d1539afde15e2366b9a366ff1ff80ea066774cb34cac15182197 -size 2594 +oid sha256:aa732f4ff8419bc736b9e121ae4e6d4f9c1db6aee58934876baf39b087ff73e6 +size 2593 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/center_1.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/center_1.nbt index ffd8bd93..b4fffc01 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/center_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/center_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b35fd165972b9f8e088617aad6e9af368c81e763aec4336b042f2b0b5c72024 -size 1537 +oid sha256:2a2600a3b0e0fced8d0fadd13e3acc62760933634a05aaf48754a6b0cfa2a053 +size 1536 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_1.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_1.nbt index 9a35997f..9e560f05 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e49bd110c77dedfcc0dcec3271808b961c20451efb197936232bd94d6e191a96 -size 4438 +oid sha256:2ab0771c90a3cceac59d8a946a02a04bd66a99f26744fac0ff0f91a303162e65 +size 4436 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_2.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_2.nbt index 54ea6d30..ff8c1969 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58efba93039a803713b5205c430aeaed3dc23d909ab270f96ce57d4bf79018b9 -size 4602 +oid sha256:8c1d1b8a3c5c32b717ab27c5e7cf8f6beb9be22530ddfb5e9cebbc96e69354d9 +size 4601 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_3.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_3.nbt index a62e24ef..25e0c3f7 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:679ef16b0822e7a0e6e588e66b1469a6649eebd0d7f08d78312b4ea32620557b -size 4684 +oid sha256:59781e8d45b2f05541bc326349fdbf42071a6f50fa83eb0efeb4d10943ed2919 +size 4682 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_4.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_4.nbt index 1932f376..10be2492 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:436c3da8227d05163622da508762fa7e8ef5a014a83d8d88acb490bc9de1731f -size 4835 +oid sha256:1c8262c31a7abdb8a8b20ae84f7336678a2012cee788d48fab052487ce6dd39e +size 4834 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_5.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_5.nbt index 6c4346cc..9983618f 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_5.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/quadrant_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d6496be5e7897126dfcb46be05bc6bce8499dcb3f50a217ece1e816ed56e532 -size 4787 +oid sha256:142c983eb32816b8c98afe8de29e0e9a3e031c8e2f92675ab2a3fac6b4edc9bc +size 4785 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/slice_1.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/slice_1.nbt index f556fc1a..98888118 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/slice_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/slice_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff5b487c262ce33dec4d9cb80992d3fbce5845a68056e186a4f8f7161ded3b7f -size 2506 +oid sha256:efd77377af16c67965e8ca9706f50ae22db15d0a790d853ddf5c29ca922bb86e +size 2505 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/slice_2.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/slice_2.nbt index 85972a1e..f3f6f077 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/slice_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/slice_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcd7139df8a8b9e7693757feb290d0760bffef0b347ce7ed39c579f2e6c5d75a -size 2483 +oid sha256:647da15b2dec93ff8d94c9b8b745d00ea73f6bfeb31f59dcd856f178d8eef4d2 +size 2482 diff --git a/data/minecraft/structure/trial_chambers/chamber/eruption/slice_3.nbt b/data/minecraft/structure/trial_chambers/chamber/eruption/slice_3.nbt index 2d3920b0..dc865d70 100644 --- a/data/minecraft/structure/trial_chambers/chamber/eruption/slice_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/eruption/slice_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b444ca8797e81435b5fb25390a3120de9b1c5ba832db446d57620c9a5ddba3b7 -size 2476 +oid sha256:e676f78db5ce52f5574cfda9c3b1ae2c773c4c8e2870fc6d83bf8fc1e01e93ea +size 2475 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal.nbt index 7b66a9df..2701a711 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3fc29eb386571eb3319bb2d36a7ada5cb1843d76be717e8e0d6d6cae33e3950e -size 47359 +oid sha256:7fdda8d0bd71f43c55c3d57d312156e2b563ec4566551c4aef55c4d4690ae761 +size 47358 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/center_1.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/center_1.nbt index aca89089..79c060f1 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/center_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/center_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49ce5c3882010dbff2bd433d2d9782a8d0b56a73a7588442774c40e4ad9afcf3 -size 3678 +oid sha256:106333bf255bbef2f2d9839dc05345f64f0bfbf7f9af2d9d89a773cb495e6d69 +size 3676 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/ominous_slice_1.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/ominous_slice_1.nbt index 48c161ab..27843167 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/ominous_slice_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/ominous_slice_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13b5c565653424d3886080e2c634bf001e91b804e7292995650394718f8a1310 -size 1919 +oid sha256:7630de556f055b609f2570d9064400b79aa2270e5ebf86ac303c62132cc8b35b +size 1918 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_1.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_1.nbt index 19dda804..49d5c304 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdaf1c83d7910e3f4c0d9f6f3e87ad4613c469a2426f7392f64f9b5ded659002 -size 3462 +oid sha256:f0dfd1a8a23d1d9ffbdce4bd4b46829f912ff8af469deed5bee4473090d2d72b +size 3461 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_2.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_2.nbt index f154b7b4..09d4215e 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4015d3b583f2d8dff9f5d7eebbde770a9a5e76f091b7c6562aaf95dade654610 -size 3326 +oid sha256:51d26d0d3b8e4e0017d05e3967e00b9d172844b250d23bf41b6f7417151eec31 +size 3325 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_3.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_3.nbt index cf42d7ca..2b98cd86 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/quadrant_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e689980e88eb72f544f757aa69cda631ea465c9681c8bc22465a042a5758fc81 -size 3910 +oid sha256:39374993a5255172030b36c05b7300c7849ffa497678bc5fbf6f24e64b29d06c +size 3908 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_1.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_1.nbt index d2e5c431..19893815 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:574d779e4d52274d1882b9a68972a9bb7b5509ab44b46d6a2cf02fdbe6346f41 -size 1922 +oid sha256:1b5f84beea8b97f0ffeae643ee82316ab0447cb91984e05b8eaf652cceebb4ac +size 1921 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_2.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_2.nbt index 28cab8f7..92e69055 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7d9456c802dbb9062b95e0dcfede7587b2f3a4cb5e75fe0cefbfca5a6f26815 -size 1964 +oid sha256:d1ae05ae5c609cbe38a46e02217ce1b419cee3559d661c5786c31145c8831a7a +size 1963 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_3.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_3.nbt index ab467029..ade0ffd5 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:822181289ae41a66dc394126d40b52154c529419f0f6ed88b554a6d359dcda32 +oid sha256:d3cb1114579c662951fdcc614d7c602f974417c943fc078e04dbf3919cfef2fa size 2010 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_4.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_4.nbt index aa6004c0..ebd5c711 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72a06e0185f9412f21b4d9af6bfe88986ef63bbbff8be777b1c4a868f11d0240 -size 2018 +oid sha256:d1728ef9fb2318624284ec4960e20aee4d1950fc24a633347caa077fce63fc33 +size 2017 diff --git a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_5.nbt b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_5.nbt index 45ef9c99..3f8f41b6 100644 --- a/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_5.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/pedestal/slice_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f6b5decb759955369e1ed8fd17492c18b168495c3ab44e6a0e9b97cb60e5ef2 +oid sha256:b1906b936cb558f3078aadfd7abb396e8d556dcbcb51a112c150f06044efae56 size 1970 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted.nbt index 46812af8..e1be5cfc 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f72bcc9c81c04ecaea8f0d118b3fffd2eab82d86fce9995622fa8d910e0129f6 -size 34273 +oid sha256:3104c78433e2cfcdd6e7cf9fcd011924f11e87db929ff13a0d806b72745bd80c +size 34272 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/center.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/center.nbt index 4a4069e1..700e96ff 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/center.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/center.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe89893cfa08e6a23dd0221a544f9525f2c9f8431f17341d134e9ac3ea57b8b0 -size 1276 +oid sha256:a3b89760f76087c67a1bd8833623dfc13b5805f8ed968314219435426e884a37 +size 1274 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_1.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_1.nbt index 8f630fc1..9ba8bc9e 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc60aaeb8bb96e97d8853f820302ce92760ec47176ad39934306415b6dc86ea4 -size 1008 +oid sha256:df02e99a825c983fe811d2ca31827b0311726606743ad53140655a3106ac4c58 +size 1007 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_2.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_2.nbt index 6d12072f..650ea5a0 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c76ba40d73d0be4781b696f0dd700406a5cb8da1510d58a3e1cd70e2d3137d1 -size 1133 +oid sha256:5ccea10186557330697ebe178e367b563f7fc88d5ef854e28cde9a3eff31f29e +size 1132 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_3.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_3.nbt index 8c332473..6070d39f 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/hallway_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d4a946cb7d5ca1bc896ce8ce3527f9eb22b7f7132ceae2f2019d1bd71f7ab5a -size 1059 +oid sha256:003da197c302481507b4907273236e730b21a817f2b4e15fb9e9f49339f1825d +size 1058 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/ominous_upper_arm_1.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/ominous_upper_arm_1.nbt index da06c5c2..c44d1f00 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/ominous_upper_arm_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/ominous_upper_arm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8604552a637e68b990f1b60dbb6f4381d1e8327fcab75c8b6cd25439979e721e -size 1344 +oid sha256:6c50ca8f6f7156c10282d2909a5c1e1c43851fc08562f465023bb3f3a624a228 +size 1343 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_1.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_1.nbt index ccaf3c34..0636d200 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0006e977b2e384bca5c81e69e38d8249144887cbb8d490df5e28cfa6fd01e345 +oid sha256:218daa2a6a80e18e84e88a82cd89e431e02ad339997aa908a155ad836b4980b7 size 3430 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_2.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_2.nbt index a91b24e6..e3c18e6b 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3651baed2163960c94f10c5034a49a219be48b4b92f04adc8d60853e0f00d8d7 +oid sha256:4404d43fe4afddf4c759ed387618d5f143fa3050cfbb7ff9df87e2867d4274bc size 3446 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_3.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_3.nbt index f89a8a5b..2653bd5c 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc1d29891aebeaeaa56d2704184e8c0b947ac86160094b1b249d3658ebdc7d6b +oid sha256:5d87e751c7f9a358847ad74d4615d06809245ed7bcdec0d418cb619fd9e442ac size 3436 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_4.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_4.nbt index fc4a5239..301c3697 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/quadrant_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56f6b1a481bba8b2bd370828a299b45fc88cc96d42287498e31c0fc329279e2d -size 4325 +oid sha256:57c923878104d4904522f6d416e003b8eeb9620ca40e55875f57b00b6d179ff2 +size 4324 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_1.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_1.nbt index 297784ac..355ecc39 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_1.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ccc58877453af69063d18d80f3af6daf7a8e9834cf91af8787ffad0949407b29 -size 1324 +oid sha256:080fce90e5890a3e3bf5547be3aeef4d18795b6f7c29c5c614ff3ba37d1ddc6e +size 1323 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_2.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_2.nbt index 47a48bdd..146b998a 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_2.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a314a75780cd6e6cbf66b77a920f1498b3b4a978198cc170722a9703d4b77c98 -size 1319 +oid sha256:03696e975b678764a4bbee3b7f0ed655c8471e807b32fb5b0500f6bb1a638a2e +size 1317 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_3.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_3.nbt index 672ae67c..4ea64538 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_3.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36774bd896acd4a3c1d16f78465f76c58ab0ca3b794b96d91dc65b97a842a691 -size 1453 +oid sha256:4acf38208483afb5d39c68d45ebfdd0e8b0e52e5df48a646caac8f4dab160a3a +size 1452 diff --git a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_4.nbt b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_4.nbt index 1bf72832..74fe0b5f 100644 --- a/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_4.nbt +++ b/data/minecraft/structure/trial_chambers/chamber/slanted/ramp_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45aecd47ba15e233549f7d0f50abbc0a7d45ff5c7ab27bec4a1909c0369fc6d8 -size 1232 +oid sha256:8f4eeacdee59b18ef6a2cdb189adc85d6f3670aea49a32bc220f3c31bf3df932 +size 1231 diff --git a/data/minecraft/structure/trial_chambers/chests/connectors/supply.nbt b/data/minecraft/structure/trial_chambers/chests/connectors/supply.nbt index a010e93a..1e9168ab 100644 --- a/data/minecraft/structure/trial_chambers/chests/connectors/supply.nbt +++ b/data/minecraft/structure/trial_chambers/chests/connectors/supply.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cfe6e4d268c3b06aa81910dc750b28cf0d66056ff0f0ec640693193f65bff13 -size 355 +oid sha256:76ea8fd1f99a05093dac9f9aef76e6e5a15a85f89f8011d598881db3c2c27fd2 +size 353 diff --git a/data/minecraft/structure/trial_chambers/chests/supply.nbt b/data/minecraft/structure/trial_chambers/chests/supply.nbt index 9f615ecc..992317bf 100644 --- a/data/minecraft/structure/trial_chambers/chests/supply.nbt +++ b/data/minecraft/structure/trial_chambers/chests/supply.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35b946182e5e73cb99aecc58f5f46512196d39ee95973c27029c00d411701563 -size 440 +oid sha256:8e183ff5afc830bfd05d379e7c5ee36a7cb32581c3f20ec962724e2939ca64ea +size 439 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/arrow_dispenser.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/arrow_dispenser.nbt index 91868bcd..a32b9895 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/arrow_dispenser.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/arrow_dispenser.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e4e1e59039c44e8b00d0b452905e8593ae3af2a10f14b08edfe6861ce009681 -size 835 +oid sha256:0aab918569a88f5c3a06f9be001e331504c59e9a6efe14e5463daea2e3da4e12 +size 834 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/bridge_lower.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/bridge_lower.nbt index 7edffaad..16fef995 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/bridge_lower.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/bridge_lower.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce89dc82e19f3454a4e8e1bda62bc2ba2f30e2dbd6574d458f3a0b47ce95af9c -size 698 +oid sha256:9d625b15e599d5a5455bc67aa00b3e55e9fcd91ffa70088c000077b8acd1d88c +size 697 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/chandelier_upper.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/chandelier_upper.nbt index dddd78f7..5c3ae103 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/chandelier_upper.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/chandelier_upper.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:baf91091db840b6c7c7056b75a2ccf2475a7d230ed73f0e706d02a3cd0240dc8 -size 514 +oid sha256:8e21b90305bc86eb03377d349ae146f3ed86e9c5fa264290ee66107c542ba05a +size 513 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/decoration_upper.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/decoration_upper.nbt index 40a3e187..6c8ff953 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/decoration_upper.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/decoration_upper.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:956e5b9276828c5f10007c4f640b34ff195c82e86a1d9920aab3c834123e6f92 -size 514 +oid sha256:1e4db64ace2d47d22eb8fc0cbb879122915fcfffe20c92e1a4b87d2c58c99d35 +size 513 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/display_1.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/display_1.nbt index 28086a56..fd3eccbf 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/display_1.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/display_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6088e35c792b8d4633da39bfd14fcb19af79e1a59879eafe5b02c137dcdb6fdb -size 901 +oid sha256:9593f50fbb70e98ef21d0de1930c3e0ea85657614a076e53c63cd64fffe86322 +size 900 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/display_2.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/display_2.nbt index 0613bcc0..7a927602 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/display_2.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/display_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48ac6450b4704a4915de3180640f976603628820bf9dd5a9d3bafbb92259e25d -size 1529 +oid sha256:84ff2fce9536da599cda74afcee27d94315fbc16af6dea60488640a98c780d8f +size 1527 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/display_3.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/display_3.nbt index 6776f088..8a1a9882 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/display_3.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/display_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aaefbd5838dc46a30d143e155034d18ad362b2158533d0ddca263706bfbf48f -size 812 +oid sha256:7e9bf1330610ac364be210164eb34e80d116bbf0c5d59182aa07f70dbeb758fe +size 811 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/head_upper.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/head_upper.nbt index a3332037..d4e0fb42 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/head_upper.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/head_upper.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac2c87aaa51d77868e0321305fba76db7effb07610cedca45a77b533deeec430 -size 526 +oid sha256:3e11f19cdb0c6f4e8a7a25bf64b3477bbaa4d696e2cd96c5793dde8c288eb829 +size 525 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/ladder_to_middle.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/ladder_to_middle.nbt index 70db7e86..dbe2384f 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/ladder_to_middle.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/ladder_to_middle.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:045b637e552cc24020218ebf65b64931440a760ccd2bab183cbcff2bed448752 -size 670 +oid sha256:e86702aae58329419e559d5d42bd46cfbad7d2ede401a2cfb2f2a79982a3a447 +size 669 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway.nbt index a2e65b9b..f292b784 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75bea836a6878bdfb1ac7ce6795225477cfcb4449129967dca92ead9e0471766 +oid sha256:ca832d03fa6d73c8a4b576f61877dd14e513750df37f5a9d398aded53a34f534 size 1160 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway_upper.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway_upper.nbt index 97862f05..d2baca1f 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway_upper.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/open_walkway_upper.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9018e8fcff164ec09de19474f4faa011faff6cc92ef067d231779d81e338685 -size 587 +oid sha256:9a4932bd32a0aa4ddcff1e9f91920c978c6c0dcf2a57b5f3d9cefc822b01b898 +size 586 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/reward_upper.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/reward_upper.nbt index 1ff44e10..55482d65 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/reward_upper.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/reward_upper.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a7558cc1c00763a09671fd6377f918ed2d8b65675670331529ddd18802b7a6c -size 590 +oid sha256:914bbadff2d2103765e81b9b3babc09fd4f6ddf513a4190a4dfcb9834a293bb0 +size 588 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/staircase.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/staircase.nbt index 515fedc5..e2741415 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/staircase.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/staircase.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e20f143c66ac23827878627032a83dddd32cec457cd80efdc6b8fd3a1295dabd -size 457 +oid sha256:99c9d81d53adaf09d2ea03ed1ffdd4f7e5519f11b4b60e99066a28f2f32d69a7 +size 456 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/wall.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/wall.nbt index 7fe910e2..568eca31 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/wall.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:239ca391d38a010318316075c079d1307d2dfc2f557fa1eea88509d305a82837 -size 909 +oid sha256:2978cd73a8b44fbbc6231846c984cf556b985898b9efa73a5ce7c37081105534 +size 908 diff --git a/data/minecraft/structure/trial_chambers/corridor/addon/walled_walkway.nbt b/data/minecraft/structure/trial_chambers/corridor/addon/walled_walkway.nbt index 360ab41e..d06ed164 100644 --- a/data/minecraft/structure/trial_chambers/corridor/addon/walled_walkway.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/addon/walled_walkway.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ac3b338c4d6a354576d2746f956beeafa42ac1ddb078654fc05182f23401751 +oid sha256:6aa9c75552e221604e450decb49f5ad57b9ae805d4f018bb8569e6b3c6a8e2b2 size 1186 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/bogged_relief.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/bogged_relief.nbt index 786eb9f9..a792d87c 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/bogged_relief.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/bogged_relief.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d19621a433c96f34863305a45f59cb7e6d9a507f98070625af301877a4a56d97 -size 3245 +oid sha256:3606d50be8c68d39b57b4ced601f39104c4d846253f06575303d394f310825cf +size 3244 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/breeze_relief.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/breeze_relief.nbt index 968ccc7a..45ae5510 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/breeze_relief.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/breeze_relief.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09cb1902b724305b0254755d5006d41c1c772c9a3d79d6082e4ea062093040bb -size 3224 +oid sha256:5cd78ab1785981dd07ca150cb5aedee8379dc59e6da39f881134d06005621a5b +size 3223 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_1.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_1.nbt index 81a0c1a0..7064fba7 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_1.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1bf0d832d4808a1e98c69702d33bd1b29986333f79372cd1a6ea471c921e2f7 -size 2884 +oid sha256:07d14d3854811f9ee9c576f40876279c648477ab0bfe87a0581810a1e64b4103 +size 2882 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_2.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_2.nbt index 1faf6b3d..15262d7e 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_2.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ab3f46658fbd2cfe416583d667b3207ac27e5a491d99e0b500d9605d0299a11 -size 2821 +oid sha256:12534449b4b226e2162f7b8df6a4019f740b9a69ae788220308eb704447a4ff4 +size 2819 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_3.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_3.nbt index 6860afc7..6bb2cdf2 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_3.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/grand_staircase_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9533eef3f81d34bec7184f25492c0e154afa2087abdefdf6b57aedd2aed96de1 -size 2831 +oid sha256:7e9acc19666189140bbdc2b8bab2cf7df32d47f7a947f079df33ae2a9bde5574 +size 2830 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/spider_relief.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/spider_relief.nbt index 6e00be5e..41b35413 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/spider_relief.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/spider_relief.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7009b43da1ae7a2c42247bd9046539c52f00122e99f44cd0a427858d4fa25928 -size 3849 +oid sha256:2e9a1659a988258928be51b0569ac5c5f7a6ebddb4455860422d3991202dc78d +size 3848 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium/spiral_relief.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium/spiral_relief.nbt index a826de5c..067ceeab 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium/spiral_relief.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium/spiral_relief.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85f5d958812395e1bc4d91bc67641c3ca5bf5b7f07268e84e616917e74511915 -size 3317 +oid sha256:69d0bde2fad0e59a53152962b82e8507d84078bc608692a626267b01eec3f3fd +size 3316 diff --git a/data/minecraft/structure/trial_chambers/corridor/atrium_1.nbt b/data/minecraft/structure/trial_chambers/corridor/atrium_1.nbt index fbbeb976..64dfa42e 100644 --- a/data/minecraft/structure/trial_chambers/corridor/atrium_1.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/atrium_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ab0a1b6d5f5eab3c54b4d8a4cb809b3e0ae1c360f92c1992765d038478f8606 -size 23427 +oid sha256:a56007d42848d65b0a42948e42c2e17b7f887561aa96393871b59821d09ad974 +size 23426 diff --git a/data/minecraft/structure/trial_chambers/corridor/end_1.nbt b/data/minecraft/structure/trial_chambers/corridor/end_1.nbt index 5465e814..a3e6e741 100644 --- a/data/minecraft/structure/trial_chambers/corridor/end_1.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/end_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de7302097274187e98fc56bba05001836e6ca66e6efb6244e520fcca10a194b8 -size 21446 +oid sha256:35eeab1a5dab93578c71324da48eef80e10774bdc2c9443fda5d2e465baee411 +size 21444 diff --git a/data/minecraft/structure/trial_chambers/corridor/end_2.nbt b/data/minecraft/structure/trial_chambers/corridor/end_2.nbt index 243c6da4..f6213236 100644 --- a/data/minecraft/structure/trial_chambers/corridor/end_2.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/end_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbf072dfdb7f27d119d0465d1fb0ff79d75e0e3901241be3b722a064effd7130 -size 21889 +oid sha256:8b4ec3464418a5cdafa73ead88a9b1540e19eefd055d151e8169c493f8e21842 +size 21888 diff --git a/data/minecraft/structure/trial_chambers/corridor/entrance_1.nbt b/data/minecraft/structure/trial_chambers/corridor/entrance_1.nbt index 284a6d3c..68579798 100644 --- a/data/minecraft/structure/trial_chambers/corridor/entrance_1.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/entrance_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3ea86f43ba4f25e7796d77c4b185f72c65cd4c590035d9ce7912c0cff6402c5 -size 22026 +oid sha256:34c391a4fd4eb1d7e23bf89afc5dfd53a262a5680fc5a166abbc2c7772652bca +size 22025 diff --git a/data/minecraft/structure/trial_chambers/corridor/entrance_2.nbt b/data/minecraft/structure/trial_chambers/corridor/entrance_2.nbt index 34677a04..376843bd 100644 --- a/data/minecraft/structure/trial_chambers/corridor/entrance_2.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/entrance_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79f1dc54d3cc05eef78c91b35e14e397472943c36b00aab367cf29280c0e1b95 -size 21600 +oid sha256:6d19455c9120f2b4b1f9ec27884f7c55cff48295e46aa0de35a84c5ee4fbd484 +size 21599 diff --git a/data/minecraft/structure/trial_chambers/corridor/entrance_3.nbt b/data/minecraft/structure/trial_chambers/corridor/entrance_3.nbt index 6ab418c8..56e76c7c 100644 --- a/data/minecraft/structure/trial_chambers/corridor/entrance_3.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/entrance_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b98fc7e0409d5890fa23d293c85525a25d12fd15c8ac7094bbea9400ae9f361 -size 24031 +oid sha256:45050af6c018d9d9a970bd7aece74d8534fd56cb476d7578af659cbb039ecf82 +size 24029 diff --git a/data/minecraft/structure/trial_chambers/corridor/first_plate.nbt b/data/minecraft/structure/trial_chambers/corridor/first_plate.nbt index 3f89cac4..d4a0376a 100644 --- a/data/minecraft/structure/trial_chambers/corridor/first_plate.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/first_plate.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6bcb0c0aec28bb3a4b1a72724e137de2e4bceae6338ecbeb2264d8d9d07cea6 -size 1473 +oid sha256:df9877ab36499b136425e6ac4a2a99817c51f09dae2ae501b828eb9685263b86 +size 1472 diff --git a/data/minecraft/structure/trial_chambers/corridor/second_plate.nbt b/data/minecraft/structure/trial_chambers/corridor/second_plate.nbt index cd2dda31..9b967ef7 100644 --- a/data/minecraft/structure/trial_chambers/corridor/second_plate.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/second_plate.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47829112873a71008858043117617127052b307fbba0ab2ad5c28aba7963df13 -size 1478 +oid sha256:d39ba6b5c594dbd3df1049bc0932f0aa43a5a54135bf3ea6953b9367169b11a1 +size 1477 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_1.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_1.nbt index 214809b4..3e84d046 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_1.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f4de5bf2a3b66c0bba342d7e63f1a833e1032f4cd90183c62b61a0d83fc3d71 -size 5672 +oid sha256:9226b03bd48e05c0e5735e8789e3012350b8ceebce12498c7f0200c2e40dd6de +size 5671 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_2.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_2.nbt index d58d4d8c..cf4e5a97 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_2.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c47034a17a944c24ff6872c7ad5a91717bc01c3d7e04383d5f26258be528602 -size 5848 +oid sha256:0a0266c13d5f857772379621c57b4973639c42137f9f68600d6772701a606564 +size 5847 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_3.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_3.nbt index 719db7f9..14ed0c40 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_3.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fc09078c53cf9ed9b8c9668bb38e3c4d0e436fd05387975c37863235b1bca55 -size 5821 +oid sha256:93192f41ac2397aa5cd3abc7d624373f857240974de1dbeafa67e3815b418aa7 +size 5820 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_4.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_4.nbt index 67d29c45..4021f7ef 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_4.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3da10c3baf36506b2bfdd5f3f9e97d32751bccc748fd687df70f21d7d5d338b0 -size 5815 +oid sha256:8ab834d41e603f7f2ec4d2f2afea22479a5e1c14346b6f9d465cf02a208fbffd +size 5814 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_5.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_5.nbt index 87039013..79d3c581 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_5.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fb02a793cc0b2db59ab497eb717298d488cc02450c4af7b4e607a2631908c4d -size 5822 +oid sha256:f27b3bcad1f27bfe75a20cc4091ecd1f8a9436b47d959ceda9325f659501eb56 +size 5821 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_6.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_6.nbt index 96168951..b6d7322c 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_6.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25b9d258cb44d6e59ad3cd816adc3bfac02291f6c6a1c3e403fcbc57e760a840 -size 5788 +oid sha256:54e7fd93a852d8f311dc82c983f604097ecbb09f846ffaa4aa2dab16997426e8 +size 5786 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_7.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_7.nbt index cac0d903..53aeda4f 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_7.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:699aac5dcb4cb0bc40f3058d9c064b2691861fb32a5385085d9a6b7e7c5fc4fb -size 5777 +oid sha256:8e228fa24dea585a5b54eb9ef0729f98917e2ab7093de928c33fafdd75fa4b03 +size 5776 diff --git a/data/minecraft/structure/trial_chambers/corridor/straight_8.nbt b/data/minecraft/structure/trial_chambers/corridor/straight_8.nbt index fa2f4636..e8cd2c44 100644 --- a/data/minecraft/structure/trial_chambers/corridor/straight_8.nbt +++ b/data/minecraft/structure/trial_chambers/corridor/straight_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d788ee3adf237dd5e3e9ca80ab249e591ca2f4e28198813008bb9eb260c3c03 -size 5562 +oid sha256:9e86533843abc08943e3a0703207d66ba88865fac5cc972973fa7535af7c1f3f +size 5561 diff --git a/data/minecraft/structure/trial_chambers/decor/barrel.nbt b/data/minecraft/structure/trial_chambers/decor/barrel.nbt index 7dee7a3e..d3287ced 100644 --- a/data/minecraft/structure/trial_chambers/decor/barrel.nbt +++ b/data/minecraft/structure/trial_chambers/decor/barrel.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f02f40bb49bbc5b63eb7399221be793cd705274aba04ec66c38429cf2fe3034 -size 337 +oid sha256:6c84f20e1c07e60a4076a162be66fe36591d6fee9ce07a16fa4b5b34d6d87ac4 +size 336 diff --git a/data/minecraft/structure/trial_chambers/decor/black_bed.nbt b/data/minecraft/structure/trial_chambers/decor/black_bed.nbt index db1b9500..95bac085 100644 --- a/data/minecraft/structure/trial_chambers/decor/black_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/black_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2554e0973060b623405d00c323569a0ecd7a0fc0e7ddbd6fa7f8fd16f543692b -size 327 +oid sha256:ba2ad39c06f8c997d455b21974d3e03ef9f6d6f5979a9c4f60c06e540d325b2c +size 326 diff --git a/data/minecraft/structure/trial_chambers/decor/blue_bed.nbt b/data/minecraft/structure/trial_chambers/decor/blue_bed.nbt index da285d80..cdc2a8f9 100644 --- a/data/minecraft/structure/trial_chambers/decor/blue_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/blue_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fa4d8cd52524fbaa1efa184db2112bd9e26b0bd3438b15651b786dcd57d3e76 -size 325 +oid sha256:134a2cdb188b6fecd931b9c6307e9cfdacb7778640abb4fc08dc56b55c3e4056 +size 324 diff --git a/data/minecraft/structure/trial_chambers/decor/brown_bed.nbt b/data/minecraft/structure/trial_chambers/decor/brown_bed.nbt index c83e07cf..667dfbd6 100644 --- a/data/minecraft/structure/trial_chambers/decor/brown_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/brown_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39c7e148e6c939c7dfed9428ad15890ffc507f143fe36dbdbd0b90e41ed0d323 -size 327 +oid sha256:a58bc20380b2448b87bdf454b6fd72d2951336606b2a80996521cacc9acbb805 +size 326 diff --git a/data/minecraft/structure/trial_chambers/decor/candle_1.nbt b/data/minecraft/structure/trial_chambers/decor/candle_1.nbt index 71132e21..de0cd329 100644 --- a/data/minecraft/structure/trial_chambers/decor/candle_1.nbt +++ b/data/minecraft/structure/trial_chambers/decor/candle_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66658e01fbc8a9269fbc29bec2bfcdbfb3deadaadd01cc942d55e24d1942a04b -size 307 +oid sha256:c594c6a03c7714c16439e9c4270b1295a558de7a1da1ed17d012982a6b348cbf +size 306 diff --git a/data/minecraft/structure/trial_chambers/decor/candle_2.nbt b/data/minecraft/structure/trial_chambers/decor/candle_2.nbt index 9787c6cd..479e3ce0 100644 --- a/data/minecraft/structure/trial_chambers/decor/candle_2.nbt +++ b/data/minecraft/structure/trial_chambers/decor/candle_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74ace71130521564b4de11085ba6218f392abbd686e5e027bc99061ac87663f4 -size 307 +oid sha256:3794202dfe71e5506b12ed8fb7270e24596de1ec8152c80c67d63179206271f5 +size 306 diff --git a/data/minecraft/structure/trial_chambers/decor/candle_3.nbt b/data/minecraft/structure/trial_chambers/decor/candle_3.nbt index 19fa8f2c..2740e5b5 100644 --- a/data/minecraft/structure/trial_chambers/decor/candle_3.nbt +++ b/data/minecraft/structure/trial_chambers/decor/candle_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80b4c9847da490d93b299f23737495857db9ab3476be0d9e57b355bfda9ac58d -size 307 +oid sha256:f3c428088703bf29eedecbb230276d8286b42764ae094c91193c634dd4322d97 +size 306 diff --git a/data/minecraft/structure/trial_chambers/decor/candle_4.nbt b/data/minecraft/structure/trial_chambers/decor/candle_4.nbt index e619963c..72795ce8 100644 --- a/data/minecraft/structure/trial_chambers/decor/candle_4.nbt +++ b/data/minecraft/structure/trial_chambers/decor/candle_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:330381b33122114dcdaa591a1e31b9bccbe69039eb58acea947595e4678cf5bd -size 307 +oid sha256:391fc7d99518c6ee5203051a8058655de3b845007c6e6e142766c61197ba6f56 +size 306 diff --git a/data/minecraft/structure/trial_chambers/decor/cyan_bed.nbt b/data/minecraft/structure/trial_chambers/decor/cyan_bed.nbt index 9b7431bb..60f7d251 100644 --- a/data/minecraft/structure/trial_chambers/decor/cyan_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/cyan_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8df5a4036da9ed3cb7a6005d6992bc8ec28862a5162276e75e9ab6e1c3463398 -size 325 +oid sha256:fe49d8aa80015e2028149bb5e8ddf0cf8fdf413a360e27ed2cc54a4520f161b3 +size 324 diff --git a/data/minecraft/structure/trial_chambers/decor/dead_bush_pot.nbt b/data/minecraft/structure/trial_chambers/decor/dead_bush_pot.nbt index 1ea73786..3022c6d5 100644 --- a/data/minecraft/structure/trial_chambers/decor/dead_bush_pot.nbt +++ b/data/minecraft/structure/trial_chambers/decor/dead_bush_pot.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c87d702839a06526efef9ab5f4e619f5a78a43a0d60e6717e48227adb9a7761 -size 290 +oid sha256:986b4ab6ccb2f9a63c3556cd52c8cd435ab0b348396056d10f1561a31f2e0e41 +size 289 diff --git a/data/minecraft/structure/trial_chambers/decor/disposal.nbt b/data/minecraft/structure/trial_chambers/decor/disposal.nbt index b2e1aa3e..b2505ff9 100644 --- a/data/minecraft/structure/trial_chambers/decor/disposal.nbt +++ b/data/minecraft/structure/trial_chambers/decor/disposal.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af065f22bd951688bee153625eefdd7c813bc88ce957af6cbe9425d734d88eb0 -size 516 +oid sha256:7adf7f2bde4d6999b094f6c6c1a6436bda6bf48c31e4ba2d8e6ae28b0d71cb37 +size 515 diff --git a/data/minecraft/structure/trial_chambers/decor/empty_pot.nbt b/data/minecraft/structure/trial_chambers/decor/empty_pot.nbt index 5eb8ac77..4facf0aa 100644 --- a/data/minecraft/structure/trial_chambers/decor/empty_pot.nbt +++ b/data/minecraft/structure/trial_chambers/decor/empty_pot.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b686dae0eee9ee5f7f7b61736525274a5d2eb52af456f7219409cd44f32dc61 -size 286 +oid sha256:cd1e48c125529bf5f35affa2c846370679914258e49411f9b52b6668fc71a234 +size 285 diff --git a/data/minecraft/structure/trial_chambers/decor/flow_pot.nbt b/data/minecraft/structure/trial_chambers/decor/flow_pot.nbt index f4c65f6c..8f9f2cfe 100644 --- a/data/minecraft/structure/trial_chambers/decor/flow_pot.nbt +++ b/data/minecraft/structure/trial_chambers/decor/flow_pot.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4424603c3596425a401c0f718df1ca6b8d00dcda0ea272ea387fce34d3dd15f8 -size 388 +oid sha256:52c60be51f30576aabd71ac539d20622fceaf528dff58a3a73bd2142c948e3e4 +size 387 diff --git a/data/minecraft/structure/trial_chambers/decor/gray_bed.nbt b/data/minecraft/structure/trial_chambers/decor/gray_bed.nbt index 9d9826ff..41c70cd5 100644 --- a/data/minecraft/structure/trial_chambers/decor/gray_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/gray_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f095218a65d4e623cbd817e5f3f6dabc6374fd8da5efd1f031f6f3d4144afd80 -size 326 +oid sha256:655d90ffee833f508e11f467cddfae92130a740d5a07197dfdde3db516d0364a +size 325 diff --git a/data/minecraft/structure/trial_chambers/decor/green_bed.nbt b/data/minecraft/structure/trial_chambers/decor/green_bed.nbt index 40108450..58223893 100644 --- a/data/minecraft/structure/trial_chambers/decor/green_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/green_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93c09682c390f6ee84c3f5263876862ddc16891aab0cba00c3c57a7d97f68def -size 327 +oid sha256:dc8a1124f1f323273b7435c54d1e6f759833a77fe13acd86016ce5e2c85f2faf +size 325 diff --git a/data/minecraft/structure/trial_chambers/decor/guster_pot.nbt b/data/minecraft/structure/trial_chambers/decor/guster_pot.nbt index 5d024e36..212fca50 100644 --- a/data/minecraft/structure/trial_chambers/decor/guster_pot.nbt +++ b/data/minecraft/structure/trial_chambers/decor/guster_pot.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e569438c83f915f3484d6a2951246ca9e59fd039e1a69cc4d3139bbe1201a284 -size 385 +oid sha256:db8ff1a02e34446a6865bfcdf942bd0348231665a9b43344b8e1b1220073c7f5 +size 384 diff --git a/data/minecraft/structure/trial_chambers/decor/light_blue_bed.nbt b/data/minecraft/structure/trial_chambers/decor/light_blue_bed.nbt index 8101ac47..c553aacf 100644 --- a/data/minecraft/structure/trial_chambers/decor/light_blue_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/light_blue_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5970190a82f2670626ea79555d88206aab23327ad1c01d22d149c3756503184 -size 331 +oid sha256:a4f203b3efee3af7a7b99cb3732ed37a9205f8760533aea99dfd43977a0ac7cc +size 330 diff --git a/data/minecraft/structure/trial_chambers/decor/light_gray_bed.nbt b/data/minecraft/structure/trial_chambers/decor/light_gray_bed.nbt index 04e7d7c4..4448a1f1 100644 --- a/data/minecraft/structure/trial_chambers/decor/light_gray_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/light_gray_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3cdfd195075acb8f90f4c0a6d47c93efcb14c4b358341afb65e4bccb54c648a -size 331 +oid sha256:0c84b6bf8ed962b6a593b06169d91a6d8798a6edb3921e84979fd8470eb2bb05 +size 330 diff --git a/data/minecraft/structure/trial_chambers/decor/lime_bed.nbt b/data/minecraft/structure/trial_chambers/decor/lime_bed.nbt index f1e0b59b..a5e129d6 100644 --- a/data/minecraft/structure/trial_chambers/decor/lime_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/lime_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1e2a2c7c87cd746d315eba9d072b2accaa238aaef26cbd469ac6d7aa6745016 -size 325 +oid sha256:9eaa53fd9812f6dfe7fdaadae0546b4f3bf6f361324d17f9c608a4436d10092f +size 324 diff --git a/data/minecraft/structure/trial_chambers/decor/magenta_bed.nbt b/data/minecraft/structure/trial_chambers/decor/magenta_bed.nbt index a38c1c6f..a42447fa 100644 --- a/data/minecraft/structure/trial_chambers/decor/magenta_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/magenta_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe66563f9ce85e3092c0a2e6eccb01d6513e871bbdef18f6c0d6331c89f05f6b -size 328 +oid sha256:1f8a0981c75ef8c26b1ce5b5c5f5af113dde040ddcc055a28c4f837297d4fc0e +size 327 diff --git a/data/minecraft/structure/trial_chambers/decor/orange_bed.nbt b/data/minecraft/structure/trial_chambers/decor/orange_bed.nbt index dceb6608..66be88cf 100644 --- a/data/minecraft/structure/trial_chambers/decor/orange_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/orange_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4494f04c54d320f880799023d448d856a2ae4f2c6c0360fcc713c9cda9ed6c4e -size 328 +oid sha256:78a18bba7fc7a641ed2dbd19282ce90872f19b42c263ee685e2d14cf507333b3 +size 326 diff --git a/data/minecraft/structure/trial_chambers/decor/pink_bed.nbt b/data/minecraft/structure/trial_chambers/decor/pink_bed.nbt index 69ded993..c220c4d4 100644 --- a/data/minecraft/structure/trial_chambers/decor/pink_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/pink_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acaeb8fec3073d04332ec1703743a916e8858939d907b58c94c44ea14fc954a2 -size 325 +oid sha256:2388183c05d70be445e2ae17f7b95fdc527fa359145e59406bba6fbb3cfbad3b +size 324 diff --git a/data/minecraft/structure/trial_chambers/decor/purple_bed.nbt b/data/minecraft/structure/trial_chambers/decor/purple_bed.nbt index f3b838d6..5c6f1ae3 100644 --- a/data/minecraft/structure/trial_chambers/decor/purple_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/purple_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d59c396cc9794352e88ddef846ff6923c08ed1bf3db98c37e3b421f72ea431e8 -size 328 +oid sha256:0031b578cd801868af11d3755ba0fc8984c08f38673b55aea1a56a0977cf62d0 +size 326 diff --git a/data/minecraft/structure/trial_chambers/decor/red_bed.nbt b/data/minecraft/structure/trial_chambers/decor/red_bed.nbt index b796d416..e5cc468f 100644 --- a/data/minecraft/structure/trial_chambers/decor/red_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/red_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88a4259ffad60db289b71e25a2048151c1891b2b84a5ecd2d46dc4f23ddf8c54 -size 324 +oid sha256:40861b8fed096079815f97f5e70639ff1e6ca2843f6427bb5c8c777e66d4692f +size 323 diff --git a/data/minecraft/structure/trial_chambers/decor/scrape_pot.nbt b/data/minecraft/structure/trial_chambers/decor/scrape_pot.nbt index 2c45a380..e84a7eae 100644 --- a/data/minecraft/structure/trial_chambers/decor/scrape_pot.nbt +++ b/data/minecraft/structure/trial_chambers/decor/scrape_pot.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:533118846448e63a3419052e4bc1d1486d8f3be99062ce6e18be21bd42db1eca -size 384 +oid sha256:ad441dcee897e063be2146430d11d62e29393f1fd2cf395bd75b4de401c844c2 +size 383 diff --git a/data/minecraft/structure/trial_chambers/decor/undecorated_pot.nbt b/data/minecraft/structure/trial_chambers/decor/undecorated_pot.nbt index 131cc587..588ae6fd 100644 --- a/data/minecraft/structure/trial_chambers/decor/undecorated_pot.nbt +++ b/data/minecraft/structure/trial_chambers/decor/undecorated_pot.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b52d2cf3b5b0d6dd1dc66f1a63438e4b45230e3b9f8fdc913253f90ffab7f7b -size 353 +oid sha256:c36fb70123b0f283c8c8db07bbf2bc2eb48a9786f1325e034710183d867d77a6 +size 352 diff --git a/data/minecraft/structure/trial_chambers/decor/white_bed.nbt b/data/minecraft/structure/trial_chambers/decor/white_bed.nbt index 9fdafc66..abe9238b 100644 --- a/data/minecraft/structure/trial_chambers/decor/white_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/white_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21311ccd1dc6c59f4c7c41af9715c7fca2eba0807f39e3d330b8c7ca6fa9ba43 -size 327 +oid sha256:1ea4f5ef34487175a1f5dfbe21dbbbc93224877975c19e1674ee4931d6cf64db +size 326 diff --git a/data/minecraft/structure/trial_chambers/decor/yellow_bed.nbt b/data/minecraft/structure/trial_chambers/decor/yellow_bed.nbt index c66d0387..437ed3dd 100644 --- a/data/minecraft/structure/trial_chambers/decor/yellow_bed.nbt +++ b/data/minecraft/structure/trial_chambers/decor/yellow_bed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14043ae10b594f2cbadccf75a428aa8512790fca3bc31819c36a7bd4865cdf39 -size 328 +oid sha256:d487ae0e35d7938f829eec3080743c40de8e7d65aca8fda21b177096168969c2 +size 327 diff --git a/data/minecraft/structure/trial_chambers/dispensers/chamber.nbt b/data/minecraft/structure/trial_chambers/dispensers/chamber.nbt index 67c13100..f7d75c01 100644 --- a/data/minecraft/structure/trial_chambers/dispensers/chamber.nbt +++ b/data/minecraft/structure/trial_chambers/dispensers/chamber.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4cf5141966ee0730cc625655c1124eecfac244c591de7bfd303beedc8b51cfe5 -size 384 +oid sha256:9ee0f0e06c260cd2d831bbb343421c5ea46f74e5a8ee741a6eb28f81de5ad11c +size 383 diff --git a/data/minecraft/structure/trial_chambers/dispensers/floor_dispenser.nbt b/data/minecraft/structure/trial_chambers/dispensers/floor_dispenser.nbt index 0b244761..a1ac23e4 100644 --- a/data/minecraft/structure/trial_chambers/dispensers/floor_dispenser.nbt +++ b/data/minecraft/structure/trial_chambers/dispensers/floor_dispenser.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89a0522c5d6bec0881324d104560aefbe6524ac43e3cf622ac2acf51648815c1 -size 358 +oid sha256:06b9a9c98cda3b2f719b9677bff458ac6f06afa202c82ffedb2f335e6974e5d1 +size 357 diff --git a/data/minecraft/structure/trial_chambers/dispensers/wall_dispenser.nbt b/data/minecraft/structure/trial_chambers/dispensers/wall_dispenser.nbt index 544fc773..727266b5 100644 --- a/data/minecraft/structure/trial_chambers/dispensers/wall_dispenser.nbt +++ b/data/minecraft/structure/trial_chambers/dispensers/wall_dispenser.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa2fd4a7d59f39195b79307556a216c9d4b3baadb74a8e52004c666ece55a3b7 -size 414 +oid sha256:05e22fe0af0ce2b25e3deae206a91bec085f9ad2163672b352fcfc523da6b84a +size 413 diff --git a/data/minecraft/structure/trial_chambers/hallway/cache_1.nbt b/data/minecraft/structure/trial_chambers/hallway/cache_1.nbt index 41d8256e..3adee67b 100644 --- a/data/minecraft/structure/trial_chambers/hallway/cache_1.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/cache_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1e89f645289a1230f896f76b02f3f9f70b1eb434788fb122fd1f5ae63faab17 -size 2709 +oid sha256:6cbd3cab4a292df339e2afc2e752555b95aea9c1586b7442eb2dfd3a68efbfb8 +size 2708 diff --git a/data/minecraft/structure/trial_chambers/hallway/corner_staircase.nbt b/data/minecraft/structure/trial_chambers/hallway/corner_staircase.nbt index 2e632fa3..b1919fe5 100644 --- a/data/minecraft/structure/trial_chambers/hallway/corner_staircase.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/corner_staircase.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c235c7436a03797059027f430ca3987c365b8da93a65140c3c66ac16c6bd3c7 -size 1435 +oid sha256:06da249f420992d39983717de641a2b04ac6b5d1c6f01ba31bbf5ad8b3cf1ba0 +size 1434 diff --git a/data/minecraft/structure/trial_chambers/hallway/corner_staircase_down.nbt b/data/minecraft/structure/trial_chambers/hallway/corner_staircase_down.nbt index 672441b3..5104a277 100644 --- a/data/minecraft/structure/trial_chambers/hallway/corner_staircase_down.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/corner_staircase_down.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61d7b52a6f3f5b5015faa82d439f108ed12ce6389f501435df31c036994b49c6 -size 1438 +oid sha256:4dea9f83c5c3bdd0896eb0a185931f6086c469beb37d00b707166e4c954e47f1 +size 1437 diff --git a/data/minecraft/structure/trial_chambers/hallway/corridor_connector_1.nbt b/data/minecraft/structure/trial_chambers/hallway/corridor_connector_1.nbt index c86bb76a..286e8d14 100644 --- a/data/minecraft/structure/trial_chambers/hallway/corridor_connector_1.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/corridor_connector_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd18cad0204fe772b62f752041e0bb086798edd4fee37e44ead8b7abadbc6943 -size 689 +oid sha256:0e602bddf92a970bf71b38210d3dc86b85060cfd52a7558894ee35d35ee2d92a +size 688 diff --git a/data/minecraft/structure/trial_chambers/hallway/encounter_1.nbt b/data/minecraft/structure/trial_chambers/hallway/encounter_1.nbt index af9ea41b..2348ede2 100644 --- a/data/minecraft/structure/trial_chambers/hallway/encounter_1.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/encounter_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f1b003a9f15d3c74ae8b13ef807c37bd9c85b0338685f539a50589fe1eac73f -size 7351 +oid sha256:092db73b5978422ed758f2e11b74f1a959a0ad910102f336c40aa63b81bec119 +size 7350 diff --git a/data/minecraft/structure/trial_chambers/hallway/encounter_2.nbt b/data/minecraft/structure/trial_chambers/hallway/encounter_2.nbt index b34016d0..f37a946a 100644 --- a/data/minecraft/structure/trial_chambers/hallway/encounter_2.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/encounter_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd179efbabd12a7b8b7262bdcd30c882fc7ff4e7182e11dd9b9184c9f5bcbad8 -size 6705 +oid sha256:2f26dad19d24419a84f468d47615d344335d53b6fdfbfadd4421061b2f5c05e1 +size 6704 diff --git a/data/minecraft/structure/trial_chambers/hallway/encounter_3.nbt b/data/minecraft/structure/trial_chambers/hallway/encounter_3.nbt index abfe86a9..a01c04ce 100644 --- a/data/minecraft/structure/trial_chambers/hallway/encounter_3.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/encounter_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e62bca308656b4d1b8262cf15f36e427f6164993ed775e47279b9ec632edf38 +oid sha256:1f0f90490297c69b66201f005741a5c9597064000ab981351a3db741f55462c9 size 5627 diff --git a/data/minecraft/structure/trial_chambers/hallway/encounter_4.nbt b/data/minecraft/structure/trial_chambers/hallway/encounter_4.nbt index 187b254d..e946e179 100644 --- a/data/minecraft/structure/trial_chambers/hallway/encounter_4.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/encounter_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d11fb3211e39a7958e9aa4872dfc719881d187c8fffaf479b4ac8e92e13586b -size 17907 +oid sha256:37f4153f3548cc324aabeb5711baa1ad0057a80c945de0452768f25d7eac96c0 +size 17905 diff --git a/data/minecraft/structure/trial_chambers/hallway/encounter_5.nbt b/data/minecraft/structure/trial_chambers/hallway/encounter_5.nbt index 073b39fd..2d8ac7ae 100644 --- a/data/minecraft/structure/trial_chambers/hallway/encounter_5.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/encounter_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c57795732d57ce9b2f7766e4d4e246b3f0c6e0882afac1c0462b44f7fd00306e -size 14324 +oid sha256:1689f1cb5e023f41f6d3b62d1e43aca9a8179253bcbb06af4210d55589892f46 +size 14322 diff --git a/data/minecraft/structure/trial_chambers/hallway/left_corner.nbt b/data/minecraft/structure/trial_chambers/hallway/left_corner.nbt index 4f4d7427..b29363ac 100644 --- a/data/minecraft/structure/trial_chambers/hallway/left_corner.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/left_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:548f95915fca58c742627324b349861edd2004f35f36c1d99e4e8d8c164b193c -size 938 +oid sha256:ce8aca30cf58366ad23ae4ab59164de46ab5a9427c0c30032c5fa331864913e7 +size 937 diff --git a/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase.nbt b/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase.nbt index f83c09a4..6ddc194f 100644 --- a/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a96c411f9a83d0e8b4ca490abe953cf75af369d87647195d4f2f22bf668bf895 -size 2593 +oid sha256:64b5406927bee843ec0d460d08c0e8fbd2284fcd3ac46cbb8bf3699aa0ba2fbb +size 2592 diff --git a/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase_down.nbt b/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase_down.nbt index da844d75..fc6149c0 100644 --- a/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase_down.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/long_straight_staircase_down.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7df106d9c8f66eb9806be998cbb30f82c71ef3808ccab9034d023fad4b5aa381 -size 2594 +oid sha256:b916919b7d3806022aef0d6709ff4ad25dd1e3b6cfb732aedeb9a92ae6ed5e4b +size 2593 diff --git a/data/minecraft/structure/trial_chambers/hallway/lower_hallway_connector.nbt b/data/minecraft/structure/trial_chambers/hallway/lower_hallway_connector.nbt index da037fd0..8ccae0c1 100644 --- a/data/minecraft/structure/trial_chambers/hallway/lower_hallway_connector.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/lower_hallway_connector.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:357c0e5adcfabeeb57c98418d3fb56d726747a679b69ffc36ec1f7bc46065254 -size 3186 +oid sha256:bcf1526688878d9745ebd09877254647c2d13b718bb2e8118bd531f31414dce0 +size 3185 diff --git a/data/minecraft/structure/trial_chambers/hallway/right_corner.nbt b/data/minecraft/structure/trial_chambers/hallway/right_corner.nbt index 666998c4..e45fd15f 100644 --- a/data/minecraft/structure/trial_chambers/hallway/right_corner.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/right_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f95e844794b6ed63ce7dbc21a90809b1ddd739e8760d938873b8d16dc48e60ef -size 945 +oid sha256:288bf37213abfc19bbba6517b128693b00d35b7f79780e2c5b58540ad032c70b +size 944 diff --git a/data/minecraft/structure/trial_chambers/hallway/rubble.nbt b/data/minecraft/structure/trial_chambers/hallway/rubble.nbt index 02609699..a54757cd 100644 --- a/data/minecraft/structure/trial_chambers/hallway/rubble.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/rubble.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84c57c3f754a128c32069ec8a735a21998dd03ac0f117c6ea4f7d45643e1865c -size 936 +oid sha256:90b189d53bf7af460df48cbe3e198134ae2bd4c3e3b77ff3f18c6c854b278c51 +size 935 diff --git a/data/minecraft/structure/trial_chambers/hallway/rubble_chamber.nbt b/data/minecraft/structure/trial_chambers/hallway/rubble_chamber.nbt index 3aa72a11..74cc80fb 100644 --- a/data/minecraft/structure/trial_chambers/hallway/rubble_chamber.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/rubble_chamber.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3453393b0098b3f804c146b5581432708f795ce551946a6aaf912b915c94e2f -size 926 +oid sha256:fa8c2b266217a5e0be084aa475572964703cba7e54dcbd30ccfdfc82136025dd +size 925 diff --git a/data/minecraft/structure/trial_chambers/hallway/rubble_chamber_thin.nbt b/data/minecraft/structure/trial_chambers/hallway/rubble_chamber_thin.nbt index 265a25a3..5f29615e 100644 --- a/data/minecraft/structure/trial_chambers/hallway/rubble_chamber_thin.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/rubble_chamber_thin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00cf0af319aeb4318490d6a428c2e5d595761d1296b2ea54ba799cf4ddc8d061 -size 471 +oid sha256:24459ff96a1f0f2f915d7e95760cfc429fb09f97cc605d489bb3f0fe377c434b +size 470 diff --git a/data/minecraft/structure/trial_chambers/hallway/rubble_thin.nbt b/data/minecraft/structure/trial_chambers/hallway/rubble_thin.nbt index 265a25a3..5f29615e 100644 --- a/data/minecraft/structure/trial_chambers/hallway/rubble_thin.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/rubble_thin.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00cf0af319aeb4318490d6a428c2e5d595761d1296b2ea54ba799cf4ddc8d061 -size 471 +oid sha256:24459ff96a1f0f2f915d7e95760cfc429fb09f97cc605d489bb3f0fe377c434b +size 470 diff --git a/data/minecraft/structure/trial_chambers/hallway/straight.nbt b/data/minecraft/structure/trial_chambers/hallway/straight.nbt index 85fdeba8..9174ef01 100644 --- a/data/minecraft/structure/trial_chambers/hallway/straight.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/straight.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bc4ed23257213e513dec11c50a69de921b489c5ca2d2a129c7e9df9743595d9 -size 932 +oid sha256:948c79aa92ced975e6cf23438330f0a1805ca2b948790c39573ac1f6332eb00b +size 931 diff --git a/data/minecraft/structure/trial_chambers/hallway/straight_staircase.nbt b/data/minecraft/structure/trial_chambers/hallway/straight_staircase.nbt index 7b3f6b45..813eb0b5 100644 --- a/data/minecraft/structure/trial_chambers/hallway/straight_staircase.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/straight_staircase.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2699f0db7c72e0b949908f588103c086046235a811f8b2be6108d5e4cf44780 -size 1178 +oid sha256:d2b9952d0f8615da6a649ff2d49c66ade889729e38df4638c11cad15f43b6226 +size 1177 diff --git a/data/minecraft/structure/trial_chambers/hallway/straight_staircase_down.nbt b/data/minecraft/structure/trial_chambers/hallway/straight_staircase_down.nbt index f1eea195..f0b190c0 100644 --- a/data/minecraft/structure/trial_chambers/hallway/straight_staircase_down.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/straight_staircase_down.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7aef3c4518923b2b7edef1f42dbca39026305bbaf3e673a9e32be2854005ab0f -size 1177 +oid sha256:d31bc7f63dd2a285ef87af41cebe3a4fc255f046a3844ea430db3474864094f5 +size 1176 diff --git a/data/minecraft/structure/trial_chambers/hallway/trapped_staircase.nbt b/data/minecraft/structure/trial_chambers/hallway/trapped_staircase.nbt index 32494199..480bfab1 100644 --- a/data/minecraft/structure/trial_chambers/hallway/trapped_staircase.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/trapped_staircase.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e37faf3969177e637b1a0f90b7f1cbaec75b551e90a6d4a8a76a8111a96e727 -size 3613 +oid sha256:7708efb7b32cc7b90c0040513461904d3cba0b521f788c11c0db8208f2edc087 +size 3612 diff --git a/data/minecraft/structure/trial_chambers/hallway/upper_hallway_connector.nbt b/data/minecraft/structure/trial_chambers/hallway/upper_hallway_connector.nbt index 551d234a..83be7ec3 100644 --- a/data/minecraft/structure/trial_chambers/hallway/upper_hallway_connector.nbt +++ b/data/minecraft/structure/trial_chambers/hallway/upper_hallway_connector.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ab22df4c27ef7ca5065670aca063956037a13b4e2e6fc0d6e2c30f3e1ca6da8 -size 2700 +oid sha256:f48972763bce409fcf8cdafb951a703c865ca4e1a2cd5706c118e473a6ef64dd +size 2699 diff --git a/data/minecraft/structure/trial_chambers/intersection/intersection_1.nbt b/data/minecraft/structure/trial_chambers/intersection/intersection_1.nbt index 3854094d..fc3c4c68 100644 --- a/data/minecraft/structure/trial_chambers/intersection/intersection_1.nbt +++ b/data/minecraft/structure/trial_chambers/intersection/intersection_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e9ce757164c0e4da60d15d32193c56a72724127742d783e6bc5cdcfba8bc046 -size 29422 +oid sha256:7b0d6a898944994e3d75bed2a4355b3e22fdad20b1bdaf83e79224f3ba2457cf +size 29421 diff --git a/data/minecraft/structure/trial_chambers/intersection/intersection_2.nbt b/data/minecraft/structure/trial_chambers/intersection/intersection_2.nbt index 68413aa1..469a4908 100644 --- a/data/minecraft/structure/trial_chambers/intersection/intersection_2.nbt +++ b/data/minecraft/structure/trial_chambers/intersection/intersection_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3820bb94db7b84ba2263a9f0f375d44fc289b5dda22dcf50824a566adf0ad40 -size 30344 +oid sha256:36956c5b024c1e5dc429b4ffefbfc050cbe6590cccaac6524f2433963a4af4ab +size 30343 diff --git a/data/minecraft/structure/trial_chambers/intersection/intersection_3.nbt b/data/minecraft/structure/trial_chambers/intersection/intersection_3.nbt index b0d2dc07..b24cd2d2 100644 --- a/data/minecraft/structure/trial_chambers/intersection/intersection_3.nbt +++ b/data/minecraft/structure/trial_chambers/intersection/intersection_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35d7dbfe632b699bc993c3d98c7bb066a94cb19688762e9b851c8f4803c1b0dd -size 49356 +oid sha256:c3ee20ca11d4aa5942d81441dfdc5372111bfddb043783323e71fa10c54c1d18 +size 49355 diff --git a/data/minecraft/structure/trial_chambers/reward/ominous_vault.nbt b/data/minecraft/structure/trial_chambers/reward/ominous_vault.nbt index 7646c15f..77f891f1 100644 --- a/data/minecraft/structure/trial_chambers/reward/ominous_vault.nbt +++ b/data/minecraft/structure/trial_chambers/reward/ominous_vault.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddb62ad9b230d689caaf7413208921c77b1c437877ff51bddbcb776480ff0dd0 -size 690 +oid sha256:aa6b96ec78a2a751f6f096128a9f97afb67533f86f4a8503194c34dad17e5b30 +size 689 diff --git a/data/minecraft/structure/trial_chambers/reward/vault.nbt b/data/minecraft/structure/trial_chambers/reward/vault.nbt index cac76dbf..727570b2 100644 --- a/data/minecraft/structure/trial_chambers/reward/vault.nbt +++ b/data/minecraft/structure/trial_chambers/reward/vault.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b266205b7c4c55de6faedacdc39995f2c95b97803826938beaeed1cb230d4d21 -size 504 +oid sha256:c216de9583eb9ad57b8dc60e6b1c98c56cb141256ac5c4e37f585c77f2f60c26 +size 503 diff --git a/data/minecraft/structure/trial_chambers/spawner/breeze/breeze.nbt b/data/minecraft/structure/trial_chambers/spawner/breeze/breeze.nbt index ff0ddba9..a5a5c139 100644 --- a/data/minecraft/structure/trial_chambers/spawner/breeze/breeze.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/breeze/breeze.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87399fc8ec2689b3bdc9d589475381edf3fb393079b97c1784dcea9a4843c4bb -size 469 +oid sha256:32108017cffb2977b6dc4c3cd10eec282560dd8dd008491114e16b5f05d96aa2 +size 468 diff --git a/data/minecraft/structure/trial_chambers/spawner/connectors/breeze.nbt b/data/minecraft/structure/trial_chambers/spawner/connectors/breeze.nbt index 2a7bd8f5..b4d66e30 100644 --- a/data/minecraft/structure/trial_chambers/spawner/connectors/breeze.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/connectors/breeze.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8320d94c033401180d9794e51f00b31e30d49002d9aaececd88454bce74813ae -size 328 +oid sha256:58c3a986892b7166876027d2b3d7e2777a445bb87883c1a74a53cfc24dfd3e85 +size 327 diff --git a/data/minecraft/structure/trial_chambers/spawner/connectors/melee.nbt b/data/minecraft/structure/trial_chambers/spawner/connectors/melee.nbt index f076b37e..0da8c797 100644 --- a/data/minecraft/structure/trial_chambers/spawner/connectors/melee.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/connectors/melee.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:615eda1e58d302084858c604ced09370361bcdabf66abaa3d33f3905b401b083 -size 327 +oid sha256:81c832f2561816720c1060eab5f795469ad3672d03a87b16a2d96b4bafe1b81f +size 326 diff --git a/data/minecraft/structure/trial_chambers/spawner/connectors/ranged.nbt b/data/minecraft/structure/trial_chambers/spawner/connectors/ranged.nbt index 732e942f..35723b4d 100644 --- a/data/minecraft/structure/trial_chambers/spawner/connectors/ranged.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/connectors/ranged.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ef650e3c5c0c8932ccb0c22ad233149fc6d7176b129584f6c2ca6ee5970d81a -size 327 +oid sha256:1546e349b6cb6dcadcdb0fbf84e14f18698f0d1c210bcf2adb7aa579c91edfdc +size 326 diff --git a/data/minecraft/structure/trial_chambers/spawner/connectors/slow_ranged.nbt b/data/minecraft/structure/trial_chambers/spawner/connectors/slow_ranged.nbt index d95316dc..d2751114 100644 --- a/data/minecraft/structure/trial_chambers/spawner/connectors/slow_ranged.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/connectors/slow_ranged.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b374d4b76932d57ed2e939a0c437d50a78d17728e49c963ffdb026a697d49e84 -size 331 +oid sha256:1f48b267af73697a4940f2b053963dc81bbf95c6207104bb1538ba307e79639b +size 330 diff --git a/data/minecraft/structure/trial_chambers/spawner/connectors/small_melee.nbt b/data/minecraft/structure/trial_chambers/spawner/connectors/small_melee.nbt index 1e0c6f3e..3bec6c4f 100644 --- a/data/minecraft/structure/trial_chambers/spawner/connectors/small_melee.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/connectors/small_melee.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f856ffb61ed1d9c25df0591efd104e808553d8c7be91c17d3663394818420f0f -size 330 +oid sha256:54be869cec74a83613de90bdf83dee67553b631ca0a696d6f23c008c7931af27 +size 329 diff --git a/data/minecraft/structure/trial_chambers/spawner/melee/husk.nbt b/data/minecraft/structure/trial_chambers/spawner/melee/husk.nbt index f5e3809c..d707e461 100644 --- a/data/minecraft/structure/trial_chambers/spawner/melee/husk.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/melee/husk.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e62e48606c81c4f470101a386fd7bed5124572e50f23b6095c24dd382f446bf -size 473 +oid sha256:4767fb80606522e5a9816d53bef813a2f9b12b2467539fad022c75aec1382460 +size 472 diff --git a/data/minecraft/structure/trial_chambers/spawner/melee/spider.nbt b/data/minecraft/structure/trial_chambers/spawner/melee/spider.nbt index 99d40585..3a3b9df7 100644 --- a/data/minecraft/structure/trial_chambers/spawner/melee/spider.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/melee/spider.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:882e1e2ac297d271c5c34ebf3ef730d9354df95ed694a6e5c1b571a4dec08a38 -size 481 +oid sha256:d34fad0516659eb3934124ceab10870f99dbf3cf37e33a948724546c47190051 +size 479 diff --git a/data/minecraft/structure/trial_chambers/spawner/melee/zombie.nbt b/data/minecraft/structure/trial_chambers/spawner/melee/zombie.nbt index e8c67247..a0401a0a 100644 --- a/data/minecraft/structure/trial_chambers/spawner/melee/zombie.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/melee/zombie.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:166773102aec72975df41aedc68dfe66535a51d95a0caa969386503e0fd51a1d -size 480 +oid sha256:73142001e3f97345231e68e466070958495e12963ed48bac9b298ea558e184b1 +size 478 diff --git a/data/minecraft/structure/trial_chambers/spawner/ranged/poison_skeleton.nbt b/data/minecraft/structure/trial_chambers/spawner/ranged/poison_skeleton.nbt index adbe4751..49b38aa7 100644 --- a/data/minecraft/structure/trial_chambers/spawner/ranged/poison_skeleton.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/ranged/poison_skeleton.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9df3ca105e66fb9e21e3b08341c7f4babf4a507aac5bbcb376f4223f9e0bec41 -size 524 +oid sha256:70c2d23128c41f2c697afd732e98ebddad5030ef2821bbfb2b05a1ad3990c7d3 +size 523 diff --git a/data/minecraft/structure/trial_chambers/spawner/ranged/skeleton.nbt b/data/minecraft/structure/trial_chambers/spawner/ranged/skeleton.nbt index 340f3cb4..3ab54608 100644 --- a/data/minecraft/structure/trial_chambers/spawner/ranged/skeleton.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/ranged/skeleton.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce508f1f1ab5089fb91e137bec09aa6406691e98b28794668f76cd6ebc622e35 -size 480 +oid sha256:ffe8c2a4369833e2a1d50573009e7fe5d93b2090d840a6db6727a4d9fb437613 +size 478 diff --git a/data/minecraft/structure/trial_chambers/spawner/ranged/stray.nbt b/data/minecraft/structure/trial_chambers/spawner/ranged/stray.nbt index 84938161..0f60683c 100644 --- a/data/minecraft/structure/trial_chambers/spawner/ranged/stray.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/ranged/stray.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aed7b36ce93860a7691c74cbc43dfc4f31a5d8e3530baddaaec55ef0eca83d46 -size 476 +oid sha256:352a35586290b7d767c0b5f6c1bbdcf37905231807cace2fecdd1cd7d6267063 +size 475 diff --git a/data/minecraft/structure/trial_chambers/spawner/slow_ranged/poison_skeleton.nbt b/data/minecraft/structure/trial_chambers/spawner/slow_ranged/poison_skeleton.nbt index 98ede40a..52d26dd9 100644 --- a/data/minecraft/structure/trial_chambers/spawner/slow_ranged/poison_skeleton.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/slow_ranged/poison_skeleton.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5350d668302c02121c457dcee1bc3f5b6758a4ee6392bd09429f820f870c2e0c -size 527 +oid sha256:a4b445e639f951dfe26bbd9556e6404bc5141c1771e42a2ed8552d89c4d7ad72 +size 526 diff --git a/data/minecraft/structure/trial_chambers/spawner/slow_ranged/skeleton.nbt b/data/minecraft/structure/trial_chambers/spawner/slow_ranged/skeleton.nbt index 5bd10355..2f1562b5 100644 --- a/data/minecraft/structure/trial_chambers/spawner/slow_ranged/skeleton.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/slow_ranged/skeleton.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc6cc45dfbc199f95dd8d82d910d0d4b9ea660404bba7dcb9e7f54bb37b38a97 -size 485 +oid sha256:697a638586e1339ff0d4adb3e9ad3e7d9e4c49db62adbfa259ca7a74b8f7e72b +size 484 diff --git a/data/minecraft/structure/trial_chambers/spawner/slow_ranged/stray.nbt b/data/minecraft/structure/trial_chambers/spawner/slow_ranged/stray.nbt index 8ee06537..716b609d 100644 --- a/data/minecraft/structure/trial_chambers/spawner/slow_ranged/stray.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/slow_ranged/stray.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db3fe03ee3a10e2bb12b249a8c346fa3af83a13066cd9715693390627ab34faf -size 479 +oid sha256:eb60d67171cdbf7df854c30d6644133deccc18a393bc80279a256155ec51d06f +size 477 diff --git a/data/minecraft/structure/trial_chambers/spawner/small_melee/baby_zombie.nbt b/data/minecraft/structure/trial_chambers/spawner/small_melee/baby_zombie.nbt index 3d418bdd..5bf9930e 100644 --- a/data/minecraft/structure/trial_chambers/spawner/small_melee/baby_zombie.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/small_melee/baby_zombie.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32d3c38daa1782200d9983969ce4006597cec8566ae3525bd08f65165ffe72aa -size 499 +oid sha256:03fd94ccc43a30224159460113de39d8c62704939a9b359f189097b7e14173ad +size 498 diff --git a/data/minecraft/structure/trial_chambers/spawner/small_melee/cave_spider.nbt b/data/minecraft/structure/trial_chambers/spawner/small_melee/cave_spider.nbt index 141a743b..0389ede9 100644 --- a/data/minecraft/structure/trial_chambers/spawner/small_melee/cave_spider.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/small_melee/cave_spider.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03a2153784cb5e007511e26ad7e353eece478f5346e4dc082511bb6673d0e6ae -size 523 +oid sha256:a516235a5b22644521b32aee4c6dc78ea46c961a27c44154f3b20917e4b0cdda +size 521 diff --git a/data/minecraft/structure/trial_chambers/spawner/small_melee/silverfish.nbt b/data/minecraft/structure/trial_chambers/spawner/small_melee/silverfish.nbt index 86ddab6a..5ced2ba5 100644 --- a/data/minecraft/structure/trial_chambers/spawner/small_melee/silverfish.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/small_melee/silverfish.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b731ddac8513aa5ec3dc62a067a3b8a30d6c2a8a26d72f5945a46b71f0c2e59d -size 483 +oid sha256:94f433772904df5868e7b18778f56bf80c175e682659bdd2af88721a18cfc258 +size 482 diff --git a/data/minecraft/structure/trial_chambers/spawner/small_melee/slime.nbt b/data/minecraft/structure/trial_chambers/spawner/small_melee/slime.nbt index 8aa7d487..5070fc33 100644 --- a/data/minecraft/structure/trial_chambers/spawner/small_melee/slime.nbt +++ b/data/minecraft/structure/trial_chambers/spawner/small_melee/slime.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5772c3f4e8f96b3b70002dfaffe1857d826ec0b44b1e41b980ebf9a35e18825f -size 473 +oid sha256:cebd3343cd2620b5078bb8a87d21931ecedef4c3c70481df78a4e27bf669fa18 +size 472 diff --git a/data/minecraft/structure/underwater_ruin/big_brick_1.nbt b/data/minecraft/structure/underwater_ruin/big_brick_1.nbt index c49c1b3a..7e9f6f5e 100644 --- a/data/minecraft/structure/underwater_ruin/big_brick_1.nbt +++ b/data/minecraft/structure/underwater_ruin/big_brick_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30d8cb8d95969691275a0894c517a06faa69328588f60d783fab2e657f909697 -size 11114 +oid sha256:9a7154036ef7b99b530bce4ec7249a91b45a4ad0311ed0355826bad7184fda75 +size 11113 diff --git a/data/minecraft/structure/underwater_ruin/big_brick_2.nbt b/data/minecraft/structure/underwater_ruin/big_brick_2.nbt index 9c02159f..faad24b0 100644 --- a/data/minecraft/structure/underwater_ruin/big_brick_2.nbt +++ b/data/minecraft/structure/underwater_ruin/big_brick_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5b0d7c118f5f799fee03faef084e9744c70dd0d1b569c8d9ec3f19eedff525e -size 11461 +oid sha256:45135869425cdbb7f97add6423a8d30ea87f1f7f27537ebe319835a99b8f1f3c +size 11460 diff --git a/data/minecraft/structure/underwater_ruin/big_brick_3.nbt b/data/minecraft/structure/underwater_ruin/big_brick_3.nbt index bd394b04..1ce4188f 100644 --- a/data/minecraft/structure/underwater_ruin/big_brick_3.nbt +++ b/data/minecraft/structure/underwater_ruin/big_brick_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79b2d734a7bfe8f7a2721734c383f12e9f3c1b06bc3b3572cf90a7c9ab992251 -size 11632 +oid sha256:ba4171a1ebfb0d8001f1d0a957cc7ebfca84af4dd32bf172476f6293c53c7886 +size 11631 diff --git a/data/minecraft/structure/underwater_ruin/big_brick_8.nbt b/data/minecraft/structure/underwater_ruin/big_brick_8.nbt index 4064f7e2..38ead987 100644 --- a/data/minecraft/structure/underwater_ruin/big_brick_8.nbt +++ b/data/minecraft/structure/underwater_ruin/big_brick_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1b32a0f8c0e23b77a82e66f3fc4b45df33e59dd37608deef20b12aed1e575f9 -size 11014 +oid sha256:056ae12f18680e14dda88d86e7771b610323cf8a79eb127746f10ffdee385b4c +size 11013 diff --git a/data/minecraft/structure/underwater_ruin/big_cracked_1.nbt b/data/minecraft/structure/underwater_ruin/big_cracked_1.nbt index 29ae324a..7ab84137 100644 --- a/data/minecraft/structure/underwater_ruin/big_cracked_1.nbt +++ b/data/minecraft/structure/underwater_ruin/big_cracked_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9f667e685f616f5231cda9a0a4c5fcab8ea75ccf853d938300f603f6f29225f +oid sha256:1b63f60cd4fd1fc3f1879e261eb86f786173951807ea5729211effe3b027272e size 11096 diff --git a/data/minecraft/structure/underwater_ruin/big_cracked_2.nbt b/data/minecraft/structure/underwater_ruin/big_cracked_2.nbt index c705b39f..d4217111 100644 --- a/data/minecraft/structure/underwater_ruin/big_cracked_2.nbt +++ b/data/minecraft/structure/underwater_ruin/big_cracked_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c17e48d1c9f37d8333966f5264818019c89d09454e6308c6af1f63749e6a23fc -size 11505 +oid sha256:6d050987a5bed33c8db073cb7fe4acba0322899fd30e84c7ea901fcb0c4e9977 +size 11504 diff --git a/data/minecraft/structure/underwater_ruin/big_cracked_3.nbt b/data/minecraft/structure/underwater_ruin/big_cracked_3.nbt index 80d0030e..d0a4f911 100644 --- a/data/minecraft/structure/underwater_ruin/big_cracked_3.nbt +++ b/data/minecraft/structure/underwater_ruin/big_cracked_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f189af1f6c9042f93eeade9c63564309b943b64bead5904b5cf25d64466c0b57 -size 11622 +oid sha256:667fbd89d7ef21dd70eea17e76cdcbbc7bd00466ffbde21088c08d8072dd35c5 +size 11620 diff --git a/data/minecraft/structure/underwater_ruin/big_cracked_8.nbt b/data/minecraft/structure/underwater_ruin/big_cracked_8.nbt index 1646152f..0760f90d 100644 --- a/data/minecraft/structure/underwater_ruin/big_cracked_8.nbt +++ b/data/minecraft/structure/underwater_ruin/big_cracked_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2b38506d35b5e7f377bad498fd2879fb6dcb5eeac075709dbc8f0f470d27eeb -size 11024 +oid sha256:aca537a75dddf6e28e63bff869978cde682fb59d03f1b945b0a7d5f3e1c02d28 +size 11022 diff --git a/data/minecraft/structure/underwater_ruin/big_mossy_1.nbt b/data/minecraft/structure/underwater_ruin/big_mossy_1.nbt index e09562e1..ccff61c7 100644 --- a/data/minecraft/structure/underwater_ruin/big_mossy_1.nbt +++ b/data/minecraft/structure/underwater_ruin/big_mossy_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6ab67ad8a7db446620b2ec9fc42ed5613d2f1eda467962a325b98041ffa5a20 -size 11096 +oid sha256:71f0e4a80a10d46a944ed61dd1a41906c64b1bdc01d9d215887182645f8b5f88 +size 11095 diff --git a/data/minecraft/structure/underwater_ruin/big_mossy_2.nbt b/data/minecraft/structure/underwater_ruin/big_mossy_2.nbt index 7892b02c..5eea8db6 100644 --- a/data/minecraft/structure/underwater_ruin/big_mossy_2.nbt +++ b/data/minecraft/structure/underwater_ruin/big_mossy_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd7d6b131618ccc63663cc071c4b34028e3501cb606a4f21c5193b46f7a0b1ff -size 11504 +oid sha256:1b7be51064f8741ea810a9de85a33140bbd029feb04d71c5510585a3dfd221e7 +size 11503 diff --git a/data/minecraft/structure/underwater_ruin/big_mossy_3.nbt b/data/minecraft/structure/underwater_ruin/big_mossy_3.nbt index f965f97f..eba08f9d 100644 --- a/data/minecraft/structure/underwater_ruin/big_mossy_3.nbt +++ b/data/minecraft/structure/underwater_ruin/big_mossy_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1fffda1b6e9b195caae5960668c9519cf2fe8c0ffaaa2a897fef788b77e42b2 -size 11632 +oid sha256:a9db1f65e0fa3d8fee8499830c1d989d70f9120ff56ed34edcf9c71d366c3b5d +size 11631 diff --git a/data/minecraft/structure/underwater_ruin/big_mossy_8.nbt b/data/minecraft/structure/underwater_ruin/big_mossy_8.nbt index 788241fb..a56feb62 100644 --- a/data/minecraft/structure/underwater_ruin/big_mossy_8.nbt +++ b/data/minecraft/structure/underwater_ruin/big_mossy_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85d653f34156bf1ba3a7cfd1ab64a7bb56e11d169e00af5b1c6f63f99c2676e3 -size 11045 +oid sha256:4591c973aa873fd860ec1ff9fefc3342e2b293805e45748d0f337a8f84bb6fc3 +size 11044 diff --git a/data/minecraft/structure/underwater_ruin/big_warm_4.nbt b/data/minecraft/structure/underwater_ruin/big_warm_4.nbt index 4117ba2a..c95d2bd5 100644 --- a/data/minecraft/structure/underwater_ruin/big_warm_4.nbt +++ b/data/minecraft/structure/underwater_ruin/big_warm_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c437e7c31b94b662d46894a3c2cdd383d4dccc58e712d112677613060aaccb5d -size 11266 +oid sha256:fa35c4be74f8864b421661f9bec12979e31aa45d617f0a8f14d1ce11303b7341 +size 11265 diff --git a/data/minecraft/structure/underwater_ruin/big_warm_5.nbt b/data/minecraft/structure/underwater_ruin/big_warm_5.nbt index 84138de7..2b7df89f 100644 --- a/data/minecraft/structure/underwater_ruin/big_warm_5.nbt +++ b/data/minecraft/structure/underwater_ruin/big_warm_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d916009e0dd85b9ba52f399e5b49ea9de573c6584b9126836b3a3c0db3d22226 +oid sha256:e44d8c9176f3082f577d3dd11d0f7f6679b9562db293ee6e786c980a82d21bc3 size 11032 diff --git a/data/minecraft/structure/underwater_ruin/big_warm_6.nbt b/data/minecraft/structure/underwater_ruin/big_warm_6.nbt index d3b37a7d..a83dffb4 100644 --- a/data/minecraft/structure/underwater_ruin/big_warm_6.nbt +++ b/data/minecraft/structure/underwater_ruin/big_warm_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57b00a88f4212fe93109c0b11e2c581ddb223164a6894a9f88fd4489e37f54f4 +oid sha256:28385df5a354617fab36411bbc8b7d194aeca212935f0895cd048ba8e8ea0a19 size 11106 diff --git a/data/minecraft/structure/underwater_ruin/big_warm_7.nbt b/data/minecraft/structure/underwater_ruin/big_warm_7.nbt index f6b585ed..19eb5cc1 100644 --- a/data/minecraft/structure/underwater_ruin/big_warm_7.nbt +++ b/data/minecraft/structure/underwater_ruin/big_warm_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:921c648ca2f22645c9f75752af1ac0e931df5332f919a17aa08aa6f9cab3f2af -size 11140 +oid sha256:0495693fa199810939e7324ccbf481ec16d1b6c475f72529e23dd6d4ef197826 +size 11139 diff --git a/data/minecraft/structure/underwater_ruin/brick_1.nbt b/data/minecraft/structure/underwater_ruin/brick_1.nbt index dc2485cf..6c83a159 100644 --- a/data/minecraft/structure/underwater_ruin/brick_1.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96fa7509a6ae331fc2cd5daba8f5772b94ab169bfafa0e6a5e43ae45f698b17b -size 1270 +oid sha256:22ed6b19ddf0ba9b69b8a2d9b41b19464f0643eedfe083d2f7707f9420998f6e +size 1269 diff --git a/data/minecraft/structure/underwater_ruin/brick_2.nbt b/data/minecraft/structure/underwater_ruin/brick_2.nbt index 39b2b2f8..1bab7636 100644 --- a/data/minecraft/structure/underwater_ruin/brick_2.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c567a8497c0c258677bd70f225b1aa7caae677714f034b1aaeb805245479a59 -size 1260 +oid sha256:5fae4fee21b15d954dd71dc3ccc804b8916a3733862f11bd172ab2e826ea3224 +size 1259 diff --git a/data/minecraft/structure/underwater_ruin/brick_3.nbt b/data/minecraft/structure/underwater_ruin/brick_3.nbt index f67e7052..df277aa1 100644 --- a/data/minecraft/structure/underwater_ruin/brick_3.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b35cd26732198273814a20be008d47c164281ba5bc09dff9dcf89fe068ff7fdf -size 1319 +oid sha256:10826c1d49bf67a5721e78880da64115ecf866f8e51780b6d00a09b168f8bed1 +size 1318 diff --git a/data/minecraft/structure/underwater_ruin/brick_4.nbt b/data/minecraft/structure/underwater_ruin/brick_4.nbt index eaf5cce4..0b5d3c6f 100644 --- a/data/minecraft/structure/underwater_ruin/brick_4.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:876aa3769952774a754120194183a79495be106d1d8c36121113363027da4d6f -size 1296 +oid sha256:a82e3ce0958da06b911564b6c7ddc16297630b51d038ad539bf35a6e6c8b0c59 +size 1295 diff --git a/data/minecraft/structure/underwater_ruin/brick_5.nbt b/data/minecraft/structure/underwater_ruin/brick_5.nbt index 4ef06d61..a8f8b3aa 100644 --- a/data/minecraft/structure/underwater_ruin/brick_5.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd11367f5a24e01d38506f0d7dc917806d805b9207e876df2e6c59560435382a -size 1277 +oid sha256:c64844bdecc9c9361762f8a5044a45c7826348b84c5dfcb5e68602d720f35ab9 +size 1276 diff --git a/data/minecraft/structure/underwater_ruin/brick_6.nbt b/data/minecraft/structure/underwater_ruin/brick_6.nbt index 1f8796c4..723cc794 100644 --- a/data/minecraft/structure/underwater_ruin/brick_6.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3feb5a7d056c6f52c98dffb4d5b26481d5c21f4683f89cb248554de16348f1a5 -size 1468 +oid sha256:6523279ebb6dbecdd1d71fb9139cded17a99e9c7ca705da5884874a04cc5a6ad +size 1467 diff --git a/data/minecraft/structure/underwater_ruin/brick_7.nbt b/data/minecraft/structure/underwater_ruin/brick_7.nbt index d9ddb9de..4ffa7df7 100644 --- a/data/minecraft/structure/underwater_ruin/brick_7.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2ce8df940847820c04eadb795e531b50cfba5d067e5c2cecf95204385b83472 -size 1293 +oid sha256:8b1fba1ac92b8e5b28dbfa2cf9ae6d33be65fe00608bd23e80c34ef8e80c717c +size 1292 diff --git a/data/minecraft/structure/underwater_ruin/brick_8.nbt b/data/minecraft/structure/underwater_ruin/brick_8.nbt index af941169..80b0bfb5 100644 --- a/data/minecraft/structure/underwater_ruin/brick_8.nbt +++ b/data/minecraft/structure/underwater_ruin/brick_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95f30ba68591d740cf1d2e90dc095e81e63770e2e8d19d9a357ec176ca5b8323 -size 1306 +oid sha256:0f15f0c69c6e69416cb93d9a4f301473e98c0c6f4d87f9776d938e64b4031251 +size 1305 diff --git a/data/minecraft/structure/underwater_ruin/cracked_1.nbt b/data/minecraft/structure/underwater_ruin/cracked_1.nbt index 41b164bf..31a73401 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_1.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d53de4b13ab780036b8e0e7b831d469af1003ae6876d50446742ceb3f2d74f -size 1266 +oid sha256:1bf2291653202bba6f393949d2196f9b9b1202137f90b66b3e5f8d7ca79b91c9 +size 1264 diff --git a/data/minecraft/structure/underwater_ruin/cracked_2.nbt b/data/minecraft/structure/underwater_ruin/cracked_2.nbt index 074f4b1b..ce446f5a 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_2.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5148bd2a3247fb6edfbe364ccd5e04eeebca4724ce6752c487d38e8da93afe7 -size 1258 +oid sha256:9893d8c4cbdff220bbc785cd7f2224221619f464f57cb71d08e561c64707995e +size 1257 diff --git a/data/minecraft/structure/underwater_ruin/cracked_3.nbt b/data/minecraft/structure/underwater_ruin/cracked_3.nbt index a0a4953d..f63a739e 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_3.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aedc7b1fcd03be7c11e9ac568e2780002b4ed5fd8d264aeea26e9398871ad12 -size 1348 +oid sha256:b29f009ea1b614b1b4d4012543c6da29e286d9fcdb45d6281360e3f7f436d1af +size 1346 diff --git a/data/minecraft/structure/underwater_ruin/cracked_4.nbt b/data/minecraft/structure/underwater_ruin/cracked_4.nbt index 0a6fd4e3..34f44fb2 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_4.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09bb8c1d0c995b1ede44b325016cbed3ec5700a2935f2a862996604e00b66adb -size 1257 +oid sha256:5f47941914b97023910e4d6a39f4cdaa40d900b7da04151ee817064fe06f5adf +size 1255 diff --git a/data/minecraft/structure/underwater_ruin/cracked_5.nbt b/data/minecraft/structure/underwater_ruin/cracked_5.nbt index 1505eccd..d6efe7f0 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_5.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be634a8bb9dae20c5000ec5926b88bf6beee4433491886471805219c07c1cc32 -size 1282 +oid sha256:41c5df7dd7a6d6da6f9f7d24ae449739b3b1451f19509c298304d3390d024b9e +size 1281 diff --git a/data/minecraft/structure/underwater_ruin/cracked_6.nbt b/data/minecraft/structure/underwater_ruin/cracked_6.nbt index f44ba16c..7c583289 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_6.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a43c42726c6f77bfe666ee9cbc9191397b6e92400270f5ecd6dcdad3c962de2c -size 1410 +oid sha256:c4c9b43e2c2b807431f8d5a49d4f9a1dce06c4542e48fa912eb545e345b1cae2 +size 1408 diff --git a/data/minecraft/structure/underwater_ruin/cracked_7.nbt b/data/minecraft/structure/underwater_ruin/cracked_7.nbt index 94d77afc..c7f33caf 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_7.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84de376d970a807bb4c44c7738c7fea61091e06bf0dd7663eb241efbcd8f5b1f -size 1314 +oid sha256:a901dc71e9592220950f6d4da9ab47c658ec66fd5728fb4f59466683ddea504d +size 1313 diff --git a/data/minecraft/structure/underwater_ruin/cracked_8.nbt b/data/minecraft/structure/underwater_ruin/cracked_8.nbt index eeb83445..d3b6cf28 100644 --- a/data/minecraft/structure/underwater_ruin/cracked_8.nbt +++ b/data/minecraft/structure/underwater_ruin/cracked_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bba5156853e5ffc382524bf0c42b35ac88cd2e0b16cd7f8a9bc94b1670f9872 -size 1294 +oid sha256:e908ce7c8df3f006b94f7585b0854d7ebe0f094ee7913fe35061d965c71d0d03 +size 1293 diff --git a/data/minecraft/structure/underwater_ruin/mossy_1.nbt b/data/minecraft/structure/underwater_ruin/mossy_1.nbt index 3e5156e2..e3e0a196 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_1.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:566dc4fe981031f3ee3f01c2e02d8f301542f173695786282c72f8b4e8708941 -size 1279 +oid sha256:7cc3df953215246163398fc20cb39b7f8ac8c66d160c0f97404e6d4f52e2efd2 +size 1277 diff --git a/data/minecraft/structure/underwater_ruin/mossy_2.nbt b/data/minecraft/structure/underwater_ruin/mossy_2.nbt index 6702e13c..7c218788 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_2.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:841195b06238758f3ea2030ae7ea77a05ec20baa7014712cbbce88acdb0459e6 -size 1233 +oid sha256:4e93962f59d8bc12ccfbceb8e34e45f9f164690d91a74719d9f0de3698b809df +size 1232 diff --git a/data/minecraft/structure/underwater_ruin/mossy_3.nbt b/data/minecraft/structure/underwater_ruin/mossy_3.nbt index 99ac5a31..796417cb 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_3.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7229f7728246614d7000a669135db679844d5ce14df33e9f83e05cbced791fd -size 1323 +oid sha256:fcdc3deaf5351a26bf57e9e2ede2c323adab5fb9debee5111c9562761d7d984c +size 1322 diff --git a/data/minecraft/structure/underwater_ruin/mossy_4.nbt b/data/minecraft/structure/underwater_ruin/mossy_4.nbt index bbf3451c..8b22b042 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_4.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c88b4ba4d5c4f465b86c20e54b391807ca2d11c7cb37474c12f4ef9fcd3d3d5a -size 1282 +oid sha256:79834c3e447d2ca160ac8e81e755c923a40d87b82ec412daa92b788aa8458e9a +size 1281 diff --git a/data/minecraft/structure/underwater_ruin/mossy_5.nbt b/data/minecraft/structure/underwater_ruin/mossy_5.nbt index 0e4255e1..d58a757d 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_5.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e36f8dfedecc8114bfa759552b2d028eb7190c0fefa31408fe96bda2e069eb1 -size 1300 +oid sha256:8f4a0699855403195810f625eefca17a304b665ce08c770814e1220ec5198173 +size 1298 diff --git a/data/minecraft/structure/underwater_ruin/mossy_6.nbt b/data/minecraft/structure/underwater_ruin/mossy_6.nbt index d9b84a55..a1b56149 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_6.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2471140382e176704c3157a6ab54b897a0e8f09261a0017deab00114c96c241c -size 1452 +oid sha256:25cfc6d0939bd5a00f223e3d1d5df32f5b38143c3243282bd4925930c0de5f9e +size 1451 diff --git a/data/minecraft/structure/underwater_ruin/mossy_7.nbt b/data/minecraft/structure/underwater_ruin/mossy_7.nbt index a2b7becc..36bead64 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_7.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9edf4f4950bd5a644ef1c0e5c383863f5af25255cc60cc59d8a6dc67bd93c492 -size 1310 +oid sha256:d7b1484bc63e5f7fedae72ccf01adf71637324473a94c4b229f684fcd9e13379 +size 1309 diff --git a/data/minecraft/structure/underwater_ruin/mossy_8.nbt b/data/minecraft/structure/underwater_ruin/mossy_8.nbt index 66d00421..1c5a728c 100644 --- a/data/minecraft/structure/underwater_ruin/mossy_8.nbt +++ b/data/minecraft/structure/underwater_ruin/mossy_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:610269c990db4797741a2df6f571f1cc79637e11bb7205e86b7eb0e490891c9b -size 1322 +oid sha256:4bb64746a1de1733b4432a9fa8df49aa9d766d458e81d8aefb468d4157d299fc +size 1321 diff --git a/data/minecraft/structure/underwater_ruin/warm_1.nbt b/data/minecraft/structure/underwater_ruin/warm_1.nbt index b0997a13..f3447881 100644 --- a/data/minecraft/structure/underwater_ruin/warm_1.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e487aa5de4ac93e55d26e9a0c47f5d30d5ccc57c83e32304a1680ef3016074b1 -size 1269 +oid sha256:88daf62a72cbfb096362b670e6be6ca534c06a0817d312f32e32f34256bc338f +size 1268 diff --git a/data/minecraft/structure/underwater_ruin/warm_2.nbt b/data/minecraft/structure/underwater_ruin/warm_2.nbt index 1e2c46ec..dc8446eb 100644 --- a/data/minecraft/structure/underwater_ruin/warm_2.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed3641a79fc720c913389dc31ef6d290741298607b5c2d9bfa8d36b1473e11cf +oid sha256:b9516bdbd59633384472b1e63b03dea4757e79492dfca43df064f52e8271ed8e size 1298 diff --git a/data/minecraft/structure/underwater_ruin/warm_3.nbt b/data/minecraft/structure/underwater_ruin/warm_3.nbt index dbe73159..938af838 100644 --- a/data/minecraft/structure/underwater_ruin/warm_3.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a23ba8f156a8cf5191b6f2fccd820dd9f73e1ddfd2d9493542a4156fb5b43b9c -size 1272 +oid sha256:18dfa44700a63ad5695816483465d622df1d944a4a1da3f971f676a07f980588 +size 1271 diff --git a/data/minecraft/structure/underwater_ruin/warm_4.nbt b/data/minecraft/structure/underwater_ruin/warm_4.nbt index 51c05d7e..44e3886c 100644 --- a/data/minecraft/structure/underwater_ruin/warm_4.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6126683f17b8ef6a1f2be40bf6df1cfce57cae9da66a47eb632008aca1cfe572 -size 1348 +oid sha256:575b4a5be370733b2503d214b7b29f332abe1655878d3c6b5e5bf5cfe35e777b +size 1347 diff --git a/data/minecraft/structure/underwater_ruin/warm_5.nbt b/data/minecraft/structure/underwater_ruin/warm_5.nbt index 896a1269..bcd052ac 100644 --- a/data/minecraft/structure/underwater_ruin/warm_5.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1536aed8f423f5b4f36c0638b08645f3503a20b99d861230817fe2b94aa4f2ca +oid sha256:83d41035139174c4057496a669a5bd01c56bfa09871ad2da1d7d0b2ef3c4e112 size 1226 diff --git a/data/minecraft/structure/underwater_ruin/warm_6.nbt b/data/minecraft/structure/underwater_ruin/warm_6.nbt index 9ed6822d..8b76ec9f 100644 --- a/data/minecraft/structure/underwater_ruin/warm_6.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4da522b3658af8e860849fbbcb73e616abb45198b82ee3dc7a1dbf74b5380834 -size 1271 +oid sha256:f8c9efe21f71a01fbf16848522f6ccb5820cd24ceb251bb3c0fdeada03dee744 +size 1270 diff --git a/data/minecraft/structure/underwater_ruin/warm_7.nbt b/data/minecraft/structure/underwater_ruin/warm_7.nbt index d789ecb5..72c12c10 100644 --- a/data/minecraft/structure/underwater_ruin/warm_7.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb719f9980220adc703e369ce1b805b34039ced7ad2d60f94e37ea3d71765ebd -size 1211 +oid sha256:fb4561071a603a5ce00cbb79139b2d3feaf98ad200f308c7041019338e302bcd +size 1210 diff --git a/data/minecraft/structure/underwater_ruin/warm_8.nbt b/data/minecraft/structure/underwater_ruin/warm_8.nbt index 2b19b454..ffc0f6a0 100644 --- a/data/minecraft/structure/underwater_ruin/warm_8.nbt +++ b/data/minecraft/structure/underwater_ruin/warm_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d22129c7632b30dd67c575388538d912e9e20013b9c042cc4d9853f84ad968a +oid sha256:ad3d9e7e146e98275be51ef0f810d38925699d2804a096e5bea19bfb8da60b35 size 1339 diff --git a/data/minecraft/structure/village/common/animals/cat_black.nbt b/data/minecraft/structure/village/common/animals/cat_black.nbt index 9e146882..07754fd3 100644 --- a/data/minecraft/structure/village/common/animals/cat_black.nbt +++ b/data/minecraft/structure/village/common/animals/cat_black.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55715cbc4e78cc3eda5e3664dd6c22ece247bf94955c50a40e516de99dcefbd2 -size 924 +oid sha256:4b7bea87d2137683239522bb6ab391d70fa0f4e02a1d2ee2ae679a25d5fd6915 +size 922 diff --git a/data/minecraft/structure/village/common/animals/cat_british.nbt b/data/minecraft/structure/village/common/animals/cat_british.nbt index 639d2ed9..fd83a51c 100644 --- a/data/minecraft/structure/village/common/animals/cat_british.nbt +++ b/data/minecraft/structure/village/common/animals/cat_british.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e370506b3dcb30687f9e7ba01be3433a056cc9934022478c4283444d2f7d79 -size 932 +oid sha256:1f8176da46b64b55f81649d14b655790717ee8ffb3c81ad5738f25ad3bd173ab +size 929 diff --git a/data/minecraft/structure/village/common/animals/cat_calico.nbt b/data/minecraft/structure/village/common/animals/cat_calico.nbt index 6dbca8ec..ba904f08 100644 --- a/data/minecraft/structure/village/common/animals/cat_calico.nbt +++ b/data/minecraft/structure/village/common/animals/cat_calico.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08a15213ae5c67e5a7a3332a87794ef39e6ba1abd4b7ca0fa0b2002c0120ecd1 -size 856 +oid sha256:256caa09fa6c4703f10615d0f2d45a0cc44514a71245740a5c0444cdc200ba49 +size 853 diff --git a/data/minecraft/structure/village/common/animals/cat_jellie.nbt b/data/minecraft/structure/village/common/animals/cat_jellie.nbt index cf0a2445..18bdab2e 100644 --- a/data/minecraft/structure/village/common/animals/cat_jellie.nbt +++ b/data/minecraft/structure/village/common/animals/cat_jellie.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:606a9bdb0c1e9a8ddf014fab2bc32e815df4055c58bd5bba0a61779851f43acf -size 926 +oid sha256:9f90749cb6599acded877914038789dc1f711d52c4b8a1b989bfc870a9b861fe +size 925 diff --git a/data/minecraft/structure/village/common/animals/cat_persian.nbt b/data/minecraft/structure/village/common/animals/cat_persian.nbt index 29314aad..7a48a9f4 100644 --- a/data/minecraft/structure/village/common/animals/cat_persian.nbt +++ b/data/minecraft/structure/village/common/animals/cat_persian.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7d4a0c2323c56ecb4f3d85a2985286b30861243183f5af12a06ce340b893ef8 -size 856 +oid sha256:8e4e147467d76a7f19acd38c032ae430c44b4dbb519eaa8db9702dc84cf44b20 +size 857 diff --git a/data/minecraft/structure/village/common/animals/cat_ragdoll.nbt b/data/minecraft/structure/village/common/animals/cat_ragdoll.nbt index ce9a31d7..1b493caf 100644 --- a/data/minecraft/structure/village/common/animals/cat_ragdoll.nbt +++ b/data/minecraft/structure/village/common/animals/cat_ragdoll.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af46555b439db869820c7031ee06532c3245f185e54e9ee18c69e5fe14f8df94 -size 923 +oid sha256:95a08bd48e7223e4544437e7aa42ec93e879cb5a8a5fdaa777723ac849c3a0c8 +size 920 diff --git a/data/minecraft/structure/village/common/animals/cat_red.nbt b/data/minecraft/structure/village/common/animals/cat_red.nbt index bcff7117..4236b61f 100644 --- a/data/minecraft/structure/village/common/animals/cat_red.nbt +++ b/data/minecraft/structure/village/common/animals/cat_red.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de821fecc89d4acd564e1d3f23adb91860fd14df59fe112e860ea373c6b135f +oid sha256:155a7b93b4e31d24886a6a054763414b60513a3d6322715e60bc11fe15f136a1 size 839 diff --git a/data/minecraft/structure/village/common/animals/cat_siamese.nbt b/data/minecraft/structure/village/common/animals/cat_siamese.nbt index 4e76ac85..cb2927c2 100644 --- a/data/minecraft/structure/village/common/animals/cat_siamese.nbt +++ b/data/minecraft/structure/village/common/animals/cat_siamese.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68c3a5079f81cd05a6c54b745ef2f933a73df236956d08512ae9aee11534ad5d -size 847 +oid sha256:119c4c12f9218e9b006844d4ab039dca23e12df3ace3b29c2ef5465ea98b1162 +size 845 diff --git a/data/minecraft/structure/village/common/animals/cat_tabby.nbt b/data/minecraft/structure/village/common/animals/cat_tabby.nbt index 94d510b1..46381fd7 100644 --- a/data/minecraft/structure/village/common/animals/cat_tabby.nbt +++ b/data/minecraft/structure/village/common/animals/cat_tabby.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cdb015b640c5259b153bc77a8fa93049e725900e1526d1de084734e0efca6d7 -size 920 +oid sha256:b653f6e518e277b0ac21ef5c7b2503803fdca9d3e687a0fb751d4b4383160985 +size 918 diff --git a/data/minecraft/structure/village/common/animals/cat_white.nbt b/data/minecraft/structure/village/common/animals/cat_white.nbt index 0ed35add..7ef6681f 100644 --- a/data/minecraft/structure/village/common/animals/cat_white.nbt +++ b/data/minecraft/structure/village/common/animals/cat_white.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f3121f9b93f53d0a3ce5d8f9442f41d8681048a0c1833211743b6363df486f8 -size 915 +oid sha256:20f31193d05a3c2c4fdf14ad2c72e0e9725aea21e5add512bcf39b98ae96e3ba +size 914 diff --git a/data/minecraft/structure/village/common/animals/cows_1.nbt b/data/minecraft/structure/village/common/animals/cows_1.nbt index 1e0388e9..c9ece9fc 100644 --- a/data/minecraft/structure/village/common/animals/cows_1.nbt +++ b/data/minecraft/structure/village/common/animals/cows_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82a894f46c1f49d19959dead5fd91aa7b83bc9f2ef2115ab7810dc254e4ad6ce -size 960 +oid sha256:51f84f6055a18a6d72f818076a0afeab76f238d6a3a70afa92b384199009ec6d +size 956 diff --git a/data/minecraft/structure/village/common/animals/horses_1.nbt b/data/minecraft/structure/village/common/animals/horses_1.nbt index 691261f5..4e66f60a 100644 --- a/data/minecraft/structure/village/common/animals/horses_1.nbt +++ b/data/minecraft/structure/village/common/animals/horses_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d001f330687faf2717733f306769d0b7d1678af724592acdc09b82d81a2c6d7c +oid sha256:6c33bec44703fbebbc041c996b241dafc22790465d00a3662e79a6817be8a169 size 920 diff --git a/data/minecraft/structure/village/common/animals/horses_2.nbt b/data/minecraft/structure/village/common/animals/horses_2.nbt index 03ab2f24..06f53a43 100644 --- a/data/minecraft/structure/village/common/animals/horses_2.nbt +++ b/data/minecraft/structure/village/common/animals/horses_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c452e3dbcbafcf7eb609a22854de2945133b194a2f82e7aa1d7cac751d6511e2 -size 1036 +oid sha256:a457c272be132cb949395fadedec7d02ee05b5bb53877bc78281d5f7dfcd2413 +size 1031 diff --git a/data/minecraft/structure/village/common/animals/horses_3.nbt b/data/minecraft/structure/village/common/animals/horses_3.nbt index 1ee1ea02..d0d693c5 100644 --- a/data/minecraft/structure/village/common/animals/horses_3.nbt +++ b/data/minecraft/structure/village/common/animals/horses_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f9d637a12a4fa1c85a059e889c8954dfe62861a73e3d109045f6f4259c75f71 -size 1043 +oid sha256:5a87b5b45edfae41eed04c30cb763ce08c9b9eec892288ba7b240b20d9ac4c83 +size 1039 diff --git a/data/minecraft/structure/village/common/animals/horses_4.nbt b/data/minecraft/structure/village/common/animals/horses_4.nbt index 2a82691a..1deed4b2 100644 --- a/data/minecraft/structure/village/common/animals/horses_4.nbt +++ b/data/minecraft/structure/village/common/animals/horses_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c09e0aeae6a59f9fb57327fb7a495657067049a73bc2dbb9d11a1f9967a2de4 -size 915 +oid sha256:e0e2acdd7ad1990d8584ea046e7e7ba6fafe9bd068ebdf83b8d59b2233ac988e +size 912 diff --git a/data/minecraft/structure/village/common/animals/horses_5.nbt b/data/minecraft/structure/village/common/animals/horses_5.nbt index bcf94977..9d68b7de 100644 --- a/data/minecraft/structure/village/common/animals/horses_5.nbt +++ b/data/minecraft/structure/village/common/animals/horses_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3e148a9fba588d6c5cf25db36c306d4edf82a4cb4dd0e6c0a9d85c1d757aa10 -size 936 +oid sha256:51eb6f370b09f64efe636e90549548f7a9f123fe2c6034c7ddd9a1e771139442 +size 932 diff --git a/data/minecraft/structure/village/common/animals/pigs_1.nbt b/data/minecraft/structure/village/common/animals/pigs_1.nbt index 0298cd70..dd24a1e2 100644 --- a/data/minecraft/structure/village/common/animals/pigs_1.nbt +++ b/data/minecraft/structure/village/common/animals/pigs_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68ab531e0c536124b637a1e3d207e39a7466330b42f7366ff1af85d4d4daf5a7 -size 968 +oid sha256:0b3459349ca322352a07ba2025bcd7865913da12adfd7e9dc53d4c3e55b5f806 +size 966 diff --git a/data/minecraft/structure/village/common/animals/sheep_1.nbt b/data/minecraft/structure/village/common/animals/sheep_1.nbt index 89834326..3c461e70 100644 --- a/data/minecraft/structure/village/common/animals/sheep_1.nbt +++ b/data/minecraft/structure/village/common/animals/sheep_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3bccc5f93879da945f29e2de6ca97c393d9bb77c2984e583f802817bc4ba6dc -size 982 +oid sha256:92158da5afa1705bd62ffe3e50a9cecb45cea16ae773ba4afcfba39022e22bd8 +size 981 diff --git a/data/minecraft/structure/village/common/animals/sheep_2.nbt b/data/minecraft/structure/village/common/animals/sheep_2.nbt index c7fa3137..7d34f010 100644 --- a/data/minecraft/structure/village/common/animals/sheep_2.nbt +++ b/data/minecraft/structure/village/common/animals/sheep_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce990f763d0805720fb44dce086f4dbcee466266dda0c5efcfe2c42db32a8408 -size 982 +oid sha256:66909b51c76a2d88f86a2382b01bcfb03e00bf2f59b45f07b0c7b655df79bf32 +size 981 diff --git a/data/minecraft/structure/village/common/iron_golem.nbt b/data/minecraft/structure/village/common/iron_golem.nbt index 66887254..3f5308f3 100644 --- a/data/minecraft/structure/village/common/iron_golem.nbt +++ b/data/minecraft/structure/village/common/iron_golem.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2026498ce3ef082732d835824506559a667694776c7f1d191564c8d06f501031 -size 856 +oid sha256:f71178541a36c43e57628b75a7e00127e11112f8b8dbadd4e84b300c40d0030b +size 854 diff --git a/data/minecraft/structure/village/common/well_bottom.nbt b/data/minecraft/structure/village/common/well_bottom.nbt index 0444ab50..71159870 100644 --- a/data/minecraft/structure/village/common/well_bottom.nbt +++ b/data/minecraft/structure/village/common/well_bottom.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d9cdf46821b75845a897d1faf8b723c415032374fd60d73bc69f98cfafc60d2 -size 427 +oid sha256:8991d40885e4751e0c46019c20258f919d7bb9c840a9b5b71e6ab10eab8ea144 +size 426 diff --git a/data/minecraft/structure/village/decays/grass_11x13.nbt b/data/minecraft/structure/village/decays/grass_11x13.nbt index d57daa3a..2ca45a38 100644 --- a/data/minecraft/structure/village/decays/grass_11x13.nbt +++ b/data/minecraft/structure/village/decays/grass_11x13.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a66a9c19d403c0db72378bdc3f7ec081bd008ab0906df188e6b11cf94d96d2d4 -size 558 +oid sha256:e327cf0684bc8b415eda139399719506296029db05e63dac01978b6e63fefd43 +size 557 diff --git a/data/minecraft/structure/village/decays/grass_16x16.nbt b/data/minecraft/structure/village/decays/grass_16x16.nbt index 7ab388df..3f275fdd 100644 --- a/data/minecraft/structure/village/decays/grass_16x16.nbt +++ b/data/minecraft/structure/village/decays/grass_16x16.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25956b53db16c5fc432e88ba4ee2bca58787ec7871ef2d8b7268435f618e5aba -size 874 +oid sha256:d93ddf8fdbea35abfd9aba57de9dc257cf6abc65a662724d3588ad911cdf3ac2 +size 873 diff --git a/data/minecraft/structure/village/decays/grass_9x9.nbt b/data/minecraft/structure/village/decays/grass_9x9.nbt index 0da30d1d..b013e5af 100644 --- a/data/minecraft/structure/village/decays/grass_9x9.nbt +++ b/data/minecraft/structure/village/decays/grass_9x9.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f62aa22fb63563cda36fbeccecc1536be62375939ad99e1a984d5d6ad640c2a +oid sha256:bd9b4443fc4bcc83d8c28336a15867c45f70a1d50c65dfda1d8612c25d2536b7 size 393 diff --git a/data/minecraft/structure/village/desert/camel_spawn.nbt b/data/minecraft/structure/village/desert/camel_spawn.nbt index c0488c68..63d28f7d 100644 --- a/data/minecraft/structure/village/desert/camel_spawn.nbt +++ b/data/minecraft/structure/village/desert/camel_spawn.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2862fbb22b8997b8ff21050f79e5565fbf3153648f29d05969e5520b206838b0 -size 283 +oid sha256:85ce0bde8600204c601cd68d6bee2c5037a5e1332aeca21ce6383278a1ca3784 +size 282 diff --git a/data/minecraft/structure/village/desert/desert_lamp_1.nbt b/data/minecraft/structure/village/desert/desert_lamp_1.nbt index 9f1b88cc..a5cba86f 100644 --- a/data/minecraft/structure/village/desert/desert_lamp_1.nbt +++ b/data/minecraft/structure/village/desert/desert_lamp_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50656f3bd668e18337bdd34a4cd10e2ecd24dd8603c10909f45e7795c5d717f1 -size 279 +oid sha256:fe66142a954974f4ff4ab3b3e4f371388b32972c4a0af672008da5b3d532272a +size 278 diff --git a/data/minecraft/structure/village/desert/houses/desert_animal_pen_1.nbt b/data/minecraft/structure/village/desert/houses/desert_animal_pen_1.nbt index 695acfa4..40eadd3a 100644 --- a/data/minecraft/structure/village/desert/houses/desert_animal_pen_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_animal_pen_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed065e25ca3b9864fc6d8149075558d480df88ba8519d076cabd3ced74d1377b -size 1690 +oid sha256:9f4a54c5ee40275e3ba9f924295facbedbc6c679edf6145191db7b794d57675c +size 1688 diff --git a/data/minecraft/structure/village/desert/houses/desert_animal_pen_2.nbt b/data/minecraft/structure/village/desert/houses/desert_animal_pen_2.nbt index 7696a0ce..6effaee6 100644 --- a/data/minecraft/structure/village/desert/houses/desert_animal_pen_2.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_animal_pen_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdc533c02eda06e0a391685d23f35a778c9e39406d3888ef08094fba23297b4b -size 1864 +oid sha256:5405e404e4c3157dc118eb47ac72b0c8ce2f6c1cb4bb89f2dd87ed117bfbf950 +size 1862 diff --git a/data/minecraft/structure/village/desert/houses/desert_armorer_1.nbt b/data/minecraft/structure/village/desert/houses/desert_armorer_1.nbt index be633afb..12ffe1e4 100644 --- a/data/minecraft/structure/village/desert/houses/desert_armorer_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_armorer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:428e470c2e63e292dfeb4a4c33c671f4b520bd9fcb39d317d046beef78bf0a03 -size 1746 +oid sha256:910aca847d966ce10343a7302fda4da103ae4230eadad338f2aea0b93fbd3e3d +size 1763 diff --git a/data/minecraft/structure/village/desert/houses/desert_butcher_shop_1.nbt b/data/minecraft/structure/village/desert/houses/desert_butcher_shop_1.nbt index b81c1fdd..a29cf92e 100644 --- a/data/minecraft/structure/village/desert/houses/desert_butcher_shop_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_butcher_shop_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc540bf9693a17f1fc7839784947e86026d9564ca25820311e7764012434eacb -size 1779 +oid sha256:60b65103ab70d6e501a68d243be46a4877246ea270eb4a6298e63c8169c7a43b +size 1795 diff --git a/data/minecraft/structure/village/desert/houses/desert_cartographer_house_1.nbt b/data/minecraft/structure/village/desert/houses/desert_cartographer_house_1.nbt index 8a405e63..3fa66a54 100644 --- a/data/minecraft/structure/village/desert/houses/desert_cartographer_house_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_cartographer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9facf7152c085db0ba922671ef527581a6fe8af89c0f8545a31efb613eba3e3 -size 1677 +oid sha256:103b2fc5c19248476d44a09e77ea8eaa933bb2841612106b0485a68c35aec3d7 +size 1675 diff --git a/data/minecraft/structure/village/desert/houses/desert_farm_1.nbt b/data/minecraft/structure/village/desert/houses/desert_farm_1.nbt index 125f568e..8b357de1 100644 --- a/data/minecraft/structure/village/desert/houses/desert_farm_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b51f922619e3d01be7183ebb31983e362cdf7ca6ddae96a71353c1d4fbedb89 -size 715 +oid sha256:56828f026644102b9ba2cf8579357e522265a25f8c32703c4e234d5ef4dc065b +size 714 diff --git a/data/minecraft/structure/village/desert/houses/desert_farm_2.nbt b/data/minecraft/structure/village/desert/houses/desert_farm_2.nbt index 7ab66e38..4fbc499f 100644 --- a/data/minecraft/structure/village/desert/houses/desert_farm_2.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_farm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38d0dbd7c77a3a4209f05d5293698a5840a2b3073121bd2520c6fe5032141f90 -size 887 +oid sha256:8b5ae2f0845b2509d28f5945ef6b78f37faacf19d66c0351244ae65d746f65ca +size 885 diff --git a/data/minecraft/structure/village/desert/houses/desert_fisher_1.nbt b/data/minecraft/structure/village/desert/houses/desert_fisher_1.nbt index 1c33f13e..931b88aa 100644 --- a/data/minecraft/structure/village/desert/houses/desert_fisher_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_fisher_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc012467ae5cbc76ec29e4a1ed59db517e65e8740de293cb6f332207c2bdf152 -size 2286 +oid sha256:f9424c036f002e66c15c1e3781f0a52f210391fe5209cfd62ab165714a134072 +size 2285 diff --git a/data/minecraft/structure/village/desert/houses/desert_fletcher_house_1.nbt b/data/minecraft/structure/village/desert/houses/desert_fletcher_house_1.nbt index bcd87a71..2d3c2bf9 100644 --- a/data/minecraft/structure/village/desert/houses/desert_fletcher_house_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_fletcher_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79eebcd4a9d1f1778eab5da9ae11de9970744e1cc3c57b5b515461ae74916a81 -size 3096 +oid sha256:47bca75cb1db730a5fb3aa1e829d4b301902a02e3368263ac68fdff5b51d98dd +size 3094 diff --git a/data/minecraft/structure/village/desert/houses/desert_large_farm_1.nbt b/data/minecraft/structure/village/desert/houses/desert_large_farm_1.nbt index 3599d3db..323ba5d4 100644 --- a/data/minecraft/structure/village/desert/houses/desert_large_farm_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_large_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11779cc3a2a4418263c2684cb412a6f7d347278b8263f60751f096a9e6339a09 -size 1623 +oid sha256:080135797d685e623ec146104ced67993cdd937aa13a481e2ec4594e58ce3d7c +size 1622 diff --git a/data/minecraft/structure/village/desert/houses/desert_library_1.nbt b/data/minecraft/structure/village/desert/houses/desert_library_1.nbt index 62702d94..8faddb31 100644 --- a/data/minecraft/structure/village/desert/houses/desert_library_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_library_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a03bbe1da2109d3cd7de37adfacdd385a202b13c5d44d8e075edaa8daefe2960 -size 1539 +oid sha256:0daa17e025c4d0863150a0081ef531e11631670b091f2fffb642d3a9ca22bf0b +size 1538 diff --git a/data/minecraft/structure/village/desert/houses/desert_mason_1.nbt b/data/minecraft/structure/village/desert/houses/desert_mason_1.nbt index 7ad72f9c..0788f0ed 100644 --- a/data/minecraft/structure/village/desert/houses/desert_mason_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_mason_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6db72360f76201423aef85d633ce297706ce9307387b0574c8f87fb9a91ffaae -size 1442 +oid sha256:6d2adfb1c296da2d617cba78e2e524bae3fa330d4484791e51b1265ba0a2cd2a +size 1441 diff --git a/data/minecraft/structure/village/desert/houses/desert_medium_house_1.nbt b/data/minecraft/structure/village/desert/houses/desert_medium_house_1.nbt index 3f5a614c..a7a6f325 100644 --- a/data/minecraft/structure/village/desert/houses/desert_medium_house_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a70853cc624c1ad87d398ae7e30aacc96e6c2c1b4065de53244e722ca8e118e +oid sha256:4e59f8608536d21012870d2ff415d2b5cb475f52e1705a5b79c9f75e70d75863 size 1440 diff --git a/data/minecraft/structure/village/desert/houses/desert_medium_house_2.nbt b/data/minecraft/structure/village/desert/houses/desert_medium_house_2.nbt index c0cfad52..dd60ac81 100644 --- a/data/minecraft/structure/village/desert/houses/desert_medium_house_2.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:425f293ee2af4f9634c05de6babbe2ecdae8d06d1dfb93abbee8a7dd88fee51d -size 2838 +oid sha256:19a12a8183960f4fa3da0538c4a37026dd4e41dfba33a0a02a596abc4cabfe18 +size 2837 diff --git a/data/minecraft/structure/village/desert/houses/desert_shepherd_house_1.nbt b/data/minecraft/structure/village/desert/houses/desert_shepherd_house_1.nbt index 9c736937..98d95bc2 100644 --- a/data/minecraft/structure/village/desert/houses/desert_shepherd_house_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_shepherd_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52a8e231aaacbcdb5d7ac8cd973769df02dd6508d4fd0d474eaf709895747df5 -size 1567 +oid sha256:1b925740950bf5dac8780767a7869cfdeb98db6271be37c255c508e44ec101a7 +size 1565 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_1.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_1.nbt index 6623bf33..7d360c83 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac6a32c1b3fdb966cdbd13396f24dd94c4c4c82255931a897c9367ae24daab94 -size 1180 +oid sha256:6a98c0134f4900bddb3654c5e331c08d2c1a14bde05c3a2524ac28c762638ae4 +size 1179 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_2.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_2.nbt index d40f3c5b..9451f842 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_2.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89c997708028401bbe6c19671f75d8de0e0585e3cd921716fa498a2faba29caa -size 1314 +oid sha256:3bd6575d6055e16e1879f10c93987bb28e2b17ac1850dbfd716bc9ae5c83b3b7 +size 1313 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_3.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_3.nbt index ec014cb0..bc316f9e 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_3.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3bc3fceb3fd5989323433be2b7c464a8244331ab429304189e4fa156d159704b -size 1132 +oid sha256:55a3f3d70546e33cb5bd866c7afe21daecef867a843534b00d14a07212454154 +size 1131 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_4.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_4.nbt index 5c0264f1..482a944e 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_4.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ecc9b69f0a2f810a3a5f08bbf1c3801020d9a5cabcfb5fde36f0596d12b7ee5 -size 1055 +oid sha256:de8b7eee6834730eeb6df96b7131ba2a7aa99006bf75937403c3d9879d28b6c0 +size 1053 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_5.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_5.nbt index c695a2aa..ac225daa 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_5.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3286a89f17790aa2d5a349f59c7ea02ed84e46befb1c65213d1adafc263b5111 -size 1108 +oid sha256:6a7abd523d993553c9ca59f7b2fed5838bd111a2e1f458c4b2e5f865fc7339bf +size 1107 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_6.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_6.nbt index 4eb3ec75..3d5ae3b6 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_6.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c7350b71ad3d6430a4e31660cb6de3cd7adab5ba36dc96d8d0233ea349b065f -size 2293 +oid sha256:1726e6b0c016a7a0ca94ac8dbe98814dcc36b005528c1f6eafb0ef8c15003639 +size 2292 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_7.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_7.nbt index 6fc9c6a7..17581717 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_7.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ff6429fa89eb2bbdefad5d4574cbad4abd1ca7f200a9f70cef2eb587d04ab2e -size 1600 +oid sha256:c079f9abccc01736346655ef5dd2fad009cc0734e0fa2314494785de3390862e +size 1598 diff --git a/data/minecraft/structure/village/desert/houses/desert_small_house_8.nbt b/data/minecraft/structure/village/desert/houses/desert_small_house_8.nbt index a1f687cf..ef0ea238 100644 --- a/data/minecraft/structure/village/desert/houses/desert_small_house_8.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:810a6891db2d19012268e375e32acccdd92b485a3f232f0b5f1df9a631513a5a -size 1026 +oid sha256:ed3887e920ae8dc4e851617147d7322c0af89309b9f6b1e444b85668096adfe8 +size 1025 diff --git a/data/minecraft/structure/village/desert/houses/desert_tannery_1.nbt b/data/minecraft/structure/village/desert/houses/desert_tannery_1.nbt index 120d99b6..b5012f6f 100644 --- a/data/minecraft/structure/village/desert/houses/desert_tannery_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_tannery_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:803c880383453492adcc10ee7ba0514895ca9fb36104c357d08d611eb957d88d -size 1836 +oid sha256:e4445307c68d4b819b7d2dfce2e4f8824af079186a8c795f15533b5bf5e1e3b0 +size 1835 diff --git a/data/minecraft/structure/village/desert/houses/desert_temple_1.nbt b/data/minecraft/structure/village/desert/houses/desert_temple_1.nbt index 21aada82..3b490836 100644 --- a/data/minecraft/structure/village/desert/houses/desert_temple_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_temple_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:651a6e909f3fcca52c63daa066c2de88f53b6ee6e8c69a4b4b882cfac32b689b -size 2999 +oid sha256:57bf2772ed6920a25b10de8754d8ae8486920488f3241d1db8e92b7f673ec0a8 +size 2998 diff --git a/data/minecraft/structure/village/desert/houses/desert_temple_2.nbt b/data/minecraft/structure/village/desert/houses/desert_temple_2.nbt index 0e50badb..275f1485 100644 --- a/data/minecraft/structure/village/desert/houses/desert_temple_2.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_temple_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ae94fbc4fca8d0baf232a767942fa8cf2a328185c387bdcbdcda548f48e9b41 -size 2881 +oid sha256:bdb453dc3939bc50540aa412d252abacc772d85269c35ffa53e24e83f8fefbbf +size 2879 diff --git a/data/minecraft/structure/village/desert/houses/desert_tool_smith_1.nbt b/data/minecraft/structure/village/desert/houses/desert_tool_smith_1.nbt index 2431948f..7a7842db 100644 --- a/data/minecraft/structure/village/desert/houses/desert_tool_smith_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_tool_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:946375be419b5cfc2b2c6fe72b6b8b6bfc87b75c77f1073194409a2bce1fd7cc -size 2961 +oid sha256:3eeb18ee915b7c42f891de7b7bc0867716dbfef3e488dd2c8e6842702ef36a51 +size 2962 diff --git a/data/minecraft/structure/village/desert/houses/desert_weaponsmith_1.nbt b/data/minecraft/structure/village/desert/houses/desert_weaponsmith_1.nbt index 4e5102bc..027048be 100644 --- a/data/minecraft/structure/village/desert/houses/desert_weaponsmith_1.nbt +++ b/data/minecraft/structure/village/desert/houses/desert_weaponsmith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c001bc6dce8b8ac0c379e8a3a2cefd26453f9cb5e37750a9f356352335e2bbb7 -size 2066 +oid sha256:271c31d56e121942accda951625c57692114a55418701aa2c1343c0d72d1bd22 +size 2080 diff --git a/data/minecraft/structure/village/desert/streets/corner_01.nbt b/data/minecraft/structure/village/desert/streets/corner_01.nbt index 7fea2a6e..8c66e54d 100644 --- a/data/minecraft/structure/village/desert/streets/corner_01.nbt +++ b/data/minecraft/structure/village/desert/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea1c9da107bd16e541cc079df2e60d1a00a74da49242bc6237cf884ae1d6b00a -size 749 +oid sha256:dcedd78852d4f87a1fdc67fd647ba2aafc6d7e53bdd48cb5b9cc54f7f5d62393 +size 748 diff --git a/data/minecraft/structure/village/desert/streets/corner_02.nbt b/data/minecraft/structure/village/desert/streets/corner_02.nbt index 6f45cb85..2e60433a 100644 --- a/data/minecraft/structure/village/desert/streets/corner_02.nbt +++ b/data/minecraft/structure/village/desert/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1054cedb7c32229d6afb1e129a1a55c301291a4f73a89654528f8d8d71d15b4c -size 469 +oid sha256:04edb47a9649dc10176ebeb484699ed0100ed94f6c930d266a01715cedd27557 +size 468 diff --git a/data/minecraft/structure/village/desert/streets/crossroad_01.nbt b/data/minecraft/structure/village/desert/streets/crossroad_01.nbt index 0f11aae4..16ca28a7 100644 --- a/data/minecraft/structure/village/desert/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/desert/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f7695f348c5820586fd3949ec56f33e1400baa2495a092f5b5f3d2ba57210c9 -size 1273 +oid sha256:92191bc4f557ba934abfae3589f680466744a1b73e6f74dc6b14185dc9b4597a +size 1272 diff --git a/data/minecraft/structure/village/desert/streets/crossroad_02.nbt b/data/minecraft/structure/village/desert/streets/crossroad_02.nbt index 783380d8..3f92770b 100644 --- a/data/minecraft/structure/village/desert/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/desert/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52bb1e78d99592788094ce97c9c27d31804ad290af6fbd7e0e83be9694af20e6 -size 783 +oid sha256:3f19992b8b6eabd2ce9ceba2b59781dbd15d98bb493fb19dc74f56fc2b77b70c +size 781 diff --git a/data/minecraft/structure/village/desert/streets/crossroad_03.nbt b/data/minecraft/structure/village/desert/streets/crossroad_03.nbt index e8bbcc47..df83ce7c 100644 --- a/data/minecraft/structure/village/desert/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/desert/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f7cc5c8105c7c9f06b6e3823fc685605fd45f354f05d86391f4e9d9243ea085 -size 444 +oid sha256:3b6ab7070307b40b3855099c6fa573d4f56e8b0d2ced7ea04b66b4f18b062332 +size 443 diff --git a/data/minecraft/structure/village/desert/streets/square_01.nbt b/data/minecraft/structure/village/desert/streets/square_01.nbt index f758ff91..3730353f 100644 --- a/data/minecraft/structure/village/desert/streets/square_01.nbt +++ b/data/minecraft/structure/village/desert/streets/square_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:360712f80e9a89455f9688648db200ba3d867f692cbd3e4d6ce6eb306ff5b7d6 -size 1582 +oid sha256:308a96df89c863e195252d45fb4caa9381a661bae60c7efadbd668cfed7d0faf +size 1581 diff --git a/data/minecraft/structure/village/desert/streets/square_02.nbt b/data/minecraft/structure/village/desert/streets/square_02.nbt index 7601db41..a4a36ba6 100644 --- a/data/minecraft/structure/village/desert/streets/square_02.nbt +++ b/data/minecraft/structure/village/desert/streets/square_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbc16bd2a672534496e25ef9349574ead7b8a58c5cc490239b538d327cab6b51 -size 1311 +oid sha256:fe2e1fd017cb64b4bd612548b98410e1ddc31dfb84115459a7a9460afa4e2e45 +size 1310 diff --git a/data/minecraft/structure/village/desert/streets/straight_01.nbt b/data/minecraft/structure/village/desert/streets/straight_01.nbt index 3702b2d4..06dc32b3 100644 --- a/data/minecraft/structure/village/desert/streets/straight_01.nbt +++ b/data/minecraft/structure/village/desert/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9be409cd38119cae2ace8126181631cfdc9adecb6d9f73ec1e1457a6a6b3f92f -size 985 +oid sha256:34b5006ef931a38f1f3cc7f48f20a59d169684781b2ea39a7e5ebc3f956a009f +size 984 diff --git a/data/minecraft/structure/village/desert/streets/straight_02.nbt b/data/minecraft/structure/village/desert/streets/straight_02.nbt index 09abab3a..0f3740f3 100644 --- a/data/minecraft/structure/village/desert/streets/straight_02.nbt +++ b/data/minecraft/structure/village/desert/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b287d060cf3409cb172149184b775c6cfe84ad77a40802ed28561fa24ae0c100 -size 1230 +oid sha256:84bfbaa3f005bf5dbc678b48aaa48c8a9cd144eb51d0bf5bc88ca99c11b5ffd7 +size 1229 diff --git a/data/minecraft/structure/village/desert/streets/straight_03.nbt b/data/minecraft/structure/village/desert/streets/straight_03.nbt index 206757b8..1ea72cc8 100644 --- a/data/minecraft/structure/village/desert/streets/straight_03.nbt +++ b/data/minecraft/structure/village/desert/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd8ce3e4af38933330d9030b202ba6c79fbac0768be5080ecdcf3f95e7873d33 -size 323 +oid sha256:3bcbbc318215d39c3435eb793c3f88c7a80a2ed46ca6e87da9d183289adfeb87 +size 322 diff --git a/data/minecraft/structure/village/desert/streets/turn_01.nbt b/data/minecraft/structure/village/desert/streets/turn_01.nbt index 1a50b72d..f54bc1ec 100644 --- a/data/minecraft/structure/village/desert/streets/turn_01.nbt +++ b/data/minecraft/structure/village/desert/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4ec891b5f728667eda22da0e98e5714c08bb9775ada825fbd8bff7f9df5ca82 -size 402 +oid sha256:e0075c1dec330d5f3d7cd9fe3fff6cff3a51622c05c1f6c6733685b935dce877 +size 400 diff --git a/data/minecraft/structure/village/desert/terminators/terminator_01.nbt b/data/minecraft/structure/village/desert/terminators/terminator_01.nbt index bfeb9851..33bfabe3 100644 --- a/data/minecraft/structure/village/desert/terminators/terminator_01.nbt +++ b/data/minecraft/structure/village/desert/terminators/terminator_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e78b45e269e7ef3c1198e6ce6196feb2278d4da5553a0de21f670725501bbda -size 294 +oid sha256:9ea01855094d2f04e2595236554e2e2d2541d0f6305d74752b135245cd6ead0d +size 292 diff --git a/data/minecraft/structure/village/desert/terminators/terminator_02.nbt b/data/minecraft/structure/village/desert/terminators/terminator_02.nbt index fcceee73..e59ffbdd 100644 --- a/data/minecraft/structure/village/desert/terminators/terminator_02.nbt +++ b/data/minecraft/structure/village/desert/terminators/terminator_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fd2a1cdc16e2d63a76dcf0d8c3b1957796a9aaaa94bd5e0e19b1efb06b7a854 -size 373 +oid sha256:a7b5e119f808ce1f568f93abb98a88fd0fe678b221791090e6e764d8b47d30df +size 371 diff --git a/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_1.nbt b/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_1.nbt index 8da7d6b9..b5d56138 100644 --- a/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_1.nbt +++ b/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a968f08bf7c4377b5f228f6cb8e96b1fdf1e84c447af72acb685cf221ad57208 -size 1016 +oid sha256:f1ed69575d2048b3bce5a2ccc7f304e4f0bea6406d4c92399fda7c7535c15cc6 +size 1014 diff --git a/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_2.nbt b/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_2.nbt index 49226ffc..b9fc1090 100644 --- a/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_2.nbt +++ b/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04a6aa45421f2635b36d0cf10bfb62ad24ed2c7e6f9ed23d8788e1e80167b1c9 -size 1835 +oid sha256:472e793bf2757afa0b278bf62b21bcfdcb61a7317db63071c99df7210f636f45 +size 1834 diff --git a/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_3.nbt b/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_3.nbt index 3a226aaf..e6bee167 100644 --- a/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_3.nbt +++ b/data/minecraft/structure/village/desert/town_centers/desert_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d75deccdb251c835a07dfba313458d5d5353f11f6e22e0591a9dfda05a76845 +oid sha256:d85deeb0c3da1cd2bd36c8db343449d2d720ca95d323062e59df383e63f5d9b7 size 1899 diff --git a/data/minecraft/structure/village/desert/villagers/baby.nbt b/data/minecraft/structure/village/desert/villagers/baby.nbt index 4fd2c307..cf77e58c 100644 --- a/data/minecraft/structure/village/desert/villagers/baby.nbt +++ b/data/minecraft/structure/village/desert/villagers/baby.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27a26b47c8c8f31e7989afe16ac650bfcc0b09e773fb3f3ddd967a3ba1f35b6a -size 751 +oid sha256:9c8916ea096657b4caeaa840feb2e62ab6daaf7c2aca19610848dc352adf2ef6 +size 750 diff --git a/data/minecraft/structure/village/desert/villagers/nitwit.nbt b/data/minecraft/structure/village/desert/villagers/nitwit.nbt index 237a27c3..7ac1e592 100644 --- a/data/minecraft/structure/village/desert/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/desert/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fd132ed570664cf6bda00cf2f486ab95ee6d77850e93f7cd1f079189466deaa -size 751 +oid sha256:5d8caaf3fed631531516dbeef760c54475bce0ccff023bd086790b1a0a2318b1 +size 750 diff --git a/data/minecraft/structure/village/desert/villagers/unemployed.nbt b/data/minecraft/structure/village/desert/villagers/unemployed.nbt index 863d8f0a..c48931eb 100644 --- a/data/minecraft/structure/village/desert/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/desert/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac9e6e6d388d962503f3e11b69359f88edd08edab2994c79827629651afc4ac7 +oid sha256:0f6f611115a1001393dd974b8d820bdca0779c11d0b5b9bd0de4a228045d27a9 size 750 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_1.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_1.nbt index 96abe3e1..9c3f1c92 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_1.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9827ca4fbb2950c7840085f9fc3d0cce4435a3d7789a8788dfcb6f98ed8c260b +oid sha256:89d9fa48c2ec1e05ba23af99f98ee66bc27bdafd96502351c7ffee83d125f878 size 1448 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_2.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_2.nbt index e5d46849..89977c85 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_2.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90b293c15977709d04b1b88577af2a4fdae9e063fcfa48671a562c4b7abe28b4 -size 2846 +oid sha256:1f7c16d6e2826f4f067d3298465ba8f21fbc6d4fed18ee25425c10e7da2ce0de +size 2844 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_1.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_1.nbt index 0f1f4003..88df046e 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_1.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94c2f7f42f1c027bacdcb58f96d4072f5f47d55dfdeed28e2b5e83d8b5f740e4 -size 1186 +oid sha256:7742066b3e1d2ea4831a448f2f2b30b8990a5e792e3e7dd720801a35caaa08b7 +size 1184 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_2.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_2.nbt index 226f33e8..3d4ba52b 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_2.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:baea204ef7e6cb31af3e26c23571657c005873d618908a3ed6d6385b82dc543a -size 1319 +oid sha256:a8a31f110d3d3c1c3d51b31c0019c82e13837d09d3904b10b3e3fc5c55bce21b +size 1318 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_3.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_3.nbt index 190ec756..c3dbc5bf 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_3.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e87184ce2c718304cc784c18896d6afa9897fb39ef65b237f11f64c92391fd0 -size 1138 +oid sha256:4944fc81e52dbd7d7e871a97ba36eba28ad28f885fa2240b00b352e61a63304f +size 1137 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_4.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_4.nbt index 31ff850e..338ae238 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_4.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aef2afca495af7d5e5353f76c2f9a4583fe9b5332c5ed866838ddeb43eb2e24a -size 1062 +oid sha256:83c4df47bb4718da556fbfb958e924451c6cc6f15bf4a2622f2ae88008384af7 +size 1060 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_5.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_5.nbt index 1e29568f..2ef2d940 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_5.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:397dde98d9cab87bd3c893cb43ad2afab107a965c848ade9c7cb64e174d1a03b -size 1114 +oid sha256:d2a41e25447848546521ab0cd0fdc470f98858fdd370e529f383065ac554c1ba +size 1113 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_6.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_6.nbt index 95cb19ad..292fda60 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_6.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50d2c624f9ce4ed777edaa6c3dbe99910ee1c17bc681fc795aa2c27a939bfbbf -size 1964 +oid sha256:8a3a7786d1d376c615056fa98f825613e83d0d9c57ea6fb0f51967334bc41d28 +size 1963 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_7.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_7.nbt index 213c40f8..e32888a0 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_7.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:980f962b7225b22da4d3d1d462b29b9423f4125107cdd32c6346034ccc66099a -size 1606 +oid sha256:441309a508ce30209d395175202de0ebc88522a91fa913b39534e90cf124a916 +size 1605 diff --git a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_8.nbt b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_8.nbt index a2e414fd..e5eb46c2 100644 --- a/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_8.nbt +++ b/data/minecraft/structure/village/desert/zombie/houses/desert_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e64dd823abf78f6b72bbd020f2608ba6536fe6d14b9af53f0d8eeff8379639a -size 1031 +oid sha256:1ef6e2fe7a0ae5052e9ab52fef69bc03720137e695a9ce6358b00a8279cba95d +size 1030 diff --git a/data/minecraft/structure/village/desert/zombie/streets/corner_01.nbt b/data/minecraft/structure/village/desert/zombie/streets/corner_01.nbt index 36836cc8..e653ec8b 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/corner_01.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbdaa62b869145c6d53ecffbfde22e2918366a8ade79590490160f31a92c0146 -size 754 +oid sha256:5c532e2f06d0cb64ac11de524472bc9c2d252e274ff40ae1951ba33f6a84a485 +size 753 diff --git a/data/minecraft/structure/village/desert/zombie/streets/corner_02.nbt b/data/minecraft/structure/village/desert/zombie/streets/corner_02.nbt index 2e26a112..d7bf602e 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/corner_02.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1518d52dae25d5b4ab53925001482b1d874e75810bcbba4a66381c6a53817e50 -size 473 +oid sha256:cbf664d493d2261cd29393468d7505723d3b439968a75f60a3407d789d6a6fed +size 471 diff --git a/data/minecraft/structure/village/desert/zombie/streets/crossroad_01.nbt b/data/minecraft/structure/village/desert/zombie/streets/crossroad_01.nbt index 06e1947d..dcde6e49 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2dafed3949ef074d8aca502e9da4ea1d2ae3ca04e576c109346388603a1c38f3 -size 1279 +oid sha256:fbf6d0f9c5a3363cc776b2919e93fe4f7e6c936d472ea9b4e156bbead0c1e1c9 +size 1278 diff --git a/data/minecraft/structure/village/desert/zombie/streets/crossroad_02.nbt b/data/minecraft/structure/village/desert/zombie/streets/crossroad_02.nbt index e6a98f35..e5f8e32c 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f73dd71b93e2791d62696836043794d3b58b8d13e0014d9671a5a0a4af9dfae -size 787 +oid sha256:eb4054c483f15f7ebb0ca499e0e16c3797fab7252aa8bd52758ad77577fe5a56 +size 785 diff --git a/data/minecraft/structure/village/desert/zombie/streets/crossroad_03.nbt b/data/minecraft/structure/village/desert/zombie/streets/crossroad_03.nbt index 30e1d7d3..8a4960dd 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3fb37c550b5d7cbdb5cd73f9546d55dcd6120222c0c91a5b9c3b1fe8ce0884cf -size 450 +oid sha256:0e504f920826c33ac4c7172f498d2c08ee90fa1f42b223bc908071f84026f03f +size 448 diff --git a/data/minecraft/structure/village/desert/zombie/streets/square_01.nbt b/data/minecraft/structure/village/desert/zombie/streets/square_01.nbt index 18cbde81..0fe82c32 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/square_01.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/square_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c655b2da4bd828b239231330757a151477c754d79030783f6fa7c8ab8e4a6817 +oid sha256:f549fee85a4d17ddfd4cc52161ac6234bd29eba11aae3f436e98a11b0de5c410 size 1587 diff --git a/data/minecraft/structure/village/desert/zombie/streets/square_02.nbt b/data/minecraft/structure/village/desert/zombie/streets/square_02.nbt index ff56037b..f41420b9 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/square_02.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/square_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c7d8f094716138692f114f4959a67cc651f62aa0bb635d17ec9306c674b705b -size 1315 +oid sha256:0f6e8bb6d608fde29a4069406ef5ef9123c3e7d8537ae2cc6bdfe4c7fff969d1 +size 1314 diff --git a/data/minecraft/structure/village/desert/zombie/streets/straight_01.nbt b/data/minecraft/structure/village/desert/zombie/streets/straight_01.nbt index 1b7e3e29..c39facca 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/straight_01.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:892b32a4551ca47d297fed7038a27678724f6bb4093a85eda0101c50e22dd7f0 -size 989 +oid sha256:dbec838fbe9c0704f1aec9f18a5f75242c426e330d55dc3d6e78fec4a502162e +size 988 diff --git a/data/minecraft/structure/village/desert/zombie/streets/straight_02.nbt b/data/minecraft/structure/village/desert/zombie/streets/straight_02.nbt index e1ca9b4e..77756ede 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/straight_02.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5eb6c6741af16c07d67e69c551f5f1e90ff0d066947a9dba0bb2285bb4eac3c -size 1234 +oid sha256:a061cfc2fed86e1953f836faf69da1a04a641787011ac4aa72eecdc42dcd320a +size 1233 diff --git a/data/minecraft/structure/village/desert/zombie/streets/straight_03.nbt b/data/minecraft/structure/village/desert/zombie/streets/straight_03.nbt index b2f8fb56..f958ebdd 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/straight_03.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3dd41daeca1bc09991d1e2571d8c2525192adb35f30f361f2d5f235231de01a -size 328 +oid sha256:d4a68c54591abeee11096848bc169ff897d18b10e71d60436747e60c8e77d57f +size 327 diff --git a/data/minecraft/structure/village/desert/zombie/streets/turn_01.nbt b/data/minecraft/structure/village/desert/zombie/streets/turn_01.nbt index e0327fec..5e8d78cc 100644 --- a/data/minecraft/structure/village/desert/zombie/streets/turn_01.nbt +++ b/data/minecraft/structure/village/desert/zombie/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37222692e9b15925b45196f19705c7532bfc6d8a1f0ee73f02fb79502a95c398 -size 406 +oid sha256:f14211fd8dff66de834ca49c70c463ed4f9c1546442f36ebeb053c195dd0e57a +size 404 diff --git a/data/minecraft/structure/village/desert/zombie/terminators/terminator_02.nbt b/data/minecraft/structure/village/desert/zombie/terminators/terminator_02.nbt index 137e5366..d93a8e98 100644 --- a/data/minecraft/structure/village/desert/zombie/terminators/terminator_02.nbt +++ b/data/minecraft/structure/village/desert/zombie/terminators/terminator_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:883ed3109e27fd457358f573386102d3cee137f0fb69c099a2d354b4b38b1912 -size 377 +oid sha256:32754ed75c522e09e359a01ec5800addcffe511fab87456d00c2be0c65163d1c +size 376 diff --git a/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_1.nbt b/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_1.nbt index 26a4a1b5..dcc1e13a 100644 --- a/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_1.nbt +++ b/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85199fec7a87eaf6b8585e7187909fee2814933db086cee5bc853e3bc2c489ac -size 1128 +oid sha256:c9135de41f7c763cab82eb79c4216746dd93b976ca08e7dc42e9f8f8add658b6 +size 1127 diff --git a/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_2.nbt b/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_2.nbt index 58166989..28c96c2e 100644 --- a/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_2.nbt +++ b/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6464db749db21f811ddc510f9e2d25a6b7fca781e273df37f6fb2eee100452c7 -size 2313 +oid sha256:aca3693cbd1ee86bdd77d96386bf8a2acb6f2340b5cf54052913c25a0f7dda72 +size 2311 diff --git a/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_3.nbt b/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_3.nbt index 7a715a7f..de467e33 100644 --- a/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_3.nbt +++ b/data/minecraft/structure/village/desert/zombie/town_centers/desert_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c4f54741e9d8a32d1ec0a6a2182b62e49783d13d668ed12bc18e27e43c2c827 -size 4580 +oid sha256:6b33ca574d43b15e1b99bc1f40d6e2d27dbb990bcd7fa1d00d9c782b495907ce +size 4579 diff --git a/data/minecraft/structure/village/desert/zombie/villagers/nitwit.nbt b/data/minecraft/structure/village/desert/zombie/villagers/nitwit.nbt index 7235f6f6..87e7ab4e 100644 --- a/data/minecraft/structure/village/desert/zombie/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/desert/zombie/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21b175a7ef8acf456061c97d0b8983eade0db2f20e72d603e56d8c23dc1818c6 +oid sha256:dd0b9f99a059b5e263b78eaa8ff7431824ca021c0c01b15c3177de3b8bec9802 size 755 diff --git a/data/minecraft/structure/village/desert/zombie/villagers/unemployed.nbt b/data/minecraft/structure/village/desert/zombie/villagers/unemployed.nbt index d0affb64..b9c9718c 100644 --- a/data/minecraft/structure/village/desert/zombie/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/desert/zombie/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62a296211fb1708890d790e402ca4f6093f6418fe27396f92fac94f1feb9fbfb +oid sha256:bdc73290673630044c4850780f763a88b303a460f81e70f64f71ad2144c7f984 size 755 diff --git a/data/minecraft/structure/village/plains/houses/plains_accessory_1.nbt b/data/minecraft/structure/village/plains/houses/plains_accessory_1.nbt index a1ff1474..a38b9c8d 100644 --- a/data/minecraft/structure/village/plains/houses/plains_accessory_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_accessory_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ad8cb7bc7ed1bda57946d90242f8c7956f7e4c56d04383af8dfd71b2f301a3e -size 523 +oid sha256:9a1e0b34dc1baa678756723530f9c31437b1ebfa7f5471621cd314da9fbc48f7 +size 522 diff --git a/data/minecraft/structure/village/plains/houses/plains_animal_pen_1.nbt b/data/minecraft/structure/village/plains/houses/plains_animal_pen_1.nbt index 4b491977..41940ab6 100644 --- a/data/minecraft/structure/village/plains/houses/plains_animal_pen_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_animal_pen_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b54ddc33c7e2103e2219a789764410d64e59f0bb790beafdea204a62028b2bc1 -size 726 +oid sha256:72b8d74e2add718421767df9cf8a48ac9928940f7a152abd7c71e0b35c276aee +size 723 diff --git a/data/minecraft/structure/village/plains/houses/plains_animal_pen_2.nbt b/data/minecraft/structure/village/plains/houses/plains_animal_pen_2.nbt index af8715e6..6a256aef 100644 --- a/data/minecraft/structure/village/plains/houses/plains_animal_pen_2.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_animal_pen_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:623f7d42f1fa1285c461535dbbb68bf41d73e0ead0f48dc0be48088c7149fe8a -size 1013 +oid sha256:3701734322a2fc573feb593390f86681557a861e745daa71456ab860479774b6 +size 1010 diff --git a/data/minecraft/structure/village/plains/houses/plains_animal_pen_3.nbt b/data/minecraft/structure/village/plains/houses/plains_animal_pen_3.nbt index f8c787b3..4fc6f595 100644 --- a/data/minecraft/structure/village/plains/houses/plains_animal_pen_3.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_animal_pen_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1728db91d5bd6305933e180e80d0e8c855044427f3a190cdffb82c7420d6dac8 -size 1354 +oid sha256:1101d828c0ffdaa6c2bef6e38fdb05b6d68fdbb281b8af56146a54ca5983cd42 +size 1352 diff --git a/data/minecraft/structure/village/plains/houses/plains_armorer_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_armorer_house_1.nbt index b431411d..dec7a78d 100644 --- a/data/minecraft/structure/village/plains/houses/plains_armorer_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_armorer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3effbdc0be096d8693368a84655f970c9e5bab6855cadfdbb132fe0dbccef24 -size 2612 +oid sha256:2c1371d9122e7160c93aefce03fe3c586dbe5ad61099cc61a7574c3f0c1b388b +size 2629 diff --git a/data/minecraft/structure/village/plains/houses/plains_big_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_big_house_1.nbt index 59cfcbc1..ec99eb11 100644 --- a/data/minecraft/structure/village/plains/houses/plains_big_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_big_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c091a572fb3d12e7df2c53af883e119738b209198d1a3f35a5f16fab50050d9 -size 3263 +oid sha256:a0a7b429353a131d743115fa2a23bc0c1087ca0ac3efb6a7e2c85aea8938477a +size 3262 diff --git a/data/minecraft/structure/village/plains/houses/plains_butcher_shop_1.nbt b/data/minecraft/structure/village/plains/houses/plains_butcher_shop_1.nbt index afed88e2..81f7d501 100644 --- a/data/minecraft/structure/village/plains/houses/plains_butcher_shop_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_butcher_shop_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e4fb5fb8e5d4ec0f6abfedf25c281d07a7481a4e3333bb4f5c4c5511e2f4fcd -size 4166 +oid sha256:c3d7d27f6553d999de09753a1278d114a772a95f212928005533d75c21129ac7 +size 4181 diff --git a/data/minecraft/structure/village/plains/houses/plains_butcher_shop_2.nbt b/data/minecraft/structure/village/plains/houses/plains_butcher_shop_2.nbt index 35acd41e..749c4f7e 100644 --- a/data/minecraft/structure/village/plains/houses/plains_butcher_shop_2.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_butcher_shop_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdc6eee29aed6979548bb127a07fd755cd9cda2402e943feb2f20d21f420092f -size 4561 +oid sha256:627f1717ba024b245722202e8bb45700e171331ca9385b5ce511c86981429141 +size 4579 diff --git a/data/minecraft/structure/village/plains/houses/plains_cartographer_1.nbt b/data/minecraft/structure/village/plains/houses/plains_cartographer_1.nbt index 91e57dae..434fbb0c 100644 --- a/data/minecraft/structure/village/plains/houses/plains_cartographer_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_cartographer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3a199171cde2059b6764845cd1f1f28bca7869f6f8de427925a82e5b3bd83b9 -size 2393 +oid sha256:9bc7554d54c84fd84116cb91501bfe9327c8c6f1d5e06a072ea9f0ffd1c50c02 +size 2392 diff --git a/data/minecraft/structure/village/plains/houses/plains_fisher_cottage_1.nbt b/data/minecraft/structure/village/plains/houses/plains_fisher_cottage_1.nbt index 8d2432a6..b0273d59 100644 --- a/data/minecraft/structure/village/plains/houses/plains_fisher_cottage_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_fisher_cottage_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4209bdee17df555ec7644290dc80b6601722e75e5e3c5031fe5e91e53e83d8d7 -size 3527 +oid sha256:4ac0a62750f75e3dafc9b73ca3f674bfd980929c37523d3e26f3fe5eed62d5dd +size 3526 diff --git a/data/minecraft/structure/village/plains/houses/plains_fletcher_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_fletcher_house_1.nbt index ab7d959c..83350b32 100644 --- a/data/minecraft/structure/village/plains/houses/plains_fletcher_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_fletcher_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:850a807fdbb6f8e13846d6b546599f84e912e0830e458f2b9dad272a859cb399 -size 2914 +oid sha256:64bb1c9b164c1c268af3f15a26bee1ba92ec8c4d75a84ba2f1eb370ea046e54b +size 2913 diff --git a/data/minecraft/structure/village/plains/houses/plains_large_farm_1.nbt b/data/minecraft/structure/village/plains/houses/plains_large_farm_1.nbt index 7447fc86..3a64e98d 100644 --- a/data/minecraft/structure/village/plains/houses/plains_large_farm_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_large_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbdf87b6ede87256192a40eb052ba429a09b9bec2d42998b5ed55279ebf475ae -size 1157 +oid sha256:397c9cd0547d0cbd7c8a6e295f35eb76e9028fe048e538aa5fdb5d9d30e75014 +size 1156 diff --git a/data/minecraft/structure/village/plains/houses/plains_library_1.nbt b/data/minecraft/structure/village/plains/houses/plains_library_1.nbt index ba95dd64..ba4cdf50 100644 --- a/data/minecraft/structure/village/plains/houses/plains_library_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_library_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bd6ad5e428f546d6ed1f589a9b2ff94452feae7fcef5a86fbe9e28dd408d775 -size 6515 +oid sha256:c4f8c64ed7656bc75f49a8ab250042fe91458968e53654b5f9d5299ee203d7e5 +size 6512 diff --git a/data/minecraft/structure/village/plains/houses/plains_library_2.nbt b/data/minecraft/structure/village/plains/houses/plains_library_2.nbt index b3d5d055..4ba53724 100644 --- a/data/minecraft/structure/village/plains/houses/plains_library_2.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_library_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:704316bf6014f05f375eb80b478781672244454503f0b986b702e8ab8ae9e98a -size 2917 +oid sha256:ddeb33e32763e39ca947283340f99df5bea953a42ae0e3561b95610d3463f482 +size 2916 diff --git a/data/minecraft/structure/village/plains/houses/plains_masons_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_masons_house_1.nbt index 68972808..7b38f293 100644 --- a/data/minecraft/structure/village/plains/houses/plains_masons_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_masons_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8c3f59762aad1b50ee93b1519820855d4a11bfba2a971042371fd01842c2fce -size 2296 +oid sha256:4280152ba2cd583876b626a78acef8a5a415792d8f28e0d4cc99569561de0146 +size 2294 diff --git a/data/minecraft/structure/village/plains/houses/plains_medium_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_medium_house_1.nbt index e33f7ac7..168200d7 100644 --- a/data/minecraft/structure/village/plains/houses/plains_medium_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83142bd31dfd436d6d2da737244af8ec28c45797123f0f25cde817ae8d95f048 -size 4241 +oid sha256:548ceb4a46a3ff6b2f1332959f2e8dd65aa2a66f5876e8ccda815790604137f2 +size 4239 diff --git a/data/minecraft/structure/village/plains/houses/plains_medium_house_2.nbt b/data/minecraft/structure/village/plains/houses/plains_medium_house_2.nbt index 1c2db009..12f5c64b 100644 --- a/data/minecraft/structure/village/plains/houses/plains_medium_house_2.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:054d68f059341e67ed48a3e0a534f2558d357168c709edbf777f26a64f54b3bb -size 2543 +oid sha256:d465294d672b5a7a148e81bf3c18aa07511ea365e00edd3fe0589713baaa7007 +size 2541 diff --git a/data/minecraft/structure/village/plains/houses/plains_meeting_point_4.nbt b/data/minecraft/structure/village/plains/houses/plains_meeting_point_4.nbt index 541a0a2c..788f1cb9 100644 --- a/data/minecraft/structure/village/plains/houses/plains_meeting_point_4.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_meeting_point_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:481d6dfbc29f5f5522558aed209a5dcf06dcdd3cab217f7febdd6757086d7f65 -size 3906 +oid sha256:436154301068240ab27dc5e46288aadd4320699272dd4ff3332379163498b64b +size 3905 diff --git a/data/minecraft/structure/village/plains/houses/plains_meeting_point_5.nbt b/data/minecraft/structure/village/plains/houses/plains_meeting_point_5.nbt index 4fa75dda..5dfe5d28 100644 --- a/data/minecraft/structure/village/plains/houses/plains_meeting_point_5.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_meeting_point_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5e4c37c955450523ecc840dcc44eec536aaf4f87ecadf4466e489d8a71c5e69 -size 2652 +oid sha256:4731063ebf0d5e38128493b02a7307b3d85155f009fa1f0772fdbe19a11ac2cd +size 2651 diff --git a/data/minecraft/structure/village/plains/houses/plains_shepherds_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_shepherds_house_1.nbt index e3863ea3..3d48e0cf 100644 --- a/data/minecraft/structure/village/plains/houses/plains_shepherds_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_shepherds_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c6dd3e1a7e5b282d90731054b931155c2b17d95e6c72f841621a61d111bc19f -size 2915 +oid sha256:45b79f644ef354f137b8b1fc65694e64b7f1157aa1d44b16d337310783936d37 +size 2914 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_farm_1.nbt b/data/minecraft/structure/village/plains/houses/plains_small_farm_1.nbt index 4b041ea7..5268183f 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_farm_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5220b249d54d02ef384c99a85a23ec7f7224fce205418d1cb9cdf81875011b50 -size 773 +oid sha256:509f06534d015c6d3c40be85a7d8d16ebf3dc1c510ba79dc515b31f22ddd043b +size 772 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_1.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_1.nbt index d16f4eef..0397e30f 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71d13c83774c151256b5cd385a766d220036e6e6b4c4d24580e2a722459cfab3 -size 1809 +oid sha256:98f65e0cb0adc4648d362e93196b729ef318cbe198570f2ac92453a37001babb +size 1807 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_2.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_2.nbt index 395411c7..549673d6 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_2.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe1fe8ea97335126a023d647ae32d04e5296ea34c29c1db69bbcd0a4a0b8fe75 -size 1700 +oid sha256:f2fb78f7f7f1eefdacd67e57faed91f886b7885ae0f6b9fe90825aaf8ff1f21c +size 1698 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_3.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_3.nbt index c574a786..6e6596d5 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_3.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17350128e1eaf62f0d7d95384a7608940fa835abe89dbdbf0d3790137a413d7d -size 1803 +oid sha256:41865088221ced1a036ccf5c3fca9b891ec71aa5b31dc21978345448e9b19ed8 +size 1800 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_4.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_4.nbt index 945a855e..5ff74fda 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_4.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bf85d2a6a92482548b4f40f87775c9409ca2d72774ef03daf76f1cc70efbdfd -size 1726 +oid sha256:cf2bd83504e6687038f469a7e7c161efd3579faeb06aa41f79f64a9ac6d68725 +size 1724 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_5.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_5.nbt index 93cdfbf9..ff9f5d28 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_5.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94a322e4dad5d6f2432dc4274230916b2b9f5765fe227361197d29ca38168dc7 -size 3491 +oid sha256:e0ee16384502cca7ff190f2fb61e47bd572922ebb243e74a9d39e50dffa88146 +size 3489 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_6.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_6.nbt index ca8f7a45..1dcb2c0a 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_6.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c3ad1d494911fa09bb99716935bb847489554bb7fd08d15d4373223b7f01d06 -size 1775 +oid sha256:9b57d7950b56fa1f3165f9c06eacdf490c5826d21200164d9b0de46446c790d6 +size 1774 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_7.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_7.nbt index d5235626..613ced51 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_7.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c10991a08a82887cad2723a7c1f803a2fc029474811f489ee97149b19b778d4e -size 2036 +oid sha256:dfc4d068179cf8604c1e0582632d8e6f69882a6ff4d24f23a1f982bb0bb0661d +size 2034 diff --git a/data/minecraft/structure/village/plains/houses/plains_small_house_8.nbt b/data/minecraft/structure/village/plains/houses/plains_small_house_8.nbt index 45d083f8..a7c1ff2a 100644 --- a/data/minecraft/structure/village/plains/houses/plains_small_house_8.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d3f39484536ab5db26ec4f7d5ba1acde723c9500ad8b1a4a33e8b43e462aecd -size 2683 +oid sha256:78a1891edddaf5d9a04119580babcfe7cd56145031b03f9f09915af6758701fa +size 2682 diff --git a/data/minecraft/structure/village/plains/houses/plains_stable_1.nbt b/data/minecraft/structure/village/plains/houses/plains_stable_1.nbt index f37933e1..ded5df8a 100644 --- a/data/minecraft/structure/village/plains/houses/plains_stable_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_stable_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acefc0c9d59ba674311b94ac2861204b87e61abcb611ae591d5e5fca7e94d21f +oid sha256:46e6f5348de5ad9bb2955c9f48518b9a731b8bdea19e6ba36e0a22e8c89fa534 size 3779 diff --git a/data/minecraft/structure/village/plains/houses/plains_stable_2.nbt b/data/minecraft/structure/village/plains/houses/plains_stable_2.nbt index 7ae3e220..a42c3ec5 100644 --- a/data/minecraft/structure/village/plains/houses/plains_stable_2.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_stable_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3b33fe15982aa7e143951149140cb6cfae5e2d3ed3daca893cf50f566e470a0 -size 3072 +oid sha256:f252af9d4bacd56675bbafb1753a94a0e5484c1a01c53f05ecdc3e655e33711a +size 3071 diff --git a/data/minecraft/structure/village/plains/houses/plains_tannery_1.nbt b/data/minecraft/structure/village/plains/houses/plains_tannery_1.nbt index f9d19128..f9192dd2 100644 --- a/data/minecraft/structure/village/plains/houses/plains_tannery_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_tannery_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87d28f405dd93c528fae465d7c7b2c384dc4c439fd0bb1bc4f96d98946decb02 +oid sha256:0c76819d456b26f6b6952bd3702acffc7b2a344b33e2503df17cda4c846d313e size 2502 diff --git a/data/minecraft/structure/village/plains/houses/plains_temple_3.nbt b/data/minecraft/structure/village/plains/houses/plains_temple_3.nbt index 4ef375d6..49642a28 100644 --- a/data/minecraft/structure/village/plains/houses/plains_temple_3.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_temple_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2608116262430ca154d5b8a8839b8dd300299311b3f0486b5217ca406fe51b85 -size 2493 +oid sha256:d6b8efb523ecca256974502e01c40cc863e02f44c7763787ffd7c9390d9bf3d6 +size 2491 diff --git a/data/minecraft/structure/village/plains/houses/plains_temple_4.nbt b/data/minecraft/structure/village/plains/houses/plains_temple_4.nbt index 686df3b4..741502c8 100644 --- a/data/minecraft/structure/village/plains/houses/plains_temple_4.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_temple_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7a69d62b968033f68e1fba2928f3862395433685153c75e1d09e4acc5e0a948 -size 3211 +oid sha256:9e82889c37397583474d4c6857e06be3a1884913b9979fd962bf5d3af683c0c1 +size 3210 diff --git a/data/minecraft/structure/village/plains/houses/plains_tool_smith_1.nbt b/data/minecraft/structure/village/plains/houses/plains_tool_smith_1.nbt index 3cae0f78..a0dd1f60 100644 --- a/data/minecraft/structure/village/plains/houses/plains_tool_smith_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_tool_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c75d1baeaa57b5d8c05cf419bec84254d98ed149439ec6e8587dd33f5baf9db -size 2675 +oid sha256:0679725cfdc2221cbdd6372ce930f109a2c59281d256bd507a69666214051763 +size 2674 diff --git a/data/minecraft/structure/village/plains/houses/plains_weaponsmith_1.nbt b/data/minecraft/structure/village/plains/houses/plains_weaponsmith_1.nbt index 24c8549f..925e2169 100644 --- a/data/minecraft/structure/village/plains/houses/plains_weaponsmith_1.nbt +++ b/data/minecraft/structure/village/plains/houses/plains_weaponsmith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:132f833d4fed9328e0c441bbe3cc2a9f34dccfb29f9cc03a40e4ac5320e9e0b3 -size 3342 +oid sha256:4d1019d3fc46a3ba3c0b235c322924669bdbf697c5e5b681fabb7415c9d45226 +size 3362 diff --git a/data/minecraft/structure/village/plains/plains_lamp_1.nbt b/data/minecraft/structure/village/plains/plains_lamp_1.nbt index dfa0015e..d25d6c72 100644 --- a/data/minecraft/structure/village/plains/plains_lamp_1.nbt +++ b/data/minecraft/structure/village/plains/plains_lamp_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3d3f889281a3d7f4ff4e6531b5696cc5d1632e772c3ebc9dc3003284b33b901 -size 470 +oid sha256:488ffbcbd1de020fd0ccbce32f6aa9120684eeb6fc97248cc059da5863c19fd1 +size 468 diff --git a/data/minecraft/structure/village/plains/streets/corner_01.nbt b/data/minecraft/structure/village/plains/streets/corner_01.nbt index 99315c5d..3a4ba1da 100644 --- a/data/minecraft/structure/village/plains/streets/corner_01.nbt +++ b/data/minecraft/structure/village/plains/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c929f569c4734f09d33f6d3da653bad925d9be6ab1ec5c5c45ac71debaab8ad8 -size 1183 +oid sha256:90b9a33a5cc3828c43a53d5a2dfb41e5b8e0f5cf15e242555c3ef84f29a3f6a8 +size 1182 diff --git a/data/minecraft/structure/village/plains/streets/corner_02.nbt b/data/minecraft/structure/village/plains/streets/corner_02.nbt index 5141ea03..7eba4d9b 100644 --- a/data/minecraft/structure/village/plains/streets/corner_02.nbt +++ b/data/minecraft/structure/village/plains/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d7adbfe867c364d5895cde32da8cf4b2a2ae5737c9ce4e329e1dec93b357a98 -size 1110 +oid sha256:8c2825f9123f8194254b1b1d0200b202a83c551e03ec79445d1e0477ac7845bd +size 1108 diff --git a/data/minecraft/structure/village/plains/streets/corner_03.nbt b/data/minecraft/structure/village/plains/streets/corner_03.nbt index 5121d37d..e518a3d5 100644 --- a/data/minecraft/structure/village/plains/streets/corner_03.nbt +++ b/data/minecraft/structure/village/plains/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a003f659748ca879cc3031b3b02c38b1187996b596814af173172b8b7d0b421a -size 352 +oid sha256:fc43b063c663e3bd537eae24d4295a03f6d231bae753f0f8314413cdc82715e1 +size 350 diff --git a/data/minecraft/structure/village/plains/streets/crossroad_01.nbt b/data/minecraft/structure/village/plains/streets/crossroad_01.nbt index ef35b2c5..2cebbe7a 100644 --- a/data/minecraft/structure/village/plains/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/plains/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d24c7e3b8bef28d1c981a1e9ba43b56db6857eba8824512c2791f100b40732a -size 1216 +oid sha256:3f7f3969e96b14315fb6a861d4bc8db5fe12ebefdb4299d447f14af08eb308b5 +size 1215 diff --git a/data/minecraft/structure/village/plains/streets/crossroad_02.nbt b/data/minecraft/structure/village/plains/streets/crossroad_02.nbt index 621b8028..20c1bd65 100644 --- a/data/minecraft/structure/village/plains/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/plains/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d3fb3ae66999f3b741557ab19097533d6f03b6a34409a216ca17c2a79d8889c -size 1161 +oid sha256:b4627f3dc7afe1678d17facd5458e4e2bf0f74fc19f8f3d52e6d38967872c283 +size 1160 diff --git a/data/minecraft/structure/village/plains/streets/crossroad_03.nbt b/data/minecraft/structure/village/plains/streets/crossroad_03.nbt index 16d40da9..5be51949 100644 --- a/data/minecraft/structure/village/plains/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/plains/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:155cd4140c6785809369a001927ab13cb61abaff6aca0ae7799d634d4297d6a3 -size 1205 +oid sha256:9f18b9cb4efa79d889a6a8450389a63dc376df3c1707a47e0e158f770211e37e +size 1203 diff --git a/data/minecraft/structure/village/plains/streets/crossroad_04.nbt b/data/minecraft/structure/village/plains/streets/crossroad_04.nbt index ce77ba5d..353d5fc9 100644 --- a/data/minecraft/structure/village/plains/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/plains/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:227dd5fdb7faaae867b184229a65fbddd0ad3e2cc85ec1c483b729e94746937a -size 378 +oid sha256:5b4d929b328c9b7cfa42d424860db506b3d22766cb3a0da699bc858092586324 +size 377 diff --git a/data/minecraft/structure/village/plains/streets/crossroad_05.nbt b/data/minecraft/structure/village/plains/streets/crossroad_05.nbt index a6d8f6d5..8264ac49 100644 --- a/data/minecraft/structure/village/plains/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/plains/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:064941d74072998b4431bde8867daebf3dadc27c433192b7b9affa31679371b7 -size 410 +oid sha256:df11c3993cb23e2c0996114bf913252780577d72124d393c4a93596ef20cf85c +size 409 diff --git a/data/minecraft/structure/village/plains/streets/crossroad_06.nbt b/data/minecraft/structure/village/plains/streets/crossroad_06.nbt index f97992bc..bb2b3a30 100644 --- a/data/minecraft/structure/village/plains/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/plains/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82a212f2611ddbb2679382074a5da36b2b81a6f8cf7dcf5636531f9363c16594 -size 472 +oid sha256:b9eba2672498e622e761bfb6bd4d09fe719cd65765762b565a42d0234be7c883 +size 470 diff --git a/data/minecraft/structure/village/plains/streets/straight_01.nbt b/data/minecraft/structure/village/plains/streets/straight_01.nbt index 7133c301..e7eda7a2 100644 --- a/data/minecraft/structure/village/plains/streets/straight_01.nbt +++ b/data/minecraft/structure/village/plains/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f7cc1da78a9a03a77b7f14b385139136de1647354ae8db38d13ed335fbf0547 -size 1132 +oid sha256:2edfa2048087684b8abe72bad05c9a917601271a69a0568f764ba1e37f17efd0 +size 1131 diff --git a/data/minecraft/structure/village/plains/streets/straight_02.nbt b/data/minecraft/structure/village/plains/streets/straight_02.nbt index 44592a2b..fbbce8bc 100644 --- a/data/minecraft/structure/village/plains/streets/straight_02.nbt +++ b/data/minecraft/structure/village/plains/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:910305923b8a5d1f7fbe1129bef33af5374e4c84e70097c843d20553440af675 -size 1085 +oid sha256:9a2a3dc59fac7f40983960b485c0896f9b91c99ababb7ac07b3e68d64dba5599 +size 1084 diff --git a/data/minecraft/structure/village/plains/streets/straight_03.nbt b/data/minecraft/structure/village/plains/streets/straight_03.nbt index 9e6a6445..d2ad63fa 100644 --- a/data/minecraft/structure/village/plains/streets/straight_03.nbt +++ b/data/minecraft/structure/village/plains/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f10962fe8bd23f98453dbf94b5955e2d6a79dea2c398bdc35f1eddec840d9168 -size 778 +oid sha256:fd6719905e07d2e7cbbf7c14a89dcea432b9f1204d26f92d613eb31ddf619472 +size 776 diff --git a/data/minecraft/structure/village/plains/streets/straight_04.nbt b/data/minecraft/structure/village/plains/streets/straight_04.nbt index ce20119b..a092d04a 100644 --- a/data/minecraft/structure/village/plains/streets/straight_04.nbt +++ b/data/minecraft/structure/village/plains/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0c6b318f1e6781a5352f939ff9ffc0fcb63feb1ab01104336a0e74028deb454 -size 635 +oid sha256:dccfad6ed79b8ea199de910e10a74289dd6ddb5c47f44ee56814db0ec56fce19 +size 633 diff --git a/data/minecraft/structure/village/plains/streets/straight_05.nbt b/data/minecraft/structure/village/plains/streets/straight_05.nbt index 987e1260..788800f8 100644 --- a/data/minecraft/structure/village/plains/streets/straight_05.nbt +++ b/data/minecraft/structure/village/plains/streets/straight_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13455ea5ebd7ec1053aef0316cb8b4af8ea3f01352ed86f520885dab1cf1b39d -size 1330 +oid sha256:89b994c4e6b2af99626fac9a6457b43db25847fff7f25d1c390a2fce5aa85fed +size 1328 diff --git a/data/minecraft/structure/village/plains/streets/straight_06.nbt b/data/minecraft/structure/village/plains/streets/straight_06.nbt index 960cfb3d..79c5b33e 100644 --- a/data/minecraft/structure/village/plains/streets/straight_06.nbt +++ b/data/minecraft/structure/village/plains/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b931784a786f3d7a632140c0870bb7840f714cf5bb574b2cf19dd1915a3c0081 -size 1704 +oid sha256:2ff971f3e548d3cb84e190535cc1f9d6f5561ac5ea71344424e71b5c23d6610b +size 1703 diff --git a/data/minecraft/structure/village/plains/streets/turn_01.nbt b/data/minecraft/structure/village/plains/streets/turn_01.nbt index 64205d77..30321470 100644 --- a/data/minecraft/structure/village/plains/streets/turn_01.nbt +++ b/data/minecraft/structure/village/plains/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7cde992128c5106f6015995e4b343f7ff135a3164ccc661924efcb47fd896c8f -size 790 +oid sha256:dc3c835f595084553b53a03e50d4c4c69d8fdbf72e74478dda6bc5048b413db3 +size 789 diff --git a/data/minecraft/structure/village/plains/terminators/terminator_01.nbt b/data/minecraft/structure/village/plains/terminators/terminator_01.nbt index 1763a46e..e80c0d27 100644 --- a/data/minecraft/structure/village/plains/terminators/terminator_01.nbt +++ b/data/minecraft/structure/village/plains/terminators/terminator_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2529783c4af944f4133ba357c81efc41d595c5bde7695a3577a9cbdf65a6d078 -size 285 +oid sha256:37c86d361d8301c56bf17699c05db365eda672ddac04d963325299618e7666d8 +size 283 diff --git a/data/minecraft/structure/village/plains/terminators/terminator_02.nbt b/data/minecraft/structure/village/plains/terminators/terminator_02.nbt index 04f6a22c..9000cf93 100644 --- a/data/minecraft/structure/village/plains/terminators/terminator_02.nbt +++ b/data/minecraft/structure/village/plains/terminators/terminator_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d920d371cd887a3ccc83502caee4b1890755d3dd9adc5faee20c009472b2f21b -size 251 +oid sha256:2d0d359d47e4cf80b564029d8fd96fc382a108a38ce0e8570367b9d0888acbf7 +size 250 diff --git a/data/minecraft/structure/village/plains/terminators/terminator_03.nbt b/data/minecraft/structure/village/plains/terminators/terminator_03.nbt index e49b0a79..0f49b7e5 100644 --- a/data/minecraft/structure/village/plains/terminators/terminator_03.nbt +++ b/data/minecraft/structure/village/plains/terminators/terminator_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5ce87fadd4e41bd34c38b508adaa5c949b039c0658cd6e4c400a90f69d10368 -size 292 +oid sha256:0db93090534a64d17309ad1f3a935ca8c3ece35b8508c5b862f89b3147a9f2d0 +size 291 diff --git a/data/minecraft/structure/village/plains/terminators/terminator_04.nbt b/data/minecraft/structure/village/plains/terminators/terminator_04.nbt index f57595d0..5a3db358 100644 --- a/data/minecraft/structure/village/plains/terminators/terminator_04.nbt +++ b/data/minecraft/structure/village/plains/terminators/terminator_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:534e5850e5ced123e0e4ee1524805be03a1b36fc78678309e1a8afc3099d9ef9 -size 322 +oid sha256:93204aff54022f38c004d91c35d3feffa8150733987c7e571f43c86f409ee2d3 +size 320 diff --git a/data/minecraft/structure/village/plains/town_centers/plains_fountain_01.nbt b/data/minecraft/structure/village/plains/town_centers/plains_fountain_01.nbt index e34dcf69..0481b054 100644 --- a/data/minecraft/structure/village/plains/town_centers/plains_fountain_01.nbt +++ b/data/minecraft/structure/village/plains/town_centers/plains_fountain_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cf765bebe9ad32f9780fd70cc23b1c166b3749c400a6e4a6aff5a3a56186fce +oid sha256:d5dbf286448f954a9501717b37219ff3f94feea68cebcb9a93733cc63fa42838 size 957 diff --git a/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_1.nbt b/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_1.nbt index 2b32abcb..55c70384 100644 --- a/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_1.nbt +++ b/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7adf13c4860707a189ec3b536bad07ec16380b269f59af2e237a3b751f9347af -size 1052 +oid sha256:590e41ce91451a9ab37d9413d46a06f398de9e9efae9889ea11f271fc1b02147 +size 1051 diff --git a/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_2.nbt b/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_2.nbt index 785709fb..4741e5ac 100644 --- a/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_2.nbt +++ b/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ff56777d12629ba7376a1576cc17181a11c670ccc7b2b61deae6375aaed111f -size 2540 +oid sha256:c7d465aa1789aab88cd47064304cb2dd86cabde27a65e03a2c96984acb1645c2 +size 2538 diff --git a/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_3.nbt b/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_3.nbt index c34d1c0c..18123a39 100644 --- a/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_3.nbt +++ b/data/minecraft/structure/village/plains/town_centers/plains_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96cf3733bc5d07887205876ecc85b72fbb2e5519260607f4789e4e3a4b648a04 -size 1587 +oid sha256:73140d564a1d4ca5a69c6460eb52a7016e8fb1a2e224fb83c276042b4e97105e +size 1586 diff --git a/data/minecraft/structure/village/plains/villagers/baby.nbt b/data/minecraft/structure/village/plains/villagers/baby.nbt index 52d03c9f..5a65ef48 100644 --- a/data/minecraft/structure/village/plains/villagers/baby.nbt +++ b/data/minecraft/structure/village/plains/villagers/baby.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:160a6b254bb923c2ad6bcdbf22410851d9a5beb171b829a0c3909130ce7aceda +oid sha256:53b0eca3d1bfdb3e97935285ff53780e820aa24b5663bc86f01d78e1280d0c4b size 750 diff --git a/data/minecraft/structure/village/plains/villagers/nitwit.nbt b/data/minecraft/structure/village/plains/villagers/nitwit.nbt index cf3a8fa6..728ab34a 100644 --- a/data/minecraft/structure/village/plains/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/plains/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:999c822d514fe69f514d3116d7cc595bdf4567688bc841c1aa9b1c6b94e5c6b1 -size 750 +oid sha256:7f7ca589ac4c1b25513e79d0e62861aed98dc3407d96452636c10c1a69069b82 +size 749 diff --git a/data/minecraft/structure/village/plains/villagers/unemployed.nbt b/data/minecraft/structure/village/plains/villagers/unemployed.nbt index 4f8e75b8..f72aa61a 100644 --- a/data/minecraft/structure/village/plains/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/plains/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d5c7861d0898ae8d1245b66f0099580079e22039e0d1aa7a4342ea3180a650f -size 750 +oid sha256:961a9829a257ab96c32cfd62fba8f7a3dbae9bb55ca98e55fc15785dc0193407 +size 749 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_animal_pen_3.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_animal_pen_3.nbt index 7c143863..d8a39c6b 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_animal_pen_3.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_animal_pen_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d81f116601258e129a448428c1cde6c12cf51cea41190b68d90b5dc63019a774 -size 1361 +oid sha256:85d79c9830c02e34eaf2149273d3c973fa6a45ff6eb4219ac0c4c94853047ae3 +size 1360 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_big_house_1.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_big_house_1.nbt index d3899d61..8f37c613 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_big_house_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_big_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3b1851977266eb8f31070e168d1f6f4491a1b3c26972ff60a9f7fa802790570 -size 3272 +oid sha256:ba96de064df68e8cde1ecb0aefb4c51f8032f83c1f5caccc7c65446490c3230b +size 3271 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_butcher_shop_2.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_butcher_shop_2.nbt index 2e96073a..f42c9bfc 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_butcher_shop_2.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_butcher_shop_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1f2b409a73d15591ff0026e01b506c9aba50b4ddaccd0c9ec84a6b779e1ff70 -size 4644 +oid sha256:281e8bdeaec9e74125969f3519695aa22a9add6190e15dd860d36d61d841e257 +size 4661 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_fletcher_house_1.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_fletcher_house_1.nbt index b3b027e0..094e4d45 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_fletcher_house_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_fletcher_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6277611744a1055af55852513833dc00e8545e8ba89a53705de9fbeddd22895a -size 2912 +oid sha256:060aa11fb126d5d60c2c96add2a0fda17b7b5032107b264df90afddae72eb877 +size 2906 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_1.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_1.nbt index c2ad6c53..fd99ae0a 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8a402809c0fee17a385163144c60c959e965bce73ffd29222e5fa71f2d5b2b8 -size 4248 +oid sha256:a7e3e35ab28d9f7f6991c9f972efa6aa45b5a51e12bdeb30893715a9f2ab5281 +size 4247 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_2.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_2.nbt index 812916ea..9b0aaffc 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_2.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64dacb6430330e49a36515ecc5f5a1be130e69111e85ae6e17b69525c1edf32b -size 2541 +oid sha256:3d9e2c19352b2f042feac4e1b4120792efce130a04e1de03d7b58632ed5755a7 +size 2540 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_4.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_4.nbt index 5481952f..90783b61 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_4.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af25cf9b07f743096b54834c09bc1ff143063359afb13a0f7bc88e0ca8c7a295 -size 3919 +oid sha256:7e11eacd0cb24be0e434fdcf24a98841ac88d91c791cef512afb96154e9e2c65 +size 3918 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_5.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_5.nbt index 73ab2aa9..8eefb25c 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_5.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_meeting_point_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2353521c158d1b31e8a12a8743c3eff6d6405c3b1509e01a555a22e43386e3b -size 2598 +oid sha256:48ff59a142203a719d0eb05070d387af2a46c007358d295b29db5205dd8ef682 +size 2597 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_shepherds_house_1.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_shepherds_house_1.nbt index c9844f95..b5a9fe87 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_shepherds_house_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_shepherds_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43210a0b9e01dea7b465e5a5d4aed7fa88c1c7e10b9bd9329382c40d39d4b580 +oid sha256:8227c70bcd732275f60ff6810d9a799bc409009c3f20f99d26b91ae0c4c56bf1 size 2924 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_1.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_1.nbt index 6d7d4f82..aa93f477 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba42b9590129927fb344bf7bafdf6035c50c050f49d1b2f836b29abb8cf88f43 -size 1810 +oid sha256:b89bf46b6fe956c675a17f76b4c0adc567cef2d5c47abede64d32faf07953d37 +size 1807 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_2.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_2.nbt index 2848dcba..e9f83556 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_2.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98be55c7ce073e41d86c8aa4f65c226408e243a2aa8d5d5934a927ec2e022b55 -size 1707 +oid sha256:9c1a33a84ac9c93936b93e90e3161c835db70a4a1da8ebaa8982e42436fbbe53 +size 1705 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_3.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_3.nbt index 4e580299..6254d90c 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_3.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:669559489f79415b6ce9e124d3edcea5b4becb80e5310eea627e393c63760a58 -size 1810 +oid sha256:34fb42245e4259c0ae14951a5cd46f9256ae08ae957bb1084323af1d3c38d09f +size 1807 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_4.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_4.nbt index ba88b072..85b7e90f 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_4.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39ee51fac7360d0dfd1321aad66ed3846cd11e31ab465cd9eca3516852fc5363 -size 1783 +oid sha256:fb8a9a7b99685c4ca13445bfc944fe186bc41235337facbd5cf6fa76ea79bb41 +size 1781 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_5.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_5.nbt index 01a51839..ce8537d7 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_5.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b929c3eca3a1ed1e412ad42843da08c3d4d14ff22fdab54c4bde03d84ab6f6f1 +oid sha256:5b14fdd37fa6a1fb92fe1b59646921079ef28c68927fb1f772912a1ad6862e51 size 3494 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_6.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_6.nbt index ebd8bfa7..fda2f445 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_6.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aab6046447c19ed0e57c7479386879969145a996d32c16e9956efd1e92ea0c30 -size 1767 +oid sha256:dcac806a2183a92187c8577f92e22f8c8821b6926176e67854515f2730cda0f0 +size 1766 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_7.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_7.nbt index 3b42e376..87f97278 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_7.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a740eddbe928ae6c95bcf794d1b2c76ab645a9754220bbe54f7115ff2e609ece -size 2034 +oid sha256:426b5f8dc6a65be4186fa3a5df6b6e843400ad0f959b1c0ecd1848e804078ba4 +size 2032 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_8.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_8.nbt index d3a97af2..11813075 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_8.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9886cb0df3298abbf4578bc898ab44e04c59b84e5f25c3bf56594003af863ec5 -size 2691 +oid sha256:d3d8c10d281397deb0b5111d8f493d4aabcf6d5d092580dba1525a5ed021f484 +size 2689 diff --git a/data/minecraft/structure/village/plains/zombie/houses/plains_stable_1.nbt b/data/minecraft/structure/village/plains/zombie/houses/plains_stable_1.nbt index f5b43caa..7672a8b9 100644 --- a/data/minecraft/structure/village/plains/zombie/houses/plains_stable_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/houses/plains_stable_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ae7627e0f1db916e54ead3536b648216230656649634fcfed7e218c7ecf1918 -size 3860 +oid sha256:a6ef7b5cfb2527c1a92bcd9c0100571532362692d817f318d369c531c7b57b7c +size 3861 diff --git a/data/minecraft/structure/village/plains/zombie/streets/corner_01.nbt b/data/minecraft/structure/village/plains/zombie/streets/corner_01.nbt index 444a535f..1a303ffb 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/corner_01.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9870841fff5d23654e93361ab233a9d234ad2544dfec4e769a4572763fd6752 -size 1188 +oid sha256:224e8b923049e310615c7f04f37387f9cd61f033d56b5ef8738f5924612ddf68 +size 1187 diff --git a/data/minecraft/structure/village/plains/zombie/streets/corner_02.nbt b/data/minecraft/structure/village/plains/zombie/streets/corner_02.nbt index 30858ee2..653287ff 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/corner_02.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b35ec14f644ec4953285b7985e1836055338f81a84cf52b11e09ebbf02d35bd -size 1116 +oid sha256:d82f2920efd8e4008548fdadeb2243239f6ddf1b21e7f400623332d29005de02 +size 1114 diff --git a/data/minecraft/structure/village/plains/zombie/streets/corner_03.nbt b/data/minecraft/structure/village/plains/zombie/streets/corner_03.nbt index baf72768..ec1bb0e5 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/corner_03.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ceb584fed057028d13196e6c638d9984261035d06f0f3f3df05f71dfd1b14637 -size 357 +oid sha256:ec0a2a92098c3735096b14beaf1f208b8d83e2f77a3e14dd2110217351869e75 +size 355 diff --git a/data/minecraft/structure/village/plains/zombie/streets/crossroad_01.nbt b/data/minecraft/structure/village/plains/zombie/streets/crossroad_01.nbt index a6216cd8..eccd1f9e 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83d66cafdf0184e84d20259f21a8d7bb9cfa5f1c83859a926e4746a8fdfae748 -size 1221 +oid sha256:402a57c758b41e31b4c658816a8e698b97d5a875926df821e27aaa28c8eaa0f6 +size 1220 diff --git a/data/minecraft/structure/village/plains/zombie/streets/crossroad_02.nbt b/data/minecraft/structure/village/plains/zombie/streets/crossroad_02.nbt index 22489931..92633f46 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b55aee7adae9924566f2165ef2cfd94a9e4ebe56ecf165cb2e1da5878320989f -size 1166 +oid sha256:6161ef6bbb4d2325b885760bb5696078f0e2aad4f8d37bc0fcc43de9425db981 +size 1164 diff --git a/data/minecraft/structure/village/plains/zombie/streets/crossroad_03.nbt b/data/minecraft/structure/village/plains/zombie/streets/crossroad_03.nbt index 44bda914..92cfe861 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b330d40211a61df84d68b447d3515d6bca6768dc59407becc09fc2513c29d56a -size 1209 +oid sha256:d85efecec35b4796276f27293969219d27b6b713e9e3021bf59b651b72293356 +size 1207 diff --git a/data/minecraft/structure/village/plains/zombie/streets/crossroad_04.nbt b/data/minecraft/structure/village/plains/zombie/streets/crossroad_04.nbt index 4a0fc475..e56c0121 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39552fae361e94ad099c47c616e90349a47c005f209af48255b1a28c5ff4c60 -size 383 +oid sha256:4794edce593b94cf739c4651b16f87a2fcd01273326036ceb7fbbb12938918c9 +size 382 diff --git a/data/minecraft/structure/village/plains/zombie/streets/crossroad_05.nbt b/data/minecraft/structure/village/plains/zombie/streets/crossroad_05.nbt index eeb43d2c..3369b270 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09c6ad7d1193de62b112041dfaf92590478a536db045405f8cbd0b047c784bbc -size 415 +oid sha256:ad5e8c4ceca546af3001b87d3e189078bfee27106139cb8ba587c3c6299efd73 +size 413 diff --git a/data/minecraft/structure/village/plains/zombie/streets/crossroad_06.nbt b/data/minecraft/structure/village/plains/zombie/streets/crossroad_06.nbt index 4fcff707..fe7d8e58 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:044c5e21dcb45ab232053ab520778fefea9629d73772dd380b490fc9e17f1357 -size 476 +oid sha256:0ce25d8f23b24a74dd19f672cdc9c191485489bfda75629dfd6c6c14e50accbd +size 475 diff --git a/data/minecraft/structure/village/plains/zombie/streets/straight_01.nbt b/data/minecraft/structure/village/plains/zombie/streets/straight_01.nbt index faff7437..277276db 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/straight_01.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b888a185825d88c9e9506619e52fe37c2a49c44cb009dcdd321605cbfcb49f96 -size 1137 +oid sha256:56ab4a1508e1d2a100dd8dff0c703ea905ae5856994eb7d109afa18396d86e02 +size 1135 diff --git a/data/minecraft/structure/village/plains/zombie/streets/straight_02.nbt b/data/minecraft/structure/village/plains/zombie/streets/straight_02.nbt index d127906a..e5470588 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/straight_02.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:669ebb699f11456c47f7617185cdf761154d418d4f2fe31b86da73ec2aa5284d -size 1091 +oid sha256:77c916da6c2de033471a6768970f2f3b6279f932acb76febe952926c133a3307 +size 1089 diff --git a/data/minecraft/structure/village/plains/zombie/streets/straight_03.nbt b/data/minecraft/structure/village/plains/zombie/streets/straight_03.nbt index 05f6e7bf..60d1598f 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/straight_03.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:048dca0de3ff16a98b9faa2894ac080738bb43ade91ed8bcac328914c0165688 -size 783 +oid sha256:a9b191439816562cfc77d9ff1d67040da416e3c7967e572988de14005859e418 +size 781 diff --git a/data/minecraft/structure/village/plains/zombie/streets/straight_04.nbt b/data/minecraft/structure/village/plains/zombie/streets/straight_04.nbt index bbde8692..a952c1f1 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/straight_04.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd075debd3f9b0cbacccd59f80ceac15073386bf669bee88075985ace51fe5bc -size 640 +oid sha256:5dfc199a1b3457d3aa9b841d4369ce23fe7689cba6cdd0ab3469d615684b67ad +size 638 diff --git a/data/minecraft/structure/village/plains/zombie/streets/straight_05.nbt b/data/minecraft/structure/village/plains/zombie/streets/straight_05.nbt index 8cc35e16..ff24cfc6 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/straight_05.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/straight_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c44b72d47b54b7ecdcb18be73c354cef37ffcb2078544a6b5c57ef5b0282e192 +oid sha256:ea6252e9b711c69d24d8328b966a831de3c3afd67044e4675d8472e69ff1c72c size 1334 diff --git a/data/minecraft/structure/village/plains/zombie/streets/straight_06.nbt b/data/minecraft/structure/village/plains/zombie/streets/straight_06.nbt index bccf9c31..ac3efc56 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/straight_06.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:246f1fc9385e6d67c4a306b59745199a7a0238aebdd59ce332d34cb1bcb20ef0 -size 1709 +oid sha256:6b5091f71a9f064ba4d09523ff4f2bcda40cd88e252a9529b92be69b43851f8a +size 1708 diff --git a/data/minecraft/structure/village/plains/zombie/streets/turn_01.nbt b/data/minecraft/structure/village/plains/zombie/streets/turn_01.nbt index 5b80c4cf..e5634633 100644 --- a/data/minecraft/structure/village/plains/zombie/streets/turn_01.nbt +++ b/data/minecraft/structure/village/plains/zombie/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48ec334a2c12a22f2fc807d97fcb7a26486457672f51174fbbbca3dc4370cb24 -size 795 +oid sha256:3e54c8ab7b103be259282917b26c002bd2a4295b76cf23852fe1c0d0fd723675 +size 794 diff --git a/data/minecraft/structure/village/plains/zombie/town_centers/plains_fountain_01.nbt b/data/minecraft/structure/village/plains/zombie/town_centers/plains_fountain_01.nbt index 099c083e..c795452a 100644 --- a/data/minecraft/structure/village/plains/zombie/town_centers/plains_fountain_01.nbt +++ b/data/minecraft/structure/village/plains/zombie/town_centers/plains_fountain_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a1570d9445e6733d092039029c87772eb566e2afac84a5e7d4e3729c2fbfb58 -size 933 +oid sha256:9c4ddd6c991628bb158cb645ba245870578b9183a972a98ee5755f4e86fa33d1 +size 931 diff --git a/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_1.nbt b/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_1.nbt index a9bfc01f..14444712 100644 --- a/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_1.nbt +++ b/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f162c456adc71ac6db0401ec171074f3a333f5f7023367b76d8723067df0b367 -size 994 +oid sha256:0f0680408b947638d615ad658607305566bd85af4b68c7d3362c83ca653174cb +size 992 diff --git a/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_2.nbt b/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_2.nbt index 8e0ea9f1..3bf200e7 100644 --- a/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_2.nbt +++ b/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:686dd4e303ce4d511c3798267f4390d47bbad713eb901f0d9c4e925e58dd3467 -size 2485 +oid sha256:bf6ed00f64c48d016b85d99de6ce55dcebbb9de09fa1314623039f9ebba144b7 +size 2484 diff --git a/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_3.nbt b/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_3.nbt index e4dd2e15..519d7fe6 100644 --- a/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_3.nbt +++ b/data/minecraft/structure/village/plains/zombie/town_centers/plains_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:197aa625371407e7f66b3bdaa14b4a1f7e25fc31505dd03141ab6cfc8f53ce5c -size 1528 +oid sha256:443556e2f24b799067c5bc98e831f00a8ef424c4bc3cb2dc15138efc62c00b99 +size 1527 diff --git a/data/minecraft/structure/village/plains/zombie/villagers/nitwit.nbt b/data/minecraft/structure/village/plains/zombie/villagers/nitwit.nbt index 79ef965a..08f85a9f 100644 --- a/data/minecraft/structure/village/plains/zombie/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/plains/zombie/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:600cb7f512db046205fd5a28128ddc2abcf7731d8f90cebef79b4604c29ec829 -size 756 +oid sha256:d2345fd8b729e0cbfed1f7044ff06dae67a0cb7591081881a672e052a169c27b +size 755 diff --git a/data/minecraft/structure/village/plains/zombie/villagers/unemployed.nbt b/data/minecraft/structure/village/plains/zombie/villagers/unemployed.nbt index e60a4470..b534c89b 100644 --- a/data/minecraft/structure/village/plains/zombie/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/plains/zombie/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33f63fef396632ee1ec8f682adde027f67fec113b28e1b672a73e733e88a8ca7 +oid sha256:2dcfa09e9416da7b6f2cc191ebd5c4fd75833cb088c89d48fd8eedd0a50f2d57 size 756 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_1.nbt index c248ae99..d5df372c 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa03e6a474d2418fe1f6cdeb30bd2eaff017993aadecb3c1e6dd541f25817504 -size 1861 +oid sha256:00c8c9bb10e377c839a23b2a9b5275b4cb185cbef6c570f60f6335d4749e6571 +size 1859 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_2.nbt index e7995641..5a84329c 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8539a71bd7196abff5c80b277eb655360f4407c403714433628c3fbf54e28cba +oid sha256:e7bbad3a1013192b105630861cba0e346c7e955e01c0618654c97f3dd5bf1a3e size 3474 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_3.nbt b/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_3.nbt index ce8bbdb3..86ea7e3f 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_3.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_animal_pen_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aa12c0a2489522aa26b6180b71b494746666adb3dc6c2b0ee0b79fcf233bdfe -size 1660 +oid sha256:b144bdece75b97b8bf163b97f203531d3784c30b67755bc9958fdfae16a277b6 +size 1658 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_armorer_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_armorer_1.nbt index fef6bcd6..dcebb30e 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_armorer_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_armorer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:787c8c1afff9787b4f762834f5006387106646f0872629ecbdf34438f0c86433 -size 1706 +oid sha256:8e04d30d084b45a106c9d70938c9378d811cac290e890c310b0e043876ff27e2 +size 1722 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_1.nbt index 762a6929..2ad349e9 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0f7989c355f5ebf9d7f19d83f5ee6b58ff5c3b09e9f552a946104cc318eaa6c -size 3922 +oid sha256:236a44ce3c32a4981195f2ec898f4a51e45bb72d1ae5cf46f3b65127803c193d +size 3938 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_2.nbt index 07cc9c92..2c922d81 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_butchers_shop_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ccd56e0bed08417fb6bede3acf6f315618460adc493d2364f9e5908a3f6aec9b -size 2068 +oid sha256:462929b0639679203ccf3626284023368d9b90ef0bed21fc9dc6eaef5d3f374d +size 2085 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_cartographer_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_cartographer_1.nbt index 61759ebd..aa321f23 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_cartographer_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_cartographer_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a62abffab178f468f5c33d1bae78bd3f9f757d9707bc3c492579f085519e34a -size 2644 +oid sha256:131019e35ec7346e3de75e36da3f8be432795525e5273161b081a9107bd573cd +size 2642 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_fisher_cottage_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_fisher_cottage_1.nbt index 7234edf0..903aea78 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_fisher_cottage_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_fisher_cottage_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ca478b597c26a70bfca3cdd8d458bc19a8c3616e782d24c8aa4a486d62ea8bf -size 3180 +oid sha256:d460ae8e651a816a7cc520beef34dec7c5231fb1c4ef2c709f1025a44381b785 +size 3179 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_fletcher_house_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_fletcher_house_1.nbt index 47281ff9..125bd7d4 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_fletcher_house_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_fletcher_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83dd2d8230acb817b3bda406442cf7c435cb68b4e71ff01319c4c310d9e79f6b -size 3036 +oid sha256:9826f5279f9af536d1b099fa2c09063632bbb43832ccad65ad1ea9cef317eb06 +size 3035 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_large_farm_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_large_farm_1.nbt index e7c8eac7..e9b9ac8a 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_large_farm_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_large_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e2065c787e3935318579738b8a1d596bd2045ab4e99c53cc1d6d71b9390d6bd +oid sha256:6c921e3c220c8fa3ed73db8f4e9b5afd9cc2e03d68dccacc63a6e5e34f92ae83 size 1244 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_large_farm_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_large_farm_2.nbt index f79bb050..c4f07a62 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_large_farm_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_large_farm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:181cd630a7fd5526553a09293b548f9581215611446d2cd1ba9c7883377abd5d -size 2153 +oid sha256:864621248e8c10ffbfebe0f338f17a9ede3e6d8b54137d92ac60eb17a0aac8e0 +size 2152 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_library_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_library_1.nbt index 13849322..57d774c7 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_library_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_library_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1abf98ec78e4cdc2019ce3e3d8c6a12fd00d235c9404c3075c275598357c61c8 -size 2770 +oid sha256:bd35e362cfd8587c16011ccfc64c583628fa8d432d558a39c5a1184aee6b5536 +size 2768 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_mason_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_mason_1.nbt index 9ed110a3..4de58544 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_mason_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_mason_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca11c49193b910aa9c318caa07f58ac3a87c1e654e0f7b1bd8d2b15d5707b8b1 -size 2520 +oid sha256:336fd4cf003eb7d5fbc07662f4733aa693c098345cd4a252638bceea2508afab +size 2519 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_medium_house_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_medium_house_1.nbt index aff00baf..d9c71400 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_medium_house_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6af58812a1601c1547b36cc00ef533e7dc404b797abf7f44265fdc98491f86a1 -size 3642 +oid sha256:e4502655c59d48e6a577675f1e95df87557a43ff1b16bf41551e9cbcdf682e2b +size 3641 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_medium_house_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_medium_house_2.nbt index 4b8cc8dc..159d1179 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_medium_house_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a26a9121ebe2f2a5882f991bdd609787346755bc5560d177ea21d5be132a1fd3 -size 1859 +oid sha256:7bdc7eb38d8accda965a4e6b7a91a89aabb692bb5dacc31c64bccd92eed57c7a +size 1858 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_shepherd_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_shepherd_1.nbt index 89ab1cec..29486f78 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_shepherd_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_shepherd_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ed74012eb27264d623518c4fe93f578a0ab47dc704accdce23f0324e285e3e5 -size 6327 +oid sha256:f07a4abc7940f8dc58ce745e47115f17ddda19b1177c81c948c2635e91e98e25 +size 6325 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_farm.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_farm.nbt index 5f4d2944..cb6d89bb 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_farm.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_farm.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fe93a169d6b934e4c493a761cb3a0021d8ef5d656f8cba35ef9cf8b38025a1a -size 1138 +oid sha256:f001a9db78aa5d0acc43b79510d9e21dbba3605587f78f0a04abff2ef81df0bc +size 1137 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_1.nbt index 4cb5c445..631b3a63 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:939772ebfdb8f22c91ad7c321984227919b1390bbe1d057c523a84799d7e026e -size 1851 +oid sha256:d54789b4f96860980cfb4daa84779ae78f072bd3b2fbeb3f1b12c1a9e0d68355 +size 1850 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_2.nbt index dabe8727..50b53ddc 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e63033c520e0a29d411fb878e1e5f4f9e2d90b335539bdee05d64dfe20cfdda -size 1860 +oid sha256:23a6c43ca8b31cfaa8960e4454b9e7488909c1e8988fdd63f4ac300bba5e3484 +size 1859 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_3.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_3.nbt index 36718ace..968c5afe 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_3.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa86bad02600a66f0522a4976985ec96f2609bddd355f08c2862d9eb624e0365 -size 1812 +oid sha256:e7db7849deb05b06115b83679d7bf162d0f570f116566297f10c3802b99c3067 +size 1811 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_4.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_4.nbt index 18c02cb4..9443b04c 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_4.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29e48049c3ef5a9588c24b1abfb61ed7baa42fd6d5583808376477e07fc3e366 +oid sha256:dcc546df084e23d8b8f76e2d8094069638a99b2d48ecaa34cc15f3dcadcb380f size 2707 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_5.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_5.nbt index 4d30a89e..0438d1f0 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_5.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34686004f981e3eea098d0f33bb3898bcad4661af9edf33e478d00cfc7c219e9 -size 2374 +oid sha256:6c8a0dbb71d791f127b6ab49172f25784c08bf4479f682743811f17e5afc2b75 +size 2373 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_6.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_6.nbt index 06d52709..f04cb58d 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_6.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c2f73e6b918607101985997051178a1e2480a95ca6a9f4b3fba5ab556613683 -size 1786 +oid sha256:f495715a02ac257fe81eb1639da4105105f881b9c2e6d7e3dae1a8f3af58ce52 +size 1785 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_7.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_7.nbt index eeff9049..6cfe5f34 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_7.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8cedf2b2feb93832cbacefd5067efa4a8a4521005284bb922e70f795020e154 -size 1883 +oid sha256:a970fd876512e2f979089833fe83b37325ad4cc3d33934219b15a403dcbb65e8 +size 1882 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_small_house_8.nbt b/data/minecraft/structure/village/savanna/houses/savanna_small_house_8.nbt index 4dca77ae..a947d07f 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_small_house_8.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0304b89ae76e2470cb4aeaae394297d6dfb1fc1e01901efb1bdd08ae020d4c39 -size 1546 +oid sha256:2226d4c6171d8ec23e2688e11f900828a9331939cc63e1d29d08caadfc0a79e3 +size 1545 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_tannery_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_tannery_1.nbt index fa65fb52..ec851ce9 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_tannery_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_tannery_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92b5bdbbaf5782520aea32d556f01acf64542e0520d1b1b15a0c662bcf341727 -size 2132 +oid sha256:48be3724a48c1f0430b7a9d13cdd6b9e6c0132af2fb0a504e74fd2f8b226f987 +size 2129 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_temple_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_temple_1.nbt index b4f2c1a8..b4a72a69 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_temple_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_temple_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b22776e0af60888b8493c89ecd791efd865cec5d5a40f227eeb1bef74158fe1 -size 3629 +oid sha256:1bd921253f6cede360dd0dd26e45090107b7845fd4184817ba4651846a3af181 +size 3628 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_temple_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_temple_2.nbt index 3d16c4ae..264e8357 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_temple_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_temple_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d82a568aea3d4c8f92d8fcfc42605ea6d3e4ef47ee2aedc6fd80883a7e5b8f7 -size 2026 +oid sha256:951aa562341f3f196548ea662a727950d395a5e10be646b4ca96cc32ef8defcd +size 2025 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_tool_smith_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_tool_smith_1.nbt index b6b87ff3..b4c03c6d 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_tool_smith_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_tool_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77a9f39571fe09acde389c6340ebb8e95f38fdc82aab34d5d3a31ae8c60cebc7 +oid sha256:576001d0e9fc1cd801ee24065e02b8efad18dba91e722bd3c58ae7c2591e9962 size 2461 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_1.nbt b/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_1.nbt index 834b75d2..a00cd843 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_1.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00081691b0af1d87ac8a464e1e25bbf84aad4e3cfd30db830325b894d0a311b8 -size 2079 +oid sha256:1383d020d8e5f7dddef938cdd18d5aa43be3b9cf80456712740853a5d4550890 +size 2078 diff --git a/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_2.nbt b/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_2.nbt index 0dc39cd9..4a2c9146 100644 --- a/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_2.nbt +++ b/data/minecraft/structure/village/savanna/houses/savanna_weaponsmith_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad06ce5333e32dbd899dab16cad3dd23e6fdc5e372130aac71f4d66d72c60ce9 -size 2199 +oid sha256:e89d3694674bcf33b765ceeee94be7a457510995f7561d0e7afc096e351e9e97 +size 2197 diff --git a/data/minecraft/structure/village/savanna/savanna_lamp_post_01.nbt b/data/minecraft/structure/village/savanna/savanna_lamp_post_01.nbt index 479bd0e6..bbbdfb78 100644 --- a/data/minecraft/structure/village/savanna/savanna_lamp_post_01.nbt +++ b/data/minecraft/structure/village/savanna/savanna_lamp_post_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:855106e423f901b666045919dedbf910da3e00b09700bd6306e77268cd83cb12 -size 284 +oid sha256:fdb102736a475c45a35a1c550e1b1f857bb7f00d8a874eff26d1c925ab0f04df +size 282 diff --git a/data/minecraft/structure/village/savanna/streets/corner_01.nbt b/data/minecraft/structure/village/savanna/streets/corner_01.nbt index bac29e47..1123bb1d 100644 --- a/data/minecraft/structure/village/savanna/streets/corner_01.nbt +++ b/data/minecraft/structure/village/savanna/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d20f6caf99868795f30298b3dd710770a23ae74701c330d8a38abbc5c918b1c9 -size 1198 +oid sha256:94b41a36838f8f61b1c211f63a33a010119e42222556b6713b15dc73038a5654 +size 1197 diff --git a/data/minecraft/structure/village/savanna/streets/corner_03.nbt b/data/minecraft/structure/village/savanna/streets/corner_03.nbt index 79c58217..2d2c910c 100644 --- a/data/minecraft/structure/village/savanna/streets/corner_03.nbt +++ b/data/minecraft/structure/village/savanna/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebe2dbda7cf0090f2b48dcdda62ad647317b23cb70e671ee4e8850df65d46a02 -size 352 +oid sha256:77b7610e8277d1034a6e3fa73d0b6795c841f85a1a24849313cd64156da48444 +size 350 diff --git a/data/minecraft/structure/village/savanna/streets/crossroad_02.nbt b/data/minecraft/structure/village/savanna/streets/crossroad_02.nbt index cc3ce04d..edaa82e8 100644 --- a/data/minecraft/structure/village/savanna/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/savanna/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2275b575eb0c64d73e2efff8a59e6794b7988c150b7f0019aa71cbc758f93857 -size 628 +oid sha256:5a1ef327a88d3d5d35a6c23bc797aa8c741d543f56c952d2ca1e900a6f4662d8 +size 627 diff --git a/data/minecraft/structure/village/savanna/streets/crossroad_03.nbt b/data/minecraft/structure/village/savanna/streets/crossroad_03.nbt index 571a9bd7..e4fcb369 100644 --- a/data/minecraft/structure/village/savanna/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/savanna/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:612ff3a79b9c3494a9cb70ecc6c3a82f24cf68024fb14330030e088eeb83a452 -size 1227 +oid sha256:3c5556518955f28e8d11f2bac21c5dfac11bb428ee37a1b233aa11b22a3b893d +size 1225 diff --git a/data/minecraft/structure/village/savanna/streets/crossroad_04.nbt b/data/minecraft/structure/village/savanna/streets/crossroad_04.nbt index db5c6171..895960e2 100644 --- a/data/minecraft/structure/village/savanna/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/savanna/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e0f4516fefcade6b3f8534ee92b13b4339e0fcc09904a25525b8a5bedfb7361 -size 380 +oid sha256:8b54b6c584130e8248a58900452a5a256fcf5356d793ee23b3a38aa74d76decb +size 379 diff --git a/data/minecraft/structure/village/savanna/streets/crossroad_05.nbt b/data/minecraft/structure/village/savanna/streets/crossroad_05.nbt index 637cb66a..566c333c 100644 --- a/data/minecraft/structure/village/savanna/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/savanna/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40b6a110de250fa9ff8d53cc92df774a7b6c663a0c44bef90803ea754cec8fb3 -size 411 +oid sha256:5f1d1276709dad3602f3f60814ea049873d21aa0f44f108a35caf71cd5191b7c +size 409 diff --git a/data/minecraft/structure/village/savanna/streets/crossroad_06.nbt b/data/minecraft/structure/village/savanna/streets/crossroad_06.nbt index 187fd48f..132cdf43 100644 --- a/data/minecraft/structure/village/savanna/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/savanna/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4bbeba9a261b2ea2c536a6db45e1bcdf14400447b6637c19898308f7bd4f3fab -size 468 +oid sha256:a123c58a9965f677799d108bbb77ade9f3d27cf2da9d971c0425c5071f9c6f4c +size 467 diff --git a/data/minecraft/structure/village/savanna/streets/crossroad_07.nbt b/data/minecraft/structure/village/savanna/streets/crossroad_07.nbt index 0ec52d14..ce5524bf 100644 --- a/data/minecraft/structure/village/savanna/streets/crossroad_07.nbt +++ b/data/minecraft/structure/village/savanna/streets/crossroad_07.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5a1050b5c8a9f564d2b5fcdb59a2a9fcf90b881bd77c1bef69f34cc360bc511 -size 1382 +oid sha256:76bb696d23580179ac336d2a2db3327bc70ce7cd243e3cbea199f84e90fc66e6 +size 1380 diff --git a/data/minecraft/structure/village/savanna/streets/split_01.nbt b/data/minecraft/structure/village/savanna/streets/split_01.nbt index eb3942ce..d2b4086f 100644 --- a/data/minecraft/structure/village/savanna/streets/split_01.nbt +++ b/data/minecraft/structure/village/savanna/streets/split_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a15a812cf519ee2266eb5a5014b7fb3c4b2992a22dc8e3a63f4b619e993216f0 -size 525 +oid sha256:cae12080e222d56298555bb81dd16b981c7f54e047aae38420a257fcae77194d +size 524 diff --git a/data/minecraft/structure/village/savanna/streets/split_02.nbt b/data/minecraft/structure/village/savanna/streets/split_02.nbt index 1d1318e7..a89389bf 100644 --- a/data/minecraft/structure/village/savanna/streets/split_02.nbt +++ b/data/minecraft/structure/village/savanna/streets/split_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72dcebedb7358215a08bc800e8c461be3ed7c0eb4442cb03c304c66bfdbf6cc4 -size 737 +oid sha256:7df7156772707ec8a4186931129b7a3320b8e1db0a393af70088fa48e86336a0 +size 735 diff --git a/data/minecraft/structure/village/savanna/streets/straight_02.nbt b/data/minecraft/structure/village/savanna/streets/straight_02.nbt index 0e918790..62ed455c 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_02.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9eb29b9cabb3ddbee2c9a262e83f49a9185ce6a304e33567c4ec6f63bb97642 -size 1125 +oid sha256:6a10789ab0c7ea72289f912354d37a8caf07c0a9169b60f7a5cdf52ec896f228 +size 1123 diff --git a/data/minecraft/structure/village/savanna/streets/straight_04.nbt b/data/minecraft/structure/village/savanna/streets/straight_04.nbt index 252d9b07..6961b6af 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_04.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bb6bafe306301a4730f5ddcddfa8e9d40ef20bbf6373f39228471debadf84a1 -size 641 +oid sha256:8d1046694dda5dd17afab0e6daf81248644b012c7d6ed258a4338577e4c31f0f +size 640 diff --git a/data/minecraft/structure/village/savanna/streets/straight_05.nbt b/data/minecraft/structure/village/savanna/streets/straight_05.nbt index 15d24e64..6aa2cb0e 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_05.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:175c7d5cba01989ca2d419519062232243aa1559713b5da18dc665e8af7c34bf -size 1931 +oid sha256:7691f1829455f399c9f44f0a6df76807402544fe9636f01b2bb128e19dca7c02 +size 1929 diff --git a/data/minecraft/structure/village/savanna/streets/straight_06.nbt b/data/minecraft/structure/village/savanna/streets/straight_06.nbt index 06f805d3..c36efd5d 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_06.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b39cb3b881d00a5c78e8b5a70f85fd9050253601cfbd20503af6057b963d2a7 -size 1088 +oid sha256:81b192dd43cb7444fc8d303425d5efd627e6671b36ad37c878c9bb7572eff2bd +size 1087 diff --git a/data/minecraft/structure/village/savanna/streets/straight_08.nbt b/data/minecraft/structure/village/savanna/streets/straight_08.nbt index baf1eef5..73da659c 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_08.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_08.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7b9225fdc7fbd01ec48cc2cc2e5f35d17ee324df8d724d84f63fe4fd7228b57 -size 940 +oid sha256:c72af6afd83cb76e37b95ef3c68addb0f40b08a4757f254c544d734f8cbdc936 +size 939 diff --git a/data/minecraft/structure/village/savanna/streets/straight_09.nbt b/data/minecraft/structure/village/savanna/streets/straight_09.nbt index 56642e86..a0aa47be 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_09.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_09.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b68fe61ae3a9fb66ecfbce0611635cac69db4c4cae3aea864abcc6843c5c1d1 -size 1523 +oid sha256:5c6622bb2d88a5fda2b9d5dcafc000ef99c60c1094e211f85accd4db69743570 +size 1522 diff --git a/data/minecraft/structure/village/savanna/streets/straight_10.nbt b/data/minecraft/structure/village/savanna/streets/straight_10.nbt index 369a13d4..60efed1f 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_10.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_10.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2c15b438fd01ac2446e8cf9412b7c5e0f55c1fe9eb39c34954e590eae28a75c -size 524 +oid sha256:cc68c7690880e20fa438c1fcbf8257bd43adeec83f769fc3503030577c5dbdea +size 523 diff --git a/data/minecraft/structure/village/savanna/streets/straight_11.nbt b/data/minecraft/structure/village/savanna/streets/straight_11.nbt index ab2caf14..1c8dd2ea 100644 --- a/data/minecraft/structure/village/savanna/streets/straight_11.nbt +++ b/data/minecraft/structure/village/savanna/streets/straight_11.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18c0062d5f99289712218ce78c84192e84e7b804de891746421ea41a44137a3a -size 1561 +oid sha256:e1363e06d61a5d9efce64e61908afc14237e480b2af8631a4bd282e9b3ecb5b4 +size 1560 diff --git a/data/minecraft/structure/village/savanna/streets/turn_01.nbt b/data/minecraft/structure/village/savanna/streets/turn_01.nbt index a6eda253..f7d596bc 100644 --- a/data/minecraft/structure/village/savanna/streets/turn_01.nbt +++ b/data/minecraft/structure/village/savanna/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d3ce68aab9790578259477686d191126aeb4f6d0d0be03a1b9667b2a8e85420 -size 1159 +oid sha256:0d3f86c29fba09c9d63a8b4b2dbb6651d689b8867e8270f875bffb81d6155eae +size 1158 diff --git a/data/minecraft/structure/village/savanna/terminators/terminator_05.nbt b/data/minecraft/structure/village/savanna/terminators/terminator_05.nbt index 5f00218b..29bb8532 100644 --- a/data/minecraft/structure/village/savanna/terminators/terminator_05.nbt +++ b/data/minecraft/structure/village/savanna/terminators/terminator_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a4285fb683f0234417a65c386711e6888d22bd1730e1c1eb233f68b99aa7f79 -size 1191 +oid sha256:c58d5c5c1ccb3417e76c5ba855cf1595cf43039613d51eb3ede5d16caec45c2f +size 1189 diff --git a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_1.nbt b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_1.nbt index 042eb0ec..87adc66d 100644 --- a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_1.nbt +++ b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c1b2cf50f41c57b897afb3a729c9647fae272645d114403728b85a84778347a -size 3287 +oid sha256:4fa51307f3802527e45b9f722dfc4fc346a895bce5e09d0c799dea901bb9b61a +size 3285 diff --git a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_2.nbt b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_2.nbt index 843cccad..025c95bb 100644 --- a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_2.nbt +++ b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c19c4d86da708838d6afe723369f95952c2a7fa6441922a7d1c7012f0a6b0be -size 1119 +oid sha256:7edce9cc2f3a09f32243afd801ed65f94189bf3d929d4170bd6141a585d5c342 +size 1118 diff --git a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_3.nbt b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_3.nbt index ce658817..0e0a056d 100644 --- a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_3.nbt +++ b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c48a39ce52f4491a620ca28a2ac98c3f7fe491e3a3dfae44f7863b4995810d89 -size 981 +oid sha256:2aac3e5aa473dcfb4135a72055ff1ede0e2f5e954535fe7093e190ee238dc244 +size 980 diff --git a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_4.nbt b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_4.nbt index 5773119b..aee9d9b3 100644 --- a/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_4.nbt +++ b/data/minecraft/structure/village/savanna/town_centers/savanna_meeting_point_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30167a16c063c02f710961a778e564fd10901e16e2573a96831f8772616f3d24 -size 1187 +oid sha256:a5c9ba856df83e53cc6cfbdaf9775307316ac37fbf6ff84db420564e6e4f3799 +size 1186 diff --git a/data/minecraft/structure/village/savanna/villagers/baby.nbt b/data/minecraft/structure/village/savanna/villagers/baby.nbt index 683e5a0d..76f6c4a8 100644 --- a/data/minecraft/structure/village/savanna/villagers/baby.nbt +++ b/data/minecraft/structure/village/savanna/villagers/baby.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:933fa9d80ff87b9c1850149e1e8bc05a6828d278bdf8c81932472a5b55c6742a -size 753 +oid sha256:2c4e4833a720e90de98add303de10bdca395883f01474606c81a68092a8a1733 +size 752 diff --git a/data/minecraft/structure/village/savanna/villagers/nitwit.nbt b/data/minecraft/structure/village/savanna/villagers/nitwit.nbt index 54e07f6e..540e5ea4 100644 --- a/data/minecraft/structure/village/savanna/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/savanna/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:598a7fdbd64cf872d708223cf0f6665ece2f8ac962458114da0ebda9da697093 -size 753 +oid sha256:d19b1d92f3e13af523d8b78dff78d98e8b69c44033df1963f3a6b6a27ca4376e +size 752 diff --git a/data/minecraft/structure/village/savanna/villagers/unemployed.nbt b/data/minecraft/structure/village/savanna/villagers/unemployed.nbt index 485b8c93..8fb25166 100644 --- a/data/minecraft/structure/village/savanna/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/savanna/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02fc38bf413abd727a169ddff3c780772c6f7507bc4107daa590b1ef2b6a9be5 -size 751 +oid sha256:83b1164be7542fb3af8bb73f22c426399286e533b46d132ac613b8000b7bc41e +size 750 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_2.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_2.nbt index eb63ed22..f4c78cd1 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_2.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5ce2f745bec1433d99f12d83604d79b5513fdf31c2ab573abbf5286f5f120de +oid sha256:a9216cda87baa83687a478a583aa8e4ed1a175b6e1b9ee30284178f427ab08db size 3482 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_3.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_3.nbt index 09b28143..126fbb13 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_3.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_animal_pen_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ff9a01d1fb5163b911f48d35580bceb867af89dbf19d7ea4598a588172db8d4 -size 1666 +oid sha256:a1a208023cbcf2fffcf012761407247453966f113fc7864f9182647db59f4531 +size 1664 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_large_farm_2.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_large_farm_2.nbt index de01796c..bee938e0 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_large_farm_2.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_large_farm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b3aed4c4859e3c735162a88d3e9a2a182a6c088db1fd03190c66b7fa14bff49 -size 2162 +oid sha256:856b04b76c52da55940dfc7176d853558e15c1af5ce994717814681d526e4372 +size 2160 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_1.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_1.nbt index be910d68..9f053cbf 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_1.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55490f68f114a72dedbb368525831283aaa68c9796e6fe2507eaa65b7d3e42af -size 3645 +oid sha256:2d5be8a118313f543f2f4838bad493c85e09e63cc9257ecbc9a3b7ab2f151246 +size 3644 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_2.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_2.nbt index 8222df12..edf69514 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_2.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:660fd1c0f318ff2b4bb04c2c0762fc65a3063c01c0fe036498603fe98b443414 -size 1866 +oid sha256:1fbdbc0d1df79d69ee75a0009f9d5d0461d45c5c4e53f6edfe7185ecb7a0d9dc +size 1865 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_1.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_1.nbt index 4bf8850b..2491ae08 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_1.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12b48ca11f35a000b452d991357efd6e0f82b2d0246a24c178f05f87fb648005 -size 1880 +oid sha256:a84afb7f42bcd14a9876826dba4bf27518114e9ec623e4a2d034cb8cad0d8d94 +size 1879 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_2.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_2.nbt index aa28c411..92f38ac8 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_2.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8e1b5a435c59ebd761e092c7bba580b482006baa8858fa1008fb33c7cc38f62 -size 1877 +oid sha256:19f93a01f40d8122e1527929cbf5020c90b63c02ee200716548a9d152e15209b +size 1876 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_3.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_3.nbt index 7a1ea361..8ddb2dbe 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_3.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f5ef9d60a501eedd822670a4434bff0df84cd0bb098d68e92865cfc483815da -size 1829 +oid sha256:8abb4d28b35c01ef18b4f268d96467ad4f12843ad94e9eaa83f9c216606051b5 +size 1828 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_4.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_4.nbt index 4a556439..a929b8f3 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_4.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcd8609f502a3f0d45ebd30fd76878d367c0e2a48eb06bfb522f9a735acdc9ab -size 2710 +oid sha256:26a76e1e8436d4dec977ee55433b3d58d2520b3b5c1ca406a8d6a15c20b1c02c +size 2709 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_5.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_5.nbt index a4e6b155..70ae5c50 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_5.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2522215ac8d05f41b1ff76b68850e6ee951efba32b4c636990b1b4e4399bec90 -size 2395 +oid sha256:6c4e2e67e8c77ee4431a1b4e98dcadb25e36c2eab7d8ec7c7fc5aa4a29312d99 +size 2394 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_6.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_6.nbt index 307ae1f0..8d50584f 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_6.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abf051f6f0e2f7574ca9ea4ff5dd9873bb99ba71c2513e159ecae6fa35a15442 -size 1793 +oid sha256:19a598b5e3fec1db695e665c12f041b281c3e2bc61a83fb3e93a0009a46b6017 +size 1792 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_7.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_7.nbt index 65af5eaa..75c011e0 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_7.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24f6d863c5ad5fa9ebad1fc119600a7c384ce7fe092c7aea403b237efc5efbb8 -size 1909 +oid sha256:bbf566598703297d44f54436d087c2be3b4241438e9d228b65d84b1d65b1f82b +size 1908 diff --git a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_8.nbt b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_8.nbt index bd932b6d..569a0dec 100644 --- a/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_8.nbt +++ b/data/minecraft/structure/village/savanna/zombie/houses/savanna_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a420705898bd8df5d03ec0c03013ebe58662ef24800e7769195c0a88b7abe401 -size 1552 +oid sha256:4837462543485f68f0ec80db97ae5d84190ec7163af456c47f181dd0403a10e0 +size 1551 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/corner_01.nbt b/data/minecraft/structure/village/savanna/zombie/streets/corner_01.nbt index 21ec0d18..555fc1a8 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/corner_01.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c22079e8f87435a2c3fe232b6d749f8af2ceb9e93cea2809668406472d45fbef -size 1204 +oid sha256:e0d5df53e35a39ac196cecd9bb0872add1ff3cedbe4cc9502c281de46d6f8387 +size 1202 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/corner_03.nbt b/data/minecraft/structure/village/savanna/zombie/streets/corner_03.nbt index 3ac9fbb6..0f820834 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/corner_03.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27aae037092de2905e5188b8f854fe8d3c06d30176ebb5771bbdad10007f594f -size 357 +oid sha256:ed7f996049f9c1a90dad687be72bff2965effaaad15dafc05c07a163a8c4c4e0 +size 356 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_02.nbt b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_02.nbt index ed23ff06..5b954a48 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1920ab97974f5007dadd8cd17cd2dab88841208672b0cb23fe54cf9b1b8bfef1 -size 632 +oid sha256:a2c0ba9771159e03fa08b24b509b7e9b9b73c34e70f69a5a1dd5fd1ee2ff9c4c +size 631 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_03.nbt b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_03.nbt index d25a2aa7..1834c860 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa388ba222b5dce800c67b96200eaad74049319bf3b69d8c54e4029d57b07a71 -size 1231 +oid sha256:36bdef89cce72a821f55775dcec3133f8b2740b148a551bc8e639b184080c94d +size 1229 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_04.nbt b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_04.nbt index 66478c86..88efe968 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d03118df32da3d135b098303746b09b66db71f91348d25005eafd8bd7be5dda +oid sha256:6c02bbf0b4fb392021334ee87ea7a6f635a4dae817fe2e5846ecf036105fb793 size 384 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_05.nbt b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_05.nbt index f361bcb0..08633664 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdc66ac9d5920f6b6ce20e61e9212800806be007d5a5ad7433e746b468a80dc8 -size 416 +oid sha256:4d879f2ebc76179acfd5cf0cbf667b01c785b2e8e448ada08a572f6880084d28 +size 415 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_06.nbt b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_06.nbt index 24549836..75d3076a 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f453de46fa2e2c6d75bc8a100d9af84187bce5e68f2718cddc3edbf0e6e32b7 -size 473 +oid sha256:05f5ba726eff993cc63946f334ef4814d0b5b5d5d572282f882aa2f733043882 +size 472 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_07.nbt b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_07.nbt index e1515244..bc64c448 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/crossroad_07.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/crossroad_07.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53a0bfe2abcf1cb530c66550f49f4ca2c852094a0cb0055cd9b6768dc36be023 -size 1385 +oid sha256:337be6f246b5b7feedc52659c5ca2df89350b663a3dabaf429b77a9bac527256 +size 1384 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/split_01.nbt b/data/minecraft/structure/village/savanna/zombie/streets/split_01.nbt index 71de0452..c4e5a833 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/split_01.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/split_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb6eba7453916054d124a321981d295cc0afba2f63ffa6fb89cb4c42d72c355f -size 531 +oid sha256:701b643a16efb97a2df2e3de0fa3782a401bbf9c1e894beab20274a6b8d3d1b7 +size 530 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/split_02.nbt b/data/minecraft/structure/village/savanna/zombie/streets/split_02.nbt index ac8e9cfc..d5ec72b7 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/split_02.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/split_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d405b181258569b383fbdc7167e691ea500f0404b562669022d2681cbcc9b5b0 -size 744 +oid sha256:847818577810845572184f0906dddf8f76e6f06f9874e84909ecd4cdf97b1100 +size 742 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_02.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_02.nbt index 9c19ee90..84d03453 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_02.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22e3b55e2a12c8c11335880436d8f00bf95ee67f81cb1868487e054a7190b72a -size 1131 +oid sha256:7426d5463988e04a5e3d2e6c7b3b11049d32ab97d9ed86dbc25c649a1d47c7e4 +size 1129 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_04.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_04.nbt index c80af99e..91e35cc2 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_04.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf7044acc022daf18c2bc5a3accbbc6a92ffa737cf3e600e047457962843c0e3 -size 646 +oid sha256:472779db7379b92a12a9aa666c59c8f7f992398af15c560ebd1d33f11583bc83 +size 645 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_05.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_05.nbt index 1d86d806..8da72021 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_05.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d5c626aaf2ceba918a918d085feabaf3b02d3f7bb4eb8b5c18bb9ec933225df -size 1938 +oid sha256:d62c615a5247559228f0745ae40174ff62a65c65f027477a97ab5f8d38d1d3b3 +size 1937 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_06.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_06.nbt index 527e4d6d..2be8375f 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_06.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff7e0088b4b7909f68e039d7ba2169b96b45aa0d8ecac6714056caedbfdb1682 -size 1094 +oid sha256:82e11a5c7616d9ee3b2245ad581526d3e14fe543b4d8cc9baf6add10d7264615 +size 1092 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_08.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_08.nbt index ff6e0964..d57f2e68 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_08.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_08.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdccb4ab07b7fd5c4950ff622cc6b34818ddc34503a164ab38598c6533086724 -size 945 +oid sha256:374ff851adcfa5000ad08b3e97277aa714eb6d7db8aef949c2fceadf983cfdf7 +size 944 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_09.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_09.nbt index 909b2267..0592dbd1 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_09.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_09.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab9f442a7656c7ecbca232cf6ddca973d6bbb6c19befd03af42aafa55aa752af -size 1527 +oid sha256:52e658d0b2a3e22c8cb5336309f5c09607a8732b2e33021951acb5808c596023 +size 1526 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_10.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_10.nbt index 9e7137ae..f8a2c3f4 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_10.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_10.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e963e20ca79218a489bdefc4aa47f8d34c98134e3d96d61251acdac04150d8f -size 530 +oid sha256:7727f309c3099541e59be1778d79d6dde07db9d71268805be1e2ff7aba80fee9 +size 529 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/straight_11.nbt b/data/minecraft/structure/village/savanna/zombie/streets/straight_11.nbt index ae184c22..5eb352e5 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/straight_11.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/straight_11.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c65c5e46432ad8c9fc5955d36ce225819f0373507540e056fa13867c100ed374 -size 1569 +oid sha256:986b9cbe45d7a08fce494d6423c9e3343cb3141be2cdf9d738d6d4e4e8c02146 +size 1567 diff --git a/data/minecraft/structure/village/savanna/zombie/streets/turn_01.nbt b/data/minecraft/structure/village/savanna/zombie/streets/turn_01.nbt index 7c661e9c..156d2530 100644 --- a/data/minecraft/structure/village/savanna/zombie/streets/turn_01.nbt +++ b/data/minecraft/structure/village/savanna/zombie/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a4a634c7d970514e461ffe48b01cf3bade893b9daa6904602025e5d069f6b10 -size 1167 +oid sha256:88da058c6b96399ae37653be2bc25ef4f49596272b284e75b04839cc1b8bd154 +size 1165 diff --git a/data/minecraft/structure/village/savanna/zombie/terminators/terminator_05.nbt b/data/minecraft/structure/village/savanna/zombie/terminators/terminator_05.nbt index 2c190659..f154f69c 100644 --- a/data/minecraft/structure/village/savanna/zombie/terminators/terminator_05.nbt +++ b/data/minecraft/structure/village/savanna/zombie/terminators/terminator_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e42760eed184901903f9036496250706750af8a1b2c3240060de95e35341f16a +oid sha256:2fdba5f8603c0ce15de8c914f85867e74173a57538d90c56366bbf2710668619 size 1193 diff --git a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_1.nbt b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_1.nbt index a444daab..7194c00b 100644 --- a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_1.nbt +++ b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46c1ed61379e9ab295202710a7d1bf13b09cb44b6c316a29f1e36c69bd4fe2cb -size 3185 +oid sha256:cde5ed62de5578b026515593b7908a6586af7d134f78e6f88341cc98305382fe +size 3184 diff --git a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_2.nbt b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_2.nbt index c20a739a..a8e1df13 100644 --- a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_2.nbt +++ b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b59ba1dbfa4d2864c12d4bf4f066981e09f62ce755b80782b98c80b8378c9503 -size 2713 +oid sha256:395bea240a3a75bec8e4f87fe4c13026cd552202219fcb4909a180e259ad371d +size 2712 diff --git a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_3.nbt b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_3.nbt index 0d1c1e52..ef501643 100644 --- a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_3.nbt +++ b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dacf7dfab9e1fb32c3b9d70c372adfcf3dbd18ab90383b0dcbd84a5afc4bd61 -size 919 +oid sha256:b7850447bf4206018ab03589df58ebf9f47aa7c3df69e387c259fb41639a9e00 +size 917 diff --git a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_4.nbt b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_4.nbt index 9143f23e..942a0994 100644 --- a/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_4.nbt +++ b/data/minecraft/structure/village/savanna/zombie/town_centers/savanna_meeting_point_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e648afaf381aa76f51374bbe88a99259e8069baaa3b380beaaba34c5ee80874a -size 1146 +oid sha256:f3aa2c567dbc75e6a87e1d7460d0c9d29fa8560551bc89dbcbe271f560576ba2 +size 1145 diff --git a/data/minecraft/structure/village/savanna/zombie/villagers/nitwit.nbt b/data/minecraft/structure/village/savanna/zombie/villagers/nitwit.nbt index 49c6db1e..b0e929e8 100644 --- a/data/minecraft/structure/village/savanna/zombie/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/savanna/zombie/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64307fce0b89a68cbe2c3b474fcf4f678cb6d54fa862bc06fcd16f60b865df91 -size 759 +oid sha256:e8a6e548028f177fb8295db5d53305e99903b27e06c6610e81fb33e1531f05a3 +size 758 diff --git a/data/minecraft/structure/village/savanna/zombie/villagers/unemployed.nbt b/data/minecraft/structure/village/savanna/zombie/villagers/unemployed.nbt index c4fadb9e..206d7dfc 100644 --- a/data/minecraft/structure/village/savanna/zombie/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/savanna/zombie/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70f93a2bff48270f545fcfc120a769cdcf7a6fb15419c1ca132773f21bbb5e17 -size 757 +oid sha256:8b8379e3f9eb9e25bd7af7660021bfb656b4c2c6f174b09f3e736c5ecd18ff2f +size 756 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_1.nbt index 46bd1442..c3afec9b 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00469e0f4568c737c43f466b65e32c76e483d5b36d8df2ab4d7fdb62b9161d32 -size 1622 +oid sha256:96d575be22a6f8ab59747c807e788e9a23e3bb9a9a18f5b0cb713f83ce0fa7e8 +size 1620 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_2.nbt index f8af67f4..05de5ad6 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_animal_pen_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbdf8faa036697298b38acd2165a9222d4a5f89b41f34da1274310b708d0b835 -size 1262 +oid sha256:2682fbe29a8331f9c1fa7c52127c56d6fa9d88abb2bb084e7b37dbdb9e691d7d +size 1261 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_1.nbt index c07b62e5..66e633a6 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef6eddf156a9f029c1587d4653c10488f534a5e2fd1d716c51a4559b2da49e14 -size 2172 +oid sha256:f355c0e0e20523db1cf7dce7833c024602a4729c042b399ddae7808a71ed9e79 +size 2190 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_2.nbt index cb8df4c4..296e61f0 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_armorer_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48b972c0c87e0a3c2f8759e0aaf24a15d857a8250fe8ec08c4c43b44c1a34858 -size 2052 +oid sha256:095ea71ea27e300ac88fb6f7bab96accc5342a34f44d184cc6bcdf805613647d +size 2068 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_1.nbt index fe06fd0e..7f2dfdb9 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53f8e591bf7491e3173550b0a98a0b305ffaaae6ac64386458f9838e4a8c3d0a -size 2548 +oid sha256:f443b17a966a6c35654642f118b45d45d0f572749405eb37c571fd6ba066059e +size 2566 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_2.nbt index 8abbd6c4..18b6e0bd 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_butchers_shop_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c780f05d48b17afafcc7b2f27ca71ebf8ae0c584d65bdcb52eb9aae2882d26ed -size 1446 +oid sha256:dbabcc4358dace970b90543cc28857e8b1fb6d4acc50f3cdbb9b6780e8dc3f08 +size 1463 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_cartographer_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_cartographer_house_1.nbt index 2efb552e..21173fed 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_cartographer_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_cartographer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:613c40881eb1212673af5e3534247684193b509ff0477b6564b8bb42b73e3380 -size 2362 +oid sha256:dd059e9a08ca45b0d1815adae21a0a6b32ae3f57a37d77d6186e0f1b1fc4fd09 +size 2359 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_farm_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_farm_1.nbt index 6ee269a8..0d635f3d 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_farm_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2379320b45b28f13fcd20069ae86a4d5a4f1cb1c399baa984da1d42fb6cdcc81 -size 1253 +oid sha256:16479de9178ddc1c89db9630aa51ac85c5e3723eeac03ade3585793d4e3fc7de +size 1252 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_farm_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_farm_2.nbt index 4336f76d..e846f875 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_farm_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_farm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9505c09aaec57feb856b9ece48f549f8bdb8f25a2f8ac551f5c1282ec10ad6e -size 1076 +oid sha256:af9df2c038db135ebc671df5759f134dc962cc51a29258802f948be9cc76f0d3 +size 1075 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_fisher_cottage.nbt b/data/minecraft/structure/village/snowy/houses/snowy_fisher_cottage.nbt index 2abe113f..e627cdb2 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_fisher_cottage.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_fisher_cottage.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdbecb56449d2b2aa6655e3c8323daab061a3915d84026df280fd8c6874c07e8 +oid sha256:36ad7a93c1f0c1e5f7b7a7336dcb965107baa09aeded6714e8c1489705078c3d size 2236 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_fletcher_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_fletcher_house_1.nbt index 5f4f7219..77583c81 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_fletcher_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_fletcher_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed7c4682d412986e8c44dee22fe711406ac96b58070697f56a7cd81b77fcf9a8 -size 2121 +oid sha256:78fd9be3cfe83da2a8f614a66d662d64cd6f43160e90bff6d072f4203240c32c +size 2120 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_library_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_library_1.nbt index 5079875f..d2469378 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_library_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_library_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5cce41f42d2c7db4fbe3bc633ba223243cd6c0fe18b015d53cdc80a17c1efcd -size 3447 +oid sha256:4d106efcaba952c4a6b0e32ab6016afb3e608bba01a60c06464507e392b39786 +size 3446 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_masons_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_masons_house_1.nbt index 6f454a32..cc25db8c 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_masons_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_masons_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b6dcaa63ad422e72bd0f1af67a41fbe49526763674fe4cc1d2e120c65776daf -size 2980 +oid sha256:210d0f4b8864d1b87970d63173703bdc990eded58c3f7a6515a302f7fa61e040 +size 2997 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_masons_house_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_masons_house_2.nbt index 655761d0..cff740ad 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_masons_house_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_masons_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb03867f39428f6ba731d72f9424c01b2e0d62468eb0a91f7e276f43c1b9c997 -size 3166 +oid sha256:dc7c7392becff9a8597be613aa91f1dc499248af1e8b97012f8d33fbf3688ab9 +size 3183 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_medium_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_medium_house_1.nbt index a28b06f9..789e6a47 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_medium_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7dcee75496ffaf17bae572d3484d283be323b508393892e72ac81e8625ed0fcb -size 1595 +oid sha256:0beae5b3722b515c3baf5999dc84d61f26799b7844e747ab0572d612a1ba6720 +size 1593 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_medium_house_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_medium_house_2.nbt index d2b384cd..6b612468 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_medium_house_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86d567b1aac8aae349f249ce762ff865b95ce100c62a1b18cbd7d8a8dbf35be9 -size 3511 +oid sha256:6225de4e64629a5417caadd4c2b1442fd0f380eea547103f026d16be6b69f4b8 +size 3531 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_medium_house_3.nbt b/data/minecraft/structure/village/snowy/houses/snowy_medium_house_3.nbt index 6faa7a77..290cac6c 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_medium_house_3.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_medium_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9526e82841cccac9e7a9858ba087f8d03d59076a817d79f46ee655503881506 -size 1189 +oid sha256:47c60a46bdc3fb3a22705eef926b5e2890b959168f8e338123c2eb27c93d1b09 +size 1205 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_shepherds_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_shepherds_house_1.nbt index 4f0bd3fd..25cb70ed 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_shepherds_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_shepherds_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b50ef14ac0a05ae6007185a844e3ff4080d28edcb1d96388846fb7589695f7f -size 2167 +oid sha256:14e46e7c86de518d4fe5504e3dc6a873dbf0a2b3fad0b6053788fdf2dc8b079c +size 2166 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_1.nbt index 5ecd82dd..9d9ae88c 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9669fa15f6834563005cc51aced143a69fbb6bb86fc4fd8df92dddd030f418e -size 1318 +oid sha256:216e73cb66e8a83d61d0894e129a79de402392283d85a09d848c338681594e88 +size 1317 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_2.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_2.nbt index 03762d37..3e289164 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_2.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a0a22b71665bcf6a4ad31ac859cc0349607280c50a5dad9696a5ea6b42cc459 -size 2100 +oid sha256:3cd59bb12c433270ada63e4fdabbe771693d597e24bbc8d424b9f7c4bf1c01c9 +size 2121 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_3.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_3.nbt index 279104cd..0e3671c8 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_3.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11ab0962e01e7ecf3b927ec74968e8a318cc15eb575dfafd93b3eb6044f426e4 -size 1738 +oid sha256:f96d48c3480cb46ff1de97acf42874f53cc7888c4365e475cedafda481712ddb +size 1756 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_4.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_4.nbt index bb7c89cc..11deb7d4 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_4.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6afa4477e7c19ab6661623b4d2c0e686c1eb6f7717ead4ab50369698a5bdf937 -size 1586 +oid sha256:ef92dc197d3abfd76a9967d1418d7d8dd1d989ec9be2ac4ec405016e87145315 +size 1601 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_5.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_5.nbt index da7e6d46..34f1be08 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_5.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f50e2d7e516fd6234f84a7db00c533681c5ad7a9dc4caa1d894d9e9fe2207773 -size 1141 +oid sha256:0ff5e39d9073cb20415356705fc69a2856045cbe0f037f1527a200e66007f510 +size 1140 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_6.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_6.nbt index 6d194cd4..7d95c072 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_6.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e61efa75533964696c47551f19a6282174f72c6cf359b998f86ac489e1a52614 -size 2198 +oid sha256:2b54883e6a8db4a0f17d8a50a54b0c7f360546c103f72d7daef8df64420f7786 +size 2213 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_7.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_7.nbt index cd560790..c7d11540 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_7.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0e40af18d865ad93cf571004704d5cf44711d829e79ffcd910b4f5fd434897c -size 1619 +oid sha256:9eeada7420003812881229e9d1e430232f9f8ce6ec7050a608847d2221723535 +size 1617 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_small_house_8.nbt b/data/minecraft/structure/village/snowy/houses/snowy_small_house_8.nbt index 87cbbf2f..1c178ab0 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_small_house_8.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:787491232835cd4e6971bac83ff855097a4ef3715bed5f51c46b46b700d70637 -size 1021 +oid sha256:50e37d881b1b10c4f25ff6ee94261af42890a9c05dc867f17cde72c2a6665807 +size 1020 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_tannery_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_tannery_1.nbt index 4c90befb..e8dfec5f 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_tannery_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_tannery_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c08073c53e5326eaf0d115795884cc4561d58e9bdb27323c027a2b1c77ec108 -size 2956 +oid sha256:513ec510d7878b19a7e505db6ae8ed96ff7682a0c107076848217e549fd31fb6 +size 2973 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_temple_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_temple_1.nbt index 7722b596..eda40b99 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_temple_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_temple_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fe2b3b44def396f4fb83d135f0ffc427e657cf169123885a0e0237199426982 -size 3574 +oid sha256:b346c7b50df37a746e595e9963a0b3d13595ae8c3638a1b0725b47103e1b990d +size 3572 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_tool_smith_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_tool_smith_1.nbt index 8a18b618..cef71c22 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_tool_smith_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_tool_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec89e4b348867aab24fc8319ca332afccd6ca1071d9372bf664d752b30e8ca27 -size 1915 +oid sha256:d9cb9d03496415114d750101bc87de5659965ed857dfb4c0a6e8dade9b993d7e +size 1914 diff --git a/data/minecraft/structure/village/snowy/houses/snowy_weapon_smith_1.nbt b/data/minecraft/structure/village/snowy/houses/snowy_weapon_smith_1.nbt index 5c4bce1f..75c4e843 100644 --- a/data/minecraft/structure/village/snowy/houses/snowy_weapon_smith_1.nbt +++ b/data/minecraft/structure/village/snowy/houses/snowy_weapon_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9d093a222a065165fa130b50c073fbec9aa97aa97a9409d1d7d91ada1b9360e -size 2757 +oid sha256:53b861b5f0360cef8f9fe07157b6e1e6cf8f79ddf63118c0308c12730dca65fa +size 2755 diff --git a/data/minecraft/structure/village/snowy/snowy_lamp_post_01.nbt b/data/minecraft/structure/village/snowy/snowy_lamp_post_01.nbt index b0e515ac..cfd9b650 100644 --- a/data/minecraft/structure/village/snowy/snowy_lamp_post_01.nbt +++ b/data/minecraft/structure/village/snowy/snowy_lamp_post_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f940300c4af32de68ba50a9d2b04fc477f3a4cbae1a964db937e0c60a04e4376 -size 380 +oid sha256:2184d3629e1f3826cb2f038d3099ad23e6dc660d899b598059f189780c59ba05 +size 378 diff --git a/data/minecraft/structure/village/snowy/snowy_lamp_post_02.nbt b/data/minecraft/structure/village/snowy/snowy_lamp_post_02.nbt index c860c9e0..5165bc1d 100644 --- a/data/minecraft/structure/village/snowy/snowy_lamp_post_02.nbt +++ b/data/minecraft/structure/village/snowy/snowy_lamp_post_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e670143223a65917a83d2c2b8d1fdc0ca035731a287ae48836d2d6bb819937f8 -size 357 +oid sha256:eab9937a5cd7696c7346a463d1780227e71651b4e403de1d0c6e555d392dc9a5 +size 356 diff --git a/data/minecraft/structure/village/snowy/snowy_lamp_post_03.nbt b/data/minecraft/structure/village/snowy/snowy_lamp_post_03.nbt index a56265a0..91f1d5a3 100644 --- a/data/minecraft/structure/village/snowy/snowy_lamp_post_03.nbt +++ b/data/minecraft/structure/village/snowy/snowy_lamp_post_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf12efe8643ddfb0806c64f5a095ec222d88d078d4b1eaa5018a6a81fa37f961 -size 504 +oid sha256:5405c4b9a12de44b78ba02fbc5bbbd3e32a9c5a54d5846bdbf8a7d7090470c25 +size 502 diff --git a/data/minecraft/structure/village/snowy/streets/corner_01.nbt b/data/minecraft/structure/village/snowy/streets/corner_01.nbt index e824bd04..016e87d6 100644 --- a/data/minecraft/structure/village/snowy/streets/corner_01.nbt +++ b/data/minecraft/structure/village/snowy/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f169e4ab303a8924b3a9785f80a2fbc9765d0d1bb0cfd11b4760ed6b18008dd -size 1098 +oid sha256:2855242e6dca1f76a1b45c1c05890cdbb9b1e41d6b8ad5f902bb68fd4beed536 +size 1097 diff --git a/data/minecraft/structure/village/snowy/streets/corner_02.nbt b/data/minecraft/structure/village/snowy/streets/corner_02.nbt index 9bf56f48..0c63d560 100644 --- a/data/minecraft/structure/village/snowy/streets/corner_02.nbt +++ b/data/minecraft/structure/village/snowy/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d205e6582cf546e4ad3f948d280098f86167258a79a3e8e3cf767b217e63d8b -size 1809 +oid sha256:81a1ce9aaa29b652f889c3fb1fbba2904d208b627b04e7f2e98302a82790eedc +size 1808 diff --git a/data/minecraft/structure/village/snowy/streets/corner_03.nbt b/data/minecraft/structure/village/snowy/streets/corner_03.nbt index 9a36b597..1bee7b16 100644 --- a/data/minecraft/structure/village/snowy/streets/corner_03.nbt +++ b/data/minecraft/structure/village/snowy/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ba58b8b2f468b9fba56d01764857be5f1c1ea841242e69ded2c1635b61e9996 -size 395 +oid sha256:0440c79d51d734c75945a115fcc56115eccd8d64199a8885884c8a5f1bcd1d80 +size 394 diff --git a/data/minecraft/structure/village/snowy/streets/crossroad_01.nbt b/data/minecraft/structure/village/snowy/streets/crossroad_01.nbt index 97df2a5b..6792182c 100644 --- a/data/minecraft/structure/village/snowy/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/snowy/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00ba0b59ab8e9c71b6797cfdf78fdf7f642fcda90b90d168228dd243ee2c78c4 -size 1920 +oid sha256:2ccb685149573c7b906fb9fa93bdeeef674d2f60d21488f998e767cf1a7e24e5 +size 1919 diff --git a/data/minecraft/structure/village/snowy/streets/crossroad_02.nbt b/data/minecraft/structure/village/snowy/streets/crossroad_02.nbt index 803bd2a9..b8063e31 100644 --- a/data/minecraft/structure/village/snowy/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/snowy/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c18c42d44f7b29760548010ee449076c7b7d2bbaa85a7961070bd76b6fe5577 +oid sha256:8443cd11e89cb1183431ee60d67f89fb1a6689501ed4a02db1fa5967c655f4aa size 1958 diff --git a/data/minecraft/structure/village/snowy/streets/crossroad_03.nbt b/data/minecraft/structure/village/snowy/streets/crossroad_03.nbt index 61cd71e7..6094ad5c 100644 --- a/data/minecraft/structure/village/snowy/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/snowy/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1216f5652c666ca3c937d2f616a51c1dbed9481773e4151138a4b0d58d8cee3d -size 2024 +oid sha256:8e02392b03cde16570103e9e218b770fe79fd7abd2bd74b85bd370fa36b6847d +size 2023 diff --git a/data/minecraft/structure/village/snowy/streets/crossroad_04.nbt b/data/minecraft/structure/village/snowy/streets/crossroad_04.nbt index c3629f9c..df963970 100644 --- a/data/minecraft/structure/village/snowy/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/snowy/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a3420d468a92a9119b07398b1f6fb99144de37f30074ec619f60d618b6aa0de -size 432 +oid sha256:36f441e87d1c539fb15a9e327f8a212e6bd48fae2a43c0dff0b5b3b7f3604613 +size 430 diff --git a/data/minecraft/structure/village/snowy/streets/crossroad_05.nbt b/data/minecraft/structure/village/snowy/streets/crossroad_05.nbt index 1304298b..3b68f1fa 100644 --- a/data/minecraft/structure/village/snowy/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/snowy/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f402c5c4b10d5e5ccc03a6d89efb6404133fa60cb09b9124ff563a714e7dd55 -size 474 +oid sha256:8ebf34202d27aac10e2cdb727ccb11d23d776e23e43b65f0405f3c8d11ee29c5 +size 473 diff --git a/data/minecraft/structure/village/snowy/streets/crossroad_06.nbt b/data/minecraft/structure/village/snowy/streets/crossroad_06.nbt index 182387fa..75d661c8 100644 --- a/data/minecraft/structure/village/snowy/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/snowy/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69081d6b11ddceb90f00413d825658530324fea3a0941d45ab9e2f66b9e17bb3 -size 529 +oid sha256:9ae0ac25fd74c9f2d3d8371c62d2ad6d3fb23fb68d8ad4710849f260df488700 +size 528 diff --git a/data/minecraft/structure/village/snowy/streets/square_01.nbt b/data/minecraft/structure/village/snowy/streets/square_01.nbt index a4c423c3..e8c1156f 100644 --- a/data/minecraft/structure/village/snowy/streets/square_01.nbt +++ b/data/minecraft/structure/village/snowy/streets/square_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:317fd7a383fad1855b26152620cd02f23e596754a30f905a27cdb79336ff0960 -size 1511 +oid sha256:32dd75f70ee32b11c23e0578dde4aee56f726735208fbe6b97bcd817aa0fe405 +size 1510 diff --git a/data/minecraft/structure/village/snowy/streets/straight_01.nbt b/data/minecraft/structure/village/snowy/streets/straight_01.nbt index a23ff405..825e387c 100644 --- a/data/minecraft/structure/village/snowy/streets/straight_01.nbt +++ b/data/minecraft/structure/village/snowy/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d73f665ec0969410024f1a524514855b6c745c4a5cf5b3182f7000abcf94f57c -size 1852 +oid sha256:c13405d3763ca009cc060b6751cd288adb5e1b4574668180d34bbd6a93918ef0 +size 1851 diff --git a/data/minecraft/structure/village/snowy/streets/straight_02.nbt b/data/minecraft/structure/village/snowy/streets/straight_02.nbt index 2207cd0c..8b6a0738 100644 --- a/data/minecraft/structure/village/snowy/streets/straight_02.nbt +++ b/data/minecraft/structure/village/snowy/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00050cacf637f8f4475e68db1d02bc5d50cee327b55b957aa65177f3da8fb0f6 -size 1775 +oid sha256:f4801a9e1f5c10c46c6ce35d61de4e74809d4ef44df19f4f0b55efbb355422da +size 1774 diff --git a/data/minecraft/structure/village/snowy/streets/straight_03.nbt b/data/minecraft/structure/village/snowy/streets/straight_03.nbt index bfa6aea9..3774cf6e 100644 --- a/data/minecraft/structure/village/snowy/streets/straight_03.nbt +++ b/data/minecraft/structure/village/snowy/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f134b4f2493826e9756a7bfced8c6913868e19251ae35291900496aacd9fb6cd -size 1220 +oid sha256:aead073ac816e2e5131490cae605debf12e5417820f807a3b9454dabfd5bfd37 +size 1218 diff --git a/data/minecraft/structure/village/snowy/streets/straight_04.nbt b/data/minecraft/structure/village/snowy/streets/straight_04.nbt index 9f0d2abb..a0457502 100644 --- a/data/minecraft/structure/village/snowy/streets/straight_04.nbt +++ b/data/minecraft/structure/village/snowy/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f926af02770d0dbba696c554ebf328d5e4e14a8952856b6ee0380439550614ca -size 710 +oid sha256:ca2f754302c507d01936cb95cddfd2b7c718d712bad0464765bccc528047855e +size 709 diff --git a/data/minecraft/structure/village/snowy/streets/straight_06.nbt b/data/minecraft/structure/village/snowy/streets/straight_06.nbt index 3b7a1033..bcd63a2c 100644 --- a/data/minecraft/structure/village/snowy/streets/straight_06.nbt +++ b/data/minecraft/structure/village/snowy/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:831e65ed2961cf0cbf3af79fc0f404adc8ac197996e66970a684bbf8e3404cd7 -size 2618 +oid sha256:a7558600402a590783652789aab03786a27c353168179fe2b140a7ded4152d24 +size 2619 diff --git a/data/minecraft/structure/village/snowy/streets/straight_08.nbt b/data/minecraft/structure/village/snowy/streets/straight_08.nbt index 30e9427e..96c992ff 100644 --- a/data/minecraft/structure/village/snowy/streets/straight_08.nbt +++ b/data/minecraft/structure/village/snowy/streets/straight_08.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9b13ac9a63093ada308e12052205b5d434db972705c4be2556d116096d1fa9a -size 1943 +oid sha256:8a92382520622f9f6f2588dfbcadda18d90f71e2a0ffd6d998b52c2eb2eeb49d +size 1941 diff --git a/data/minecraft/structure/village/snowy/streets/turn_01.nbt b/data/minecraft/structure/village/snowy/streets/turn_01.nbt index 42f1fcba..08aaba26 100644 --- a/data/minecraft/structure/village/snowy/streets/turn_01.nbt +++ b/data/minecraft/structure/village/snowy/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2069b5b059156449975ebd330680f5235615e97031e79de187d08b91ef4cb78 -size 1234 +oid sha256:3d364898a576581a76a3891d9f1f1a525f7afa1e22b0e2fd1fb862efb6058e9c +size 1232 diff --git a/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_1.nbt b/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_1.nbt index 3bd521d7..aa6bd119 100644 --- a/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_1.nbt +++ b/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c1ca986d03202449c1ec3d4c8374bb1de4f10c3a8ec87eda6b40f194c5c5a9d -size 2734 +oid sha256:ea0795b8559de5590f16f6ee79747ae62443b8025b4ee94fa321c3997cbc5275 +size 2733 diff --git a/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_2.nbt b/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_2.nbt index 28c4f784..66dcfaf3 100644 --- a/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_2.nbt +++ b/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:706bc3e4b1b95deb6b178cd02383c258a0d31606da6f02f73df5fe23bff5fdb8 -size 1036 +oid sha256:e4e79daf062f945d5eed5d8e80d00cefb85dbdc5cec82daaef6c81361eb958cd +size 1035 diff --git a/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_3.nbt b/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_3.nbt index b689a941..0c21872c 100644 --- a/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_3.nbt +++ b/data/minecraft/structure/village/snowy/town_centers/snowy_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26e1a7c4976d1870d2601cb4d2429cb0d4e78f164dc4e8265e08bc432c12e75b -size 852 +oid sha256:af54ea7ab8119fcaa8ee01aa6eb61eac22bd67b01f286aca95cf22ed33a0b638 +size 851 diff --git a/data/minecraft/structure/village/snowy/villagers/baby.nbt b/data/minecraft/structure/village/snowy/villagers/baby.nbt index 3e644c56..006167ae 100644 --- a/data/minecraft/structure/village/snowy/villagers/baby.nbt +++ b/data/minecraft/structure/village/snowy/villagers/baby.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef2bb6885bcf45a89d8c8d3ce3d61cc1a6d4faef867e30f60fd88297960d5500 +oid sha256:dbc9300fac8db965d18a67586e42902e41fb69fe71b867f479f406e266267f9a size 749 diff --git a/data/minecraft/structure/village/snowy/villagers/nitwit.nbt b/data/minecraft/structure/village/snowy/villagers/nitwit.nbt index 8a33ab42..8d9e73a9 100644 --- a/data/minecraft/structure/village/snowy/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/snowy/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:029bdda715ff0df3c7f6b63b8f3e630937cf7347b28d9985ea784247b41ac5c3 -size 751 +oid sha256:a2394060e2c9f012154b6e1c6b528ee1cba4c9c86d2a406d54d9639c14b91438 +size 750 diff --git a/data/minecraft/structure/village/snowy/villagers/unemployed.nbt b/data/minecraft/structure/village/snowy/villagers/unemployed.nbt index 20e7a2eb..218d9e73 100644 --- a/data/minecraft/structure/village/snowy/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/snowy/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e366320c8585e46b426ccf7710d577205a9632bb4094ef6f65f27f31dedf579 +oid sha256:846e84c74cf0fca21b39f805a3187b3cc78a54076d4f55c7f42d8a9c33cbc252 size 747 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_1.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_1.nbt index 192b79d6..ad261152 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_1.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c75b0a3b0455495fccea8065cd2396d682ff7d10955ef19d4a4554e4b7cc2047 -size 1601 +oid sha256:9957b0e7fa599d828ec8c2b5107036bd314d25e406e2ce47dc877164369b4bf2 +size 1600 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_2.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_2.nbt index fca94166..9be848b1 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_2.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41d374b390e535f7fbdba17805d335b62bd97d47de3df70f614eefd39e01153a -size 3559 +oid sha256:a31895d930cc5314df2919b092d1acf431b9f2fd4926faf30cbbd29d18c7f9ed +size 3577 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_3.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_3.nbt index 8f0b09a2..3ce3df4c 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_3.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_medium_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abbf3273ddf26049da76df0ab8a1c4460431bb646c3ae2635fd087f5fb3df495 -size 1195 +oid sha256:03638c184954ef75b3ccdc45ebf841dbda5435be241873054ddafcd3f05982f1 +size 1211 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_1.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_1.nbt index ea231561..256c8d88 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_1.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adb679f15508dbdde086c5473d538c6e65bc7dafd55fe923d2fa625597f840ff -size 1323 +oid sha256:ff3b01bdfdf278caed71eeb8ae1cfd7b18af0cc88f9dc6b6e2d839145dde1de1 +size 1322 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_2.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_2.nbt index 2a78e61c..312ed365 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_2.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c4a8af53feefbbc0f488d03293e98db16715375196319f9635ccf20a1daeb3c -size 2121 +oid sha256:e7bae8fbd6ca80b0706241f362d605bf22d6790c859c697501b270422b7fd886 +size 2138 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_3.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_3.nbt index 43810bde..54ce9167 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_3.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a5119142ccb0d270f9ac0ea83c0bfb4064816ccc466be902d3d522cb1211dad -size 1796 +oid sha256:57a2f32758b47f6beb386236fc9687d59b5f9351ef930c34412b50cce5e60999 +size 1812 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_4.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_4.nbt index d54109b2..729e366b 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_4.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96cd1d6ba80cb3e6f22636e9427f5476bbbbcdd2c8aa45f91790826d7edcc5f2 -size 1592 +oid sha256:5b1f0408f32a9b1d19da4f153ee5101aec482a0914c93eb4284819a1215badcf +size 1608 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_5.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_5.nbt index 7cf77d48..bced0d9d 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_5.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50f98c97c2d40c3f8be267374f866f436c2121f08d7885902e1de61d3b1646b9 +oid sha256:49c222d2350f09d9b280599edd4556032ab1364880b75d1967650cd1341d36b0 size 1148 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_6.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_6.nbt index b220e6aa..ccd407cc 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_6.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09468095cf018865b84903cad6a7a20bd0bcc88bda19680a46ebae1fce9b9c2a -size 2206 +oid sha256:3caf4ce41235baa5c464f16f5dce91a9815e54b1e2e4a7553dc79af3a4bb5677 +size 2221 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_7.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_7.nbt index b18da03c..4cdc100a 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_7.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d190d8ce16c5c9e00ff4db6040bf9145ae23d46d85216a14342ab90d3c0f638a -size 1625 +oid sha256:999f785d59d2c17434654ef2d6347f824afd0381a7aa53d429b570844ad43688 +size 1623 diff --git a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_8.nbt b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_8.nbt index fecf9fce..1791106a 100644 --- a/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_8.nbt +++ b/data/minecraft/structure/village/snowy/zombie/houses/snowy_small_house_8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b31cfce1326014e0e94ca66c036aa38447a90b0fe132ef8be4642f9ad07483e9 -size 860 +oid sha256:1a6e67b29646ee8365430ef376c0ea15f4ab1ba9aecdcc934d876441da1768b0 +size 859 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/corner_01.nbt b/data/minecraft/structure/village/snowy/zombie/streets/corner_01.nbt index 3a2e64fb..b844df1d 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/corner_01.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68a32500d8fc9867c533a0dc312df5de23c627c11e8e61152584db6c409d4734 -size 1108 +oid sha256:80f0706046897e4296d6f24cc236768fe1f266449f0b2d89dfcc2c891c91299a +size 1107 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/corner_02.nbt b/data/minecraft/structure/village/snowy/zombie/streets/corner_02.nbt index b12a6981..b7d0d400 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/corner_02.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:880ea3287e02b067a6a993698cf8cac1e6d9aea36b5e9f07b64bd81534474a62 -size 1816 +oid sha256:02ca21b6b9ab98bfa2c28fab9a14b3564171ff8fb118a7b5f45ed3dc40037c47 +size 1814 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/corner_03.nbt b/data/minecraft/structure/village/snowy/zombie/streets/corner_03.nbt index 7d7948a1..7fdf26e4 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/corner_03.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:960c918906d5e217cd1eb95e36c25c823ec2d564ad6f92289669febdbe4148f7 -size 400 +oid sha256:8e598c543ad7ecc301202aed6425e7b7dabfbe779fc26624c17fb2f969e3b325 +size 399 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_01.nbt b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_01.nbt index 6f7ff894..adc80863 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b53515c80ec95e4e28ddfc0114febe66b2dd74241aef420e486c90f99f44509a -size 1925 +oid sha256:4cf07cc0b016cdfaaed6b2e83cbf735640fab06427e6348afb6a2f2f93d682de +size 1924 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_02.nbt b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_02.nbt index f67cfa06..0f289161 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01bf20653d45e7d78bf646e77dd8f72867e458d6817d2a4f81ed136c8f330494 -size 1963 +oid sha256:d5661ab167d586c1d3fcd046a90a9e3b14446f1efcca2c7e4b13170097494c3b +size 1962 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_03.nbt b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_03.nbt index ffc429ca..087898e6 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b33889bc2a50800c5775f485d92042f0993aeb59f6229fa728df3ba39e04f6f0 -size 2030 +oid sha256:6dcb4ad20b7c68ec1600042d2d6ea73dba73df8a7b5556305934b1de2a762f69 +size 2028 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_04.nbt b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_04.nbt index 9faec5ae..ab62c013 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9062895bbaea4521b2e3ce353a858b3030c0437ef6dcb89832a813c392a0ec5 -size 436 +oid sha256:b69cd1f3de74fccd6e7647d70d48e5deeab1f18380fc77613af9dec71c7af687 +size 435 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_05.nbt b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_05.nbt index 7e48da6b..87c8480d 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:647c77558d6f8e9e3980dc845a4d2759d44af5c2ea7dc0135c8ea048ca31610f -size 478 +oid sha256:07d09e9ab21b4b378dbeef3f3d92b3d27474ab78f05b506c7cb7ceea49876846 +size 477 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_06.nbt b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_06.nbt index 89cc7437..723da73b 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c1d357188a368d2feb3d3262a4d252d086453a0e8cdffd4972e8ea9e6e6db59 -size 533 +oid sha256:d085e6d78232ab000e5ee021c4fc4d842af4065a9e74f751215e36c6a62647fe +size 532 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/square_01.nbt b/data/minecraft/structure/village/snowy/zombie/streets/square_01.nbt index bab29b22..4b706cd8 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/square_01.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/square_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3bedc880d13b3f859bd0e918379f23ddface1fd4124a0c9bff99b817f6d1ee4 -size 1517 +oid sha256:dfab8551ce332f18940e3ad6a6c42185e77cda2dfbc2e0fa4d2642cd69db35ce +size 1515 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/straight_01.nbt b/data/minecraft/structure/village/snowy/zombie/streets/straight_01.nbt index 4bdefb63..20452774 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/straight_01.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60a869460af967d8cd828ade63d3e1612482d493b9a21077ad16594e883ba73f -size 1857 +oid sha256:175f330693b6e6491ba1edd4ab352d973dfe2578d82c2d36cbb3077311926952 +size 1856 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/straight_02.nbt b/data/minecraft/structure/village/snowy/zombie/streets/straight_02.nbt index 922bc5f4..08d4b42c 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/straight_02.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bfa3ba6348600f0135129b10e95fcafebb347f7450ce4b7f021ec0330239f4c -size 1782 +oid sha256:eee8f48f9db390d4cef8554d0a6592a619e069dbda24c6c037215ec919352db0 +size 1781 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/straight_03.nbt b/data/minecraft/structure/village/snowy/zombie/streets/straight_03.nbt index ca2466c4..a2c9fea6 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/straight_03.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1be9ed9e649965587b65d7ac67bf3516a5e75bb4183271c7a1f2a66a207b81cb -size 1225 +oid sha256:ce808c015d60e59eff2448c16d18cb07159e7596e2b34ca31719ea1361ba5b05 +size 1223 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/straight_04.nbt b/data/minecraft/structure/village/snowy/zombie/streets/straight_04.nbt index bcab6593..99f25a88 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/straight_04.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c6afe79f1a3340e495fd54b762a8099d0b28004f12959d433f6bd279d7b4a3a -size 719 +oid sha256:e09e665eea3b65ae8181748470c5621f1cf5421374f242d5ea3eede50a0ec105 +size 718 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/straight_06.nbt b/data/minecraft/structure/village/snowy/zombie/streets/straight_06.nbt index 542713c1..dc39d82c 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/straight_06.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3eadfcaa15589a4a4358ff3cc86fb82ed723975d5bda8c21b8814e897c6bede +oid sha256:9e86470ff310ebbb8fc1d2741c17c450c57b125c552580e69c1dea655eb0c2a6 size 2624 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/straight_08.nbt b/data/minecraft/structure/village/snowy/zombie/streets/straight_08.nbt index cb220d98..941ce7a7 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/straight_08.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/straight_08.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04e77e3819ee66f77d762596c3062c40aa149a4fa26c368f7024de5670bcf14c -size 1948 +oid sha256:fe93941a1e7f01dfed1394da61a823a959d8be6035343afb404cc2a0e25ee5d7 +size 1947 diff --git a/data/minecraft/structure/village/snowy/zombie/streets/turn_01.nbt b/data/minecraft/structure/village/snowy/zombie/streets/turn_01.nbt index 9577235d..481db031 100644 --- a/data/minecraft/structure/village/snowy/zombie/streets/turn_01.nbt +++ b/data/minecraft/structure/village/snowy/zombie/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f91d6fefd86bc7a26c9628c250be5c47ea22cbedcc10466214fd9eff58bb62f3 -size 1239 +oid sha256:321f63e294ef8f2b1ba6980d80244a53d3be827b6da8500d8206e760cfe98be0 +size 1237 diff --git a/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_1.nbt b/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_1.nbt index 9332118e..dcbc1f80 100644 --- a/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_1.nbt +++ b/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a917d75562204f864def9d97247c338cb7cac31a7e9c05bdb1949ef36451a4f9 -size 2694 +oid sha256:209375b1cbb81b9e23d317ad7697e137785d07ecbf56caf59820725b96daf3b7 +size 2693 diff --git a/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_2.nbt b/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_2.nbt index 932d7e18..28242dce 100644 --- a/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_2.nbt +++ b/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ee94f8ea5663da2249b11a67ba28f3b42feaad27a7e724a1fb7e508b86cb1cb -size 991 +oid sha256:a310fb7d5a0dd08d9569789fcc7d796d6bbd34e72dbf88be65343822f96a9d8a +size 990 diff --git a/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_3.nbt b/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_3.nbt index ba116d0a..352480fa 100644 --- a/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_3.nbt +++ b/data/minecraft/structure/village/snowy/zombie/town_centers/snowy_meeting_point_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb793055106a42bcb1ec381521b2e1563af53afe7b32a8acf2cfda49d55658f0 -size 817 +oid sha256:b7673e965b1952cf81770046ec77fe277902b46d86c8e4108dae839c176584f1 +size 816 diff --git a/data/minecraft/structure/village/snowy/zombie/villagers/nitwit.nbt b/data/minecraft/structure/village/snowy/zombie/villagers/nitwit.nbt index 690b4650..4c6e1303 100644 --- a/data/minecraft/structure/village/snowy/zombie/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/snowy/zombie/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a50dfec18ec1baf9753f506c319617c0bba8a5d7f554213323ac751e270db01 +oid sha256:202e42682fbf71dc166a423b0ac1b70ff65a382e41c1547f69fad48568da3fde size 756 diff --git a/data/minecraft/structure/village/snowy/zombie/villagers/unemployed.nbt b/data/minecraft/structure/village/snowy/zombie/villagers/unemployed.nbt index 0cdab5d1..2d66ab63 100644 --- a/data/minecraft/structure/village/snowy/zombie/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/snowy/zombie/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95139d0fd21b95a681f3fb608d148eaef9af7192cc7053e2c631dc6403417932 -size 753 +oid sha256:25db0cd680d6b528e6b329b077725d3275dc65e5d6d9c2e22a957d793ca7097c +size 752 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_animal_pen_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_animal_pen_1.nbt index 19997f6d..eeb390ce 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_animal_pen_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_animal_pen_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fca23b890164d7414323ab9122320b6ffccd3abd8df2c4dd2159fb1b73d419ac -size 2091 +oid sha256:1cb7fccdbe5ad5b7fcd245a2d66a8cf2d6209584df42a1c37f1b4d78fe36cb5c +size 2089 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_armorer_2.nbt b/data/minecraft/structure/village/taiga/houses/taiga_armorer_2.nbt index a670608c..55e09600 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_armorer_2.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_armorer_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5aceacdaf03921321711f3ae63560e9f705cede72003a457035d0a2dd9daca4 -size 2528 +oid sha256:8948cd20f38b88d3c721a0dd1d59a018b0116bc3226d66fb79e4ad2af4b2639c +size 2551 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_armorer_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_armorer_house_1.nbt index 295c0f32..a934d00c 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_armorer_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_armorer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68ed5258547f4613fe579f9177e641f9660d6264a7f2da15f4323ede9f602e0c -size 2058 +oid sha256:780acf8c501706e775cf81a04e87d5d738a5a1a29e7d7911f9aa85f55e2b8736 +size 2072 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_butcher_shop_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_butcher_shop_1.nbt index 235b0042..4eb345e7 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_butcher_shop_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_butcher_shop_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbe83d100b3740931a1ae73a7240134ef64be84445a5e2fd04bc1c71af0b95cc -size 3279 +oid sha256:62e8b54c6b134cf6de432d6d3dd71b81c04be8c02c39b9e4d1cadc6bca9e8112 +size 3295 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_cartographer_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_cartographer_house_1.nbt index 845a3789..3ef245c8 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_cartographer_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_cartographer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31a6888be1dd1826985518dd304a79505c4a81a7fc29d2a1da5c6d45d1aab449 -size 2607 +oid sha256:e7e721f484a1cfb3dabae7531f873a9e048cccebae486c93ab122aad4c023a0c +size 2606 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_fisher_cottage_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_fisher_cottage_1.nbt index 133687f4..04470658 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_fisher_cottage_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_fisher_cottage_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2123f52d1ca525f823827ad5cc067d12bec86989577023ca5ef8d329db65a57f -size 3655 +oid sha256:2bda92c1e6213b4a82c28a83fd99a63a5dc97e4318aa23bf4274c14d3326c435 +size 3654 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_fletcher_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_fletcher_house_1.nbt index 0a73f0ed..4e9b8fd6 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_fletcher_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_fletcher_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc907e96b3101edec5cb7f0c8eaa6b08f3b3fe11df8d9e32cd88ffb3ba70c47c -size 2768 +oid sha256:4b15104503ef41b5d09eda5a3cd514bd419ea4b1d93e0a844a9ea7bc71e474f7 +size 2767 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_large_farm_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_large_farm_1.nbt index 7ba7e086..2c949d80 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_large_farm_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_large_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1b2aa63eaec12263276524518eb2909d917093c59570ee20de90244c44dfef6 +oid sha256:a5830e9aad55251df1bab99003a4c1ddc0bebe4a4bd7caa7aba3860a70a5ac57 size 2212 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_large_farm_2.nbt b/data/minecraft/structure/village/taiga/houses/taiga_large_farm_2.nbt index d4308afa..81cd768e 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_large_farm_2.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_large_farm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aad84644f4628dc97ca8d2bf592dd442028003053561a1a3bea56141f1575eac -size 1601 +oid sha256:b8b82bb252b208f593c7f4d4a975a5fcd7b1d41d5c46c2a9f771bf53cce66ae3 +size 1599 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_library_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_library_1.nbt index 2134a44a..7ded1015 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_library_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_library_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0eaff08a057fb80b66b5f84b285449bc8ecd0c469564c812f92cf6fe9385baa3 -size 3449 +oid sha256:8718761124d205b81747955faed77a265d3e3fdf852be914dd763756e98298d9 +size 3446 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_masons_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_masons_house_1.nbt index e3be56e3..623a4170 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_masons_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_masons_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bd207fd76940b2096969fef4c91ed02f5c2cead7e9ef2602ee7eaf735fcae54 -size 2191 +oid sha256:abc74b5d9d6384dd0dcead2e0fd7c4ef4cd3b77f36c7874f10770a5ad92285e9 +size 2189 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_1.nbt index 7f0ef253..0d28c0c1 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80dc036eb39542f3201692015e15c0ac022c5b17d4fc3ef774519ccf37f86713 -size 2837 +oid sha256:c2b389d86edc0b20ccedcdd2c92bb48939b8c48f5874baa9943eec97f79cddaf +size 2836 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_2.nbt b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_2.nbt index 53b85d41..77e0cbae 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_2.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86422237e9843660add1f9ba16f031361ca7a3bc05fc30d9457f83563e3c42be -size 2610 +oid sha256:856886b7b9a4351ea421c1da59eb26016717ec3fb55ee1ee702c2f1642ee98a5 +size 2609 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_3.nbt b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_3.nbt index a7d508c6..a618d57e 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_3.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc50341df72ed49b96537c61d7c7acf6fb5adbe75fc086462529c2252003c37c -size 3066 +oid sha256:8e91af1854d387a28efa0aa13cdee1633963894928cd7f397b6d1ad2137949d6 +size 3065 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_4.nbt b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_4.nbt index 43a66a19..2a66dfa3 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_medium_house_4.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_medium_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:baa12e3f6cbe2aa224dbf6dfc19bf948d8ffc1a9fff48e59f79033b168386d21 -size 2754 +oid sha256:c3db43489ca44bf2e91d6db61d074b328ad0db43c8649a8925cde197da25412f +size 2770 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_shepherds_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_shepherds_house_1.nbt index 7c2c2e11..06bd826e 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_shepherds_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_shepherds_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:597cf9764c2b7b8e165f9a8a4a9b727938119da7cea2358f09eeb0b012ea8501 -size 3017 +oid sha256:781f2f4767487b531d6c388aad75eedb8babfb96fcc7bbc10cc56c14377d1541 +size 3016 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_small_farm_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_small_farm_1.nbt index 85aaa6da..da4cf577 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_small_farm_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_small_farm_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0f3de2722bbde67b47b54e4cf447625469f9d317673c7dc7e68b86804e24e48 -size 1258 +oid sha256:25a4a2565bcc5b82859a8db69235b799d9d2163de452db326ec56bbf6566b1d8 +size 1256 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_small_house_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_small_house_1.nbt index 77987675..f7fb0044 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_small_house_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6d54d737338a4ad2ceeb0c5da840b212f2fb764e740504cbd43cb9926cd7732 -size 2386 +oid sha256:073c860de34f22c0f5c42f88218a4deca651bd90422203b7795f56eb522dd5f2 +size 2382 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_small_house_2.nbt b/data/minecraft/structure/village/taiga/houses/taiga_small_house_2.nbt index 1da4cb25..9dc53f60 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_small_house_2.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b10342ead3dc43f7eac8fb978dce5f084d9f9f3c5eed7c71a1109ebd5470e21b -size 1777 +oid sha256:a6c12c7740748d187d6ecaf053ac79ce707cefdc1fcd645af48b82af2d52505e +size 1775 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_small_house_3.nbt b/data/minecraft/structure/village/taiga/houses/taiga_small_house_3.nbt index ca1e6b50..d031e8b4 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_small_house_3.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6d4ce8013f64068ba4c0111db5dcce0bb0836bbaa7e4c593a253ed3fb6f8a56 -size 1871 +oid sha256:784ef111b19ae480749dbc6a137c333bfc5c13cbce0fbbfc2681858886061f8c +size 1869 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_small_house_4.nbt b/data/minecraft/structure/village/taiga/houses/taiga_small_house_4.nbt index 52fc3860..9c989ed7 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_small_house_4.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aa0cc8b68ff189e45740be6896e9879ff37c8399051d86394726d007d42875c -size 1609 +oid sha256:eed21f396713a8d464ea093d89041241a39d979353bd92677e40936fea3ea6a8 +size 1608 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_small_house_5.nbt b/data/minecraft/structure/village/taiga/houses/taiga_small_house_5.nbt index 0ce670c0..d16814cb 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_small_house_5.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d097c681eaf6916aa75742744760809e3a90b24774138fb407cf372d93d992f9 -size 2042 +oid sha256:ffe0afdb038a4e0f6469295aad95e22b7b4d7d5eafd47cc9ac4fecd150bb6bf3 +size 2040 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_tannery_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_tannery_1.nbt index bda1f6ee..ed784c5b 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_tannery_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_tannery_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9fe892d9f25430fbd1cb58672409062bbeb9a9989b50fad800389131ca557e6 -size 2157 +oid sha256:54a3ba0b12944f6070899b7d3df5f4dd29b2e07b63a5434ede2d42f7af587936 +size 2153 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_temple_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_temple_1.nbt index 1b6a139e..84d15c1d 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_temple_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_temple_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3823637c4480e969e4d501996bc1e47272437a4dbbb0c0f3903e82749978888 -size 6643 +oid sha256:52e486e3f5aee16f1cdba06efffa7771259432cc790302d9aa662ff4f4edd7e5 +size 6644 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_tool_smith_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_tool_smith_1.nbt index d29fe616..7ed42903 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_tool_smith_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_tool_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bd9366f82e7e85eb0b8fd3e9ea1c18bf27aafabc9ca752b7512f182c2cabac8 +oid sha256:c97cbcc12eb667571277594af235c508702d36cc6ca9c10264ea2d0e2184bede size 2165 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_1.nbt b/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_1.nbt index c67dde90..88ab8c6c 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_1.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa6803d66546144157f978b2c4063aaf5e7c1309fd2cee639583f58e880177ee -size 2077 +oid sha256:1b2bf960a44a2c722826f7e420702e6b4151dfdd30841f16abeeb69ad5b3a14c +size 2076 diff --git a/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_2.nbt b/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_2.nbt index 623344fb..c9183f3b 100644 --- a/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_2.nbt +++ b/data/minecraft/structure/village/taiga/houses/taiga_weaponsmith_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82dce3e61acc885a985a666f0b41ffa2111f54049f935ccfa38314242d715e54 -size 1189 +oid sha256:0c026f4f62e4b3257eb51a7497e19047ece0842ed8733e811f95334d36cc15ae +size 1188 diff --git a/data/minecraft/structure/village/taiga/streets/corner_01.nbt b/data/minecraft/structure/village/taiga/streets/corner_01.nbt index 556323e6..6d33b2b8 100644 --- a/data/minecraft/structure/village/taiga/streets/corner_01.nbt +++ b/data/minecraft/structure/village/taiga/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5e20b4fe88c1a0ef776605da1d958f585bc3af98f52a08789f3f9c915904f25 -size 1182 +oid sha256:c8ce5de805c11c5dfe66cde4d5f3a36b09eff19a03e4ede1f539c66abf14ca28 +size 1181 diff --git a/data/minecraft/structure/village/taiga/streets/corner_02.nbt b/data/minecraft/structure/village/taiga/streets/corner_02.nbt index b48cf6f9..9aab37fc 100644 --- a/data/minecraft/structure/village/taiga/streets/corner_02.nbt +++ b/data/minecraft/structure/village/taiga/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9d2ce07e365e21b3561afb8f0640d443bdd5946884b890f2123931ed3c4b03c -size 1184 +oid sha256:f955910a62e8ffa20e0c19c391289c3744df06f76f6052d55e56c0e12b8a2d4d +size 1182 diff --git a/data/minecraft/structure/village/taiga/streets/corner_03.nbt b/data/minecraft/structure/village/taiga/streets/corner_03.nbt index c8eae2be..5a3a84ba 100644 --- a/data/minecraft/structure/village/taiga/streets/corner_03.nbt +++ b/data/minecraft/structure/village/taiga/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6ea66ab83686752595706c3011f6c9be58057b93ef05a9c7783d4be7be63beb -size 351 +oid sha256:3d0de2a98ae484de1f911edf0ecfd382d271f01bec9df0ab7b7817b1153e7fe9 +size 349 diff --git a/data/minecraft/structure/village/taiga/streets/crossroad_01.nbt b/data/minecraft/structure/village/taiga/streets/crossroad_01.nbt index 222ba609..1f722e2d 100644 --- a/data/minecraft/structure/village/taiga/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/taiga/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54de2734dc818b9fa4ff53119d91c771d527adf3aa0cc13d8fa1f7843720e953 -size 1214 +oid sha256:209012e6a77f3b980ede06a112b6b235a64a9d99fdfd69c237b39635ab4081c3 +size 1213 diff --git a/data/minecraft/structure/village/taiga/streets/crossroad_02.nbt b/data/minecraft/structure/village/taiga/streets/crossroad_02.nbt index 9aab15b8..aac7d2fa 100644 --- a/data/minecraft/structure/village/taiga/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/taiga/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac038c95f0b166f3260d8ea6571e0e2de339de890c61c13bb8cc452c05c8839a -size 1160 +oid sha256:e04ff325177a01fc5cfac693ef02fba8bb06344e5ccc48a10cfb5dbd560c050a +size 1158 diff --git a/data/minecraft/structure/village/taiga/streets/crossroad_03.nbt b/data/minecraft/structure/village/taiga/streets/crossroad_03.nbt index 572ee5bd..04818db7 100644 --- a/data/minecraft/structure/village/taiga/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/taiga/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9983fe7019e26e0375bb489b262dae7a625c3bf6d22ee5e7ff1319a4255731dd -size 1203 +oid sha256:14559a38b49ad0646fae2c6734c745d063d20f208d438d2f9ad89c97177de91d +size 1201 diff --git a/data/minecraft/structure/village/taiga/streets/crossroad_04.nbt b/data/minecraft/structure/village/taiga/streets/crossroad_04.nbt index c8a06bcd..33514e39 100644 --- a/data/minecraft/structure/village/taiga/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/taiga/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6d238a788f9bbaa9fefab307897b13e4dfda06c0ed23465b8236025aef77c48 -size 437 +oid sha256:8a621255c1c623743963eaa61af7ac5b16be8d50a2ca2ef5f7993fdc87bee1c9 +size 435 diff --git a/data/minecraft/structure/village/taiga/streets/crossroad_05.nbt b/data/minecraft/structure/village/taiga/streets/crossroad_05.nbt index 711f1c84..976a0aa2 100644 --- a/data/minecraft/structure/village/taiga/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/taiga/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb3d0d9583900acc731b1d519c20c81174ad19e672aa623845607c054196fa0a -size 410 +oid sha256:051765395bca03ff89b2715c149824f8f196d688d9f1963876040ce91d2e0610 +size 409 diff --git a/data/minecraft/structure/village/taiga/streets/crossroad_06.nbt b/data/minecraft/structure/village/taiga/streets/crossroad_06.nbt index 88ac0209..cf4c2110 100644 --- a/data/minecraft/structure/village/taiga/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/taiga/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f15cc4360ec4a6a4b492175cce32b4baf43da32606670645f43bf4a1d2cf8e3b -size 472 +oid sha256:d61f3bfbfee9e23e6ce907d4413ae52300c04586a295fba6f9e51f3d32ad822e +size 469 diff --git a/data/minecraft/structure/village/taiga/streets/straight_01.nbt b/data/minecraft/structure/village/taiga/streets/straight_01.nbt index d0e5febd..961097f4 100644 --- a/data/minecraft/structure/village/taiga/streets/straight_01.nbt +++ b/data/minecraft/structure/village/taiga/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c269bf41e0c9a5d7e27c94a884ba3f942fbeebf13c5c582010d246c9265b7387 -size 1131 +oid sha256:878865d5a8df9806d70fb975ea2c5357061491d39b2abb77f63f6d1320eb64cf +size 1130 diff --git a/data/minecraft/structure/village/taiga/streets/straight_02.nbt b/data/minecraft/structure/village/taiga/streets/straight_02.nbt index a50d259d..9abe107b 100644 --- a/data/minecraft/structure/village/taiga/streets/straight_02.nbt +++ b/data/minecraft/structure/village/taiga/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:884da81198f82ce83b959ba3c6eb83d73474bd7a3ab0cb8bb28a1480d187412f -size 1147 +oid sha256:006545685570eef2379c0a17d75b98d941be8cd5f95bcd318e00fbcad7caaee0 +size 1146 diff --git a/data/minecraft/structure/village/taiga/streets/straight_03.nbt b/data/minecraft/structure/village/taiga/streets/straight_03.nbt index 2b93ab6e..36d62938 100644 --- a/data/minecraft/structure/village/taiga/streets/straight_03.nbt +++ b/data/minecraft/structure/village/taiga/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:677942755394a93105ac0e4bde76f0d86c6460a70184970ec512816288f9297e -size 777 +oid sha256:26408def192fc0800a9ab14fea6cf7723b29c755ec607a85d06156c898d70711 +size 775 diff --git a/data/minecraft/structure/village/taiga/streets/straight_04.nbt b/data/minecraft/structure/village/taiga/streets/straight_04.nbt index 549a888c..3af2f58b 100644 --- a/data/minecraft/structure/village/taiga/streets/straight_04.nbt +++ b/data/minecraft/structure/village/taiga/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70b2f4de51772a6e8ab89d2149679f561706121ea46f6ba2883bfa994509c2fd -size 687 +oid sha256:068d530c8530ba3e7d1f5d4c2c999266001a7ace0c389b9ad229b1e8ce011b4d +size 686 diff --git a/data/minecraft/structure/village/taiga/streets/straight_05.nbt b/data/minecraft/structure/village/taiga/streets/straight_05.nbt index aa04e59f..87fe99d0 100644 --- a/data/minecraft/structure/village/taiga/streets/straight_05.nbt +++ b/data/minecraft/structure/village/taiga/streets/straight_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d9ee9a9a17298618e8ec25d2c2edba88f00d1908843ae231bb427f38d63b3a8 -size 1390 +oid sha256:0a49023e26fa2ee1b5f2ccaf528b7f99acc993275eb6c9dfa7e44747ee9b17e9 +size 1389 diff --git a/data/minecraft/structure/village/taiga/streets/straight_06.nbt b/data/minecraft/structure/village/taiga/streets/straight_06.nbt index d1f99b92..e9e3f188 100644 --- a/data/minecraft/structure/village/taiga/streets/straight_06.nbt +++ b/data/minecraft/structure/village/taiga/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7acee031327fdb346984e7b195af77c1846a6e07e006c692fa62071fce8d8b22 -size 1703 +oid sha256:d3c9ca09ee16ef781c4bdea763fbb527d7e445ba736cfde80a1347984e77232f +size 1702 diff --git a/data/minecraft/structure/village/taiga/streets/turn_01.nbt b/data/minecraft/structure/village/taiga/streets/turn_01.nbt index 7705605c..b9ea17b8 100644 --- a/data/minecraft/structure/village/taiga/streets/turn_01.nbt +++ b/data/minecraft/structure/village/taiga/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c2a94077d7e2329060f4a69bc00644df8e9c70a5328e6cc72e37e0fc2bb731c -size 790 +oid sha256:bb5ef0d11d55d3d2706e6ed29be6e023bc840cb135eaa8cf17daed12d9815de3 +size 788 diff --git a/data/minecraft/structure/village/taiga/taiga_decoration_1.nbt b/data/minecraft/structure/village/taiga/taiga_decoration_1.nbt index 1a5635b9..f38aa3b2 100644 --- a/data/minecraft/structure/village/taiga/taiga_decoration_1.nbt +++ b/data/minecraft/structure/village/taiga/taiga_decoration_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c17ca3813b549485ae834dacfa165db1caf65740f577b034368658f4f9e2812 -size 423 +oid sha256:13a1cf354987059fbe6042e2a4d1e0920247b84940de510b529ee83ffda2ecec +size 421 diff --git a/data/minecraft/structure/village/taiga/taiga_decoration_2.nbt b/data/minecraft/structure/village/taiga/taiga_decoration_2.nbt index a790e6a1..8b34f3d0 100644 --- a/data/minecraft/structure/village/taiga/taiga_decoration_2.nbt +++ b/data/minecraft/structure/village/taiga/taiga_decoration_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6d432ce29e4d229fb44a5a90dd67560a4fe7482e709bacd9076e28d840f1ab9 -size 368 +oid sha256:55d69634f35e7d94aca68ff01c09d9d355b5f86eb29b5f6bb58430e29b2a9e68 +size 367 diff --git a/data/minecraft/structure/village/taiga/taiga_decoration_3.nbt b/data/minecraft/structure/village/taiga/taiga_decoration_3.nbt index 8bbfe9c4..25a425ef 100644 --- a/data/minecraft/structure/village/taiga/taiga_decoration_3.nbt +++ b/data/minecraft/structure/village/taiga/taiga_decoration_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fd6ec1f061ad451602d0b7b7619605d2d48fc2a7876e542d7adb046887c7466 -size 354 +oid sha256:fb1cb341541b9ebb5c7d5c6078aeab5b616fe2c77dc1e4a1621b4a106588be80 +size 353 diff --git a/data/minecraft/structure/village/taiga/taiga_decoration_4.nbt b/data/minecraft/structure/village/taiga/taiga_decoration_4.nbt index c16cacfe..88c1e927 100644 --- a/data/minecraft/structure/village/taiga/taiga_decoration_4.nbt +++ b/data/minecraft/structure/village/taiga/taiga_decoration_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e8d35c00f8efa61748dea8ffd45a8b1d137c5a76e8e5e164f70ba4c87c336a9 -size 323 +oid sha256:2b7a1b0289d03da21c546ef3d0969a5a09c493b43b26adc5016c0cd94c62a169 +size 322 diff --git a/data/minecraft/structure/village/taiga/taiga_decoration_5.nbt b/data/minecraft/structure/village/taiga/taiga_decoration_5.nbt index 16a295de..f94df639 100644 --- a/data/minecraft/structure/village/taiga/taiga_decoration_5.nbt +++ b/data/minecraft/structure/village/taiga/taiga_decoration_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c513d4520dbd67669c2afe6c04d0db9822373bde20ca6f3c21aaabb66386dde1 -size 250 +oid sha256:2f90553e44c42e616ae39136069b8c4daccbbc7ca17bf4ac405d8330623596ec +size 248 diff --git a/data/minecraft/structure/village/taiga/taiga_decoration_6.nbt b/data/minecraft/structure/village/taiga/taiga_decoration_6.nbt index 0a90e6f7..4051d0ed 100644 --- a/data/minecraft/structure/village/taiga/taiga_decoration_6.nbt +++ b/data/minecraft/structure/village/taiga/taiga_decoration_6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3f5b766afcb6dd7f422b796210e1db2beb1258a7703fef9aaad2281dc3ef1c5 -size 471 +oid sha256:461262850a008c7ec51cb8e4375ae5fb2e1b8e648b5e813657ef14dec6afa4d7 +size 470 diff --git a/data/minecraft/structure/village/taiga/taiga_lamp_post_1.nbt b/data/minecraft/structure/village/taiga/taiga_lamp_post_1.nbt index 1335fcf0..080c78ea 100644 --- a/data/minecraft/structure/village/taiga/taiga_lamp_post_1.nbt +++ b/data/minecraft/structure/village/taiga/taiga_lamp_post_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acb6841ce762db945e55825545984dcc2330e5070be21af210a6118b47878d4f -size 252 +oid sha256:0ae95fe29d980f75ea2227adefb2734f9a5487439c62d5c9bef0a030595e62bf +size 251 diff --git a/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_1.nbt b/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_1.nbt index 2b5e4fbb..4e577e7e 100644 --- a/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_1.nbt +++ b/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90aadc961bec52ab213425fc805944aae96bb05d2a8f91f1cf84e67f182d03ac -size 3947 +oid sha256:bdbff1b8bd42b5068a95eba33280fdfa873bb82b118c11e0f7866e7dcbaf8207 +size 3946 diff --git a/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_2.nbt b/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_2.nbt index e61fa79c..20d9bf59 100644 --- a/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_2.nbt +++ b/data/minecraft/structure/village/taiga/town_centers/taiga_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2aa4a1f2502302e1b72e4ba6561cf5189c9ddcfaa810ba74bd9f0213149d3adb -size 2272 +oid sha256:8c18dfe1f073c03f2960c6ad85e8f743bd1340af78a9aff96f83bd307aec006b +size 2270 diff --git a/data/minecraft/structure/village/taiga/villagers/baby.nbt b/data/minecraft/structure/village/taiga/villagers/baby.nbt index 6718abac..4e035ac7 100644 --- a/data/minecraft/structure/village/taiga/villagers/baby.nbt +++ b/data/minecraft/structure/village/taiga/villagers/baby.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:078378ef5a19d804e235d7e3a983d5a88ac2a9f481b58b913d243ae58244ec00 +oid sha256:f9ff66f1ffa8eca08e5fe7a4367f76b6c78a9ebfdf27e18f7604c5941c01db78 size 750 diff --git a/data/minecraft/structure/village/taiga/villagers/nitwit.nbt b/data/minecraft/structure/village/taiga/villagers/nitwit.nbt index 98df8eae..f82f523a 100644 --- a/data/minecraft/structure/village/taiga/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/taiga/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c26ee49c3418572562dd6d68660a3eed9d8a237ff4f7c131662fcde35967f2d0 +oid sha256:111f0a420e2cf69e2c7af3fefd5d0797d82934f3fabbb4a645719782e8d2928b size 750 diff --git a/data/minecraft/structure/village/taiga/villagers/unemployed.nbt b/data/minecraft/structure/village/taiga/villagers/unemployed.nbt index eee08dbb..2d40b4f7 100644 --- a/data/minecraft/structure/village/taiga/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/taiga/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6f9af687d74422dd6aa64448bc753c77fa2d364596252bb28121be8c31e76f6 -size 749 +oid sha256:abe833aff234a6229fd4b9c3a11c25976943c34e62fcb4fd03a6edddf94d4204 +size 748 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_cartographer_house_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_cartographer_house_1.nbt index 7f7c84f7..9acbf2ff 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_cartographer_house_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_cartographer_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:668b4f0dbc658ae7a9b55dac2a3be5b6af50318d7357702a039e769f27f23b4a -size 2613 +oid sha256:146abda357fbe6ffa7a1da492b74f64fc462872c7d64acb90ff3a861513f7835 +size 2612 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_fisher_cottage_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_fisher_cottage_1.nbt index dd049e6d..48874e10 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_fisher_cottage_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_fisher_cottage_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6883356ffb7df633649e1eef952dc47557a475a4ff806b6593cd3b4f60469840 +oid sha256:32ec0d420abd8377eb788316bbfa4c5755a1e23e077dedf7bcbaf2e9418b4556 size 3666 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_large_farm_2.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_large_farm_2.nbt index cea51007..5ed8158e 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_large_farm_2.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_large_farm_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:309f838a6a7420632689792dc33694cf8503d1d477f564a76a5feac1af2537a9 -size 1607 +oid sha256:55e23067709758427d615b6762987ec62c12e728c93dae438f39be1f043b2f1f +size 1606 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_library_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_library_1.nbt index c6027144..7a5b49eb 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_library_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_library_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d684da00a57238ef368b6d18798179926d2eb95fc7797323f030ce2e0a9b49d -size 3460 +oid sha256:bafaed290c22496656660d123b8bb11af0e22a43e6cb0eb084e6b0ae32da49e7 +size 3457 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_1.nbt index fc0dc4a2..36f02063 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc535d08cec66485444ed44cfdc66af14648498c3cb56dd48bb941c517b0ef3b -size 2790 +oid sha256:c78ade7d996c98aae9b4d5d268390167ad63e9ed0b4ded5f59719f069e3ac942 +size 2789 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_2.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_2.nbt index db7049b7..2d7a0ad4 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_2.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c8f46481d87f1086a860c351856f8941e6980eb3a13f7d4fc87681e415aaedb -size 2607 +oid sha256:7547d59426b0fa5cdbaa6dbc635c65ea162ca3d645802d81da1b8f8a310d6a2d +size 2606 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_3.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_3.nbt index 04da7e21..ef8f9e07 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_3.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6fe4b19c9e5e3a706ef74dedf166c281b948aa66a135a8c87a111cf046a6218 -size 3070 +oid sha256:e58f3d0ac48a138e7e3a31c65bdc0ba1c6c0514493308e59a0808684c3d63af7 +size 3069 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_4.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_4.nbt index cb04fc4d..d9942e7a 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_4.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_medium_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e98d1ecd28a5d27a17b54358520d4881c00f44bf800657a4e7e89811e50a67f -size 2692 +oid sha256:179c2a74ef9c399a1bddbf324d9328dfecdc549c6a905f7c150422796ad9c5c9 +size 2709 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_shepherds_house_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_shepherds_house_1.nbt index eaf882c0..0cb3a4b9 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_shepherds_house_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_shepherds_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76d522fd65d211dd89cdd62cc8674c3e161557ba6f37530b5bc8c82a37d41b2e -size 3041 +oid sha256:826bf5c1dc28b5f4ed1a6f7b1914cb1736612df1454711179fe55eaf061a0b40 +size 3040 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_1.nbt index e2b03355..8a45a218 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfd91bcb132f6ebda2a76453aacd41b42fbaad3e6d96b365f0b3cd1e75caa23d -size 2392 +oid sha256:66fa5756b2ec60a185620c65583c9da432d36b935c648257db180ed7dce4ba8e +size 2391 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_2.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_2.nbt index 774c75e4..0ae21864 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_2.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9c136cd6e70fc6be36e599abb355439079ff5f4a86ff5e55205623c70301d22 -size 1796 +oid sha256:688747b406e0a307f76c6cd32968655e85f2e0b9fbe30659ecd5c15d3830b629 +size 1794 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_3.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_3.nbt index 76715cbd..c5541726 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_3.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d44f7f6676a218334c0c22aef5b9a71e8eeaceb635e2c0033bb0891d4f181ed4 -size 1887 +oid sha256:d08ccaf7f05c1afa1218b72ce5596c8d5b2e802a18a2aebf2abd4ed566d04a0a +size 1885 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_4.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_4.nbt index 585014fd..24e19d85 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_4.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef3440f1b161bd01eff740ab2d317dff8018257b3074861d5fdb6dc0bc938e0a -size 1615 +oid sha256:21a3a3a63b0eec0f18f0e6adfa7dd84ec75d129062322048e40467a504f0101b +size 1613 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_5.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_5.nbt index aa59c976..5eb19049 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_5.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_small_house_5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74361d9cfe0afc4d5666ced67de46f11f8bdfeec46ad0e1dbe5a61fc4530116a -size 2049 +oid sha256:99ca15c95386591ac72592e0af0b09ee6601398418780269aa58e976e359ed8e +size 2047 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_temple_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_temple_1.nbt index 1b6a139e..84d15c1d 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_temple_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_temple_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3823637c4480e969e4d501996bc1e47272437a4dbbb0c0f3903e82749978888 -size 6643 +oid sha256:52e486e3f5aee16f1cdba06efffa7771259432cc790302d9aa662ff4f4edd7e5 +size 6644 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_tool_smith_1.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_tool_smith_1.nbt index c5e7cd19..d552748d 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_tool_smith_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_tool_smith_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9da346db76553ed670664144423d7bddbb56a141aa167cff14d37c5a3135091 +oid sha256:d79daba7fd915ab4918c78c65c5ae925fe928099f9d1d51cdb995a87b895077c size 2175 diff --git a/data/minecraft/structure/village/taiga/zombie/houses/taiga_weaponsmith_2.nbt b/data/minecraft/structure/village/taiga/zombie/houses/taiga_weaponsmith_2.nbt index 58c6fcbf..b435db70 100644 --- a/data/minecraft/structure/village/taiga/zombie/houses/taiga_weaponsmith_2.nbt +++ b/data/minecraft/structure/village/taiga/zombie/houses/taiga_weaponsmith_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c38e622072cb5da72e58739cffeed52af26b57ec1a599722b26c76feb41cd100 -size 1194 +oid sha256:39cc51e63d2055f5d1d777c2bc541df66c3acf4fa0c5d06a0ee46a891e1ad466 +size 1193 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/corner_01.nbt b/data/minecraft/structure/village/taiga/zombie/streets/corner_01.nbt index 55cf926d..4534cc73 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/corner_01.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/corner_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aac536069294ab41a0ce11f5523e83251e9b87074c8c00abdf6cd8a6e8e87ed5 -size 1187 +oid sha256:db3e22cce5813a87ecdefdf58d041c259f4410970cd6ac0c4857f0a95a9f380a +size 1186 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/corner_02.nbt b/data/minecraft/structure/village/taiga/zombie/streets/corner_02.nbt index abcb79b6..f222050b 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/corner_02.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/corner_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28ec841c4ca4d704a7310a4b4024a146313882d4c9854b3986ea73a332feb13f -size 1191 +oid sha256:1bc2565b1f262e917935a51f848a1a492f917028475d9ae421367ced65ee28f5 +size 1189 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/corner_03.nbt b/data/minecraft/structure/village/taiga/zombie/streets/corner_03.nbt index d656ce74..8f8e68da 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/corner_03.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/corner_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:074f18a954017bcefb95a3d73c2dfaeb2ceb3c9e5c12829fb37258bcfc6dd6cf -size 356 +oid sha256:33f3740e1934d86156148fba6f4dd2fd01a2080ead2d1e5d7af9d411a6b678e6 +size 354 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_01.nbt b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_01.nbt index 8d892d0b..8df6d027 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_01.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7de26f4b3f84c8a9a6150fae0afd50dab9fb8c2cec04da0e9a8d087a659624e9 -size 1221 +oid sha256:5b501f51b6f879dbad400abab82651f874001c2b97908b0193a11516a2d165d3 +size 1219 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_02.nbt b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_02.nbt index a61816b4..474a9767 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_02.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:231f02c562eb750dff9fb9e98904f36f7b58d930281c6a0ae7224d321842eca7 -size 1165 +oid sha256:f7b5eba07f9b20333ca0ab1365838f1d70c1338243c611f0351fef8b0fe7e561 +size 1163 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_03.nbt b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_03.nbt index 08af8ba4..bec52e73 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_03.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f4c15704bdbfdae7f97f37d427a66d0202d6c3772482fa129a73575666adcfd -size 1208 +oid sha256:2a5487900b643ba333f3f97cb422157293372b93ff94e596921b08cfa1e9b4a6 +size 1206 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_04.nbt b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_04.nbt index c59427a7..8f161e22 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_04.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57225a13022a8b69012355ee044383dca0c31b8e5203013d2eeef5e382e89163 -size 445 +oid sha256:5548d160ad5d7aa6ab62b36f80f6e154e24be4d6e0b2a645114f994b24f5bcb3 +size 444 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_05.nbt b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_05.nbt index 25ea87a0..14d844ce 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_05.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89d5eba46a245c30764c7ef3fe43d128d8f76ee43b4459d5527b269e7ab66ea6 -size 414 +oid sha256:ce9c470e5d66b552cde8bb2c24568a939c09ef596835d5be134e0188e0abf2f1 +size 413 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_06.nbt b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_06.nbt index bb1177f8..335f16f5 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/crossroad_06.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/crossroad_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68eff88f7716f3a3f733c01f3e88773933b03365fd967003c3f7c162cbdf97e0 -size 476 +oid sha256:d867aaa63f91036c9bef3af9a10e130cff7b02c9dfa01c48c6f6b2fe6fc8d411 +size 475 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/straight_01.nbt b/data/minecraft/structure/village/taiga/zombie/streets/straight_01.nbt index b140cd62..5cc7826f 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/straight_01.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/straight_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8df20e7c4445bec55a008ffc32e653db45947695455843efc902faecc1c53d4a -size 1135 +oid sha256:929b75e90c0a0a49c6b08ab7c631c2a78746889657f55f072f3bbb8a59a7c59c +size 1133 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/straight_02.nbt b/data/minecraft/structure/village/taiga/zombie/streets/straight_02.nbt index 1b8fb9a1..385d8d66 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/straight_02.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/straight_02.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fe5f2ee20c49c14febcf06103738df5f03de9b0f43c1484825ad2dfc508e8d1 -size 1152 +oid sha256:f59e8e38780b3c2f0984d3009a85de3d43c778cbf8052cc92818e10d7e973245 +size 1150 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/straight_03.nbt b/data/minecraft/structure/village/taiga/zombie/streets/straight_03.nbt index 5966309f..0aa10f0d 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/straight_03.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/straight_03.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cda0ae3a1c701308d002a86857ac43c9982196509a759fb2f6ae10872157bd01 -size 781 +oid sha256:3d93a6e24268bf0b0e36dde406aa86f9c21bbaa5576844811a483a18e3ade4c4 +size 780 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/straight_04.nbt b/data/minecraft/structure/village/taiga/zombie/streets/straight_04.nbt index 25019a0a..2e820c48 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/straight_04.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/straight_04.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:697c7124842162e6813ad4db695f900b06c4824ee5a345ea5139eb326b7c8f90 -size 693 +oid sha256:45400033d91777a7c0fc3240f73c5fcf6cb192612ec4d3b9b650827b7a6f3fa9 +size 691 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/straight_05.nbt b/data/minecraft/structure/village/taiga/zombie/streets/straight_05.nbt index 8566a2a5..634b8064 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/straight_05.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/straight_05.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4660ee96559d0ad2558e0aef58bb9a3aa81755089d2fa246106937853a856410 -size 1395 +oid sha256:15ff83b1d5b467efcbe921764f243adb7eff5e1fa2e57ba7197f1d6a8e55d641 +size 1394 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/straight_06.nbt b/data/minecraft/structure/village/taiga/zombie/streets/straight_06.nbt index d09c22c8..aede9d83 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/straight_06.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/straight_06.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c7cb8356e9bfb222367706e5b3d0c04014d3fda439731b3f6ba672b3cb609c0 -size 1708 +oid sha256:3f7fa6751217890f6d9fdd06f80df1a8ea2333fccb06d69ed714e1de7ee5392d +size 1707 diff --git a/data/minecraft/structure/village/taiga/zombie/streets/turn_01.nbt b/data/minecraft/structure/village/taiga/zombie/streets/turn_01.nbt index a573c43b..ef475a95 100644 --- a/data/minecraft/structure/village/taiga/zombie/streets/turn_01.nbt +++ b/data/minecraft/structure/village/taiga/zombie/streets/turn_01.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ce4d183d1721dbae1879857e36414a0f326211e61505d69e8fcec8ef4fecdff -size 794 +oid sha256:364501318145e2b39b05c9810d49b6bf053526e03e95e430b410126e7aa6a0a7 +size 793 diff --git a/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_1.nbt b/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_1.nbt index 9739d21c..2c9e9815 100644 --- a/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_1.nbt +++ b/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e80e74a9d2a9bf0e674381876b6bf2a833c580df0d9faf60fe5e663deace22d6 -size 1849 +oid sha256:edb8f26ad7fb63ebc42e6a599dda4668996c92418c0553ac8ffa06f5f126aadc +size 1848 diff --git a/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_2.nbt b/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_2.nbt index cd180da1..ccf1a270 100644 --- a/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_2.nbt +++ b/data/minecraft/structure/village/taiga/zombie/town_centers/taiga_meeting_point_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b70591adfdd4cbc7a02a8a0e68cf4d9fc31cf5c2680e7a3a02ce745157e023fe -size 2258 +oid sha256:c78316d9e315c1a47586ca2a19eac168123c07525aef782f835b715344f27cee +size 2257 diff --git a/data/minecraft/structure/village/taiga/zombie/villagers/nitwit.nbt b/data/minecraft/structure/village/taiga/zombie/villagers/nitwit.nbt index 41cba807..130be393 100644 --- a/data/minecraft/structure/village/taiga/zombie/villagers/nitwit.nbt +++ b/data/minecraft/structure/village/taiga/zombie/villagers/nitwit.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20bdf9813467978cdb1aded21325f225a449bc6d88fa2344ce77c92b5a5ca650 -size 756 +oid sha256:76898c4fe76eaaa4fade9c3a47c3d0614fe3027938f390d956368a26d814183a +size 755 diff --git a/data/minecraft/structure/village/taiga/zombie/villagers/unemployed.nbt b/data/minecraft/structure/village/taiga/zombie/villagers/unemployed.nbt index 8542a020..0311ed85 100644 --- a/data/minecraft/structure/village/taiga/zombie/villagers/unemployed.nbt +++ b/data/minecraft/structure/village/taiga/zombie/villagers/unemployed.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fe575c9733946211cd271326b22accda05c9f0ebe95a6939288991d9e8c9208 +oid sha256:e017bfc7f607b93b4e4963661b760ae7f56fa27b02532d5213048f3766da9eb6 size 754 diff --git a/data/minecraft/structure/woodland_mansion/1x1_a1.nbt b/data/minecraft/structure/woodland_mansion/1x1_a1.nbt index 349ca3e3..2ba31ea9 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_a1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_a1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d4b398499f04be756398d18f737c753c82db99e90712958038f988781a17989 -size 1434 +oid sha256:fd171ad630984b07fb3cbbb1b1637f3269b28afa28cefead7b19778121a9c80d +size 1433 diff --git a/data/minecraft/structure/woodland_mansion/1x1_a2.nbt b/data/minecraft/structure/woodland_mansion/1x1_a2.nbt index fc90d74f..33a98116 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_a2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_a2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0cecea447089f03cdee01e4b8895a7dd564e5853a9b4197a9c02b8af9cf6abf -size 1529 +oid sha256:49141424f6a067b9650d91184958e3bbf31f1556e3b9a58eb1e3571baad7f2c5 +size 1528 diff --git a/data/minecraft/structure/woodland_mansion/1x1_a3.nbt b/data/minecraft/structure/woodland_mansion/1x1_a3.nbt index 1b419caa..43ed3643 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_a3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_a3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74aad643bea9b07f0bd1783212b1e67ff30c7feceb14118faeb2f2d345140f90 -size 1417 +oid sha256:47af1a8aee6d1baae8a56e0d2e0e7ad41987dc45ab9410dd28fb4c0530fb18c1 +size 1416 diff --git a/data/minecraft/structure/woodland_mansion/1x1_a4.nbt b/data/minecraft/structure/woodland_mansion/1x1_a4.nbt index 8e455c6a..e8abd21c 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_a4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_a4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16403a23b317eda24d1ede3e8216944c15c194365e35a7341d8e383311a3caa1 -size 1684 +oid sha256:c573332682b2e3ceecb8a0bcb67c318c09d103daff4a2064245f353936fe9dea +size 1683 diff --git a/data/minecraft/structure/woodland_mansion/1x1_a5.nbt b/data/minecraft/structure/woodland_mansion/1x1_a5.nbt index 40be5136..241a66a4 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_a5.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_a5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e30a3bc5be496377a3cf1a8516b8650bb3f77ce490d673f68baef9f71fc0108d -size 1492 +oid sha256:f19de96c803764979da7297e04842e8820046de1cdb9f14354236f1edbdde1ac +size 1491 diff --git a/data/minecraft/structure/woodland_mansion/1x1_as1.nbt b/data/minecraft/structure/woodland_mansion/1x1_as1.nbt index 4be955ff..540a07c0 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_as1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_as1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c10065d8baa6130204ad6d1830e53979ba47ce4342dbeb30152b70012e54dec4 -size 1486 +oid sha256:dabddf2a0cb416a3d66f2ab04711dd030024ef2c5c525dfdc7c91c1af6510eef +size 1485 diff --git a/data/minecraft/structure/woodland_mansion/1x1_as2.nbt b/data/minecraft/structure/woodland_mansion/1x1_as2.nbt index fb462f9f..36e66fdf 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_as2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_as2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ab477f01d5d1802bf7544d7e82e3e32fa81b19bd4a790ddcc4285b5edd4e856 -size 1457 +oid sha256:133c541675ce84536cb73143e24e0533024dfea73169f56a36448e581eeb129b +size 1455 diff --git a/data/minecraft/structure/woodland_mansion/1x1_as3.nbt b/data/minecraft/structure/woodland_mansion/1x1_as3.nbt index f70694c5..19137e9c 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_as3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_as3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88e7cab0d79d775c250703b607fb23d713bd861b789bbf832a941d2a053e57d9 -size 1212 +oid sha256:698a3ac6b368eb75c4e02ae9fd0c0124dea81857d0140a145acd96682c82f7bb +size 1211 diff --git a/data/minecraft/structure/woodland_mansion/1x1_as4.nbt b/data/minecraft/structure/woodland_mansion/1x1_as4.nbt index 784a0f6d..194892e8 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_as4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_as4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca4e9af42eb57a5943b1fd4293dd6abdcd50ab261bcf7db69ee3844a52d66118 +oid sha256:e9e1433698c6466672884b8c45923f8b6fbec703bc928ca9904e8dbc80da493f size 1211 diff --git a/data/minecraft/structure/woodland_mansion/1x1_b1.nbt b/data/minecraft/structure/woodland_mansion/1x1_b1.nbt index 5b3015f2..2aa8805b 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_b1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_b1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e8e93d46285ee8146ebeb74b9cbf57c9b1538812832158d46de7df50eb04628 -size 1925 +oid sha256:ddd8c68bdcc0971a8a6a60531d0423767b0c2d3770e49469e1216656e27e14e2 +size 1924 diff --git a/data/minecraft/structure/woodland_mansion/1x1_b2.nbt b/data/minecraft/structure/woodland_mansion/1x1_b2.nbt index 54d09e11..564eb95b 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_b2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_b2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cfc5d4feeebf682e409304ae107d8fc9a4ffe0de1813e2706d2328a3f31169e -size 1865 +oid sha256:51ca20c98f74a620a99952c3402f2e9e3cff053accc3dd1fb1a41cedeb92b796 +size 1864 diff --git a/data/minecraft/structure/woodland_mansion/1x1_b3.nbt b/data/minecraft/structure/woodland_mansion/1x1_b3.nbt index 9d53b52b..5970bcff 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_b3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_b3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8edf7cdf8fb76ccad2b096f6cc67e3540037601a8e30275ab660ca159d423f7e -size 1808 +oid sha256:6ea7035b019969b102458ee0c5cc74e55ecee320895ede908c2e4ee6ae1fc852 +size 1807 diff --git a/data/minecraft/structure/woodland_mansion/1x1_b4.nbt b/data/minecraft/structure/woodland_mansion/1x1_b4.nbt index b4363901..06ace88e 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_b4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_b4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c58595cf45d4f5319b771e7f7a322e8be1944f338620d6cff1fe88b4be636bc -size 1832 +oid sha256:b807dbb47ba85010935d4a9562e0a3f1461eb979a6e6961fce98458478cda482 +size 1831 diff --git a/data/minecraft/structure/woodland_mansion/1x1_b5.nbt b/data/minecraft/structure/woodland_mansion/1x1_b5.nbt index ea30439a..d74d6cbc 100644 --- a/data/minecraft/structure/woodland_mansion/1x1_b5.nbt +++ b/data/minecraft/structure/woodland_mansion/1x1_b5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d628a30b0081303df5f5f36b3f32273897d3906434a018f3b9ca05a0dfc273fe -size 1923 +oid sha256:12e2920ff8618ed774eaccbcb2547d44ed9f555623e4a5a1f4a18b1d012f29ae +size 1921 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a1.nbt b/data/minecraft/structure/woodland_mansion/1x2_a1.nbt index 19c3af5f..80fac05c 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b5a75a8b74f93ad76de90250b67a5b2b9ce6fece9dcc0fd275e9a653b3cfa04 -size 2938 +oid sha256:2aeedeaa374c8dfab86add8893aa16febd829e4cf58b2ebcd4b7f3de58706e59 +size 2936 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a2.nbt b/data/minecraft/structure/woodland_mansion/1x2_a2.nbt index c98d38b7..bcb850f6 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a859db88d015c7b03e0db415d184d135de6d672c5c0ee5d622975a1be86a4d2 -size 2829 +oid sha256:922afe3edde31dfdd2a7992013e0f13350c2bbdaa57254c25bbc113dbaf2a493 +size 2828 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a3.nbt b/data/minecraft/structure/woodland_mansion/1x2_a3.nbt index ddd2c2b6..b52927ed 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64abffe6bd327aff60d1b2bdd6e20d651853b5b3ba6c7ae5d7d66bd9e884fd0d +oid sha256:e25fd5de461b1b37d5245f416d9f330f9ce51d02f3430720a06cfb3301038024 size 2951 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a4.nbt b/data/minecraft/structure/woodland_mansion/1x2_a4.nbt index 22651933..eac1aca3 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2e058bb358369abc377124444ca8eec51c0fa16993bba68b488033c46ad0203 -size 2898 +oid sha256:03cfdab29ea4796f4fcb57b490a0ba91efb7680aff8526e8d6c8378eaaa08b35 +size 2897 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a5.nbt b/data/minecraft/structure/woodland_mansion/1x2_a5.nbt index 31c642f4..90d4dbdc 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a5.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df0c1ab2b7a6a493e4d10308f54538615f169d1ca2f6b011b30096998e2d5d47 -size 2571 +oid sha256:727f23074fe602df1d3cf3379767a513ef3727d1709c991c1c3745e1b62f095c +size 2570 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a6.nbt b/data/minecraft/structure/woodland_mansion/1x2_a6.nbt index 9837daff..2b05c714 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a6.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a6.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73b5dcce1313c6e6bb23fab6dbce5495370b96a8ec2ad1848ed29bc352e5375f +oid sha256:6703de10b58fb841fbab6329870638606c42189441bc22527161b7872a848965 size 2815 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a7.nbt b/data/minecraft/structure/woodland_mansion/1x2_a7.nbt index 15c7f5ed..c0a24062 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a7.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a7.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1f607c8b116285e4706af77c7681fb13b2bdc9bcb94133a4d53201927e897c5 -size 2949 +oid sha256:3abf41cae7656a493042262d53d160bdfe1d823b3d7dd304244877c025f13c8f +size 2948 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a8.nbt b/data/minecraft/structure/woodland_mansion/1x2_a8.nbt index 43cd8ee3..fd01d9b4 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a8.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a8.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d34ce2a7ef4113255d8e8cd794556cb9c85b7382f8630bbed8104486971f0fb2 -size 3191 +oid sha256:7813a786799584d0bf89cbb2a3cc1fa6eac815e62d81d36c25150e21c52ac757 +size 3189 diff --git a/data/minecraft/structure/woodland_mansion/1x2_a9.nbt b/data/minecraft/structure/woodland_mansion/1x2_a9.nbt index 5280baf7..aaa01528 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_a9.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_a9.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3bc554df2838a99f1f6be5fa66239f8b776ca714f93b269f96651c4ea82b37d4 -size 3096 +oid sha256:a78483c263441ebf36c09a031c11c7ef737557f951a301d267a31584fa4aff50 +size 3095 diff --git a/data/minecraft/structure/woodland_mansion/1x2_b1.nbt b/data/minecraft/structure/woodland_mansion/1x2_b1.nbt index fab21545..849a3820 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_b1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_b1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0a169e40b6c76ddf6ff7820d5c1299c690c88b4db5a766b84503083a4f2f6cc -size 3279 +oid sha256:f783c953e305f2e528a4d0183538e54402ce487af342458b71f70893f52f2acd +size 3277 diff --git a/data/minecraft/structure/woodland_mansion/1x2_b2.nbt b/data/minecraft/structure/woodland_mansion/1x2_b2.nbt index 3a2fbd6f..726b44f2 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_b2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_b2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:197a2fc1c0b22c235a06cafc26d3b5527ee49f8dbad1dbf2c1582c045f6269b7 -size 3135 +oid sha256:af4f91dc18fd72cb0594d96645802842661ebabc082432662872ef4c70629cd6 +size 3134 diff --git a/data/minecraft/structure/woodland_mansion/1x2_b3.nbt b/data/minecraft/structure/woodland_mansion/1x2_b3.nbt index b74a71d1..aa9b1cab 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_b3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_b3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:afcac41da942cd41bebe19f963a9ca0d6bcb619837f253d586639a1707a65b01 -size 2794 +oid sha256:1761b19533723dd460b08015425768f03439507dc36349f3b7b00ab4de975055 +size 2793 diff --git a/data/minecraft/structure/woodland_mansion/1x2_b4.nbt b/data/minecraft/structure/woodland_mansion/1x2_b4.nbt index 790834a4..2cdc932e 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_b4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_b4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a633dde8f4501040d923f6546c16ba8a0b9a2861b6132b4a5c369402ff78a8f -size 2965 +oid sha256:2c0c2dd2f269c3ccf7db620dc3776aff17455876fe4e75af8600e668469a01ad +size 2964 diff --git a/data/minecraft/structure/woodland_mansion/1x2_b5.nbt b/data/minecraft/structure/woodland_mansion/1x2_b5.nbt index 46a9fbf4..580fddf3 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_b5.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_b5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9d0c60b160882b6627a31ecaedfa34b8824b5a2c7425ea11942387d683c85ee -size 2409 +oid sha256:78a08a4ddb74c01a0f4f0dfa89eb291bb8847777b08fa49b86b60cdf7cb5b74e +size 2408 diff --git a/data/minecraft/structure/woodland_mansion/1x2_c1.nbt b/data/minecraft/structure/woodland_mansion/1x2_c1.nbt index 88baf7a8..63828294 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_c1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_c1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c54ebf4b946beecf2bb881980c6b80c4eef67532f05be4b934f84464a7f2cdb8 -size 3548 +oid sha256:ec080da968b4e1bcbd7cacd4d63ae621db1d314aec8d10c32545c0cfe8da9050 +size 3546 diff --git a/data/minecraft/structure/woodland_mansion/1x2_c2.nbt b/data/minecraft/structure/woodland_mansion/1x2_c2.nbt index b51aae77..b9dc10a3 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_c2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_c2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c27cec88b9a253504743426965054a5991384d5737bdafe1545941cd3ad14c5 -size 3349 +oid sha256:a562b0d2f81a608f967699455d73c1b4c6923ac1fdecc2a665a84fe16c7d1c57 +size 3348 diff --git a/data/minecraft/structure/woodland_mansion/1x2_c3.nbt b/data/minecraft/structure/woodland_mansion/1x2_c3.nbt index 877991c6..995505f4 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_c3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_c3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c4033c2469f1d14a21dd037981712f5f358f45cbeee41162f03bc5fdc4a950a -size 3618 +oid sha256:dacdeeea660f38f300468569b5e40dd268ebe9398cd3017041ddcaba30fcd98a +size 3617 diff --git a/data/minecraft/structure/woodland_mansion/1x2_c4.nbt b/data/minecraft/structure/woodland_mansion/1x2_c4.nbt index 528fcde7..5d2b6758 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_c4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_c4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:588c0790e27519a61b9104795dac241592ee2049b6342067a73665d2f07f0eb3 -size 3621 +oid sha256:b9218b8a042b218eb15a00660184b81c40eb2540c8d1037e77bee481817564d4 +size 3620 diff --git a/data/minecraft/structure/woodland_mansion/1x2_c_stairs.nbt b/data/minecraft/structure/woodland_mansion/1x2_c_stairs.nbt index 20dde42b..937ce284 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_c_stairs.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_c_stairs.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c92ec4cf301556d9e887617ac2e1d989c8d2d27718d5bb3bb7803df8cac449cc -size 6731 +oid sha256:8151fc84c1f97b350c08f40451ddac492067475e99c730d596f0aed4cde82be3 +size 6730 diff --git a/data/minecraft/structure/woodland_mansion/1x2_d1.nbt b/data/minecraft/structure/woodland_mansion/1x2_d1.nbt index 14326e42..2f2b4c40 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_d1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_d1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43c2096b6d44b3a6fc6737f45713db2093a5b1f1cfc3f511ef370eb311f8b6e3 -size 3735 +oid sha256:b6045f7014c78efe9ab627084d8355c78216cda4a617960e310c7488824bfc3a +size 3733 diff --git a/data/minecraft/structure/woodland_mansion/1x2_d2.nbt b/data/minecraft/structure/woodland_mansion/1x2_d2.nbt index d85da676..40914795 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_d2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_d2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f780f13793952602dafcfc2c1b966224aa6cea7d59786e840b96cefe667ec167 -size 3906 +oid sha256:647454f9b69380a798c38daae5ea493db7769c62234a02e4c668ea72321e7889 +size 3905 diff --git a/data/minecraft/structure/woodland_mansion/1x2_d3.nbt b/data/minecraft/structure/woodland_mansion/1x2_d3.nbt index 3905c220..522fb7d3 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_d3.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_d3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e85304de21fa323f808bf5914482e0793c30cda00bd1dfd8677208f55a8337c7 -size 3844 +oid sha256:4a3962612c3dfa2ba629e88525bd6eb1b52f40acc734615706ad5a9407f890ea +size 3843 diff --git a/data/minecraft/structure/woodland_mansion/1x2_d4.nbt b/data/minecraft/structure/woodland_mansion/1x2_d4.nbt index baa1d6af..d47179b3 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_d4.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_d4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:540cc4f611aa2516df5c55cb69d0cca468c5f649c6489e8619d1c500b93fc762 +oid sha256:dea09d64c8ac70724dff7f74e688a35c54ef4e508a7a2a0dfa9e3c624d5907c2 size 3409 diff --git a/data/minecraft/structure/woodland_mansion/1x2_d5.nbt b/data/minecraft/structure/woodland_mansion/1x2_d5.nbt index bc304fad..0aae8a3d 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_d5.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_d5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:feb629a9d501cdc1b682f2d5046d32b85f0de0924f682e8c318225e9688aa50a -size 3374 +oid sha256:5523f2b290fdedd095d1fb14c6cf3b3734a936d034eb39971ed244361e5dcaa3 +size 3373 diff --git a/data/minecraft/structure/woodland_mansion/1x2_d_stairs.nbt b/data/minecraft/structure/woodland_mansion/1x2_d_stairs.nbt index f98e945b..a4472221 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_d_stairs.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_d_stairs.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b425da44b5f6b70d32f3fa737f85e6af0a2c53ea03ec8fd8d3ffd0dcc12bdd1e -size 6626 +oid sha256:b82627024382c0191aae8f85dae4dc663ac5619b726ab4d7762766990d5cdd1d +size 6625 diff --git a/data/minecraft/structure/woodland_mansion/1x2_s1.nbt b/data/minecraft/structure/woodland_mansion/1x2_s1.nbt index b92491d4..eafc2170 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_s1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_s1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4995d4f6ddb22d266bb53aca6c8dff825b699defa5f5ca7ece6ce262ff8bc44 +oid sha256:922d05b5c9cb2ac0ae87aa4a133a7f886f9a2ebd9255ec1b53553fe26f207844 size 2687 diff --git a/data/minecraft/structure/woodland_mansion/1x2_s2.nbt b/data/minecraft/structure/woodland_mansion/1x2_s2.nbt index 446d0fde..0c40b5e8 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_s2.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_s2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5b4e41cc12e6ab58ee202a4fb76595dcb0d8099663cb3ec52a07b0229291f5c -size 2733 +oid sha256:18e21efade590ce14a82c552791f38e01cb76d9ffb1c3c625c18c52f3153ed67 +size 2731 diff --git a/data/minecraft/structure/woodland_mansion/1x2_se1.nbt b/data/minecraft/structure/woodland_mansion/1x2_se1.nbt index 7f840e7e..8c0be6dd 100644 --- a/data/minecraft/structure/woodland_mansion/1x2_se1.nbt +++ b/data/minecraft/structure/woodland_mansion/1x2_se1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2564e1e2d4bf525931dbc149c249bee2ec8b41d9706ba5bd9ea1805e2b65dadc -size 3885 +oid sha256:e2a1d2ff0a5e2bf81e48215a32dd33d6e0da470c46892496ebf6d6b191be4778 +size 3884 diff --git a/data/minecraft/structure/woodland_mansion/2x2_a1.nbt b/data/minecraft/structure/woodland_mansion/2x2_a1.nbt index a0ac3e56..6cb04598 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_a1.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_a1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2322376c89b3c85e22f4e6637ffee7404f9c41088453c72a673563dae48138a -size 6290 +oid sha256:a7f4a2249a1f4f2fc480a97888e52d04f1de07b852aabb083a5e43b1ddbdeeb5 +size 6288 diff --git a/data/minecraft/structure/woodland_mansion/2x2_a2.nbt b/data/minecraft/structure/woodland_mansion/2x2_a2.nbt index a365aa0a..9dad075e 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_a2.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_a2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85491e1cb876077bcaec4a1b30a439ee791457f99f38e8c71ec453d4a4c0fadc -size 5634 +oid sha256:6bfde92775a5c540ce59121eb48262ce3dc96d25712eab6ea0b648339d6cca46 +size 5633 diff --git a/data/minecraft/structure/woodland_mansion/2x2_a3.nbt b/data/minecraft/structure/woodland_mansion/2x2_a3.nbt index 327cf2f9..b6af3b66 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_a3.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_a3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29c1abdcfa322ebc2a816e844dc962487928a42917e73069ca4d69533ee697b7 -size 5214 +oid sha256:5aec6a63730ae450dddfc2c90d2195117b18983ad1897f94fa7dabde816255df +size 5213 diff --git a/data/minecraft/structure/woodland_mansion/2x2_a4.nbt b/data/minecraft/structure/woodland_mansion/2x2_a4.nbt index 17ce2ef4..55bca64f 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_a4.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_a4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86f19a0506d954242254a875ec8711641745f2043e23474a4d99a168a0a687ef -size 5410 +oid sha256:380db450e9a53999da93930bf485c96e81745ad8be40ebd94df03e0375db105f +size 5409 diff --git a/data/minecraft/structure/woodland_mansion/2x2_b1.nbt b/data/minecraft/structure/woodland_mansion/2x2_b1.nbt index 2e008a92..4f8b22bf 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_b1.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_b1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d768e511a3444f25f9d049af605d30375fed1c25ecf65e75df9fa25e9867ca63 -size 7314 +oid sha256:3df9a8693ada89bfbf3ae6557df4f31e0c34ffcba7f8f6aabe1744c536f42d34 +size 7313 diff --git a/data/minecraft/structure/woodland_mansion/2x2_b2.nbt b/data/minecraft/structure/woodland_mansion/2x2_b2.nbt index 868b8e72..ba3e5dc8 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_b2.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_b2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11d895772c4493ce25e32d03fbd93fdbf4ce0a0d58a9c65315094a737d3a5171 -size 7300 +oid sha256:1e5fa0eb3469f79a580deec9025df598bc72ff5cf01b596356c7697d833f011b +size 7299 diff --git a/data/minecraft/structure/woodland_mansion/2x2_b3.nbt b/data/minecraft/structure/woodland_mansion/2x2_b3.nbt index e26e96b9..c971cc43 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_b3.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_b3.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cb2c2037fd8a5a930e1422952bdbef0d258cbfb1ccabf8b0923ac86a7875496 -size 7105 +oid sha256:98676b5942b3c9203a7963eccdbdda3c3b610e642cab386bafa4c2e83c90b3e6 +size 7104 diff --git a/data/minecraft/structure/woodland_mansion/2x2_b4.nbt b/data/minecraft/structure/woodland_mansion/2x2_b4.nbt index 5f798b5f..e89682c7 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_b4.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_b4.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b295d2ff3889fa9366fc1f6444928cc25bd1769bb2a2c10ec2c61842848ce478 -size 7242 +oid sha256:29822eb08bf917c6d6ae9befdc02b02babb93a9cb8746d2b227e4b8a2f8e94bd +size 7241 diff --git a/data/minecraft/structure/woodland_mansion/2x2_b5.nbt b/data/minecraft/structure/woodland_mansion/2x2_b5.nbt index 66146587..9c40118c 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_b5.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_b5.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:760a9b01e70c62af005e4d885b57dbb4c7346fc766256271837184e4f2f3dff0 -size 7544 +oid sha256:1df49875038766da0731fb619d40949fa076b7059f68acd1a408d94a7b05379e +size 7543 diff --git a/data/minecraft/structure/woodland_mansion/2x2_s1.nbt b/data/minecraft/structure/woodland_mansion/2x2_s1.nbt index d1435290..d0023a38 100644 --- a/data/minecraft/structure/woodland_mansion/2x2_s1.nbt +++ b/data/minecraft/structure/woodland_mansion/2x2_s1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:660c19305d3317ea1a6ff9e7b7304001a348321b687360f4cae1201929f62bf1 +oid sha256:3deb8775c012940e41b274c47c4527f3e66010438003fc0ffc05919450024ad5 size 6794 diff --git a/data/minecraft/structure/woodland_mansion/carpet_east.nbt b/data/minecraft/structure/woodland_mansion/carpet_east.nbt index ec321d42..b0b6e822 100644 --- a/data/minecraft/structure/woodland_mansion/carpet_east.nbt +++ b/data/minecraft/structure/woodland_mansion/carpet_east.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:926fa55cd5519d7ccb2561eeef9695c61a84e644c0b404ab1f92919a2de3add3 -size 180 +oid sha256:6c46b097f16b629c2fa8760ff21c3c46caf805fa23877afe33b5887df21baed6 +size 179 diff --git a/data/minecraft/structure/woodland_mansion/carpet_north.nbt b/data/minecraft/structure/woodland_mansion/carpet_north.nbt index 356cf1f3..e614961c 100644 --- a/data/minecraft/structure/woodland_mansion/carpet_north.nbt +++ b/data/minecraft/structure/woodland_mansion/carpet_north.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce9690a278f6743c3fc12a9e0c1fe984b7acbae5fdcba82a2127531b3d6d2abc -size 178 +oid sha256:22c0b9cdf0c7703b3718a0e236756b49cfde9b9024cb3dafe374e21e79b1b73c +size 176 diff --git a/data/minecraft/structure/woodland_mansion/carpet_south_1.nbt b/data/minecraft/structure/woodland_mansion/carpet_south_1.nbt index f0aa7a7b..42abf86d 100644 --- a/data/minecraft/structure/woodland_mansion/carpet_south_1.nbt +++ b/data/minecraft/structure/woodland_mansion/carpet_south_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:273dcc67978eb2f6288410b315eae037a9dbb06a76eed3493d3339af8e6487f5 -size 721 +oid sha256:a0229b7f7e206ee9b0cc6335698ccb756a11c97bab7416a3a4675d95621c5386 +size 720 diff --git a/data/minecraft/structure/woodland_mansion/carpet_south_2.nbt b/data/minecraft/structure/woodland_mansion/carpet_south_2.nbt index d4803bdd..9a614d8f 100644 --- a/data/minecraft/structure/woodland_mansion/carpet_south_2.nbt +++ b/data/minecraft/structure/woodland_mansion/carpet_south_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd61a059b38f01d13334ca27869c2f681b9937cd2d925863a8d5e895579b0119 +oid sha256:947e74c93f0b33cff6782b2fbd6ccc6ec18636f6dff348405e617f33f830a390 size 929 diff --git a/data/minecraft/structure/woodland_mansion/carpet_west_1.nbt b/data/minecraft/structure/woodland_mansion/carpet_west_1.nbt index 207df112..29f8f155 100644 --- a/data/minecraft/structure/woodland_mansion/carpet_west_1.nbt +++ b/data/minecraft/structure/woodland_mansion/carpet_west_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b40dca8410ec25cbc526ae09c1cdded25f5116b35815618f46df93be9b3d792a +oid sha256:ce9cd233125bdedce1bbbaeb05c95c40264aa0b6e462f186b4ad4ab6578ae75a size 793 diff --git a/data/minecraft/structure/woodland_mansion/carpet_west_2.nbt b/data/minecraft/structure/woodland_mansion/carpet_west_2.nbt index 9be2b2f8..645cd2d7 100644 --- a/data/minecraft/structure/woodland_mansion/carpet_west_2.nbt +++ b/data/minecraft/structure/woodland_mansion/carpet_west_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3d5a0f589532c65b2c695cc963673d9af2fb0efaeee55983ab2cb7b2c5b6602 -size 1020 +oid sha256:61b53c3b1c65e20a30386322f535d4b3e222d23bafca882ee133c0c4cb5d293a +size 1021 diff --git a/data/minecraft/structure/woodland_mansion/corridor_floor.nbt b/data/minecraft/structure/woodland_mansion/corridor_floor.nbt index bd975842..90922dd6 100644 --- a/data/minecraft/structure/woodland_mansion/corridor_floor.nbt +++ b/data/minecraft/structure/woodland_mansion/corridor_floor.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9046ccd0690b14b172fbb6338153d560f4c1a5feb2617a255948524a76775c00 -size 1172 +oid sha256:265b42d4d38041e16a52386ac186da47a38254ed42840a90e0ae3dd3b66e3745 +size 1171 diff --git a/data/minecraft/structure/woodland_mansion/entrance.nbt b/data/minecraft/structure/woodland_mansion/entrance.nbt index d5349414..e844bc4a 100644 --- a/data/minecraft/structure/woodland_mansion/entrance.nbt +++ b/data/minecraft/structure/woodland_mansion/entrance.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f69e503f2433c435d351f834752fb5f795a55a6472c57a953ba7c86e7e7a31a5 -size 18256 +oid sha256:fc8233c37676363070914137aade124107c04fee2f130618a67ef73a0d45d216 +size 18255 diff --git a/data/minecraft/structure/woodland_mansion/indoors_door_1.nbt b/data/minecraft/structure/woodland_mansion/indoors_door_1.nbt index 386c4557..b2f742a1 100644 --- a/data/minecraft/structure/woodland_mansion/indoors_door_1.nbt +++ b/data/minecraft/structure/woodland_mansion/indoors_door_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e8fb41e19be9fd60e3edbe4e9ddac8c4fc901bd58fd9bc23ac0923d72fdcdb2 -size 410 +oid sha256:3099f83827cfc9c840a5ebaa305ef98ee7d35aace7ef548cecfe02f6bc6569a7 +size 409 diff --git a/data/minecraft/structure/woodland_mansion/indoors_door_2.nbt b/data/minecraft/structure/woodland_mansion/indoors_door_2.nbt index 84fb9fd3..0fa468c8 100644 --- a/data/minecraft/structure/woodland_mansion/indoors_door_2.nbt +++ b/data/minecraft/structure/woodland_mansion/indoors_door_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef63cc5de99e250bf37dedc48740c38d213e90086ad08561a8bde99048c4d50e -size 505 +oid sha256:305a57a2bae08cdaba8ef9f848a6eb3656f6a4d26f54075aa35b49cf90f06713 +size 504 diff --git a/data/minecraft/structure/woodland_mansion/indoors_wall_1.nbt b/data/minecraft/structure/woodland_mansion/indoors_wall_1.nbt index 55912c1d..b8c0b40f 100644 --- a/data/minecraft/structure/woodland_mansion/indoors_wall_1.nbt +++ b/data/minecraft/structure/woodland_mansion/indoors_wall_1.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e0f44261448a194059f5f9a5f09b02faa36a8b5f1b00e47323054346d6add88 -size 366 +oid sha256:c61f276b31a45e513fb35453ec32485c9d56f3713303305a44b3fca7a6f72331 +size 364 diff --git a/data/minecraft/structure/woodland_mansion/indoors_wall_2.nbt b/data/minecraft/structure/woodland_mansion/indoors_wall_2.nbt index 56191b6d..c3245ec1 100644 --- a/data/minecraft/structure/woodland_mansion/indoors_wall_2.nbt +++ b/data/minecraft/structure/woodland_mansion/indoors_wall_2.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d2caed2b93f9d332f6d98384a44b6288c8b831ab304b0bd115c5401733b090b -size 442 +oid sha256:4fd7bdeeec610fe0274efb195fe4625b0cb70bfacd1da8cc2611e25b1e27de95 +size 441 diff --git a/data/minecraft/structure/woodland_mansion/roof.nbt b/data/minecraft/structure/woodland_mansion/roof.nbt index 35243f09..1edcd712 100644 --- a/data/minecraft/structure/woodland_mansion/roof.nbt +++ b/data/minecraft/structure/woodland_mansion/roof.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a6afa43a78db04010d8e3b5a251e47f58564671bad15a64f136d54a4941b7db -size 333 +oid sha256:46eeff7c527f75aee28718d166c3092505b2a354c7c42cbdebdf6c4ec90dc32c +size 332 diff --git a/data/minecraft/structure/woodland_mansion/roof_corner.nbt b/data/minecraft/structure/woodland_mansion/roof_corner.nbt index 03dab1f2..ebd90ff7 100644 --- a/data/minecraft/structure/woodland_mansion/roof_corner.nbt +++ b/data/minecraft/structure/woodland_mansion/roof_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:405867cca84b5aa0c0dc743d5d15746a3a7940e6e7b441b38b23654d5151baae -size 450 +oid sha256:ed055d130e6dfbce5cb244472fc18131fe31fa46b8a8ec52be31bc411530df74 +size 449 diff --git a/data/minecraft/structure/woodland_mansion/roof_front.nbt b/data/minecraft/structure/woodland_mansion/roof_front.nbt index 9fd56b9a..95b7d14c 100644 --- a/data/minecraft/structure/woodland_mansion/roof_front.nbt +++ b/data/minecraft/structure/woodland_mansion/roof_front.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:620c403b7f77dbbca6d77b343263194d9ff427de3322bbf2ffcf0a75371fe1ae -size 636 +oid sha256:2a15bc5ee39ee62152c50c6ca7b6c067e57e988ef2fecd7e35e7a35d9a8ebf7e +size 635 diff --git a/data/minecraft/structure/woodland_mansion/roof_inner_corner.nbt b/data/minecraft/structure/woodland_mansion/roof_inner_corner.nbt index 01099039..787e55ab 100644 --- a/data/minecraft/structure/woodland_mansion/roof_inner_corner.nbt +++ b/data/minecraft/structure/woodland_mansion/roof_inner_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ca2a61dd1c3fefc0240d12dc24e87d9c5adcb465bed7f5b6ff71ab19a5e6eb1 -size 445 +oid sha256:22de95103eb90ac31c61aa445d4fd0b14ae37c22bf9af9c6778b36d8a95c6e59 +size 444 diff --git a/data/minecraft/structure/woodland_mansion/small_wall.nbt b/data/minecraft/structure/woodland_mansion/small_wall.nbt index 589a9b5c..b83c218e 100644 --- a/data/minecraft/structure/woodland_mansion/small_wall.nbt +++ b/data/minecraft/structure/woodland_mansion/small_wall.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:582181aa9474d221144ea96742b5399d1a11ffdb2f3b21b5ce645240a4b55da3 -size 511 +oid sha256:63a63fe30baa3a778de017eaa29d83573af56168d0147f80da9a7a3bd79c6bb4 +size 510 diff --git a/data/minecraft/structure/woodland_mansion/small_wall_corner.nbt b/data/minecraft/structure/woodland_mansion/small_wall_corner.nbt index d668468a..94a1be89 100644 --- a/data/minecraft/structure/woodland_mansion/small_wall_corner.nbt +++ b/data/minecraft/structure/woodland_mansion/small_wall_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62d77e9a6fd755651056b639317db74b7f79d75f0b3fdc7a1499ba83c286b3e8 -size 262 +oid sha256:c3d5d31523ce2cdd4cdbb8f5e021b1a7ba50bbcc4d4bfdb19bcb95d6c70b0d0b +size 261 diff --git a/data/minecraft/structure/woodland_mansion/wall_corner.nbt b/data/minecraft/structure/woodland_mansion/wall_corner.nbt index a47c0a54..c74d19ad 100644 --- a/data/minecraft/structure/woodland_mansion/wall_corner.nbt +++ b/data/minecraft/structure/woodland_mansion/wall_corner.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:837930d2a9792bd3e7da35fc1f4a351d113f215e440ab826ed78c08bd616cac8 -size 308 +oid sha256:cbe380a4e363d4a64729a773d5c01744cf79b72663f46be8e119c9d6fa3e23a7 +size 307 diff --git a/data/minecraft/structure/woodland_mansion/wall_flat.nbt b/data/minecraft/structure/woodland_mansion/wall_flat.nbt index c3269962..4f631b2a 100644 --- a/data/minecraft/structure/woodland_mansion/wall_flat.nbt +++ b/data/minecraft/structure/woodland_mansion/wall_flat.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e24589550e92ca8c3437ceae06712cc2d65fe7ccd534127b38ddae6b473b6446 -size 727 +oid sha256:8f87779b6cb6d188ea3cfee39dc8d470db9173d07b9b6ea1f80d4c24fb55ab16 +size 725 diff --git a/data/minecraft/structure/woodland_mansion/wall_window.nbt b/data/minecraft/structure/woodland_mansion/wall_window.nbt index 82cb0634..2eb63946 100644 --- a/data/minecraft/structure/woodland_mansion/wall_window.nbt +++ b/data/minecraft/structure/woodland_mansion/wall_window.nbt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c7eb700ad6fce788699e4a1a91bce59dc8acccc15ab102f45202d2271d1d522 -size 831 +oid sha256:f1e42c9e3738442574194e858bb4429ff79f29b1f6678f5758a9b4b38b10289c +size 829 diff --git a/data/minecraft/tags/block/bee_attractive.json b/data/minecraft/tags/block/bee_attractive.json new file mode 100644 index 00000000..c6edf1c8 --- /dev/null +++ b/data/minecraft/tags/block/bee_attractive.json @@ -0,0 +1,31 @@ +{ + "values": [ + "minecraft:dandelion", + "minecraft:open_eyeblossom", + "minecraft:poppy", + "minecraft:blue_orchid", + "minecraft:allium", + "minecraft:azure_bluet", + "minecraft:red_tulip", + "minecraft:orange_tulip", + "minecraft:white_tulip", + "minecraft:pink_tulip", + "minecraft:oxeye_daisy", + "minecraft:cornflower", + "minecraft:lily_of_the_valley", + "minecraft:wither_rose", + "minecraft:torchflower", + "minecraft:sunflower", + "minecraft:lilac", + "minecraft:peony", + "minecraft:rose_bush", + "minecraft:pitcher_plant", + "minecraft:flowering_azalea_leaves", + "minecraft:flowering_azalea", + "minecraft:mangrove_propagule", + "minecraft:cherry_leaves", + "minecraft:pink_petals", + "minecraft:chorus_flower", + "minecraft:spore_blossom" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/block/ceiling_hanging_signs.json b/data/minecraft/tags/block/ceiling_hanging_signs.json index 4ca06dad..b55f67ba 100644 --- a/data/minecraft/tags/block/ceiling_hanging_signs.json +++ b/data/minecraft/tags/block/ceiling_hanging_signs.json @@ -7,6 +7,7 @@ "minecraft:cherry_hanging_sign", "minecraft:jungle_hanging_sign", "minecraft:dark_oak_hanging_sign", + "minecraft:pale_oak_hanging_sign", "minecraft:crimson_hanging_sign", "minecraft:warped_hanging_sign", "minecraft:mangrove_hanging_sign", diff --git a/data/minecraft/tags/block/combination_step_sound_blocks.json b/data/minecraft/tags/block/combination_step_sound_blocks.json index ba45e6cf..71da8418 100644 --- a/data/minecraft/tags/block/combination_step_sound_blocks.json +++ b/data/minecraft/tags/block/combination_step_sound_blocks.json @@ -2,9 +2,11 @@ "values": [ "#minecraft:wool_carpets", "minecraft:moss_carpet", + "minecraft:pale_moss_carpet", "minecraft:snow", "minecraft:nether_sprouts", "minecraft:warped_roots", - "minecraft:crimson_roots" + "minecraft:crimson_roots", + "minecraft:resin_clump" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/dirt.json b/data/minecraft/tags/block/dirt.json index a75db4a0..2037c6a1 100644 --- a/data/minecraft/tags/block/dirt.json +++ b/data/minecraft/tags/block/dirt.json @@ -7,6 +7,7 @@ "minecraft:mycelium", "minecraft:rooted_dirt", "minecraft:moss_block", + "minecraft:pale_moss_block", "minecraft:mud", "minecraft:muddy_mangrove_roots" ] diff --git a/data/minecraft/tags/block/fence_gates.json b/data/minecraft/tags/block/fence_gates.json index 2a8d2924..9904fc97 100644 --- a/data/minecraft/tags/block/fence_gates.json +++ b/data/minecraft/tags/block/fence_gates.json @@ -3,6 +3,7 @@ "minecraft:acacia_fence_gate", "minecraft:birch_fence_gate", "minecraft:dark_oak_fence_gate", + "minecraft:pale_oak_fence_gate", "minecraft:jungle_fence_gate", "minecraft:oak_fence_gate", "minecraft:spruce_fence_gate", diff --git a/data/minecraft/tags/block/flower_pots.json b/data/minecraft/tags/block/flower_pots.json index a1e7c896..7e1fd65a 100644 --- a/data/minecraft/tags/block/flower_pots.json +++ b/data/minecraft/tags/block/flower_pots.json @@ -1,6 +1,8 @@ { "values": [ "minecraft:flower_pot", + "minecraft:potted_open_eyeblossom", + "minecraft:potted_closed_eyeblossom", "minecraft:potted_poppy", "minecraft:potted_blue_orchid", "minecraft:potted_allium", @@ -17,6 +19,7 @@ "minecraft:potted_jungle_sapling", "minecraft:potted_acacia_sapling", "minecraft:potted_dark_oak_sapling", + "minecraft:potted_pale_oak_sapling", "minecraft:potted_red_mushroom", "minecraft:potted_brown_mushroom", "minecraft:potted_dead_bush", diff --git a/data/minecraft/tags/block/flowers.json b/data/minecraft/tags/block/flowers.json index 9e10a4de..fa676d19 100644 --- a/data/minecraft/tags/block/flowers.json +++ b/data/minecraft/tags/block/flowers.json @@ -1,7 +1,11 @@ { "values": [ "#minecraft:small_flowers", - "#minecraft:tall_flowers", + "minecraft:sunflower", + "minecraft:lilac", + "minecraft:peony", + "minecraft:rose_bush", + "minecraft:pitcher_plant", "minecraft:flowering_azalea_leaves", "minecraft:flowering_azalea", "minecraft:mangrove_propagule", diff --git a/data/minecraft/tags/block/leaves.json b/data/minecraft/tags/block/leaves.json index 6815479c..523787f2 100644 --- a/data/minecraft/tags/block/leaves.json +++ b/data/minecraft/tags/block/leaves.json @@ -3,6 +3,7 @@ "minecraft:jungle_leaves", "minecraft:oak_leaves", "minecraft:spruce_leaves", + "minecraft:pale_oak_leaves", "minecraft:dark_oak_leaves", "minecraft:acacia_leaves", "minecraft:birch_leaves", diff --git a/data/minecraft/tags/block/logs_that_burn.json b/data/minecraft/tags/block/logs_that_burn.json index 3b2590c9..00f0e7fd 100644 --- a/data/minecraft/tags/block/logs_that_burn.json +++ b/data/minecraft/tags/block/logs_that_burn.json @@ -1,6 +1,7 @@ { "values": [ "#minecraft:dark_oak_logs", + "#minecraft:pale_oak_logs", "#minecraft:oak_logs", "#minecraft:acacia_logs", "#minecraft:birch_logs", diff --git a/data/minecraft/tags/block/mineable/axe.json b/data/minecraft/tags/block/mineable/axe.json index a5e87dde..78611b85 100644 --- a/data/minecraft/tags/block/mineable/axe.json +++ b/data/minecraft/tags/block/mineable/axe.json @@ -85,6 +85,7 @@ "minecraft:bamboo_mosaic_slab", "minecraft:bamboo_mosaic_stairs", "#minecraft:bamboo_blocks", - "minecraft:chiseled_bookshelf" + "minecraft:chiseled_bookshelf", + "minecraft:creaking_heart" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/mineable/hoe.json b/data/minecraft/tags/block/mineable/hoe.json index d692b729..28868bb4 100644 --- a/data/minecraft/tags/block/mineable/hoe.json +++ b/data/minecraft/tags/block/mineable/hoe.json @@ -11,6 +11,7 @@ "minecraft:jungle_leaves", "minecraft:oak_leaves", "minecraft:spruce_leaves", + "minecraft:pale_oak_leaves", "minecraft:dark_oak_leaves", "minecraft:acacia_leaves", "minecraft:birch_leaves", @@ -21,6 +22,8 @@ "minecraft:calibrated_sculk_sensor", "minecraft:moss_block", "minecraft:moss_carpet", + "minecraft:pale_moss_block", + "minecraft:pale_moss_carpet", "minecraft:sculk", "minecraft:sculk_catalyst", "minecraft:sculk_vein", diff --git a/data/minecraft/tags/block/mineable/pickaxe.json b/data/minecraft/tags/block/mineable/pickaxe.json index 0cdbf154..c9b8d1b8 100644 --- a/data/minecraft/tags/block/mineable/pickaxe.json +++ b/data/minecraft/tags/block/mineable/pickaxe.json @@ -383,6 +383,11 @@ "minecraft:waxed_exposed_copper_trapdoor", "minecraft:waxed_weathered_copper_trapdoor", "minecraft:waxed_oxidized_copper_trapdoor", - "minecraft:heavy_core" + "minecraft:heavy_core", + "minecraft:resin_bricks", + "minecraft:resin_brick_slab", + "minecraft:resin_brick_wall", + "minecraft:resin_brick_stairs", + "minecraft:chiseled_resin_bricks" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/needs_stone_tool.json b/data/minecraft/tags/block/needs_stone_tool.json index 52ac1ec3..536ba02a 100644 --- a/data/minecraft/tags/block/needs_stone_tool.json +++ b/data/minecraft/tags/block/needs_stone_tool.json @@ -75,14 +75,6 @@ "minecraft:waxed_copper_trapdoor", "minecraft:waxed_exposed_copper_trapdoor", "minecraft:waxed_weathered_copper_trapdoor", - "minecraft:waxed_oxidized_copper_trapdoor", - "minecraft:copper_door", - "minecraft:exposed_copper_door", - "minecraft:weathered_copper_door", - "minecraft:oxidized_copper_door", - "minecraft:waxed_copper_door", - "minecraft:waxed_exposed_copper_door", - "minecraft:waxed_weathered_copper_door", - "minecraft:waxed_oxidized_copper_door" + "minecraft:waxed_oxidized_copper_trapdoor" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/overworld_carver_replaceables.json b/data/minecraft/tags/block/overworld_carver_replaceables.json index 60bfd842..2830ac2b 100644 --- a/data/minecraft/tags/block/overworld_carver_replaceables.json +++ b/data/minecraft/tags/block/overworld_carver_replaceables.json @@ -6,13 +6,13 @@ "#minecraft:terracotta", "#minecraft:iron_ores", "#minecraft:copper_ores", + "#minecraft:snow", "minecraft:water", "minecraft:gravel", "minecraft:suspicious_gravel", "minecraft:sandstone", "minecraft:red_sandstone", "minecraft:calcite", - "minecraft:snow", "minecraft:packed_ice", "minecraft:raw_iron_block", "minecraft:raw_copper_block" diff --git a/data/minecraft/tags/block/overworld_natural_logs.json b/data/minecraft/tags/block/overworld_natural_logs.json index b3f1520d..940bdb74 100644 --- a/data/minecraft/tags/block/overworld_natural_logs.json +++ b/data/minecraft/tags/block/overworld_natural_logs.json @@ -6,6 +6,7 @@ "minecraft:jungle_log", "minecraft:spruce_log", "minecraft:dark_oak_log", + "minecraft:pale_oak_log", "minecraft:mangrove_log", "minecraft:cherry_log" ] diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/pale_oak_logs.json b/data/minecraft/tags/block/pale_oak_logs.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/tags/block/pale_oak_logs.json rename to data/minecraft/tags/block/pale_oak_logs.json diff --git a/data/minecraft/tags/block/planks.json b/data/minecraft/tags/block/planks.json index a8ff5bb5..55fa6f30 100644 --- a/data/minecraft/tags/block/planks.json +++ b/data/minecraft/tags/block/planks.json @@ -6,6 +6,7 @@ "minecraft:jungle_planks", "minecraft:acacia_planks", "minecraft:dark_oak_planks", + "minecraft:pale_oak_planks", "minecraft:crimson_planks", "minecraft:warped_planks", "minecraft:mangrove_planks", diff --git a/data/minecraft/tags/block/replaceable.json b/data/minecraft/tags/block/replaceable.json index d4e6df2e..604c412a 100644 --- a/data/minecraft/tags/block/replaceable.json +++ b/data/minecraft/tags/block/replaceable.json @@ -13,6 +13,7 @@ "minecraft:snow", "minecraft:vine", "minecraft:glow_lichen", + "minecraft:resin_clump", "minecraft:light", "minecraft:tall_grass", "minecraft:large_fern", diff --git a/data/minecraft/tags/block/replaceable_by_trees.json b/data/minecraft/tags/block/replaceable_by_trees.json index 9e7856bf..ba17b35c 100644 --- a/data/minecraft/tags/block/replaceable_by_trees.json +++ b/data/minecraft/tags/block/replaceable_by_trees.json @@ -1,6 +1,8 @@ { "values": [ "#minecraft:leaves", + "#minecraft:small_flowers", + "minecraft:pale_moss_carpet", "minecraft:short_grass", "minecraft:fern", "minecraft:dead_bush", diff --git a/data/minecraft/tags/block/saplings.json b/data/minecraft/tags/block/saplings.json index cebde163..286497bf 100644 --- a/data/minecraft/tags/block/saplings.json +++ b/data/minecraft/tags/block/saplings.json @@ -6,6 +6,7 @@ "minecraft:jungle_sapling", "minecraft:acacia_sapling", "minecraft:dark_oak_sapling", + "minecraft:pale_oak_sapling", "minecraft:azalea", "minecraft:flowering_azalea", "minecraft:mangrove_propagule", diff --git a/data/minecraft/tags/block/slabs.json b/data/minecraft/tags/block/slabs.json index 0f3f5aea..ebc3f8e1 100644 --- a/data/minecraft/tags/block/slabs.json +++ b/data/minecraft/tags/block/slabs.json @@ -49,6 +49,7 @@ "minecraft:mud_brick_slab", "minecraft:tuff_slab", "minecraft:polished_tuff_slab", - "minecraft:tuff_brick_slab" + "minecraft:tuff_brick_slab", + "minecraft:resin_brick_slab" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/small_flowers.json b/data/minecraft/tags/block/small_flowers.json index 2477625f..c77dca4b 100644 --- a/data/minecraft/tags/block/small_flowers.json +++ b/data/minecraft/tags/block/small_flowers.json @@ -1,6 +1,7 @@ { "values": [ "minecraft:dandelion", + "minecraft:open_eyeblossom", "minecraft:poppy", "minecraft:blue_orchid", "minecraft:allium", @@ -13,6 +14,7 @@ "minecraft:cornflower", "minecraft:lily_of_the_valley", "minecraft:wither_rose", - "minecraft:torchflower" + "minecraft:torchflower", + "minecraft:closed_eyeblossom" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/sniffer_diggable_block.json b/data/minecraft/tags/block/sniffer_diggable_block.json index 2aead93a..9948ad3b 100644 --- a/data/minecraft/tags/block/sniffer_diggable_block.json +++ b/data/minecraft/tags/block/sniffer_diggable_block.json @@ -6,6 +6,7 @@ "minecraft:coarse_dirt", "minecraft:rooted_dirt", "minecraft:moss_block", + "minecraft:pale_moss_block", "minecraft:mud", "minecraft:muddy_mangrove_roots" ] diff --git a/data/minecraft/tags/block/stairs.json b/data/minecraft/tags/block/stairs.json index eb67a9fe..fd135fc2 100644 --- a/data/minecraft/tags/block/stairs.json +++ b/data/minecraft/tags/block/stairs.json @@ -45,6 +45,7 @@ "minecraft:mud_brick_stairs", "minecraft:tuff_stairs", "minecraft:polished_tuff_stairs", - "minecraft:tuff_brick_stairs" + "minecraft:tuff_brick_stairs", + "minecraft:resin_brick_stairs" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/standing_signs.json b/data/minecraft/tags/block/standing_signs.json index 7b4ddb48..84fda375 100644 --- a/data/minecraft/tags/block/standing_signs.json +++ b/data/minecraft/tags/block/standing_signs.json @@ -6,6 +6,7 @@ "minecraft:acacia_sign", "minecraft:jungle_sign", "minecraft:dark_oak_sign", + "minecraft:pale_oak_sign", "minecraft:crimson_sign", "minecraft:warped_sign", "minecraft:mangrove_sign", diff --git a/data/minecraft/tags/block/sword_efficient.json b/data/minecraft/tags/block/sword_efficient.json index 57670bed..9f051b23 100644 --- a/data/minecraft/tags/block/sword_efficient.json +++ b/data/minecraft/tags/block/sword_efficient.json @@ -2,7 +2,6 @@ "values": [ "#minecraft:leaves", "#minecraft:saplings", - "#minecraft:small_flowers", "#minecraft:crops", "minecraft:short_grass", "minecraft:fern", @@ -33,7 +32,6 @@ "minecraft:cave_vines", "minecraft:cave_vines_plant", "minecraft:spore_blossom", - "minecraft:moss_carpet", "minecraft:pink_petals", "minecraft:big_dripleaf", "minecraft:big_dripleaf_stem", diff --git a/data/minecraft/tags/block/tall_flowers.json b/data/minecraft/tags/block/tall_flowers.json deleted file mode 100644 index 144eb89e..00000000 --- a/data/minecraft/tags/block/tall_flowers.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "values": [ - "minecraft:sunflower", - "minecraft:lilac", - "minecraft:peony", - "minecraft:rose_bush", - "minecraft:pitcher_plant" - ] -} \ No newline at end of file diff --git a/data/minecraft/tags/block/wall_hanging_signs.json b/data/minecraft/tags/block/wall_hanging_signs.json index b1ebe41f..4afc13d5 100644 --- a/data/minecraft/tags/block/wall_hanging_signs.json +++ b/data/minecraft/tags/block/wall_hanging_signs.json @@ -7,6 +7,7 @@ "minecraft:cherry_wall_hanging_sign", "minecraft:jungle_wall_hanging_sign", "minecraft:dark_oak_wall_hanging_sign", + "minecraft:pale_oak_wall_hanging_sign", "minecraft:crimson_wall_hanging_sign", "minecraft:warped_wall_hanging_sign", "minecraft:mangrove_wall_hanging_sign", diff --git a/data/minecraft/tags/block/wall_signs.json b/data/minecraft/tags/block/wall_signs.json index bf1d1f6f..6f430df4 100644 --- a/data/minecraft/tags/block/wall_signs.json +++ b/data/minecraft/tags/block/wall_signs.json @@ -6,6 +6,7 @@ "minecraft:acacia_wall_sign", "minecraft:jungle_wall_sign", "minecraft:dark_oak_wall_sign", + "minecraft:pale_oak_wall_sign", "minecraft:crimson_wall_sign", "minecraft:warped_wall_sign", "minecraft:mangrove_wall_sign", diff --git a/data/minecraft/tags/block/walls.json b/data/minecraft/tags/block/walls.json index b4d42842..aa80022b 100644 --- a/data/minecraft/tags/block/walls.json +++ b/data/minecraft/tags/block/walls.json @@ -24,6 +24,7 @@ "minecraft:mud_brick_wall", "minecraft:tuff_wall", "minecraft:polished_tuff_wall", - "minecraft:tuff_brick_wall" + "minecraft:tuff_brick_wall", + "minecraft:resin_brick_wall" ] } \ No newline at end of file diff --git a/data/minecraft/tags/block/wooden_buttons.json b/data/minecraft/tags/block/wooden_buttons.json index fe5e0572..f6646d7d 100644 --- a/data/minecraft/tags/block/wooden_buttons.json +++ b/data/minecraft/tags/block/wooden_buttons.json @@ -6,6 +6,7 @@ "minecraft:jungle_button", "minecraft:acacia_button", "minecraft:dark_oak_button", + "minecraft:pale_oak_button", "minecraft:crimson_button", "minecraft:warped_button", "minecraft:mangrove_button", diff --git a/data/minecraft/tags/block/wooden_doors.json b/data/minecraft/tags/block/wooden_doors.json index 5c9de920..be8b7def 100644 --- a/data/minecraft/tags/block/wooden_doors.json +++ b/data/minecraft/tags/block/wooden_doors.json @@ -6,6 +6,7 @@ "minecraft:jungle_door", "minecraft:acacia_door", "minecraft:dark_oak_door", + "minecraft:pale_oak_door", "minecraft:crimson_door", "minecraft:warped_door", "minecraft:mangrove_door", diff --git a/data/minecraft/tags/block/wooden_fences.json b/data/minecraft/tags/block/wooden_fences.json index cecdd724..dc051583 100644 --- a/data/minecraft/tags/block/wooden_fences.json +++ b/data/minecraft/tags/block/wooden_fences.json @@ -3,6 +3,7 @@ "minecraft:oak_fence", "minecraft:acacia_fence", "minecraft:dark_oak_fence", + "minecraft:pale_oak_fence", "minecraft:spruce_fence", "minecraft:birch_fence", "minecraft:jungle_fence", diff --git a/data/minecraft/tags/block/wooden_pressure_plates.json b/data/minecraft/tags/block/wooden_pressure_plates.json index 79558b92..008f0063 100644 --- a/data/minecraft/tags/block/wooden_pressure_plates.json +++ b/data/minecraft/tags/block/wooden_pressure_plates.json @@ -6,6 +6,7 @@ "minecraft:jungle_pressure_plate", "minecraft:acacia_pressure_plate", "minecraft:dark_oak_pressure_plate", + "minecraft:pale_oak_pressure_plate", "minecraft:crimson_pressure_plate", "minecraft:warped_pressure_plate", "minecraft:mangrove_pressure_plate", diff --git a/data/minecraft/tags/block/wooden_slabs.json b/data/minecraft/tags/block/wooden_slabs.json index be1fba2b..795bd3b7 100644 --- a/data/minecraft/tags/block/wooden_slabs.json +++ b/data/minecraft/tags/block/wooden_slabs.json @@ -6,6 +6,7 @@ "minecraft:jungle_slab", "minecraft:acacia_slab", "minecraft:dark_oak_slab", + "minecraft:pale_oak_slab", "minecraft:crimson_slab", "minecraft:warped_slab", "minecraft:mangrove_slab", diff --git a/data/minecraft/tags/block/wooden_stairs.json b/data/minecraft/tags/block/wooden_stairs.json index 7561537f..86239e4c 100644 --- a/data/minecraft/tags/block/wooden_stairs.json +++ b/data/minecraft/tags/block/wooden_stairs.json @@ -6,6 +6,7 @@ "minecraft:jungle_stairs", "minecraft:acacia_stairs", "minecraft:dark_oak_stairs", + "minecraft:pale_oak_stairs", "minecraft:crimson_stairs", "minecraft:warped_stairs", "minecraft:mangrove_stairs", diff --git a/data/minecraft/tags/block/wooden_trapdoors.json b/data/minecraft/tags/block/wooden_trapdoors.json index 8e93dc6d..050e05f7 100644 --- a/data/minecraft/tags/block/wooden_trapdoors.json +++ b/data/minecraft/tags/block/wooden_trapdoors.json @@ -3,6 +3,7 @@ "minecraft:acacia_trapdoor", "minecraft:birch_trapdoor", "minecraft:dark_oak_trapdoor", + "minecraft:pale_oak_trapdoor", "minecraft:jungle_trapdoor", "minecraft:oak_trapdoor", "minecraft:spruce_trapdoor", diff --git a/data/minecraft/tags/entity_type/boat.json b/data/minecraft/tags/entity_type/boat.json index bd774486..252370c6 100644 --- a/data/minecraft/tags/entity_type/boat.json +++ b/data/minecraft/tags/entity_type/boat.json @@ -7,6 +7,7 @@ "minecraft:acacia_boat", "minecraft:cherry_boat", "minecraft:dark_oak_boat", + "minecraft:pale_oak_boat", "minecraft:mangrove_boat", "minecraft:bamboo_raft" ] diff --git a/data/minecraft/tags/item/bee_food.json b/data/minecraft/tags/item/bee_food.json index 42a09c21..c6edf1c8 100644 --- a/data/minecraft/tags/item/bee_food.json +++ b/data/minecraft/tags/item/bee_food.json @@ -1,5 +1,31 @@ { "values": [ - "#minecraft:flowers" + "minecraft:dandelion", + "minecraft:open_eyeblossom", + "minecraft:poppy", + "minecraft:blue_orchid", + "minecraft:allium", + "minecraft:azure_bluet", + "minecraft:red_tulip", + "minecraft:orange_tulip", + "minecraft:white_tulip", + "minecraft:pink_tulip", + "minecraft:oxeye_daisy", + "minecraft:cornflower", + "minecraft:lily_of_the_valley", + "minecraft:wither_rose", + "minecraft:torchflower", + "minecraft:sunflower", + "minecraft:lilac", + "minecraft:peony", + "minecraft:rose_bush", + "minecraft:pitcher_plant", + "minecraft:flowering_azalea_leaves", + "minecraft:flowering_azalea", + "minecraft:mangrove_propagule", + "minecraft:cherry_leaves", + "minecraft:pink_petals", + "minecraft:chorus_flower", + "minecraft:spore_blossom" ] } \ No newline at end of file diff --git a/data/minecraft/tags/item/boats.json b/data/minecraft/tags/item/boats.json index 4949f62a..c04cb9ad 100644 --- a/data/minecraft/tags/item/boats.json +++ b/data/minecraft/tags/item/boats.json @@ -6,6 +6,7 @@ "minecraft:jungle_boat", "minecraft:acacia_boat", "minecraft:dark_oak_boat", + "minecraft:pale_oak_boat", "minecraft:mangrove_boat", "minecraft:bamboo_raft", "minecraft:cherry_boat", diff --git a/data/minecraft/tags/item/chest_boats.json b/data/minecraft/tags/item/chest_boats.json index 26cb2e34..ab1b5c07 100644 --- a/data/minecraft/tags/item/chest_boats.json +++ b/data/minecraft/tags/item/chest_boats.json @@ -6,6 +6,7 @@ "minecraft:jungle_chest_boat", "minecraft:acacia_chest_boat", "minecraft:dark_oak_chest_boat", + "minecraft:pale_oak_chest_boat", "minecraft:mangrove_chest_boat", "minecraft:bamboo_chest_raft", "minecraft:cherry_chest_boat" diff --git a/data/minecraft/tags/item/dirt.json b/data/minecraft/tags/item/dirt.json index a75db4a0..2037c6a1 100644 --- a/data/minecraft/tags/item/dirt.json +++ b/data/minecraft/tags/item/dirt.json @@ -7,6 +7,7 @@ "minecraft:mycelium", "minecraft:rooted_dirt", "minecraft:moss_block", + "minecraft:pale_moss_block", "minecraft:mud", "minecraft:muddy_mangrove_roots" ] diff --git a/data/minecraft/tags/item/drowned_preferred_weapons.json b/data/minecraft/tags/item/drowned_preferred_weapons.json new file mode 100644 index 00000000..7a2c450b --- /dev/null +++ b/data/minecraft/tags/item/drowned_preferred_weapons.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:trident" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/item/fence_gates.json b/data/minecraft/tags/item/fence_gates.json index 2a8d2924..9904fc97 100644 --- a/data/minecraft/tags/item/fence_gates.json +++ b/data/minecraft/tags/item/fence_gates.json @@ -3,6 +3,7 @@ "minecraft:acacia_fence_gate", "minecraft:birch_fence_gate", "minecraft:dark_oak_fence_gate", + "minecraft:pale_oak_fence_gate", "minecraft:jungle_fence_gate", "minecraft:oak_fence_gate", "minecraft:spruce_fence_gate", diff --git a/data/minecraft/tags/item/flowers.json b/data/minecraft/tags/item/flowers.json deleted file mode 100644 index 9e10a4de..00000000 --- a/data/minecraft/tags/item/flowers.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "values": [ - "#minecraft:small_flowers", - "#minecraft:tall_flowers", - "minecraft:flowering_azalea_leaves", - "minecraft:flowering_azalea", - "minecraft:mangrove_propagule", - "minecraft:cherry_leaves", - "minecraft:pink_petals", - "minecraft:chorus_flower", - "minecraft:spore_blossom" - ] -} \ No newline at end of file diff --git a/data/minecraft/tags/item/hanging_signs.json b/data/minecraft/tags/item/hanging_signs.json index 4ca06dad..b55f67ba 100644 --- a/data/minecraft/tags/item/hanging_signs.json +++ b/data/minecraft/tags/item/hanging_signs.json @@ -7,6 +7,7 @@ "minecraft:cherry_hanging_sign", "minecraft:jungle_hanging_sign", "minecraft:dark_oak_hanging_sign", + "minecraft:pale_oak_hanging_sign", "minecraft:crimson_hanging_sign", "minecraft:warped_hanging_sign", "minecraft:mangrove_hanging_sign", diff --git a/data/minecraft/tags/item/leaves.json b/data/minecraft/tags/item/leaves.json index 6815479c..523787f2 100644 --- a/data/minecraft/tags/item/leaves.json +++ b/data/minecraft/tags/item/leaves.json @@ -3,6 +3,7 @@ "minecraft:jungle_leaves", "minecraft:oak_leaves", "minecraft:spruce_leaves", + "minecraft:pale_oak_leaves", "minecraft:dark_oak_leaves", "minecraft:acacia_leaves", "minecraft:birch_leaves", diff --git a/data/minecraft/tags/item/logs_that_burn.json b/data/minecraft/tags/item/logs_that_burn.json index 3b2590c9..00f0e7fd 100644 --- a/data/minecraft/tags/item/logs_that_burn.json +++ b/data/minecraft/tags/item/logs_that_burn.json @@ -1,6 +1,7 @@ { "values": [ "#minecraft:dark_oak_logs", + "#minecraft:pale_oak_logs", "#minecraft:oak_logs", "#minecraft:acacia_logs", "#minecraft:birch_logs", diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/pale_oak_logs.json b/data/minecraft/tags/item/pale_oak_logs.json similarity index 100% rename from data/minecraft/datapacks/winter_drop/data/minecraft/tags/item/pale_oak_logs.json rename to data/minecraft/tags/item/pale_oak_logs.json diff --git a/data/minecraft/tags/item/piglin_preferred_weapons.json b/data/minecraft/tags/item/piglin_preferred_weapons.json new file mode 100644 index 00000000..848f97bc --- /dev/null +++ b/data/minecraft/tags/item/piglin_preferred_weapons.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:crossbow" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/item/pillager_preferred_weapons.json b/data/minecraft/tags/item/pillager_preferred_weapons.json new file mode 100644 index 00000000..848f97bc --- /dev/null +++ b/data/minecraft/tags/item/pillager_preferred_weapons.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:crossbow" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/item/planks.json b/data/minecraft/tags/item/planks.json index a8ff5bb5..55fa6f30 100644 --- a/data/minecraft/tags/item/planks.json +++ b/data/minecraft/tags/item/planks.json @@ -6,6 +6,7 @@ "minecraft:jungle_planks", "minecraft:acacia_planks", "minecraft:dark_oak_planks", + "minecraft:pale_oak_planks", "minecraft:crimson_planks", "minecraft:warped_planks", "minecraft:mangrove_planks", diff --git a/data/minecraft/tags/item/saplings.json b/data/minecraft/tags/item/saplings.json index cebde163..286497bf 100644 --- a/data/minecraft/tags/item/saplings.json +++ b/data/minecraft/tags/item/saplings.json @@ -6,6 +6,7 @@ "minecraft:jungle_sapling", "minecraft:acacia_sapling", "minecraft:dark_oak_sapling", + "minecraft:pale_oak_sapling", "minecraft:azalea", "minecraft:flowering_azalea", "minecraft:mangrove_propagule", diff --git a/data/minecraft/tags/item/signs.json b/data/minecraft/tags/item/signs.json index 7b4ddb48..84fda375 100644 --- a/data/minecraft/tags/item/signs.json +++ b/data/minecraft/tags/item/signs.json @@ -6,6 +6,7 @@ "minecraft:acacia_sign", "minecraft:jungle_sign", "minecraft:dark_oak_sign", + "minecraft:pale_oak_sign", "minecraft:crimson_sign", "minecraft:warped_sign", "minecraft:mangrove_sign", diff --git a/data/minecraft/tags/item/skeleton_preferred_weapons.json b/data/minecraft/tags/item/skeleton_preferred_weapons.json new file mode 100644 index 00000000..a1c8a443 --- /dev/null +++ b/data/minecraft/tags/item/skeleton_preferred_weapons.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:bow" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/item/slabs.json b/data/minecraft/tags/item/slabs.json index 0f3f5aea..ebc3f8e1 100644 --- a/data/minecraft/tags/item/slabs.json +++ b/data/minecraft/tags/item/slabs.json @@ -49,6 +49,7 @@ "minecraft:mud_brick_slab", "minecraft:tuff_slab", "minecraft:polished_tuff_slab", - "minecraft:tuff_brick_slab" + "minecraft:tuff_brick_slab", + "minecraft:resin_brick_slab" ] } \ No newline at end of file diff --git a/data/minecraft/tags/item/small_flowers.json b/data/minecraft/tags/item/small_flowers.json index 2477625f..c77dca4b 100644 --- a/data/minecraft/tags/item/small_flowers.json +++ b/data/minecraft/tags/item/small_flowers.json @@ -1,6 +1,7 @@ { "values": [ "minecraft:dandelion", + "minecraft:open_eyeblossom", "minecraft:poppy", "minecraft:blue_orchid", "minecraft:allium", @@ -13,6 +14,7 @@ "minecraft:cornflower", "minecraft:lily_of_the_valley", "minecraft:wither_rose", - "minecraft:torchflower" + "minecraft:torchflower", + "minecraft:closed_eyeblossom" ] } \ No newline at end of file diff --git a/data/minecraft/tags/item/stairs.json b/data/minecraft/tags/item/stairs.json index eb67a9fe..fd135fc2 100644 --- a/data/minecraft/tags/item/stairs.json +++ b/data/minecraft/tags/item/stairs.json @@ -45,6 +45,7 @@ "minecraft:mud_brick_stairs", "minecraft:tuff_stairs", "minecraft:polished_tuff_stairs", - "minecraft:tuff_brick_stairs" + "minecraft:tuff_brick_stairs", + "minecraft:resin_brick_stairs" ] } \ No newline at end of file diff --git a/data/minecraft/tags/item/tall_flowers.json b/data/minecraft/tags/item/tall_flowers.json deleted file mode 100644 index 144eb89e..00000000 --- a/data/minecraft/tags/item/tall_flowers.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "values": [ - "minecraft:sunflower", - "minecraft:lilac", - "minecraft:peony", - "minecraft:rose_bush", - "minecraft:pitcher_plant" - ] -} \ No newline at end of file diff --git a/data/minecraft/tags/item/trim_materials.json b/data/minecraft/tags/item/trim_materials.json index d105d4f0..c2fc877c 100644 --- a/data/minecraft/tags/item/trim_materials.json +++ b/data/minecraft/tags/item/trim_materials.json @@ -1,14 +1,15 @@ { "values": [ - "minecraft:iron_ingot", + "minecraft:amethyst_shard", "minecraft:copper_ingot", - "minecraft:gold_ingot", - "minecraft:lapis_lazuli", - "minecraft:emerald", "minecraft:diamond", + "minecraft:emerald", + "minecraft:gold_ingot", + "minecraft:iron_ingot", + "minecraft:lapis_lazuli", "minecraft:netherite_ingot", - "minecraft:redstone", "minecraft:quartz", - "minecraft:amethyst_shard" + "minecraft:redstone", + "minecraft:resin_brick" ] } \ No newline at end of file diff --git a/data/minecraft/tags/item/trim_templates.json b/data/minecraft/tags/item/trim_templates.json deleted file mode 100644 index 360be130..00000000 --- a/data/minecraft/tags/item/trim_templates.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "values": [ - "minecraft:ward_armor_trim_smithing_template", - "minecraft:spire_armor_trim_smithing_template", - "minecraft:coast_armor_trim_smithing_template", - "minecraft:eye_armor_trim_smithing_template", - "minecraft:dune_armor_trim_smithing_template", - "minecraft:wild_armor_trim_smithing_template", - "minecraft:rib_armor_trim_smithing_template", - "minecraft:tide_armor_trim_smithing_template", - "minecraft:sentry_armor_trim_smithing_template", - "minecraft:vex_armor_trim_smithing_template", - "minecraft:snout_armor_trim_smithing_template", - "minecraft:wayfinder_armor_trim_smithing_template", - "minecraft:shaper_armor_trim_smithing_template", - "minecraft:silence_armor_trim_smithing_template", - "minecraft:raiser_armor_trim_smithing_template", - "minecraft:host_armor_trim_smithing_template", - "minecraft:flow_armor_trim_smithing_template", - "minecraft:bolt_armor_trim_smithing_template" - ] -} \ No newline at end of file diff --git a/data/minecraft/tags/item/walls.json b/data/minecraft/tags/item/walls.json index b4d42842..aa80022b 100644 --- a/data/minecraft/tags/item/walls.json +++ b/data/minecraft/tags/item/walls.json @@ -24,6 +24,7 @@ "minecraft:mud_brick_wall", "minecraft:tuff_wall", "minecraft:polished_tuff_wall", - "minecraft:tuff_brick_wall" + "minecraft:tuff_brick_wall", + "minecraft:resin_brick_wall" ] } \ No newline at end of file diff --git a/data/minecraft/tags/item/wither_skeleton_disliked_weapons.json b/data/minecraft/tags/item/wither_skeleton_disliked_weapons.json new file mode 100644 index 00000000..0783487a --- /dev/null +++ b/data/minecraft/tags/item/wither_skeleton_disliked_weapons.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:bow", + "minecraft:crossbow" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/item/wooden_buttons.json b/data/minecraft/tags/item/wooden_buttons.json index fe5e0572..f6646d7d 100644 --- a/data/minecraft/tags/item/wooden_buttons.json +++ b/data/minecraft/tags/item/wooden_buttons.json @@ -6,6 +6,7 @@ "minecraft:jungle_button", "minecraft:acacia_button", "minecraft:dark_oak_button", + "minecraft:pale_oak_button", "minecraft:crimson_button", "minecraft:warped_button", "minecraft:mangrove_button", diff --git a/data/minecraft/tags/item/wooden_doors.json b/data/minecraft/tags/item/wooden_doors.json index 5c9de920..be8b7def 100644 --- a/data/minecraft/tags/item/wooden_doors.json +++ b/data/minecraft/tags/item/wooden_doors.json @@ -6,6 +6,7 @@ "minecraft:jungle_door", "minecraft:acacia_door", "minecraft:dark_oak_door", + "minecraft:pale_oak_door", "minecraft:crimson_door", "minecraft:warped_door", "minecraft:mangrove_door", diff --git a/data/minecraft/tags/item/wooden_fences.json b/data/minecraft/tags/item/wooden_fences.json index cecdd724..dc051583 100644 --- a/data/minecraft/tags/item/wooden_fences.json +++ b/data/minecraft/tags/item/wooden_fences.json @@ -3,6 +3,7 @@ "minecraft:oak_fence", "minecraft:acacia_fence", "minecraft:dark_oak_fence", + "minecraft:pale_oak_fence", "minecraft:spruce_fence", "minecraft:birch_fence", "minecraft:jungle_fence", diff --git a/data/minecraft/tags/item/wooden_pressure_plates.json b/data/minecraft/tags/item/wooden_pressure_plates.json index 79558b92..008f0063 100644 --- a/data/minecraft/tags/item/wooden_pressure_plates.json +++ b/data/minecraft/tags/item/wooden_pressure_plates.json @@ -6,6 +6,7 @@ "minecraft:jungle_pressure_plate", "minecraft:acacia_pressure_plate", "minecraft:dark_oak_pressure_plate", + "minecraft:pale_oak_pressure_plate", "minecraft:crimson_pressure_plate", "minecraft:warped_pressure_plate", "minecraft:mangrove_pressure_plate", diff --git a/data/minecraft/tags/item/wooden_slabs.json b/data/minecraft/tags/item/wooden_slabs.json index be1fba2b..795bd3b7 100644 --- a/data/minecraft/tags/item/wooden_slabs.json +++ b/data/minecraft/tags/item/wooden_slabs.json @@ -6,6 +6,7 @@ "minecraft:jungle_slab", "minecraft:acacia_slab", "minecraft:dark_oak_slab", + "minecraft:pale_oak_slab", "minecraft:crimson_slab", "minecraft:warped_slab", "minecraft:mangrove_slab", diff --git a/data/minecraft/tags/item/wooden_stairs.json b/data/minecraft/tags/item/wooden_stairs.json index 7561537f..86239e4c 100644 --- a/data/minecraft/tags/item/wooden_stairs.json +++ b/data/minecraft/tags/item/wooden_stairs.json @@ -6,6 +6,7 @@ "minecraft:jungle_stairs", "minecraft:acacia_stairs", "minecraft:dark_oak_stairs", + "minecraft:pale_oak_stairs", "minecraft:crimson_stairs", "minecraft:warped_stairs", "minecraft:mangrove_stairs", diff --git a/data/minecraft/tags/item/wooden_trapdoors.json b/data/minecraft/tags/item/wooden_trapdoors.json index 8e93dc6d..050e05f7 100644 --- a/data/minecraft/tags/item/wooden_trapdoors.json +++ b/data/minecraft/tags/item/wooden_trapdoors.json @@ -3,6 +3,7 @@ "minecraft:acacia_trapdoor", "minecraft:birch_trapdoor", "minecraft:dark_oak_trapdoor", + "minecraft:pale_oak_trapdoor", "minecraft:jungle_trapdoor", "minecraft:oak_trapdoor", "minecraft:spruce_trapdoor", diff --git a/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json b/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json index 960b9815..51f2b8c0 100644 --- a/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json +++ b/data/minecraft/tags/worldgen/biome/has_structure/trial_chambers.json @@ -49,6 +49,7 @@ "minecraft:eroded_badlands", "minecraft:windswept_savanna", "minecraft:cherry_grove", + "minecraft:pale_garden", "minecraft:frozen_peaks", "minecraft:dripstone_caves", "minecraft:lush_caves" diff --git a/data/minecraft/tags/worldgen/biome/is_forest.json b/data/minecraft/tags/worldgen/biome/is_forest.json index 10d6d89e..bcd87f0b 100644 --- a/data/minecraft/tags/worldgen/biome/is_forest.json +++ b/data/minecraft/tags/worldgen/biome/is_forest.json @@ -5,6 +5,7 @@ "minecraft:birch_forest", "minecraft:old_growth_birch_forest", "minecraft:dark_forest", + "minecraft:pale_garden", "minecraft:grove" ] } \ No newline at end of file diff --git a/data/minecraft/tags/worldgen/biome/is_overworld.json b/data/minecraft/tags/worldgen/biome/is_overworld.json index caf0b878..133f965a 100644 --- a/data/minecraft/tags/worldgen/biome/is_overworld.json +++ b/data/minecraft/tags/worldgen/biome/is_overworld.json @@ -49,6 +49,7 @@ "minecraft:eroded_badlands", "minecraft:windswept_savanna", "minecraft:cherry_grove", + "minecraft:pale_garden", "minecraft:frozen_peaks", "minecraft:dripstone_caves", "minecraft:lush_caves", diff --git a/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json b/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json index 124112fc..40421c6f 100644 --- a/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json +++ b/data/minecraft/tags/worldgen/biome/stronghold_biased_to.json @@ -9,6 +9,7 @@ "minecraft:flower_forest", "minecraft:birch_forest", "minecraft:dark_forest", + "minecraft:pale_garden", "minecraft:old_growth_birch_forest", "minecraft:old_growth_pine_taiga", "minecraft:old_growth_spruce_taiga", diff --git a/data/minecraft/trim_material/amethyst.json b/data/minecraft/trim_material/amethyst.json index 85945cbd..f751eb3f 100644 --- a/data/minecraft/trim_material/amethyst.json +++ b/data/minecraft/trim_material/amethyst.json @@ -4,6 +4,5 @@ "color": "#9A5CC6", "translate": "trim_material.minecraft.amethyst" }, - "ingredient": "minecraft:amethyst_shard", - "item_model_index": 1.0 + "ingredient": "minecraft:amethyst_shard" } \ No newline at end of file diff --git a/data/minecraft/trim_material/copper.json b/data/minecraft/trim_material/copper.json index a014bf74..cced560f 100644 --- a/data/minecraft/trim_material/copper.json +++ b/data/minecraft/trim_material/copper.json @@ -4,6 +4,5 @@ "color": "#B4684D", "translate": "trim_material.minecraft.copper" }, - "ingredient": "minecraft:copper_ingot", - "item_model_index": 0.5 + "ingredient": "minecraft:copper_ingot" } \ No newline at end of file diff --git a/data/minecraft/trim_material/diamond.json b/data/minecraft/trim_material/diamond.json index 21b27e99..3b03942c 100644 --- a/data/minecraft/trim_material/diamond.json +++ b/data/minecraft/trim_material/diamond.json @@ -5,8 +5,7 @@ "translate": "trim_material.minecraft.diamond" }, "ingredient": "minecraft:diamond", - "item_model_index": 0.8, - "override_armor_materials": { + "override_armor_assets": { "minecraft:diamond": "diamond_darker" } } \ No newline at end of file diff --git a/data/minecraft/trim_material/emerald.json b/data/minecraft/trim_material/emerald.json index 5776f6c2..989d975b 100644 --- a/data/minecraft/trim_material/emerald.json +++ b/data/minecraft/trim_material/emerald.json @@ -4,6 +4,5 @@ "color": "#11A036", "translate": "trim_material.minecraft.emerald" }, - "ingredient": "minecraft:emerald", - "item_model_index": 0.7 + "ingredient": "minecraft:emerald" } \ No newline at end of file diff --git a/data/minecraft/trim_material/gold.json b/data/minecraft/trim_material/gold.json index 195e14f2..e3c80fba 100644 --- a/data/minecraft/trim_material/gold.json +++ b/data/minecraft/trim_material/gold.json @@ -5,8 +5,7 @@ "translate": "trim_material.minecraft.gold" }, "ingredient": "minecraft:gold_ingot", - "item_model_index": 0.6, - "override_armor_materials": { + "override_armor_assets": { "minecraft:gold": "gold_darker" } } \ No newline at end of file diff --git a/data/minecraft/trim_material/iron.json b/data/minecraft/trim_material/iron.json index 69ba5ec1..cec858a5 100644 --- a/data/minecraft/trim_material/iron.json +++ b/data/minecraft/trim_material/iron.json @@ -5,8 +5,7 @@ "translate": "trim_material.minecraft.iron" }, "ingredient": "minecraft:iron_ingot", - "item_model_index": 0.2, - "override_armor_materials": { + "override_armor_assets": { "minecraft:iron": "iron_darker" } } \ No newline at end of file diff --git a/data/minecraft/trim_material/lapis.json b/data/minecraft/trim_material/lapis.json index eb31702d..ba6829b2 100644 --- a/data/minecraft/trim_material/lapis.json +++ b/data/minecraft/trim_material/lapis.json @@ -4,6 +4,5 @@ "color": "#416E97", "translate": "trim_material.minecraft.lapis" }, - "ingredient": "minecraft:lapis_lazuli", - "item_model_index": 0.9 + "ingredient": "minecraft:lapis_lazuli" } \ No newline at end of file diff --git a/data/minecraft/trim_material/netherite.json b/data/minecraft/trim_material/netherite.json index 6cdd97a6..ae517ac4 100644 --- a/data/minecraft/trim_material/netherite.json +++ b/data/minecraft/trim_material/netherite.json @@ -5,8 +5,7 @@ "translate": "trim_material.minecraft.netherite" }, "ingredient": "minecraft:netherite_ingot", - "item_model_index": 0.3, - "override_armor_materials": { + "override_armor_assets": { "minecraft:netherite": "netherite_darker" } } \ No newline at end of file diff --git a/data/minecraft/trim_material/quartz.json b/data/minecraft/trim_material/quartz.json index 7600a105..52237b16 100644 --- a/data/minecraft/trim_material/quartz.json +++ b/data/minecraft/trim_material/quartz.json @@ -4,6 +4,5 @@ "color": "#E3D4C4", "translate": "trim_material.minecraft.quartz" }, - "ingredient": "minecraft:quartz", - "item_model_index": 0.1 + "ingredient": "minecraft:quartz" } \ No newline at end of file diff --git a/data/minecraft/trim_material/redstone.json b/data/minecraft/trim_material/redstone.json index 797bd0cd..23a3ee57 100644 --- a/data/minecraft/trim_material/redstone.json +++ b/data/minecraft/trim_material/redstone.json @@ -4,6 +4,5 @@ "color": "#971607", "translate": "trim_material.minecraft.redstone" }, - "ingredient": "minecraft:redstone", - "item_model_index": 0.4 + "ingredient": "minecraft:redstone" } \ No newline at end of file diff --git a/data/minecraft/trim_material/resin.json b/data/minecraft/trim_material/resin.json new file mode 100644 index 00000000..3c6851a4 --- /dev/null +++ b/data/minecraft/trim_material/resin.json @@ -0,0 +1,8 @@ +{ + "asset_name": "resin", + "description": { + "color": "#FC7812", + "translate": "trim_material.minecraft.resin" + }, + "ingredient": "minecraft:resin_brick" +} \ No newline at end of file diff --git a/data/minecraft/worldgen/biome/badlands.json b/data/minecraft/worldgen/biome/badlands.json index 910c3af3..68fe2473 100644 --- a/data/minecraft/worldgen/biome/badlands.json +++ b/data/minecraft/worldgen/biome/badlands.json @@ -16,12 +16,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.badlands" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.badlands" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/bamboo_jungle.json b/data/minecraft/worldgen/biome/bamboo_jungle.json index 67f8168a..a0df35fa 100644 --- a/data/minecraft/worldgen/biome/bamboo_jungle.json +++ b/data/minecraft/worldgen/biome/bamboo_jungle.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.bamboo_jungle" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.bamboo_jungle" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7842047, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/basalt_deltas.json b/data/minecraft/worldgen/biome/basalt_deltas.json index e73087b0..e3571a1c 100644 --- a/data/minecraft/worldgen/biome/basalt_deltas.json +++ b/data/minecraft/worldgen/biome/basalt_deltas.json @@ -14,12 +14,18 @@ "sound": "minecraft:ambient.basalt_deltas.mood", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.nether.basalt_deltas" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.nether.basalt_deltas" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "particle": { "options": { "type": "minecraft:white_ash" diff --git a/data/minecraft/worldgen/biome/beach.json b/data/minecraft/worldgen/biome/beach.json index 9d426677..8146697d 100644 --- a/data/minecraft/worldgen/biome/beach.json +++ b/data/minecraft/worldgen/biome/beach.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7907327, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/birch_forest.json b/data/minecraft/worldgen/biome/birch_forest.json index f733f137..2dfdd62b 100644 --- a/data/minecraft/worldgen/biome/birch_forest.json +++ b/data/minecraft/worldgen/biome/birch_forest.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8037887, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/cherry_grove.json b/data/minecraft/worldgen/biome/cherry_grove.json index 649251d1..fd62577f 100644 --- a/data/minecraft/worldgen/biome/cherry_grove.json +++ b/data/minecraft/worldgen/biome/cherry_grove.json @@ -15,12 +15,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.cherry_grove" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.cherry_grove" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8103167, "water_color": 6141935, "water_fog_color": 6141935 diff --git a/data/minecraft/worldgen/biome/cold_ocean.json b/data/minecraft/worldgen/biome/cold_ocean.json index 03c21cf3..ef30c579 100644 --- a/data/minecraft/worldgen/biome/cold_ocean.json +++ b/data/minecraft/worldgen/biome/cold_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4020182, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/crimson_forest.json b/data/minecraft/worldgen/biome/crimson_forest.json index 6ee72b45..57cff15d 100644 --- a/data/minecraft/worldgen/biome/crimson_forest.json +++ b/data/minecraft/worldgen/biome/crimson_forest.json @@ -14,12 +14,18 @@ "sound": "minecraft:ambient.crimson_forest.mood", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.nether.crimson_forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.nether.crimson_forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "particle": { "options": { "type": "minecraft:crimson_spore" diff --git a/data/minecraft/worldgen/biome/dark_forest.json b/data/minecraft/worldgen/biome/dark_forest.json index 51a8b331..9096e3bf 100644 --- a/data/minecraft/worldgen/biome/dark_forest.json +++ b/data/minecraft/worldgen/biome/dark_forest.json @@ -14,12 +14,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7972607, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/deep_cold_ocean.json b/data/minecraft/worldgen/biome/deep_cold_ocean.json index 62fa3cea..c26e48f8 100644 --- a/data/minecraft/worldgen/biome/deep_cold_ocean.json +++ b/data/minecraft/worldgen/biome/deep_cold_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4020182, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/deep_dark.json b/data/minecraft/worldgen/biome/deep_dark.json index ede56265..0bffad77 100644 --- a/data/minecraft/worldgen/biome/deep_dark.json +++ b/data/minecraft/worldgen/biome/deep_dark.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.deep_dark" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.deep_dark" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7907327, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/deep_frozen_ocean.json b/data/minecraft/worldgen/biome/deep_frozen_ocean.json index 5f7894b9..8e834edf 100644 --- a/data/minecraft/worldgen/biome/deep_frozen_ocean.json +++ b/data/minecraft/worldgen/biome/deep_frozen_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 3750089, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/deep_lukewarm_ocean.json b/data/minecraft/worldgen/biome/deep_lukewarm_ocean.json index 8e476c1e..55caa339 100644 --- a/data/minecraft/worldgen/biome/deep_lukewarm_ocean.json +++ b/data/minecraft/worldgen/biome/deep_lukewarm_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4566514, "water_fog_color": 267827 diff --git a/data/minecraft/worldgen/biome/deep_ocean.json b/data/minecraft/worldgen/biome/deep_ocean.json index aa977575..7f964ef6 100644 --- a/data/minecraft/worldgen/biome/deep_ocean.json +++ b/data/minecraft/worldgen/biome/deep_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/desert.json b/data/minecraft/worldgen/biome/desert.json index 2e8eaa08..9f4c9f62 100644 --- a/data/minecraft/worldgen/biome/desert.json +++ b/data/minecraft/worldgen/biome/desert.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.desert" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.desert" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/dripstone_caves.json b/data/minecraft/worldgen/biome/dripstone_caves.json index a314172f..9a9b2093 100644 --- a/data/minecraft/worldgen/biome/dripstone_caves.json +++ b/data/minecraft/worldgen/biome/dripstone_caves.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.dripstone_caves" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.dripstone_caves" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7907327, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/end_barrens.json b/data/minecraft/worldgen/biome/end_barrens.json index 06dc9809..e3e7b7ee 100644 --- a/data/minecraft/worldgen/biome/end_barrens.json +++ b/data/minecraft/worldgen/biome/end_barrens.json @@ -9,6 +9,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 0, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/end_highlands.json b/data/minecraft/worldgen/biome/end_highlands.json index 9f326274..87c800cc 100644 --- a/data/minecraft/worldgen/biome/end_highlands.json +++ b/data/minecraft/worldgen/biome/end_highlands.json @@ -9,6 +9,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 0, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/end_midlands.json b/data/minecraft/worldgen/biome/end_midlands.json index 06dc9809..e3e7b7ee 100644 --- a/data/minecraft/worldgen/biome/end_midlands.json +++ b/data/minecraft/worldgen/biome/end_midlands.json @@ -9,6 +9,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 0, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/eroded_badlands.json b/data/minecraft/worldgen/biome/eroded_badlands.json index 910c3af3..68fe2473 100644 --- a/data/minecraft/worldgen/biome/eroded_badlands.json +++ b/data/minecraft/worldgen/biome/eroded_badlands.json @@ -16,12 +16,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.badlands" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.badlands" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/flower_forest.json b/data/minecraft/worldgen/biome/flower_forest.json index 785bd11d..2eea7114 100644 --- a/data/minecraft/worldgen/biome/flower_forest.json +++ b/data/minecraft/worldgen/biome/flower_forest.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.flower_forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.flower_forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7972607, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/forest.json b/data/minecraft/worldgen/biome/forest.json index 3ab14a6a..8922b7ab 100644 --- a/data/minecraft/worldgen/biome/forest.json +++ b/data/minecraft/worldgen/biome/forest.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7972607, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/frozen_ocean.json b/data/minecraft/worldgen/biome/frozen_ocean.json index cf476e5e..2f8fa124 100644 --- a/data/minecraft/worldgen/biome/frozen_ocean.json +++ b/data/minecraft/worldgen/biome/frozen_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8364543, "water_color": 3750089, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/frozen_peaks.json b/data/minecraft/worldgen/biome/frozen_peaks.json index c90f1926..e192a597 100644 --- a/data/minecraft/worldgen/biome/frozen_peaks.json +++ b/data/minecraft/worldgen/biome/frozen_peaks.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.frozen_peaks" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.frozen_peaks" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8756735, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/frozen_river.json b/data/minecraft/worldgen/biome/frozen_river.json index aa571080..6ce80510 100644 --- a/data/minecraft/worldgen/biome/frozen_river.json +++ b/data/minecraft/worldgen/biome/frozen_river.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8364543, "water_color": 3750089, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/grove.json b/data/minecraft/worldgen/biome/grove.json index f6c2c49b..459e9ca1 100644 --- a/data/minecraft/worldgen/biome/grove.json +++ b/data/minecraft/worldgen/biome/grove.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.grove" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.grove" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8495359, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/ice_spikes.json b/data/minecraft/worldgen/biome/ice_spikes.json index a67947e6..0b87fb4a 100644 --- a/data/minecraft/worldgen/biome/ice_spikes.json +++ b/data/minecraft/worldgen/biome/ice_spikes.json @@ -14,6 +14,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8364543, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/jagged_peaks.json b/data/minecraft/worldgen/biome/jagged_peaks.json index 9628eb1a..b7ca0093 100644 --- a/data/minecraft/worldgen/biome/jagged_peaks.json +++ b/data/minecraft/worldgen/biome/jagged_peaks.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.jagged_peaks" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.jagged_peaks" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8756735, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/jungle.json b/data/minecraft/worldgen/biome/jungle.json index 64360910..61850c66 100644 --- a/data/minecraft/worldgen/biome/jungle.json +++ b/data/minecraft/worldgen/biome/jungle.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.jungle" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.jungle" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7842047, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/lukewarm_ocean.json b/data/minecraft/worldgen/biome/lukewarm_ocean.json index adc1e79b..0a79ab2f 100644 --- a/data/minecraft/worldgen/biome/lukewarm_ocean.json +++ b/data/minecraft/worldgen/biome/lukewarm_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4566514, "water_fog_color": 267827 diff --git a/data/minecraft/worldgen/biome/lush_caves.json b/data/minecraft/worldgen/biome/lush_caves.json index 4a3875c5..a35df300 100644 --- a/data/minecraft/worldgen/biome/lush_caves.json +++ b/data/minecraft/worldgen/biome/lush_caves.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.lush_caves" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.lush_caves" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/mangrove_swamp.json b/data/minecraft/worldgen/biome/mangrove_swamp.json index cbf0f6c2..7bd60980 100644 --- a/data/minecraft/worldgen/biome/mangrove_swamp.json +++ b/data/minecraft/worldgen/biome/mangrove_swamp.json @@ -15,12 +15,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.swamp" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.swamp" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7907327, "water_color": 3832426, "water_fog_color": 5077600 diff --git a/data/minecraft/worldgen/biome/meadow.json b/data/minecraft/worldgen/biome/meadow.json index 818a2df6..393849cf 100644 --- a/data/minecraft/worldgen/biome/meadow.json +++ b/data/minecraft/worldgen/biome/meadow.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.meadow" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.meadow" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8103167, "water_color": 937679, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/mushroom_fields.json b/data/minecraft/worldgen/biome/mushroom_fields.json index 75943d09..af257808 100644 --- a/data/minecraft/worldgen/biome/mushroom_fields.json +++ b/data/minecraft/worldgen/biome/mushroom_fields.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7842047, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/nether_wastes.json b/data/minecraft/worldgen/biome/nether_wastes.json index 31572625..c91ce401 100644 --- a/data/minecraft/worldgen/biome/nether_wastes.json +++ b/data/minecraft/worldgen/biome/nether_wastes.json @@ -14,12 +14,18 @@ "sound": "minecraft:ambient.nether_wastes.mood", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.nether.nether_wastes" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.nether.nether_wastes" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/ocean.json b/data/minecraft/worldgen/biome/ocean.json index 26ca1b73..93740259 100644 --- a/data/minecraft/worldgen/biome/ocean.json +++ b/data/minecraft/worldgen/biome/ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/old_growth_birch_forest.json b/data/minecraft/worldgen/biome/old_growth_birch_forest.json index ea998ab3..33e51ae0 100644 --- a/data/minecraft/worldgen/biome/old_growth_birch_forest.json +++ b/data/minecraft/worldgen/biome/old_growth_birch_forest.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8037887, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/old_growth_pine_taiga.json b/data/minecraft/worldgen/biome/old_growth_pine_taiga.json index b46f36e6..9c885581 100644 --- a/data/minecraft/worldgen/biome/old_growth_pine_taiga.json +++ b/data/minecraft/worldgen/biome/old_growth_pine_taiga.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.old_growth_taiga" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.old_growth_taiga" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8168447, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/old_growth_spruce_taiga.json b/data/minecraft/worldgen/biome/old_growth_spruce_taiga.json index 890145e7..59752b9e 100644 --- a/data/minecraft/worldgen/biome/old_growth_spruce_taiga.json +++ b/data/minecraft/worldgen/biome/old_growth_spruce_taiga.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.old_growth_taiga" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.old_growth_taiga" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8233983, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/biome/pale_garden.json b/data/minecraft/worldgen/biome/pale_garden.json similarity index 95% rename from data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/biome/pale_garden.json rename to data/minecraft/worldgen/biome/pale_garden.json index 1aa58bdc..d46ba10d 100644 --- a/data/minecraft/datapacks/winter_drop/data/minecraft/worldgen/biome/pale_garden.json +++ b/data/minecraft/worldgen/biome/pale_garden.json @@ -15,12 +15,8 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.forest" - }, + "music": [], + "music_volume": 0.0, "sky_color": 12171705, "water_color": 7768221, "water_fog_color": 5597568 @@ -79,6 +75,9 @@ [ "minecraft:glow_lichen", "minecraft:pale_garden_vegetation", + "minecraft:pale_moss_patch", + "minecraft:pale_garden_flowers", + "minecraft:flower_pale_garden", "minecraft:patch_grass_forest", "minecraft:patch_sugar_cane", "minecraft:patch_pumpkin" diff --git a/data/minecraft/worldgen/biome/plains.json b/data/minecraft/worldgen/biome/plains.json index 55e186a7..41249530 100644 --- a/data/minecraft/worldgen/biome/plains.json +++ b/data/minecraft/worldgen/biome/plains.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7907327, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/river.json b/data/minecraft/worldgen/biome/river.json index 71ab8f27..834c5e16 100644 --- a/data/minecraft/worldgen/biome/river.json +++ b/data/minecraft/worldgen/biome/river.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/savanna.json b/data/minecraft/worldgen/biome/savanna.json index d2b5a1cb..c0865011 100644 --- a/data/minecraft/worldgen/biome/savanna.json +++ b/data/minecraft/worldgen/biome/savanna.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/savanna_plateau.json b/data/minecraft/worldgen/biome/savanna_plateau.json index 1fd89b88..c776c779 100644 --- a/data/minecraft/worldgen/biome/savanna_plateau.json +++ b/data/minecraft/worldgen/biome/savanna_plateau.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/small_end_islands.json b/data/minecraft/worldgen/biome/small_end_islands.json index fca51ade..13029b49 100644 --- a/data/minecraft/worldgen/biome/small_end_islands.json +++ b/data/minecraft/worldgen/biome/small_end_islands.json @@ -9,6 +9,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 0, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/snowy_beach.json b/data/minecraft/worldgen/biome/snowy_beach.json index 134689df..c5d81fea 100644 --- a/data/minecraft/worldgen/biome/snowy_beach.json +++ b/data/minecraft/worldgen/biome/snowy_beach.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8364543, "water_color": 4020182, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/snowy_plains.json b/data/minecraft/worldgen/biome/snowy_plains.json index 8f009acf..489a061e 100644 --- a/data/minecraft/worldgen/biome/snowy_plains.json +++ b/data/minecraft/worldgen/biome/snowy_plains.json @@ -14,6 +14,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8364543, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/snowy_slopes.json b/data/minecraft/worldgen/biome/snowy_slopes.json index 4a4e75e4..df845d75 100644 --- a/data/minecraft/worldgen/biome/snowy_slopes.json +++ b/data/minecraft/worldgen/biome/snowy_slopes.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.snowy_slopes" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.snowy_slopes" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 8560639, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/snowy_taiga.json b/data/minecraft/worldgen/biome/snowy_taiga.json index baedf4ca..2fe871e8 100644 --- a/data/minecraft/worldgen/biome/snowy_taiga.json +++ b/data/minecraft/worldgen/biome/snowy_taiga.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8625919, "water_color": 4020182, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/soul_sand_valley.json b/data/minecraft/worldgen/biome/soul_sand_valley.json index 5bdb7227..3ae968fb 100644 --- a/data/minecraft/worldgen/biome/soul_sand_valley.json +++ b/data/minecraft/worldgen/biome/soul_sand_valley.json @@ -14,12 +14,18 @@ "sound": "minecraft:ambient.soul_sand_valley.mood", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.nether.soul_sand_valley" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.nether.soul_sand_valley" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "particle": { "options": { "type": "minecraft:ash" diff --git a/data/minecraft/worldgen/biome/sparse_jungle.json b/data/minecraft/worldgen/biome/sparse_jungle.json index c7a88d43..8ca6b210 100644 --- a/data/minecraft/worldgen/biome/sparse_jungle.json +++ b/data/minecraft/worldgen/biome/sparse_jungle.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.sparse_jungle" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.sparse_jungle" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7842047, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/stony_peaks.json b/data/minecraft/worldgen/biome/stony_peaks.json index 4ae7dcae..1312d6b4 100644 --- a/data/minecraft/worldgen/biome/stony_peaks.json +++ b/data/minecraft/worldgen/biome/stony_peaks.json @@ -13,12 +13,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.stony_peaks" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.stony_peaks" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7776511, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/stony_shore.json b/data/minecraft/worldgen/biome/stony_shore.json index 0e9b0862..1637f0f4 100644 --- a/data/minecraft/worldgen/biome/stony_shore.json +++ b/data/minecraft/worldgen/biome/stony_shore.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8233727, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/sunflower_plains.json b/data/minecraft/worldgen/biome/sunflower_plains.json index 3a1a8bd7..78ab660d 100644 --- a/data/minecraft/worldgen/biome/sunflower_plains.json +++ b/data/minecraft/worldgen/biome/sunflower_plains.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7907327, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/swamp.json b/data/minecraft/worldgen/biome/swamp.json index 7b3b9321..c0a03d9d 100644 --- a/data/minecraft/worldgen/biome/swamp.json +++ b/data/minecraft/worldgen/biome/swamp.json @@ -15,12 +15,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.swamp" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.swamp" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7907327, "water_color": 6388580, "water_fog_color": 2302743 diff --git a/data/minecraft/worldgen/biome/taiga.json b/data/minecraft/worldgen/biome/taiga.json index ebbb1ba1..b5318709 100644 --- a/data/minecraft/worldgen/biome/taiga.json +++ b/data/minecraft/worldgen/biome/taiga.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8233983, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/the_end.json b/data/minecraft/worldgen/biome/the_end.json index 58085833..4a26b4e6 100644 --- a/data/minecraft/worldgen/biome/the_end.json +++ b/data/minecraft/worldgen/biome/the_end.json @@ -9,6 +9,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 0, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/the_void.json b/data/minecraft/worldgen/biome/the_void.json index 1fd87f5e..a83c8cd7 100644 --- a/data/minecraft/worldgen/biome/the_void.json +++ b/data/minecraft/worldgen/biome/the_void.json @@ -9,6 +9,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/warm_ocean.json b/data/minecraft/worldgen/biome/warm_ocean.json index a2d17353..50aba537 100644 --- a/data/minecraft/worldgen/biome/warm_ocean.json +++ b/data/minecraft/worldgen/biome/warm_ocean.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8103167, "water_color": 4445678, "water_fog_color": 270131 diff --git a/data/minecraft/worldgen/biome/warped_forest.json b/data/minecraft/worldgen/biome/warped_forest.json index c040ec34..cd258a14 100644 --- a/data/minecraft/worldgen/biome/warped_forest.json +++ b/data/minecraft/worldgen/biome/warped_forest.json @@ -14,12 +14,18 @@ "sound": "minecraft:ambient.warped_forest.mood", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.nether.warped_forest" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.nether.warped_forest" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "particle": { "options": { "type": "minecraft:warped_spore" diff --git a/data/minecraft/worldgen/biome/windswept_forest.json b/data/minecraft/worldgen/biome/windswept_forest.json index 79df5cd2..c94e221f 100644 --- a/data/minecraft/worldgen/biome/windswept_forest.json +++ b/data/minecraft/worldgen/biome/windswept_forest.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8233727, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/windswept_gravelly_hills.json b/data/minecraft/worldgen/biome/windswept_gravelly_hills.json index 504f3ca9..6277321f 100644 --- a/data/minecraft/worldgen/biome/windswept_gravelly_hills.json +++ b/data/minecraft/worldgen/biome/windswept_gravelly_hills.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8233727, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/windswept_hills.json b/data/minecraft/worldgen/biome/windswept_hills.json index 504f3ca9..6277321f 100644 --- a/data/minecraft/worldgen/biome/windswept_hills.json +++ b/data/minecraft/worldgen/biome/windswept_hills.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 8233727, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/windswept_savanna.json b/data/minecraft/worldgen/biome/windswept_savanna.json index caad9671..b6a6b1db 100644 --- a/data/minecraft/worldgen/biome/windswept_savanna.json +++ b/data/minecraft/worldgen/biome/windswept_savanna.json @@ -13,6 +13,7 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/biome/wooded_badlands.json b/data/minecraft/worldgen/biome/wooded_badlands.json index 52f7fc2b..e22ccb1b 100644 --- a/data/minecraft/worldgen/biome/wooded_badlands.json +++ b/data/minecraft/worldgen/biome/wooded_badlands.json @@ -16,12 +16,18 @@ "sound": "minecraft:ambient.cave", "tick_delay": 6000 }, - "music": { - "max_delay": 24000, - "min_delay": 12000, - "replace_current_music": false, - "sound": "minecraft:music.overworld.badlands" - }, + "music": [ + { + "data": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "minecraft:music.overworld.badlands" + }, + "weight": 1 + } + ], + "music_volume": 1.0, "sky_color": 7254527, "water_color": 4159204, "water_fog_color": 329011 diff --git a/data/minecraft/worldgen/configured_feature/flower_pale_garden.json b/data/minecraft/worldgen/configured_feature/flower_pale_garden.json new file mode 100644 index 00000000..fdb69482 --- /dev/null +++ b/data/minecraft/worldgen/configured_feature/flower_pale_garden.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:flower", + "config": { + "feature": { + "feature": { + "type": "minecraft:simple_block", + "config": { + "schedule_tick": true, + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:closed_eyeblossom" + } + } + } + }, + "placement": [ + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + } + } + ] + }, + "tries": 1, + "xz_spread": 0, + "y_spread": 0 + } +} \ No newline at end of file diff --git a/data/minecraft/worldgen/configured_feature/pale_forest_flowers.json b/data/minecraft/worldgen/configured_feature/pale_forest_flowers.json new file mode 100644 index 00000000..b73da488 --- /dev/null +++ b/data/minecraft/worldgen/configured_feature/pale_forest_flowers.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:random_patch", + "config": { + "feature": { + "feature": { + "type": "minecraft:simple_block", + "config": { + "schedule_tick": true, + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:closed_eyeblossom" + } + } + } + }, + "placement": [ + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + } + } + ] + }, + "tries": 96, + "xz_spread": 7, + "y_spread": 3 + } +} \ No newline at end of file diff --git a/data/minecraft/worldgen/configured_feature/pale_garden_vegetation.json b/data/minecraft/worldgen/configured_feature/pale_garden_vegetation.json index 8bb4b6f2..d0d5fb36 100644 --- a/data/minecraft/worldgen/configured_feature/pale_garden_vegetation.json +++ b/data/minecraft/worldgen/configured_feature/pale_garden_vegetation.json @@ -4,11 +4,11 @@ "default": "minecraft:pale_oak_checked", "features": [ { - "chance": 0.2, + "chance": 0.1, "feature": "minecraft:pale_oak_creaking_checked" }, { - "chance": 0.8, + "chance": 0.9, "feature": "minecraft:pale_oak_checked" } ] diff --git a/data/minecraft/worldgen/configured_feature/pale_moss_patch.json b/data/minecraft/worldgen/configured_feature/pale_moss_patch.json new file mode 100644 index 00000000..ed4aea4c --- /dev/null +++ b/data/minecraft/worldgen/configured_feature/pale_moss_patch.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:vegetation_patch", + "config": { + "depth": 1, + "extra_bottom_block_chance": 0.0, + "extra_edge_column_chance": 0.75, + "ground_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:pale_moss_block" + } + }, + "replaceable": "#minecraft:moss_replaceable", + "surface": "floor", + "vegetation_chance": 0.3, + "vegetation_feature": { + "feature": "minecraft:pale_moss_vegetation", + "placement": [] + }, + "vertical_range": 5, + "xz_radius": { + "type": "minecraft:uniform", + "max_inclusive": 4, + "min_inclusive": 2 + } + } +} \ No newline at end of file diff --git a/data/minecraft/worldgen/configured_feature/pale_moss_vegetation.json b/data/minecraft/worldgen/configured_feature/pale_moss_vegetation.json index 2a23ec54..31c8110c 100644 --- a/data/minecraft/worldgen/configured_feature/pale_moss_vegetation.json +++ b/data/minecraft/worldgen/configured_feature/pale_moss_vegetation.json @@ -21,7 +21,7 @@ "data": { "Name": "minecraft:short_grass" }, - "weight": 50 + "weight": 25 }, { "data": { diff --git a/data/minecraft/worldgen/configured_feature/pale_oak_bonemeal.json b/data/minecraft/worldgen/configured_feature/pale_oak_bonemeal.json new file mode 100644 index 00000000..317d7b73 --- /dev/null +++ b/data/minecraft/worldgen/configured_feature/pale_oak_bonemeal.json @@ -0,0 +1,53 @@ +{ + "type": "minecraft:tree", + "config": { + "decorators": [], + "dirt_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:dirt" + } + }, + "foliage_placer": { + "type": "minecraft:dark_oak_foliage_placer", + "offset": 0, + "radius": 0 + }, + "foliage_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:pale_oak_leaves", + "Properties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + } + } + }, + "force_dirt": false, + "ignore_vines": true, + "minimum_size": { + "type": "minecraft:three_layers_feature_size", + "limit": 1, + "lower_size": 0, + "middle_size": 1, + "upper_limit": 1, + "upper_size": 2 + }, + "trunk_placer": { + "type": "minecraft:dark_oak_trunk_placer", + "base_height": 6, + "height_rand_a": 2, + "height_rand_b": 1 + }, + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:pale_oak_log", + "Properties": { + "axis": "y" + } + } + } + } +} \ No newline at end of file diff --git a/data/minecraft/worldgen/placed_feature/flower_pale_garden.json b/data/minecraft/worldgen/placed_feature/flower_pale_garden.json new file mode 100644 index 00000000..4ca303c3 --- /dev/null +++ b/data/minecraft/worldgen/placed_feature/flower_pale_garden.json @@ -0,0 +1,19 @@ +{ + "feature": "minecraft:flower_pale_garden", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 32 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "MOTION_BLOCKING" + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/data/minecraft/worldgen/placed_feature/pale_garden_flowers.json b/data/minecraft/worldgen/placed_feature/pale_garden_flowers.json new file mode 100644 index 00000000..a0ae0ab5 --- /dev/null +++ b/data/minecraft/worldgen/placed_feature/pale_garden_flowers.json @@ -0,0 +1,19 @@ +{ + "feature": "minecraft:pale_forest_flowers", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 8 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "MOTION_BLOCKING_NO_LEAVES" + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/data/minecraft/worldgen/placed_feature/pale_moss_patch.json b/data/minecraft/worldgen/placed_feature/pale_moss_patch.json new file mode 100644 index 00000000..c7da9c32 --- /dev/null +++ b/data/minecraft/worldgen/placed_feature/pale_moss_patch.json @@ -0,0 +1,19 @@ +{ + "feature": "minecraft:pale_moss_patch", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "MOTION_BLOCKING_NO_LEAVES" + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/net/minecraft/DetectedVersion.java b/net/minecraft/DetectedVersion.java index 31c9a4bf..87e5bd19 100644 --- a/net/minecraft/DetectedVersion.java +++ b/net/minecraft/DetectedVersion.java @@ -28,12 +28,12 @@ public class DetectedVersion implements WorldVersion { private DetectedVersion() { this.id = UUID.randomUUID().toString().replaceAll("-", ""); - this.name = "1.21.3"; + this.name = "1.21.4"; this.stable = true; - this.worldVersion = new DataVersion(4082, "main"); + this.worldVersion = new DataVersion(4189, "main"); this.protocolVersion = SharedConstants.getProtocolVersion(); - this.resourcePackVersion = 42; - this.dataPackVersion = 57; + this.resourcePackVersion = 46; + this.dataPackVersion = 61; this.buildTime = new Date(); } diff --git a/net/minecraft/SharedConstants.java b/net/minecraft/SharedConstants.java index 005d0b66..bdac852f 100644 --- a/net/minecraft/SharedConstants.java +++ b/net/minecraft/SharedConstants.java @@ -34,7 +34,7 @@ public class SharedConstants { * @deprecated Use {@link #getCurrentVersion()} and {@link com.mojang.bridge.game.GameVersion#getWorldVersion()} instead. */ @Deprecated - public static final int WORLD_VERSION = 4082; + public static final int WORLD_VERSION = 4189; @Deprecated public static final String SERIES = "main"; /** @@ -44,7 +44,7 @@ public class SharedConstants { * @deprecated Use {@link #getCurrentVersion()} and {@link com.mojang.bridge.game.GameVersion#getName()} instead. */ @Deprecated - public static final String VERSION_STRING = "1.21.3"; + public static final String VERSION_STRING = "1.21.4"; /** * The numeric format number for the networking protocol used by the release target of this game version. * @@ -54,7 +54,7 @@ public class SharedConstants { * @deprecated Use {@link #getProtocolVersion()} instead. */ @Deprecated - public static final int RELEASE_NETWORK_PROTOCOL_VERSION = 768; + public static final int RELEASE_NETWORK_PROTOCOL_VERSION = 769; /** * The numeric format number for the networking protocol used by the snapshot of this game version. * @@ -66,8 +66,8 @@ public class SharedConstants { * @deprecated Use {@link #getProtocolVersion()} instead. */ @Deprecated - public static final int SNAPSHOT_NETWORK_PROTOCOL_VERSION = 219; - public static final int SNBT_NAG_VERSION = 4053; + public static final int SNAPSHOT_NETWORK_PROTOCOL_VERSION = 228; + public static final int SNBT_NAG_VERSION = 4173; /** * The bit in the networking protocol version for denoting {@linkplain #SNAPSHOT snapshot versions}. * @@ -82,7 +82,7 @@ public class SharedConstants { * @deprecated Use {@link #getCurrentVersion()}, {@link com.mojang.bridge.game.GameVersion#com.mojang.bridge.game.GameVersion#getPackVersion(com.mojang.bridge.game.PackType)}, and com.mojang.bridge.game.PackType#RESOURCE instead. */ @Deprecated - public static final int RESOURCE_PACK_FORMAT = 42; + public static final int RESOURCE_PACK_FORMAT = 46; /** * The format of the data packs used by this game version. Data packs contain server-side data such as recipes, loot tables, and tags. * @@ -90,7 +90,7 @@ public class SharedConstants { * @deprecated Use {@link #getCurrentVersion()}, {@link com.mojang.bridge.game.GameVersion#com.mojang.bridge.game.GameVersion#getPackVersion(com.mojang.bridge.game.PackType)}, and com.mojang.bridge.game.PackType#DATA instead. */ @Deprecated - public static final int DATA_PACK_FORMAT = 57; + public static final int DATA_PACK_FORMAT = 61; @Deprecated public static final int LANGUAGE_FORMAT = 1; public static final int REPORT_FORMAT_VERSION = 1; @@ -277,7 +277,7 @@ public class SharedConstants { *

For releases, this will be equivalent to {@link #RELEASE_NETWORK_PROTOCOL_VERSION}. For snapshot versions, this will be the combination (bitwise OR) of {@link #SNAPSHOT_NETWORK_PROTOCOL_VERSION} and the bit marked by {@link #SNAPSHOT_PROTOCOL_BIT}.

*/ public static int getProtocolVersion() { - return 768; + return 769; } public static boolean debugVoidTerrain(ChunkPos chunkPos) { diff --git a/net/minecraft/SuppressForbidden.java b/net/minecraft/SuppressForbidden.java new file mode 100644 index 00000000..cf5ba4c5 --- /dev/null +++ b/net/minecraft/SuppressForbidden.java @@ -0,0 +1,12 @@ +package net.minecraft; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.TYPE}) +public @interface SuppressForbidden { + String reason(); +} diff --git a/net/minecraft/Util.java b/net/minecraft/Util.java index 28a8d2de..f9ff28e8 100644 --- a/net/minecraft/Util.java +++ b/net/minecraft/Util.java @@ -147,7 +147,7 @@ public class Util { } private static TracingExecutor makeExecutor(String name) { - int i = Mth.clamp(Runtime.getRuntime().availableProcessors() - 1, 1, getMaxThreads()); + int i = maxAllowedExecutorThreads(); ExecutorService executorService; if (i <= 0) { executorService = MoreExecutors.newDirectExecutorService(); @@ -179,6 +179,10 @@ public class Util { return new TracingExecutor(executorService); } + public static int maxAllowedExecutorThreads() { + return Mth.clamp(Runtime.getRuntime().availableProcessors() - 1, 1, getMaxThreads()); + } + private static int getMaxThreads() { String string = System.getProperty("max.bg.threads"); if (string != null) { diff --git a/net/minecraft/advancements/critereon/ItemAttributeModifiersPredicate.java b/net/minecraft/advancements/critereon/ItemAttributeModifiersPredicate.java index 0c7667b1..9536099d 100644 --- a/net/minecraft/advancements/critereon/ItemAttributeModifiersPredicate.java +++ b/net/minecraft/advancements/critereon/ItemAttributeModifiersPredicate.java @@ -4,6 +4,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.Optional; import java.util.function.Predicate; +import net.minecraft.advancements.critereon.MinMaxBounds.Doubles; import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryCodecs; import net.minecraft.core.component.DataComponentType; @@ -12,13 +13,13 @@ import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.AttributeModifier.Operation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.component.ItemAttributeModifiers.Entry; -public record ItemAttributeModifiersPredicate( - Optional> modifiers -) implements SingleComponentItemPredicate { +public record ItemAttributeModifiersPredicate(Optional> modifiers) + implements SingleComponentItemPredicate { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( CollectionPredicate.codec(ItemAttributeModifiersPredicate.EntryPredicate.CODEC) @@ -33,29 +34,25 @@ public record ItemAttributeModifiersPredicate( return DataComponents.ATTRIBUTE_MODIFIERS; } - public boolean matches(ItemStack stack, ItemAttributeModifiers value) { - return !this.modifiers.isPresent() || ((CollectionPredicate)this.modifiers.get()).test((Iterable)value.modifiers()); + public boolean matches(ItemStack itemStack, ItemAttributeModifiers itemAttributeModifiers) { + return !this.modifiers.isPresent() || ((CollectionPredicate)this.modifiers.get()).test((Iterable)itemAttributeModifiers.modifiers()); } public record EntryPredicate( - Optional> attribute, - Optional id, - MinMaxBounds.Doubles amount, - Optional operation, - Optional slot - ) implements Predicate { + Optional> attribute, Optional id, Doubles amount, Optional operation, Optional slot + ) implements Predicate { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( RegistryCodecs.homogeneousList(Registries.ATTRIBUTE).optionalFieldOf("attribute").forGetter(ItemAttributeModifiersPredicate.EntryPredicate::attribute), ResourceLocation.CODEC.optionalFieldOf("id").forGetter(ItemAttributeModifiersPredicate.EntryPredicate::id), - MinMaxBounds.Doubles.CODEC.optionalFieldOf("amount", MinMaxBounds.Doubles.ANY).forGetter(ItemAttributeModifiersPredicate.EntryPredicate::amount), - AttributeModifier.Operation.CODEC.optionalFieldOf("operation").forGetter(ItemAttributeModifiersPredicate.EntryPredicate::operation), + Doubles.CODEC.optionalFieldOf("amount", Doubles.ANY).forGetter(ItemAttributeModifiersPredicate.EntryPredicate::amount), + Operation.CODEC.optionalFieldOf("operation").forGetter(ItemAttributeModifiersPredicate.EntryPredicate::operation), EquipmentSlotGroup.CODEC.optionalFieldOf("slot").forGetter(ItemAttributeModifiersPredicate.EntryPredicate::slot) ) .apply(instance, ItemAttributeModifiersPredicate.EntryPredicate::new) ); - public boolean test(ItemAttributeModifiers.Entry entry) { + public boolean test(Entry entry) { if (this.attribute.isPresent() && !((HolderSet)this.attribute.get()).contains(entry.attribute())) { return false; } else if (this.id.isPresent() && !((ResourceLocation)this.id.get()).equals(entry.modifier().id())) { diff --git a/net/minecraft/advancements/critereon/ItemBundlePredicate.java b/net/minecraft/advancements/critereon/ItemBundlePredicate.java index e0a5707a..e8c22fbe 100644 --- a/net/minecraft/advancements/critereon/ItemBundlePredicate.java +++ b/net/minecraft/advancements/critereon/ItemBundlePredicate.java @@ -19,7 +19,7 @@ public record ItemBundlePredicate(Optional { +public record ItemDamagePredicate(Ints durability, Ints damage) implements SingleComponentItemPredicate { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( - MinMaxBounds.Ints.CODEC.optionalFieldOf("durability", MinMaxBounds.Ints.ANY).forGetter(ItemDamagePredicate::durability), - MinMaxBounds.Ints.CODEC.optionalFieldOf("damage", MinMaxBounds.Ints.ANY).forGetter(ItemDamagePredicate::damage) + Ints.CODEC.optionalFieldOf("durability", Ints.ANY).forGetter(ItemDamagePredicate::durability), + Ints.CODEC.optionalFieldOf("damage", Ints.ANY).forGetter(ItemDamagePredicate::damage) ) .apply(instance, ItemDamagePredicate::new) ); @@ -20,11 +21,11 @@ public record ItemDamagePredicate(MinMaxBounds.Ints durability, MinMaxBounds.Int return DataComponents.DAMAGE; } - public boolean matches(ItemStack stack, Integer value) { - return !this.durability.matches(stack.getMaxDamage() - value) ? false : this.damage.matches(value); + public boolean matches(ItemStack itemStack, Integer integer) { + return !this.durability.matches(itemStack.getMaxDamage() - integer) ? false : this.damage.matches(integer); } - public static ItemDamagePredicate durability(MinMaxBounds.Ints damage) { - return new ItemDamagePredicate(damage, MinMaxBounds.Ints.ANY); + public static ItemDamagePredicate durability(Ints damage) { + return new ItemDamagePredicate(damage, Ints.ANY); } } diff --git a/net/minecraft/advancements/critereon/ItemFireworkExplosionPredicate.java b/net/minecraft/advancements/critereon/ItemFireworkExplosionPredicate.java index 7c80d35e..5a41c8a4 100644 --- a/net/minecraft/advancements/critereon/ItemFireworkExplosionPredicate.java +++ b/net/minecraft/advancements/critereon/ItemFireworkExplosionPredicate.java @@ -8,6 +8,7 @@ import net.minecraft.core.component.DataComponentType; import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.FireworkExplosion; +import net.minecraft.world.item.component.FireworkExplosion.Shape; public record ItemFireworkExplosionPredicate(ItemFireworkExplosionPredicate.FireworkPredicate predicate) implements SingleComponentItemPredicate { @@ -19,15 +20,14 @@ public record ItemFireworkExplosionPredicate(ItemFireworkExplosionPredicate.Fire return DataComponents.FIREWORK_EXPLOSION; } - public boolean matches(ItemStack stack, FireworkExplosion value) { - return this.predicate.test(value); + public boolean matches(ItemStack itemStack, FireworkExplosion fireworkExplosion) { + return this.predicate.test(fireworkExplosion); } - public record FireworkPredicate(Optional shape, Optional twinkle, Optional trail) - implements Predicate { + public record FireworkPredicate(Optional shape, Optional twinkle, Optional trail) implements Predicate { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( - FireworkExplosion.Shape.CODEC.optionalFieldOf("shape").forGetter(ItemFireworkExplosionPredicate.FireworkPredicate::shape), + Shape.CODEC.optionalFieldOf("shape").forGetter(ItemFireworkExplosionPredicate.FireworkPredicate::shape), Codec.BOOL.optionalFieldOf("has_twinkle").forGetter(ItemFireworkExplosionPredicate.FireworkPredicate::twinkle), Codec.BOOL.optionalFieldOf("has_trail").forGetter(ItemFireworkExplosionPredicate.FireworkPredicate::trail) ) diff --git a/net/minecraft/advancements/critereon/ItemFireworksPredicate.java b/net/minecraft/advancements/critereon/ItemFireworksPredicate.java index c2bc1ab6..a3f1a0e1 100644 --- a/net/minecraft/advancements/critereon/ItemFireworksPredicate.java +++ b/net/minecraft/advancements/critereon/ItemFireworksPredicate.java @@ -3,6 +3,7 @@ package net.minecraft.advancements.critereon; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.Optional; +import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.core.component.DataComponentType; import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.ItemStack; @@ -10,14 +11,14 @@ import net.minecraft.world.item.component.FireworkExplosion; import net.minecraft.world.item.component.Fireworks; public record ItemFireworksPredicate( - Optional> explosions, MinMaxBounds.Ints flightDuration + Optional> explosions, Ints flightDuration ) implements SingleComponentItemPredicate { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( CollectionPredicate.codec(ItemFireworkExplosionPredicate.FireworkPredicate.CODEC) .optionalFieldOf("explosions") .forGetter(ItemFireworksPredicate::explosions), - MinMaxBounds.Ints.CODEC.optionalFieldOf("flight_duration", MinMaxBounds.Ints.ANY).forGetter(ItemFireworksPredicate::flightDuration) + Ints.CODEC.optionalFieldOf("flight_duration", Ints.ANY).forGetter(ItemFireworksPredicate::flightDuration) ) .apply(instance, ItemFireworksPredicate::new) ); @@ -27,9 +28,9 @@ public record ItemFireworksPredicate( return DataComponents.FIREWORKS; } - public boolean matches(ItemStack stack, Fireworks value) { - return this.explosions.isPresent() && !((CollectionPredicate)this.explosions.get()).test((Iterable)value.explosions()) + public boolean matches(ItemStack itemStack, Fireworks fireworks) { + return this.explosions.isPresent() && !((CollectionPredicate)this.explosions.get()).test((Iterable)fireworks.explosions()) ? false - : this.flightDuration.matches(value.flightDuration()); + : this.flightDuration.matches(fireworks.flightDuration()); } } diff --git a/net/minecraft/advancements/critereon/ItemJukeboxPlayablePredicate.java b/net/minecraft/advancements/critereon/ItemJukeboxPlayablePredicate.java index 5ee1767b..2c215eee 100644 --- a/net/minecraft/advancements/critereon/ItemJukeboxPlayablePredicate.java +++ b/net/minecraft/advancements/critereon/ItemJukeboxPlayablePredicate.java @@ -25,7 +25,7 @@ public record ItemJukeboxPlayablePredicate(Optional> song return DataComponents.JUKEBOX_PLAYABLE; } - public boolean matches(ItemStack stack, JukeboxPlayable value) { + public boolean matches(ItemStack itemStack, JukeboxPlayable jukeboxPlayable) { if (!this.song.isPresent()) { return true; } else { @@ -33,7 +33,7 @@ public record ItemJukeboxPlayablePredicate(Optional> song for (Holder holder : (HolderSet)this.song.get()) { Optional> optional = holder.unwrapKey(); - if (!optional.isEmpty() && optional.get() == value.song().key()) { + if (!optional.isEmpty() && optional.get() == jukeboxPlayable.song().key()) { bl = true; break; } diff --git a/net/minecraft/advancements/critereon/ItemPotionsPredicate.java b/net/minecraft/advancements/critereon/ItemPotionsPredicate.java index e6c29c45..ad6b2fd3 100644 --- a/net/minecraft/advancements/critereon/ItemPotionsPredicate.java +++ b/net/minecraft/advancements/critereon/ItemPotionsPredicate.java @@ -21,8 +21,8 @@ public record ItemPotionsPredicate(HolderSet potions) implements SingleC return DataComponents.POTION_CONTENTS; } - public boolean matches(ItemStack stack, PotionContents value) { - Optional> optional = value.potion(); + public boolean matches(ItemStack itemStack, PotionContents potionContents) { + Optional> optional = potionContents.potion(); return !optional.isEmpty() && this.potions.contains((Holder)optional.get()); } diff --git a/net/minecraft/advancements/critereon/ItemTrimPredicate.java b/net/minecraft/advancements/critereon/ItemTrimPredicate.java index 2e50dd9f..eb3230c9 100644 --- a/net/minecraft/advancements/critereon/ItemTrimPredicate.java +++ b/net/minecraft/advancements/critereon/ItemTrimPredicate.java @@ -28,9 +28,9 @@ public record ItemTrimPredicate(Optional> material, Opti return DataComponents.TRIM; } - public boolean matches(ItemStack stack, ArmorTrim value) { - return this.material.isPresent() && !((HolderSet)this.material.get()).contains(value.material()) + public boolean matches(ItemStack itemStack, ArmorTrim armorTrim) { + return this.material.isPresent() && !((HolderSet)this.material.get()).contains(armorTrim.material()) ? false - : !this.pattern.isPresent() || ((HolderSet)this.pattern.get()).contains(value.pattern()); + : !this.pattern.isPresent() || ((HolderSet)this.pattern.get()).contains(armorTrim.pattern()); } } diff --git a/net/minecraft/advancements/critereon/ItemWritableBookPredicate.java b/net/minecraft/advancements/critereon/ItemWritableBookPredicate.java index 6ec9da2b..02334278 100644 --- a/net/minecraft/advancements/critereon/ItemWritableBookPredicate.java +++ b/net/minecraft/advancements/critereon/ItemWritableBookPredicate.java @@ -24,8 +24,8 @@ public record ItemWritableBookPredicate(Optional> { diff --git a/net/minecraft/advancements/critereon/ItemWrittenBookPredicate.java b/net/minecraft/advancements/critereon/ItemWrittenBookPredicate.java index 1b179df5..10aeb04e 100644 --- a/net/minecraft/advancements/critereon/ItemWrittenBookPredicate.java +++ b/net/minecraft/advancements/critereon/ItemWrittenBookPredicate.java @@ -4,6 +4,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.Optional; import java.util.function.Predicate; +import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.core.component.DataComponentType; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; @@ -16,7 +17,7 @@ public record ItemWrittenBookPredicate( Optional, ItemWrittenBookPredicate.PagePredicate>> pages, Optional author, Optional title, - MinMaxBounds.Ints generation, + Ints generation, Optional resolved ) implements SingleComponentItemPredicate { public static final Codec CODEC = RecordCodecBuilder.create( @@ -24,7 +25,7 @@ public record ItemWrittenBookPredicate( CollectionPredicate.codec(ItemWrittenBookPredicate.PagePredicate.CODEC).optionalFieldOf("pages").forGetter(ItemWrittenBookPredicate::pages), Codec.STRING.optionalFieldOf("author").forGetter(ItemWrittenBookPredicate::author), Codec.STRING.optionalFieldOf("title").forGetter(ItemWrittenBookPredicate::title), - MinMaxBounds.Ints.CODEC.optionalFieldOf("generation", MinMaxBounds.Ints.ANY).forGetter(ItemWrittenBookPredicate::generation), + Ints.CODEC.optionalFieldOf("generation", Ints.ANY).forGetter(ItemWrittenBookPredicate::generation), Codec.BOOL.optionalFieldOf("resolved").forGetter(ItemWrittenBookPredicate::resolved) ) .apply(instance, ItemWrittenBookPredicate::new) @@ -35,17 +36,17 @@ public record ItemWrittenBookPredicate( return DataComponents.WRITTEN_BOOK_CONTENT; } - public boolean matches(ItemStack stack, WrittenBookContent value) { - if (this.author.isPresent() && !((String)this.author.get()).equals(value.author())) { + public boolean matches(ItemStack itemStack, WrittenBookContent writtenBookContent) { + if (this.author.isPresent() && !((String)this.author.get()).equals(writtenBookContent.author())) { return false; - } else if (this.title.isPresent() && !((String)this.title.get()).equals(value.title().raw())) { + } else if (this.title.isPresent() && !((String)this.title.get()).equals(writtenBookContent.title().raw())) { return false; - } else if (!this.generation.matches(value.generation())) { + } else if (!this.generation.matches(writtenBookContent.generation())) { return false; } else { - return this.resolved.isPresent() && this.resolved.get() != value.resolved() + return this.resolved.isPresent() && this.resolved.get() != writtenBookContent.resolved() ? false - : !this.pages.isPresent() || ((CollectionPredicate)this.pages.get()).test((Iterable)value.pages()); + : !this.pages.isPresent() || ((CollectionPredicate)this.pages.get()).test((Iterable)writtenBookContent.pages()); } } diff --git a/net/minecraft/client/ClientBootstrap.java b/net/minecraft/client/ClientBootstrap.java new file mode 100644 index 00000000..4c286719 --- /dev/null +++ b/net/minecraft/client/ClientBootstrap.java @@ -0,0 +1,27 @@ +package net.minecraft.client; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.color.item.ItemTintSources; +import net.minecraft.client.renderer.item.ItemModels; +import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperties; +import net.minecraft.client.renderer.item.properties.numeric.RangeSelectItemModelProperties; +import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperties; +import net.minecraft.client.renderer.special.SpecialModelRenderers; + +@Environment(EnvType.CLIENT) +public class ClientBootstrap { + private static volatile boolean isBootstrapped; + + public static void bootstrap() { + if (!isBootstrapped) { + isBootstrapped = true; + ItemModels.bootstrap(); + SpecialModelRenderers.bootstrap(); + ItemTintSources.bootstrap(); + SelectItemModelProperties.bootstrap(); + ConditionalItemModelProperties.bootstrap(); + RangeSelectItemModelProperties.bootstrap(); + } + } +} diff --git a/net/minecraft/client/KeyMapping.java b/net/minecraft/client/KeyMapping.java index b6ea5c18..d137fb56 100644 --- a/net/minecraft/client/KeyMapping.java +++ b/net/minecraft/client/KeyMapping.java @@ -3,6 +3,8 @@ package net.minecraft.client; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.InputConstants.Key; +import com.mojang.blaze3d.platform.InputConstants.Type; import java.util.Map; import java.util.Set; import java.util.function.Supplier; @@ -11,11 +13,12 @@ import net.fabricmc.api.Environment; import net.minecraft.Util; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class KeyMapping implements Comparable { private static final Map ALL = Maps.newHashMap(); - private static final Map MAP = Maps.newHashMap(); + private static final Map MAP = Maps.newHashMap(); private static final Set CATEGORIES = Sets.newHashSet(); public static final String CATEGORY_MOVEMENT = "key.categories.movement"; public static final String CATEGORY_MISC = "key.categories.misc"; @@ -34,20 +37,20 @@ public class KeyMapping implements Comparable { hashMap.put("key.categories.misc", 7); }); private final String name; - private final InputConstants.Key defaultKey; + private final Key defaultKey; private final String category; - private InputConstants.Key key; + private Key key; private boolean isDown; private int clickCount; - public static void click(InputConstants.Key key) { + public static void click(Key key) { KeyMapping keyMapping = (KeyMapping)MAP.get(key); if (keyMapping != null) { keyMapping.clickCount++; } } - public static void set(InputConstants.Key key, boolean held) { + public static void set(Key key, boolean held) { KeyMapping keyMapping = (KeyMapping)MAP.get(key); if (keyMapping != null) { keyMapping.setDown(held); @@ -59,7 +62,7 @@ public class KeyMapping implements Comparable { */ public static void setAll() { for (KeyMapping keyMapping : ALL.values()) { - if (keyMapping.key.getType() == InputConstants.Type.KEYSYM && keyMapping.key.getValue() != InputConstants.UNKNOWN.getValue()) { + if (keyMapping.key.getType() == Type.KEYSYM && keyMapping.key.getValue() != InputConstants.UNKNOWN.getValue()) { keyMapping.setDown(InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keyMapping.key.getValue())); } } @@ -88,10 +91,10 @@ public class KeyMapping implements Comparable { } public KeyMapping(String name, int keyCode, String category) { - this(name, InputConstants.Type.KEYSYM, keyCode, category); + this(name, Type.KEYSYM, keyCode, category); } - public KeyMapping(String name, InputConstants.Type type, int keyCode, String category) { + public KeyMapping(String name, Type type, int keyCode, String category) { this.name = name; this.key = type.getOrCreate(keyCode); this.defaultKey = this.key; @@ -133,14 +136,14 @@ public class KeyMapping implements Comparable { return this.name; } - public InputConstants.Key getDefaultKey() { + public Key getDefaultKey() { return this.defaultKey; } /** * Binds a new KeyCode to this */ - public void setKey(InputConstants.Key key) { + public void setKey(Key key) { this.key = key; } @@ -171,15 +174,15 @@ public class KeyMapping implements Comparable { public boolean matches(int keysym, int scancode) { return keysym == InputConstants.UNKNOWN.getValue() - ? this.key.getType() == InputConstants.Type.SCANCODE && this.key.getValue() == scancode - : this.key.getType() == InputConstants.Type.KEYSYM && this.key.getValue() == keysym; + ? this.key.getType() == Type.SCANCODE && this.key.getValue() == scancode + : this.key.getType() == Type.KEYSYM && this.key.getValue() == keysym; } /** * Returns {@code true} if the {@code KeyMapping} is set to a mouse key and the key matches. */ public boolean matchesMouse(int key) { - return this.key.getType() == InputConstants.Type.MOUSE && this.key.getValue() == key; + return this.key.getType() == Type.MOUSE && this.key.getValue() == key; } public Component getTranslatedKeyMessage() { @@ -200,4 +203,9 @@ public class KeyMapping implements Comparable { public void setDown(boolean value) { this.isDown = value; } + + @Nullable + public static KeyMapping get(String name) { + return (KeyMapping)ALL.get(name); + } } diff --git a/net/minecraft/client/Minecraft.java b/net/minecraft/client/Minecraft.java index bc5a667d..ee82c80f 100644 --- a/net/minecraft/client/Minecraft.java +++ b/net/minecraft/client/Minecraft.java @@ -52,6 +52,7 @@ import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.MissingResourceException; +import java.util.Optional; import java.util.Queue; import java.util.Set; import java.util.UUID; @@ -77,7 +78,6 @@ import net.minecraft.client.DeltaTracker.Timer; import net.minecraft.client.ResourceLoadStateTracker.ReloadReason; import net.minecraft.client.User.Type; import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.color.item.ItemColors; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiSpriteManager; @@ -105,7 +105,6 @@ import net.minecraft.client.gui.screens.ProgressScreen; import net.minecraft.client.gui.screens.ReceivingLevelScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.TitleScreen; -import net.minecraft.client.gui.screens.ReceivingLevelScreen.Reason; import net.minecraft.client.gui.screens.advancements.AdvancementsScreen; import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; import net.minecraft.client.gui.screens.inventory.InventoryScreen; @@ -114,6 +113,7 @@ import net.minecraft.client.gui.screens.social.SocialInteractionsScreen; import net.minecraft.client.gui.screens.worldselection.WorldOpenFlows; import net.minecraft.client.main.GameConfig; import net.minecraft.client.main.SilentInitException; +import net.minecraft.client.main.GameConfig.QuickPlayData; import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.multiplayer.ClientHandshakePacketListenerImpl; import net.minecraft.client.multiplayer.ClientLevel; @@ -129,7 +129,6 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.profiling.ClientMetricsSamplersProvider; import net.minecraft.client.quickplay.QuickPlay; import net.minecraft.client.quickplay.QuickPlayLog; -import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.FogParameters; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.GpuWarnlistManager; @@ -145,6 +144,7 @@ import net.minecraft.client.renderer.debug.DebugRenderer; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.item.ItemModelResolver; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; @@ -160,10 +160,11 @@ import net.minecraft.client.resources.SplashManager; import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.language.LanguageManager; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.EquipmentModelSet; +import net.minecraft.client.resources.model.EquipmentAssetManager; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.client.resources.server.DownloadedPackSource; import net.minecraft.client.server.IntegratedServer; +import net.minecraft.client.sounds.MusicInfo; import net.minecraft.client.sounds.MusicManager; import net.minecraft.client.sounds.SoundManager; import net.minecraft.client.telemetry.ClientTelemetryManager; @@ -173,18 +174,16 @@ import net.minecraft.client.tutorial.Tutorial; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; -import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.Connection; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.ClickEvent.Action; import net.minecraft.network.chat.contents.KeybindResolver; import net.minecraft.network.protocol.game.ServerboundClientTickEndPacket; import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket; -import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket.Action; import net.minecraft.network.protocol.login.ServerboundHelloPacket; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.Bootstrap; @@ -223,29 +222,32 @@ import net.minecraft.util.profiling.Profiler; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.util.profiling.SingleTickProfiler; import net.minecraft.util.profiling.Zone; +import net.minecraft.util.profiling.Profiler.Scope; import net.minecraft.util.profiling.metrics.profiling.ActiveMetricsRecorder; import net.minecraft.util.profiling.metrics.profiling.InactiveMetricsRecorder; import net.minecraft.util.profiling.metrics.profiling.MetricsRecorder; import net.minecraft.util.profiling.metrics.storage.MetricsPersister; +import net.minecraft.util.random.SimpleWeightedRandomList; import net.minecraft.util.thread.ReentrantBlockableEventLoop; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.TickRateManager; +import net.minecraft.world.InteractionResult.Fail; +import net.minecraft.world.InteractionResult.Success; +import net.minecraft.world.InteractionResult.SwingSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.player.ChatVisiblity; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.SkullBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import net.minecraft.world.level.validation.DirectoryValidator; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; @@ -280,6 +282,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements private final RenderBuffers renderBuffers; public final LevelRenderer levelRenderer; private final EntityRenderDispatcher entityRenderDispatcher; + private final ItemModelResolver itemModelResolver; private final ItemRenderer itemRenderer; private final MapRenderer mapRenderer; public final ParticleEngine particleEngine; @@ -309,7 +312,6 @@ public class Minecraft extends ReentrantBlockableEventLoop implements private final PackRepository resourcePackRepository; private final LanguageManager languageManager; private final BlockColors blockColors; - private final ItemColors itemColors; private final RenderTarget mainRenderTarget; @Nullable private final TracyFrameCapture tracyFrameCapture; @@ -329,7 +331,6 @@ public class Minecraft extends ReentrantBlockableEventLoop implements * The BlockRenderDispatcher instance that will be used based off gamesettings */ private final BlockRenderDispatcher blockRenderer; - private final EquipmentModelSet equipmentModels; private final PaintingTextureManager paintingTextures; private final MobEffectTextureManager mobEffectTextures; private final MapTextureManager mapTextureManager; @@ -338,7 +339,6 @@ public class Minecraft extends ReentrantBlockableEventLoop implements private final ToastManager toastManager; private final Tutorial tutorial; private final PlayerSocialManager playerSocialManager; - private final EntityModelSet entityModels; private final BlockEntityRenderDispatcher blockEntityRenderDispatcher; private final ClientTelemetryManager telemetryManager; private final ProfileKeyPairManager profileKeyPairManager; @@ -515,7 +515,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements this.resourceManager.registerReloadListener(this.textureManager); this.shaderManager = new ShaderManager(this.textureManager, this::triggerResourcePackRecovery); this.resourceManager.registerReloadListener(this.shaderManager); - this.skinManager = new SkinManager(this.textureManager, file.toPath().resolve("skins"), this.minecraftSessionService, this); + this.skinManager = new SkinManager(file.toPath().resolve("skins"), this.minecraftSessionService, this); this.levelSource = new LevelStorageSource(path.resolve("saves"), path.resolve("backups"), this.directoryValidator, this.fixerUpper); this.commandHistory = new CommandHistory(path); this.soundManager = new SoundManager(this.options); @@ -534,21 +534,12 @@ public class Minecraft extends ReentrantBlockableEventLoop implements RenderSystem.setupDefaultState(0, 0, this.window.getWidth(), this.window.getHeight()); this.window.setErrorSection("Post startup"); this.blockColors = BlockColors.createDefault(); - this.itemColors = ItemColors.createDefault(this.blockColors); this.modelManager = new ModelManager(this.textureManager, this.blockColors, this.options.mipmapLevels().get()); this.resourceManager.registerReloadListener(this.modelManager); - this.entityModels = new EntityModelSet(); - this.resourceManager.registerReloadListener(this.entityModels); - this.equipmentModels = new EquipmentModelSet(); - this.resourceManager.registerReloadListener(this.equipmentModels); - this.blockEntityRenderDispatcher = new BlockEntityRenderDispatcher( - this.font, this.entityModels, this::getBlockRenderer, this::getItemRenderer, this::getEntityRenderDispatcher - ); - this.resourceManager.registerReloadListener(this.blockEntityRenderDispatcher); - BlockEntityWithoutLevelRenderer blockEntityWithoutLevelRenderer = new BlockEntityWithoutLevelRenderer(this.blockEntityRenderDispatcher, this.entityModels); - this.resourceManager.registerReloadListener(blockEntityWithoutLevelRenderer); - this.itemRenderer = new ItemRenderer(this.modelManager, this.itemColors, blockEntityWithoutLevelRenderer); - this.resourceManager.registerReloadListener(this.itemRenderer); + EquipmentAssetManager equipmentAssetManager = new EquipmentAssetManager(); + this.resourceManager.registerReloadListener(equipmentAssetManager); + this.itemModelResolver = new ItemModelResolver(this.modelManager); + this.itemRenderer = new ItemRenderer(this.itemModelResolver); this.mapTextureManager = new MapTextureManager(this.textureManager); this.mapDecorationTextures = new MapDecorationTextureManager(this.textureManager); this.resourceManager.registerReloadListener(this.mapDecorationTextures); @@ -571,12 +562,25 @@ public class Minecraft extends ReentrantBlockableEventLoop implements } this.playerSocialManager = new PlayerSocialManager(this, this.userApiService); - this.blockRenderer = new BlockRenderDispatcher(this.modelManager.getBlockModelShaper(), blockEntityWithoutLevelRenderer, this.blockColors); + this.blockRenderer = new BlockRenderDispatcher(this.modelManager.getBlockModelShaper(), this.modelManager.specialBlockModelRenderer(), this.blockColors); this.resourceManager.registerReloadListener(this.blockRenderer); this.entityRenderDispatcher = new EntityRenderDispatcher( - this, this.textureManager, this.itemRenderer, this.mapRenderer, this.blockRenderer, this.font, this.options, this.entityModels, this.equipmentModels + this, + this.textureManager, + this.itemModelResolver, + this.itemRenderer, + this.mapRenderer, + this.blockRenderer, + this.font, + this.options, + this.modelManager.entityModels(), + equipmentAssetManager ); this.resourceManager.registerReloadListener(this.entityRenderDispatcher); + this.blockEntityRenderDispatcher = new BlockEntityRenderDispatcher( + this.font, this.modelManager.entityModels(), this.blockRenderer, this.itemModelResolver, this.itemRenderer, this.entityRenderDispatcher + ); + this.resourceManager.registerReloadListener(this.blockEntityRenderDispatcher); this.particleEngine = new ParticleEngine(this.level, this.textureManager); this.resourceManager.registerReloadListener(this.particleEngine); this.paintingTextures = new PaintingTextureManager(this.textureManager); @@ -628,7 +632,8 @@ public class Minecraft extends ReentrantBlockableEventLoop implements this.chatListener = new ChatListener(this); this.chatListener.setMessageDelay(this.options.chatDelay().get()); this.reportingContext = ReportingContext.create(ReportEnvironment.local(), this.userApiService); - LoadingOverlay.registerTextures(this); + TitleScreen.registerTextures(this.textureManager); + LoadingOverlay.registerTextures(this.textureManager); this.setScreen(new GenericMessageScreen(Component.translatable("gui.loadingMinecraft"))); List list = this.resourcePackRepository.openAllSelected(); this.reloadStateTracker.startReload(ReloadReason.INITIAL, list); @@ -787,7 +792,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements this.options.resourcePacks.clear(); this.options.incompatibleResourcePacks.clear(); this.options.save(); - this.reloadResourcePacks(true, gameLoadCookie).thenRun(() -> this.addResourcePackLoadFailToast(errorMessage)); + this.reloadResourcePacks(true, gameLoadCookie).thenRunAsync(() -> this.addResourcePackLoadFailToast(errorMessage), this); } private void abortResourcePackRecovery() { @@ -837,7 +842,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements SingleTickProfiler singleTickProfiler = SingleTickProfiler.createTickProfiler("Renderer"); boolean bl2 = this.getDebugOverlay().showProfilerChart(); - try (Profiler.Scope scope = Profiler.use(this.constructProfiler(bl2, singleTickProfiler))) { + try (Scope scope = Profiler.use(this.constructProfiler(bl2, singleTickProfiler))) { this.metricsRecorder.startTick(); discontinuousFrame.start(); this.runTick(!bl); @@ -1249,7 +1254,10 @@ public class Minecraft extends ReentrantBlockableEventLoop implements profilerFiller.push("blit"); this.mainRenderTarget.unbindWrite(); - this.mainRenderTarget.blitToScreen(this.window.getWidth(), this.window.getHeight()); + if (!this.window.isMinimized()) { + this.mainRenderTarget.blitToScreen(this.window.getWidth(), this.window.getHeight()); + } + this.frameTimeNs = Util.getNanos() - l; if (bl) { TimerQuery.getInstance().ifPresent(timerQuery -> this.currentFrameProfile = timerQuery.endProfile()); @@ -1420,7 +1428,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements Consumer consumer2 = path -> { Component component = Component.literal(path.toString()) .withStyle(ChatFormatting.UNDERLINE) - .withStyle(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, path.toFile().getParent()))); + .withStyle(style -> style.withClickEvent(new ClickEvent(Action.OPEN_FILE, path.toFile().getParent()))); this.execute(() -> logger.accept(Component.translatable("debug.profiling.stop", component))); }; SystemReport systemReport = fillSystemReport(new SystemReport(), this, this.languageManager, this.launchedVersion, this.options); @@ -1639,8 +1647,8 @@ public class Minecraft extends ReentrantBlockableEventLoop implements interactionResult = this.gameMode.interact(this.player, entity, interactionHand); } - if (interactionResult instanceof InteractionResult.Success success) { - if (success.swingSource() == InteractionResult.SwingSource.CLIENT) { + if (interactionResult instanceof Success success) { + if (success.swingSource() == SwingSource.CLIENT) { this.player.swing(interactionHand); } @@ -1651,8 +1659,8 @@ public class Minecraft extends ReentrantBlockableEventLoop implements BlockHitResult blockHitResult = (BlockHitResult)this.hitResult; int i = itemStack.getCount(); InteractionResult interactionResult2 = this.gameMode.useItemOn(this.player, interactionHand, blockHitResult); - if (interactionResult2 instanceof InteractionResult.Success success2) { - if (success2.swingSource() == InteractionResult.SwingSource.CLIENT) { + if (interactionResult2 instanceof Success success2) { + if (success2.swingSource() == SwingSource.CLIENT) { this.player.swing(interactionHand); if (!itemStack.isEmpty() && (itemStack.getCount() != i || this.gameMode.hasInfiniteItems())) { this.gameRenderer.itemInHandRenderer.itemUsed(interactionHand); @@ -1662,14 +1670,14 @@ public class Minecraft extends ReentrantBlockableEventLoop implements return; } - if (interactionResult2 instanceof InteractionResult.Fail) { + if (interactionResult2 instanceof Fail) { return; } } } - if (!itemStack.isEmpty() && this.gameMode.useItem(this.player, interactionHand) instanceof InteractionResult.Success success3) { - if (success3.swingSource() == InteractionResult.SwingSource.CLIENT) { + if (!itemStack.isEmpty() && this.gameMode.useItem(this.player, interactionHand) instanceof Success success3) { + if (success3.swingSource() == SwingSource.CLIENT) { this.player.swing(interactionHand); } @@ -1783,7 +1791,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements if (!this.options.joinedFirstServer && this.isMultiplayerServer()) { Component component = Component.translatable("tutorial.socialInteractions.title"); Component component2 = Component.translatable("tutorial.socialInteractions.description", Tutorial.key("socialInteractions")); - this.socialInteractionsToast = new TutorialToast(TutorialToast.Icons.SOCIAL_INTERACTIONS, component, component2, true, 8000); + this.socialInteractionsToast = new TutorialToast(this.font, TutorialToast.Icons.SOCIAL_INTERACTIONS, component, component2, true, 8000); this.toastManager.addToast(this.socialInteractionsToast); this.options.joinedFirstServer = true; this.options.save(); @@ -1896,7 +1904,12 @@ public class Minecraft extends ReentrantBlockableEventLoop implements while (this.options.keySwapOffhand.consumeClick()) { if (!this.player.isSpectator()) { - this.getConnection().send(new ServerboundPlayerActionPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ZERO, Direction.DOWN)); + this.getConnection() + .send( + new ServerboundPlayerActionPacket( + net.minecraft.network.protocol.game.ServerboundPlayerActionPacket.Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ZERO, Direction.DOWN + ) + ); } } @@ -1965,7 +1978,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements return new WorldOpenFlows(this, this.levelSource); } - public void doWorldLoad(LevelStorageSource.LevelStorageAccess levelStorage, PackRepository packRepository, WorldStem worldStem, boolean newWorld) { + public void doWorldLoad(LevelStorageAccess levelStorage, PackRepository packRepository, WorldStem worldStem, boolean newWorld) { this.disconnect(); this.progressListener.set(null); Instant instant = Instant.now(); @@ -1983,7 +1996,8 @@ public class Minecraft extends ReentrantBlockableEventLoop implements })); this.isLocalServer = true; this.updateReportEnvironment(ReportEnvironment.local()); - this.quickPlayLog.setWorldData(QuickPlayLog.Type.SINGLEPLAYER, levelStorage.getLevelId(), worldStem.worldData().getLevelName()); + this.quickPlayLog + .setWorldData(net.minecraft.client.quickplay.QuickPlayLog.Type.SINGLEPLAYER, levelStorage.getLevelId(), worldStem.worldData().getLevelName()); } catch (Throwable var12) { CrashReport crashReport = CrashReport.forThrowable(var12, "Starting integrated server"); CrashReportCategory crashReportCategory = crashReport.addCategory("Starting integrated server"); @@ -2022,7 +2036,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements this.pendingConnection = connection; } - public void setLevel(ClientLevel level, Reason reason) { + public void setLevel(ClientLevel level, ReceivingLevelScreen.Reason reason) { this.updateScreenAndTick(new ReceivingLevelScreen(() -> false, reason)); this.level = level; this.updateLevelInEngines(level); @@ -2236,75 +2250,19 @@ public class Minecraft extends ReentrantBlockableEventLoop implements */ private void pickBlock() { if (this.hitResult != null && this.hitResult.getType() != net.minecraft.world.phys.HitResult.Type.MISS) { - boolean bl = this.player.getAbilities().instabuild; - BlockEntity blockEntity = null; - net.minecraft.world.phys.HitResult.Type type = this.hitResult.getType(); - ItemStack itemStack; - if (type == net.minecraft.world.phys.HitResult.Type.BLOCK) { - BlockPos blockPos = ((BlockHitResult)this.hitResult).getBlockPos(); - BlockState blockState = this.level.getBlockState(blockPos); - if (blockState.isAir()) { - return; - } - - Block block = blockState.getBlock(); - itemStack = block.getCloneItemStack(this.level, blockPos, blockState); - if (itemStack.isEmpty()) { - return; - } - - if (bl && Screen.hasControlDown() && blockState.hasBlockEntity()) { - blockEntity = this.level.getBlockEntity(blockPos); - } - } else { - if (type != net.minecraft.world.phys.HitResult.Type.ENTITY || !bl) { - return; - } - - Entity entity = ((EntityHitResult)this.hitResult).getEntity(); - itemStack = entity.getPickResult(); - if (itemStack == null) { - return; - } - } - - if (itemStack.isEmpty()) { - String string = ""; - if (type == net.minecraft.world.phys.HitResult.Type.BLOCK) { - string = BuiltInRegistries.BLOCK.getKey(this.level.getBlockState(((BlockHitResult)this.hitResult).getBlockPos()).getBlock()).toString(); - } else if (type == net.minecraft.world.phys.HitResult.Type.ENTITY) { - string = BuiltInRegistries.ENTITY_TYPE.getKey(((EntityHitResult)this.hitResult).getEntity().getType()).toString(); - } - - LOGGER.warn("Picking on: [{}] {} gave null item", type, string); - } else { - Inventory inventory = this.player.getInventory(); - if (blockEntity != null) { - this.addCustomNbtData(itemStack, blockEntity, this.level.registryAccess()); - } - - int i = inventory.findSlotMatchingItem(itemStack); - if (bl) { - inventory.setPickedItem(itemStack); - this.gameMode.handleCreativeModeItemAdd(this.player.getItemInHand(InteractionHand.MAIN_HAND), 36 + inventory.selected); - } else if (i != -1) { - if (Inventory.isHotbarSlot(i)) { - inventory.selected = i; - } else { - this.gameMode.handlePickItem(i); - } - } + boolean bl = Screen.hasControlDown(); + switch (this.hitResult) { + case BlockHitResult blockHitResult: + this.gameMode.handlePickItemFromBlock(blockHitResult.getBlockPos(), bl); + break; + case EntityHitResult entityHitResult: + this.gameMode.handlePickItemFromEntity(entityHitResult.getEntity(), bl); + break; + default: } } } - private void addCustomNbtData(ItemStack stack, BlockEntity blockEntity, RegistryAccess registryAccess) { - CompoundTag compoundTag = blockEntity.saveCustomAndMetadata(registryAccess); - blockEntity.removeComponentsFromTag(compoundTag); - BlockItem.setBlockEntityData(stack, blockEntity.getType(), compoundTag); - stack.applyComponents(blockEntity.collectComponents()); - } - /** * Adds core server Info (GL version, Texture pack, isModded, type), and the worldInfo to the crash report. */ @@ -2510,25 +2468,35 @@ public class Minecraft extends ReentrantBlockableEventLoop implements return this.soundManager; } - public Music getSituationalMusic() { + public MusicInfo getSituationalMusic() { Music music = Optionull.map(this.screen, Screen::getBackgroundMusic); if (music != null) { - return music; + return new MusicInfo(music); } else if (this.player != null) { - if (this.player.level().dimension() == Level.END) { - return this.gui.getBossOverlay().shouldPlayMusic() ? Musics.END_BOSS : Musics.END; + Level level = this.player.level(); + if (level.dimension() == Level.END) { + return this.gui.getBossOverlay().shouldPlayMusic() ? new MusicInfo(Musics.END_BOSS) : new MusicInfo(Musics.END); } else { - Holder holder = this.player.level().getBiome(this.player.blockPosition()); + Holder holder = level.getBiome(this.player.blockPosition()); + float f = holder.value().getBackgroundMusicVolume(); if (!this.musicManager.isPlayingMusic(Musics.UNDER_WATER) && (!this.player.isUnderWater() || !holder.is(BiomeTags.PLAYS_UNDERWATER_MUSIC))) { - return this.player.level().dimension() != Level.NETHER && this.player.getAbilities().instabuild && this.player.getAbilities().mayfly - ? Musics.CREATIVE - : (Music)holder.value().getBackgroundMusic().orElse(Musics.GAME); + if (level.dimension() != Level.NETHER && this.player.getAbilities().instabuild && this.player.getAbilities().mayfly) { + return new MusicInfo(Musics.CREATIVE, f); + } else { + Optional> optional = holder.value().getBackgroundMusic(); + if (optional.isPresent()) { + Optional optional2 = ((SimpleWeightedRandomList)optional.get()).getRandomValue(level.random); + return new MusicInfo((Music)optional2.orElse(null), f); + } else { + return new MusicInfo(Musics.GAME, f); + } + } } else { - return Musics.UNDER_WATER; + return new MusicInfo(Musics.UNDER_WATER, f); } } } else { - return Musics.MENU; + return new MusicInfo(Musics.MENU); } } @@ -2720,7 +2688,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements Component component = Component.literal(gameDirectory.getName()) .withStyle(ChatFormatting.UNDERLINE) - .withStyle(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, gameDirectory.getAbsolutePath()))); + .withStyle(style -> style.withClickEvent(new ClickEvent(Action.OPEN_FILE, gameDirectory.getAbsolutePath()))); return Component.translatable("screenshot.success", component); } catch (Exception var18) { LOGGER.error("Couldn't save image", (Throwable)var18); @@ -2771,7 +2739,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements GlUtil.freeMemory(byteBuffer); Component component = Component.literal(file.getName()) .withStyle(ChatFormatting.UNDERLINE) - .withStyle(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, file.getAbsolutePath()))); + .withStyle(style -> style.withClickEvent(new ClickEvent(Action.OPEN_FILE, file.getAbsolutePath()))); return Component.translatable("screenshot.success", component); } catch (Exception var15) { LOGGER.warn("Couldn't save screenshot", (Throwable)var15); @@ -2818,11 +2786,7 @@ public class Minecraft extends ReentrantBlockableEventLoop implements } public EntityModelSet getEntityModels() { - return this.entityModels; - } - - public EquipmentModelSet getEquipmentModels() { - return this.equipmentModels; + return (EntityModelSet)this.modelManager.entityModels().get(); } public boolean isTextFilteringEnabled() { @@ -2890,6 +2854,10 @@ public class Minecraft extends ReentrantBlockableEventLoop implements return defaultValue; } + public ItemModelResolver getItemModelResolver() { + return this.itemModelResolver; + } + @Nullable public static String getLauncherBrand() { return System.getProperty("minecraft.launcher.brand"); @@ -2921,6 +2889,6 @@ public class Minecraft extends ReentrantBlockableEventLoop implements } @Environment(EnvType.CLIENT) - record GameLoadCookie(RealmsClient realmsClient, GameConfig.QuickPlayData quickPlayData) { + record GameLoadCookie(RealmsClient realmsClient, QuickPlayData quickPlayData) { } } diff --git a/net/minecraft/client/OptionInstance.java b/net/minecraft/client/OptionInstance.java index b8491b9f..6b746531 100644 --- a/net/minecraft/client/OptionInstance.java +++ b/net/minecraft/client/OptionInstance.java @@ -187,8 +187,8 @@ public final class OptionInstance { public record ClampingLazyMaxIntRange(int minInclusive, IntSupplier maxSupplier, int encodableMaxInclusive) implements OptionInstance.IntRangeBase, OptionInstance.SliderableOrCyclableValueSet { - public Optional validateValue(Integer value) { - return Optional.of(Mth.clamp(value, this.minInclusive(), this.maxInclusive())); + public Optional validateValue(Integer integer) { + return Optional.of(Mth.clamp(integer, this.minInclusive(), this.maxInclusive())); } @Override @@ -263,8 +263,8 @@ public final class OptionInstance { this(minInclusive, maxInclusive, true); } - public Optional validateValue(Integer value) { - return value.compareTo(this.minInclusive()) >= 0 && value.compareTo(this.maxInclusive()) <= 0 ? Optional.of(value) : Optional.empty(); + public Optional validateValue(Integer integer) { + return integer.compareTo(this.minInclusive()) >= 0 && integer.compareTo(this.maxInclusive()) <= 0 ? Optional.of(integer) : Optional.empty(); } @Override @@ -279,20 +279,20 @@ public final class OptionInstance { int maxInclusive(); - default double toSliderValue(Integer value) { - if (value == this.minInclusive()) { + default double toSliderValue(Integer integer) { + if (integer == this.minInclusive()) { return 0.0; } else { - return value == this.maxInclusive() ? 1.0 : Mth.map(value.intValue() + 0.5, (double)this.minInclusive(), this.maxInclusive() + 1.0, 0.0, 1.0); + return integer == this.maxInclusive() ? 1.0 : Mth.map(integer.intValue() + 0.5, (double)this.minInclusive(), this.maxInclusive() + 1.0, 0.0, 1.0); } } - default Integer fromSliderValue(double value) { - if (value >= 1.0) { - value = 0.99999F; + default Integer fromSliderValue(double d) { + if (d >= 1.0) { + d = 0.99999F; } - return Mth.floor(Mth.map(value, 0.0, 1.0, (double)this.minInclusive(), this.maxInclusive() + 1.0)); + return Mth.floor(Mth.map(d, 0.0, 1.0, (double)this.minInclusive(), this.maxInclusive() + 1.0)); } default OptionInstance.SliderableValueSet xmap(IntFunction to, ToIntFunction from) { @@ -422,16 +422,16 @@ public final class OptionInstance { public static enum UnitDouble implements OptionInstance.SliderableValueSet { INSTANCE; - public Optional validateValue(Double value) { - return value >= 0.0 && value <= 1.0 ? Optional.of(value) : Optional.empty(); + public Optional validateValue(Double double_) { + return double_ >= 0.0 && double_ <= 1.0 ? Optional.of(double_) : Optional.empty(); } - public double toSliderValue(Double value) { - return value; + public double toSliderValue(Double double_) { + return double_; } - public Double fromSliderValue(double value) { - return value; + public Double fromSliderValue(double d) { + return d; } public OptionInstance.SliderableValueSet xmap(DoubleFunction encoder, ToDoubleFunction decoder) { diff --git a/net/minecraft/client/PeriodicNotificationManager.java b/net/minecraft/client/PeriodicNotificationManager.java index 2635e6b1..1873d6ce 100644 --- a/net/minecraft/client/PeriodicNotificationManager.java +++ b/net/minecraft/client/PeriodicNotificationManager.java @@ -60,10 +60,7 @@ public class PeriodicNotificationManager this.selector = selector; } - /** - * Performs any reloading that can be done off-thread, such as file IO - */ - protected Map> prepare(ResourceManager resourceManager, ProfilerFiller profiler) { + protected Map> prepare(ResourceManager resourceManager, ProfilerFiller profilerFiller) { try { Reader reader = resourceManager.openAsReader(this.notifications); @@ -93,8 +90,8 @@ public class PeriodicNotificationManager } } - protected void apply(Map> object, ResourceManager resourceManager, ProfilerFiller profiler) { - List list = (List)object.entrySet() + protected void apply(Map> map, ResourceManager resourceManager, ProfilerFiller profilerFiller) { + List list = (List)map.entrySet() .stream() .filter(entry -> this.selector.apply((String)entry.getKey())) .map(Entry::getValue) diff --git a/net/minecraft/client/ToggleKeyMapping.java b/net/minecraft/client/ToggleKeyMapping.java index f2638946..7e565ee3 100644 --- a/net/minecraft/client/ToggleKeyMapping.java +++ b/net/minecraft/client/ToggleKeyMapping.java @@ -1,6 +1,6 @@ package net.minecraft.client; -import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.InputConstants.Type; import java.util.function.BooleanSupplier; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -10,7 +10,7 @@ public class ToggleKeyMapping extends KeyMapping { private final BooleanSupplier needsToggle; public ToggleKeyMapping(String name, int keyCode, String category, BooleanSupplier needsToggle) { - super(name, InputConstants.Type.KEYSYM, keyCode, category); + super(name, Type.KEYSYM, keyCode, category); this.needsToggle = needsToggle; } diff --git a/net/minecraft/client/animation/definitions/CreakingAnimation.java b/net/minecraft/client/animation/definitions/CreakingAnimation.java index c54feda7..99ed5e10 100644 --- a/net/minecraft/client/animation/definitions/CreakingAnimation.java +++ b/net/minecraft/client/animation/definitions/CreakingAnimation.java @@ -12,169 +12,262 @@ import net.minecraft.client.animation.AnimationDefinition.Builder; @Environment(EnvType.CLIENT) public class CreakingAnimation { - public static final AnimationDefinition CREAKING_WALK = Builder.withLength(1.5F) + public static final AnimationDefinition CREAKING_WALK = Builder.withLength(1.125F) .looping() - .addAnimation("head", new AnimationChannel(Targets.POSITION, new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR))) - .addAnimation("body", new AnimationChannel(Targets.POSITION, new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), Interpolations.LINEAR))) .addAnimation( - "right_arm", + "upper_body", new AnimationChannel( Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.4167F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.9167F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR) + new Keyframe(0.0F, KeyframeAnimations.degreeVec(26.8802F, -23.399F, -9.0616F), Interpolations.LINEAR), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-2.2093F, 5.9119F, 0.0675F), Interpolations.LINEAR), + new Keyframe(0.5417F, KeyframeAnimations.degreeVec(23.0778F, 14.2906F, 4.6066F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(26.8802F, -23.399F, -9.0616F), Interpolations.LINEAR) ) ) .addAnimation( - "right_arm", - new AnimationChannel( - Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "left_arm", + "head", new AnimationChannel( Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(17.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.4167F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.9167F, KeyframeAnimations.degreeVec(17.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "left_arm", - new AnimationChannel( - Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "left_leg", - new AnimationChannel( - Targets.ROTATION, - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(60.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-50.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.1667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "left_leg", - new AnimationChannel( - Targets.POSITION, - new Keyframe(0.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), Interpolations.LINEAR), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.5F), Interpolations.LINEAR), - new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), Interpolations.LINEAR), - new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, 2.0F, -3.5F), Interpolations.LINEAR), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.1667F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "right_leg", - new AnimationChannel( - Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.1667F, KeyframeAnimations.degreeVec(-50.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0417F, KeyframeAnimations.degreeVec(-17.5F, -62.5F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.4167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.4583F, KeyframeAnimations.degreeVec(0.0F, 15.0F, 0.0F), Interpolations.LINEAR), new Keyframe(0.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.1667F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(60.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), Interpolations.LINEAR) + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(-37.1532F, 81.1131F, -28.3621F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_arm", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(-32.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(12.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_arm", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5417F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(-9.0923F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-15.137F, -66.7758F, 13.9603F), Interpolations.LINEAR), + new Keyframe(0.8333F, KeyframeAnimations.degreeVec(-9.0923F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_leg", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(49.8924F, -3.8282F, 3.2187F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(17.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(-56.5613F, -12.2403F, -8.7374F), Interpolations.LINEAR), + new Keyframe(0.9167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_leg", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, 0.1846F, 0.5979F), Interpolations.LINEAR), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, -0.0665F, -2.2177F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.3563F, -4.3474F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.posVec(0.0F, 0.1047F, -1.6556F), Interpolations.LINEAR), + new Keyframe(0.9167F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_leg", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(25.5305F, 11.3125F, 5.3525F), Interpolations.LINEAR), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-49.5628F, 7.3556F, 6.7933F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.4583F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.9167F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(55.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(25.5305F, 11.3125F, 5.3525F), Interpolations.LINEAR) ) ) .addAnimation( "right_leg", new AnimationChannel( Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.0F, -3.5F), Interpolations.LINEAR), - new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), Interpolations.LINEAR), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), Interpolations.LINEAR), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), Interpolations.LINEAR), - new Keyframe(1.1667F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.5F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.0F, -3.5F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "upper_body", - new AnimationChannel( - Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), Interpolations.LINEAR) - ) - ) - .addAnimation( - "upper_body", - new AnimationChannel( - Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), Interpolations.LINEAR), - new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), Interpolations.LINEAR), - new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), Interpolations.LINEAR), - new Keyframe(1.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), Interpolations.LINEAR), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.9674F, -3.6578F), Interpolations.LINEAR), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, -0.2979F, -0.9411F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, -0.3F, -0.94F), Interpolations.LINEAR), + new Keyframe(0.4583F, KeyframeAnimations.posVec(0.0F, -0.3F, 1.06F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.9674F, -3.6578F), Interpolations.LINEAR) ) ) .build(); - public static final AnimationDefinition CREAKING_ATTACK = Builder.withLength(0.375F) + public static final AnimationDefinition CREAKING_ATTACK = Builder.withLength(0.7083F) + .looping() + .addAnimation( + "upper_body", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.degreeVec(0.0F, 45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(-115.0F, 67.5F, -90.0F), Interpolations.LINEAR), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(67.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5417F, KeyframeAnimations.degreeVec(0.0F, 45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "upper_body", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.posVec(0.0F, -2.7716F, -1.1481F), Interpolations.LINEAR), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5417F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "upper_body", + new AnimationChannel( + Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR) + ) + ) + .addAnimation( + "head", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(0.0F, -45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(-11.25F, -45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.degreeVec(-117.3939F, 76.6331F, -130.1483F), Interpolations.LINEAR), + new Keyframe(0.4167F, KeyframeAnimations.degreeVec(-45.0F, -45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(60.0F, -45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(60.0F, -45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(0.0F, -45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "head", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.3827F, 0.5133F, -0.7682F), Interpolations.LINEAR), + new Keyframe(0.5833F, KeyframeAnimations.posVec(0.3827F, 0.5133F, -0.7682F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "head", + new AnimationChannel( + Targets.SCALE, + new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR), + new Keyframe(0.4167F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.scaleVec(1.0, 1.3F, 1.0), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR) + ) + ) .addAnimation( "right_arm", new AnimationChannel( Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(21.1693F, 37.7555F, 122.3122F), Interpolations.LINEAR), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(-60.349F, -31.3213F, -16.4846F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(-54.3924F, -22.7992F, -27.3049F), Interpolations.LINEAR), - new Keyframe(0.2917F, KeyframeAnimations.degreeVec(-53.0231F, -26.8304F, -30.5649F), Interpolations.LINEAR), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.4583F, KeyframeAnimations.degreeVec(55.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_arm", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_leg", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_leg", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_leg", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(0.0F, 45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(0.0F, 45.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_leg", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.posVec(0.7071F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.posVec(0.7071F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) ) ) .addAnimation( "left_arm", new AnimationChannel( Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(15.0F, 0.0F, -10.0F), Interpolations.LINEAR), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(22.4229F, 1.9113F, -14.6211F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(38.9206F, -9.562F, -4.6084F), Interpolations.LINEAR), - new Keyframe(0.2917F, KeyframeAnimations.degreeVec(51.4206F, -9.562F, -4.6084F), Interpolations.LINEAR), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(10.3453F, 14.7669F, 2.664F), Interpolations.LINEAR), + new Keyframe(0.4583F, KeyframeAnimations.degreeVec(57.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) ) ) .addAnimation( - "upper_body", + "left_arm", new AnimationChannel( - Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(-12.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(11.1575F, 0.2125F, -2.2036F), Interpolations.LINEAR), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.2917F, KeyframeAnimations.degreeVec(25.0F, 0.0F, 0.0F), Interpolations.LINEAR), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) ) ) .build(); @@ -235,4 +328,112 @@ public class CreakingAnimation { ) ) .build(); + public static final AnimationDefinition CREAKING_DEATH = Builder.withLength(2.25F) + .addAnimation( + "upper_body", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.degreeVec(-40.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.degreeVec(-5.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(16.25F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(29.0814F, 62.5516F, 26.5771F), Interpolations.LINEAR), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(12.2115F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.25F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(-47.64F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(21.96F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(2.25F, KeyframeAnimations.degreeVec(17.3266F, 7.9022F, -0.1381F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "upper_body", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.posVec(0.0F, 0.557F, 1.2659F), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, -2.0889F, -0.3493F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "upper_body", + new AnimationChannel( + Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0, 1.1F, 1.0), Interpolations.LINEAR), + new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0, 0.9F, 1.0), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.scaleVec(1.0, 1.0, 1.0), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_arm", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.5417F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(-12.1479F, -34.3927F, 6.9326F), Interpolations.LINEAR), + new Keyframe(1.6667F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "right_arm", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_arm", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.8333F, KeyframeAnimations.degreeVec(-4.4444F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(-26.7402F, -78.831F, 26.3025F), Interpolations.LINEAR), + new Keyframe(0.9583F, KeyframeAnimations.degreeVec(-5.5556F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "left_arm", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "head", + new AnimationChannel( + Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.0833F, KeyframeAnimations.degreeVec(-5.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(2.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5417F, KeyframeAnimations.degreeVec(5.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-67.4168F, -12.9552F, -8.0231F), Interpolations.LINEAR), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(8.5F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.773F, -29.5608F, -5.3627F), Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.7917F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(1.8333F, KeyframeAnimations.degreeVec(12.9625F, 39.2735F, 8.2901F), Interpolations.LINEAR), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .addAnimation( + "head", + new AnimationChannel( + Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR), + new Keyframe(0.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), Interpolations.LINEAR) + ) + ) + .build(); } diff --git a/net/minecraft/client/color/block/BlockColors.java b/net/minecraft/client/color/block/BlockColors.java index 9c9ed41b..b4a606a1 100644 --- a/net/minecraft/client/color/block/BlockColors.java +++ b/net/minecraft/client/color/block/BlockColors.java @@ -12,7 +12,6 @@ import net.minecraft.core.IdMapper; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.ARGB; import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.FoliageColor; import net.minecraft.world.level.GrassColor; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -29,6 +28,8 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class BlockColors { private static final int DEFAULT = -1; + public static final int LILY_PAD_IN_WORLD = -14647248; + public static final int LILY_PAD_DEFAULT = -9321636; private final IdMapper blockColors = new IdMapper<>(32); private final Map>> coloringStates = Maps.>>newHashMap(); @@ -58,12 +59,12 @@ public class BlockColors { return -1; } }, Blocks.PINK_PETALS); - blockColors.register((blockState, blockAndTintGetter, blockPos, i) -> FoliageColor.getEvergreenColor(), Blocks.SPRUCE_LEAVES); - blockColors.register((blockState, blockAndTintGetter, blockPos, i) -> FoliageColor.getBirchColor(), Blocks.BIRCH_LEAVES); + blockColors.register((blockState, blockAndTintGetter, blockPos, i) -> -10380959, Blocks.SPRUCE_LEAVES); + blockColors.register((blockState, blockAndTintGetter, blockPos, i) -> -8345771, Blocks.BIRCH_LEAVES); blockColors.register( (blockState, blockAndTintGetter, blockPos, i) -> blockAndTintGetter != null && blockPos != null ? BiomeColors.getAverageFoliageColor(blockAndTintGetter, blockPos) - : FoliageColor.getDefaultColor(), + : -12012264, Blocks.OAK_LEAVES, Blocks.JUNGLE_LEAVES, Blocks.ACACIA_LEAVES, diff --git a/net/minecraft/client/color/item/Constant.java b/net/minecraft/client/color/item/Constant.java new file mode 100644 index 00000000..17f79d80 --- /dev/null +++ b/net/minecraft/client/color/item/Constant.java @@ -0,0 +1,34 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.ARGB; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Constant(int value) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.fieldOf("value").forGetter(Constant::value)).apply(instance, Constant::new) + ); + + public Constant(int value) { + value = ARGB.opaque(value); + this.value = value; + } + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + return this.value; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/CustomModelDataSource.java b/net/minecraft/client/color/item/CustomModelDataSource.java new file mode 100644 index 00000000..a68a01a5 --- /dev/null +++ b/net/minecraft/client/color/item/CustomModelDataSource.java @@ -0,0 +1,43 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.ARGB; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.CustomModelData; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record CustomModelDataSource(int index, int defaultColor) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ExtraCodecs.NON_NEGATIVE_INT.optionalFieldOf("index", 0).forGetter(CustomModelDataSource::index), + ExtraCodecs.RGB_COLOR_CODEC.fieldOf("default").forGetter(CustomModelDataSource::defaultColor) + ) + .apply(instance, CustomModelDataSource::new) + ); + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + CustomModelData customModelData = stack.get(DataComponents.CUSTOM_MODEL_DATA); + if (customModelData != null) { + Integer integer = customModelData.getColor(this.index); + if (integer != null) { + return ARGB.opaque(integer); + } + } + + return ARGB.opaque(this.defaultColor); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/Dye.java b/net/minecraft/client/color/item/Dye.java new file mode 100644 index 00000000..ed5ef548 --- /dev/null +++ b/net/minecraft/client/color/item/Dye.java @@ -0,0 +1,29 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.DyedItemColor; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Dye(int defaultColor) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.fieldOf("default").forGetter(Dye::defaultColor)).apply(instance, Dye::new) + ); + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + return DyedItemColor.getOrDefault(stack, this.defaultColor); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/Firework.java b/net/minecraft/client/color/item/Firework.java new file mode 100644 index 00000000..585b02b8 --- /dev/null +++ b/net/minecraft/client/color/item/Firework.java @@ -0,0 +1,56 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.ints.IntList; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.ARGB; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.FireworkExplosion; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Firework(int defaultColor) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.fieldOf("default").forGetter(Firework::defaultColor)).apply(instance, Firework::new) + ); + + public Firework() { + this(-7697782); + } + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + FireworkExplosion fireworkExplosion = stack.get(DataComponents.FIREWORK_EXPLOSION); + IntList intList = fireworkExplosion != null ? fireworkExplosion.colors() : IntList.of(); + int i = intList.size(); + if (i == 0) { + return this.defaultColor; + } else if (i == 1) { + return ARGB.opaque(intList.getInt(0)); + } else { + int j = 0; + int k = 0; + int l = 0; + + for (int m = 0; m < i; m++) { + int n = intList.getInt(m); + j += ARGB.red(n); + k += ARGB.green(n); + l += ARGB.blue(n); + } + + return ARGB.color(j / i, k / i, l / i); + } + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/GrassColorSource.java b/net/minecraft/client/color/item/GrassColorSource.java new file mode 100644 index 00000000..c1645093 --- /dev/null +++ b/net/minecraft/client/color/item/GrassColorSource.java @@ -0,0 +1,37 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.GrassColor; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record GrassColorSource(float temperature, float downfall) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ExtraCodecs.floatRange(0.0F, 1.0F).fieldOf("temperature").forGetter(GrassColorSource::temperature), + ExtraCodecs.floatRange(0.0F, 1.0F).fieldOf("downfall").forGetter(GrassColorSource::downfall) + ) + .apply(instance, GrassColorSource::new) + ); + + public GrassColorSource() { + this(0.5F, 1.0F); + } + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + return GrassColor.get(this.temperature, this.downfall); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/ItemColor.java b/net/minecraft/client/color/item/ItemColor.java deleted file mode 100644 index e31a8476..00000000 --- a/net/minecraft/client/color/item/ItemColor.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.minecraft.client.color.item; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.world.item.ItemStack; - -@Environment(EnvType.CLIENT) -public interface ItemColor { - int getColor(ItemStack itemStack, int i); -} diff --git a/net/minecraft/client/color/item/ItemColors.java b/net/minecraft/client/color/item/ItemColors.java deleted file mode 100644 index 0872701f..00000000 --- a/net/minecraft/client/color/item/ItemColors.java +++ /dev/null @@ -1,116 +0,0 @@ -package net.minecraft.client.color.item; - -import it.unimi.dsi.fastutil.ints.IntList; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.core.IdMapper; -import net.minecraft.core.component.DataComponents; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.util.ARGB; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.SpawnEggItem; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.item.component.DyedItemColor; -import net.minecraft.world.item.component.FireworkExplosion; -import net.minecraft.world.item.component.MapItemColor; -import net.minecraft.world.level.FoliageColor; -import net.minecraft.world.level.GrassColor; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; - -@Environment(EnvType.CLIENT) -public class ItemColors { - private static final int DEFAULT = -1; - private final IdMapper itemColors = new IdMapper<>(32); - - public static ItemColors createDefault(BlockColors colors) { - ItemColors itemColors = new ItemColors(); - itemColors.register( - (itemStack, i) -> i > 0 ? -1 : DyedItemColor.getOrDefault(itemStack, -6265536), - Items.LEATHER_HELMET, - Items.LEATHER_CHESTPLATE, - Items.LEATHER_LEGGINGS, - Items.LEATHER_BOOTS, - Items.LEATHER_HORSE_ARMOR - ); - itemColors.register((itemStack, i) -> i != 1 ? -1 : DyedItemColor.getOrDefault(itemStack, 0), Items.WOLF_ARMOR); - itemColors.register((itemStack, i) -> GrassColor.get(0.5, 1.0), Blocks.TALL_GRASS, Blocks.LARGE_FERN); - itemColors.register((itemStack, i) -> { - if (i != 1) { - return -1; - } else { - FireworkExplosion fireworkExplosion = itemStack.get(DataComponents.FIREWORK_EXPLOSION); - IntList intList = fireworkExplosion != null ? fireworkExplosion.colors() : IntList.of(); - int j = intList.size(); - if (j == 0) { - return -7697782; - } else if (j == 1) { - return ARGB.opaque(intList.getInt(0)); - } else { - int k = 0; - int l = 0; - int m = 0; - - for (int n = 0; n < j; n++) { - int o = intList.getInt(n); - k += ARGB.red(o); - l += ARGB.green(o); - m += ARGB.blue(o); - } - - return ARGB.color(k / j, l / j, m / j); - } - } - }, Items.FIREWORK_STAR); - itemColors.register( - (itemStack, i) -> i > 0 ? -1 : ARGB.opaque(itemStack.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY).getColor()), - Items.POTION, - Items.SPLASH_POTION, - Items.LINGERING_POTION, - Items.TIPPED_ARROW - ); - - for (SpawnEggItem spawnEggItem : SpawnEggItem.eggs()) { - itemColors.register((itemStack, i) -> ARGB.opaque(spawnEggItem.getColor(i)), spawnEggItem); - } - - itemColors.register( - (itemStack, i) -> { - BlockState blockState = ((BlockItem)itemStack.getItem()).getBlock().defaultBlockState(); - return colors.getColor(blockState, null, null, i); - }, - Blocks.GRASS_BLOCK, - Blocks.SHORT_GRASS, - Blocks.FERN, - Blocks.VINE, - Blocks.OAK_LEAVES, - Blocks.SPRUCE_LEAVES, - Blocks.BIRCH_LEAVES, - Blocks.JUNGLE_LEAVES, - Blocks.ACACIA_LEAVES, - Blocks.DARK_OAK_LEAVES, - Blocks.LILY_PAD - ); - itemColors.register((itemStack, i) -> FoliageColor.getMangroveColor(), Blocks.MANGROVE_LEAVES); - itemColors.register( - (itemStack, i) -> i == 0 ? -1 : ARGB.opaque(itemStack.getOrDefault(DataComponents.MAP_COLOR, MapItemColor.DEFAULT).rgb()), Items.FILLED_MAP - ); - return itemColors; - } - - public int getColor(ItemStack stack, int tintIndex) { - ItemColor itemColor = this.itemColors.byId(BuiltInRegistries.ITEM.getId(stack.getItem())); - return itemColor == null ? -1 : itemColor.getColor(stack, tintIndex); - } - - public void register(ItemColor itemColor, ItemLike... items) { - for (ItemLike itemLike : items) { - this.itemColors.addMapping(itemColor, Item.getId(itemLike.asItem())); - } - } -} diff --git a/net/minecraft/client/color/item/ItemTintSource.java b/net/minecraft/client/color/item/ItemTintSource.java new file mode 100644 index 00000000..c9b8a72f --- /dev/null +++ b/net/minecraft/client/color/item/ItemTintSource.java @@ -0,0 +1,16 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public interface ItemTintSource { + int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity); + + MapCodec type(); +} diff --git a/net/minecraft/client/color/item/ItemTintSources.java b/net/minecraft/client/color/item/ItemTintSources.java new file mode 100644 index 00000000..8bc3c455 --- /dev/null +++ b/net/minecraft/client/color/item/ItemTintSources.java @@ -0,0 +1,25 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; + +@Environment(EnvType.CLIENT) +public class ItemTintSources { + private static final ExtraCodecs.LateBoundIdMapper> ID_MAPPER = new ExtraCodecs.LateBoundIdMapper<>(); + public static final Codec CODEC = ID_MAPPER.codec(ResourceLocation.CODEC).dispatch(ItemTintSource::type, mapCodec -> mapCodec); + + public static void bootstrap() { + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("custom_model_data"), CustomModelDataSource.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("constant"), Constant.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("dye"), Dye.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("grass"), GrassColorSource.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("firework"), Firework.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("potion"), Potion.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("map_color"), MapColor.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("team"), TeamColor.MAP_CODEC); + } +} diff --git a/net/minecraft/client/color/item/MapColor.java b/net/minecraft/client/color/item/MapColor.java new file mode 100644 index 00000000..338c2410 --- /dev/null +++ b/net/minecraft/client/color/item/MapColor.java @@ -0,0 +1,36 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.ARGB; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.MapItemColor; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record MapColor(int defaultColor) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.fieldOf("default").forGetter(MapColor::defaultColor)).apply(instance, MapColor::new) + ); + + public MapColor() { + this(MapItemColor.DEFAULT.rgb()); + } + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + MapItemColor mapItemColor = stack.get(DataComponents.MAP_COLOR); + return mapItemColor != null ? ARGB.opaque(mapItemColor.rgb()) : ARGB.opaque(this.defaultColor); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/Potion.java b/net/minecraft/client/color/item/Potion.java new file mode 100644 index 00000000..061453e0 --- /dev/null +++ b/net/minecraft/client/color/item/Potion.java @@ -0,0 +1,36 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.ARGB; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.alchemy.PotionContents; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Potion(int defaultColor) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.fieldOf("default").forGetter(Potion::defaultColor)).apply(instance, Potion::new) + ); + + public Potion() { + this(-13083194); + } + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + PotionContents potionContents = stack.get(DataComponents.POTION_CONTENTS); + return potionContents != null ? ARGB.opaque(potionContents.getColorOr(this.defaultColor)) : ARGB.opaque(this.defaultColor); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/color/item/TeamColor.java b/net/minecraft/client/color/item/TeamColor.java new file mode 100644 index 00000000..7354a86f --- /dev/null +++ b/net/minecraft/client/color/item/TeamColor.java @@ -0,0 +1,41 @@ +package net.minecraft.client.color.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.ChatFormatting; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.ARGB; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.scores.Team; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record TeamColor(int defaultColor) implements ItemTintSource { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.fieldOf("default").forGetter(TeamColor::defaultColor)).apply(instance, TeamColor::new) + ); + + @Override + public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) { + if (entity != null) { + Team team = entity.getTeam(); + if (team != null) { + ChatFormatting chatFormatting = team.getColor(); + if (chatFormatting.getColor() != null) { + return ARGB.opaque(chatFormatting.getColor()); + } + } + } + + return ARGB.opaque(this.defaultColor); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/data/Main.java b/net/minecraft/client/data/Main.java new file mode 100644 index 00000000..659a7f7a --- /dev/null +++ b/net/minecraft/client/data/Main.java @@ -0,0 +1,54 @@ +package net.minecraft.client.data; + +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import joptsimple.OptionParser; +import joptsimple.OptionSet; +import joptsimple.OptionSpec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.SharedConstants; +import net.minecraft.SuppressForbidden; +import net.minecraft.client.ClientBootstrap; +import net.minecraft.client.data.models.EquipmentAssetProvider; +import net.minecraft.client.data.models.ModelProvider; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DataGenerator.PackGenerator; +import net.minecraft.obfuscate.DontObfuscate; +import net.minecraft.server.Bootstrap; + +@Environment(EnvType.CLIENT) +public class Main { + @DontObfuscate + @SuppressForbidden( + reason = "System.out needed before bootstrap" + ) + public static void main(String[] strings) throws IOException { + SharedConstants.tryDetectVersion(); + OptionParser optionParser = new OptionParser(); + OptionSpec optionSpec = optionParser.accepts("help", "Show the help menu").forHelp(); + OptionSpec optionSpec2 = optionParser.accepts("client", "Include client generators"); + OptionSpec optionSpec3 = optionParser.accepts("all", "Include all generators"); + OptionSpec optionSpec4 = optionParser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated"); + OptionSet optionSet = optionParser.parse(strings); + if (!optionSet.has(optionSpec) && optionSet.hasOptions()) { + Path path = Paths.get(optionSpec4.value(optionSet)); + boolean bl = optionSet.has(optionSpec3); + boolean bl2 = bl || optionSet.has(optionSpec2); + Bootstrap.bootStrap(); + ClientBootstrap.bootstrap(); + DataGenerator dataGenerator = new DataGenerator(path, SharedConstants.getCurrentVersion(), true); + addClientProviders(dataGenerator, bl2); + dataGenerator.run(); + } else { + optionParser.printHelpOn(System.out); + } + } + + public static void addClientProviders(DataGenerator dataGenerator, boolean toRun) { + PackGenerator packGenerator = dataGenerator.getVanillaPack(toRun); + packGenerator.addProvider(ModelProvider::new); + packGenerator.addProvider(EquipmentAssetProvider::new); + } +} diff --git a/net/minecraft/client/data/models/BlockModelGenerators.java b/net/minecraft/client/data/models/BlockModelGenerators.java new file mode 100644 index 00000000..fe2bbfbe --- /dev/null +++ b/net/minecraft/client/data/models/BlockModelGenerators.java @@ -0,0 +1,5520 @@ +package net.minecraft.client.data.models; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.Int2ObjectFunction; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.UnaryOperator; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.Util; +import net.minecraft.client.color.item.GrassColorSource; +import net.minecraft.client.color.item.ItemTintSource; +import net.minecraft.client.data.models.blockstates.BlockStateGenerator; +import net.minecraft.client.data.models.blockstates.Condition; +import net.minecraft.client.data.models.blockstates.MultiPartGenerator; +import net.minecraft.client.data.models.blockstates.MultiVariantGenerator; +import net.minecraft.client.data.models.blockstates.PropertyDispatch; +import net.minecraft.client.data.models.blockstates.Variant; +import net.minecraft.client.data.models.blockstates.VariantProperties; +import net.minecraft.client.data.models.model.ItemModelUtils; +import net.minecraft.client.data.models.model.ModelInstance; +import net.minecraft.client.data.models.model.ModelLocationUtils; +import net.minecraft.client.data.models.model.ModelTemplate; +import net.minecraft.client.data.models.model.ModelTemplates; +import net.minecraft.client.data.models.model.TextureMapping; +import net.minecraft.client.data.models.model.TextureSlot; +import net.minecraft.client.data.models.model.TexturedModel; +import net.minecraft.client.renderer.item.ItemModel; +import net.minecraft.client.renderer.special.BannerSpecialRenderer; +import net.minecraft.client.renderer.special.BedSpecialRenderer; +import net.minecraft.client.renderer.special.ChestSpecialRenderer; +import net.minecraft.client.renderer.special.ConduitSpecialRenderer; +import net.minecraft.client.renderer.special.DecoratedPotSpecialRenderer; +import net.minecraft.client.renderer.special.ShulkerBoxSpecialRenderer; +import net.minecraft.client.renderer.special.SkullSpecialRenderer; +import net.minecraft.client.renderer.special.SpecialModelRenderer; +import net.minecraft.core.Direction; +import net.minecraft.core.FrontAndTop; +import net.minecraft.core.Direction.Axis; +import net.minecraft.data.BlockFamilies; +import net.minecraft.data.BlockFamily; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.BeehiveBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.CrafterBlock; +import net.minecraft.world.level.block.CreakingHeartBlock; +import net.minecraft.world.level.block.HangingMossBlock; +import net.minecraft.world.level.block.LayeredCauldronBlock; +import net.minecraft.world.level.block.LightBlock; +import net.minecraft.world.level.block.MangrovePropaguleBlock; +import net.minecraft.world.level.block.MossyCarpetBlock; +import net.minecraft.world.level.block.MultifaceBlock; +import net.minecraft.world.level.block.PitcherCropBlock; +import net.minecraft.world.level.block.SnifferEggBlock; +import net.minecraft.world.level.block.VaultBlock; +import net.minecraft.world.level.block.SkullBlock.Type; +import net.minecraft.world.level.block.SkullBlock.Types; +import net.minecraft.world.level.block.state.properties.AttachFace; +import net.minecraft.world.level.block.state.properties.BambooLeaves; +import net.minecraft.world.level.block.state.properties.BellAttachType; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.ComparatorMode; +import net.minecraft.world.level.block.state.properties.DoorHingeSide; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.level.block.state.properties.DripstoneThickness; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.Half; +import net.minecraft.world.level.block.state.properties.PistonType; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.level.block.state.properties.RailShape; +import net.minecraft.world.level.block.state.properties.RedstoneSide; +import net.minecraft.world.level.block.state.properties.SculkSensorPhase; +import net.minecraft.world.level.block.state.properties.SlabType; +import net.minecraft.world.level.block.state.properties.StairsShape; +import net.minecraft.world.level.block.state.properties.Tilt; +import net.minecraft.world.level.block.state.properties.WallSide; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class BlockModelGenerators { + final Consumer blockStateOutput; + final ItemModelOutput itemModelOutput; + final BiConsumer modelOutput; + final List nonOrientableTrapdoor = ImmutableList.of(Blocks.OAK_TRAPDOOR, Blocks.DARK_OAK_TRAPDOOR, Blocks.IRON_TRAPDOOR); + final Map fullBlockModelCustomGenerators = ImmutableMap.builder() + .put(Blocks.STONE, BlockModelGenerators::createMirroredCubeGenerator) + .put(Blocks.DEEPSLATE, BlockModelGenerators::createMirroredColumnGenerator) + .put(Blocks.MUD_BRICKS, BlockModelGenerators::createNorthWestMirroredCubeGenerator) + .build(); + final Map texturedModels = ImmutableMap.builder() + .put(Blocks.SANDSTONE, TexturedModel.TOP_BOTTOM_WITH_WALL.get(Blocks.SANDSTONE)) + .put(Blocks.RED_SANDSTONE, TexturedModel.TOP_BOTTOM_WITH_WALL.get(Blocks.RED_SANDSTONE)) + .put(Blocks.SMOOTH_SANDSTONE, TexturedModel.createAllSame(TextureMapping.getBlockTexture(Blocks.SANDSTONE, "_top"))) + .put(Blocks.SMOOTH_RED_SANDSTONE, TexturedModel.createAllSame(TextureMapping.getBlockTexture(Blocks.RED_SANDSTONE, "_top"))) + .put( + Blocks.CUT_SANDSTONE, + TexturedModel.COLUMN + .get(Blocks.SANDSTONE) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CUT_SANDSTONE))) + ) + .put( + Blocks.CUT_RED_SANDSTONE, + TexturedModel.COLUMN + .get(Blocks.RED_SANDSTONE) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CUT_RED_SANDSTONE))) + ) + .put(Blocks.QUARTZ_BLOCK, TexturedModel.COLUMN.get(Blocks.QUARTZ_BLOCK)) + .put(Blocks.SMOOTH_QUARTZ, TexturedModel.createAllSame(TextureMapping.getBlockTexture(Blocks.QUARTZ_BLOCK, "_bottom"))) + .put(Blocks.BLACKSTONE, TexturedModel.COLUMN_WITH_WALL.get(Blocks.BLACKSTONE)) + .put(Blocks.DEEPSLATE, TexturedModel.COLUMN_WITH_WALL.get(Blocks.DEEPSLATE)) + .put( + Blocks.CHISELED_QUARTZ_BLOCK, + TexturedModel.COLUMN + .get(Blocks.CHISELED_QUARTZ_BLOCK) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CHISELED_QUARTZ_BLOCK))) + ) + .put(Blocks.CHISELED_SANDSTONE, TexturedModel.COLUMN.get(Blocks.CHISELED_SANDSTONE).updateTextures(textureMapping -> { + textureMapping.put(TextureSlot.END, TextureMapping.getBlockTexture(Blocks.SANDSTONE, "_top")); + textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CHISELED_SANDSTONE)); + })) + .put(Blocks.CHISELED_RED_SANDSTONE, TexturedModel.COLUMN.get(Blocks.CHISELED_RED_SANDSTONE).updateTextures(textureMapping -> { + textureMapping.put(TextureSlot.END, TextureMapping.getBlockTexture(Blocks.RED_SANDSTONE, "_top")); + textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CHISELED_RED_SANDSTONE)); + })) + .put(Blocks.CHISELED_TUFF_BRICKS, TexturedModel.COLUMN_WITH_WALL.get(Blocks.CHISELED_TUFF_BRICKS)) + .put(Blocks.CHISELED_TUFF, TexturedModel.COLUMN_WITH_WALL.get(Blocks.CHISELED_TUFF)) + .build(); + static final Map> SHAPE_CONSUMERS = ImmutableMap.>builder() + .put(net.minecraft.data.BlockFamily.Variant.BUTTON, BlockModelGenerators.BlockFamilyProvider::button) + .put(net.minecraft.data.BlockFamily.Variant.DOOR, BlockModelGenerators.BlockFamilyProvider::door) + .put(net.minecraft.data.BlockFamily.Variant.CHISELED, BlockModelGenerators.BlockFamilyProvider::fullBlockVariant) + .put(net.minecraft.data.BlockFamily.Variant.CRACKED, BlockModelGenerators.BlockFamilyProvider::fullBlockVariant) + .put(net.minecraft.data.BlockFamily.Variant.CUSTOM_FENCE, BlockModelGenerators.BlockFamilyProvider::customFence) + .put(net.minecraft.data.BlockFamily.Variant.FENCE, BlockModelGenerators.BlockFamilyProvider::fence) + .put(net.minecraft.data.BlockFamily.Variant.CUSTOM_FENCE_GATE, BlockModelGenerators.BlockFamilyProvider::customFenceGate) + .put(net.minecraft.data.BlockFamily.Variant.FENCE_GATE, BlockModelGenerators.BlockFamilyProvider::fenceGate) + .put(net.minecraft.data.BlockFamily.Variant.SIGN, BlockModelGenerators.BlockFamilyProvider::sign) + .put(net.minecraft.data.BlockFamily.Variant.SLAB, BlockModelGenerators.BlockFamilyProvider::slab) + .put(net.minecraft.data.BlockFamily.Variant.STAIRS, BlockModelGenerators.BlockFamilyProvider::stairs) + .put(net.minecraft.data.BlockFamily.Variant.PRESSURE_PLATE, BlockModelGenerators.BlockFamilyProvider::pressurePlate) + .put(net.minecraft.data.BlockFamily.Variant.TRAPDOOR, BlockModelGenerators.BlockFamilyProvider::trapdoor) + .put(net.minecraft.data.BlockFamily.Variant.WALL, BlockModelGenerators.BlockFamilyProvider::wall) + .build(); + public static final List>> MULTIFACE_GENERATOR = List.of( + Pair.of(Direction.NORTH, resourceLocation -> Variant.variant().with(VariantProperties.MODEL, resourceLocation)), + Pair.of( + Direction.EAST, + resourceLocation -> Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ), + Pair.of( + Direction.SOUTH, + resourceLocation -> Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ), + Pair.of( + Direction.WEST, + resourceLocation -> Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ), + Pair.of( + Direction.UP, + resourceLocation -> Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ), + Pair.of( + Direction.DOWN, + resourceLocation -> Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + ); + private static final Map CHISELED_BOOKSHELF_SLOT_MODEL_CACHE = new HashMap(); + + private static BlockStateGenerator createMirroredCubeGenerator( + Block cubeBlock, ResourceLocation location, TextureMapping textureMapping, BiConsumer modelOutput + ) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_MIRRORED_ALL.create(cubeBlock, textureMapping, modelOutput); + return createRotatedVariant(cubeBlock, location, resourceLocation); + } + + private static BlockStateGenerator createNorthWestMirroredCubeGenerator( + Block cubeBlock, ResourceLocation location, TextureMapping textureMapping, BiConsumer modelOutput + ) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_NORTH_WEST_MIRRORED_ALL.create(cubeBlock, textureMapping, modelOutput); + return createSimpleBlock(cubeBlock, resourceLocation); + } + + private static BlockStateGenerator createMirroredColumnGenerator( + Block columnBlock, ResourceLocation location, TextureMapping textureMapping, BiConsumer modelOutput + ) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN_MIRRORED.create(columnBlock, textureMapping, modelOutput); + return createRotatedVariant(columnBlock, location, resourceLocation).with(createRotatedPillar()); + } + + public BlockModelGenerators( + Consumer blockStateOutput, ItemModelOutput itemModelOutput, BiConsumer modelOutput + ) { + this.blockStateOutput = blockStateOutput; + this.itemModelOutput = itemModelOutput; + this.modelOutput = modelOutput; + } + + private void registerSimpleItemModel(Item item, ResourceLocation model) { + this.itemModelOutput.accept(item, ItemModelUtils.plainModel(model)); + } + + void registerSimpleItemModel(Block block, ResourceLocation model) { + this.itemModelOutput.accept(block.asItem(), ItemModelUtils.plainModel(model)); + } + + private void registerSimpleTintedItemModel(Block block, ResourceLocation model, ItemTintSource tintSource) { + this.itemModelOutput.accept(block.asItem(), ItemModelUtils.tintedModel(model, tintSource)); + } + + private ResourceLocation createFlatItemModel(Item item) { + return ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(item), this.modelOutput); + } + + ResourceLocation createFlatItemModelWithBlockTexture(Item item, Block block) { + return ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(block), this.modelOutput); + } + + private ResourceLocation createFlatItemModelWithBlockTexture(Item item, Block block, String suffix) { + return ModelTemplates.FLAT_ITEM + .create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(TextureMapping.getBlockTexture(block, suffix)), this.modelOutput); + } + + ResourceLocation createFlatItemModelWithBlockTextureAndOverlay(Item item, Block block, String suffix) { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(block); + ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(block, suffix); + return ModelTemplates.TWO_LAYERED_ITEM + .create(ModelLocationUtils.getModelLocation(item), TextureMapping.layered(resourceLocation, resourceLocation2), this.modelOutput); + } + + void registerSimpleFlatItemModel(Item item) { + this.registerSimpleItemModel(item, this.createFlatItemModel(item)); + } + + private void registerSimpleFlatItemModel(Block block) { + Item item = block.asItem(); + if (item != Items.AIR) { + this.registerSimpleItemModel(item, this.createFlatItemModelWithBlockTexture(item, block)); + } + } + + private void registerSimpleFlatItemModel(Block block, String suffix) { + Item item = block.asItem(); + if (item != Items.AIR) { + this.registerSimpleItemModel(item, this.createFlatItemModelWithBlockTexture(item, block, suffix)); + } + } + + private void registerTwoLayerFlatItemModel(Block block, String suffix) { + Item item = block.asItem(); + if (item != Items.AIR) { + ResourceLocation resourceLocation = this.createFlatItemModelWithBlockTextureAndOverlay(item, block, suffix); + this.registerSimpleItemModel(item, resourceLocation); + } + } + + private static PropertyDispatch createHorizontalFacingDispatch() { + return PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) + .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + .select(Direction.NORTH, Variant.variant()); + } + + private static PropertyDispatch createHorizontalFacingDispatchAlt() { + return PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) + .select(Direction.SOUTH, Variant.variant()) + .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)); + } + + private static PropertyDispatch createTorchHorizontalDispatch() { + return PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) + .select(Direction.EAST, Variant.variant()) + .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)); + } + + private static PropertyDispatch createFacingDispatch() { + return PropertyDispatch.property(BlockStateProperties.FACING) + .select(Direction.DOWN, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select(Direction.UP, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R270)) + .select(Direction.NORTH, Variant.variant()) + .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)); + } + + private static MultiVariantGenerator createRotatedVariant(Block block, ResourceLocation model) { + return MultiVariantGenerator.multiVariant(block, createRotatedVariants(model)); + } + + private static Variant[] createRotatedVariants(ResourceLocation modelLocation) { + return new Variant[]{ + Variant.variant().with(VariantProperties.MODEL, modelLocation), + Variant.variant().with(VariantProperties.MODEL, modelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90), + Variant.variant().with(VariantProperties.MODEL, modelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180), + Variant.variant().with(VariantProperties.MODEL, modelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + }; + } + + private static MultiVariantGenerator createRotatedVariant(Block block, ResourceLocation model1, ResourceLocation model2) { + return MultiVariantGenerator.multiVariant( + block, + Variant.variant().with(VariantProperties.MODEL, model1), + Variant.variant().with(VariantProperties.MODEL, model2), + Variant.variant().with(VariantProperties.MODEL, model1).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180), + Variant.variant().with(VariantProperties.MODEL, model2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ); + } + + private static PropertyDispatch createBooleanModelDispatch(BooleanProperty property, ResourceLocation trueModelLocation, ResourceLocation falseModelLocation) { + return PropertyDispatch.property(property) + .select(true, Variant.variant().with(VariantProperties.MODEL, trueModelLocation)) + .select(false, Variant.variant().with(VariantProperties.MODEL, falseModelLocation)); + } + + private void createRotatedMirroredVariantBlock(Block block) { + ResourceLocation resourceLocation = TexturedModel.CUBE.create(block, this.modelOutput); + ResourceLocation resourceLocation2 = TexturedModel.CUBE_MIRRORED.create(block, this.modelOutput); + this.blockStateOutput.accept(createRotatedVariant(block, resourceLocation, resourceLocation2)); + } + + private void createRotatedVariantBlock(Block block) { + ResourceLocation resourceLocation = TexturedModel.CUBE.create(block, this.modelOutput); + this.blockStateOutput.accept(createRotatedVariant(block, resourceLocation)); + } + + private void createBrushableBlock(Block block) { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block) + .with( + PropertyDispatch.property(BlockStateProperties.DUSTED) + .generate( + integer -> { + String string = "_" + integer; + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(block, string); + return Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CUBE_ALL.createWithSuffix(block, string, new TextureMapping().put(TextureSlot.ALL, resourceLocation), this.modelOutput) + ); + } + ) + ) + ); + this.registerSimpleItemModel(block, ModelLocationUtils.getModelLocation(block, "_0")); + } + + static BlockStateGenerator createButton(Block buttonBlock, ResourceLocation unpoweredModelLocation, ResourceLocation poweredModelLocation) { + return MultiVariantGenerator.multiVariant(buttonBlock) + .with( + PropertyDispatch.property(BlockStateProperties.POWERED) + .select(false, Variant.variant().with(VariantProperties.MODEL, unpoweredModelLocation)) + .select(true, Variant.variant().with(VariantProperties.MODEL, poweredModelLocation)) + ) + .with( + PropertyDispatch.properties(BlockStateProperties.ATTACH_FACE, BlockStateProperties.HORIZONTAL_FACING) + .select(AttachFace.FLOOR, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(AttachFace.FLOOR, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + .select(AttachFace.FLOOR, Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(AttachFace.FLOOR, Direction.NORTH, Variant.variant()) + .select( + AttachFace.WALL, + Direction.EAST, + Variant.variant() + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + AttachFace.WALL, + Direction.WEST, + Variant.variant() + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + AttachFace.WALL, + Direction.SOUTH, + Variant.variant() + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + AttachFace.WALL, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.UV_LOCK, true) + ) + .select( + AttachFace.CEILING, + Direction.EAST, + Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270).with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + ) + .select( + AttachFace.CEILING, + Direction.WEST, + Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90).with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + ) + .select(AttachFace.CEILING, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180)) + .select( + AttachFace.CEILING, + Direction.NORTH, + Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180).with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + ) + ); + } + + private static PropertyDispatch.C4 configureDoorHalf( + PropertyDispatch.C4 properties, + DoubleBlockHalf half, + ResourceLocation leftModelLocation, + ResourceLocation leftOpenModelLocation, + ResourceLocation rightModelLocation, + ResourceLocation rightOpenModelLocation + ) { + return properties.select(Direction.EAST, half, DoorHingeSide.LEFT, false, Variant.variant().with(VariantProperties.MODEL, leftModelLocation)) + .select( + Direction.SOUTH, + half, + DoorHingeSide.LEFT, + false, + Variant.variant().with(VariantProperties.MODEL, leftModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + half, + DoorHingeSide.LEFT, + false, + Variant.variant().with(VariantProperties.MODEL, leftModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.NORTH, + half, + DoorHingeSide.LEFT, + false, + Variant.variant().with(VariantProperties.MODEL, leftModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.EAST, half, DoorHingeSide.RIGHT, false, Variant.variant().with(VariantProperties.MODEL, rightModelLocation)) + .select( + Direction.SOUTH, + half, + DoorHingeSide.RIGHT, + false, + Variant.variant().with(VariantProperties.MODEL, rightModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + half, + DoorHingeSide.RIGHT, + false, + Variant.variant().with(VariantProperties.MODEL, rightModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.NORTH, + half, + DoorHingeSide.RIGHT, + false, + Variant.variant().with(VariantProperties.MODEL, rightModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + Direction.EAST, + half, + DoorHingeSide.LEFT, + true, + Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.SOUTH, + half, + DoorHingeSide.LEFT, + true, + Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.WEST, + half, + DoorHingeSide.LEFT, + true, + Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.NORTH, half, DoorHingeSide.LEFT, true, Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation)) + .select( + Direction.EAST, + half, + DoorHingeSide.RIGHT, + true, + Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.SOUTH, half, DoorHingeSide.RIGHT, true, Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation)) + .select( + Direction.WEST, + half, + DoorHingeSide.RIGHT, + true, + Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.NORTH, + half, + DoorHingeSide.RIGHT, + true, + Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ); + } + + private static BlockStateGenerator createDoor( + Block doorBlock, + ResourceLocation topLeftModelLocation, + ResourceLocation topLeftOpenModelLocation, + ResourceLocation topRightModelLocation, + ResourceLocation topRightOpenModelLocation, + ResourceLocation bottomLeftModelLocation, + ResourceLocation bottomLeftOpenModelLocation, + ResourceLocation bottomRightModelLocation, + ResourceLocation bottomRightOpenModelLocation + ) { + return MultiVariantGenerator.multiVariant(doorBlock) + .with( + configureDoorHalf( + configureDoorHalf( + PropertyDispatch.properties( + BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.DOUBLE_BLOCK_HALF, BlockStateProperties.DOOR_HINGE, BlockStateProperties.OPEN + ), + DoubleBlockHalf.LOWER, + topLeftModelLocation, + topLeftOpenModelLocation, + topRightModelLocation, + topRightOpenModelLocation + ), + DoubleBlockHalf.UPPER, + bottomLeftModelLocation, + bottomLeftOpenModelLocation, + bottomRightModelLocation, + bottomRightOpenModelLocation + ) + ); + } + + static BlockStateGenerator createCustomFence( + Block customFenceBlock, + ResourceLocation postModelId, + ResourceLocation northModelId, + ResourceLocation eastModelId, + ResourceLocation southModelId, + ResourceLocation westModelId + ) { + return MultiPartGenerator.multiPart(customFenceBlock) + .with(Variant.variant().with(VariantProperties.MODEL, postModelId)) + .with( + Condition.condition().term(BlockStateProperties.NORTH, true), + Variant.variant().with(VariantProperties.MODEL, northModelId).with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST, true), + Variant.variant().with(VariantProperties.MODEL, eastModelId).with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, true), + Variant.variant().with(VariantProperties.MODEL, southModelId).with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, true), + Variant.variant().with(VariantProperties.MODEL, westModelId).with(VariantProperties.UV_LOCK, false) + ); + } + + static BlockStateGenerator createFence(Block fenceBlock, ResourceLocation fencePostModelLocation, ResourceLocation fenceSideModelLocation) { + return MultiPartGenerator.multiPart(fenceBlock) + .with(Variant.variant().with(VariantProperties.MODEL, fencePostModelLocation)) + .with( + Condition.condition().term(BlockStateProperties.NORTH, true), + Variant.variant().with(VariantProperties.MODEL, fenceSideModelLocation).with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST, true), + Variant.variant() + .with(VariantProperties.MODEL, fenceSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, true), + Variant.variant() + .with(VariantProperties.MODEL, fenceSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, true), + Variant.variant() + .with(VariantProperties.MODEL, fenceSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ); + } + + static BlockStateGenerator createWall( + Block wallBlock, ResourceLocation postModelLocation, ResourceLocation lowSideModelLocation, ResourceLocation tallSideModelLocation + ) { + return MultiPartGenerator.multiPart(wallBlock) + .with(Condition.condition().term(BlockStateProperties.UP, true), Variant.variant().with(VariantProperties.MODEL, postModelLocation)) + .with( + Condition.condition().term(BlockStateProperties.NORTH_WALL, WallSide.LOW), + Variant.variant().with(VariantProperties.MODEL, lowSideModelLocation).with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST_WALL, WallSide.LOW), + Variant.variant() + .with(VariantProperties.MODEL, lowSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH_WALL, WallSide.LOW), + Variant.variant() + .with(VariantProperties.MODEL, lowSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST_WALL, WallSide.LOW), + Variant.variant() + .with(VariantProperties.MODEL, lowSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.NORTH_WALL, WallSide.TALL), + Variant.variant().with(VariantProperties.MODEL, tallSideModelLocation).with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST_WALL, WallSide.TALL), + Variant.variant() + .with(VariantProperties.MODEL, tallSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH_WALL, WallSide.TALL), + Variant.variant() + .with(VariantProperties.MODEL, tallSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST_WALL, WallSide.TALL), + Variant.variant() + .with(VariantProperties.MODEL, tallSideModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ); + } + + static BlockStateGenerator createFenceGate( + Block fenceGateBlock, + ResourceLocation openModelLocation, + ResourceLocation closedModelLocation, + ResourceLocation wallOpenModelLocation, + ResourceLocation wallClosedModelLocation, + boolean uvLock + ) { + return MultiVariantGenerator.multiVariant(fenceGateBlock, Variant.variant().with(VariantProperties.UV_LOCK, uvLock)) + .with(createHorizontalFacingDispatchAlt()) + .with( + PropertyDispatch.properties(BlockStateProperties.IN_WALL, BlockStateProperties.OPEN) + .select(false, false, Variant.variant().with(VariantProperties.MODEL, closedModelLocation)) + .select(true, false, Variant.variant().with(VariantProperties.MODEL, wallClosedModelLocation)) + .select(false, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) + .select(true, true, Variant.variant().with(VariantProperties.MODEL, wallOpenModelLocation)) + ); + } + + static BlockStateGenerator createStairs( + Block stairsBlock, ResourceLocation innerModelLocation, ResourceLocation straightModelLocation, ResourceLocation outerModelLocation + ) { + return MultiVariantGenerator.multiVariant(stairsBlock) + .with( + PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.HALF, BlockStateProperties.STAIRS_SHAPE) + .select(Direction.EAST, Half.BOTTOM, StairsShape.STRAIGHT, Variant.variant().with(VariantProperties.MODEL, straightModelLocation)) + .select( + Direction.WEST, + Half.BOTTOM, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.BOTTOM, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.BOTTOM, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select(Direction.EAST, Half.BOTTOM, StairsShape.OUTER_RIGHT, Variant.variant().with(VariantProperties.MODEL, outerModelLocation)) + .select( + Direction.WEST, + Half.BOTTOM, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.BOTTOM, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.BOTTOM, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.BOTTOM, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.BOTTOM, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select(Direction.SOUTH, Half.BOTTOM, StairsShape.OUTER_LEFT, Variant.variant().with(VariantProperties.MODEL, outerModelLocation)) + .select( + Direction.NORTH, + Half.BOTTOM, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select(Direction.EAST, Half.BOTTOM, StairsShape.INNER_RIGHT, Variant.variant().with(VariantProperties.MODEL, innerModelLocation)) + .select( + Direction.WEST, + Half.BOTTOM, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.BOTTOM, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.BOTTOM, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.BOTTOM, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.BOTTOM, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select(Direction.SOUTH, Half.BOTTOM, StairsShape.INNER_LEFT, Variant.variant().with(VariantProperties.MODEL, innerModelLocation)) + .select( + Direction.NORTH, + Half.BOTTOM, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.TOP, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.TOP, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.TOP, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.TOP, + StairsShape.STRAIGHT, + Variant.variant() + .with(VariantProperties.MODEL, straightModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.TOP, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.TOP, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.TOP, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.TOP, + StairsShape.OUTER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.TOP, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.TOP, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.TOP, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.TOP, + StairsShape.OUTER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, outerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.TOP, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.TOP, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.TOP, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.TOP, + StairsShape.INNER_RIGHT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.EAST, + Half.TOP, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.WEST, + Half.TOP, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.SOUTH, + Half.TOP, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .select( + Direction.NORTH, + Half.TOP, + StairsShape.INNER_LEFT, + Variant.variant() + .with(VariantProperties.MODEL, innerModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + ); + } + + private static BlockStateGenerator createOrientableTrapdoor( + Block orientableTrapdoorBlock, ResourceLocation topModelLocation, ResourceLocation bottomModelLocation, ResourceLocation openModelLocation + ) { + return MultiVariantGenerator.multiVariant(orientableTrapdoorBlock) + .with( + PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.HALF, BlockStateProperties.OPEN) + .select(Direction.NORTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) + .select( + Direction.SOUTH, + Half.BOTTOM, + false, + Variant.variant().with(VariantProperties.MODEL, bottomModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + Half.BOTTOM, + false, + Variant.variant().with(VariantProperties.MODEL, bottomModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + Half.BOTTOM, + false, + Variant.variant().with(VariantProperties.MODEL, bottomModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.NORTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) + .select( + Direction.SOUTH, + Half.TOP, + false, + Variant.variant().with(VariantProperties.MODEL, topModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + Half.TOP, + false, + Variant.variant().with(VariantProperties.MODEL, topModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + Half.TOP, + false, + Variant.variant().with(VariantProperties.MODEL, topModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.NORTH, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) + .select( + Direction.SOUTH, + Half.BOTTOM, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + Half.BOTTOM, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + Half.BOTTOM, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + Direction.NORTH, + Half.TOP, + true, + Variant.variant() + .with(VariantProperties.MODEL, openModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.SOUTH, + Half.TOP, + true, + Variant.variant() + .with(VariantProperties.MODEL, openModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R0) + ) + .select( + Direction.EAST, + Half.TOP, + true, + Variant.variant() + .with(VariantProperties.MODEL, openModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + Direction.WEST, + Half.TOP, + true, + Variant.variant() + .with(VariantProperties.MODEL, openModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + ); + } + + private static BlockStateGenerator createTrapdoor( + Block trapdoorBlock, ResourceLocation topModelLocation, ResourceLocation bottomModelLocation, ResourceLocation openModelLocation + ) { + return MultiVariantGenerator.multiVariant(trapdoorBlock) + .with( + PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.HALF, BlockStateProperties.OPEN) + .select(Direction.NORTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) + .select(Direction.SOUTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) + .select(Direction.EAST, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) + .select(Direction.WEST, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) + .select(Direction.NORTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) + .select(Direction.SOUTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) + .select(Direction.EAST, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) + .select(Direction.WEST, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) + .select(Direction.NORTH, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) + .select( + Direction.SOUTH, + Half.BOTTOM, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + Half.BOTTOM, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + Half.BOTTOM, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.NORTH, Half.TOP, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) + .select( + Direction.SOUTH, + Half.TOP, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + Half.TOP, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + Half.TOP, + true, + Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ); + } + + static MultiVariantGenerator createSimpleBlock(Block block, ResourceLocation model) { + return MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)); + } + + private static PropertyDispatch createRotatedPillar() { + return PropertyDispatch.property(BlockStateProperties.AXIS) + .select(Axis.Y, Variant.variant()) + .select(Axis.Z, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + Axis.X, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ); + } + + static BlockStateGenerator createPillarBlockUVLocked(Block block, TextureMapping textureMapping, BiConsumer modelOutput) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN_UV_LOCKED_X.create(block, textureMapping, modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUBE_COLUMN_UV_LOCKED_Y.create(block, textureMapping, modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.CUBE_COLUMN_UV_LOCKED_Z.create(block, textureMapping, modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.CUBE_COLUMN.create(block, textureMapping, modelOutput); + return MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) + .with( + PropertyDispatch.property(BlockStateProperties.AXIS) + .select(Axis.X, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(Axis.Y, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(Axis.Z, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + ); + } + + static BlockStateGenerator createAxisAlignedPillarBlock(Block axisAlignedPillarBlock, ResourceLocation modelLocation) { + return MultiVariantGenerator.multiVariant(axisAlignedPillarBlock, Variant.variant().with(VariantProperties.MODEL, modelLocation)).with(createRotatedPillar()); + } + + private void createAxisAlignedPillarBlockCustomModel(Block axisAlignedPillarBlock, ResourceLocation modelLocation) { + this.blockStateOutput.accept(createAxisAlignedPillarBlock(axisAlignedPillarBlock, modelLocation)); + } + + public void createAxisAlignedPillarBlock(Block axisAlignedPillarBlock, TexturedModel.Provider provider) { + ResourceLocation resourceLocation = provider.create(axisAlignedPillarBlock, this.modelOutput); + this.blockStateOutput.accept(createAxisAlignedPillarBlock(axisAlignedPillarBlock, resourceLocation)); + } + + private void createHorizontallyRotatedBlock(Block horizontallyRotatedBlock, TexturedModel.Provider provider) { + ResourceLocation resourceLocation = provider.create(horizontallyRotatedBlock, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(horizontallyRotatedBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .with(createHorizontalFacingDispatch()) + ); + } + + static BlockStateGenerator createRotatedPillarWithHorizontalVariant( + Block rotatedPillarBlock, ResourceLocation modelLocation, ResourceLocation horizontalModelLocation + ) { + return MultiVariantGenerator.multiVariant(rotatedPillarBlock) + .with( + PropertyDispatch.property(BlockStateProperties.AXIS) + .select(Axis.Y, Variant.variant().with(VariantProperties.MODEL, modelLocation)) + .select(Axis.Z, Variant.variant().with(VariantProperties.MODEL, horizontalModelLocation).with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + Axis.X, + Variant.variant() + .with(VariantProperties.MODEL, horizontalModelLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + ); + } + + private void createRotatedPillarWithHorizontalVariant( + Block rotatedPillarBlock, TexturedModel.Provider modelProvider, TexturedModel.Provider horizontalModelProvider + ) { + ResourceLocation resourceLocation = modelProvider.create(rotatedPillarBlock, this.modelOutput); + ResourceLocation resourceLocation2 = horizontalModelProvider.create(rotatedPillarBlock, this.modelOutput); + this.blockStateOutput.accept(createRotatedPillarWithHorizontalVariant(rotatedPillarBlock, resourceLocation, resourceLocation2)); + } + + private void createCreakingHeart(Block block) { + Function function = provider -> provider.updateTexture( + textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(block, "_active")) + ) + .updateTexture(textureMapping -> textureMapping.put(TextureSlot.END, TextureMapping.getBlockTexture(block, "_top_active"))) + .createWithSuffix(block, "_active", this.modelOutput); + ResourceLocation resourceLocation = TexturedModel.COLUMN_ALT.create(block, this.modelOutput); + ResourceLocation resourceLocation2 = TexturedModel.COLUMN_HORIZONTAL_ALT.create(block, this.modelOutput); + ResourceLocation resourceLocation3 = (ResourceLocation)function.apply(TexturedModel.COLUMN_ALT); + ResourceLocation resourceLocation4 = (ResourceLocation)function.apply(TexturedModel.COLUMN_HORIZONTAL_ALT); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block) + .with( + PropertyDispatch.properties(BlockStateProperties.AXIS, CreakingHeartBlock.ACTIVE) + .select(Axis.Y, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(Axis.Z, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + Axis.X, + false, + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select(Axis.Y, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + .select(Axis.Z, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + Axis.X, + true, + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation4) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + ) + ); + } + + private ResourceLocation createSuffixedVariant( + Block block, String suffix, ModelTemplate modelTemplate, Function textureMappingGetter + ) { + return modelTemplate.createWithSuffix( + block, suffix, (TextureMapping)textureMappingGetter.apply(TextureMapping.getBlockTexture(block, suffix)), this.modelOutput + ); + } + + static BlockStateGenerator createPressurePlate(Block pressurePlateBlock, ResourceLocation unpoweredModelLocation, ResourceLocation poweredModelLocation) { + return MultiVariantGenerator.multiVariant(pressurePlateBlock) + .with(createBooleanModelDispatch(BlockStateProperties.POWERED, poweredModelLocation, unpoweredModelLocation)); + } + + static BlockStateGenerator createSlab( + Block slabBlock, ResourceLocation bottomHalfModelLocation, ResourceLocation topHalfModelLocation, ResourceLocation doubleModelLocation + ) { + return MultiVariantGenerator.multiVariant(slabBlock) + .with( + PropertyDispatch.property(BlockStateProperties.SLAB_TYPE) + .select(SlabType.BOTTOM, Variant.variant().with(VariantProperties.MODEL, bottomHalfModelLocation)) + .select(SlabType.TOP, Variant.variant().with(VariantProperties.MODEL, topHalfModelLocation)) + .select(SlabType.DOUBLE, Variant.variant().with(VariantProperties.MODEL, doubleModelLocation)) + ); + } + + public void createTrivialCube(Block block) { + this.createTrivialBlock(block, TexturedModel.CUBE); + } + + public void createTrivialBlock(Block block, TexturedModel.Provider provider) { + this.blockStateOutput.accept(createSimpleBlock(block, provider.create(block, this.modelOutput))); + } + + public void createTintedLeaves(Block block, TexturedModel.Provider provider, int tint) { + ResourceLocation resourceLocation = provider.create(block, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(block, resourceLocation)); + this.registerSimpleTintedItemModel(block, resourceLocation, ItemModelUtils.constantTint(tint)); + } + + private void createVine() { + this.createMultifaceBlockStates(Blocks.VINE); + ResourceLocation resourceLocation = this.createFlatItemModelWithBlockTexture(Items.VINE, Blocks.VINE); + this.registerSimpleTintedItemModel(Blocks.VINE, resourceLocation, ItemModelUtils.constantTint(-12012264)); + } + + private void createItemWithGrassTint(Block block) { + ResourceLocation resourceLocation = this.createFlatItemModelWithBlockTexture(block.asItem(), block); + this.registerSimpleTintedItemModel(block, resourceLocation, new GrassColorSource()); + } + + private BlockModelGenerators.BlockFamilyProvider family(Block block) { + TexturedModel texturedModel = (TexturedModel)this.texturedModels.getOrDefault(block, TexturedModel.CUBE.get(block)); + return new BlockModelGenerators.BlockFamilyProvider(texturedModel.getMapping()).fullBlock(block, texturedModel.getTemplate()); + } + + public void createHangingSign(Block particleBlock, Block hangingSignBlock, Block wallHangingSignBlock) { + ResourceLocation resourceLocation = this.createParticleOnlyBlockModel(hangingSignBlock, particleBlock); + this.blockStateOutput.accept(createSimpleBlock(hangingSignBlock, resourceLocation)); + this.blockStateOutput.accept(createSimpleBlock(wallHangingSignBlock, resourceLocation)); + this.registerSimpleFlatItemModel(hangingSignBlock.asItem()); + } + + void createDoor(Block doorBlock) { + TextureMapping textureMapping = TextureMapping.door(doorBlock); + ResourceLocation resourceLocation = ModelTemplates.DOOR_BOTTOM_LEFT.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.DOOR_BOTTOM_LEFT_OPEN.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.DOOR_BOTTOM_RIGHT.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.DOOR_BOTTOM_RIGHT_OPEN.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation5 = ModelTemplates.DOOR_TOP_LEFT.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation6 = ModelTemplates.DOOR_TOP_LEFT_OPEN.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation7 = ModelTemplates.DOOR_TOP_RIGHT.create(doorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation8 = ModelTemplates.DOOR_TOP_RIGHT_OPEN.create(doorBlock, textureMapping, this.modelOutput); + this.registerSimpleFlatItemModel(doorBlock.asItem()); + this.blockStateOutput + .accept( + createDoor( + doorBlock, + resourceLocation, + resourceLocation2, + resourceLocation3, + resourceLocation4, + resourceLocation5, + resourceLocation6, + resourceLocation7, + resourceLocation8 + ) + ); + } + + private void copyDoorModel(Block doorBlock, Block sourceBlock) { + ResourceLocation resourceLocation = ModelTemplates.DOOR_BOTTOM_LEFT.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation2 = ModelTemplates.DOOR_BOTTOM_LEFT_OPEN.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation3 = ModelTemplates.DOOR_BOTTOM_RIGHT.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation4 = ModelTemplates.DOOR_BOTTOM_RIGHT_OPEN.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation5 = ModelTemplates.DOOR_TOP_LEFT.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation6 = ModelTemplates.DOOR_TOP_LEFT_OPEN.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation7 = ModelTemplates.DOOR_TOP_RIGHT.getDefaultModelLocation(doorBlock); + ResourceLocation resourceLocation8 = ModelTemplates.DOOR_TOP_RIGHT_OPEN.getDefaultModelLocation(doorBlock); + this.itemModelOutput.copy(doorBlock.asItem(), sourceBlock.asItem()); + this.blockStateOutput + .accept( + createDoor( + sourceBlock, + resourceLocation, + resourceLocation2, + resourceLocation3, + resourceLocation4, + resourceLocation5, + resourceLocation6, + resourceLocation7, + resourceLocation8 + ) + ); + } + + void createOrientableTrapdoor(Block orientableTrapdoorBlock) { + TextureMapping textureMapping = TextureMapping.defaultTexture(orientableTrapdoorBlock); + ResourceLocation resourceLocation = ModelTemplates.ORIENTABLE_TRAPDOOR_TOP.create(orientableTrapdoorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.ORIENTABLE_TRAPDOOR_BOTTOM.create(orientableTrapdoorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.ORIENTABLE_TRAPDOOR_OPEN.create(orientableTrapdoorBlock, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createOrientableTrapdoor(orientableTrapdoorBlock, resourceLocation, resourceLocation2, resourceLocation3)); + this.registerSimpleItemModel(orientableTrapdoorBlock, resourceLocation2); + } + + void createTrapdoor(Block trapdoorBlock) { + TextureMapping textureMapping = TextureMapping.defaultTexture(trapdoorBlock); + ResourceLocation resourceLocation = ModelTemplates.TRAPDOOR_TOP.create(trapdoorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.TRAPDOOR_BOTTOM.create(trapdoorBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.TRAPDOOR_OPEN.create(trapdoorBlock, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createTrapdoor(trapdoorBlock, resourceLocation, resourceLocation2, resourceLocation3)); + this.registerSimpleItemModel(trapdoorBlock, resourceLocation2); + } + + private void copyTrapdoorModel(Block trapdoorBlock, Block sourceBlock) { + ResourceLocation resourceLocation = ModelTemplates.TRAPDOOR_TOP.getDefaultModelLocation(trapdoorBlock); + ResourceLocation resourceLocation2 = ModelTemplates.TRAPDOOR_BOTTOM.getDefaultModelLocation(trapdoorBlock); + ResourceLocation resourceLocation3 = ModelTemplates.TRAPDOOR_OPEN.getDefaultModelLocation(trapdoorBlock); + this.itemModelOutput.copy(trapdoorBlock.asItem(), sourceBlock.asItem()); + this.blockStateOutput.accept(createTrapdoor(sourceBlock, resourceLocation, resourceLocation2, resourceLocation3)); + } + + private void createBigDripLeafBlock() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.BIG_DRIPLEAF); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.BIG_DRIPLEAF, "_partial_tilt"); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.BIG_DRIPLEAF, "_full_tilt"); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.BIG_DRIPLEAF) + .with(createHorizontalFacingDispatch()) + .with( + PropertyDispatch.property(BlockStateProperties.TILT) + .select(Tilt.NONE, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(Tilt.UNSTABLE, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(Tilt.PARTIAL, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(Tilt.FULL, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + ) + ); + } + + private BlockModelGenerators.WoodProvider woodProvider(Block logBlock) { + return new BlockModelGenerators.WoodProvider(TextureMapping.logColumn(logBlock)); + } + + private void createNonTemplateModelBlock(Block block) { + this.createNonTemplateModelBlock(block, block); + } + + private void createNonTemplateModelBlock(Block block, Block modelBlock) { + this.blockStateOutput.accept(createSimpleBlock(block, ModelLocationUtils.getModelLocation(modelBlock))); + } + + private void createCrossBlockWithDefaultItem(Block block, BlockModelGenerators.PlantType plantType) { + this.registerSimpleItemModel(block.asItem(), plantType.createItemModel(this, block)); + this.createCrossBlock(block, plantType); + } + + private void createCrossBlockWithDefaultItem(Block block, BlockModelGenerators.PlantType plantType, TextureMapping textureMapping) { + this.registerSimpleFlatItemModel(block); + this.createCrossBlock(block, plantType, textureMapping); + } + + private void createCrossBlock(Block block, BlockModelGenerators.PlantType plantType) { + TextureMapping textureMapping = plantType.getTextureMapping(block); + this.createCrossBlock(block, plantType, textureMapping); + } + + private void createCrossBlock(Block block, BlockModelGenerators.PlantType plantType, TextureMapping textureMapping) { + ResourceLocation resourceLocation = plantType.getCross().create(block, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(block, resourceLocation)); + } + + private void createCrossBlock(Block block, BlockModelGenerators.PlantType plantType, Property ageProperty, int... possibleValues) { + if (ageProperty.getPossibleValues().size() != possibleValues.length) { + throw new IllegalArgumentException("missing values for property: " + ageProperty); + } else { + PropertyDispatch propertyDispatch = PropertyDispatch.property(ageProperty).generate(integer -> { + String string = "_stage" + possibleValues[integer]; + TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(block, string)); + ResourceLocation resourceLocation = plantType.getCross().createWithSuffix(block, string, textureMapping, this.modelOutput); + return Variant.variant().with(VariantProperties.MODEL, resourceLocation); + }); + this.registerSimpleFlatItemModel(block.asItem()); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block).with(propertyDispatch)); + } + } + + private void createPlantWithDefaultItem(Block block, Block pottedBlock, BlockModelGenerators.PlantType plantType) { + this.registerSimpleItemModel(block.asItem(), plantType.createItemModel(this, block)); + this.createPlant(block, pottedBlock, plantType); + } + + private void createPlant(Block block, Block pottedBlock, BlockModelGenerators.PlantType plantType) { + this.createCrossBlock(block, plantType); + TextureMapping textureMapping = plantType.getPlantTextureMapping(block); + ResourceLocation resourceLocation = plantType.getCrossPot().create(pottedBlock, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(pottedBlock, resourceLocation)); + } + + private void createCoralFans(Block coralFanBlock, Block coralWallFanBlock) { + TexturedModel texturedModel = TexturedModel.CORAL_FAN.get(coralFanBlock); + ResourceLocation resourceLocation = texturedModel.create(coralFanBlock, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(coralFanBlock, resourceLocation)); + ResourceLocation resourceLocation2 = ModelTemplates.CORAL_WALL_FAN.create(coralWallFanBlock, texturedModel.getMapping(), this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(coralWallFanBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .with(createHorizontalFacingDispatch()) + ); + this.registerSimpleFlatItemModel(coralFanBlock); + } + + private void createStems(Block unattachedStemBlock, Block attachedStemBlock) { + this.registerSimpleFlatItemModel(unattachedStemBlock.asItem()); + TextureMapping textureMapping = TextureMapping.stem(unattachedStemBlock); + TextureMapping textureMapping2 = TextureMapping.attachedStem(unattachedStemBlock, attachedStemBlock); + ResourceLocation resourceLocation = ModelTemplates.ATTACHED_STEM.create(attachedStemBlock, textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(attachedStemBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .with( + PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) + .select(Direction.WEST, Variant.variant()) + .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + .select(Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + ) + ); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(unattachedStemBlock) + .with( + PropertyDispatch.property(BlockStateProperties.AGE_7) + .generate( + integer -> Variant.variant().with(VariantProperties.MODEL, ModelTemplates.STEMS[integer].create(unattachedStemBlock, textureMapping, this.modelOutput)) + ) + ) + ); + } + + private void createPitcherPlant() { + Block block = Blocks.PITCHER_PLANT; + this.registerSimpleFlatItemModel(block.asItem()); + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block, "_top"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(block, "_bottom"); + this.createDoubleBlock(block, resourceLocation, resourceLocation2); + } + + private void createPitcherCrop() { + Block block = Blocks.PITCHER_CROP; + this.registerSimpleFlatItemModel(block.asItem()); + PropertyDispatch propertyDispatch = PropertyDispatch.properties(PitcherCropBlock.AGE, BlockStateProperties.DOUBLE_BLOCK_HALF) + .generate((integer, doubleBlockHalf) -> { + return switch (doubleBlockHalf) { + case UPPER -> Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(block, "_top_stage_" + integer)); + case LOWER -> Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(block, "_bottom_stage_" + integer)); + }; + }); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block).with(propertyDispatch)); + } + + private void createCoral( + Block coralBlock, + Block deadCoralBlock, + Block coralFullBlock, + Block deadCoralFullBlock, + Block coralFanBlock, + Block deadCoralFanBlock, + Block coralWallFanBlock, + Block deadCoralWallFanBlock + ) { + this.createCrossBlockWithDefaultItem(coralBlock, BlockModelGenerators.PlantType.NOT_TINTED); + this.createCrossBlockWithDefaultItem(deadCoralBlock, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTrivialCube(coralFullBlock); + this.createTrivialCube(deadCoralFullBlock); + this.createCoralFans(coralFanBlock, coralWallFanBlock); + this.createCoralFans(deadCoralFanBlock, deadCoralWallFanBlock); + } + + private void createDoublePlant(Block block, BlockModelGenerators.PlantType plantType) { + ResourceLocation resourceLocation = this.createSuffixedVariant(block, "_top", plantType.getCross(), TextureMapping::cross); + ResourceLocation resourceLocation2 = this.createSuffixedVariant(block, "_bottom", plantType.getCross(), TextureMapping::cross); + this.createDoubleBlock(block, resourceLocation, resourceLocation2); + } + + private void createDoublePlantWithDefaultItem(Block block, BlockModelGenerators.PlantType plantType) { + this.registerSimpleFlatItemModel(block, "_top"); + this.createDoublePlant(block, plantType); + } + + private void createTintedDoublePlant(Block block) { + ResourceLocation resourceLocation = this.createFlatItemModelWithBlockTexture(block.asItem(), block, "_top"); + this.registerSimpleTintedItemModel(block, resourceLocation, new GrassColorSource()); + this.createDoublePlant(block, BlockModelGenerators.PlantType.TINTED); + } + + private void createSunflower() { + this.registerSimpleFlatItemModel(Blocks.SUNFLOWER, "_front"); + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SUNFLOWER, "_top"); + ResourceLocation resourceLocation2 = this.createSuffixedVariant( + Blocks.SUNFLOWER, "_bottom", BlockModelGenerators.PlantType.NOT_TINTED.getCross(), TextureMapping::cross + ); + this.createDoubleBlock(Blocks.SUNFLOWER, resourceLocation, resourceLocation2); + } + + private void createTallSeagrass() { + ResourceLocation resourceLocation = this.createSuffixedVariant(Blocks.TALL_SEAGRASS, "_top", ModelTemplates.SEAGRASS, TextureMapping::defaultTexture); + ResourceLocation resourceLocation2 = this.createSuffixedVariant(Blocks.TALL_SEAGRASS, "_bottom", ModelTemplates.SEAGRASS, TextureMapping::defaultTexture); + this.createDoubleBlock(Blocks.TALL_SEAGRASS, resourceLocation, resourceLocation2); + } + + private void createSmallDripleaf() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SMALL_DRIPLEAF, "_top"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.SMALL_DRIPLEAF, "_bottom"); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SMALL_DRIPLEAF) + .with(createHorizontalFacingDispatch()) + .with( + PropertyDispatch.property(BlockStateProperties.DOUBLE_BLOCK_HALF) + .select(DoubleBlockHalf.LOWER, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(DoubleBlockHalf.UPPER, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + ) + ); + } + + private void createDoubleBlock(Block doubleBlock, ResourceLocation topHalfModelLocation, ResourceLocation bottomHalfModelLocation) { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(doubleBlock) + .with( + PropertyDispatch.property(BlockStateProperties.DOUBLE_BLOCK_HALF) + .select(DoubleBlockHalf.LOWER, Variant.variant().with(VariantProperties.MODEL, bottomHalfModelLocation)) + .select(DoubleBlockHalf.UPPER, Variant.variant().with(VariantProperties.MODEL, topHalfModelLocation)) + ) + ); + } + + private void createPassiveRail(Block railBlock) { + TextureMapping textureMapping = TextureMapping.rail(railBlock); + TextureMapping textureMapping2 = TextureMapping.rail(TextureMapping.getBlockTexture(railBlock, "_corner")); + ResourceLocation resourceLocation = ModelTemplates.RAIL_FLAT.create(railBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.RAIL_CURVED.create(railBlock, textureMapping2, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.RAIL_RAISED_NE.create(railBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.RAIL_RAISED_SW.create(railBlock, textureMapping, this.modelOutput); + this.registerSimpleFlatItemModel(railBlock); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(railBlock) + .with( + PropertyDispatch.property(BlockStateProperties.RAIL_SHAPE) + .select(RailShape.NORTH_SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select( + RailShape.EAST_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + RailShape.ASCENDING_EAST, + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + RailShape.ASCENDING_WEST, + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select(RailShape.ASCENDING_NORTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + .select(RailShape.ASCENDING_SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) + .select(RailShape.SOUTH_EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select( + RailShape.SOUTH_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + RailShape.NORTH_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + RailShape.NORTH_EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ) + ); + } + + private void createActiveRail(Block railBlock) { + ResourceLocation resourceLocation = this.createSuffixedVariant(railBlock, "", ModelTemplates.RAIL_FLAT, TextureMapping::rail); + ResourceLocation resourceLocation2 = this.createSuffixedVariant(railBlock, "", ModelTemplates.RAIL_RAISED_NE, TextureMapping::rail); + ResourceLocation resourceLocation3 = this.createSuffixedVariant(railBlock, "", ModelTemplates.RAIL_RAISED_SW, TextureMapping::rail); + ResourceLocation resourceLocation4 = this.createSuffixedVariant(railBlock, "_on", ModelTemplates.RAIL_FLAT, TextureMapping::rail); + ResourceLocation resourceLocation5 = this.createSuffixedVariant(railBlock, "_on", ModelTemplates.RAIL_RAISED_NE, TextureMapping::rail); + ResourceLocation resourceLocation6 = this.createSuffixedVariant(railBlock, "_on", ModelTemplates.RAIL_RAISED_SW, TextureMapping::rail); + PropertyDispatch propertyDispatch = PropertyDispatch.properties(BlockStateProperties.POWERED, BlockStateProperties.RAIL_SHAPE_STRAIGHT) + .generate( + (boolean_, railShape) -> { + switch (railShape) { + case NORTH_SOUTH: + return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation4 : resourceLocation); + case EAST_WEST: + return Variant.variant() + .with(VariantProperties.MODEL, boolean_ ? resourceLocation4 : resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90); + case ASCENDING_EAST: + return Variant.variant() + .with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90); + case ASCENDING_WEST: + return Variant.variant() + .with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation3) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90); + case ASCENDING_NORTH: + return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation2); + case ASCENDING_SOUTH: + return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation3); + default: + throw new UnsupportedOperationException("Fix you generator!"); + } + } + ); + this.registerSimpleFlatItemModel(railBlock); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(railBlock).with(propertyDispatch)); + } + + private void createAirLikeBlock(Block airLikeBlock, Item particleItem) { + ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(airLikeBlock, TextureMapping.particleFromItem(particleItem), this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(airLikeBlock, resourceLocation)); + } + + private void createAirLikeBlock(Block airLikeBlock, ResourceLocation particleTexture) { + ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(airLikeBlock, TextureMapping.particle(particleTexture), this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(airLikeBlock, resourceLocation)); + } + + private ResourceLocation createParticleOnlyBlockModel(Block block, Block particleBlock) { + return ModelTemplates.PARTICLE_ONLY.create(block, TextureMapping.particle(particleBlock), this.modelOutput); + } + + public void createParticleOnlyBlock(Block block, Block particleBlock) { + this.blockStateOutput.accept(createSimpleBlock(block, this.createParticleOnlyBlockModel(block, particleBlock))); + } + + private void createParticleOnlyBlock(Block block) { + this.createParticleOnlyBlock(block, block); + } + + private void createFullAndCarpetBlocks(Block fullBlock, Block carpetBlock) { + this.createTrivialCube(fullBlock); + ResourceLocation resourceLocation = TexturedModel.CARPET.get(fullBlock).create(carpetBlock, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(carpetBlock, resourceLocation)); + } + + private void createFlowerBed(Block flowerBedBlock) { + this.registerSimpleFlatItemModel(flowerBedBlock.asItem()); + ResourceLocation resourceLocation = TexturedModel.FLOWERBED_1.create(flowerBedBlock, this.modelOutput); + ResourceLocation resourceLocation2 = TexturedModel.FLOWERBED_2.create(flowerBedBlock, this.modelOutput); + ResourceLocation resourceLocation3 = TexturedModel.FLOWERBED_3.create(flowerBedBlock, this.modelOutput); + ResourceLocation resourceLocation4 = TexturedModel.FLOWERBED_4.create(flowerBedBlock, this.modelOutput); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(flowerBedBlock) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .with( + Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ); + } + + private void createColoredBlockWithRandomRotations(TexturedModel.Provider modelProvider, Block... coloredBlocks) { + for (Block block : coloredBlocks) { + ResourceLocation resourceLocation = modelProvider.create(block, this.modelOutput); + this.blockStateOutput.accept(createRotatedVariant(block, resourceLocation)); + } + } + + private void createColoredBlockWithStateRotations(TexturedModel.Provider modelProvider, Block... coloredBlocks) { + for (Block block : coloredBlocks) { + ResourceLocation resourceLocation = modelProvider.create(block, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, resourceLocation)).with(createHorizontalFacingDispatchAlt()) + ); + } + } + + private void createGlassBlocks(Block glassBlock, Block paneBlock) { + this.createTrivialCube(glassBlock); + TextureMapping textureMapping = TextureMapping.pane(glassBlock, paneBlock); + ResourceLocation resourceLocation = ModelTemplates.STAINED_GLASS_PANE_POST.create(paneBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.STAINED_GLASS_PANE_SIDE.create(paneBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.STAINED_GLASS_PANE_SIDE_ALT.create(paneBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.STAINED_GLASS_PANE_NOSIDE.create(paneBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation5 = ModelTemplates.STAINED_GLASS_PANE_NOSIDE_ALT.create(paneBlock, textureMapping, this.modelOutput); + Item item = paneBlock.asItem(); + this.registerSimpleItemModel(item, this.createFlatItemModelWithBlockTexture(item, glassBlock)); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(paneBlock) + .with(Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .with( + Condition.condition().term(BlockStateProperties.EAST, true), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with(Condition.condition().term(BlockStateProperties.SOUTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + .with( + Condition.condition().term(BlockStateProperties.WEST, true), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with(Condition.condition().term(BlockStateProperties.NORTH, false), Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) + .with(Condition.condition().term(BlockStateProperties.EAST, false), Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ); + } + + private void createCommandBlock(Block commandBlock) { + TextureMapping textureMapping = TextureMapping.commandBlock(commandBlock); + ResourceLocation resourceLocation = ModelTemplates.COMMAND_BLOCK.create(commandBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = this.createSuffixedVariant( + commandBlock, "_conditional", ModelTemplates.COMMAND_BLOCK, resourceLocationx -> textureMapping.copyAndUpdate(TextureSlot.SIDE, resourceLocationx) + ); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(commandBlock) + .with(createBooleanModelDispatch(BlockStateProperties.CONDITIONAL, resourceLocation2, resourceLocation)) + .with(createFacingDispatch()) + ); + } + + private void createAnvil(Block anvilBlock) { + ResourceLocation resourceLocation = TexturedModel.ANVIL.create(anvilBlock, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(anvilBlock, resourceLocation).with(createHorizontalFacingDispatchAlt())); + } + + private List createBambooModels(int age) { + String string = "_age" + age; + return (List)IntStream.range(1, 5) + .mapToObj(i -> Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.BAMBOO, i + string))) + .collect(Collectors.toList()); + } + + private void createBamboo() { + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.BAMBOO) + .with(Condition.condition().term(BlockStateProperties.AGE_1, 0), this.createBambooModels(0)) + .with(Condition.condition().term(BlockStateProperties.AGE_1, 1), this.createBambooModels(1)) + .with( + Condition.condition().term(BlockStateProperties.BAMBOO_LEAVES, BambooLeaves.SMALL), + Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.BAMBOO, "_small_leaves")) + ) + .with( + Condition.condition().term(BlockStateProperties.BAMBOO_LEAVES, BambooLeaves.LARGE), + Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.BAMBOO, "_large_leaves")) + ) + ); + } + + private PropertyDispatch createColumnWithFacing() { + return PropertyDispatch.property(BlockStateProperties.FACING) + .select(Direction.DOWN, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180)) + .select(Direction.UP, Variant.variant()) + .select(Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + Direction.SOUTH, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.WEST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + Direction.EAST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ); + } + + private void createBarrel() { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.BARREL, "_top_open"); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.BARREL) + .with(this.createColumnWithFacing()) + .with( + PropertyDispatch.property(BlockStateProperties.OPEN) + .select(false, Variant.variant().with(VariantProperties.MODEL, TexturedModel.CUBE_TOP_BOTTOM.create(Blocks.BARREL, this.modelOutput))) + .select( + true, + Variant.variant() + .with( + VariantProperties.MODEL, + TexturedModel.CUBE_TOP_BOTTOM + .get(Blocks.BARREL) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.TOP, resourceLocation)) + .createWithSuffix(Blocks.BARREL, "_open", this.modelOutput) + ) + ) + ) + ); + } + + private static > PropertyDispatch createEmptyOrFullDispatch( + Property property, T minimumValueForFullVariant, ResourceLocation fullVariantModelLocation, ResourceLocation emptyVariantModelLocation + ) { + Variant variant = Variant.variant().with(VariantProperties.MODEL, fullVariantModelLocation); + Variant variant2 = Variant.variant().with(VariantProperties.MODEL, emptyVariantModelLocation); + return PropertyDispatch.property(property).generate(comparable2 -> { + boolean bl = comparable2.compareTo(minimumValueForFullVariant) >= 0; + return bl ? variant : variant2; + }); + } + + private void createBeeNest(Block beeNestBlock, Function textureMappingGetter) { + TextureMapping textureMapping = ((TextureMapping)textureMappingGetter.apply(beeNestBlock)).copyForced(TextureSlot.SIDE, TextureSlot.PARTICLE); + TextureMapping textureMapping2 = textureMapping.copyAndUpdate(TextureSlot.FRONT, TextureMapping.getBlockTexture(beeNestBlock, "_front_honey")); + ResourceLocation resourceLocation = ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM.createWithSuffix(beeNestBlock, "_empty", textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM.createWithSuffix(beeNestBlock, "_honey", textureMapping2, this.modelOutput); + this.itemModelOutput + .accept( + beeNestBlock.asItem(), + ItemModelUtils.selectBlockItemProperty( + BeehiveBlock.HONEY_LEVEL, ItemModelUtils.plainModel(resourceLocation), Map.of(5, ItemModelUtils.plainModel(resourceLocation2)) + ) + ); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(beeNestBlock) + .with(createHorizontalFacingDispatch()) + .with(createEmptyOrFullDispatch(BeehiveBlock.HONEY_LEVEL, 5, resourceLocation2, resourceLocation)) + ); + } + + private void createCropBlock(Block cropBlock, Property ageProperty, int... ageToVisualStageMapping) { + if (ageProperty.getPossibleValues().size() != ageToVisualStageMapping.length) { + throw new IllegalArgumentException(); + } else { + Int2ObjectMap int2ObjectMap = new Int2ObjectOpenHashMap<>(); + PropertyDispatch propertyDispatch = PropertyDispatch.property(ageProperty) + .generate( + integer -> { + int i = ageToVisualStageMapping[integer]; + ResourceLocation resourceLocation = int2ObjectMap.computeIfAbsent( + i, (Int2ObjectFunction)(j -> this.createSuffixedVariant(cropBlock, "_stage" + i, ModelTemplates.CROP, TextureMapping::crop)) + ); + return Variant.variant().with(VariantProperties.MODEL, resourceLocation); + } + ); + this.registerSimpleFlatItemModel(cropBlock.asItem()); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(cropBlock).with(propertyDispatch)); + } + } + + private void createBell() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.BELL, "_floor"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.BELL, "_ceiling"); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.BELL, "_wall"); + ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.BELL, "_between_walls"); + this.registerSimpleFlatItemModel(Items.BELL); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.BELL) + .with( + PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.BELL_ATTACHMENT) + .select(Direction.NORTH, BellAttachType.FLOOR, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select( + Direction.SOUTH, + BellAttachType.FLOOR, + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + BellAttachType.FLOOR, + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + BellAttachType.FLOOR, + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.NORTH, BellAttachType.CEILING, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select( + Direction.SOUTH, + BellAttachType.CEILING, + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.EAST, + BellAttachType.CEILING, + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.WEST, + BellAttachType.CEILING, + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + Direction.NORTH, + BellAttachType.SINGLE_WALL, + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + Direction.SOUTH, + BellAttachType.SINGLE_WALL, + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select(Direction.EAST, BellAttachType.SINGLE_WALL, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + .select( + Direction.WEST, + BellAttachType.SINGLE_WALL, + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.SOUTH, + BellAttachType.DOUBLE_WALL, + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + Direction.NORTH, + BellAttachType.DOUBLE_WALL, + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(Direction.EAST, BellAttachType.DOUBLE_WALL, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) + .select( + Direction.WEST, + BellAttachType.DOUBLE_WALL, + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + ) + ); + } + + private void createGrindstone() { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant( + Blocks.GRINDSTONE, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.GRINDSTONE)) + ) + .with( + PropertyDispatch.properties(BlockStateProperties.ATTACH_FACE, BlockStateProperties.HORIZONTAL_FACING) + .select(AttachFace.FLOOR, Direction.NORTH, Variant.variant()) + .select(AttachFace.FLOOR, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(AttachFace.FLOOR, Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(AttachFace.FLOOR, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + .select(AttachFace.WALL, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + AttachFace.WALL, + Direction.EAST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + AttachFace.WALL, + Direction.SOUTH, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + AttachFace.WALL, + Direction.WEST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(AttachFace.CEILING, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180)) + .select( + AttachFace.CEILING, + Direction.WEST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + AttachFace.CEILING, + Direction.NORTH, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + AttachFace.CEILING, + Direction.EAST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ) + ); + } + + private void createFurnace(Block furnaceBlock, TexturedModel.Provider modelProvider) { + ResourceLocation resourceLocation = modelProvider.create(furnaceBlock, this.modelOutput); + ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(furnaceBlock, "_front_on"); + ResourceLocation resourceLocation3 = modelProvider.get(furnaceBlock) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.FRONT, resourceLocation2)) + .createWithSuffix(furnaceBlock, "_on", this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(furnaceBlock) + .with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation3, resourceLocation)) + .with(createHorizontalFacingDispatch()) + ); + } + + private void createCampfires(Block... campfireBlocks) { + ResourceLocation resourceLocation = ModelLocationUtils.decorateBlockModelLocation("campfire_off"); + + for (Block block : campfireBlocks) { + ResourceLocation resourceLocation2 = ModelTemplates.CAMPFIRE.create(block, TextureMapping.campfire(block), this.modelOutput); + this.registerSimpleFlatItemModel(block.asItem()); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block) + .with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation2, resourceLocation)) + .with(createHorizontalFacingDispatchAlt()) + ); + } + } + + private void createAzalea(Block azaleaBlock) { + ResourceLocation resourceLocation = ModelTemplates.AZALEA.create(azaleaBlock, TextureMapping.cubeTop(azaleaBlock), this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(azaleaBlock, resourceLocation)); + } + + private void createPottedAzalea(Block pottedAzaleaBlock) { + ResourceLocation resourceLocation; + if (pottedAzaleaBlock == Blocks.POTTED_FLOWERING_AZALEA) { + resourceLocation = ModelTemplates.POTTED_FLOWERING_AZALEA.create(pottedAzaleaBlock, TextureMapping.pottedAzalea(pottedAzaleaBlock), this.modelOutput); + } else { + resourceLocation = ModelTemplates.POTTED_AZALEA.create(pottedAzaleaBlock, TextureMapping.pottedAzalea(pottedAzaleaBlock), this.modelOutput); + } + + this.blockStateOutput.accept(createSimpleBlock(pottedAzaleaBlock, resourceLocation)); + } + + private void createBookshelf() { + TextureMapping textureMapping = TextureMapping.column(TextureMapping.getBlockTexture(Blocks.BOOKSHELF), TextureMapping.getBlockTexture(Blocks.OAK_PLANKS)); + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(Blocks.BOOKSHELF, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(Blocks.BOOKSHELF, resourceLocation)); + } + + private void createRedstoneWire() { + this.registerSimpleFlatItemModel(Items.REDSTONE); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.REDSTONE_WIRE) + .with( + Condition.or( + Condition.condition() + .term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.NONE) + .term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.NONE) + .term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.NONE) + .term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.NONE), + Condition.condition() + .term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) + .term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Condition.condition() + .term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) + .term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Condition.condition() + .term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) + .term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Condition.condition() + .term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) + .term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) + ), + Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_dot")) + ) + .with( + Condition.condition().term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side0")) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side_alt0")) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side_alt1")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side1")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .with( + Condition.condition().term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.UP), + Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.UP), + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.UP), + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.UP), + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ); + } + + private void createComparator() { + this.registerSimpleFlatItemModel(Items.COMPARATOR); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.COMPARATOR) + .with(createHorizontalFacingDispatchAlt()) + .with( + PropertyDispatch.properties(BlockStateProperties.MODE_COMPARATOR, BlockStateProperties.POWERED) + .select(ComparatorMode.COMPARE, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR))) + .select(ComparatorMode.COMPARE, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR, "_on"))) + .select( + ComparatorMode.SUBTRACT, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR, "_subtract")) + ) + .select( + ComparatorMode.SUBTRACT, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR, "_on_subtract")) + ) + ) + ); + } + + private void createSmoothStoneSlab() { + TextureMapping textureMapping = TextureMapping.cube(Blocks.SMOOTH_STONE); + TextureMapping textureMapping2 = TextureMapping.column(TextureMapping.getBlockTexture(Blocks.SMOOTH_STONE_SLAB, "_side"), textureMapping.get(TextureSlot.TOP)); + ResourceLocation resourceLocation = ModelTemplates.SLAB_BOTTOM.create(Blocks.SMOOTH_STONE_SLAB, textureMapping2, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.SLAB_TOP.create(Blocks.SMOOTH_STONE_SLAB, textureMapping2, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.CUBE_COLUMN.createWithOverride(Blocks.SMOOTH_STONE_SLAB, "_double", textureMapping2, this.modelOutput); + this.blockStateOutput.accept(createSlab(Blocks.SMOOTH_STONE_SLAB, resourceLocation, resourceLocation2, resourceLocation3)); + this.blockStateOutput.accept(createSimpleBlock(Blocks.SMOOTH_STONE, ModelTemplates.CUBE_ALL.create(Blocks.SMOOTH_STONE, textureMapping, this.modelOutput))); + } + + private void createBrewingStand() { + this.registerSimpleFlatItemModel(Items.BREWING_STAND); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.BREWING_STAND) + .with(Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND))) + .with( + Condition.condition().term(BlockStateProperties.HAS_BOTTLE_0, true), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_bottle0")) + ) + .with( + Condition.condition().term(BlockStateProperties.HAS_BOTTLE_1, true), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_bottle1")) + ) + .with( + Condition.condition().term(BlockStateProperties.HAS_BOTTLE_2, true), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_bottle2")) + ) + .with( + Condition.condition().term(BlockStateProperties.HAS_BOTTLE_0, false), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_empty0")) + ) + .with( + Condition.condition().term(BlockStateProperties.HAS_BOTTLE_1, false), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_empty1")) + ) + .with( + Condition.condition().term(BlockStateProperties.HAS_BOTTLE_2, false), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_empty2")) + ) + ); + } + + private void createMushroomBlock(Block mushroomBlock) { + ResourceLocation resourceLocation = ModelTemplates.SINGLE_FACE.create(mushroomBlock, TextureMapping.defaultTexture(mushroomBlock), this.modelOutput); + ResourceLocation resourceLocation2 = ModelLocationUtils.decorateBlockModelLocation("mushroom_block_inside"); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(mushroomBlock) + .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .with( + Condition.condition().term(BlockStateProperties.EAST, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.UP, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.DOWN, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with(Condition.condition().term(BlockStateProperties.NORTH, false), Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .with( + Condition.condition().term(BlockStateProperties.EAST, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.UP, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, false) + ) + .with( + Condition.condition().term(BlockStateProperties.DOWN, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, false) + ) + ); + this.registerSimpleItemModel(mushroomBlock, TexturedModel.CUBE.createWithSuffix(mushroomBlock, "_inventory", this.modelOutput)); + } + + private void createCakeBlock() { + this.registerSimpleFlatItemModel(Items.CAKE); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.CAKE) + .with( + PropertyDispatch.property(BlockStateProperties.BITES) + .select(0, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE))) + .select(1, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice1"))) + .select(2, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice2"))) + .select(3, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice3"))) + .select(4, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice4"))) + .select(5, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice5"))) + .select(6, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice6"))) + ) + ); + } + + private void createCartographyTable() { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.PARTICLE, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side3")) + .put(TextureSlot.DOWN, TextureMapping.getBlockTexture(Blocks.DARK_OAK_PLANKS)) + .put(TextureSlot.UP, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_top")) + .put(TextureSlot.NORTH, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side3")) + .put(TextureSlot.EAST, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side3")) + .put(TextureSlot.SOUTH, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side1")) + .put(TextureSlot.WEST, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side2")); + this.blockStateOutput + .accept(createSimpleBlock(Blocks.CARTOGRAPHY_TABLE, ModelTemplates.CUBE.create(Blocks.CARTOGRAPHY_TABLE, textureMapping, this.modelOutput))); + } + + private void createSmithingTable() { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.PARTICLE, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_front")) + .put(TextureSlot.DOWN, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_bottom")) + .put(TextureSlot.UP, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_top")) + .put(TextureSlot.NORTH, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_front")) + .put(TextureSlot.SOUTH, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_front")) + .put(TextureSlot.EAST, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_side")) + .put(TextureSlot.WEST, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_side")); + this.blockStateOutput.accept(createSimpleBlock(Blocks.SMITHING_TABLE, ModelTemplates.CUBE.create(Blocks.SMITHING_TABLE, textureMapping, this.modelOutput))); + } + + private void createCraftingTableLike(Block craftingTableBlock, Block craftingTableMaterialBlock, BiFunction textureMappingGetter) { + TextureMapping textureMapping = (TextureMapping)textureMappingGetter.apply(craftingTableBlock, craftingTableMaterialBlock); + this.blockStateOutput.accept(createSimpleBlock(craftingTableBlock, ModelTemplates.CUBE.create(craftingTableBlock, textureMapping, this.modelOutput))); + } + + public void createGenericCube(Block block) { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.PARTICLE, TextureMapping.getBlockTexture(block, "_particle")) + .put(TextureSlot.DOWN, TextureMapping.getBlockTexture(block, "_down")) + .put(TextureSlot.UP, TextureMapping.getBlockTexture(block, "_up")) + .put(TextureSlot.NORTH, TextureMapping.getBlockTexture(block, "_north")) + .put(TextureSlot.SOUTH, TextureMapping.getBlockTexture(block, "_south")) + .put(TextureSlot.EAST, TextureMapping.getBlockTexture(block, "_east")) + .put(TextureSlot.WEST, TextureMapping.getBlockTexture(block, "_west")); + this.blockStateOutput.accept(createSimpleBlock(block, ModelTemplates.CUBE.create(block, textureMapping, this.modelOutput))); + } + + private void createPumpkins() { + TextureMapping textureMapping = TextureMapping.column(Blocks.PUMPKIN); + this.blockStateOutput.accept(createSimpleBlock(Blocks.PUMPKIN, ModelLocationUtils.getModelLocation(Blocks.PUMPKIN))); + this.createPumpkinVariant(Blocks.CARVED_PUMPKIN, textureMapping); + this.createPumpkinVariant(Blocks.JACK_O_LANTERN, textureMapping); + } + + private void createPumpkinVariant(Block pumpkinBlock, TextureMapping columnTextureMapping) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_ORIENTABLE + .create(pumpkinBlock, columnTextureMapping.copyAndUpdate(TextureSlot.FRONT, TextureMapping.getBlockTexture(pumpkinBlock)), this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(pumpkinBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation)).with(createHorizontalFacingDispatch()) + ); + } + + private void createCauldrons() { + this.registerSimpleFlatItemModel(Items.CAULDRON); + this.createNonTemplateModelBlock(Blocks.CAULDRON); + this.blockStateOutput + .accept( + createSimpleBlock( + Blocks.LAVA_CAULDRON, + ModelTemplates.CAULDRON_FULL + .create(Blocks.LAVA_CAULDRON, TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.LAVA, "_still")), this.modelOutput) + ) + ); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.WATER_CAULDRON) + .with( + PropertyDispatch.property(LayeredCauldronBlock.LEVEL) + .select( + 1, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CAULDRON_LEVEL1 + .createWithSuffix( + Blocks.WATER_CAULDRON, "_level1", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.WATER, "_still")), this.modelOutput + ) + ) + ) + .select( + 2, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CAULDRON_LEVEL2 + .createWithSuffix( + Blocks.WATER_CAULDRON, "_level2", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.WATER, "_still")), this.modelOutput + ) + ) + ) + .select( + 3, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CAULDRON_FULL + .createWithSuffix(Blocks.WATER_CAULDRON, "_full", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.WATER, "_still")), this.modelOutput) + ) + ) + ) + ); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.POWDER_SNOW_CAULDRON) + .with( + PropertyDispatch.property(LayeredCauldronBlock.LEVEL) + .select( + 1, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CAULDRON_LEVEL1 + .createWithSuffix( + Blocks.POWDER_SNOW_CAULDRON, "_level1", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.POWDER_SNOW)), this.modelOutput + ) + ) + ) + .select( + 2, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CAULDRON_LEVEL2 + .createWithSuffix( + Blocks.POWDER_SNOW_CAULDRON, "_level2", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.POWDER_SNOW)), this.modelOutput + ) + ) + ) + .select( + 3, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.CAULDRON_FULL + .createWithSuffix( + Blocks.POWDER_SNOW_CAULDRON, "_full", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.POWDER_SNOW)), this.modelOutput + ) + ) + ) + ) + ); + } + + private void createChorusFlower() { + TextureMapping textureMapping = TextureMapping.defaultTexture(Blocks.CHORUS_FLOWER); + ResourceLocation resourceLocation = ModelTemplates.CHORUS_FLOWER.create(Blocks.CHORUS_FLOWER, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = this.createSuffixedVariant( + Blocks.CHORUS_FLOWER, "_dead", ModelTemplates.CHORUS_FLOWER, resourceLocationx -> textureMapping.copyAndUpdate(TextureSlot.TEXTURE, resourceLocationx) + ); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.CHORUS_FLOWER) + .with(createEmptyOrFullDispatch(BlockStateProperties.AGE_5, 5, resourceLocation2, resourceLocation)) + ); + } + + private void createCrafterBlock() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.CRAFTER); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.CRAFTER, "_triggered"); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.CRAFTER, "_crafting"); + ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.CRAFTER, "_crafting_triggered"); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.CRAFTER) + .with(PropertyDispatch.property(BlockStateProperties.ORIENTATION).generate(frontAndTop -> this.applyRotation(frontAndTop, Variant.variant()))) + .with( + PropertyDispatch.properties(BlockStateProperties.TRIGGERED, CrafterBlock.CRAFTING) + .select(false, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(true, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) + .select(true, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(false, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + ) + ); + } + + private void createDispenserBlock(Block dispenserBlock) { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.FURNACE, "_top")) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.FURNACE, "_side")) + .put(TextureSlot.FRONT, TextureMapping.getBlockTexture(dispenserBlock, "_front")); + TextureMapping textureMapping2 = new TextureMapping() + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.FURNACE, "_top")) + .put(TextureSlot.FRONT, TextureMapping.getBlockTexture(dispenserBlock, "_front_vertical")); + ResourceLocation resourceLocation = ModelTemplates.CUBE_ORIENTABLE.create(dispenserBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUBE_ORIENTABLE_VERTICAL.create(dispenserBlock, textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(dispenserBlock) + .with( + PropertyDispatch.property(BlockStateProperties.FACING) + .select( + Direction.DOWN, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.X_ROT, VariantProperties.Rotation.R180) + ) + .select(Direction.UP, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(Direction.NORTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(Direction.EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select( + Direction.SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select(Direction.WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + ) + ); + } + + private void createEndPortalFrame() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.END_PORTAL_FRAME); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.END_PORTAL_FRAME, "_filled"); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.END_PORTAL_FRAME) + .with( + PropertyDispatch.property(BlockStateProperties.EYE) + .select(false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(true, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + ) + .with(createHorizontalFacingDispatchAlt()) + ); + } + + private void createChorusPlant() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_side"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside"); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside1"); + ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside2"); + ResourceLocation resourceLocation5 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside3"); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.CHORUS_PLANT) + .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .with( + Condition.condition().term(BlockStateProperties.EAST, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.UP, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.DOWN, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.NORTH, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.WEIGHT, 2), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4), + Variant.variant().with(VariantProperties.MODEL, resourceLocation5) + ) + .with( + Condition.condition().term(BlockStateProperties.EAST, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation3) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation4) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation5) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.WEIGHT, 2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.SOUTH, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation4) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation5) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.WEIGHT, 2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation3) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.WEST, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation5) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.WEIGHT, 2) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation3) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation4) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.UP, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.WEIGHT, 2) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation5) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation3) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation4) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.UV_LOCK, true) + ) + .with( + Condition.condition().term(BlockStateProperties.DOWN, false), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation5) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation4) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation3) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation2) + .with(VariantProperties.WEIGHT, 2) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.UV_LOCK, true) + ) + ); + } + + private void createComposter() { + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.COMPOSTER) + .with(Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER))) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 1), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents1")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 2), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents2")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 3), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents3")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 4), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents4")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 5), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents5")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 6), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents6")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 7), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents7")) + ) + .with( + Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 8), + Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents_ready")) + ) + ); + } + + private void createCopperBulb(Block bulbBlock) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_ALL.create(bulbBlock, TextureMapping.cube(bulbBlock), this.modelOutput); + ResourceLocation resourceLocation2 = this.createSuffixedVariant(bulbBlock, "_powered", ModelTemplates.CUBE_ALL, TextureMapping::cube); + ResourceLocation resourceLocation3 = this.createSuffixedVariant(bulbBlock, "_lit", ModelTemplates.CUBE_ALL, TextureMapping::cube); + ResourceLocation resourceLocation4 = this.createSuffixedVariant(bulbBlock, "_lit_powered", ModelTemplates.CUBE_ALL, TextureMapping::cube); + this.blockStateOutput.accept(this.createCopperBulb(bulbBlock, resourceLocation, resourceLocation3, resourceLocation2, resourceLocation4)); + } + + private BlockStateGenerator createCopperBulb( + Block bulbBlock, ResourceLocation unlit, ResourceLocation unlitPowered, ResourceLocation lit, ResourceLocation litPowered + ) { + return MultiVariantGenerator.multiVariant(bulbBlock) + .with( + PropertyDispatch.properties(BlockStateProperties.LIT, BlockStateProperties.POWERED) + .generate( + (boolean_, boolean2) -> boolean_ + ? Variant.variant().with(VariantProperties.MODEL, boolean2 ? litPowered : unlitPowered) + : Variant.variant().with(VariantProperties.MODEL, boolean2 ? lit : unlit) + ) + ); + } + + private void copyCopperBulbModel(Block bulbBlock, Block sourceBlock) { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(bulbBlock); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(bulbBlock, "_powered"); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(bulbBlock, "_lit"); + ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(bulbBlock, "_lit_powered"); + this.itemModelOutput.copy(bulbBlock.asItem(), sourceBlock.asItem()); + this.blockStateOutput.accept(this.createCopperBulb(sourceBlock, resourceLocation, resourceLocation3, resourceLocation2, resourceLocation4)); + } + + private void createAmethystCluster(Block amethystBlock) { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant( + amethystBlock, + Variant.variant().with(VariantProperties.MODEL, ModelTemplates.CROSS.create(amethystBlock, TextureMapping.cross(amethystBlock), this.modelOutput)) + ) + .with(this.createColumnWithFacing()) + ); + } + + private void createAmethystClusters() { + this.createAmethystCluster(Blocks.SMALL_AMETHYST_BUD); + this.createAmethystCluster(Blocks.MEDIUM_AMETHYST_BUD); + this.createAmethystCluster(Blocks.LARGE_AMETHYST_BUD); + this.createAmethystCluster(Blocks.AMETHYST_CLUSTER); + } + + private void createPointedDripstone() { + PropertyDispatch.C2 c2 = PropertyDispatch.properties( + BlockStateProperties.VERTICAL_DIRECTION, BlockStateProperties.DRIPSTONE_THICKNESS + ); + + for (DripstoneThickness dripstoneThickness : DripstoneThickness.values()) { + c2.select(Direction.UP, dripstoneThickness, this.createPointedDripstoneVariant(Direction.UP, dripstoneThickness)); + } + + for (DripstoneThickness dripstoneThickness : DripstoneThickness.values()) { + c2.select(Direction.DOWN, dripstoneThickness, this.createPointedDripstoneVariant(Direction.DOWN, dripstoneThickness)); + } + + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(Blocks.POINTED_DRIPSTONE).with(c2)); + } + + private Variant createPointedDripstoneVariant(Direction direction, DripstoneThickness dripstoneThickness) { + String string = "_" + direction.getSerializedName() + "_" + dripstoneThickness.getSerializedName(); + TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(Blocks.POINTED_DRIPSTONE, string)); + return Variant.variant() + .with(VariantProperties.MODEL, ModelTemplates.POINTED_DRIPSTONE.createWithSuffix(Blocks.POINTED_DRIPSTONE, string, textureMapping, this.modelOutput)); + } + + private void createNyliumBlock(Block nyliumBlock) { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.BOTTOM, TextureMapping.getBlockTexture(Blocks.NETHERRACK)) + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(nyliumBlock)) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(nyliumBlock, "_side")); + this.blockStateOutput.accept(createSimpleBlock(nyliumBlock, ModelTemplates.CUBE_BOTTOM_TOP.create(nyliumBlock, textureMapping, this.modelOutput))); + } + + private void createDaylightDetector() { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.DAYLIGHT_DETECTOR, "_side"); + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.DAYLIGHT_DETECTOR, "_top")) + .put(TextureSlot.SIDE, resourceLocation); + TextureMapping textureMapping2 = new TextureMapping() + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.DAYLIGHT_DETECTOR, "_inverted_top")) + .put(TextureSlot.SIDE, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.DAYLIGHT_DETECTOR) + .with( + PropertyDispatch.property(BlockStateProperties.INVERTED) + .select( + false, + Variant.variant().with(VariantProperties.MODEL, ModelTemplates.DAYLIGHT_DETECTOR.create(Blocks.DAYLIGHT_DETECTOR, textureMapping, this.modelOutput)) + ) + .select( + true, + Variant.variant() + .with( + VariantProperties.MODEL, + ModelTemplates.DAYLIGHT_DETECTOR + .create(ModelLocationUtils.getModelLocation(Blocks.DAYLIGHT_DETECTOR, "_inverted"), textureMapping2, this.modelOutput) + ) + ) + ) + ); + } + + private void createRotatableColumn(Block rotatableColumnBlock) { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant( + rotatableColumnBlock, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(rotatableColumnBlock)) + ) + .with(this.createColumnWithFacing()) + ); + } + + private void createLightningRod() { + Block block = Blocks.LIGHTNING_ROD; + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block, "_on"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(block); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(block))) + .with(this.createColumnWithFacing()) + .with(createBooleanModelDispatch(BlockStateProperties.POWERED, resourceLocation, resourceLocation2)) + ); + } + + private void createFarmland() { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.DIRT, TextureMapping.getBlockTexture(Blocks.DIRT)) + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.FARMLAND)); + TextureMapping textureMapping2 = new TextureMapping() + .put(TextureSlot.DIRT, TextureMapping.getBlockTexture(Blocks.DIRT)) + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.FARMLAND, "_moist")); + ResourceLocation resourceLocation = ModelTemplates.FARMLAND.create(Blocks.FARMLAND, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.FARMLAND + .create(TextureMapping.getBlockTexture(Blocks.FARMLAND, "_moist"), textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.FARMLAND).with(createEmptyOrFullDispatch(BlockStateProperties.MOISTURE, 7, resourceLocation2, resourceLocation)) + ); + } + + private List createFloorFireModels(Block fireBlock) { + ResourceLocation resourceLocation = ModelTemplates.FIRE_FLOOR + .create(ModelLocationUtils.getModelLocation(fireBlock, "_floor0"), TextureMapping.fire0(fireBlock), this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.FIRE_FLOOR + .create(ModelLocationUtils.getModelLocation(fireBlock, "_floor1"), TextureMapping.fire1(fireBlock), this.modelOutput); + return ImmutableList.of(resourceLocation, resourceLocation2); + } + + private List createSideFireModels(Block fireBlock) { + ResourceLocation resourceLocation = ModelTemplates.FIRE_SIDE + .create(ModelLocationUtils.getModelLocation(fireBlock, "_side0"), TextureMapping.fire0(fireBlock), this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.FIRE_SIDE + .create(ModelLocationUtils.getModelLocation(fireBlock, "_side1"), TextureMapping.fire1(fireBlock), this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.FIRE_SIDE_ALT + .create(ModelLocationUtils.getModelLocation(fireBlock, "_side_alt0"), TextureMapping.fire0(fireBlock), this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.FIRE_SIDE_ALT + .create(ModelLocationUtils.getModelLocation(fireBlock, "_side_alt1"), TextureMapping.fire1(fireBlock), this.modelOutput); + return ImmutableList.of(resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4); + } + + private List createTopFireModels(Block fireBlock) { + ResourceLocation resourceLocation = ModelTemplates.FIRE_UP + .create(ModelLocationUtils.getModelLocation(fireBlock, "_up0"), TextureMapping.fire0(fireBlock), this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.FIRE_UP + .create(ModelLocationUtils.getModelLocation(fireBlock, "_up1"), TextureMapping.fire1(fireBlock), this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.FIRE_UP_ALT + .create(ModelLocationUtils.getModelLocation(fireBlock, "_up_alt0"), TextureMapping.fire0(fireBlock), this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.FIRE_UP_ALT + .create(ModelLocationUtils.getModelLocation(fireBlock, "_up_alt1"), TextureMapping.fire1(fireBlock), this.modelOutput); + return ImmutableList.of(resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4); + } + + private static List wrapModels(List modelLocations, UnaryOperator variantMapper) { + return (List)modelLocations.stream() + .map(resourceLocation -> Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .map(variantMapper) + .collect(Collectors.toList()); + } + + private void createFire() { + Condition condition = Condition.condition() + .term(BlockStateProperties.NORTH, false) + .term(BlockStateProperties.EAST, false) + .term(BlockStateProperties.SOUTH, false) + .term(BlockStateProperties.WEST, false) + .term(BlockStateProperties.UP, false); + List list = this.createFloorFireModels(Blocks.FIRE); + List list2 = this.createSideFireModels(Blocks.FIRE); + List list3 = this.createTopFireModels(Blocks.FIRE); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.FIRE) + .with(condition, wrapModels(list, variant -> variant)) + .with(Condition.or(Condition.condition().term(BlockStateProperties.NORTH, true), condition), wrapModels(list2, variant -> variant)) + .with( + Condition.or(Condition.condition().term(BlockStateProperties.EAST, true), condition), + wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + ) + .with( + Condition.or(Condition.condition().term(BlockStateProperties.SOUTH, true), condition), + wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + ) + .with( + Condition.or(Condition.condition().term(BlockStateProperties.WEST, true), condition), + wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + ) + .with(Condition.condition().term(BlockStateProperties.UP, true), wrapModels(list3, variant -> variant)) + ); + } + + private void createSoulFire() { + List list = this.createFloorFireModels(Blocks.SOUL_FIRE); + List list2 = this.createSideFireModels(Blocks.SOUL_FIRE); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.SOUL_FIRE) + .with(wrapModels(list, variant -> variant)) + .with(wrapModels(list2, variant -> variant)) + .with(wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90))) + .with(wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180))) + .with(wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270))) + ); + } + + private void createLantern(Block lanternBlock) { + ResourceLocation resourceLocation = TexturedModel.LANTERN.create(lanternBlock, this.modelOutput); + ResourceLocation resourceLocation2 = TexturedModel.HANGING_LANTERN.create(lanternBlock, this.modelOutput); + this.registerSimpleFlatItemModel(lanternBlock.asItem()); + this.blockStateOutput + .accept(MultiVariantGenerator.multiVariant(lanternBlock).with(createBooleanModelDispatch(BlockStateProperties.HANGING, resourceLocation2, resourceLocation))); + } + + private void createMuddyMangroveRoots() { + TextureMapping textureMapping = TextureMapping.column( + TextureMapping.getBlockTexture(Blocks.MUDDY_MANGROVE_ROOTS, "_side"), TextureMapping.getBlockTexture(Blocks.MUDDY_MANGROVE_ROOTS, "_top") + ); + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(Blocks.MUDDY_MANGROVE_ROOTS, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createAxisAlignedPillarBlock(Blocks.MUDDY_MANGROVE_ROOTS, resourceLocation)); + } + + private void createMangrovePropagule() { + this.registerSimpleFlatItemModel(Items.MANGROVE_PROPAGULE); + Block block = Blocks.MANGROVE_PROPAGULE; + PropertyDispatch.C2 c2 = PropertyDispatch.properties(MangrovePropaguleBlock.HANGING, MangrovePropaguleBlock.AGE); + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); + + for (int i = 0; i <= 4; i++) { + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(block, "_hanging_" + i); + c2.select(true, i, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)); + c2.select(false, i, Variant.variant().with(VariantProperties.MODEL, resourceLocation)); + } + + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(Blocks.MANGROVE_PROPAGULE).with(c2)); + } + + private void createFrostedIce() { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.FROSTED_ICE) + .with( + PropertyDispatch.property(BlockStateProperties.AGE_3) + .select( + 0, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_0", ModelTemplates.CUBE_ALL, TextureMapping::cube)) + ) + .select( + 1, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_1", ModelTemplates.CUBE_ALL, TextureMapping::cube)) + ) + .select( + 2, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_2", ModelTemplates.CUBE_ALL, TextureMapping::cube)) + ) + .select( + 3, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_3", ModelTemplates.CUBE_ALL, TextureMapping::cube)) + ) + ) + ); + } + + private void createGrassBlocks() { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.DIRT); + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.BOTTOM, resourceLocation) + .copyForced(TextureSlot.BOTTOM, TextureSlot.PARTICLE) + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.GRASS_BLOCK, "_top")) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.GRASS_BLOCK, "_snow")); + Variant variant = Variant.variant() + .with(VariantProperties.MODEL, ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.GRASS_BLOCK, "_snow", textureMapping, this.modelOutput)); + this.createGrassLikeBlock(Blocks.GRASS_BLOCK, ModelLocationUtils.getModelLocation(Blocks.GRASS_BLOCK), variant); + this.registerSimpleTintedItemModel(Blocks.GRASS_BLOCK, ModelLocationUtils.getModelLocation(Blocks.GRASS_BLOCK), new GrassColorSource()); + ResourceLocation resourceLocation2 = TexturedModel.CUBE_TOP_BOTTOM + .get(Blocks.MYCELIUM) + .updateTextures(textureMappingx -> textureMappingx.put(TextureSlot.BOTTOM, resourceLocation)) + .create(Blocks.MYCELIUM, this.modelOutput); + this.createGrassLikeBlock(Blocks.MYCELIUM, resourceLocation2, variant); + ResourceLocation resourceLocation3 = TexturedModel.CUBE_TOP_BOTTOM + .get(Blocks.PODZOL) + .updateTextures(textureMappingx -> textureMappingx.put(TextureSlot.BOTTOM, resourceLocation)) + .create(Blocks.PODZOL, this.modelOutput); + this.createGrassLikeBlock(Blocks.PODZOL, resourceLocation3, variant); + } + + private void createGrassLikeBlock(Block grassLikeBlock, ResourceLocation modelLocation, Variant variant) { + List list = Arrays.asList(createRotatedVariants(modelLocation)); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(grassLikeBlock).with(PropertyDispatch.property(BlockStateProperties.SNOWY).select(true, variant).select(false, list)) + ); + } + + private void createCocoa() { + this.registerSimpleFlatItemModel(Items.COCOA_BEANS); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.COCOA) + .with( + PropertyDispatch.property(BlockStateProperties.AGE_2) + .select(0, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COCOA, "_stage0"))) + .select(1, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COCOA, "_stage1"))) + .select(2, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COCOA, "_stage2"))) + ) + .with(createHorizontalFacingDispatchAlt()) + ); + } + + private void createDirtPath() { + this.blockStateOutput.accept(createRotatedVariant(Blocks.DIRT_PATH, ModelLocationUtils.getModelLocation(Blocks.DIRT_PATH))); + } + + private void createWeightedPressurePlate(Block pressurePlateBlock, Block plateMaterialBlock) { + TextureMapping textureMapping = TextureMapping.defaultTexture(plateMaterialBlock); + ResourceLocation resourceLocation = ModelTemplates.PRESSURE_PLATE_UP.create(pressurePlateBlock, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.PRESSURE_PLATE_DOWN.create(pressurePlateBlock, textureMapping, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(pressurePlateBlock).with(createEmptyOrFullDispatch(BlockStateProperties.POWER, 1, resourceLocation2, resourceLocation)) + ); + } + + private void createHopper() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.HOPPER); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.HOPPER, "_side"); + this.registerSimpleFlatItemModel(Items.HOPPER); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.HOPPER) + .with( + PropertyDispatch.property(BlockStateProperties.FACING_HOPPER) + .select(Direction.DOWN, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(Direction.NORTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(Direction.EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select( + Direction.SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + Direction.WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ) + ); + } + + private void copyModel(Block sourceBlock, Block targetBlock) { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(sourceBlock); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(targetBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation))); + this.itemModelOutput.copy(sourceBlock.asItem(), targetBlock.asItem()); + } + + private void createIronBars() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_post_ends"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_post"); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_cap"); + ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_cap_alt"); + ResourceLocation resourceLocation5 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_side"); + ResourceLocation resourceLocation6 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_side_alt"); + this.blockStateOutput + .accept( + MultiPartGenerator.multiPart(Blocks.IRON_BARS) + .with(Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .with( + Condition.condition() + .term(BlockStateProperties.NORTH, false) + .term(BlockStateProperties.EAST, false) + .term(BlockStateProperties.SOUTH, false) + .term(BlockStateProperties.WEST, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation2) + ) + .with( + Condition.condition() + .term(BlockStateProperties.NORTH, true) + .term(BlockStateProperties.EAST, false) + .term(BlockStateProperties.SOUTH, false) + .term(BlockStateProperties.WEST, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3) + ) + .with( + Condition.condition() + .term(BlockStateProperties.NORTH, false) + .term(BlockStateProperties.EAST, true) + .term(BlockStateProperties.SOUTH, false) + .term(BlockStateProperties.WEST, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with( + Condition.condition() + .term(BlockStateProperties.NORTH, false) + .term(BlockStateProperties.EAST, false) + .term(BlockStateProperties.SOUTH, true) + .term(BlockStateProperties.WEST, false), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4) + ) + .with( + Condition.condition() + .term(BlockStateProperties.NORTH, false) + .term(BlockStateProperties.EAST, false) + .term(BlockStateProperties.SOUTH, false) + .term(BlockStateProperties.WEST, true), + Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) + .with( + Condition.condition().term(BlockStateProperties.EAST, true), + Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .with(Condition.condition().term(BlockStateProperties.SOUTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation6)) + .with( + Condition.condition().term(BlockStateProperties.WEST, true), + Variant.variant().with(VariantProperties.MODEL, resourceLocation6).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + ); + this.registerSimpleFlatItemModel(Blocks.IRON_BARS); + } + + private void createNonTemplateHorizontalBlock(Block horizontalBlock) { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(horizontalBlock, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(horizontalBlock))) + .with(createHorizontalFacingDispatch()) + ); + } + + private void createLever() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.LEVER); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.LEVER, "_on"); + this.registerSimpleFlatItemModel(Blocks.LEVER); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.LEVER) + .with(createBooleanModelDispatch(BlockStateProperties.POWERED, resourceLocation, resourceLocation2)) + .with( + PropertyDispatch.properties(BlockStateProperties.ATTACH_FACE, BlockStateProperties.HORIZONTAL_FACING) + .select( + AttachFace.CEILING, + Direction.NORTH, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + AttachFace.CEILING, + Direction.EAST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(AttachFace.CEILING, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180)) + .select( + AttachFace.CEILING, + Direction.WEST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R180).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select(AttachFace.FLOOR, Direction.NORTH, Variant.variant()) + .select(AttachFace.FLOOR, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90)) + .select(AttachFace.FLOOR, Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180)) + .select(AttachFace.FLOOR, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270)) + .select(AttachFace.WALL, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90)) + .select( + AttachFace.WALL, + Direction.EAST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + AttachFace.WALL, + Direction.SOUTH, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + AttachFace.WALL, + Direction.WEST, + Variant.variant().with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + ) + ); + } + + private void createLilyPad() { + ResourceLocation resourceLocation = this.createFlatItemModelWithBlockTexture(Items.LILY_PAD, Blocks.LILY_PAD); + this.registerSimpleTintedItemModel(Blocks.LILY_PAD, resourceLocation, ItemModelUtils.constantTint(-9321636)); + this.blockStateOutput.accept(createRotatedVariant(Blocks.LILY_PAD, ModelLocationUtils.getModelLocation(Blocks.LILY_PAD))); + } + + private void createFrogspawnBlock() { + this.registerSimpleFlatItemModel(Blocks.FROGSPAWN); + this.blockStateOutput.accept(createSimpleBlock(Blocks.FROGSPAWN, ModelLocationUtils.getModelLocation(Blocks.FROGSPAWN))); + } + + private void createNetherPortalBlock() { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.NETHER_PORTAL) + .with( + PropertyDispatch.property(BlockStateProperties.HORIZONTAL_AXIS) + .select(Axis.X, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.NETHER_PORTAL, "_ns"))) + .select(Axis.Z, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.NETHER_PORTAL, "_ew"))) + ) + ); + } + + private void createNetherrack() { + ResourceLocation resourceLocation = TexturedModel.CUBE.create(Blocks.NETHERRACK, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant( + Blocks.NETHERRACK, + Variant.variant().with(VariantProperties.MODEL, resourceLocation), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, VariantProperties.Rotation.R90), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, VariantProperties.Rotation.R180), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, VariantProperties.Rotation.R270), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R180), + Variant.variant() + .with(VariantProperties.MODEL, resourceLocation) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + .with(VariantProperties.X_ROT, VariantProperties.Rotation.R270) + ) + ); + } + + private void createObserver() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.OBSERVER); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.OBSERVER, "_on"); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.OBSERVER) + .with(createBooleanModelDispatch(BlockStateProperties.POWERED, resourceLocation2, resourceLocation)) + .with(createFacingDispatch()) + ); + } + + private void createPistons() { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.BOTTOM, TextureMapping.getBlockTexture(Blocks.PISTON, "_bottom")) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.PISTON, "_side")); + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.PISTON, "_top_sticky"); + ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(Blocks.PISTON, "_top"); + TextureMapping textureMapping2 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, resourceLocation); + TextureMapping textureMapping3 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, resourceLocation2); + ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.PISTON, "_base"); + this.createPistonVariant(Blocks.PISTON, resourceLocation3, textureMapping3); + this.createPistonVariant(Blocks.STICKY_PISTON, resourceLocation3, textureMapping2); + ResourceLocation resourceLocation4 = ModelTemplates.CUBE_BOTTOM_TOP + .createWithSuffix(Blocks.PISTON, "_inventory", textureMapping.copyAndUpdate(TextureSlot.TOP, resourceLocation2), this.modelOutput); + ResourceLocation resourceLocation5 = ModelTemplates.CUBE_BOTTOM_TOP + .createWithSuffix(Blocks.STICKY_PISTON, "_inventory", textureMapping.copyAndUpdate(TextureSlot.TOP, resourceLocation), this.modelOutput); + this.registerSimpleItemModel(Blocks.PISTON, resourceLocation4); + this.registerSimpleItemModel(Blocks.STICKY_PISTON, resourceLocation5); + } + + private void createPistonVariant(Block pistonBlock, ResourceLocation baseModelLocation, TextureMapping topTextureMapping) { + ResourceLocation resourceLocation = ModelTemplates.PISTON.create(pistonBlock, topTextureMapping, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(pistonBlock) + .with(createBooleanModelDispatch(BlockStateProperties.EXTENDED, baseModelLocation, resourceLocation)) + .with(createFacingDispatch()) + ); + } + + private void createPistonHeads() { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.UNSTICKY, TextureMapping.getBlockTexture(Blocks.PISTON, "_top")) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.PISTON, "_side")); + TextureMapping textureMapping2 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, TextureMapping.getBlockTexture(Blocks.PISTON, "_top_sticky")); + TextureMapping textureMapping3 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, TextureMapping.getBlockTexture(Blocks.PISTON, "_top")); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.PISTON_HEAD) + .with( + PropertyDispatch.properties(BlockStateProperties.SHORT, BlockStateProperties.PISTON_TYPE) + .select( + false, + PistonType.DEFAULT, + Variant.variant().with(VariantProperties.MODEL, ModelTemplates.PISTON_HEAD.createWithSuffix(Blocks.PISTON, "_head", textureMapping3, this.modelOutput)) + ) + .select( + false, + PistonType.STICKY, + Variant.variant() + .with(VariantProperties.MODEL, ModelTemplates.PISTON_HEAD.createWithSuffix(Blocks.PISTON, "_head_sticky", textureMapping2, this.modelOutput)) + ) + .select( + true, + PistonType.DEFAULT, + Variant.variant() + .with(VariantProperties.MODEL, ModelTemplates.PISTON_HEAD_SHORT.createWithSuffix(Blocks.PISTON, "_head_short", textureMapping3, this.modelOutput)) + ) + .select( + true, + PistonType.STICKY, + Variant.variant() + .with( + VariantProperties.MODEL, ModelTemplates.PISTON_HEAD_SHORT.createWithSuffix(Blocks.PISTON, "_head_short_sticky", textureMapping2, this.modelOutput) + ) + ) + ) + .with(createFacingDispatch()) + ); + } + + private void createTrialSpawner() { + Block block = Blocks.TRIAL_SPAWNER; + TextureMapping textureMapping = TextureMapping.trialSpawner(block, "_side_inactive", "_top_inactive"); + TextureMapping textureMapping2 = TextureMapping.trialSpawner(block, "_side_active", "_top_active"); + TextureMapping textureMapping3 = TextureMapping.trialSpawner(block, "_side_active", "_top_ejecting_reward"); + TextureMapping textureMapping4 = TextureMapping.trialSpawner(block, "_side_inactive_ominous", "_top_inactive_ominous"); + TextureMapping textureMapping5 = TextureMapping.trialSpawner(block, "_side_active_ominous", "_top_active_ominous"); + TextureMapping textureMapping6 = TextureMapping.trialSpawner(block, "_side_active_ominous", "_top_ejecting_reward_ominous"); + ResourceLocation resourceLocation = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES.create(block, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES.createWithSuffix(block, "_active", textureMapping2, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES + .createWithSuffix(block, "_ejecting_reward", textureMapping3, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES + .createWithSuffix(block, "_inactive_ominous", textureMapping4, this.modelOutput); + ResourceLocation resourceLocation5 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES.createWithSuffix(block, "_active_ominous", textureMapping5, this.modelOutput); + ResourceLocation resourceLocation6 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES + .createWithSuffix(block, "_ejecting_reward_ominous", textureMapping6, this.modelOutput); + this.registerSimpleItemModel(block, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block) + .with( + PropertyDispatch.properties(BlockStateProperties.TRIAL_SPAWNER_STATE, BlockStateProperties.OMINOUS) + .generate( + (trialSpawnerState, boolean_) -> { + return switch (trialSpawnerState) { + case INACTIVE, COOLDOWN -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation4 : resourceLocation); + case WAITING_FOR_PLAYERS, ACTIVE, WAITING_FOR_REWARD_EJECTION -> Variant.variant() + .with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation2); + case EJECTING_REWARD -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation3); + }; + } + ) + ) + ); + } + + private void createVault() { + Block block = Blocks.VAULT; + TextureMapping textureMapping = TextureMapping.vault(block, "_front_off", "_side_off", "_top", "_bottom"); + TextureMapping textureMapping2 = TextureMapping.vault(block, "_front_on", "_side_on", "_top", "_bottom"); + TextureMapping textureMapping3 = TextureMapping.vault(block, "_front_ejecting", "_side_on", "_top", "_bottom"); + TextureMapping textureMapping4 = TextureMapping.vault(block, "_front_ejecting", "_side_on", "_top_ejecting", "_bottom"); + ResourceLocation resourceLocation = ModelTemplates.VAULT.create(block, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.VAULT.createWithSuffix(block, "_active", textureMapping2, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.VAULT.createWithSuffix(block, "_unlocking", textureMapping3, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.VAULT.createWithSuffix(block, "_ejecting_reward", textureMapping4, this.modelOutput); + TextureMapping textureMapping5 = TextureMapping.vault(block, "_front_off_ominous", "_side_off_ominous", "_top_ominous", "_bottom_ominous"); + TextureMapping textureMapping6 = TextureMapping.vault(block, "_front_on_ominous", "_side_on_ominous", "_top_ominous", "_bottom_ominous"); + TextureMapping textureMapping7 = TextureMapping.vault(block, "_front_ejecting_ominous", "_side_on_ominous", "_top_ominous", "_bottom_ominous"); + TextureMapping textureMapping8 = TextureMapping.vault(block, "_front_ejecting_ominous", "_side_on_ominous", "_top_ejecting_ominous", "_bottom_ominous"); + ResourceLocation resourceLocation5 = ModelTemplates.VAULT.createWithSuffix(block, "_ominous", textureMapping5, this.modelOutput); + ResourceLocation resourceLocation6 = ModelTemplates.VAULT.createWithSuffix(block, "_active_ominous", textureMapping6, this.modelOutput); + ResourceLocation resourceLocation7 = ModelTemplates.VAULT.createWithSuffix(block, "_unlocking_ominous", textureMapping7, this.modelOutput); + ResourceLocation resourceLocation8 = ModelTemplates.VAULT.createWithSuffix(block, "_ejecting_reward_ominous", textureMapping8, this.modelOutput); + this.registerSimpleItemModel(block, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(block) + .with(createHorizontalFacingDispatch()) + .with(PropertyDispatch.properties(VaultBlock.STATE, VaultBlock.OMINOUS).generate((vaultState, boolean_) -> { + return switch (vaultState) { + case INACTIVE -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation); + case ACTIVE -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation2); + case UNLOCKING -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation7 : resourceLocation3); + case EJECTING -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation8 : resourceLocation4); + }; + })) + ); + } + + private void createSculkSensor() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SCULK_SENSOR, "_inactive"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.SCULK_SENSOR, "_active"); + this.registerSimpleItemModel(Blocks.SCULK_SENSOR, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SCULK_SENSOR) + .with( + PropertyDispatch.property(BlockStateProperties.SCULK_SENSOR_PHASE) + .generate( + sculkSensorPhase -> Variant.variant() + .with( + VariantProperties.MODEL, + sculkSensorPhase != SculkSensorPhase.ACTIVE && sculkSensorPhase != SculkSensorPhase.COOLDOWN ? resourceLocation : resourceLocation2 + ) + ) + ) + ); + } + + private void createCalibratedSculkSensor() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.CALIBRATED_SCULK_SENSOR, "_inactive"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.CALIBRATED_SCULK_SENSOR, "_active"); + this.registerSimpleItemModel(Blocks.CALIBRATED_SCULK_SENSOR, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.CALIBRATED_SCULK_SENSOR) + .with( + PropertyDispatch.property(BlockStateProperties.SCULK_SENSOR_PHASE) + .generate( + sculkSensorPhase -> Variant.variant() + .with( + VariantProperties.MODEL, + sculkSensorPhase != SculkSensorPhase.ACTIVE && sculkSensorPhase != SculkSensorPhase.COOLDOWN ? resourceLocation : resourceLocation2 + ) + ) + ) + .with(createHorizontalFacingDispatch()) + ); + } + + private void createSculkShrieker() { + ResourceLocation resourceLocation = ModelTemplates.SCULK_SHRIEKER.create(Blocks.SCULK_SHRIEKER, TextureMapping.sculkShrieker(false), this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.SCULK_SHRIEKER + .createWithSuffix(Blocks.SCULK_SHRIEKER, "_can_summon", TextureMapping.sculkShrieker(true), this.modelOutput); + this.registerSimpleItemModel(Blocks.SCULK_SHRIEKER, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SCULK_SHRIEKER) + .with(createBooleanModelDispatch(BlockStateProperties.CAN_SUMMON, resourceLocation2, resourceLocation)) + ); + } + + private void createScaffolding() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SCAFFOLDING, "_stable"); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.SCAFFOLDING, "_unstable"); + this.registerSimpleItemModel(Blocks.SCAFFOLDING, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SCAFFOLDING).with(createBooleanModelDispatch(BlockStateProperties.BOTTOM, resourceLocation2, resourceLocation)) + ); + } + + private void createCaveVines() { + ResourceLocation resourceLocation = this.createSuffixedVariant(Blocks.CAVE_VINES, "", ModelTemplates.CROSS, TextureMapping::cross); + ResourceLocation resourceLocation2 = this.createSuffixedVariant(Blocks.CAVE_VINES, "_lit", ModelTemplates.CROSS, TextureMapping::cross); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.CAVE_VINES).with(createBooleanModelDispatch(BlockStateProperties.BERRIES, resourceLocation2, resourceLocation)) + ); + ResourceLocation resourceLocation3 = this.createSuffixedVariant(Blocks.CAVE_VINES_PLANT, "", ModelTemplates.CROSS, TextureMapping::cross); + ResourceLocation resourceLocation4 = this.createSuffixedVariant(Blocks.CAVE_VINES_PLANT, "_lit", ModelTemplates.CROSS, TextureMapping::cross); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.CAVE_VINES_PLANT) + .with(createBooleanModelDispatch(BlockStateProperties.BERRIES, resourceLocation4, resourceLocation3)) + ); + } + + private void createRedstoneLamp() { + ResourceLocation resourceLocation = TexturedModel.CUBE.create(Blocks.REDSTONE_LAMP, this.modelOutput); + ResourceLocation resourceLocation2 = this.createSuffixedVariant(Blocks.REDSTONE_LAMP, "_on", ModelTemplates.CUBE_ALL, TextureMapping::cube); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.REDSTONE_LAMP).with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation2, resourceLocation)) + ); + } + + private void createNormalTorch(Block torchBlock, Block wallTorchBlock) { + TextureMapping textureMapping = TextureMapping.torch(torchBlock); + this.blockStateOutput.accept(createSimpleBlock(torchBlock, ModelTemplates.TORCH.create(torchBlock, textureMapping, this.modelOutput))); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant( + wallTorchBlock, Variant.variant().with(VariantProperties.MODEL, ModelTemplates.WALL_TORCH.create(wallTorchBlock, textureMapping, this.modelOutput)) + ) + .with(createTorchHorizontalDispatch()) + ); + this.registerSimpleFlatItemModel(torchBlock); + } + + private void createRedstoneTorch() { + TextureMapping textureMapping = TextureMapping.torch(Blocks.REDSTONE_TORCH); + TextureMapping textureMapping2 = TextureMapping.torch(TextureMapping.getBlockTexture(Blocks.REDSTONE_TORCH, "_off")); + ResourceLocation resourceLocation = ModelTemplates.REDSTONE_TORCH.create(Blocks.REDSTONE_TORCH, textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.TORCH_UNLIT.createWithSuffix(Blocks.REDSTONE_TORCH, "_off", textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.REDSTONE_TORCH).with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation, resourceLocation2)) + ); + ResourceLocation resourceLocation3 = ModelTemplates.REDSTONE_WALL_TORCH.create(Blocks.REDSTONE_WALL_TORCH, textureMapping, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.WALL_TORCH_UNLIT.createWithSuffix(Blocks.REDSTONE_WALL_TORCH, "_off", textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.REDSTONE_WALL_TORCH) + .with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation3, resourceLocation4)) + .with(createTorchHorizontalDispatch()) + ); + this.registerSimpleFlatItemModel(Blocks.REDSTONE_TORCH); + } + + private void createRepeater() { + this.registerSimpleFlatItemModel(Items.REPEATER); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.REPEATER) + .with( + PropertyDispatch.properties(BlockStateProperties.DELAY, BlockStateProperties.LOCKED, BlockStateProperties.POWERED) + .generate((integer, boolean_, boolean2) -> { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append('_').append(integer).append("tick"); + if (boolean2) { + stringBuilder.append("_on"); + } + + if (boolean_) { + stringBuilder.append("_locked"); + } + + return Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.REPEATER, stringBuilder.toString())); + }) + ) + .with(createHorizontalFacingDispatchAlt()) + ); + } + + private void createSeaPickle() { + this.registerSimpleFlatItemModel(Items.SEA_PICKLE); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SEA_PICKLE) + .with( + PropertyDispatch.properties(BlockStateProperties.PICKLES, BlockStateProperties.WATERLOGGED) + .select(1, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("dead_sea_pickle")))) + .select(2, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("two_dead_sea_pickles")))) + .select(3, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("three_dead_sea_pickles")))) + .select(4, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("four_dead_sea_pickles")))) + .select(1, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("sea_pickle")))) + .select(2, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("two_sea_pickles")))) + .select(3, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("three_sea_pickles")))) + .select(4, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("four_sea_pickles")))) + ) + ); + } + + private void createSnowBlocks() { + TextureMapping textureMapping = TextureMapping.cube(Blocks.SNOW); + ResourceLocation resourceLocation = ModelTemplates.CUBE_ALL.create(Blocks.SNOW_BLOCK, textureMapping, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SNOW) + .with( + PropertyDispatch.property(BlockStateProperties.LAYERS) + .generate( + integer -> Variant.variant() + .with(VariantProperties.MODEL, integer < 8 ? ModelLocationUtils.getModelLocation(Blocks.SNOW, "_height" + integer * 2) : resourceLocation) + ) + ) + ); + this.registerSimpleItemModel(Blocks.SNOW, ModelLocationUtils.getModelLocation(Blocks.SNOW, "_height2")); + this.blockStateOutput.accept(createSimpleBlock(Blocks.SNOW_BLOCK, resourceLocation)); + } + + private void createStonecutter() { + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant( + Blocks.STONECUTTER, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.STONECUTTER)) + ) + .with(createHorizontalFacingDispatch()) + ); + } + + private void createStructureBlock() { + ResourceLocation resourceLocation = TexturedModel.CUBE.create(Blocks.STRUCTURE_BLOCK, this.modelOutput); + this.registerSimpleItemModel(Blocks.STRUCTURE_BLOCK, resourceLocation); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.STRUCTURE_BLOCK) + .with( + PropertyDispatch.property(BlockStateProperties.STRUCTUREBLOCK_MODE) + .generate( + structureMode -> Variant.variant() + .with( + VariantProperties.MODEL, + this.createSuffixedVariant(Blocks.STRUCTURE_BLOCK, "_" + structureMode.getSerializedName(), ModelTemplates.CUBE_ALL, TextureMapping::cube) + ) + ) + ) + ); + } + + private void createSweetBerryBush() { + this.registerSimpleFlatItemModel(Items.SWEET_BERRIES); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SWEET_BERRY_BUSH) + .with( + PropertyDispatch.property(BlockStateProperties.AGE_3) + .generate( + integer -> Variant.variant() + .with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.SWEET_BERRY_BUSH, "_stage" + integer, ModelTemplates.CROSS, TextureMapping::cross)) + ) + ) + ); + } + + private void createTripwire() { + this.registerSimpleFlatItemModel(Items.STRING); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.TRIPWIRE) + .with( + PropertyDispatch.properties( + BlockStateProperties.ATTACHED, BlockStateProperties.EAST, BlockStateProperties.NORTH, BlockStateProperties.SOUTH, BlockStateProperties.WEST + ) + .select(false, false, false, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ns"))) + .select( + false, + true, + false, + false, + false, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select(false, false, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n"))) + .select( + false, + false, + false, + true, + false, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + false, + false, + false, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(false, true, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne"))) + .select( + false, + true, + false, + true, + false, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + false, + false, + false, + true, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + false, + false, + true, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(false, false, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ns"))) + .select( + false, + true, + false, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ns")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select(false, true, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse"))) + .select( + false, + true, + false, + true, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + false, + false, + true, + true, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + false, + true, + true, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select(false, true, true, true, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nsew"))) + .select( + true, false, false, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ns")) + ) + .select( + true, false, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) + ) + .select( + true, + false, + false, + true, + false, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + true, + true, + false, + false, + false, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + true, + false, + false, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + true, true, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) + ) + .select( + true, + true, + false, + true, + false, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + true, + false, + false, + true, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + true, + false, + true, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + true, false, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ns")) + ) + .select( + true, + true, + false, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ns")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + true, true, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) + ) + .select( + true, + true, + false, + true, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) + ) + .select( + true, + false, + true, + true, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180) + ) + .select( + true, + true, + true, + false, + true, + Variant.variant() + .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) + .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270) + ) + .select( + true, true, true, true, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nsew")) + ) + ) + ); + } + + private void createTripwireHook() { + this.registerSimpleFlatItemModel(Blocks.TRIPWIRE_HOOK); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.TRIPWIRE_HOOK) + .with( + PropertyDispatch.properties(BlockStateProperties.ATTACHED, BlockStateProperties.POWERED) + .generate( + (boolean_, boolean2) -> Variant.variant() + .with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.TRIPWIRE_HOOK, (boolean_ ? "_attached" : "") + (boolean2 ? "_on" : ""))) + ) + ) + .with(createHorizontalFacingDispatch()) + ); + } + + private ResourceLocation createTurtleEggModel(int hatchAmount, String variantName, TextureMapping textureMapping) { + switch (hatchAmount) { + case 1: + return ModelTemplates.TURTLE_EGG.create(ModelLocationUtils.decorateBlockModelLocation(variantName + "turtle_egg"), textureMapping, this.modelOutput); + case 2: + return ModelTemplates.TWO_TURTLE_EGGS + .create(ModelLocationUtils.decorateBlockModelLocation("two_" + variantName + "turtle_eggs"), textureMapping, this.modelOutput); + case 3: + return ModelTemplates.THREE_TURTLE_EGGS + .create(ModelLocationUtils.decorateBlockModelLocation("three_" + variantName + "turtle_eggs"), textureMapping, this.modelOutput); + case 4: + return ModelTemplates.FOUR_TURTLE_EGGS + .create(ModelLocationUtils.decorateBlockModelLocation("four_" + variantName + "turtle_eggs"), textureMapping, this.modelOutput); + default: + throw new UnsupportedOperationException(); + } + } + + private ResourceLocation createTurtleEggModel(Integer eggAmount, Integer variantId) { + switch (variantId) { + case 0: + return this.createTurtleEggModel(eggAmount, "", TextureMapping.cube(TextureMapping.getBlockTexture(Blocks.TURTLE_EGG))); + case 1: + return this.createTurtleEggModel( + eggAmount, "slightly_cracked_", TextureMapping.cube(TextureMapping.getBlockTexture(Blocks.TURTLE_EGG, "_slightly_cracked")) + ); + case 2: + return this.createTurtleEggModel(eggAmount, "very_cracked_", TextureMapping.cube(TextureMapping.getBlockTexture(Blocks.TURTLE_EGG, "_very_cracked"))); + default: + throw new UnsupportedOperationException(); + } + } + + private void createTurtleEgg() { + this.registerSimpleFlatItemModel(Items.TURTLE_EGG); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.TURTLE_EGG) + .with( + PropertyDispatch.properties(BlockStateProperties.EGGS, BlockStateProperties.HATCH) + .generateList((integer, integer2) -> Arrays.asList(createRotatedVariants(this.createTurtleEggModel(integer, integer2)))) + ) + ); + } + + private void createSnifferEgg() { + this.registerSimpleFlatItemModel(Items.SNIFFER_EGG); + Function function = integer -> { + String string = switch (integer) { + case 1 -> "_slightly_cracked"; + case 2 -> "_very_cracked"; + default -> "_not_cracked"; + }; + TextureMapping textureMapping = TextureMapping.snifferEgg(string); + return ModelTemplates.SNIFFER_EGG.createWithSuffix(Blocks.SNIFFER_EGG, string, textureMapping, this.modelOutput); + }; + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SNIFFER_EGG) + .with( + PropertyDispatch.property(SnifferEggBlock.HATCH) + .generate(integer -> Variant.variant().with(VariantProperties.MODEL, (ResourceLocation)function.apply(integer))) + ) + ); + } + + private void createMultiface(Block multifaceBlock) { + this.registerSimpleFlatItemModel(multifaceBlock); + this.createMultifaceBlockStates(multifaceBlock); + } + + private void createMultiface(Block block, Item item) { + this.registerSimpleFlatItemModel(item); + this.createMultifaceBlockStates(block); + } + + private void createMultifaceBlockStates(Block block) { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); + MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(block); + Condition.TerminalCondition terminalCondition = Util.make( + Condition.condition(), + terminalConditionx -> MULTIFACE_GENERATOR.stream().map(Pair::getFirst).map(MultifaceBlock::getFaceProperty).forEach(booleanPropertyx -> { + if (block.defaultBlockState().hasProperty(booleanPropertyx)) { + terminalConditionx.term(booleanPropertyx, false); + } + }) + ); + + for (Pair> pair : MULTIFACE_GENERATOR) { + BooleanProperty booleanProperty = MultifaceBlock.getFaceProperty(pair.getFirst()); + Function function = pair.getSecond(); + if (block.defaultBlockState().hasProperty(booleanProperty)) { + multiPartGenerator.with(Condition.condition().term(booleanProperty, true), (Variant)function.apply(resourceLocation)); + multiPartGenerator.with(terminalCondition, (Variant)function.apply(resourceLocation)); + } + } + + this.blockStateOutput.accept(multiPartGenerator); + } + + private void createMossyCarpet(Block block) { + ResourceLocation resourceLocation = TexturedModel.CARPET.create(block, this.modelOutput); + ResourceLocation resourceLocation2 = TexturedModel.MOSSY_CARPET_SIDE + .get(block) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(block, "_side_tall"))) + .createWithSuffix(block, "_side_tall", this.modelOutput); + ResourceLocation resourceLocation3 = TexturedModel.MOSSY_CARPET_SIDE + .get(block) + .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(block, "_side_small"))) + .createWithSuffix(block, "_side_small", this.modelOutput); + MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(block); + Condition.TerminalCondition terminalCondition = Condition.condition().term(MossyCarpetBlock.BASE, false); + multiPartGenerator.with(Condition.condition().term(MossyCarpetBlock.BASE, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation)); + multiPartGenerator.with(terminalCondition, Variant.variant().with(VariantProperties.MODEL, resourceLocation)); + MULTIFACE_GENERATOR.stream().map(Pair::getFirst).forEach(directionx -> { + EnumProperty enumPropertyx = MossyCarpetBlock.getPropertyForFace(directionx); + if (enumPropertyx != null && block.defaultBlockState().hasProperty(enumPropertyx)) { + terminalCondition.term(enumPropertyx, WallSide.NONE); + } + }); + + for (Pair> pair : MULTIFACE_GENERATOR) { + Direction direction = pair.getFirst(); + EnumProperty enumProperty = MossyCarpetBlock.getPropertyForFace(direction); + if (enumProperty != null) { + Function function = pair.getSecond(); + multiPartGenerator.with(Condition.condition().term(enumProperty, WallSide.TALL), (Variant)function.apply(resourceLocation2)); + multiPartGenerator.with(Condition.condition().term(enumProperty, WallSide.LOW), (Variant)function.apply(resourceLocation3)); + multiPartGenerator.with(terminalCondition, (Variant)function.apply(resourceLocation2)); + } + } + + this.blockStateOutput.accept(multiPartGenerator); + } + + private void createHangingMoss(Block block) { + PropertyDispatch propertyDispatch = PropertyDispatch.property(HangingMossBlock.TIP).generate(boolean_ -> { + String string = boolean_ ? "_tip" : ""; + TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(block, string)); + ResourceLocation resourceLocation = BlockModelGenerators.PlantType.NOT_TINTED.getCross().createWithSuffix(block, string, textureMapping, this.modelOutput); + return Variant.variant().with(VariantProperties.MODEL, resourceLocation); + }); + this.registerSimpleFlatItemModel(block); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block).with(propertyDispatch)); + } + + private void createSculkCatalyst() { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_bottom"); + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.BOTTOM, resourceLocation) + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_top")) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_side")); + TextureMapping textureMapping2 = new TextureMapping() + .put(TextureSlot.BOTTOM, resourceLocation) + .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_top_bloom")) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_side_bloom")); + ResourceLocation resourceLocation2 = ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.SCULK_CATALYST, "", textureMapping, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.SCULK_CATALYST, "_bloom", textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.SCULK_CATALYST) + .with( + PropertyDispatch.property(BlockStateProperties.BLOOM) + .generate(boolean_ -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation3 : resourceLocation2)) + ) + ); + this.registerSimpleItemModel(Blocks.SCULK_CATALYST, resourceLocation2); + } + + private void createChiseledBookshelf() { + Block block = Blocks.CHISELED_BOOKSHELF; + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); + MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(block); + List.of( + Pair.of(Direction.NORTH, VariantProperties.Rotation.R0), + Pair.of(Direction.EAST, VariantProperties.Rotation.R90), + Pair.of(Direction.SOUTH, VariantProperties.Rotation.R180), + Pair.of(Direction.WEST, VariantProperties.Rotation.R270) + ) + .forEach( + pair -> { + Direction direction = (Direction)pair.getFirst(); + VariantProperties.Rotation rotation = (VariantProperties.Rotation)pair.getSecond(); + Condition.TerminalCondition terminalCondition = Condition.condition().term(BlockStateProperties.HORIZONTAL_FACING, direction); + multiPartGenerator.with( + terminalCondition, + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, rotation).with(VariantProperties.UV_LOCK, true) + ); + this.addSlotStateAndRotationVariants(multiPartGenerator, terminalCondition, rotation); + } + ); + this.blockStateOutput.accept(multiPartGenerator); + this.registerSimpleItemModel(block, ModelLocationUtils.getModelLocation(block, "_inventory")); + CHISELED_BOOKSHELF_SLOT_MODEL_CACHE.clear(); + } + + private void addSlotStateAndRotationVariants(MultiPartGenerator generator, Condition.TerminalCondition condition, VariantProperties.Rotation rotation) { + List.of( + Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_0_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_TOP_LEFT), + Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_1_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_TOP_MID), + Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_2_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_TOP_RIGHT), + Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_3_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_BOTTOM_LEFT), + Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_4_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_BOTTOM_MID), + Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_5_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_BOTTOM_RIGHT) + ) + .forEach(pair -> { + BooleanProperty booleanProperty = (BooleanProperty)pair.getFirst(); + ModelTemplate modelTemplate = (ModelTemplate)pair.getSecond(); + this.addBookSlotModel(generator, condition, rotation, booleanProperty, modelTemplate, true); + this.addBookSlotModel(generator, condition, rotation, booleanProperty, modelTemplate, false); + }); + } + + private void addBookSlotModel( + MultiPartGenerator generator, + Condition.TerminalCondition condition, + VariantProperties.Rotation rotation, + BooleanProperty property, + ModelTemplate template, + boolean occupied + ) { + String string = occupied ? "_occupied" : "_empty"; + TextureMapping textureMapping = new TextureMapping().put(TextureSlot.TEXTURE, TextureMapping.getBlockTexture(Blocks.CHISELED_BOOKSHELF, string)); + BlockModelGenerators.BookSlotModelCacheKey bookSlotModelCacheKey = new BlockModelGenerators.BookSlotModelCacheKey(template, string); + ResourceLocation resourceLocation = (ResourceLocation)CHISELED_BOOKSHELF_SLOT_MODEL_CACHE.computeIfAbsent( + bookSlotModelCacheKey, bookSlotModelCacheKeyx -> template.createWithSuffix(Blocks.CHISELED_BOOKSHELF, string, textureMapping, this.modelOutput) + ); + generator.with( + Condition.and(condition, Condition.condition().term(property, occupied)), + Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, rotation) + ); + } + + private void createMagmaBlock() { + this.blockStateOutput + .accept( + createSimpleBlock( + Blocks.MAGMA_BLOCK, + ModelTemplates.CUBE_ALL.create(Blocks.MAGMA_BLOCK, TextureMapping.cube(ModelLocationUtils.decorateBlockModelLocation("magma")), this.modelOutput) + ) + ); + } + + private void createShulkerBox(Block block, @Nullable DyeColor color) { + this.createParticleOnlyBlock(block); + Item item = block.asItem(); + ResourceLocation resourceLocation = ModelTemplates.SHULKER_BOX_INVENTORY.create(item, TextureMapping.particle(block), this.modelOutput); + ItemModel.Unbaked unbaked = color != null + ? ItemModelUtils.specialModel(resourceLocation, new ShulkerBoxSpecialRenderer.Unbaked(color)) + : ItemModelUtils.specialModel(resourceLocation, new ShulkerBoxSpecialRenderer.Unbaked()); + this.itemModelOutput.accept(item, unbaked); + } + + private void createGrowingPlant(Block plantBlock, Block tipBlock, BlockModelGenerators.PlantType plantType) { + this.createCrossBlock(plantBlock, plantType); + this.createCrossBlock(tipBlock, plantType); + } + + private void createInfestedStone() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.STONE); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.STONE, "_mirrored"); + this.blockStateOutput.accept(createRotatedVariant(Blocks.INFESTED_STONE, resourceLocation, resourceLocation2)); + this.registerSimpleItemModel(Blocks.INFESTED_STONE, resourceLocation); + } + + private void createInfestedDeepslate() { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.DEEPSLATE); + ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.DEEPSLATE, "_mirrored"); + this.blockStateOutput.accept(createRotatedVariant(Blocks.INFESTED_DEEPSLATE, resourceLocation, resourceLocation2).with(createRotatedPillar())); + this.registerSimpleItemModel(Blocks.INFESTED_DEEPSLATE, resourceLocation); + } + + private void createNetherRoots(Block plantBlock, Block pottedPlantBlock) { + this.createCrossBlockWithDefaultItem(plantBlock, BlockModelGenerators.PlantType.NOT_TINTED); + TextureMapping textureMapping = TextureMapping.plant(TextureMapping.getBlockTexture(plantBlock, "_pot")); + ResourceLocation resourceLocation = BlockModelGenerators.PlantType.NOT_TINTED.getCrossPot().create(pottedPlantBlock, textureMapping, this.modelOutput); + this.blockStateOutput.accept(createSimpleBlock(pottedPlantBlock, resourceLocation)); + } + + private void createRespawnAnchor() { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_bottom"); + ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_top_off"); + ResourceLocation resourceLocation3 = TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_top"); + ResourceLocation[] resourceLocations = new ResourceLocation[5]; + + for (int i = 0; i < 5; i++) { + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.BOTTOM, resourceLocation) + .put(TextureSlot.TOP, i == 0 ? resourceLocation2 : resourceLocation3) + .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_side" + i)); + resourceLocations[i] = ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.RESPAWN_ANCHOR, "_" + i, textureMapping, this.modelOutput); + } + + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.RESPAWN_ANCHOR) + .with( + PropertyDispatch.property(BlockStateProperties.RESPAWN_ANCHOR_CHARGES) + .generate(integer -> Variant.variant().with(VariantProperties.MODEL, resourceLocations[integer])) + ) + ); + this.registerSimpleItemModel(Blocks.RESPAWN_ANCHOR, resourceLocations[0]); + } + + private Variant applyRotation(FrontAndTop frontAndTop, Variant variant) { + switch (frontAndTop) { + case DOWN_NORTH: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R90); + case DOWN_SOUTH: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180); + case DOWN_WEST: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270); + case DOWN_EAST: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R90).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90); + case UP_NORTH: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R270).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180); + case UP_SOUTH: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R270); + case UP_WEST: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R270).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90); + case UP_EAST: + return variant.with(VariantProperties.X_ROT, VariantProperties.Rotation.R270).with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270); + case NORTH_UP: + return variant; + case SOUTH_UP: + return variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R180); + case WEST_UP: + return variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R270); + case EAST_UP: + return variant.with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90); + default: + throw new UnsupportedOperationException("Rotation " + frontAndTop + " can't be expressed with existing x and y values"); + } + } + + private void createJigsaw() { + ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_top"); + ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_bottom"); + ResourceLocation resourceLocation3 = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_side"); + ResourceLocation resourceLocation4 = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_lock"); + TextureMapping textureMapping = new TextureMapping() + .put(TextureSlot.DOWN, resourceLocation3) + .put(TextureSlot.WEST, resourceLocation3) + .put(TextureSlot.EAST, resourceLocation3) + .put(TextureSlot.PARTICLE, resourceLocation) + .put(TextureSlot.NORTH, resourceLocation) + .put(TextureSlot.SOUTH, resourceLocation2) + .put(TextureSlot.UP, resourceLocation4); + ResourceLocation resourceLocation5 = ModelTemplates.CUBE_DIRECTIONAL.create(Blocks.JIGSAW, textureMapping, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(Blocks.JIGSAW, Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) + .with(PropertyDispatch.property(BlockStateProperties.ORIENTATION).generate(frontAndTop -> this.applyRotation(frontAndTop, Variant.variant()))) + ); + } + + private void createPetrifiedOakSlab() { + Block block = Blocks.OAK_PLANKS; + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); + TexturedModel texturedModel = TexturedModel.CUBE.get(block); + Block block2 = Blocks.PETRIFIED_OAK_SLAB; + ResourceLocation resourceLocation2 = ModelTemplates.SLAB_BOTTOM.create(block2, texturedModel.getMapping(), this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.SLAB_TOP.create(block2, texturedModel.getMapping(), this.modelOutput); + this.blockStateOutput.accept(createSlab(block2, resourceLocation2, resourceLocation3, resourceLocation)); + } + + private void createHead(Block headBlock, Block wallHeadBlock, Type type, ResourceLocation modelLocation) { + ResourceLocation resourceLocation = ModelLocationUtils.decorateBlockModelLocation("skull"); + this.blockStateOutput.accept(createSimpleBlock(headBlock, resourceLocation)); + this.blockStateOutput.accept(createSimpleBlock(wallHeadBlock, resourceLocation)); + this.itemModelOutput.accept(headBlock.asItem(), ItemModelUtils.specialModel(modelLocation, new SkullSpecialRenderer.Unbaked(type))); + } + + private void createHeads() { + ResourceLocation resourceLocation = ModelLocationUtils.decorateItemModelLocation("template_skull"); + this.createHead(Blocks.CREEPER_HEAD, Blocks.CREEPER_WALL_HEAD, Types.CREEPER, resourceLocation); + this.createHead(Blocks.PLAYER_HEAD, Blocks.PLAYER_WALL_HEAD, Types.PLAYER, resourceLocation); + this.createHead(Blocks.ZOMBIE_HEAD, Blocks.ZOMBIE_WALL_HEAD, Types.ZOMBIE, resourceLocation); + this.createHead(Blocks.SKELETON_SKULL, Blocks.SKELETON_WALL_SKULL, Types.SKELETON, resourceLocation); + this.createHead(Blocks.WITHER_SKELETON_SKULL, Blocks.WITHER_SKELETON_WALL_SKULL, Types.WITHER_SKELETON, resourceLocation); + this.createHead(Blocks.PIGLIN_HEAD, Blocks.PIGLIN_WALL_HEAD, Types.PIGLIN, resourceLocation); + this.createHead(Blocks.DRAGON_HEAD, Blocks.DRAGON_WALL_HEAD, Types.DRAGON, ModelLocationUtils.getModelLocation(Items.DRAGON_HEAD)); + } + + private void createBanner(Block block, Block wallBlock, DyeColor color) { + ResourceLocation resourceLocation = ModelLocationUtils.decorateBlockModelLocation("banner"); + ResourceLocation resourceLocation2 = ModelLocationUtils.decorateItemModelLocation("template_banner"); + this.blockStateOutput.accept(createSimpleBlock(block, resourceLocation)); + this.blockStateOutput.accept(createSimpleBlock(wallBlock, resourceLocation)); + Item item = block.asItem(); + this.itemModelOutput.accept(item, ItemModelUtils.specialModel(resourceLocation2, new BannerSpecialRenderer.Unbaked(color))); + } + + private void createBanners() { + this.createBanner(Blocks.WHITE_BANNER, Blocks.WHITE_WALL_BANNER, DyeColor.WHITE); + this.createBanner(Blocks.ORANGE_BANNER, Blocks.ORANGE_WALL_BANNER, DyeColor.ORANGE); + this.createBanner(Blocks.MAGENTA_BANNER, Blocks.MAGENTA_WALL_BANNER, DyeColor.MAGENTA); + this.createBanner(Blocks.LIGHT_BLUE_BANNER, Blocks.LIGHT_BLUE_WALL_BANNER, DyeColor.LIGHT_BLUE); + this.createBanner(Blocks.YELLOW_BANNER, Blocks.YELLOW_WALL_BANNER, DyeColor.YELLOW); + this.createBanner(Blocks.LIME_BANNER, Blocks.LIME_WALL_BANNER, DyeColor.LIME); + this.createBanner(Blocks.PINK_BANNER, Blocks.PINK_WALL_BANNER, DyeColor.PINK); + this.createBanner(Blocks.GRAY_BANNER, Blocks.GRAY_WALL_BANNER, DyeColor.GRAY); + this.createBanner(Blocks.LIGHT_GRAY_BANNER, Blocks.LIGHT_GRAY_WALL_BANNER, DyeColor.LIGHT_GRAY); + this.createBanner(Blocks.CYAN_BANNER, Blocks.CYAN_WALL_BANNER, DyeColor.CYAN); + this.createBanner(Blocks.PURPLE_BANNER, Blocks.PURPLE_WALL_BANNER, DyeColor.PURPLE); + this.createBanner(Blocks.BLUE_BANNER, Blocks.BLUE_WALL_BANNER, DyeColor.BLUE); + this.createBanner(Blocks.BROWN_BANNER, Blocks.BROWN_WALL_BANNER, DyeColor.BROWN); + this.createBanner(Blocks.GREEN_BANNER, Blocks.GREEN_WALL_BANNER, DyeColor.GREEN); + this.createBanner(Blocks.RED_BANNER, Blocks.RED_WALL_BANNER, DyeColor.RED); + this.createBanner(Blocks.BLACK_BANNER, Blocks.BLACK_WALL_BANNER, DyeColor.BLACK); + } + + private void createChest(Block chestBlock, Block particleBlock, ResourceLocation texture, boolean useGiftTexture) { + this.createParticleOnlyBlock(chestBlock, particleBlock); + Item item = chestBlock.asItem(); + ResourceLocation resourceLocation = ModelTemplates.CHEST_INVENTORY.create(item, TextureMapping.particle(particleBlock), this.modelOutput); + ItemModel.Unbaked unbaked = ItemModelUtils.specialModel(resourceLocation, new ChestSpecialRenderer.Unbaked(texture)); + if (useGiftTexture) { + ItemModel.Unbaked unbaked2 = ItemModelUtils.specialModel(resourceLocation, new ChestSpecialRenderer.Unbaked(ChestSpecialRenderer.GIFT_CHEST_TEXTURE)); + this.itemModelOutput.accept(item, ItemModelUtils.isXmas(unbaked2, unbaked)); + } else { + this.itemModelOutput.accept(item, unbaked); + } + } + + private void createChests() { + this.createChest(Blocks.CHEST, Blocks.OAK_PLANKS, ChestSpecialRenderer.NORMAL_CHEST_TEXTURE, true); + this.createChest(Blocks.TRAPPED_CHEST, Blocks.OAK_PLANKS, ChestSpecialRenderer.TRAPPED_CHEST_TEXTURE, true); + this.createChest(Blocks.ENDER_CHEST, Blocks.OBSIDIAN, ChestSpecialRenderer.ENDER_CHEST_TEXTURE, false); + } + + private void createBed(Block block, Block particleBlock, DyeColor color) { + ResourceLocation resourceLocation = ModelLocationUtils.decorateBlockModelLocation("bed"); + this.blockStateOutput.accept(createSimpleBlock(block, resourceLocation)); + Item item = block.asItem(); + ResourceLocation resourceLocation2 = ModelTemplates.BED_INVENTORY + .create(ModelLocationUtils.getModelLocation(item), TextureMapping.particle(particleBlock), this.modelOutput); + this.itemModelOutput.accept(item, ItemModelUtils.specialModel(resourceLocation2, new BedSpecialRenderer.Unbaked(color))); + } + + private void createBeds() { + this.createBed(Blocks.WHITE_BED, Blocks.WHITE_WOOL, DyeColor.WHITE); + this.createBed(Blocks.ORANGE_BED, Blocks.ORANGE_WOOL, DyeColor.ORANGE); + this.createBed(Blocks.MAGENTA_BED, Blocks.MAGENTA_WOOL, DyeColor.MAGENTA); + this.createBed(Blocks.LIGHT_BLUE_BED, Blocks.LIGHT_BLUE_WOOL, DyeColor.LIGHT_BLUE); + this.createBed(Blocks.YELLOW_BED, Blocks.YELLOW_WOOL, DyeColor.YELLOW); + this.createBed(Blocks.LIME_BED, Blocks.LIME_WOOL, DyeColor.LIME); + this.createBed(Blocks.PINK_BED, Blocks.PINK_WOOL, DyeColor.PINK); + this.createBed(Blocks.GRAY_BED, Blocks.GRAY_WOOL, DyeColor.GRAY); + this.createBed(Blocks.LIGHT_GRAY_BED, Blocks.LIGHT_GRAY_WOOL, DyeColor.LIGHT_GRAY); + this.createBed(Blocks.CYAN_BED, Blocks.CYAN_WOOL, DyeColor.CYAN); + this.createBed(Blocks.PURPLE_BED, Blocks.PURPLE_WOOL, DyeColor.PURPLE); + this.createBed(Blocks.BLUE_BED, Blocks.BLUE_WOOL, DyeColor.BLUE); + this.createBed(Blocks.BROWN_BED, Blocks.BROWN_WOOL, DyeColor.BROWN); + this.createBed(Blocks.GREEN_BED, Blocks.GREEN_WOOL, DyeColor.GREEN); + this.createBed(Blocks.RED_BED, Blocks.RED_WOOL, DyeColor.RED); + this.createBed(Blocks.BLACK_BED, Blocks.BLACK_WOOL, DyeColor.BLACK); + } + + private void generateSimpleSpecialItemModel(Block block, SpecialModelRenderer.Unbaked specialModel) { + Item item = block.asItem(); + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(item); + this.itemModelOutput.accept(item, ItemModelUtils.specialModel(resourceLocation, specialModel)); + } + + public void run() { + BlockFamilies.getAllFamilies() + .filter(BlockFamily::shouldGenerateModel) + .forEach(blockFamily -> this.family(blockFamily.getBaseBlock()).generateFor(blockFamily)); + this.family(Blocks.CUT_COPPER) + .generateFor(BlockFamilies.CUT_COPPER) + .donateModelTo(Blocks.CUT_COPPER, Blocks.WAXED_CUT_COPPER) + .donateModelTo(Blocks.CHISELED_COPPER, Blocks.WAXED_CHISELED_COPPER) + .generateFor(BlockFamilies.WAXED_CUT_COPPER); + this.family(Blocks.EXPOSED_CUT_COPPER) + .generateFor(BlockFamilies.EXPOSED_CUT_COPPER) + .donateModelTo(Blocks.EXPOSED_CUT_COPPER, Blocks.WAXED_EXPOSED_CUT_COPPER) + .donateModelTo(Blocks.EXPOSED_CHISELED_COPPER, Blocks.WAXED_EXPOSED_CHISELED_COPPER) + .generateFor(BlockFamilies.WAXED_EXPOSED_CUT_COPPER); + this.family(Blocks.WEATHERED_CUT_COPPER) + .generateFor(BlockFamilies.WEATHERED_CUT_COPPER) + .donateModelTo(Blocks.WEATHERED_CUT_COPPER, Blocks.WAXED_WEATHERED_CUT_COPPER) + .donateModelTo(Blocks.WEATHERED_CHISELED_COPPER, Blocks.WAXED_WEATHERED_CHISELED_COPPER) + .generateFor(BlockFamilies.WAXED_WEATHERED_CUT_COPPER); + this.family(Blocks.OXIDIZED_CUT_COPPER) + .generateFor(BlockFamilies.OXIDIZED_CUT_COPPER) + .donateModelTo(Blocks.OXIDIZED_CUT_COPPER, Blocks.WAXED_OXIDIZED_CUT_COPPER) + .donateModelTo(Blocks.OXIDIZED_CHISELED_COPPER, Blocks.WAXED_OXIDIZED_CHISELED_COPPER) + .generateFor(BlockFamilies.WAXED_OXIDIZED_CUT_COPPER); + this.createCopperBulb(Blocks.COPPER_BULB); + this.createCopperBulb(Blocks.EXPOSED_COPPER_BULB); + this.createCopperBulb(Blocks.WEATHERED_COPPER_BULB); + this.createCopperBulb(Blocks.OXIDIZED_COPPER_BULB); + this.copyCopperBulbModel(Blocks.COPPER_BULB, Blocks.WAXED_COPPER_BULB); + this.copyCopperBulbModel(Blocks.EXPOSED_COPPER_BULB, Blocks.WAXED_EXPOSED_COPPER_BULB); + this.copyCopperBulbModel(Blocks.WEATHERED_COPPER_BULB, Blocks.WAXED_WEATHERED_COPPER_BULB); + this.copyCopperBulbModel(Blocks.OXIDIZED_COPPER_BULB, Blocks.WAXED_OXIDIZED_COPPER_BULB); + this.createNonTemplateModelBlock(Blocks.AIR); + this.createNonTemplateModelBlock(Blocks.CAVE_AIR, Blocks.AIR); + this.createNonTemplateModelBlock(Blocks.VOID_AIR, Blocks.AIR); + this.createNonTemplateModelBlock(Blocks.BEACON); + this.createNonTemplateModelBlock(Blocks.CACTUS); + this.createNonTemplateModelBlock(Blocks.BUBBLE_COLUMN, Blocks.WATER); + this.createNonTemplateModelBlock(Blocks.DRAGON_EGG); + this.createNonTemplateModelBlock(Blocks.DRIED_KELP_BLOCK); + this.createNonTemplateModelBlock(Blocks.ENCHANTING_TABLE); + this.createNonTemplateModelBlock(Blocks.FLOWER_POT); + this.registerSimpleFlatItemModel(Items.FLOWER_POT); + this.createNonTemplateModelBlock(Blocks.HONEY_BLOCK); + this.createNonTemplateModelBlock(Blocks.WATER); + this.createNonTemplateModelBlock(Blocks.LAVA); + this.createNonTemplateModelBlock(Blocks.SLIME_BLOCK); + this.registerSimpleFlatItemModel(Items.CHAIN); + this.createCandleAndCandleCake(Blocks.WHITE_CANDLE, Blocks.WHITE_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.ORANGE_CANDLE, Blocks.ORANGE_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.MAGENTA_CANDLE, Blocks.MAGENTA_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.LIGHT_BLUE_CANDLE, Blocks.LIGHT_BLUE_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.YELLOW_CANDLE, Blocks.YELLOW_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.LIME_CANDLE, Blocks.LIME_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.PINK_CANDLE, Blocks.PINK_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.GRAY_CANDLE, Blocks.GRAY_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.LIGHT_GRAY_CANDLE, Blocks.LIGHT_GRAY_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.CYAN_CANDLE, Blocks.CYAN_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.PURPLE_CANDLE, Blocks.PURPLE_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.BLUE_CANDLE, Blocks.BLUE_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.BROWN_CANDLE, Blocks.BROWN_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.GREEN_CANDLE, Blocks.GREEN_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.RED_CANDLE, Blocks.RED_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.BLACK_CANDLE, Blocks.BLACK_CANDLE_CAKE); + this.createCandleAndCandleCake(Blocks.CANDLE, Blocks.CANDLE_CAKE); + this.createNonTemplateModelBlock(Blocks.POTTED_BAMBOO); + this.createNonTemplateModelBlock(Blocks.POTTED_CACTUS); + this.createNonTemplateModelBlock(Blocks.POWDER_SNOW); + this.createNonTemplateModelBlock(Blocks.SPORE_BLOSSOM); + this.createAzalea(Blocks.AZALEA); + this.createAzalea(Blocks.FLOWERING_AZALEA); + this.createPottedAzalea(Blocks.POTTED_AZALEA); + this.createPottedAzalea(Blocks.POTTED_FLOWERING_AZALEA); + this.createCaveVines(); + this.createFullAndCarpetBlocks(Blocks.MOSS_BLOCK, Blocks.MOSS_CARPET); + this.createMossyCarpet(Blocks.PALE_MOSS_CARPET); + this.createHangingMoss(Blocks.PALE_HANGING_MOSS); + this.createTrivialCube(Blocks.PALE_MOSS_BLOCK); + this.createFlowerBed(Blocks.PINK_PETALS); + this.createAirLikeBlock(Blocks.BARRIER, Items.BARRIER); + this.registerSimpleFlatItemModel(Items.BARRIER); + this.createLightBlock(); + this.createAirLikeBlock(Blocks.STRUCTURE_VOID, Items.STRUCTURE_VOID); + this.registerSimpleFlatItemModel(Items.STRUCTURE_VOID); + this.createAirLikeBlock(Blocks.MOVING_PISTON, TextureMapping.getBlockTexture(Blocks.PISTON, "_side")); + this.createTrivialCube(Blocks.COAL_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_COAL_ORE); + this.createTrivialCube(Blocks.COAL_BLOCK); + this.createTrivialCube(Blocks.DIAMOND_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_DIAMOND_ORE); + this.createTrivialCube(Blocks.DIAMOND_BLOCK); + this.createTrivialCube(Blocks.EMERALD_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_EMERALD_ORE); + this.createTrivialCube(Blocks.EMERALD_BLOCK); + this.createTrivialCube(Blocks.GOLD_ORE); + this.createTrivialCube(Blocks.NETHER_GOLD_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_GOLD_ORE); + this.createTrivialCube(Blocks.GOLD_BLOCK); + this.createTrivialCube(Blocks.IRON_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_IRON_ORE); + this.createTrivialCube(Blocks.IRON_BLOCK); + this.createTrivialBlock(Blocks.ANCIENT_DEBRIS, TexturedModel.COLUMN); + this.createTrivialCube(Blocks.NETHERITE_BLOCK); + this.createTrivialCube(Blocks.LAPIS_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_LAPIS_ORE); + this.createTrivialCube(Blocks.LAPIS_BLOCK); + this.createTrivialCube(Blocks.RESIN_BLOCK); + this.createTrivialCube(Blocks.NETHER_QUARTZ_ORE); + this.createTrivialCube(Blocks.REDSTONE_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_REDSTONE_ORE); + this.createTrivialCube(Blocks.REDSTONE_BLOCK); + this.createTrivialCube(Blocks.GILDED_BLACKSTONE); + this.createTrivialCube(Blocks.BLUE_ICE); + this.createTrivialCube(Blocks.CLAY); + this.createTrivialCube(Blocks.COARSE_DIRT); + this.createTrivialCube(Blocks.CRYING_OBSIDIAN); + this.createTrivialCube(Blocks.END_STONE); + this.createTrivialCube(Blocks.GLOWSTONE); + this.createTrivialCube(Blocks.GRAVEL); + this.createTrivialCube(Blocks.HONEYCOMB_BLOCK); + this.createTrivialCube(Blocks.ICE); + this.createTrivialBlock(Blocks.JUKEBOX, TexturedModel.CUBE_TOP); + this.createTrivialBlock(Blocks.LODESTONE, TexturedModel.COLUMN); + this.createTrivialBlock(Blocks.MELON, TexturedModel.COLUMN); + this.createNonTemplateModelBlock(Blocks.MANGROVE_ROOTS); + this.createNonTemplateModelBlock(Blocks.POTTED_MANGROVE_PROPAGULE); + this.createTrivialCube(Blocks.NETHER_WART_BLOCK); + this.createTrivialCube(Blocks.NOTE_BLOCK); + this.createTrivialCube(Blocks.PACKED_ICE); + this.createTrivialCube(Blocks.OBSIDIAN); + this.createTrivialCube(Blocks.QUARTZ_BRICKS); + this.createTrivialCube(Blocks.SEA_LANTERN); + this.createTrivialCube(Blocks.SHROOMLIGHT); + this.createTrivialCube(Blocks.SOUL_SAND); + this.createTrivialCube(Blocks.SOUL_SOIL); + this.createTrivialBlock(Blocks.SPAWNER, TexturedModel.CUBE_INNER_FACES); + this.createCreakingHeart(Blocks.CREAKING_HEART); + this.createTrivialCube(Blocks.SPONGE); + this.createTrivialBlock(Blocks.SEAGRASS, TexturedModel.SEAGRASS); + this.registerSimpleFlatItemModel(Items.SEAGRASS); + this.createTrivialBlock(Blocks.TNT, TexturedModel.CUBE_TOP_BOTTOM); + this.createTrivialBlock(Blocks.TARGET, TexturedModel.COLUMN); + this.createTrivialCube(Blocks.WARPED_WART_BLOCK); + this.createTrivialCube(Blocks.WET_SPONGE); + this.createTrivialCube(Blocks.AMETHYST_BLOCK); + this.createTrivialCube(Blocks.BUDDING_AMETHYST); + this.createTrivialCube(Blocks.CALCITE); + this.createTrivialCube(Blocks.DRIPSTONE_BLOCK); + this.createTrivialCube(Blocks.RAW_IRON_BLOCK); + this.createTrivialCube(Blocks.RAW_COPPER_BLOCK); + this.createTrivialCube(Blocks.RAW_GOLD_BLOCK); + this.createRotatedMirroredVariantBlock(Blocks.SCULK); + this.createNonTemplateModelBlock(Blocks.HEAVY_CORE); + this.createPetrifiedOakSlab(); + this.createTrivialCube(Blocks.COPPER_ORE); + this.createTrivialCube(Blocks.DEEPSLATE_COPPER_ORE); + this.createTrivialCube(Blocks.COPPER_BLOCK); + this.createTrivialCube(Blocks.EXPOSED_COPPER); + this.createTrivialCube(Blocks.WEATHERED_COPPER); + this.createTrivialCube(Blocks.OXIDIZED_COPPER); + this.copyModel(Blocks.COPPER_BLOCK, Blocks.WAXED_COPPER_BLOCK); + this.copyModel(Blocks.EXPOSED_COPPER, Blocks.WAXED_EXPOSED_COPPER); + this.copyModel(Blocks.WEATHERED_COPPER, Blocks.WAXED_WEATHERED_COPPER); + this.copyModel(Blocks.OXIDIZED_COPPER, Blocks.WAXED_OXIDIZED_COPPER); + this.createDoor(Blocks.COPPER_DOOR); + this.createDoor(Blocks.EXPOSED_COPPER_DOOR); + this.createDoor(Blocks.WEATHERED_COPPER_DOOR); + this.createDoor(Blocks.OXIDIZED_COPPER_DOOR); + this.copyDoorModel(Blocks.COPPER_DOOR, Blocks.WAXED_COPPER_DOOR); + this.copyDoorModel(Blocks.EXPOSED_COPPER_DOOR, Blocks.WAXED_EXPOSED_COPPER_DOOR); + this.copyDoorModel(Blocks.WEATHERED_COPPER_DOOR, Blocks.WAXED_WEATHERED_COPPER_DOOR); + this.copyDoorModel(Blocks.OXIDIZED_COPPER_DOOR, Blocks.WAXED_OXIDIZED_COPPER_DOOR); + this.createTrapdoor(Blocks.COPPER_TRAPDOOR); + this.createTrapdoor(Blocks.EXPOSED_COPPER_TRAPDOOR); + this.createTrapdoor(Blocks.WEATHERED_COPPER_TRAPDOOR); + this.createTrapdoor(Blocks.OXIDIZED_COPPER_TRAPDOOR); + this.copyTrapdoorModel(Blocks.COPPER_TRAPDOOR, Blocks.WAXED_COPPER_TRAPDOOR); + this.copyTrapdoorModel(Blocks.EXPOSED_COPPER_TRAPDOOR, Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR); + this.copyTrapdoorModel(Blocks.WEATHERED_COPPER_TRAPDOOR, Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR); + this.copyTrapdoorModel(Blocks.OXIDIZED_COPPER_TRAPDOOR, Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR); + this.createTrivialCube(Blocks.COPPER_GRATE); + this.createTrivialCube(Blocks.EXPOSED_COPPER_GRATE); + this.createTrivialCube(Blocks.WEATHERED_COPPER_GRATE); + this.createTrivialCube(Blocks.OXIDIZED_COPPER_GRATE); + this.copyModel(Blocks.COPPER_GRATE, Blocks.WAXED_COPPER_GRATE); + this.copyModel(Blocks.EXPOSED_COPPER_GRATE, Blocks.WAXED_EXPOSED_COPPER_GRATE); + this.copyModel(Blocks.WEATHERED_COPPER_GRATE, Blocks.WAXED_WEATHERED_COPPER_GRATE); + this.copyModel(Blocks.OXIDIZED_COPPER_GRATE, Blocks.WAXED_OXIDIZED_COPPER_GRATE); + this.createWeightedPressurePlate(Blocks.LIGHT_WEIGHTED_PRESSURE_PLATE, Blocks.GOLD_BLOCK); + this.createWeightedPressurePlate(Blocks.HEAVY_WEIGHTED_PRESSURE_PLATE, Blocks.IRON_BLOCK); + this.createAmethystClusters(); + this.createBookshelf(); + this.createChiseledBookshelf(); + this.createBrewingStand(); + this.createCakeBlock(); + this.createCampfires(Blocks.CAMPFIRE, Blocks.SOUL_CAMPFIRE); + this.createCartographyTable(); + this.createCauldrons(); + this.createChorusFlower(); + this.createChorusPlant(); + this.createComposter(); + this.createDaylightDetector(); + this.createEndPortalFrame(); + this.createRotatableColumn(Blocks.END_ROD); + this.createLightningRod(); + this.createFarmland(); + this.createFire(); + this.createSoulFire(); + this.createFrostedIce(); + this.createGrassBlocks(); + this.createCocoa(); + this.createDirtPath(); + this.createGrindstone(); + this.createHopper(); + this.createIronBars(); + this.createLever(); + this.createLilyPad(); + this.createNetherPortalBlock(); + this.createNetherrack(); + this.createObserver(); + this.createPistons(); + this.createPistonHeads(); + this.createScaffolding(); + this.createRedstoneTorch(); + this.createRedstoneLamp(); + this.createRepeater(); + this.createSeaPickle(); + this.createSmithingTable(); + this.createSnowBlocks(); + this.createStonecutter(); + this.createStructureBlock(); + this.createSweetBerryBush(); + this.createTripwire(); + this.createTripwireHook(); + this.createTurtleEgg(); + this.createSnifferEgg(); + this.createVine(); + this.createMultiface(Blocks.GLOW_LICHEN); + this.createMultiface(Blocks.SCULK_VEIN); + this.createMultiface(Blocks.RESIN_CLUMP, Items.RESIN_CLUMP); + this.createMagmaBlock(); + this.createJigsaw(); + this.createSculkSensor(); + this.createCalibratedSculkSensor(); + this.createSculkShrieker(); + this.createFrogspawnBlock(); + this.createMangrovePropagule(); + this.createMuddyMangroveRoots(); + this.createTrialSpawner(); + this.createVault(); + this.createNonTemplateHorizontalBlock(Blocks.LADDER); + this.registerSimpleFlatItemModel(Blocks.LADDER); + this.createNonTemplateHorizontalBlock(Blocks.LECTERN); + this.createBigDripLeafBlock(); + this.createNonTemplateHorizontalBlock(Blocks.BIG_DRIPLEAF_STEM); + this.createNormalTorch(Blocks.TORCH, Blocks.WALL_TORCH); + this.createNormalTorch(Blocks.SOUL_TORCH, Blocks.SOUL_WALL_TORCH); + this.createCraftingTableLike(Blocks.CRAFTING_TABLE, Blocks.OAK_PLANKS, TextureMapping::craftingTable); + this.createCraftingTableLike(Blocks.FLETCHING_TABLE, Blocks.BIRCH_PLANKS, TextureMapping::fletchingTable); + this.createNyliumBlock(Blocks.CRIMSON_NYLIUM); + this.createNyliumBlock(Blocks.WARPED_NYLIUM); + this.createDispenserBlock(Blocks.DISPENSER); + this.createDispenserBlock(Blocks.DROPPER); + this.createCrafterBlock(); + this.createLantern(Blocks.LANTERN); + this.createLantern(Blocks.SOUL_LANTERN); + this.createAxisAlignedPillarBlockCustomModel(Blocks.CHAIN, ModelLocationUtils.getModelLocation(Blocks.CHAIN)); + this.createAxisAlignedPillarBlock(Blocks.BASALT, TexturedModel.COLUMN); + this.createAxisAlignedPillarBlock(Blocks.POLISHED_BASALT, TexturedModel.COLUMN); + this.createTrivialCube(Blocks.SMOOTH_BASALT); + this.createAxisAlignedPillarBlock(Blocks.BONE_BLOCK, TexturedModel.COLUMN); + this.createRotatedVariantBlock(Blocks.DIRT); + this.createRotatedVariantBlock(Blocks.ROOTED_DIRT); + this.createRotatedVariantBlock(Blocks.SAND); + this.createBrushableBlock(Blocks.SUSPICIOUS_SAND); + this.createBrushableBlock(Blocks.SUSPICIOUS_GRAVEL); + this.createRotatedVariantBlock(Blocks.RED_SAND); + this.createRotatedMirroredVariantBlock(Blocks.BEDROCK); + this.createTrivialBlock(Blocks.REINFORCED_DEEPSLATE, TexturedModel.CUBE_TOP_BOTTOM); + this.createRotatedPillarWithHorizontalVariant(Blocks.HAY_BLOCK, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); + this.createRotatedPillarWithHorizontalVariant(Blocks.PURPUR_PILLAR, TexturedModel.COLUMN_ALT, TexturedModel.COLUMN_HORIZONTAL_ALT); + this.createRotatedPillarWithHorizontalVariant(Blocks.QUARTZ_PILLAR, TexturedModel.COLUMN_ALT, TexturedModel.COLUMN_HORIZONTAL_ALT); + this.createRotatedPillarWithHorizontalVariant(Blocks.OCHRE_FROGLIGHT, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); + this.createRotatedPillarWithHorizontalVariant(Blocks.VERDANT_FROGLIGHT, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); + this.createRotatedPillarWithHorizontalVariant(Blocks.PEARLESCENT_FROGLIGHT, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); + this.createHorizontallyRotatedBlock(Blocks.LOOM, TexturedModel.ORIENTABLE); + this.createPumpkins(); + this.createBeeNest(Blocks.BEE_NEST, TextureMapping::orientableCube); + this.createBeeNest(Blocks.BEEHIVE, TextureMapping::orientableCubeSameEnds); + this.createCropBlock(Blocks.BEETROOTS, BlockStateProperties.AGE_3, 0, 1, 2, 3); + this.createCropBlock(Blocks.CARROTS, BlockStateProperties.AGE_7, 0, 0, 1, 1, 2, 2, 2, 3); + this.createCropBlock(Blocks.NETHER_WART, BlockStateProperties.AGE_3, 0, 1, 1, 2); + this.createCropBlock(Blocks.POTATOES, BlockStateProperties.AGE_7, 0, 0, 1, 1, 2, 2, 2, 3); + this.createCropBlock(Blocks.WHEAT, BlockStateProperties.AGE_7, 0, 1, 2, 3, 4, 5, 6, 7); + this.createCrossBlock(Blocks.TORCHFLOWER_CROP, BlockModelGenerators.PlantType.NOT_TINTED, BlockStateProperties.AGE_1, 0, 1); + this.createPitcherCrop(); + this.createPitcherPlant(); + this.createBanners(); + this.createBeds(); + this.createHeads(); + this.createChests(); + this.createShulkerBox(Blocks.SHULKER_BOX, null); + this.createShulkerBox(Blocks.WHITE_SHULKER_BOX, DyeColor.WHITE); + this.createShulkerBox(Blocks.ORANGE_SHULKER_BOX, DyeColor.ORANGE); + this.createShulkerBox(Blocks.MAGENTA_SHULKER_BOX, DyeColor.MAGENTA); + this.createShulkerBox(Blocks.LIGHT_BLUE_SHULKER_BOX, DyeColor.LIGHT_BLUE); + this.createShulkerBox(Blocks.YELLOW_SHULKER_BOX, DyeColor.YELLOW); + this.createShulkerBox(Blocks.LIME_SHULKER_BOX, DyeColor.LIME); + this.createShulkerBox(Blocks.PINK_SHULKER_BOX, DyeColor.PINK); + this.createShulkerBox(Blocks.GRAY_SHULKER_BOX, DyeColor.GRAY); + this.createShulkerBox(Blocks.LIGHT_GRAY_SHULKER_BOX, DyeColor.LIGHT_GRAY); + this.createShulkerBox(Blocks.CYAN_SHULKER_BOX, DyeColor.CYAN); + this.createShulkerBox(Blocks.PURPLE_SHULKER_BOX, DyeColor.PURPLE); + this.createShulkerBox(Blocks.BLUE_SHULKER_BOX, DyeColor.BLUE); + this.createShulkerBox(Blocks.BROWN_SHULKER_BOX, DyeColor.BROWN); + this.createShulkerBox(Blocks.GREEN_SHULKER_BOX, DyeColor.GREEN); + this.createShulkerBox(Blocks.RED_SHULKER_BOX, DyeColor.RED); + this.createShulkerBox(Blocks.BLACK_SHULKER_BOX, DyeColor.BLACK); + this.createParticleOnlyBlock(Blocks.CONDUIT); + this.generateSimpleSpecialItemModel(Blocks.CONDUIT, new ConduitSpecialRenderer.Unbaked()); + this.createParticleOnlyBlock(Blocks.DECORATED_POT, Blocks.TERRACOTTA); + this.generateSimpleSpecialItemModel(Blocks.DECORATED_POT, new DecoratedPotSpecialRenderer.Unbaked()); + this.createParticleOnlyBlock(Blocks.END_PORTAL, Blocks.OBSIDIAN); + this.createParticleOnlyBlock(Blocks.END_GATEWAY, Blocks.OBSIDIAN); + this.createTrivialCube(Blocks.AZALEA_LEAVES); + this.createTrivialCube(Blocks.FLOWERING_AZALEA_LEAVES); + this.createTrivialCube(Blocks.WHITE_CONCRETE); + this.createTrivialCube(Blocks.ORANGE_CONCRETE); + this.createTrivialCube(Blocks.MAGENTA_CONCRETE); + this.createTrivialCube(Blocks.LIGHT_BLUE_CONCRETE); + this.createTrivialCube(Blocks.YELLOW_CONCRETE); + this.createTrivialCube(Blocks.LIME_CONCRETE); + this.createTrivialCube(Blocks.PINK_CONCRETE); + this.createTrivialCube(Blocks.GRAY_CONCRETE); + this.createTrivialCube(Blocks.LIGHT_GRAY_CONCRETE); + this.createTrivialCube(Blocks.CYAN_CONCRETE); + this.createTrivialCube(Blocks.PURPLE_CONCRETE); + this.createTrivialCube(Blocks.BLUE_CONCRETE); + this.createTrivialCube(Blocks.BROWN_CONCRETE); + this.createTrivialCube(Blocks.GREEN_CONCRETE); + this.createTrivialCube(Blocks.RED_CONCRETE); + this.createTrivialCube(Blocks.BLACK_CONCRETE); + this.createColoredBlockWithRandomRotations( + TexturedModel.CUBE, + Blocks.WHITE_CONCRETE_POWDER, + Blocks.ORANGE_CONCRETE_POWDER, + Blocks.MAGENTA_CONCRETE_POWDER, + Blocks.LIGHT_BLUE_CONCRETE_POWDER, + Blocks.YELLOW_CONCRETE_POWDER, + Blocks.LIME_CONCRETE_POWDER, + Blocks.PINK_CONCRETE_POWDER, + Blocks.GRAY_CONCRETE_POWDER, + Blocks.LIGHT_GRAY_CONCRETE_POWDER, + Blocks.CYAN_CONCRETE_POWDER, + Blocks.PURPLE_CONCRETE_POWDER, + Blocks.BLUE_CONCRETE_POWDER, + Blocks.BROWN_CONCRETE_POWDER, + Blocks.GREEN_CONCRETE_POWDER, + Blocks.RED_CONCRETE_POWDER, + Blocks.BLACK_CONCRETE_POWDER + ); + this.createTrivialCube(Blocks.TERRACOTTA); + this.createTrivialCube(Blocks.WHITE_TERRACOTTA); + this.createTrivialCube(Blocks.ORANGE_TERRACOTTA); + this.createTrivialCube(Blocks.MAGENTA_TERRACOTTA); + this.createTrivialCube(Blocks.LIGHT_BLUE_TERRACOTTA); + this.createTrivialCube(Blocks.YELLOW_TERRACOTTA); + this.createTrivialCube(Blocks.LIME_TERRACOTTA); + this.createTrivialCube(Blocks.PINK_TERRACOTTA); + this.createTrivialCube(Blocks.GRAY_TERRACOTTA); + this.createTrivialCube(Blocks.LIGHT_GRAY_TERRACOTTA); + this.createTrivialCube(Blocks.CYAN_TERRACOTTA); + this.createTrivialCube(Blocks.PURPLE_TERRACOTTA); + this.createTrivialCube(Blocks.BLUE_TERRACOTTA); + this.createTrivialCube(Blocks.BROWN_TERRACOTTA); + this.createTrivialCube(Blocks.GREEN_TERRACOTTA); + this.createTrivialCube(Blocks.RED_TERRACOTTA); + this.createTrivialCube(Blocks.BLACK_TERRACOTTA); + this.createTrivialCube(Blocks.TINTED_GLASS); + this.createGlassBlocks(Blocks.GLASS, Blocks.GLASS_PANE); + this.createGlassBlocks(Blocks.WHITE_STAINED_GLASS, Blocks.WHITE_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.ORANGE_STAINED_GLASS, Blocks.ORANGE_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.MAGENTA_STAINED_GLASS, Blocks.MAGENTA_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.LIGHT_BLUE_STAINED_GLASS, Blocks.LIGHT_BLUE_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.YELLOW_STAINED_GLASS, Blocks.YELLOW_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.LIME_STAINED_GLASS, Blocks.LIME_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.PINK_STAINED_GLASS, Blocks.PINK_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.GRAY_STAINED_GLASS, Blocks.GRAY_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.LIGHT_GRAY_STAINED_GLASS, Blocks.LIGHT_GRAY_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.CYAN_STAINED_GLASS, Blocks.CYAN_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.PURPLE_STAINED_GLASS, Blocks.PURPLE_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.BLUE_STAINED_GLASS, Blocks.BLUE_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.BROWN_STAINED_GLASS, Blocks.BROWN_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.GREEN_STAINED_GLASS, Blocks.GREEN_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.RED_STAINED_GLASS, Blocks.RED_STAINED_GLASS_PANE); + this.createGlassBlocks(Blocks.BLACK_STAINED_GLASS, Blocks.BLACK_STAINED_GLASS_PANE); + this.createColoredBlockWithStateRotations( + TexturedModel.GLAZED_TERRACOTTA, + Blocks.WHITE_GLAZED_TERRACOTTA, + Blocks.ORANGE_GLAZED_TERRACOTTA, + Blocks.MAGENTA_GLAZED_TERRACOTTA, + Blocks.LIGHT_BLUE_GLAZED_TERRACOTTA, + Blocks.YELLOW_GLAZED_TERRACOTTA, + Blocks.LIME_GLAZED_TERRACOTTA, + Blocks.PINK_GLAZED_TERRACOTTA, + Blocks.GRAY_GLAZED_TERRACOTTA, + Blocks.LIGHT_GRAY_GLAZED_TERRACOTTA, + Blocks.CYAN_GLAZED_TERRACOTTA, + Blocks.PURPLE_GLAZED_TERRACOTTA, + Blocks.BLUE_GLAZED_TERRACOTTA, + Blocks.BROWN_GLAZED_TERRACOTTA, + Blocks.GREEN_GLAZED_TERRACOTTA, + Blocks.RED_GLAZED_TERRACOTTA, + Blocks.BLACK_GLAZED_TERRACOTTA + ); + this.createFullAndCarpetBlocks(Blocks.WHITE_WOOL, Blocks.WHITE_CARPET); + this.createFullAndCarpetBlocks(Blocks.ORANGE_WOOL, Blocks.ORANGE_CARPET); + this.createFullAndCarpetBlocks(Blocks.MAGENTA_WOOL, Blocks.MAGENTA_CARPET); + this.createFullAndCarpetBlocks(Blocks.LIGHT_BLUE_WOOL, Blocks.LIGHT_BLUE_CARPET); + this.createFullAndCarpetBlocks(Blocks.YELLOW_WOOL, Blocks.YELLOW_CARPET); + this.createFullAndCarpetBlocks(Blocks.LIME_WOOL, Blocks.LIME_CARPET); + this.createFullAndCarpetBlocks(Blocks.PINK_WOOL, Blocks.PINK_CARPET); + this.createFullAndCarpetBlocks(Blocks.GRAY_WOOL, Blocks.GRAY_CARPET); + this.createFullAndCarpetBlocks(Blocks.LIGHT_GRAY_WOOL, Blocks.LIGHT_GRAY_CARPET); + this.createFullAndCarpetBlocks(Blocks.CYAN_WOOL, Blocks.CYAN_CARPET); + this.createFullAndCarpetBlocks(Blocks.PURPLE_WOOL, Blocks.PURPLE_CARPET); + this.createFullAndCarpetBlocks(Blocks.BLUE_WOOL, Blocks.BLUE_CARPET); + this.createFullAndCarpetBlocks(Blocks.BROWN_WOOL, Blocks.BROWN_CARPET); + this.createFullAndCarpetBlocks(Blocks.GREEN_WOOL, Blocks.GREEN_CARPET); + this.createFullAndCarpetBlocks(Blocks.RED_WOOL, Blocks.RED_CARPET); + this.createFullAndCarpetBlocks(Blocks.BLACK_WOOL, Blocks.BLACK_CARPET); + this.createTrivialCube(Blocks.MUD); + this.createTrivialCube(Blocks.PACKED_MUD); + this.createPlant(Blocks.FERN, Blocks.POTTED_FERN, BlockModelGenerators.PlantType.TINTED); + this.createItemWithGrassTint(Blocks.FERN); + this.createPlantWithDefaultItem(Blocks.DANDELION, Blocks.POTTED_DANDELION, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.POPPY, Blocks.POTTED_POPPY, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.OPEN_EYEBLOSSOM, Blocks.POTTED_OPEN_EYEBLOSSOM, BlockModelGenerators.PlantType.EMISSIVE_NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.CLOSED_EYEBLOSSOM, Blocks.POTTED_CLOSED_EYEBLOSSOM, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.BLUE_ORCHID, Blocks.POTTED_BLUE_ORCHID, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.ALLIUM, Blocks.POTTED_ALLIUM, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.AZURE_BLUET, Blocks.POTTED_AZURE_BLUET, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.RED_TULIP, Blocks.POTTED_RED_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.ORANGE_TULIP, Blocks.POTTED_ORANGE_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.WHITE_TULIP, Blocks.POTTED_WHITE_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.PINK_TULIP, Blocks.POTTED_PINK_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.OXEYE_DAISY, Blocks.POTTED_OXEYE_DAISY, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.CORNFLOWER, Blocks.POTTED_CORNFLOWER, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.LILY_OF_THE_VALLEY, Blocks.POTTED_LILY_OF_THE_VALLEY, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.WITHER_ROSE, Blocks.POTTED_WITHER_ROSE, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.RED_MUSHROOM, Blocks.POTTED_RED_MUSHROOM, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.BROWN_MUSHROOM, Blocks.POTTED_BROWN_MUSHROOM, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.DEAD_BUSH, Blocks.POTTED_DEAD_BUSH, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPlantWithDefaultItem(Blocks.TORCHFLOWER, Blocks.POTTED_TORCHFLOWER, BlockModelGenerators.PlantType.NOT_TINTED); + this.createPointedDripstone(); + this.createMushroomBlock(Blocks.BROWN_MUSHROOM_BLOCK); + this.createMushroomBlock(Blocks.RED_MUSHROOM_BLOCK); + this.createMushroomBlock(Blocks.MUSHROOM_STEM); + this.createCrossBlock(Blocks.SHORT_GRASS, BlockModelGenerators.PlantType.TINTED); + this.createItemWithGrassTint(Blocks.SHORT_GRASS); + this.createCrossBlock(Blocks.SUGAR_CANE, BlockModelGenerators.PlantType.TINTED); + this.registerSimpleFlatItemModel(Items.SUGAR_CANE); + this.createGrowingPlant(Blocks.KELP, Blocks.KELP_PLANT, BlockModelGenerators.PlantType.NOT_TINTED); + this.registerSimpleFlatItemModel(Items.KELP); + this.createCrossBlock(Blocks.HANGING_ROOTS, BlockModelGenerators.PlantType.NOT_TINTED); + this.createGrowingPlant(Blocks.WEEPING_VINES, Blocks.WEEPING_VINES_PLANT, BlockModelGenerators.PlantType.NOT_TINTED); + this.createGrowingPlant(Blocks.TWISTING_VINES, Blocks.TWISTING_VINES_PLANT, BlockModelGenerators.PlantType.NOT_TINTED); + this.registerSimpleFlatItemModel(Blocks.WEEPING_VINES, "_plant"); + this.registerSimpleFlatItemModel(Blocks.TWISTING_VINES, "_plant"); + this.createCrossBlockWithDefaultItem( + Blocks.BAMBOO_SAPLING, BlockModelGenerators.PlantType.TINTED, TextureMapping.cross(TextureMapping.getBlockTexture(Blocks.BAMBOO, "_stage0")) + ); + this.createBamboo(); + this.createCrossBlockWithDefaultItem(Blocks.COBWEB, BlockModelGenerators.PlantType.NOT_TINTED); + this.createDoublePlantWithDefaultItem(Blocks.LILAC, BlockModelGenerators.PlantType.NOT_TINTED); + this.createDoublePlantWithDefaultItem(Blocks.ROSE_BUSH, BlockModelGenerators.PlantType.NOT_TINTED); + this.createDoublePlantWithDefaultItem(Blocks.PEONY, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedDoublePlant(Blocks.TALL_GRASS); + this.createTintedDoublePlant(Blocks.LARGE_FERN); + this.createSunflower(); + this.createTallSeagrass(); + this.createSmallDripleaf(); + this.createCoral( + Blocks.TUBE_CORAL, + Blocks.DEAD_TUBE_CORAL, + Blocks.TUBE_CORAL_BLOCK, + Blocks.DEAD_TUBE_CORAL_BLOCK, + Blocks.TUBE_CORAL_FAN, + Blocks.DEAD_TUBE_CORAL_FAN, + Blocks.TUBE_CORAL_WALL_FAN, + Blocks.DEAD_TUBE_CORAL_WALL_FAN + ); + this.createCoral( + Blocks.BRAIN_CORAL, + Blocks.DEAD_BRAIN_CORAL, + Blocks.BRAIN_CORAL_BLOCK, + Blocks.DEAD_BRAIN_CORAL_BLOCK, + Blocks.BRAIN_CORAL_FAN, + Blocks.DEAD_BRAIN_CORAL_FAN, + Blocks.BRAIN_CORAL_WALL_FAN, + Blocks.DEAD_BRAIN_CORAL_WALL_FAN + ); + this.createCoral( + Blocks.BUBBLE_CORAL, + Blocks.DEAD_BUBBLE_CORAL, + Blocks.BUBBLE_CORAL_BLOCK, + Blocks.DEAD_BUBBLE_CORAL_BLOCK, + Blocks.BUBBLE_CORAL_FAN, + Blocks.DEAD_BUBBLE_CORAL_FAN, + Blocks.BUBBLE_CORAL_WALL_FAN, + Blocks.DEAD_BUBBLE_CORAL_WALL_FAN + ); + this.createCoral( + Blocks.FIRE_CORAL, + Blocks.DEAD_FIRE_CORAL, + Blocks.FIRE_CORAL_BLOCK, + Blocks.DEAD_FIRE_CORAL_BLOCK, + Blocks.FIRE_CORAL_FAN, + Blocks.DEAD_FIRE_CORAL_FAN, + Blocks.FIRE_CORAL_WALL_FAN, + Blocks.DEAD_FIRE_CORAL_WALL_FAN + ); + this.createCoral( + Blocks.HORN_CORAL, + Blocks.DEAD_HORN_CORAL, + Blocks.HORN_CORAL_BLOCK, + Blocks.DEAD_HORN_CORAL_BLOCK, + Blocks.HORN_CORAL_FAN, + Blocks.DEAD_HORN_CORAL_FAN, + Blocks.HORN_CORAL_WALL_FAN, + Blocks.DEAD_HORN_CORAL_WALL_FAN + ); + this.createStems(Blocks.MELON_STEM, Blocks.ATTACHED_MELON_STEM); + this.createStems(Blocks.PUMPKIN_STEM, Blocks.ATTACHED_PUMPKIN_STEM); + this.woodProvider(Blocks.MANGROVE_LOG).logWithHorizontal(Blocks.MANGROVE_LOG).wood(Blocks.MANGROVE_WOOD); + this.woodProvider(Blocks.STRIPPED_MANGROVE_LOG).logWithHorizontal(Blocks.STRIPPED_MANGROVE_LOG).wood(Blocks.STRIPPED_MANGROVE_WOOD); + this.createHangingSign(Blocks.STRIPPED_MANGROVE_LOG, Blocks.MANGROVE_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN); + this.createTintedLeaves(Blocks.MANGROVE_LEAVES, TexturedModel.LEAVES, -7158200); + this.woodProvider(Blocks.ACACIA_LOG).logWithHorizontal(Blocks.ACACIA_LOG).wood(Blocks.ACACIA_WOOD); + this.woodProvider(Blocks.STRIPPED_ACACIA_LOG).logWithHorizontal(Blocks.STRIPPED_ACACIA_LOG).wood(Blocks.STRIPPED_ACACIA_WOOD); + this.createHangingSign(Blocks.STRIPPED_ACACIA_LOG, Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.ACACIA_SAPLING, Blocks.POTTED_ACACIA_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedLeaves(Blocks.ACACIA_LEAVES, TexturedModel.LEAVES, -12012264); + this.woodProvider(Blocks.CHERRY_LOG).logUVLocked(Blocks.CHERRY_LOG).wood(Blocks.CHERRY_WOOD); + this.woodProvider(Blocks.STRIPPED_CHERRY_LOG).logUVLocked(Blocks.STRIPPED_CHERRY_LOG).wood(Blocks.STRIPPED_CHERRY_WOOD); + this.createHangingSign(Blocks.STRIPPED_CHERRY_LOG, Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.CHERRY_SAPLING, Blocks.POTTED_CHERRY_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTrivialBlock(Blocks.CHERRY_LEAVES, TexturedModel.LEAVES); + this.woodProvider(Blocks.BIRCH_LOG).logWithHorizontal(Blocks.BIRCH_LOG).wood(Blocks.BIRCH_WOOD); + this.woodProvider(Blocks.STRIPPED_BIRCH_LOG).logWithHorizontal(Blocks.STRIPPED_BIRCH_LOG).wood(Blocks.STRIPPED_BIRCH_WOOD); + this.createHangingSign(Blocks.STRIPPED_BIRCH_LOG, Blocks.BIRCH_HANGING_SIGN, Blocks.BIRCH_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.BIRCH_SAPLING, Blocks.POTTED_BIRCH_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedLeaves(Blocks.BIRCH_LEAVES, TexturedModel.LEAVES, -8345771); + this.woodProvider(Blocks.OAK_LOG).logWithHorizontal(Blocks.OAK_LOG).wood(Blocks.OAK_WOOD); + this.woodProvider(Blocks.STRIPPED_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_OAK_LOG).wood(Blocks.STRIPPED_OAK_WOOD); + this.createHangingSign(Blocks.STRIPPED_OAK_LOG, Blocks.OAK_HANGING_SIGN, Blocks.OAK_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.OAK_SAPLING, Blocks.POTTED_OAK_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedLeaves(Blocks.OAK_LEAVES, TexturedModel.LEAVES, -12012264); + this.woodProvider(Blocks.SPRUCE_LOG).logWithHorizontal(Blocks.SPRUCE_LOG).wood(Blocks.SPRUCE_WOOD); + this.woodProvider(Blocks.STRIPPED_SPRUCE_LOG).logWithHorizontal(Blocks.STRIPPED_SPRUCE_LOG).wood(Blocks.STRIPPED_SPRUCE_WOOD); + this.createHangingSign(Blocks.STRIPPED_SPRUCE_LOG, Blocks.SPRUCE_HANGING_SIGN, Blocks.SPRUCE_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.SPRUCE_SAPLING, Blocks.POTTED_SPRUCE_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedLeaves(Blocks.SPRUCE_LEAVES, TexturedModel.LEAVES, -10380959); + this.woodProvider(Blocks.DARK_OAK_LOG).logWithHorizontal(Blocks.DARK_OAK_LOG).wood(Blocks.DARK_OAK_WOOD); + this.woodProvider(Blocks.STRIPPED_DARK_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_DARK_OAK_LOG).wood(Blocks.STRIPPED_DARK_OAK_WOOD); + this.createHangingSign(Blocks.STRIPPED_DARK_OAK_LOG, Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.DARK_OAK_SAPLING, Blocks.POTTED_DARK_OAK_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedLeaves(Blocks.DARK_OAK_LEAVES, TexturedModel.LEAVES, -12012264); + this.woodProvider(Blocks.PALE_OAK_LOG).logWithHorizontal(Blocks.PALE_OAK_LOG).wood(Blocks.PALE_OAK_WOOD); + this.woodProvider(Blocks.STRIPPED_PALE_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_PALE_OAK_LOG).wood(Blocks.STRIPPED_PALE_OAK_WOOD); + this.createHangingSign(Blocks.STRIPPED_PALE_OAK_LOG, Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.PALE_OAK_SAPLING, Blocks.POTTED_PALE_OAK_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTrivialBlock(Blocks.PALE_OAK_LEAVES, TexturedModel.LEAVES); + this.woodProvider(Blocks.JUNGLE_LOG).logWithHorizontal(Blocks.JUNGLE_LOG).wood(Blocks.JUNGLE_WOOD); + this.woodProvider(Blocks.STRIPPED_JUNGLE_LOG).logWithHorizontal(Blocks.STRIPPED_JUNGLE_LOG).wood(Blocks.STRIPPED_JUNGLE_WOOD); + this.createHangingSign(Blocks.STRIPPED_JUNGLE_LOG, Blocks.JUNGLE_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.JUNGLE_SAPLING, Blocks.POTTED_JUNGLE_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); + this.createTintedLeaves(Blocks.JUNGLE_LEAVES, TexturedModel.LEAVES, -12012264); + this.woodProvider(Blocks.CRIMSON_STEM).log(Blocks.CRIMSON_STEM).wood(Blocks.CRIMSON_HYPHAE); + this.woodProvider(Blocks.STRIPPED_CRIMSON_STEM).log(Blocks.STRIPPED_CRIMSON_STEM).wood(Blocks.STRIPPED_CRIMSON_HYPHAE); + this.createHangingSign(Blocks.STRIPPED_CRIMSON_STEM, Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.CRIMSON_FUNGUS, Blocks.POTTED_CRIMSON_FUNGUS, BlockModelGenerators.PlantType.NOT_TINTED); + this.createNetherRoots(Blocks.CRIMSON_ROOTS, Blocks.POTTED_CRIMSON_ROOTS); + this.woodProvider(Blocks.WARPED_STEM).log(Blocks.WARPED_STEM).wood(Blocks.WARPED_HYPHAE); + this.woodProvider(Blocks.STRIPPED_WARPED_STEM).log(Blocks.STRIPPED_WARPED_STEM).wood(Blocks.STRIPPED_WARPED_HYPHAE); + this.createHangingSign(Blocks.STRIPPED_WARPED_STEM, Blocks.WARPED_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN); + this.createPlantWithDefaultItem(Blocks.WARPED_FUNGUS, Blocks.POTTED_WARPED_FUNGUS, BlockModelGenerators.PlantType.NOT_TINTED); + this.createNetherRoots(Blocks.WARPED_ROOTS, Blocks.POTTED_WARPED_ROOTS); + this.woodProvider(Blocks.BAMBOO_BLOCK).logUVLocked(Blocks.BAMBOO_BLOCK); + this.woodProvider(Blocks.STRIPPED_BAMBOO_BLOCK).logUVLocked(Blocks.STRIPPED_BAMBOO_BLOCK); + this.createHangingSign(Blocks.BAMBOO_PLANKS, Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN); + this.createCrossBlock(Blocks.NETHER_SPROUTS, BlockModelGenerators.PlantType.NOT_TINTED); + this.registerSimpleFlatItemModel(Items.NETHER_SPROUTS); + this.createDoor(Blocks.IRON_DOOR); + this.createTrapdoor(Blocks.IRON_TRAPDOOR); + this.createSmoothStoneSlab(); + this.createPassiveRail(Blocks.RAIL); + this.createActiveRail(Blocks.POWERED_RAIL); + this.createActiveRail(Blocks.DETECTOR_RAIL); + this.createActiveRail(Blocks.ACTIVATOR_RAIL); + this.createComparator(); + this.createCommandBlock(Blocks.COMMAND_BLOCK); + this.createCommandBlock(Blocks.REPEATING_COMMAND_BLOCK); + this.createCommandBlock(Blocks.CHAIN_COMMAND_BLOCK); + this.createAnvil(Blocks.ANVIL); + this.createAnvil(Blocks.CHIPPED_ANVIL); + this.createAnvil(Blocks.DAMAGED_ANVIL); + this.createBarrel(); + this.createBell(); + this.createFurnace(Blocks.FURNACE, TexturedModel.ORIENTABLE_ONLY_TOP); + this.createFurnace(Blocks.BLAST_FURNACE, TexturedModel.ORIENTABLE_ONLY_TOP); + this.createFurnace(Blocks.SMOKER, TexturedModel.ORIENTABLE); + this.createRedstoneWire(); + this.createRespawnAnchor(); + this.createSculkCatalyst(); + this.copyModel(Blocks.CHISELED_STONE_BRICKS, Blocks.INFESTED_CHISELED_STONE_BRICKS); + this.copyModel(Blocks.COBBLESTONE, Blocks.INFESTED_COBBLESTONE); + this.copyModel(Blocks.CRACKED_STONE_BRICKS, Blocks.INFESTED_CRACKED_STONE_BRICKS); + this.copyModel(Blocks.MOSSY_STONE_BRICKS, Blocks.INFESTED_MOSSY_STONE_BRICKS); + this.createInfestedStone(); + this.copyModel(Blocks.STONE_BRICKS, Blocks.INFESTED_STONE_BRICKS); + this.createInfestedDeepslate(); + } + + private void createLightBlock() { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(Items.LIGHT)); + Map map = new HashMap(16); + PropertyDispatch.C1 c1 = PropertyDispatch.property(BlockStateProperties.LEVEL); + + for (int i = 0; i <= 15; i++) { + String string = String.format(Locale.ROOT, "_%02d", i); + ResourceLocation resourceLocation = TextureMapping.getItemTexture(Items.LIGHT, string); + c1.select( + i, + Variant.variant() + .with( + VariantProperties.MODEL, ModelTemplates.PARTICLE_ONLY.createWithSuffix(Blocks.LIGHT, string, TextureMapping.particle(resourceLocation), this.modelOutput) + ) + ); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel( + ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(Items.LIGHT, string), TextureMapping.layer0(resourceLocation), this.modelOutput) + ); + map.put(i, unbaked2); + } + + this.itemModelOutput.accept(Items.LIGHT, ItemModelUtils.selectBlockItemProperty(LightBlock.LEVEL, unbaked, map)); + this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(Blocks.LIGHT).with(c1)); + } + + private void createCandleAndCandleCake(Block candleBlock, Block candleCakeBlock) { + this.registerSimpleFlatItemModel(candleBlock.asItem()); + TextureMapping textureMapping = TextureMapping.cube(TextureMapping.getBlockTexture(candleBlock)); + TextureMapping textureMapping2 = TextureMapping.cube(TextureMapping.getBlockTexture(candleBlock, "_lit")); + ResourceLocation resourceLocation = ModelTemplates.CANDLE.createWithSuffix(candleBlock, "_one_candle", textureMapping, this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.TWO_CANDLES.createWithSuffix(candleBlock, "_two_candles", textureMapping, this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.THREE_CANDLES.createWithSuffix(candleBlock, "_three_candles", textureMapping, this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.FOUR_CANDLES.createWithSuffix(candleBlock, "_four_candles", textureMapping, this.modelOutput); + ResourceLocation resourceLocation5 = ModelTemplates.CANDLE.createWithSuffix(candleBlock, "_one_candle_lit", textureMapping2, this.modelOutput); + ResourceLocation resourceLocation6 = ModelTemplates.TWO_CANDLES.createWithSuffix(candleBlock, "_two_candles_lit", textureMapping2, this.modelOutput); + ResourceLocation resourceLocation7 = ModelTemplates.THREE_CANDLES.createWithSuffix(candleBlock, "_three_candles_lit", textureMapping2, this.modelOutput); + ResourceLocation resourceLocation8 = ModelTemplates.FOUR_CANDLES.createWithSuffix(candleBlock, "_four_candles_lit", textureMapping2, this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(candleBlock) + .with( + PropertyDispatch.properties(BlockStateProperties.CANDLES, BlockStateProperties.LIT) + .select(1, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) + .select(2, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) + .select(3, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) + .select(4, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) + .select(1, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) + .select(2, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation6)) + .select(3, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation7)) + .select(4, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation8)) + ) + ); + ResourceLocation resourceLocation9 = ModelTemplates.CANDLE_CAKE.create(candleCakeBlock, TextureMapping.candleCake(candleBlock, false), this.modelOutput); + ResourceLocation resourceLocation10 = ModelTemplates.CANDLE_CAKE + .createWithSuffix(candleCakeBlock, "_lit", TextureMapping.candleCake(candleBlock, true), this.modelOutput); + this.blockStateOutput + .accept( + MultiVariantGenerator.multiVariant(candleCakeBlock).with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation10, resourceLocation9)) + ); + } + + @Environment(EnvType.CLIENT) + class BlockFamilyProvider { + private final TextureMapping mapping; + private final Map models = Maps.newHashMap(); + @Nullable + private BlockFamily family; + @Nullable + private ResourceLocation fullBlock; + private final Set skipGeneratingModelsFor = new HashSet(); + + public BlockFamilyProvider(final TextureMapping mapping) { + this.mapping = mapping; + } + + public BlockModelGenerators.BlockFamilyProvider fullBlock(Block block, ModelTemplate modelTemplate) { + this.fullBlock = modelTemplate.create(block, this.mapping, BlockModelGenerators.this.modelOutput); + if (BlockModelGenerators.this.fullBlockModelCustomGenerators.containsKey(block)) { + BlockModelGenerators.this.blockStateOutput + .accept( + ((BlockModelGenerators.BlockStateGeneratorSupplier)BlockModelGenerators.this.fullBlockModelCustomGenerators.get(block)) + .create(block, this.fullBlock, this.mapping, BlockModelGenerators.this.modelOutput) + ); + } else { + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, this.fullBlock)); + } + + return this; + } + + public BlockModelGenerators.BlockFamilyProvider donateModelTo(Block sourceBlock, Block block) { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(sourceBlock); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, resourceLocation)); + BlockModelGenerators.this.itemModelOutput.copy(sourceBlock.asItem(), block.asItem()); + this.skipGeneratingModelsFor.add(block); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider button(Block buttonBlock) { + ResourceLocation resourceLocation = ModelTemplates.BUTTON.create(buttonBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.BUTTON_PRESSED.create(buttonBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createButton(buttonBlock, resourceLocation, resourceLocation2)); + ResourceLocation resourceLocation3 = ModelTemplates.BUTTON_INVENTORY.create(buttonBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.registerSimpleItemModel(buttonBlock, resourceLocation3); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider wall(Block wallBlock) { + ResourceLocation resourceLocation = ModelTemplates.WALL_POST.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.WALL_LOW_SIDE.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.WALL_TALL_SIDE.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createWall(wallBlock, resourceLocation, resourceLocation2, resourceLocation3)); + ResourceLocation resourceLocation4 = ModelTemplates.WALL_INVENTORY.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.registerSimpleItemModel(wallBlock, resourceLocation4); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider customFence(Block fenceBlock) { + TextureMapping textureMapping = TextureMapping.customParticle(fenceBlock); + ResourceLocation resourceLocation = ModelTemplates.CUSTOM_FENCE_POST.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUSTOM_FENCE_SIDE_NORTH.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.CUSTOM_FENCE_SIDE_EAST.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.CUSTOM_FENCE_SIDE_SOUTH.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation5 = ModelTemplates.CUSTOM_FENCE_SIDE_WEST.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput + .accept(BlockModelGenerators.createCustomFence(fenceBlock, resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4, resourceLocation5)); + ResourceLocation resourceLocation6 = ModelTemplates.CUSTOM_FENCE_INVENTORY.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.registerSimpleItemModel(fenceBlock, resourceLocation6); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider fence(Block fenceBlock) { + ResourceLocation resourceLocation = ModelTemplates.FENCE_POST.create(fenceBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.FENCE_SIDE.create(fenceBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createFence(fenceBlock, resourceLocation, resourceLocation2)); + ResourceLocation resourceLocation3 = ModelTemplates.FENCE_INVENTORY.create(fenceBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.registerSimpleItemModel(fenceBlock, resourceLocation3); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider customFenceGate(Block customFenceGateBlock) { + TextureMapping textureMapping = TextureMapping.customParticle(customFenceGateBlock); + ResourceLocation resourceLocation = ModelTemplates.CUSTOM_FENCE_GATE_OPEN + .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUSTOM_FENCE_GATE_CLOSED + .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.CUSTOM_FENCE_GATE_WALL_OPEN + .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.CUSTOM_FENCE_GATE_WALL_CLOSED + .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput + .accept(BlockModelGenerators.createFenceGate(customFenceGateBlock, resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4, false)); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider fenceGate(Block fenceGateBlock) { + ResourceLocation resourceLocation = ModelTemplates.FENCE_GATE_OPEN.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.FENCE_GATE_CLOSED.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation3 = ModelTemplates.FENCE_GATE_WALL_OPEN.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation4 = ModelTemplates.FENCE_GATE_WALL_CLOSED.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput + .accept(BlockModelGenerators.createFenceGate(fenceGateBlock, resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4, true)); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider pressurePlate(Block pressurePlateBlock) { + ResourceLocation resourceLocation = ModelTemplates.PRESSURE_PLATE_UP.create(pressurePlateBlock, this.mapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.PRESSURE_PLATE_DOWN.create(pressurePlateBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createPressurePlate(pressurePlateBlock, resourceLocation, resourceLocation2)); + return this; + } + + public BlockModelGenerators.BlockFamilyProvider sign(Block signBlock) { + if (this.family == null) { + throw new IllegalStateException("Family not defined"); + } else { + Block block = (Block)this.family.getVariants().get(net.minecraft.data.BlockFamily.Variant.WALL_SIGN); + ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(signBlock, this.mapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(signBlock, resourceLocation)); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, resourceLocation)); + BlockModelGenerators.this.registerSimpleFlatItemModel(signBlock.asItem()); + return this; + } + } + + public BlockModelGenerators.BlockFamilyProvider slab(Block slabBlock) { + if (this.fullBlock == null) { + throw new IllegalStateException("Full block not generated yet"); + } else { + ResourceLocation resourceLocation = this.getOrCreateModel(ModelTemplates.SLAB_BOTTOM, slabBlock); + ResourceLocation resourceLocation2 = this.getOrCreateModel(ModelTemplates.SLAB_TOP, slabBlock); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSlab(slabBlock, resourceLocation, resourceLocation2, this.fullBlock)); + BlockModelGenerators.this.registerSimpleItemModel(slabBlock, resourceLocation); + return this; + } + } + + public BlockModelGenerators.BlockFamilyProvider stairs(Block stairsBlock) { + ResourceLocation resourceLocation = this.getOrCreateModel(ModelTemplates.STAIRS_INNER, stairsBlock); + ResourceLocation resourceLocation2 = this.getOrCreateModel(ModelTemplates.STAIRS_STRAIGHT, stairsBlock); + ResourceLocation resourceLocation3 = this.getOrCreateModel(ModelTemplates.STAIRS_OUTER, stairsBlock); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createStairs(stairsBlock, resourceLocation, resourceLocation2, resourceLocation3)); + BlockModelGenerators.this.registerSimpleItemModel(stairsBlock, resourceLocation2); + return this; + } + + private BlockModelGenerators.BlockFamilyProvider fullBlockVariant(Block block) { + TexturedModel texturedModel = (TexturedModel)BlockModelGenerators.this.texturedModels.getOrDefault(block, TexturedModel.CUBE.get(block)); + ResourceLocation resourceLocation = texturedModel.create(block, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, resourceLocation)); + return this; + } + + private BlockModelGenerators.BlockFamilyProvider door(Block doorBlock) { + BlockModelGenerators.this.createDoor(doorBlock); + return this; + } + + private void trapdoor(Block trapdoorBlock) { + if (BlockModelGenerators.this.nonOrientableTrapdoor.contains(trapdoorBlock)) { + BlockModelGenerators.this.createTrapdoor(trapdoorBlock); + } else { + BlockModelGenerators.this.createOrientableTrapdoor(trapdoorBlock); + } + } + + private ResourceLocation getOrCreateModel(ModelTemplate modelTemplate, Block block) { + return (ResourceLocation)this.models + .computeIfAbsent(modelTemplate, modelTemplatex -> modelTemplatex.create(block, this.mapping, BlockModelGenerators.this.modelOutput)); + } + + public BlockModelGenerators.BlockFamilyProvider generateFor(BlockFamily family) { + this.family = family; + family.getVariants() + .forEach( + (variant, block) -> { + if (!this.skipGeneratingModelsFor.contains(block)) { + BiConsumer biConsumer = (BiConsumer)BlockModelGenerators.SHAPE_CONSUMERS + .get(variant); + if (biConsumer != null) { + biConsumer.accept(this, block); + } + } + } + ); + return this; + } + } + + @FunctionalInterface + @Environment(EnvType.CLIENT) + interface BlockStateGeneratorSupplier { + BlockStateGenerator create( + Block block, ResourceLocation resourceLocation, TextureMapping textureMapping, BiConsumer biConsumer + ); + } + + @Environment(EnvType.CLIENT) + record BookSlotModelCacheKey(ModelTemplate template, String modelSuffix) { + } + + @Environment(EnvType.CLIENT) + static enum PlantType { + TINTED(ModelTemplates.TINTED_CROSS, ModelTemplates.TINTED_FLOWER_POT_CROSS, false), + NOT_TINTED(ModelTemplates.CROSS, ModelTemplates.FLOWER_POT_CROSS, false), + EMISSIVE_NOT_TINTED(ModelTemplates.CROSS_EMISSIVE, ModelTemplates.FLOWER_POT_CROSS_EMISSIVE, true); + + private final ModelTemplate blockTemplate; + private final ModelTemplate flowerPotTemplate; + private final boolean isEmissive; + + private PlantType(final ModelTemplate blockTemplate, final ModelTemplate flowerPotTemplate, final boolean isEmissive) { + this.blockTemplate = blockTemplate; + this.flowerPotTemplate = flowerPotTemplate; + this.isEmissive = isEmissive; + } + + public ModelTemplate getCross() { + return this.blockTemplate; + } + + public ModelTemplate getCrossPot() { + return this.flowerPotTemplate; + } + + public ResourceLocation createItemModel(BlockModelGenerators generator, Block block) { + Item item = block.asItem(); + return this.isEmissive + ? generator.createFlatItemModelWithBlockTextureAndOverlay(item, block, "_emissive") + : generator.createFlatItemModelWithBlockTexture(item, block); + } + + public TextureMapping getTextureMapping(Block block) { + return this.isEmissive ? TextureMapping.crossEmissive(block) : TextureMapping.cross(block); + } + + public TextureMapping getPlantTextureMapping(Block block) { + return this.isEmissive ? TextureMapping.plantEmissive(block) : TextureMapping.plant(block); + } + } + + @Environment(EnvType.CLIENT) + class WoodProvider { + private final TextureMapping logMapping; + + public WoodProvider(final TextureMapping logMapping) { + this.logMapping = logMapping; + } + + public BlockModelGenerators.WoodProvider wood(Block woodBlock) { + TextureMapping textureMapping = this.logMapping.copyAndUpdate(TextureSlot.END, this.logMapping.get(TextureSlot.SIDE)); + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(woodBlock, textureMapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createAxisAlignedPillarBlock(woodBlock, resourceLocation)); + return this; + } + + public BlockModelGenerators.WoodProvider log(Block logBlock) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createAxisAlignedPillarBlock(logBlock, resourceLocation)); + return this; + } + + public BlockModelGenerators.WoodProvider logWithHorizontal(Block logBlock) { + ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput); + ResourceLocation resourceLocation2 = ModelTemplates.CUBE_COLUMN_HORIZONTAL.create(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput); + BlockModelGenerators.this.blockStateOutput + .accept(BlockModelGenerators.createRotatedPillarWithHorizontalVariant(logBlock, resourceLocation, resourceLocation2)); + return this; + } + + public BlockModelGenerators.WoodProvider logUVLocked(Block logBlock) { + BlockModelGenerators.this.blockStateOutput + .accept(BlockModelGenerators.createPillarBlockUVLocked(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput)); + return this; + } + } +} diff --git a/net/minecraft/client/data/models/EquipmentAssetProvider.java b/net/minecraft/client/data/models/EquipmentAssetProvider.java new file mode 100644 index 00000000..f71a02b3 --- /dev/null +++ b/net/minecraft/client/data/models/EquipmentAssetProvider.java @@ -0,0 +1,107 @@ +package net.minecraft.client.data.models; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.Map.Entry; +import java.util.concurrent.CompletableFuture; +import java.util.function.BiConsumer; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.resources.model.EquipmentClientInfo; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.DataProvider; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.equipment.EquipmentAsset; +import net.minecraft.world.item.equipment.EquipmentAssets; + +@Environment(EnvType.CLIENT) +public class EquipmentAssetProvider implements DataProvider { + private final PackOutput.PathProvider pathProvider; + + public EquipmentAssetProvider(PackOutput output) { + this.pathProvider = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, "equipment"); + } + + private static void bootstrap(BiConsumer, EquipmentClientInfo> output) { + output.accept( + EquipmentAssets.LEATHER, + EquipmentClientInfo.builder() + .addHumanoidLayers(ResourceLocation.withDefaultNamespace("leather"), true) + .addHumanoidLayers(ResourceLocation.withDefaultNamespace("leather_overlay"), false) + .addLayers(EquipmentClientInfo.LayerType.HORSE_BODY, EquipmentClientInfo.Layer.leatherDyeable(ResourceLocation.withDefaultNamespace("leather"), true)) + .build() + ); + output.accept(EquipmentAssets.CHAINMAIL, onlyHumanoid("chainmail")); + output.accept(EquipmentAssets.IRON, humanoidAndHorse("iron")); + output.accept(EquipmentAssets.GOLD, humanoidAndHorse("gold")); + output.accept(EquipmentAssets.DIAMOND, humanoidAndHorse("diamond")); + output.accept( + EquipmentAssets.TURTLE_SCUTE, EquipmentClientInfo.builder().addMainHumanoidLayer(ResourceLocation.withDefaultNamespace("turtle_scute"), false).build() + ); + output.accept(EquipmentAssets.NETHERITE, onlyHumanoid("netherite")); + output.accept( + EquipmentAssets.ARMADILLO_SCUTE, + EquipmentClientInfo.builder() + .addLayers(EquipmentClientInfo.LayerType.WOLF_BODY, EquipmentClientInfo.Layer.onlyIfDyed(ResourceLocation.withDefaultNamespace("armadillo_scute"), false)) + .addLayers( + EquipmentClientInfo.LayerType.WOLF_BODY, EquipmentClientInfo.Layer.onlyIfDyed(ResourceLocation.withDefaultNamespace("armadillo_scute_overlay"), true) + ) + .build() + ); + output.accept( + EquipmentAssets.ELYTRA, + EquipmentClientInfo.builder() + .addLayers(EquipmentClientInfo.LayerType.WINGS, new EquipmentClientInfo.Layer(ResourceLocation.withDefaultNamespace("elytra"), Optional.empty(), true)) + .build() + ); + + for (Entry> entry : EquipmentAssets.CARPETS.entrySet()) { + DyeColor dyeColor = (DyeColor)entry.getKey(); + ResourceKey resourceKey = (ResourceKey)entry.getValue(); + output.accept( + resourceKey, + EquipmentClientInfo.builder() + .addLayers(EquipmentClientInfo.LayerType.LLAMA_BODY, new EquipmentClientInfo.Layer(ResourceLocation.withDefaultNamespace(dyeColor.getSerializedName()))) + .build() + ); + } + + output.accept( + EquipmentAssets.TRADER_LLAMA, + EquipmentClientInfo.builder() + .addLayers(EquipmentClientInfo.LayerType.LLAMA_BODY, new EquipmentClientInfo.Layer(ResourceLocation.withDefaultNamespace("trader_llama"))) + .build() + ); + } + + private static EquipmentClientInfo onlyHumanoid(String name) { + return EquipmentClientInfo.builder().addHumanoidLayers(ResourceLocation.withDefaultNamespace(name)).build(); + } + + private static EquipmentClientInfo humanoidAndHorse(String name) { + return EquipmentClientInfo.builder() + .addHumanoidLayers(ResourceLocation.withDefaultNamespace(name)) + .addLayers(EquipmentClientInfo.LayerType.HORSE_BODY, EquipmentClientInfo.Layer.leatherDyeable(ResourceLocation.withDefaultNamespace(name), false)) + .build(); + } + + @Override + public CompletableFuture run(CachedOutput output) { + Map, EquipmentClientInfo> map = new HashMap(); + bootstrap((resourceKey, equipmentClientInfo) -> { + if (map.putIfAbsent(resourceKey, equipmentClientInfo) != null) { + throw new IllegalStateException("Tried to register equipment asset twice for id: " + resourceKey); + } + }); + return DataProvider.saveAll(output, EquipmentClientInfo.CODEC, this.pathProvider::json, map); + } + + @Override + public String getName() { + return "Equipment Asset Definitions"; + } +} diff --git a/net/minecraft/client/data/models/ItemModelGenerators.java b/net/minecraft/client/data/models/ItemModelGenerators.java new file mode 100644 index 00000000..16a3cae4 --- /dev/null +++ b/net/minecraft/client/data/models/ItemModelGenerators.java @@ -0,0 +1,834 @@ +package net.minecraft.client.data.models; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.function.BiConsumer; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.color.item.Dye; +import net.minecraft.client.color.item.Firework; +import net.minecraft.client.color.item.ItemTintSource; +import net.minecraft.client.color.item.MapColor; +import net.minecraft.client.color.item.Potion; +import net.minecraft.client.data.models.model.ItemModelUtils; +import net.minecraft.client.data.models.model.ModelInstance; +import net.minecraft.client.data.models.model.ModelLocationUtils; +import net.minecraft.client.data.models.model.ModelTemplate; +import net.minecraft.client.data.models.model.ModelTemplates; +import net.minecraft.client.data.models.model.TextureMapping; +import net.minecraft.client.renderer.item.BundleSelectedItemSpecialRenderer; +import net.minecraft.client.renderer.item.ItemModel; +import net.minecraft.client.renderer.item.RangeSelectItemModel; +import net.minecraft.client.renderer.item.SelectItemModel; +import net.minecraft.client.renderer.item.properties.conditional.Broken; +import net.minecraft.client.renderer.item.properties.conditional.BundleHasSelectedItem; +import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperty; +import net.minecraft.client.renderer.item.properties.conditional.FishingRodCast; +import net.minecraft.client.renderer.item.properties.numeric.CompassAngle; +import net.minecraft.client.renderer.item.properties.numeric.CompassAngleState; +import net.minecraft.client.renderer.item.properties.numeric.CrossbowPull; +import net.minecraft.client.renderer.item.properties.numeric.Time; +import net.minecraft.client.renderer.item.properties.numeric.UseCycle; +import net.minecraft.client.renderer.item.properties.numeric.UseDuration; +import net.minecraft.client.renderer.item.properties.select.Charge; +import net.minecraft.client.renderer.item.properties.select.DisplayContext; +import net.minecraft.client.renderer.item.properties.select.TrimMaterialProperty; +import net.minecraft.client.renderer.special.ShieldSpecialRenderer; +import net.minecraft.client.renderer.special.TridentSpecialRenderer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.equipment.EquipmentAsset; +import net.minecraft.world.item.equipment.EquipmentAssets; +import net.minecraft.world.item.equipment.trim.TrimMaterial; +import net.minecraft.world.item.equipment.trim.TrimMaterials; + +@Environment(EnvType.CLIENT) +public class ItemModelGenerators { + private static final ItemTintSource BLANK_LAYER = ItemModelUtils.constantTint(-1); + private static final String SLOT_HELMET = "helmet"; + private static final String SLOT_CHESTPLATE = "chestplate"; + private static final String SLOT_LEGGINS = "leggings"; + private static final String SLOT_BOOTS = "boots"; + private static final List TRIM_MATERIAL_MODELS = List.of( + new ItemModelGenerators.TrimMaterialData("quartz", TrimMaterials.QUARTZ, Map.of()), + new ItemModelGenerators.TrimMaterialData("iron", TrimMaterials.IRON, Map.of(EquipmentAssets.IRON, "iron_darker")), + new ItemModelGenerators.TrimMaterialData("netherite", TrimMaterials.NETHERITE, Map.of(EquipmentAssets.NETHERITE, "netherite_darker")), + new ItemModelGenerators.TrimMaterialData("redstone", TrimMaterials.REDSTONE, Map.of()), + new ItemModelGenerators.TrimMaterialData("copper", TrimMaterials.COPPER, Map.of()), + new ItemModelGenerators.TrimMaterialData("gold", TrimMaterials.GOLD, Map.of(EquipmentAssets.GOLD, "gold_darker")), + new ItemModelGenerators.TrimMaterialData("emerald", TrimMaterials.EMERALD, Map.of()), + new ItemModelGenerators.TrimMaterialData("diamond", TrimMaterials.DIAMOND, Map.of(EquipmentAssets.DIAMOND, "diamond_darker")), + new ItemModelGenerators.TrimMaterialData("lapis", TrimMaterials.LAPIS, Map.of()), + new ItemModelGenerators.TrimMaterialData("amethyst", TrimMaterials.AMETHYST, Map.of()), + new ItemModelGenerators.TrimMaterialData("resin", TrimMaterials.RESIN, Map.of()) + ); + private final ItemModelOutput itemModelOutput; + private final BiConsumer modelOutput; + + public ItemModelGenerators(ItemModelOutput itemModelOutput, BiConsumer modelOutput) { + this.itemModelOutput = itemModelOutput; + this.modelOutput = modelOutput; + } + + private void declareCustomModelItem(Item item) { + this.itemModelOutput.accept(item, ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(item))); + } + + private ResourceLocation createFlatItemModel(Item item, ModelTemplate modelTemplate) { + return modelTemplate.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(item), this.modelOutput); + } + + private void generateFlatItem(Item item, ModelTemplate modelTemplate) { + this.itemModelOutput.accept(item, ItemModelUtils.plainModel(this.createFlatItemModel(item, modelTemplate))); + } + + private ResourceLocation createFlatItemModel(Item item, String suffix, ModelTemplate modelTemplate) { + return modelTemplate.create( + ModelLocationUtils.getModelLocation(item, suffix), TextureMapping.layer0(TextureMapping.getItemTexture(item, suffix)), this.modelOutput + ); + } + + private ResourceLocation createFlatItemModel(Item item, Item layerZeroItem, ModelTemplate modelTemplate) { + return modelTemplate.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(layerZeroItem), this.modelOutput); + } + + private void generateFlatItem(Item item, Item layerZeroItem, ModelTemplate modelTemplate) { + this.itemModelOutput.accept(item, ItemModelUtils.plainModel(this.createFlatItemModel(item, layerZeroItem, modelTemplate))); + } + + private void generateItemWithTintedOverlay(Item item, ItemTintSource tintSource) { + this.generateItemWithTintedOverlay(item, "_overlay", tintSource); + } + + private void generateItemWithTintedOverlay(Item item, String suffix, ItemTintSource tintSource) { + ResourceLocation resourceLocation = this.generateLayeredItem(item, TextureMapping.getItemTexture(item), TextureMapping.getItemTexture(item, suffix)); + this.itemModelOutput.accept(item, ItemModelUtils.tintedModel(resourceLocation, BLANK_LAYER, tintSource)); + } + + private List createCompassModels(Item item) { + List list = new ArrayList(); + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(item, "_16", ModelTemplates.FLAT_ITEM)); + list.add(ItemModelUtils.override(unbaked, 0.0F)); + + for (int i = 1; i < 32; i++) { + int j = Mth.positiveModulo(i - 16, 32); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(this.createFlatItemModel(item, String.format(Locale.ROOT, "_%02d", j), ModelTemplates.FLAT_ITEM)); + list.add(ItemModelUtils.override(unbaked2, i - 0.5F)); + } + + list.add(ItemModelUtils.override(unbaked, 31.5F)); + return list; + } + + private void generateStandardCompassItem(Item item) { + List list = this.createCompassModels(item); + this.itemModelOutput + .accept( + item, + ItemModelUtils.conditional( + ItemModelUtils.hasComponent(DataComponents.LODESTONE_TRACKER), + ItemModelUtils.rangeSelect(new CompassAngle(true, CompassAngleState.CompassTarget.LODESTONE), 32.0F, list), + ItemModelUtils.inOverworld( + ItemModelUtils.rangeSelect(new CompassAngle(true, CompassAngleState.CompassTarget.SPAWN), 32.0F, list), + ItemModelUtils.rangeSelect(new CompassAngle(true, CompassAngleState.CompassTarget.NONE), 32.0F, list) + ) + ) + ); + } + + private void generateRecoveryCompassItem(Item item) { + this.itemModelOutput + .accept(item, ItemModelUtils.rangeSelect(new CompassAngle(true, CompassAngleState.CompassTarget.RECOVERY), 32.0F, this.createCompassModels(item))); + } + + private void generateClockItem(Item item) { + List list = new ArrayList(); + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(item, "_00", ModelTemplates.FLAT_ITEM)); + list.add(ItemModelUtils.override(unbaked, 0.0F)); + + for (int i = 1; i < 64; i++) { + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(this.createFlatItemModel(item, String.format(Locale.ROOT, "_%02d", i), ModelTemplates.FLAT_ITEM)); + list.add(ItemModelUtils.override(unbaked2, i - 0.5F)); + } + + list.add(ItemModelUtils.override(unbaked, 63.5F)); + this.itemModelOutput + .accept( + item, + ItemModelUtils.inOverworld( + ItemModelUtils.rangeSelect(new Time(true, Time.TimeSource.DAYTIME), 64.0F, list), + ItemModelUtils.rangeSelect(new Time(true, Time.TimeSource.RANDOM), 64.0F, list) + ) + ); + } + + private ResourceLocation generateLayeredItem(Item item, ResourceLocation layer0, ResourceLocation layer1) { + return ModelTemplates.TWO_LAYERED_ITEM.create(item, TextureMapping.layered(layer0, layer1), this.modelOutput); + } + + private ResourceLocation generateLayeredItem(ResourceLocation modelLocation, ResourceLocation layer0, ResourceLocation layer1) { + return ModelTemplates.TWO_LAYERED_ITEM.create(modelLocation, TextureMapping.layered(layer0, layer1), this.modelOutput); + } + + private void generateLayeredItem(ResourceLocation modelLocation, ResourceLocation layer0, ResourceLocation layer1, ResourceLocation layer2) { + ModelTemplates.THREE_LAYERED_ITEM.create(modelLocation, TextureMapping.layered(layer0, layer1, layer2), this.modelOutput); + } + + private void generateTrimmableItem(Item item, ResourceKey key, String name, boolean dyeable) { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(item); + ResourceLocation resourceLocation2 = TextureMapping.getItemTexture(item); + ResourceLocation resourceLocation3 = TextureMapping.getItemTexture(item, "_overlay"); + List>> list = new ArrayList(TRIM_MATERIAL_MODELS.size()); + + for (ItemModelGenerators.TrimMaterialData trimMaterialData : TRIM_MATERIAL_MODELS) { + ResourceLocation resourceLocation4 = resourceLocation.withSuffix("_" + trimMaterialData.name() + "_trim"); + ResourceLocation resourceLocation5 = ResourceLocation.withDefaultNamespace("trims/items/" + name + "_trim_" + trimMaterialData.textureName(key)); + ItemModel.Unbaked unbaked; + if (dyeable) { + this.generateLayeredItem(resourceLocation4, resourceLocation2, resourceLocation3, resourceLocation5); + unbaked = ItemModelUtils.tintedModel(resourceLocation4, new Dye(-6265536)); + } else { + this.generateLayeredItem(resourceLocation4, resourceLocation2, resourceLocation5); + unbaked = ItemModelUtils.plainModel(resourceLocation4); + } + + list.add(ItemModelUtils.when(trimMaterialData.materialKey, unbaked)); + } + + ItemModel.Unbaked unbaked2; + if (dyeable) { + ModelTemplates.TWO_LAYERED_ITEM.create(resourceLocation, TextureMapping.layered(resourceLocation2, resourceLocation3), this.modelOutput); + unbaked2 = ItemModelUtils.tintedModel(resourceLocation, new Dye(-6265536)); + } else { + ModelTemplates.FLAT_ITEM.create(resourceLocation, TextureMapping.layer0(resourceLocation2), this.modelOutput); + unbaked2 = ItemModelUtils.plainModel(resourceLocation); + } + + this.itemModelOutput.accept(item, ItemModelUtils.select(new TrimMaterialProperty(), unbaked2, list)); + } + + private void generateBundleModels(Item bundleItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(bundleItem, ModelTemplates.FLAT_ITEM)); + ResourceLocation resourceLocation = this.generateBundleCoverModel(bundleItem, ModelTemplates.BUNDLE_OPEN_BACK_INVENTORY, "_open_back"); + ResourceLocation resourceLocation2 = this.generateBundleCoverModel(bundleItem, ModelTemplates.BUNDLE_OPEN_FRONT_INVENTORY, "_open_front"); + ItemModel.Unbaked unbaked2 = ItemModelUtils.composite( + ItemModelUtils.plainModel(resourceLocation), new BundleSelectedItemSpecialRenderer.Unbaked(), ItemModelUtils.plainModel(resourceLocation2) + ); + ItemModel.Unbaked unbaked3 = ItemModelUtils.conditional(new BundleHasSelectedItem(), unbaked2, unbaked); + this.itemModelOutput.accept(bundleItem, ItemModelUtils.select(new DisplayContext(), unbaked, ItemModelUtils.when(ItemDisplayContext.GUI, unbaked3))); + } + + private ResourceLocation generateBundleCoverModel(Item bundleItem, ModelTemplate modelTemplate, String suffix) { + ResourceLocation resourceLocation = TextureMapping.getItemTexture(bundleItem, suffix); + return modelTemplate.create(bundleItem, TextureMapping.layer0(resourceLocation), this.modelOutput); + } + + private void generateBow(Item bowItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(bowItem)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(this.createFlatItemModel(bowItem, "_pulling_0", ModelTemplates.BOW)); + ItemModel.Unbaked unbaked3 = ItemModelUtils.plainModel(this.createFlatItemModel(bowItem, "_pulling_1", ModelTemplates.BOW)); + ItemModel.Unbaked unbaked4 = ItemModelUtils.plainModel(this.createFlatItemModel(bowItem, "_pulling_2", ModelTemplates.BOW)); + this.itemModelOutput + .accept( + bowItem, + ItemModelUtils.conditional( + ItemModelUtils.isUsingItem(), + ItemModelUtils.rangeSelect(new UseDuration(false), 0.05F, unbaked2, ItemModelUtils.override(unbaked3, 0.65F), ItemModelUtils.override(unbaked4, 0.9F)), + unbaked + ) + ); + } + + private void generateCrossbow(Item crossbowItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(crossbowItem)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(this.createFlatItemModel(crossbowItem, "_pulling_0", ModelTemplates.CROSSBOW)); + ItemModel.Unbaked unbaked3 = ItemModelUtils.plainModel(this.createFlatItemModel(crossbowItem, "_pulling_1", ModelTemplates.CROSSBOW)); + ItemModel.Unbaked unbaked4 = ItemModelUtils.plainModel(this.createFlatItemModel(crossbowItem, "_pulling_2", ModelTemplates.CROSSBOW)); + ItemModel.Unbaked unbaked5 = ItemModelUtils.plainModel(this.createFlatItemModel(crossbowItem, "_arrow", ModelTemplates.CROSSBOW)); + ItemModel.Unbaked unbaked6 = ItemModelUtils.plainModel(this.createFlatItemModel(crossbowItem, "_firework", ModelTemplates.CROSSBOW)); + this.itemModelOutput + .accept( + crossbowItem, + ItemModelUtils.conditional( + ItemModelUtils.isUsingItem(), + ItemModelUtils.rangeSelect(new CrossbowPull(), unbaked2, ItemModelUtils.override(unbaked3, 0.58F), ItemModelUtils.override(unbaked4, 1.0F)), + ItemModelUtils.select( + new Charge(), unbaked, ItemModelUtils.when(CrossbowItem.ChargeType.ARROW, unbaked5), ItemModelUtils.when(CrossbowItem.ChargeType.ROCKET, unbaked6) + ) + ) + ); + } + + private void generateBooleanDispatch(Item item, ConditionalItemModelProperty property, ItemModel.Unbaked trueModel, ItemModel.Unbaked falseModel) { + this.itemModelOutput.accept(item, ItemModelUtils.conditional(property, trueModel, falseModel)); + } + + private void generateElytra(Item elytraItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(elytraItem, ModelTemplates.FLAT_ITEM)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(this.createFlatItemModel(elytraItem, "_broken", ModelTemplates.FLAT_ITEM)); + this.generateBooleanDispatch(elytraItem, new Broken(), unbaked2, unbaked); + } + + private void generateBrush(Item brushItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(brushItem)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(brushItem, "_brushing_0")); + ItemModel.Unbaked unbaked3 = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(brushItem, "_brushing_1")); + ItemModel.Unbaked unbaked4 = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(brushItem, "_brushing_2")); + this.itemModelOutput + .accept( + brushItem, + ItemModelUtils.rangeSelect( + new UseCycle(10.0F), + 0.1F, + unbaked, + ItemModelUtils.override(unbaked2, 0.25F), + ItemModelUtils.override(unbaked3, 0.5F), + ItemModelUtils.override(unbaked4, 0.75F) + ) + ); + } + + private void generateFishingRod(Item fishingRodItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(fishingRodItem, ModelTemplates.FLAT_HANDHELD_ROD_ITEM)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(this.createFlatItemModel(fishingRodItem, "_cast", ModelTemplates.FLAT_HANDHELD_ROD_ITEM)); + this.generateBooleanDispatch(fishingRodItem, new FishingRodCast(), unbaked2, unbaked); + } + + private void generateGoatHorn(Item goatHornItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(goatHornItem)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(ModelLocationUtils.decorateItemModelLocation("tooting_goat_horn")); + this.generateBooleanDispatch(goatHornItem, ItemModelUtils.isUsingItem(), unbaked2, unbaked); + } + + private void generateShield(Item shieldItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.specialModel(ModelLocationUtils.getModelLocation(shieldItem), new ShieldSpecialRenderer.Unbaked()); + ItemModel.Unbaked unbaked2 = ItemModelUtils.specialModel(ModelLocationUtils.getModelLocation(shieldItem, "_blocking"), new ShieldSpecialRenderer.Unbaked()); + this.generateBooleanDispatch(shieldItem, ItemModelUtils.isUsingItem(), unbaked2, unbaked); + } + + private static ItemModel.Unbaked createFlatModelDispatch(ItemModel.Unbaked itemModel, ItemModel.Unbaked holdingModel) { + return ItemModelUtils.select( + new DisplayContext(), holdingModel, ItemModelUtils.when(List.of(ItemDisplayContext.GUI, ItemDisplayContext.GROUND, ItemDisplayContext.FIXED), itemModel) + ); + } + + private void generateSpyglass(Item spyglassItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(spyglassItem, ModelTemplates.FLAT_ITEM)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(spyglassItem, "_in_hand")); + this.itemModelOutput.accept(spyglassItem, createFlatModelDispatch(unbaked, unbaked2)); + } + + private void generateTrident(Item tridentItem) { + ItemModel.Unbaked unbaked = ItemModelUtils.plainModel(this.createFlatItemModel(tridentItem, ModelTemplates.FLAT_ITEM)); + ItemModel.Unbaked unbaked2 = ItemModelUtils.specialModel(ModelLocationUtils.getModelLocation(tridentItem, "_in_hand"), new TridentSpecialRenderer.Unbaked()); + ItemModel.Unbaked unbaked3 = ItemModelUtils.specialModel(ModelLocationUtils.getModelLocation(tridentItem, "_throwing"), new TridentSpecialRenderer.Unbaked()); + ItemModel.Unbaked unbaked4 = ItemModelUtils.conditional(ItemModelUtils.isUsingItem(), unbaked3, unbaked2); + this.itemModelOutput.accept(tridentItem, createFlatModelDispatch(unbaked, unbaked4)); + } + + private void addPotionTint(Item potionItem, ResourceLocation model) { + this.itemModelOutput.accept(potionItem, ItemModelUtils.tintedModel(model, new Potion())); + } + + private void generatePotion(Item potionItem) { + ResourceLocation resourceLocation = this.generateLayeredItem( + potionItem, ModelLocationUtils.decorateItemModelLocation("potion_overlay"), ModelLocationUtils.getModelLocation(potionItem) + ); + this.addPotionTint(potionItem, resourceLocation); + } + + private void generateTippedArrow(Item arrowItem) { + ResourceLocation resourceLocation = this.generateLayeredItem( + arrowItem, ModelLocationUtils.getModelLocation(arrowItem, "_head"), ModelLocationUtils.getModelLocation(arrowItem, "_base") + ); + this.addPotionTint(arrowItem, resourceLocation); + } + + private void generateDyedItem(Item item, int color) { + ResourceLocation resourceLocation = this.createFlatItemModel(item, ModelTemplates.FLAT_ITEM); + this.itemModelOutput.accept(item, ItemModelUtils.tintedModel(resourceLocation, new Dye(color))); + } + + private void generateSpawnEgg(Item spawnEggItem, int primaryColor, int secondaryColor) { + ResourceLocation resourceLocation = ModelLocationUtils.decorateItemModelLocation("template_spawn_egg"); + this.itemModelOutput + .accept(spawnEggItem, ItemModelUtils.tintedModel(resourceLocation, ItemModelUtils.constantTint(primaryColor), ItemModelUtils.constantTint(secondaryColor))); + } + + private void generateWolfArmor(Item armorItem) { + ResourceLocation resourceLocation = TextureMapping.getItemTexture(armorItem); + ResourceLocation resourceLocation2 = TextureMapping.getItemTexture(armorItem, "_overlay"); + ResourceLocation resourceLocation3 = ModelTemplates.FLAT_ITEM.create(armorItem, TextureMapping.layer0(resourceLocation), this.modelOutput); + ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(armorItem, "_dyed"); + ModelTemplates.TWO_LAYERED_ITEM.create(resourceLocation4, TextureMapping.layered(resourceLocation, resourceLocation2), this.modelOutput); + this.itemModelOutput + .accept( + armorItem, + ItemModelUtils.conditional( + ItemModelUtils.hasComponent(DataComponents.DYED_COLOR), + ItemModelUtils.tintedModel(resourceLocation4, BLANK_LAYER, new Dye(0)), + ItemModelUtils.plainModel(resourceLocation3) + ) + ); + } + + 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.generateStandardCompassItem(Items.COMPASS); + this.generateRecoveryCompassItem(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.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.RESIN_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.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.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.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); + this.generateTrimmableItem(Items.TURTLE_HELMET, EquipmentAssets.TURTLE_SCUTE, "helmet", false); + this.generateTrimmableItem(Items.LEATHER_HELMET, EquipmentAssets.LEATHER, "helmet", true); + this.generateTrimmableItem(Items.LEATHER_CHESTPLATE, EquipmentAssets.LEATHER, "chestplate", true); + this.generateTrimmableItem(Items.LEATHER_LEGGINGS, EquipmentAssets.LEATHER, "leggings", true); + this.generateTrimmableItem(Items.LEATHER_BOOTS, EquipmentAssets.LEATHER, "boots", true); + this.generateTrimmableItem(Items.CHAINMAIL_HELMET, EquipmentAssets.CHAINMAIL, "helmet", false); + this.generateTrimmableItem(Items.CHAINMAIL_CHESTPLATE, EquipmentAssets.CHAINMAIL, "chestplate", false); + this.generateTrimmableItem(Items.CHAINMAIL_LEGGINGS, EquipmentAssets.CHAINMAIL, "leggings", false); + this.generateTrimmableItem(Items.CHAINMAIL_BOOTS, EquipmentAssets.CHAINMAIL, "boots", false); + this.generateTrimmableItem(Items.IRON_HELMET, EquipmentAssets.IRON, "helmet", false); + this.generateTrimmableItem(Items.IRON_CHESTPLATE, EquipmentAssets.IRON, "chestplate", false); + this.generateTrimmableItem(Items.IRON_LEGGINGS, EquipmentAssets.IRON, "leggings", false); + this.generateTrimmableItem(Items.IRON_BOOTS, EquipmentAssets.IRON, "boots", false); + this.generateTrimmableItem(Items.DIAMOND_HELMET, EquipmentAssets.DIAMOND, "helmet", false); + this.generateTrimmableItem(Items.DIAMOND_CHESTPLATE, EquipmentAssets.DIAMOND, "chestplate", false); + this.generateTrimmableItem(Items.DIAMOND_LEGGINGS, EquipmentAssets.DIAMOND, "leggings", false); + this.generateTrimmableItem(Items.DIAMOND_BOOTS, EquipmentAssets.DIAMOND, "boots", false); + this.generateTrimmableItem(Items.GOLDEN_HELMET, EquipmentAssets.GOLD, "helmet", false); + this.generateTrimmableItem(Items.GOLDEN_CHESTPLATE, EquipmentAssets.GOLD, "chestplate", false); + this.generateTrimmableItem(Items.GOLDEN_LEGGINGS, EquipmentAssets.GOLD, "leggings", false); + this.generateTrimmableItem(Items.GOLDEN_BOOTS, EquipmentAssets.GOLD, "boots", false); + this.generateTrimmableItem(Items.NETHERITE_HELMET, EquipmentAssets.NETHERITE, "helmet", false); + this.generateTrimmableItem(Items.NETHERITE_CHESTPLATE, EquipmentAssets.NETHERITE, "chestplate", false); + this.generateTrimmableItem(Items.NETHERITE_LEGGINGS, EquipmentAssets.NETHERITE, "leggings", false); + this.generateTrimmableItem(Items.NETHERITE_BOOTS, EquipmentAssets.NETHERITE, "boots", false); + this.generateDyedItem(Items.LEATHER_HORSE_ARMOR, -6265536); + 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.generateItemWithTintedOverlay(Items.FIREWORK_STAR, new Firework()); + this.generateItemWithTintedOverlay(Items.FILLED_MAP, "_markings", new MapColor()); + this.generateBundleModels(Items.BUNDLE); + this.generateBundleModels(Items.BLACK_BUNDLE); + this.generateBundleModels(Items.WHITE_BUNDLE); + this.generateBundleModels(Items.GRAY_BUNDLE); + this.generateBundleModels(Items.LIGHT_GRAY_BUNDLE); + this.generateBundleModels(Items.LIGHT_BLUE_BUNDLE); + this.generateBundleModels(Items.BLUE_BUNDLE); + this.generateBundleModels(Items.CYAN_BUNDLE); + this.generateBundleModels(Items.YELLOW_BUNDLE); + this.generateBundleModels(Items.RED_BUNDLE); + this.generateBundleModels(Items.PURPLE_BUNDLE); + this.generateBundleModels(Items.MAGENTA_BUNDLE); + this.generateBundleModels(Items.PINK_BUNDLE); + this.generateBundleModels(Items.GREEN_BUNDLE); + this.generateBundleModels(Items.LIME_BUNDLE); + this.generateBundleModels(Items.BROWN_BUNDLE); + this.generateBundleModels(Items.ORANGE_BUNDLE); + this.generateSpyglass(Items.SPYGLASS); + this.generateTrident(Items.TRIDENT); + this.generateWolfArmor(Items.WOLF_ARMOR); + this.generateBow(Items.BOW); + this.generateCrossbow(Items.CROSSBOW); + this.generateElytra(Items.ELYTRA); + this.generateBrush(Items.BRUSH); + this.generateFishingRod(Items.FISHING_ROD); + this.generateGoatHorn(Items.GOAT_HORN); + this.generateShield(Items.SHIELD); + this.generateTippedArrow(Items.TIPPED_ARROW); + this.generatePotion(Items.POTION); + this.generatePotion(Items.SPLASH_POTION); + this.generatePotion(Items.LINGERING_POTION); + this.generateSpawnEgg(Items.ARMADILLO_SPAWN_EGG, 11366765, 8538184); + this.generateSpawnEgg(Items.ALLAY_SPAWN_EGG, 56063, 44543); + this.generateSpawnEgg(Items.AXOLOTL_SPAWN_EGG, 16499171, 10890612); + this.generateSpawnEgg(Items.BAT_SPAWN_EGG, 4996656, 986895); + this.generateSpawnEgg(Items.BEE_SPAWN_EGG, 15582019, 4400155); + this.generateSpawnEgg(Items.BLAZE_SPAWN_EGG, 16167425, 16775294); + this.generateSpawnEgg(Items.BOGGED_SPAWN_EGG, 9084018, 3231003); + this.generateSpawnEgg(Items.BREEZE_SPAWN_EGG, 11506911, 9529055); + this.generateSpawnEgg(Items.CAT_SPAWN_EGG, 15714446, 9794134); + this.generateSpawnEgg(Items.CAMEL_SPAWN_EGG, 16565097, 13341495); + this.generateSpawnEgg(Items.CAVE_SPIDER_SPAWN_EGG, 803406, 11013646); + this.generateSpawnEgg(Items.CHICKEN_SPAWN_EGG, 10592673, 16711680); + this.generateSpawnEgg(Items.COD_SPAWN_EGG, 12691306, 15058059); + this.generateSpawnEgg(Items.COW_SPAWN_EGG, 4470310, 10592673); + this.generateSpawnEgg(Items.CREEPER_SPAWN_EGG, 894731, 0); + this.generateSpawnEgg(Items.DOLPHIN_SPAWN_EGG, 2243405, 16382457); + this.generateSpawnEgg(Items.DONKEY_SPAWN_EGG, 5457209, 8811878); + this.generateSpawnEgg(Items.DROWNED_SPAWN_EGG, 9433559, 7969893); + this.generateSpawnEgg(Items.ELDER_GUARDIAN_SPAWN_EGG, 13552826, 7632531); + this.generateSpawnEgg(Items.ENDER_DRAGON_SPAWN_EGG, 1842204, 14711290); + this.generateSpawnEgg(Items.ENDERMAN_SPAWN_EGG, 1447446, 0); + this.generateSpawnEgg(Items.ENDERMITE_SPAWN_EGG, 1447446, 7237230); + this.generateSpawnEgg(Items.EVOKER_SPAWN_EGG, 9804699, 1973274); + this.generateSpawnEgg(Items.FOX_SPAWN_EGG, 14005919, 13396256); + this.generateSpawnEgg(Items.FROG_SPAWN_EGG, 13661252, 16762748); + this.generateSpawnEgg(Items.GHAST_SPAWN_EGG, 16382457, 12369084); + this.generateSpawnEgg(Items.GLOW_SQUID_SPAWN_EGG, 611926, 8778172); + this.generateSpawnEgg(Items.GOAT_SPAWN_EGG, 10851452, 5589310); + this.generateSpawnEgg(Items.GUARDIAN_SPAWN_EGG, 5931634, 15826224); + this.generateSpawnEgg(Items.HOGLIN_SPAWN_EGG, 13004373, 6251620); + this.generateSpawnEgg(Items.HORSE_SPAWN_EGG, 12623485, 15656192); + this.generateSpawnEgg(Items.HUSK_SPAWN_EGG, 7958625, 15125652); + this.generateSpawnEgg(Items.IRON_GOLEM_SPAWN_EGG, 14405058, 7643954); + this.generateSpawnEgg(Items.LLAMA_SPAWN_EGG, 12623485, 10051392); + this.generateSpawnEgg(Items.MAGMA_CUBE_SPAWN_EGG, 3407872, 16579584); + this.generateSpawnEgg(Items.MOOSHROOM_SPAWN_EGG, 10489616, 12040119); + this.generateSpawnEgg(Items.MULE_SPAWN_EGG, 1769984, 5321501); + this.generateSpawnEgg(Items.OCELOT_SPAWN_EGG, 15720061, 5653556); + this.generateSpawnEgg(Items.PANDA_SPAWN_EGG, 15198183, 1776418); + this.generateSpawnEgg(Items.PARROT_SPAWN_EGG, 894731, 16711680); + this.generateSpawnEgg(Items.PHANTOM_SPAWN_EGG, 4411786, 8978176); + this.generateSpawnEgg(Items.PIG_SPAWN_EGG, 15771042, 14377823); + this.generateSpawnEgg(Items.PIGLIN_SPAWN_EGG, 10051392, 16380836); + this.generateSpawnEgg(Items.PIGLIN_BRUTE_SPAWN_EGG, 5843472, 16380836); + this.generateSpawnEgg(Items.PILLAGER_SPAWN_EGG, 5451574, 9804699); + this.generateSpawnEgg(Items.POLAR_BEAR_SPAWN_EGG, 15658718, 14014157); + this.generateSpawnEgg(Items.PUFFERFISH_SPAWN_EGG, 16167425, 3654642); + this.generateSpawnEgg(Items.RABBIT_SPAWN_EGG, 10051392, 7555121); + this.generateSpawnEgg(Items.RAVAGER_SPAWN_EGG, 7697520, 5984329); + this.generateSpawnEgg(Items.SALMON_SPAWN_EGG, 10489616, 951412); + this.generateSpawnEgg(Items.SHEEP_SPAWN_EGG, 15198183, 16758197); + this.generateSpawnEgg(Items.SHULKER_SPAWN_EGG, 9725844, 5060690); + this.generateSpawnEgg(Items.SILVERFISH_SPAWN_EGG, 7237230, 3158064); + this.generateSpawnEgg(Items.SKELETON_SPAWN_EGG, 12698049, 4802889); + this.generateSpawnEgg(Items.SKELETON_HORSE_SPAWN_EGG, 6842447, 15066584); + this.generateSpawnEgg(Items.SLIME_SPAWN_EGG, 5349438, 8306542); + this.generateSpawnEgg(Items.SNIFFER_SPAWN_EGG, 8855049, 2468720); + this.generateSpawnEgg(Items.SNOW_GOLEM_SPAWN_EGG, 14283506, 8496292); + this.generateSpawnEgg(Items.SPIDER_SPAWN_EGG, 3419431, 11013646); + this.generateSpawnEgg(Items.SQUID_SPAWN_EGG, 2243405, 7375001); + this.generateSpawnEgg(Items.STRAY_SPAWN_EGG, 6387319, 14543594); + this.generateSpawnEgg(Items.STRIDER_SPAWN_EGG, 10236982, 5065037); + this.generateSpawnEgg(Items.TADPOLE_SPAWN_EGG, 7164733, 1444352); + this.generateSpawnEgg(Items.TRADER_LLAMA_SPAWN_EGG, 15377456, 4547222); + this.generateSpawnEgg(Items.TROPICAL_FISH_SPAWN_EGG, 15690005, 16775663); + this.generateSpawnEgg(Items.TURTLE_SPAWN_EGG, 15198183, 44975); + this.generateSpawnEgg(Items.VEX_SPAWN_EGG, 8032420, 15265265); + this.generateSpawnEgg(Items.VILLAGER_SPAWN_EGG, 5651507, 12422002); + this.generateSpawnEgg(Items.VINDICATOR_SPAWN_EGG, 9804699, 2580065); + this.generateSpawnEgg(Items.WANDERING_TRADER_SPAWN_EGG, 4547222, 15377456); + this.generateSpawnEgg(Items.WARDEN_SPAWN_EGG, 1001033, 3790560); + this.generateSpawnEgg(Items.WITCH_SPAWN_EGG, 3407872, 5349438); + this.generateSpawnEgg(Items.WITHER_SPAWN_EGG, 1315860, 5075616); + this.generateSpawnEgg(Items.WITHER_SKELETON_SPAWN_EGG, 1315860, 4672845); + this.generateSpawnEgg(Items.WOLF_SPAWN_EGG, 14144467, 13545366); + this.generateSpawnEgg(Items.ZOGLIN_SPAWN_EGG, 13004373, 15132390); + this.generateSpawnEgg(Items.CREAKING_SPAWN_EGG, 6250335, 16545810); + this.generateSpawnEgg(Items.ZOMBIE_SPAWN_EGG, 44975, 7969893); + this.generateSpawnEgg(Items.ZOMBIE_HORSE_SPAWN_EGG, 3232308, 9945732); + this.generateSpawnEgg(Items.ZOMBIE_VILLAGER_SPAWN_EGG, 5651507, 7969893); + this.generateSpawnEgg(Items.ZOMBIFIED_PIGLIN_SPAWN_EGG, 15373203, 5009705); + this.declareCustomModelItem(Items.AIR); + this.declareCustomModelItem(Items.AMETHYST_CLUSTER); + this.declareCustomModelItem(Items.SMALL_AMETHYST_BUD); + this.declareCustomModelItem(Items.MEDIUM_AMETHYST_BUD); + this.declareCustomModelItem(Items.LARGE_AMETHYST_BUD); + this.declareCustomModelItem(Items.SMALL_DRIPLEAF); + this.declareCustomModelItem(Items.BIG_DRIPLEAF); + this.declareCustomModelItem(Items.HANGING_ROOTS); + this.declareCustomModelItem(Items.POINTED_DRIPSTONE); + this.declareCustomModelItem(Items.BONE); + this.declareCustomModelItem(Items.COD); + this.declareCustomModelItem(Items.FEATHER); + this.declareCustomModelItem(Items.LEAD); + } + + @Environment(EnvType.CLIENT) + record TrimMaterialData(String name, ResourceKey materialKey, Map, String> overrideArmorMaterials) { + + public String textureName(ResourceKey key) { + return (String)this.overrideArmorMaterials.getOrDefault(key, this.name); + } + } +} diff --git a/net/minecraft/client/data/models/ItemModelOutput.java b/net/minecraft/client/data/models/ItemModelOutput.java new file mode 100644 index 00000000..eb9ad513 --- /dev/null +++ b/net/minecraft/client/data/models/ItemModelOutput.java @@ -0,0 +1,13 @@ +package net.minecraft.client.data.models; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.item.ItemModel; +import net.minecraft.world.item.Item; + +@Environment(EnvType.CLIENT) +public interface ItemModelOutput { + void accept(Item item, ItemModel.Unbaked model); + + void copy(Item item1, Item item2); +} diff --git a/net/minecraft/client/data/models/ModelProvider.java b/net/minecraft/client/data/models/ModelProvider.java new file mode 100644 index 00000000..79c90c72 --- /dev/null +++ b/net/minecraft/client/data/models/ModelProvider.java @@ -0,0 +1,165 @@ +package net.minecraft.client.data.models; + +import com.google.gson.JsonElement; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Stream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.data.models.blockstates.BlockStateGenerator; +import net.minecraft.client.data.models.model.ItemModelUtils; +import net.minecraft.client.data.models.model.ModelInstance; +import net.minecraft.client.data.models.model.ModelLocationUtils; +import net.minecraft.client.renderer.item.ClientItem; +import net.minecraft.client.renderer.item.ItemModel; +import net.minecraft.core.Holder.Reference; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.DataProvider; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +@Environment(EnvType.CLIENT) +public class ModelProvider implements DataProvider { + private final PackOutput.PathProvider blockStatePathProvider; + private final PackOutput.PathProvider itemInfoPathProvider; + private final PackOutput.PathProvider modelPathProvider; + + public ModelProvider(PackOutput output) { + this.blockStatePathProvider = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, "blockstates"); + this.itemInfoPathProvider = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, "items"); + this.modelPathProvider = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, "models"); + } + + @Override + public CompletableFuture run(CachedOutput output) { + ModelProvider.ItemInfoCollector itemInfoCollector = new ModelProvider.ItemInfoCollector(); + ModelProvider.BlockStateGeneratorCollector blockStateGeneratorCollector = new ModelProvider.BlockStateGeneratorCollector(); + ModelProvider.SimpleModelCollector simpleModelCollector = new ModelProvider.SimpleModelCollector(); + new BlockModelGenerators(blockStateGeneratorCollector, itemInfoCollector, simpleModelCollector).run(); + new ItemModelGenerators(itemInfoCollector, simpleModelCollector).run(); + blockStateGeneratorCollector.validate(); + itemInfoCollector.finalizeAndValidate(); + return CompletableFuture.allOf( + blockStateGeneratorCollector.save(output, this.blockStatePathProvider), + simpleModelCollector.save(output, this.modelPathProvider), + itemInfoCollector.save(output, this.itemInfoPathProvider) + ); + } + + static CompletableFuture saveAll(CachedOutput output, Function pathGetter, Map> entries) { + return DataProvider.saveAll(output, Supplier::get, pathGetter, entries); + } + + @Override + public final String getName() { + return "Model Definitions"; + } + + @Environment(EnvType.CLIENT) + static class BlockStateGeneratorCollector implements Consumer { + private final Map generators = new HashMap(); + + public void accept(BlockStateGenerator blockStateGenerator) { + Block block = blockStateGenerator.getBlock(); + BlockStateGenerator blockStateGenerator2 = (BlockStateGenerator)this.generators.put(block, blockStateGenerator); + if (blockStateGenerator2 != null) { + throw new IllegalStateException("Duplicate blockstate definition for " + block); + } + } + + public void validate() { + Stream> stream = BuiltInRegistries.BLOCK.listElements().filter(reference -> true); + List list = stream.filter(reference -> !this.generators.containsKey(reference.value())) + .map(reference -> reference.key().location()) + .toList(); + if (!list.isEmpty()) { + throw new IllegalStateException("Missing blockstate definitions for: " + list); + } + } + + public CompletableFuture save(CachedOutput output, PackOutput.PathProvider pathProvider) { + return ModelProvider.saveAll(output, block -> pathProvider.json(block.builtInRegistryHolder().key().location()), this.generators); + } + } + + @Environment(EnvType.CLIENT) + static class ItemInfoCollector implements ItemModelOutput { + private final Map itemInfos = new HashMap(); + private final Map copies = new HashMap(); + + @Override + public void accept(Item item, ItemModel.Unbaked model) { + this.register(item, new ClientItem(model, ClientItem.Properties.DEFAULT)); + } + + private void register(Item item, ClientItem clientItem) { + ClientItem clientItem2 = (ClientItem)this.itemInfos.put(item, clientItem); + if (clientItem2 != null) { + throw new IllegalStateException("Duplicate item model definition for " + item); + } + } + + @Override + public void copy(Item item1, Item item2) { + this.copies.put(item2, item1); + } + + public void finalizeAndValidate() { + BuiltInRegistries.ITEM.forEach(item -> { + if (!this.copies.containsKey(item)) { + if (item instanceof BlockItem blockItem && !this.itemInfos.containsKey(blockItem)) { + ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(blockItem.getBlock()); + this.accept(blockItem, ItemModelUtils.plainModel(resourceLocation)); + } + } + }); + this.copies.forEach((item, item2) -> { + ClientItem clientItem = (ClientItem)this.itemInfos.get(item2); + if (clientItem == null) { + throw new IllegalStateException("Missing donor: " + item2 + " -> " + item); + } else { + this.register(item, clientItem); + } + }); + List list = BuiltInRegistries.ITEM + .listElements() + .filter(reference -> !this.itemInfos.containsKey(reference.value())) + .map(reference -> reference.key().location()) + .toList(); + if (!list.isEmpty()) { + throw new IllegalStateException("Missing item model definitions for: " + list); + } + } + + public CompletableFuture save(CachedOutput output, PackOutput.PathProvider pathProvider) { + return DataProvider.saveAll(output, ClientItem.CODEC, item -> pathProvider.json(item.builtInRegistryHolder().key().location()), this.itemInfos); + } + } + + @Environment(EnvType.CLIENT) + static class SimpleModelCollector implements BiConsumer { + private final Map models = new HashMap(); + + public void accept(ResourceLocation resourceLocation, ModelInstance modelInstance) { + Supplier supplier = (Supplier)this.models.put(resourceLocation, modelInstance); + if (supplier != null) { + throw new IllegalStateException("Duplicate model definition for " + resourceLocation); + } + } + + public CompletableFuture save(CachedOutput output, PackOutput.PathProvider pathProvider) { + return ModelProvider.saveAll(output, pathProvider::json, this.models); + } + } +} diff --git a/net/minecraft/client/data/models/blockstates/BlockStateGenerator.java b/net/minecraft/client/data/models/blockstates/BlockStateGenerator.java new file mode 100644 index 00000000..6f18d1f0 --- /dev/null +++ b/net/minecraft/client/data/models/blockstates/BlockStateGenerator.java @@ -0,0 +1,12 @@ +package net.minecraft.client.data.models.blockstates; + +import com.google.gson.JsonElement; +import java.util.function.Supplier; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.world.level.block.Block; + +@Environment(EnvType.CLIENT) +public interface BlockStateGenerator extends Supplier { + Block getBlock(); +} diff --git a/net/minecraft/data/models/blockstates/Condition.java b/net/minecraft/client/data/models/blockstates/Condition.java similarity index 82% rename from net/minecraft/data/models/blockstates/Condition.java rename to net/minecraft/client/data/models/blockstates/Condition.java index 14a02759..d2b8a890 100644 --- a/net/minecraft/data/models/blockstates/Condition.java +++ b/net/minecraft/client/data/models/blockstates/Condition.java @@ -1,4 +1,4 @@ -package net.minecraft.data.models.blockstates; +package net.minecraft.client.data.models.blockstates; import com.google.common.collect.Maps; import com.google.gson.JsonArray; @@ -10,9 +10,12 @@ import java.util.Map; import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.Property; +@Environment(EnvType.CLIENT) public interface Condition extends Supplier { void validate(StateDefinition stateDefinition); @@ -28,6 +31,7 @@ public interface Condition extends Supplier { return new Condition.CompositeCondition(Condition.Operation.OR, Arrays.asList(conditions)); } + @Environment(EnvType.CLIENT) public static class CompositeCondition implements Condition { private final Condition.Operation operation; private final List subconditions; @@ -51,6 +55,7 @@ public interface Condition extends Supplier { } } + @Environment(EnvType.CLIENT) public static enum Operation { AND("AND"), OR("OR"); @@ -62,15 +67,16 @@ public interface Condition extends Supplier { } } + @Environment(EnvType.CLIENT) public static class TerminalCondition implements Condition { private final Map, String> terms = Maps., String>newHashMap(); - private static > String joinValues(Property property, Stream valueStream) { - return (String)valueStream.map(property::getName).collect(Collectors.joining("|")); + private static > String joinValues(Property property, Stream values) { + return (String)values.map(property::getName).collect(Collectors.joining("|")); } - private static > String getTerm(Property property, T firstValue, T[] additionalValues) { - return joinValues(property, Stream.concat(Stream.of(firstValue), Stream.of(additionalValues))); + private static > String getTerm(Property property, T startValue, T[] otherValues) { + return joinValues(property, Stream.concat(Stream.of(startValue), Stream.of(otherValues))); } private > void putValue(Property property, String value) { @@ -86,8 +92,8 @@ public interface Condition extends Supplier { } @SafeVarargs - public final > Condition.TerminalCondition term(Property property, T firstValue, T... additionalValues) { - this.putValue(property, getTerm(property, firstValue, additionalValues)); + public final > Condition.TerminalCondition term(Property property, T startValue, T... otherValues) { + this.putValue(property, getTerm(property, startValue, otherValues)); return this; } @@ -97,8 +103,8 @@ public interface Condition extends Supplier { } @SafeVarargs - public final > Condition.TerminalCondition negatedTerm(Property property, T firstValue, T... additionalValues) { - this.putValue(property, "!" + getTerm(property, firstValue, additionalValues)); + public final > Condition.TerminalCondition negatedTerm(Property property, T startValue, T... otherValues) { + this.putValue(property, "!" + getTerm(property, startValue, otherValues)); return this; } diff --git a/net/minecraft/data/models/blockstates/MultiPartGenerator.java b/net/minecraft/client/data/models/blockstates/MultiPartGenerator.java similarity index 88% rename from net/minecraft/data/models/blockstates/MultiPartGenerator.java rename to net/minecraft/client/data/models/blockstates/MultiPartGenerator.java index f49889bc..83055641 100644 --- a/net/minecraft/data/models/blockstates/MultiPartGenerator.java +++ b/net/minecraft/client/data/models/blockstates/MultiPartGenerator.java @@ -1,4 +1,4 @@ -package net.minecraft.data.models.blockstates; +package net.minecraft.client.data.models.blockstates; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -7,10 +7,13 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.List; import java.util.function.Supplier; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; +@Environment(EnvType.CLIENT) public class MultiPartGenerator implements BlockStateGenerator { private final Block block; private final List parts = Lists.newArrayList(); @@ -60,6 +63,7 @@ public class MultiPartGenerator implements BlockStateGenerator { return jsonObject; } + @Environment(EnvType.CLIENT) static class ConditionalEntry extends MultiPartGenerator.Entry { private final Condition condition; @@ -74,11 +78,12 @@ public class MultiPartGenerator implements BlockStateGenerator { } @Override - public void decorate(JsonObject jsonObject) { - jsonObject.add("when", (JsonElement)this.condition.get()); + public void decorate(JsonObject json) { + json.add("when", (JsonElement)this.condition.get()); } } + @Environment(EnvType.CLIENT) static class Entry implements Supplier { private final List variants; @@ -89,7 +94,7 @@ public class MultiPartGenerator implements BlockStateGenerator { public void validate(StateDefinition stateDefinition) { } - public void decorate(JsonObject jsonObject) { + public void decorate(JsonObject json) { } public JsonElement get() { diff --git a/net/minecraft/data/models/blockstates/MultiVariantGenerator.java b/net/minecraft/client/data/models/blockstates/MultiVariantGenerator.java similarity index 90% rename from net/minecraft/data/models/blockstates/MultiVariantGenerator.java rename to net/minecraft/client/data/models/blockstates/MultiVariantGenerator.java index c8bdac8e..13775bc7 100644 --- a/net/minecraft/data/models/blockstates/MultiVariantGenerator.java +++ b/net/minecraft/client/data/models/blockstates/MultiVariantGenerator.java @@ -1,4 +1,4 @@ -package net.minecraft.data.models.blockstates; +package net.minecraft.client.data.models.blockstates; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -12,10 +12,13 @@ import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.stream.Stream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.Util; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.Property; +@Environment(EnvType.CLIENT) public class MultiVariantGenerator implements BlockStateGenerator { private final Block block; private final List baseVariants; @@ -58,9 +61,9 @@ public class MultiVariantGenerator implements BlockStateGenerator { return jsonObject; } - private static List mergeVariants(List variants1, List variants2) { + private static List mergeVariants(List first, List second) { Builder builder = ImmutableList.builder(); - variants1.forEach(variant -> variants2.forEach(variant2 -> builder.add(Variant.merge(variant, variant2)))); + first.forEach(variant -> second.forEach(variant2 -> builder.add(Variant.merge(variant, variant2)))); return builder.build(); } diff --git a/net/minecraft/client/data/models/blockstates/PropertyDispatch.java b/net/minecraft/client/data/models/blockstates/PropertyDispatch.java new file mode 100644 index 00000000..4a551f2a --- /dev/null +++ b/net/minecraft/client/data/models/blockstates/PropertyDispatch.java @@ -0,0 +1,419 @@ +package net.minecraft.client.data.models.blockstates; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.world.level.block.state.properties.Property; + +@Environment(EnvType.CLIENT) +public abstract class PropertyDispatch { + private final Map> values = Maps.>newHashMap(); + + protected void putValue(Selector selector, List variants) { + List list = (List)this.values.put(selector, variants); + if (list != null) { + throw new IllegalStateException("Value " + selector + " is already defined"); + } + } + + Map> getEntries() { + this.verifyComplete(); + return ImmutableMap.copyOf(this.values); + } + + private void verifyComplete() { + List> list = this.getDefinedProperties(); + Stream stream = Stream.of(Selector.empty()); + + for (Property property : list) { + stream = stream.flatMap(selector -> property.getAllValues().map(selector::extend)); + } + + List list2 = (List)stream.filter(selector -> !this.values.containsKey(selector)).collect(Collectors.toList()); + if (!list2.isEmpty()) { + throw new IllegalStateException("Missing definition for properties: " + list2); + } + } + + abstract List> getDefinedProperties(); + + public static > PropertyDispatch.C1 property(Property property1) { + return new PropertyDispatch.C1<>(property1); + } + + public static , T2 extends Comparable> PropertyDispatch.C2 properties(Property property1, Property property2) { + return new PropertyDispatch.C2<>(property1, property2); + } + + public static , T2 extends Comparable, T3 extends Comparable> PropertyDispatch.C3 properties( + Property property1, Property property2, Property property3 + ) { + return new PropertyDispatch.C3<>(property1, property2, property3); + } + + public static , T2 extends Comparable, T3 extends Comparable, T4 extends Comparable> PropertyDispatch.C4 properties( + Property property1, Property property2, Property property3, Property property4 + ) { + return new PropertyDispatch.C4<>(property1, property2, property3, property4); + } + + public static , T2 extends Comparable, T3 extends Comparable, T4 extends Comparable, T5 extends Comparable> PropertyDispatch.C5 properties( + Property property1, Property property2, Property property3, Property property4, Property property5 + ) { + return new PropertyDispatch.C5<>(property1, property2, property3, property4, property5); + } + + @Environment(EnvType.CLIENT) + public static class C1> extends PropertyDispatch { + private final Property property1; + + C1(Property property1) { + this.property1 = property1; + } + + @Override + public List> getDefinedProperties() { + return ImmutableList.of(this.property1); + } + + public PropertyDispatch.C1 select(T1 value1, List variants) { + Selector selector = Selector.of(this.property1.value(value1)); + this.putValue(selector, variants); + return this; + } + + public PropertyDispatch.C1 select(T1 value1, Variant variant) { + return this.select(value1, Collections.singletonList(variant)); + } + + public PropertyDispatch generate(Function generator) { + this.property1.getPossibleValues().forEach(comparable -> this.select((T1)comparable, (Variant)generator.apply(comparable))); + return this; + } + + public PropertyDispatch generateList(Function> generator) { + this.property1.getPossibleValues().forEach(comparable -> this.select((T1)comparable, (List)generator.apply(comparable))); + return this; + } + } + + @Environment(EnvType.CLIENT) + public static class C2, T2 extends Comparable> extends PropertyDispatch { + private final Property property1; + private final Property property2; + + C2(Property property1, Property property2) { + this.property1 = property1; + this.property2 = property2; + } + + @Override + public List> getDefinedProperties() { + return ImmutableList.of(this.property1, this.property2); + } + + public PropertyDispatch.C2 select(T1 value1, T2 value2, List variants) { + Selector selector = Selector.of(this.property1.value(value1), this.property2.value(value2)); + this.putValue(selector, variants); + return this; + } + + public PropertyDispatch.C2 select(T1 value1, T2 value2, Variant variant) { + return this.select(value1, value2, Collections.singletonList(variant)); + } + + public PropertyDispatch generate(BiFunction generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach(comparable2 -> this.select((T1)comparable, (T2)comparable2, (Variant)generator.apply(comparable, comparable2))) + ); + return this; + } + + public PropertyDispatch generateList(BiFunction> generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach(comparable2 -> this.select((T1)comparable, (T2)comparable2, (List)generator.apply(comparable, comparable2))) + ); + return this; + } + } + + @Environment(EnvType.CLIENT) + public static class C3, T2 extends Comparable, T3 extends Comparable> extends PropertyDispatch { + private final Property property1; + private final Property property2; + private final Property property3; + + C3(Property property1, Property property2, Property property3) { + this.property1 = property1; + this.property2 = property2; + this.property3 = property3; + } + + @Override + public List> getDefinedProperties() { + return ImmutableList.of(this.property1, this.property2, this.property3); + } + + public PropertyDispatch.C3 select(T1 value1, T2 value2, T3 value3, List variants) { + Selector selector = Selector.of(this.property1.value(value1), this.property2.value(value2), this.property3.value(value3)); + this.putValue(selector, variants); + return this; + } + + public PropertyDispatch.C3 select(T1 value1, T2 value2, T3 value3, Variant variant) { + return this.select(value1, value2, value3, Collections.singletonList(variant)); + } + + public PropertyDispatch generate(PropertyDispatch.TriFunction generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach( + comparable2 -> this.property3 + .getPossibleValues() + .forEach( + comparable3 -> this.select((T1)comparable, (T2)comparable2, (T3)comparable3, generator.apply((T1)comparable, (T2)comparable2, (T3)comparable3)) + ) + ) + ); + return this; + } + + public PropertyDispatch generateList(PropertyDispatch.TriFunction> generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach( + comparable2 -> this.property3 + .getPossibleValues() + .forEach( + comparable3 -> this.select((T1)comparable, (T2)comparable2, (T3)comparable3, generator.apply((T1)comparable, (T2)comparable2, (T3)comparable3)) + ) + ) + ); + return this; + } + } + + @Environment(EnvType.CLIENT) + public static class C4, T2 extends Comparable, T3 extends Comparable, T4 extends Comparable> extends PropertyDispatch { + private final Property property1; + private final Property property2; + private final Property property3; + private final Property property4; + + C4(Property property1, Property property2, Property property3, Property property4) { + this.property1 = property1; + this.property2 = property2; + this.property3 = property3; + this.property4 = property4; + } + + @Override + public List> getDefinedProperties() { + return ImmutableList.of(this.property1, this.property2, this.property3, this.property4); + } + + public PropertyDispatch.C4 select(T1 value1, T2 value2, T3 value3, T4 value4, List variants) { + Selector selector = Selector.of(this.property1.value(value1), this.property2.value(value2), this.property3.value(value3), this.property4.value(value4)); + this.putValue(selector, variants); + return this; + } + + public PropertyDispatch.C4 select(T1 value1, T2 value2, T3 value3, T4 value4, Variant variant) { + return this.select(value1, value2, value3, value4, Collections.singletonList(variant)); + } + + public PropertyDispatch generate(PropertyDispatch.QuadFunction generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach( + comparable2 -> this.property3 + .getPossibleValues() + .forEach( + comparable3 -> this.property4 + .getPossibleValues() + .forEach( + comparable4 -> this.select( + (T1)comparable, + (T2)comparable2, + (T3)comparable3, + (T4)comparable4, + generator.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4) + ) + ) + ) + ) + ); + return this; + } + + public PropertyDispatch generateList(PropertyDispatch.QuadFunction> generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach( + comparable2 -> this.property3 + .getPossibleValues() + .forEach( + comparable3 -> this.property4 + .getPossibleValues() + .forEach( + comparable4 -> this.select( + (T1)comparable, + (T2)comparable2, + (T3)comparable3, + (T4)comparable4, + generator.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4) + ) + ) + ) + ) + ); + return this; + } + } + + @Environment(EnvType.CLIENT) + public static class C5, T2 extends Comparable, T3 extends Comparable, T4 extends Comparable, T5 extends Comparable> + extends PropertyDispatch { + private final Property property1; + private final Property property2; + private final Property property3; + private final Property property4; + private final Property property5; + + C5(Property property1, Property property2, Property property3, Property property4, Property property5) { + this.property1 = property1; + this.property2 = property2; + this.property3 = property3; + this.property4 = property4; + this.property5 = property5; + } + + @Override + public List> getDefinedProperties() { + return ImmutableList.of(this.property1, this.property2, this.property3, this.property4, this.property5); + } + + public PropertyDispatch.C5 select(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, List variants) { + Selector selector = Selector.of( + this.property1.value(value1), this.property2.value(value2), this.property3.value(value3), this.property4.value(value4), this.property5.value(value5) + ); + this.putValue(selector, variants); + return this; + } + + public PropertyDispatch.C5 select(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, Variant variant) { + return this.select(value1, value2, value3, value4, value5, Collections.singletonList(variant)); + } + + public PropertyDispatch generate(PropertyDispatch.PentaFunction generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach( + comparable2 -> this.property3 + .getPossibleValues() + .forEach( + comparable3 -> this.property4 + .getPossibleValues() + .forEach( + comparable4 -> this.property5 + .getPossibleValues() + .forEach( + comparable5 -> this.select( + (T1)comparable, + (T2)comparable2, + (T3)comparable3, + (T4)comparable4, + (T5)comparable5, + generator.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4, (T5)comparable5) + ) + ) + ) + ) + ) + ); + return this; + } + + public PropertyDispatch generateList(PropertyDispatch.PentaFunction> generator) { + this.property1 + .getPossibleValues() + .forEach( + comparable -> this.property2 + .getPossibleValues() + .forEach( + comparable2 -> this.property3 + .getPossibleValues() + .forEach( + comparable3 -> this.property4 + .getPossibleValues() + .forEach( + comparable4 -> this.property5 + .getPossibleValues() + .forEach( + comparable5 -> this.select( + (T1)comparable, + (T2)comparable2, + (T3)comparable3, + (T4)comparable4, + (T5)comparable5, + generator.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4, (T5)comparable5) + ) + ) + ) + ) + ) + ); + return this; + } + } + + @FunctionalInterface + @Environment(EnvType.CLIENT) + public interface PentaFunction { + R apply(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5); + } + + @FunctionalInterface + @Environment(EnvType.CLIENT) + public interface QuadFunction { + R apply(P1 p1, P2 p2, P3 p3, P4 p4); + } + + @FunctionalInterface + @Environment(EnvType.CLIENT) + public interface TriFunction { + R apply(P1 object, P2 object2, P3 object3); + } +} diff --git a/net/minecraft/client/data/models/blockstates/Selector.java b/net/minecraft/client/data/models/blockstates/Selector.java new file mode 100644 index 00000000..58d8010a --- /dev/null +++ b/net/minecraft/client/data/models/blockstates/Selector.java @@ -0,0 +1,52 @@ +package net.minecraft.client.data.models.blockstates; + +import com.google.common.collect.ImmutableList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.world.level.block.state.properties.Property.Value; + +@Environment(EnvType.CLIENT) +public final class Selector { + private static final Selector EMPTY = new Selector(ImmutableList.of()); + private static final Comparator> COMPARE_BY_NAME = Comparator.comparing(value -> value.property().getName()); + private final List> values; + + public Selector extend(Value value) { + return new Selector(ImmutableList.>builder().addAll(this.values).add(value).build()); + } + + public Selector extend(Selector selector) { + return new Selector(ImmutableList.>builder().addAll(this.values).addAll(selector.values).build()); + } + + private Selector(List> values) { + this.values = values; + } + + public static Selector empty() { + return EMPTY; + } + + public static Selector of(Value... values) { + return new Selector(ImmutableList.copyOf(values)); + } + + public boolean equals(Object object) { + return this == object || object instanceof Selector && this.values.equals(((Selector)object).values); + } + + public int hashCode() { + return this.values.hashCode(); + } + + public String getKey() { + return (String)this.values.stream().sorted(COMPARE_BY_NAME).map(Value::toString).collect(Collectors.joining(",")); + } + + public String toString() { + return this.getKey(); + } +} diff --git a/net/minecraft/client/data/models/blockstates/Variant.java b/net/minecraft/client/data/models/blockstates/Variant.java new file mode 100644 index 00000000..d25cd390 --- /dev/null +++ b/net/minecraft/client/data/models/blockstates/Variant.java @@ -0,0 +1,52 @@ +package net.minecraft.client.data.models.blockstates; + +import com.google.common.collect.Maps; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class Variant implements Supplier { + private final Map, VariantProperty.Value> values = Maps., VariantProperty.Value>newLinkedHashMap(); + + public Variant with(VariantProperty property, T value) { + VariantProperty.Value value2 = (VariantProperty.Value)this.values.put(property, property.withValue(value)); + if (value2 != null) { + throw new IllegalStateException("Replacing value of " + value2 + " with " + value); + } else { + return this; + } + } + + public static Variant variant() { + return new Variant(); + } + + public static Variant merge(Variant first, Variant second) { + Variant variant = new Variant(); + variant.values.putAll(first.values); + variant.values.putAll(second.values); + return variant; + } + + public JsonElement get() { + JsonObject jsonObject = new JsonObject(); + this.values.values().forEach(value -> value.addToVariant(jsonObject)); + return jsonObject; + } + + public static JsonElement convertList(List list) { + if (list.size() == 1) { + return ((Variant)list.get(0)).get(); + } else { + JsonArray jsonArray = new JsonArray(); + list.forEach(variant -> jsonArray.add(variant.get())); + return jsonArray; + } + } +} diff --git a/net/minecraft/data/models/blockstates/VariantProperties.java b/net/minecraft/client/data/models/blockstates/VariantProperties.java similarity index 84% rename from net/minecraft/data/models/blockstates/VariantProperties.java rename to net/minecraft/client/data/models/blockstates/VariantProperties.java index 2ee62012..68a61b4f 100644 --- a/net/minecraft/data/models/blockstates/VariantProperties.java +++ b/net/minecraft/client/data/models/blockstates/VariantProperties.java @@ -1,8 +1,11 @@ -package net.minecraft.data.models.blockstates; +package net.minecraft.client.data.models.blockstates; import com.google.gson.JsonPrimitive; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; +@Environment(EnvType.CLIENT) public class VariantProperties { public static final VariantProperty X_ROT = new VariantProperty<>("x", rotation -> new JsonPrimitive(rotation.value)); public static final VariantProperty Y_ROT = new VariantProperty<>("y", rotation -> new JsonPrimitive(rotation.value)); @@ -12,6 +15,7 @@ public class VariantProperties { public static final VariantProperty UV_LOCK = new VariantProperty<>("uvlock", JsonPrimitive::new); public static final VariantProperty WEIGHT = new VariantProperty<>("weight", JsonPrimitive::new); + @Environment(EnvType.CLIENT) public static enum Rotation { R0(0), R90(90), diff --git a/net/minecraft/client/data/models/blockstates/VariantProperty.java b/net/minecraft/client/data/models/blockstates/VariantProperty.java new file mode 100644 index 00000000..0fe3bbb7 --- /dev/null +++ b/net/minecraft/client/data/models/blockstates/VariantProperty.java @@ -0,0 +1,47 @@ +package net.minecraft.client.data.models.blockstates; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.function.Function; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class VariantProperty { + final String key; + final Function serializer; + + public VariantProperty(String key, Function serializer) { + this.key = key; + this.serializer = serializer; + } + + public VariantProperty.Value withValue(T value) { + return new VariantProperty.Value(value); + } + + public String toString() { + return this.key; + } + + @Environment(EnvType.CLIENT) + public class Value { + private final T value; + + public Value(final T value) { + this.value = value; + } + + public VariantProperty getKey() { + return VariantProperty.this; + } + + public void addToVariant(JsonObject json) { + json.add(VariantProperty.this.key, (JsonElement)VariantProperty.this.serializer.apply(this.value)); + } + + public String toString() { + return VariantProperty.this.key + "=" + this.value; + } + } +} diff --git a/net/minecraft/client/data/models/blockstates/package-info.java b/net/minecraft/client/data/models/blockstates/package-info.java new file mode 100644 index 00000000..6b37a233 --- /dev/null +++ b/net/minecraft/client/data/models/blockstates/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.data.models.blockstates; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/data/models/model/DelegatedModel.java b/net/minecraft/client/data/models/model/DelegatedModel.java new file mode 100644 index 00000000..9cde96a7 --- /dev/null +++ b/net/minecraft/client/data/models/model/DelegatedModel.java @@ -0,0 +1,22 @@ +package net.minecraft.client.data.models.model; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; + +@Environment(EnvType.CLIENT) +public class DelegatedModel implements ModelInstance { + private final ResourceLocation parent; + + public DelegatedModel(ResourceLocation parent) { + this.parent = parent; + } + + public JsonElement get() { + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("parent", this.parent.toString()); + return jsonObject; + } +} diff --git a/net/minecraft/client/data/models/model/ItemModelUtils.java b/net/minecraft/client/data/models/model/ItemModelUtils.java new file mode 100644 index 00000000..7abed64a --- /dev/null +++ b/net/minecraft/client/data/models/model/ItemModelUtils.java @@ -0,0 +1,135 @@ +package net.minecraft.client.data.models.model; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Map.Entry; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.color.item.Constant; +import net.minecraft.client.color.item.ItemTintSource; +import net.minecraft.client.renderer.item.BlockModelWrapper; +import net.minecraft.client.renderer.item.CompositeModel; +import net.minecraft.client.renderer.item.ConditionalItemModel; +import net.minecraft.client.renderer.item.ItemModel; +import net.minecraft.client.renderer.item.RangeSelectItemModel; +import net.minecraft.client.renderer.item.SelectItemModel; +import net.minecraft.client.renderer.item.SpecialModelWrapper; +import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperty; +import net.minecraft.client.renderer.item.properties.conditional.HasComponent; +import net.minecraft.client.renderer.item.properties.conditional.IsUsingItem; +import net.minecraft.client.renderer.item.properties.numeric.RangeSelectItemModelProperty; +import net.minecraft.client.renderer.item.properties.select.ContextDimension; +import net.minecraft.client.renderer.item.properties.select.ItemBlockState; +import net.minecraft.client.renderer.item.properties.select.LocalTime; +import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperty; +import net.minecraft.client.renderer.special.SpecialModelRenderer; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.properties.Property; + +@Environment(EnvType.CLIENT) +public class ItemModelUtils { + public static ItemModel.Unbaked plainModel(ResourceLocation model) { + return new BlockModelWrapper.Unbaked(model, List.of()); + } + + public static ItemModel.Unbaked tintedModel(ResourceLocation model, ItemTintSource... tintSources) { + return new BlockModelWrapper.Unbaked(model, List.of(tintSources)); + } + + public static ItemTintSource constantTint(int value) { + return new Constant(value); + } + + public static ItemModel.Unbaked composite(ItemModel.Unbaked... models) { + return new CompositeModel.Unbaked(List.of(models)); + } + + public static ItemModel.Unbaked specialModel(ResourceLocation base, SpecialModelRenderer.Unbaked specialModel) { + return new SpecialModelWrapper.Unbaked(base, specialModel); + } + + public static RangeSelectItemModel.Entry override(ItemModel.Unbaked threshold, float model) { + return new RangeSelectItemModel.Entry(model, threshold); + } + + public static ItemModel.Unbaked rangeSelect(RangeSelectItemModelProperty property, ItemModel.Unbaked fallback, RangeSelectItemModel.Entry... entries) { + return new RangeSelectItemModel.Unbaked(property, 1.0F, List.of(entries), Optional.of(fallback)); + } + + public static ItemModel.Unbaked rangeSelect( + RangeSelectItemModelProperty property, float scale, ItemModel.Unbaked fallback, RangeSelectItemModel.Entry... entries + ) { + return new RangeSelectItemModel.Unbaked(property, scale, List.of(entries), Optional.of(fallback)); + } + + public static ItemModel.Unbaked rangeSelect(RangeSelectItemModelProperty property, ItemModel.Unbaked fallback, List entries) { + return new RangeSelectItemModel.Unbaked(property, 1.0F, entries, Optional.of(fallback)); + } + + public static ItemModel.Unbaked rangeSelect(RangeSelectItemModelProperty property, List entries) { + return new RangeSelectItemModel.Unbaked(property, 1.0F, entries, Optional.empty()); + } + + public static ItemModel.Unbaked rangeSelect(RangeSelectItemModelProperty property, float scale, List entries) { + return new RangeSelectItemModel.Unbaked(property, scale, entries, Optional.empty()); + } + + public static ItemModel.Unbaked conditional(ConditionalItemModelProperty property, ItemModel.Unbaked onTrue, ItemModel.Unbaked onFalse) { + return new ConditionalItemModel.Unbaked(property, onTrue, onFalse); + } + + public static SelectItemModel.SwitchCase when(T value, ItemModel.Unbaked model) { + return new SelectItemModel.SwitchCase<>(List.of(value), model); + } + + public static SelectItemModel.SwitchCase when(List values, ItemModel.Unbaked model) { + return new SelectItemModel.SwitchCase<>(values, model); + } + + @SafeVarargs + public static ItemModel.Unbaked select(SelectItemModelProperty property, ItemModel.Unbaked fallback, SelectItemModel.SwitchCase... cases) { + return select(property, fallback, List.of(cases)); + } + + public static ItemModel.Unbaked select(SelectItemModelProperty property, ItemModel.Unbaked fallback, List> cases) { + return new SelectItemModel.Unbaked(new SelectItemModel.UnbakedSwitch<>(property, cases), Optional.of(fallback)); + } + + @SafeVarargs + public static ItemModel.Unbaked select(SelectItemModelProperty property, SelectItemModel.SwitchCase... cases) { + return select(property, List.of(cases)); + } + + public static ItemModel.Unbaked select(SelectItemModelProperty property, List> cases) { + return new SelectItemModel.Unbaked(new SelectItemModel.UnbakedSwitch<>(property, cases), Optional.empty()); + } + + public static ConditionalItemModelProperty isUsingItem() { + return new IsUsingItem(); + } + + public static ConditionalItemModelProperty hasComponent(DataComponentType componentType) { + return new HasComponent(componentType, false); + } + + public static ItemModel.Unbaked inOverworld(ItemModel.Unbaked inOverworldModel, ItemModel.Unbaked notInOverworldModel) { + return select(new ContextDimension(), notInOverworldModel, when(Level.OVERWORLD, inOverworldModel)); + } + + public static > ItemModel.Unbaked selectBlockItemProperty( + Property property, ItemModel.Unbaked fallback, Map modelMap + ) { + List> list = modelMap.entrySet().stream().sorted(Entry.comparingByKey()).map(entry -> { + String string = property.getName((T)entry.getKey()); + return new SelectItemModel.SwitchCase(List.of(string), (ItemModel.Unbaked)entry.getValue()); + }).toList(); + return select(new ItemBlockState(property.getName()), fallback, list); + } + + public static ItemModel.Unbaked isXmas(ItemModel.Unbaked xmasModel, ItemModel.Unbaked normalModel) { + return select(LocalTime.create("MM-dd", "", Optional.empty()), normalModel, List.of(when(List.of("12-24", "12-25", "12-26"), xmasModel))); + } +} diff --git a/net/minecraft/client/data/models/model/ModelInstance.java b/net/minecraft/client/data/models/model/ModelInstance.java new file mode 100644 index 00000000..730fbfbf --- /dev/null +++ b/net/minecraft/client/data/models/model/ModelInstance.java @@ -0,0 +1,10 @@ +package net.minecraft.client.data.models.model; + +import com.google.gson.JsonElement; +import java.util.function.Supplier; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public interface ModelInstance extends Supplier { +} diff --git a/net/minecraft/data/models/model/ModelLocationUtils.java b/net/minecraft/client/data/models/model/ModelLocationUtils.java similarity index 75% rename from net/minecraft/data/models/model/ModelLocationUtils.java rename to net/minecraft/client/data/models/model/ModelLocationUtils.java index fa216f2a..a00c9276 100644 --- a/net/minecraft/data/models/model/ModelLocationUtils.java +++ b/net/minecraft/client/data/models/model/ModelLocationUtils.java @@ -1,24 +1,27 @@ -package net.minecraft.data.models.model; +package net.minecraft.client.data.models.model; import java.util.function.UnaryOperator; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +@Environment(EnvType.CLIENT) public class ModelLocationUtils { @Deprecated - public static ResourceLocation decorateBlockModelLocation(String blockModelLocation) { - return ResourceLocation.withDefaultNamespace("block/" + blockModelLocation); + public static ResourceLocation decorateBlockModelLocation(String name) { + return ResourceLocation.withDefaultNamespace("block/" + name); } - public static ResourceLocation decorateItemModelLocation(String itemModelLocation) { - return ResourceLocation.withDefaultNamespace("item/" + itemModelLocation); + public static ResourceLocation decorateItemModelLocation(String name) { + return ResourceLocation.withDefaultNamespace("item/" + name); } - public static ResourceLocation getModelLocation(Block block, String modelLocationSuffix) { + public static ResourceLocation getModelLocation(Block block, String suffix) { ResourceLocation resourceLocation = BuiltInRegistries.BLOCK.getKey(block); - return resourceLocation.withPath((UnaryOperator)(string2 -> "block/" + string2 + modelLocationSuffix)); + return resourceLocation.withPath((UnaryOperator)(string2 -> "block/" + string2 + suffix)); } public static ResourceLocation getModelLocation(Block block) { @@ -31,8 +34,8 @@ public class ModelLocationUtils { return resourceLocation.withPrefix("item/"); } - public static ResourceLocation getModelLocation(Item item, String modelLocationSuffix) { + public static ResourceLocation getModelLocation(Item item, String suffix) { ResourceLocation resourceLocation = BuiltInRegistries.ITEM.getKey(item); - return resourceLocation.withPath((UnaryOperator)(string2 -> "item/" + string2 + modelLocationSuffix)); + return resourceLocation.withPath((UnaryOperator)(string2 -> "item/" + string2 + suffix)); } } diff --git a/net/minecraft/client/data/models/model/ModelTemplate.java b/net/minecraft/client/data/models/model/ModelTemplate.java new file mode 100644 index 00000000..5e28d3b6 --- /dev/null +++ b/net/minecraft/client/data/models/model/ModelTemplate.java @@ -0,0 +1,70 @@ +package net.minecraft.client.data.models.model; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Streams; +import com.google.gson.JsonObject; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.function.BiConsumer; +import java.util.function.Function; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +@Environment(EnvType.CLIENT) +public class ModelTemplate { + private final Optional model; + private final Set requiredSlots; + private final Optional suffix; + + public ModelTemplate(Optional model, Optional suffix, TextureSlot... requiredSlots) { + this.model = model; + this.suffix = suffix; + this.requiredSlots = ImmutableSet.copyOf(requiredSlots); + } + + public ResourceLocation getDefaultModelLocation(Block block) { + return ModelLocationUtils.getModelLocation(block, (String)this.suffix.orElse("")); + } + + public ResourceLocation create(Block block, TextureMapping textureMapping, BiConsumer output) { + return this.create(ModelLocationUtils.getModelLocation(block, (String)this.suffix.orElse("")), textureMapping, output); + } + + public ResourceLocation createWithSuffix(Block block, String suffix, TextureMapping textureMapping, BiConsumer output) { + return this.create(ModelLocationUtils.getModelLocation(block, suffix + (String)this.suffix.orElse("")), textureMapping, output); + } + + public ResourceLocation createWithOverride(Block block, String suffix, TextureMapping textureMapping, BiConsumer output) { + return this.create(ModelLocationUtils.getModelLocation(block, suffix), textureMapping, output); + } + + public ResourceLocation create(Item item, TextureMapping textureMapping, BiConsumer output) { + return this.create(ModelLocationUtils.getModelLocation(item, (String)this.suffix.orElse("")), textureMapping, output); + } + + public ResourceLocation create(ResourceLocation modelLocation, TextureMapping textureMapping, BiConsumer output) { + Map map = this.createMap(textureMapping); + output.accept(modelLocation, (ModelInstance)() -> { + JsonObject jsonObject = new JsonObject(); + this.model.ifPresent(resourceLocation -> jsonObject.addProperty("parent", resourceLocation.toString())); + if (!map.isEmpty()) { + JsonObject jsonObject2 = new JsonObject(); + map.forEach((textureSlot, resourceLocation) -> jsonObject2.addProperty(textureSlot.getId(), resourceLocation.toString())); + jsonObject.add("textures", jsonObject2); + } + + return jsonObject; + }); + return modelLocation; + } + + private Map createMap(TextureMapping textureMapping) { + return (Map)Streams.concat(this.requiredSlots.stream(), textureMapping.getForced()) + .collect(ImmutableMap.toImmutableMap(Function.identity(), textureMapping::get)); + } +} diff --git a/net/minecraft/data/models/model/ModelTemplates.java b/net/minecraft/client/data/models/model/ModelTemplates.java similarity index 91% rename from net/minecraft/data/models/model/ModelTemplates.java rename to net/minecraft/client/data/models/model/ModelTemplates.java index ed89cb12..c7abe57a 100644 --- a/net/minecraft/data/models/model/ModelTemplates.java +++ b/net/minecraft/client/data/models/model/ModelTemplates.java @@ -1,9 +1,12 @@ -package net.minecraft.data.models.model; +package net.minecraft.client.data.models.model; import java.util.Optional; import java.util.stream.IntStream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; +@Environment(EnvType.CLIENT) public class ModelTemplates { public static final ModelTemplate CUBE = create( "cube", TextureSlot.PARTICLE, TextureSlot.NORTH, TextureSlot.SOUTH, TextureSlot.EAST, TextureSlot.WEST, TextureSlot.UP, TextureSlot.DOWN @@ -81,8 +84,10 @@ public class ModelTemplates { public static final ModelTemplate POINTED_DRIPSTONE = create("pointed_dripstone", TextureSlot.CROSS); public static final ModelTemplate CROSS = create("cross", TextureSlot.CROSS); public static final ModelTemplate TINTED_CROSS = create("tinted_cross", TextureSlot.CROSS); + public static final ModelTemplate CROSS_EMISSIVE = create("cross_emissive", TextureSlot.CROSS, TextureSlot.CROSS_EMISSIVE); public static final ModelTemplate FLOWER_POT_CROSS = create("flower_pot_cross", TextureSlot.PLANT); public static final ModelTemplate TINTED_FLOWER_POT_CROSS = create("tinted_flower_pot_cross", TextureSlot.PLANT); + public static final ModelTemplate FLOWER_POT_CROSS_EMISSIVE = create("flower_pot_cross_emissive", TextureSlot.PLANT, TextureSlot.CROSS_EMISSIVE); public static final ModelTemplate RAIL_FLAT = create("rail_flat", TextureSlot.RAIL); public static final ModelTemplate RAIL_CURVED = create("rail_curved", "_corner", TextureSlot.RAIL); public static final ModelTemplate RAIL_RAISED_NE = create("template_rail_raised_ne", "_raised_ne", TextureSlot.RAIL); @@ -171,8 +176,11 @@ public class ModelTemplates { public static final ModelTemplate THREE_LAYERED_ITEM = createItem("generated", TextureSlot.LAYER0, TextureSlot.LAYER1, TextureSlot.LAYER2); public static final ModelTemplate SHULKER_BOX_INVENTORY = createItem("template_shulker_box", TextureSlot.PARTICLE); public static final ModelTemplate BED_INVENTORY = createItem("template_bed", TextureSlot.PARTICLE); - public static final ModelTemplate BANNER_INVENTORY = createItem("template_banner"); - public static final ModelTemplate SKULL_INVENTORY = createItem("template_skull"); + public static final ModelTemplate CHEST_INVENTORY = createItem("template_chest", TextureSlot.PARTICLE); + public static final ModelTemplate BUNDLE_OPEN_FRONT_INVENTORY = createItem("template_bundle_open_front", "_open_front", TextureSlot.LAYER0); + public static final ModelTemplate BUNDLE_OPEN_BACK_INVENTORY = createItem("template_bundle_open_back", "_open_back", TextureSlot.LAYER0); + public static final ModelTemplate BOW = createItem("bow", TextureSlot.LAYER0); + public static final ModelTemplate CROSSBOW = createItem("crossbow", TextureSlot.LAYER0); public static final ModelTemplate CANDLE = create("template_candle", TextureSlot.ALL, TextureSlot.PARTICLE); public static final ModelTemplate TWO_CANDLES = create("template_two_candles", TextureSlot.ALL, TextureSlot.PARTICLE); public static final ModelTemplate THREE_CANDLES = create("template_three_candles", TextureSlot.ALL, TextureSlot.PARTICLE); @@ -190,15 +198,19 @@ public class ModelTemplates { return new ModelTemplate(Optional.empty(), Optional.empty(), requiredSlots); } - private static ModelTemplate create(String blockModelLocation, TextureSlot... requiredSlots) { - return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("block/" + blockModelLocation)), Optional.empty(), requiredSlots); + private static ModelTemplate create(String name, TextureSlot... requiredSlots) { + return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("block/" + name)), Optional.empty(), requiredSlots); } - private static ModelTemplate createItem(String itemModelLocation, TextureSlot... requiredSlots) { - return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("item/" + itemModelLocation)), Optional.empty(), requiredSlots); + private static ModelTemplate createItem(String name, TextureSlot... requiredSlots) { + return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("item/" + name)), Optional.empty(), requiredSlots); } - private static ModelTemplate create(String blockModelLocation, String suffix, TextureSlot... requiredSlots) { - return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("block/" + blockModelLocation)), Optional.of(suffix), requiredSlots); + private static ModelTemplate createItem(String name, String suffix, TextureSlot... requiredSlots) { + return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("item/" + name)), Optional.of(suffix), requiredSlots); + } + + private static ModelTemplate create(String name, String suffix, TextureSlot... requiredSlots) { + return new ModelTemplate(Optional.of(ResourceLocation.withDefaultNamespace("block/" + name)), Optional.of(suffix), requiredSlots); } } diff --git a/net/minecraft/client/data/models/model/TextureMapping.java b/net/minecraft/client/data/models/model/TextureMapping.java new file mode 100644 index 00000000..ec345330 --- /dev/null +++ b/net/minecraft/client/data/models/model/TextureMapping.java @@ -0,0 +1,416 @@ +package net.minecraft.client.data.models.model; + +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.Map; +import java.util.Set; +import java.util.function.UnaryOperator; +import java.util.stream.Stream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +@Environment(EnvType.CLIENT) +public class TextureMapping { + private final Map slots = Maps.newHashMap(); + private final Set forcedSlots = Sets.newHashSet(); + + public TextureMapping put(TextureSlot slot, ResourceLocation texture) { + this.slots.put(slot, texture); + return this; + } + + public TextureMapping putForced(TextureSlot slot, ResourceLocation texture) { + this.slots.put(slot, texture); + this.forcedSlots.add(slot); + return this; + } + + public Stream getForced() { + return this.forcedSlots.stream(); + } + + public TextureMapping copySlot(TextureSlot source, TextureSlot destination) { + this.slots.put(destination, (ResourceLocation)this.slots.get(source)); + return this; + } + + public TextureMapping copyForced(TextureSlot source, TextureSlot destination) { + this.slots.put(destination, (ResourceLocation)this.slots.get(source)); + this.forcedSlots.add(destination); + return this; + } + + public ResourceLocation get(TextureSlot slot) { + for (TextureSlot textureSlot = slot; textureSlot != null; textureSlot = textureSlot.getParent()) { + ResourceLocation resourceLocation = (ResourceLocation)this.slots.get(textureSlot); + if (resourceLocation != null) { + return resourceLocation; + } + } + + throw new IllegalStateException("Can't find texture for slot " + slot); + } + + public TextureMapping copyAndUpdate(TextureSlot slot, ResourceLocation texture) { + TextureMapping textureMapping = new TextureMapping(); + textureMapping.slots.putAll(this.slots); + textureMapping.forcedSlots.addAll(this.forcedSlots); + textureMapping.put(slot, texture); + return textureMapping; + } + + public static TextureMapping cube(Block block) { + ResourceLocation resourceLocation = getBlockTexture(block); + return cube(resourceLocation); + } + + public static TextureMapping defaultTexture(Block block) { + ResourceLocation resourceLocation = getBlockTexture(block); + return defaultTexture(resourceLocation); + } + + public static TextureMapping defaultTexture(ResourceLocation texture) { + return new TextureMapping().put(TextureSlot.TEXTURE, texture); + } + + public static TextureMapping cube(ResourceLocation texture) { + return new TextureMapping().put(TextureSlot.ALL, texture); + } + + public static TextureMapping cross(Block block) { + return singleSlot(TextureSlot.CROSS, getBlockTexture(block)); + } + + public static TextureMapping side(Block block) { + return singleSlot(TextureSlot.SIDE, getBlockTexture(block)); + } + + public static TextureMapping crossEmissive(Block block) { + return new TextureMapping().put(TextureSlot.CROSS, getBlockTexture(block)).put(TextureSlot.CROSS_EMISSIVE, getBlockTexture(block, "_emissive")); + } + + public static TextureMapping cross(ResourceLocation texture) { + return singleSlot(TextureSlot.CROSS, texture); + } + + public static TextureMapping plant(Block block) { + return singleSlot(TextureSlot.PLANT, getBlockTexture(block)); + } + + public static TextureMapping plantEmissive(Block block) { + return new TextureMapping().put(TextureSlot.PLANT, getBlockTexture(block)).put(TextureSlot.CROSS_EMISSIVE, getBlockTexture(block, "_emissive")); + } + + public static TextureMapping plant(ResourceLocation texture) { + return singleSlot(TextureSlot.PLANT, texture); + } + + public static TextureMapping rail(Block block) { + return singleSlot(TextureSlot.RAIL, getBlockTexture(block)); + } + + public static TextureMapping rail(ResourceLocation texture) { + return singleSlot(TextureSlot.RAIL, texture); + } + + public static TextureMapping wool(Block block) { + return singleSlot(TextureSlot.WOOL, getBlockTexture(block)); + } + + public static TextureMapping flowerbed(Block block) { + return new TextureMapping().put(TextureSlot.FLOWERBED, getBlockTexture(block)).put(TextureSlot.STEM, getBlockTexture(block, "_stem")); + } + + public static TextureMapping wool(ResourceLocation texture) { + return singleSlot(TextureSlot.WOOL, texture); + } + + public static TextureMapping stem(Block block) { + return singleSlot(TextureSlot.STEM, getBlockTexture(block)); + } + + public static TextureMapping attachedStem(Block stemBlock, Block upperStemBlock) { + return new TextureMapping().put(TextureSlot.STEM, getBlockTexture(stemBlock)).put(TextureSlot.UPPER_STEM, getBlockTexture(upperStemBlock)); + } + + public static TextureMapping pattern(Block block) { + return singleSlot(TextureSlot.PATTERN, getBlockTexture(block)); + } + + public static TextureMapping fan(Block block) { + return singleSlot(TextureSlot.FAN, getBlockTexture(block)); + } + + public static TextureMapping crop(ResourceLocation block) { + return singleSlot(TextureSlot.CROP, block); + } + + public static TextureMapping pane(Block block, Block edgeBlock) { + return new TextureMapping().put(TextureSlot.PANE, getBlockTexture(block)).put(TextureSlot.EDGE, getBlockTexture(edgeBlock, "_top")); + } + + public static TextureMapping singleSlot(TextureSlot slot, ResourceLocation texture) { + return new TextureMapping().put(slot, texture); + } + + public static TextureMapping column(Block block) { + return new TextureMapping().put(TextureSlot.SIDE, getBlockTexture(block, "_side")).put(TextureSlot.END, getBlockTexture(block, "_top")); + } + + public static TextureMapping cubeTop(Block block) { + return new TextureMapping().put(TextureSlot.SIDE, getBlockTexture(block, "_side")).put(TextureSlot.TOP, getBlockTexture(block, "_top")); + } + + public static TextureMapping pottedAzalea(Block block) { + return new TextureMapping() + .put(TextureSlot.PLANT, getBlockTexture(block, "_plant")) + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.TOP, getBlockTexture(block, "_top")); + } + + public static TextureMapping logColumn(Block block) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block)) + .put(TextureSlot.END, getBlockTexture(block, "_top")) + .put(TextureSlot.PARTICLE, getBlockTexture(block)); + } + + public static TextureMapping column(ResourceLocation side, ResourceLocation end) { + return new TextureMapping().put(TextureSlot.SIDE, side).put(TextureSlot.END, end); + } + + public static TextureMapping fence(Block block) { + return new TextureMapping() + .put(TextureSlot.TEXTURE, getBlockTexture(block)) + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.TOP, getBlockTexture(block, "_top")); + } + + public static TextureMapping customParticle(Block block) { + return new TextureMapping().put(TextureSlot.TEXTURE, getBlockTexture(block)).put(TextureSlot.PARTICLE, getBlockTexture(block, "_particle")); + } + + public static TextureMapping cubeBottomTop(Block block) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.TOP, getBlockTexture(block, "_top")) + .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); + } + + public static TextureMapping cubeBottomTopWithWall(Block block) { + ResourceLocation resourceLocation = getBlockTexture(block); + return new TextureMapping() + .put(TextureSlot.WALL, resourceLocation) + .put(TextureSlot.SIDE, resourceLocation) + .put(TextureSlot.TOP, getBlockTexture(block, "_top")) + .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); + } + + public static TextureMapping columnWithWall(Block block) { + ResourceLocation resourceLocation = getBlockTexture(block); + return new TextureMapping() + .put(TextureSlot.TEXTURE, resourceLocation) + .put(TextureSlot.WALL, resourceLocation) + .put(TextureSlot.SIDE, resourceLocation) + .put(TextureSlot.END, getBlockTexture(block, "_top")); + } + + public static TextureMapping door(ResourceLocation top, ResourceLocation bottom) { + return new TextureMapping().put(TextureSlot.TOP, top).put(TextureSlot.BOTTOM, bottom); + } + + public static TextureMapping door(Block block) { + return new TextureMapping().put(TextureSlot.TOP, getBlockTexture(block, "_top")).put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); + } + + public static TextureMapping particle(Block block) { + return new TextureMapping().put(TextureSlot.PARTICLE, getBlockTexture(block)); + } + + public static TextureMapping particle(ResourceLocation texture) { + return new TextureMapping().put(TextureSlot.PARTICLE, texture); + } + + public static TextureMapping fire0(Block block) { + return new TextureMapping().put(TextureSlot.FIRE, getBlockTexture(block, "_0")); + } + + public static TextureMapping fire1(Block block) { + return new TextureMapping().put(TextureSlot.FIRE, getBlockTexture(block, "_1")); + } + + public static TextureMapping lantern(Block block) { + return new TextureMapping().put(TextureSlot.LANTERN, getBlockTexture(block)); + } + + public static TextureMapping torch(Block block) { + return new TextureMapping().put(TextureSlot.TORCH, getBlockTexture(block)); + } + + public static TextureMapping torch(ResourceLocation texture) { + return new TextureMapping().put(TextureSlot.TORCH, texture); + } + + public static TextureMapping trialSpawner(Block block, String sideSuffix, String topSuffix) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block, sideSuffix)) + .put(TextureSlot.TOP, getBlockTexture(block, topSuffix)) + .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); + } + + public static TextureMapping vault(Block block, String frontSuffix, String sideSuffix, String topSuffix, String bottomSuffix) { + return new TextureMapping() + .put(TextureSlot.FRONT, getBlockTexture(block, frontSuffix)) + .put(TextureSlot.SIDE, getBlockTexture(block, sideSuffix)) + .put(TextureSlot.TOP, getBlockTexture(block, topSuffix)) + .put(TextureSlot.BOTTOM, getBlockTexture(block, bottomSuffix)); + } + + public static TextureMapping particleFromItem(Item item) { + return new TextureMapping().put(TextureSlot.PARTICLE, getItemTexture(item)); + } + + public static TextureMapping commandBlock(Block block) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) + .put(TextureSlot.BACK, getBlockTexture(block, "_back")); + } + + public static TextureMapping orientableCube(Block block) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) + .put(TextureSlot.TOP, getBlockTexture(block, "_top")) + .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); + } + + public static TextureMapping orientableCubeOnlyTop(Block block) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) + .put(TextureSlot.TOP, getBlockTexture(block, "_top")); + } + + public static TextureMapping orientableCubeSameEnds(Block block) { + return new TextureMapping() + .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) + .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) + .put(TextureSlot.END, getBlockTexture(block, "_end")); + } + + public static TextureMapping top(Block block) { + return new TextureMapping().put(TextureSlot.TOP, getBlockTexture(block, "_top")); + } + + public static TextureMapping craftingTable(Block block, Block bottom) { + return new TextureMapping() + .put(TextureSlot.PARTICLE, getBlockTexture(block, "_front")) + .put(TextureSlot.DOWN, getBlockTexture(bottom)) + .put(TextureSlot.UP, getBlockTexture(block, "_top")) + .put(TextureSlot.NORTH, getBlockTexture(block, "_front")) + .put(TextureSlot.EAST, getBlockTexture(block, "_side")) + .put(TextureSlot.SOUTH, getBlockTexture(block, "_side")) + .put(TextureSlot.WEST, getBlockTexture(block, "_front")); + } + + public static TextureMapping fletchingTable(Block block, Block bottom) { + return new TextureMapping() + .put(TextureSlot.PARTICLE, getBlockTexture(block, "_front")) + .put(TextureSlot.DOWN, getBlockTexture(bottom)) + .put(TextureSlot.UP, getBlockTexture(block, "_top")) + .put(TextureSlot.NORTH, getBlockTexture(block, "_front")) + .put(TextureSlot.SOUTH, getBlockTexture(block, "_front")) + .put(TextureSlot.EAST, getBlockTexture(block, "_side")) + .put(TextureSlot.WEST, getBlockTexture(block, "_side")); + } + + public static TextureMapping snifferEgg(String name) { + return new TextureMapping() + .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.SNIFFER_EGG, name + "_north")) + .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.SNIFFER_EGG, name + "_bottom")) + .put(TextureSlot.TOP, getBlockTexture(Blocks.SNIFFER_EGG, name + "_top")) + .put(TextureSlot.NORTH, getBlockTexture(Blocks.SNIFFER_EGG, name + "_north")) + .put(TextureSlot.SOUTH, getBlockTexture(Blocks.SNIFFER_EGG, name + "_south")) + .put(TextureSlot.EAST, getBlockTexture(Blocks.SNIFFER_EGG, name + "_east")) + .put(TextureSlot.WEST, getBlockTexture(Blocks.SNIFFER_EGG, name + "_west")); + } + + public static TextureMapping campfire(Block block) { + return new TextureMapping().put(TextureSlot.LIT_LOG, getBlockTexture(block, "_log_lit")).put(TextureSlot.FIRE, getBlockTexture(block, "_fire")); + } + + public static TextureMapping candleCake(Block block, boolean lit) { + return new TextureMapping() + .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.CAKE, "_side")) + .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.CAKE, "_bottom")) + .put(TextureSlot.TOP, getBlockTexture(Blocks.CAKE, "_top")) + .put(TextureSlot.SIDE, getBlockTexture(Blocks.CAKE, "_side")) + .put(TextureSlot.CANDLE, getBlockTexture(block, lit ? "_lit" : "")); + } + + public static TextureMapping cauldron(ResourceLocation texture) { + return new TextureMapping() + .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.CAULDRON, "_side")) + .put(TextureSlot.SIDE, getBlockTexture(Blocks.CAULDRON, "_side")) + .put(TextureSlot.TOP, getBlockTexture(Blocks.CAULDRON, "_top")) + .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.CAULDRON, "_bottom")) + .put(TextureSlot.INSIDE, getBlockTexture(Blocks.CAULDRON, "_inner")) + .put(TextureSlot.CONTENT, texture); + } + + public static TextureMapping sculkShrieker(boolean canSummon) { + String string = canSummon ? "_can_summon" : ""; + return new TextureMapping() + .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.SCULK_SHRIEKER, "_bottom")) + .put(TextureSlot.SIDE, getBlockTexture(Blocks.SCULK_SHRIEKER, "_side")) + .put(TextureSlot.TOP, getBlockTexture(Blocks.SCULK_SHRIEKER, "_top")) + .put(TextureSlot.INNER_TOP, getBlockTexture(Blocks.SCULK_SHRIEKER, string + "_inner_top")) + .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.SCULK_SHRIEKER, "_bottom")); + } + + public static TextureMapping layer0(Item item) { + return new TextureMapping().put(TextureSlot.LAYER0, getItemTexture(item)); + } + + public static TextureMapping layer0(Block block) { + return new TextureMapping().put(TextureSlot.LAYER0, getBlockTexture(block)); + } + + public static TextureMapping layer0(ResourceLocation texture) { + return new TextureMapping().put(TextureSlot.LAYER0, texture); + } + + public static TextureMapping layered(ResourceLocation layer0, ResourceLocation layer1) { + return new TextureMapping().put(TextureSlot.LAYER0, layer0).put(TextureSlot.LAYER1, layer1); + } + + public static TextureMapping layered(ResourceLocation layer0, ResourceLocation layer1, ResourceLocation layer2) { + return new TextureMapping().put(TextureSlot.LAYER0, layer0).put(TextureSlot.LAYER1, layer1).put(TextureSlot.LAYER2, layer2); + } + + public static ResourceLocation getBlockTexture(Block block) { + ResourceLocation resourceLocation = BuiltInRegistries.BLOCK.getKey(block); + return resourceLocation.withPrefix("block/"); + } + + public static ResourceLocation getBlockTexture(Block block, String suffix) { + ResourceLocation resourceLocation = BuiltInRegistries.BLOCK.getKey(block); + return resourceLocation.withPath((UnaryOperator)(string2 -> "block/" + string2 + suffix)); + } + + public static ResourceLocation getItemTexture(Item item) { + ResourceLocation resourceLocation = BuiltInRegistries.ITEM.getKey(item); + return resourceLocation.withPrefix("item/"); + } + + public static ResourceLocation getItemTexture(Item item, String suffix) { + ResourceLocation resourceLocation = BuiltInRegistries.ITEM.getKey(item); + return resourceLocation.withPath((UnaryOperator)(string2 -> "item/" + string2 + suffix)); + } +} diff --git a/net/minecraft/data/models/model/TextureSlot.java b/net/minecraft/client/data/models/model/TextureSlot.java similarity index 93% rename from net/minecraft/data/models/model/TextureSlot.java rename to net/minecraft/client/data/models/model/TextureSlot.java index 8f488da1..892dd4c6 100644 --- a/net/minecraft/data/models/model/TextureSlot.java +++ b/net/minecraft/client/data/models/model/TextureSlot.java @@ -1,7 +1,10 @@ -package net.minecraft.data.models.model; +package net.minecraft.client.data.models.model; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import org.jetbrains.annotations.Nullable; +@Environment(EnvType.CLIENT) public final class TextureSlot { public static final TextureSlot ALL = create("all"); public static final TextureSlot TEXTURE = create("texture", ALL); @@ -19,6 +22,7 @@ public final class TextureSlot { public static final TextureSlot UP = create("up"); public static final TextureSlot DOWN = create("down"); public static final TextureSlot CROSS = create("cross"); + public static final TextureSlot CROSS_EMISSIVE = create("cross_emissive"); public static final TextureSlot PLANT = create("plant"); public static final TextureSlot WALL = create("wall", ALL); public static final TextureSlot RAIL = create("rail"); diff --git a/net/minecraft/client/data/models/model/TexturedModel.java b/net/minecraft/client/data/models/model/TexturedModel.java new file mode 100644 index 00000000..77fb2b7a --- /dev/null +++ b/net/minecraft/client/data/models/model/TexturedModel.java @@ -0,0 +1,93 @@ +package net.minecraft.client.data.models.model; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; + +@Environment(EnvType.CLIENT) +public class TexturedModel { + public static final TexturedModel.Provider CUBE = createDefault(TextureMapping::cube, ModelTemplates.CUBE_ALL); + public static final TexturedModel.Provider CUBE_INNER_FACES = createDefault(TextureMapping::cube, ModelTemplates.CUBE_ALL_INNER_FACES); + public static final TexturedModel.Provider CUBE_MIRRORED = createDefault(TextureMapping::cube, ModelTemplates.CUBE_MIRRORED_ALL); + public static final TexturedModel.Provider COLUMN = createDefault(TextureMapping::column, ModelTemplates.CUBE_COLUMN); + public static final TexturedModel.Provider COLUMN_HORIZONTAL = createDefault(TextureMapping::column, ModelTemplates.CUBE_COLUMN_HORIZONTAL); + public static final TexturedModel.Provider CUBE_TOP_BOTTOM = createDefault(TextureMapping::cubeBottomTop, ModelTemplates.CUBE_BOTTOM_TOP); + public static final TexturedModel.Provider CUBE_TOP = createDefault(TextureMapping::cubeTop, ModelTemplates.CUBE_TOP); + public static final TexturedModel.Provider ORIENTABLE_ONLY_TOP = createDefault(TextureMapping::orientableCubeOnlyTop, ModelTemplates.CUBE_ORIENTABLE); + public static final TexturedModel.Provider ORIENTABLE = createDefault(TextureMapping::orientableCube, ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM); + public static final TexturedModel.Provider CARPET = createDefault(TextureMapping::wool, ModelTemplates.CARPET); + public static final TexturedModel.Provider MOSSY_CARPET_SIDE = createDefault(TextureMapping::side, ModelTemplates.MOSSY_CARPET_SIDE); + public static final TexturedModel.Provider FLOWERBED_1 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_1); + public static final TexturedModel.Provider FLOWERBED_2 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_2); + public static final TexturedModel.Provider FLOWERBED_3 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_3); + public static final TexturedModel.Provider FLOWERBED_4 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_4); + public static final TexturedModel.Provider GLAZED_TERRACOTTA = createDefault(TextureMapping::pattern, ModelTemplates.GLAZED_TERRACOTTA); + public static final TexturedModel.Provider CORAL_FAN = createDefault(TextureMapping::fan, ModelTemplates.CORAL_FAN); + public static final TexturedModel.Provider ANVIL = createDefault(TextureMapping::top, ModelTemplates.ANVIL); + public static final TexturedModel.Provider LEAVES = createDefault(TextureMapping::cube, ModelTemplates.LEAVES); + public static final TexturedModel.Provider LANTERN = createDefault(TextureMapping::lantern, ModelTemplates.LANTERN); + public static final TexturedModel.Provider HANGING_LANTERN = createDefault(TextureMapping::lantern, ModelTemplates.HANGING_LANTERN); + public static final TexturedModel.Provider SEAGRASS = createDefault(TextureMapping::defaultTexture, ModelTemplates.SEAGRASS); + public static final TexturedModel.Provider COLUMN_ALT = createDefault(TextureMapping::logColumn, ModelTemplates.CUBE_COLUMN); + public static final TexturedModel.Provider COLUMN_HORIZONTAL_ALT = createDefault(TextureMapping::logColumn, ModelTemplates.CUBE_COLUMN_HORIZONTAL); + public static final TexturedModel.Provider TOP_BOTTOM_WITH_WALL = createDefault(TextureMapping::cubeBottomTopWithWall, ModelTemplates.CUBE_BOTTOM_TOP); + public static final TexturedModel.Provider COLUMN_WITH_WALL = createDefault(TextureMapping::columnWithWall, ModelTemplates.CUBE_COLUMN); + private final TextureMapping mapping; + private final ModelTemplate template; + + private TexturedModel(TextureMapping mapping, ModelTemplate template) { + this.mapping = mapping; + this.template = template; + } + + public ModelTemplate getTemplate() { + return this.template; + } + + public TextureMapping getMapping() { + return this.mapping; + } + + public TexturedModel updateTextures(Consumer updater) { + updater.accept(this.mapping); + return this; + } + + public ResourceLocation create(Block block, BiConsumer output) { + return this.template.create(block, this.mapping, output); + } + + public ResourceLocation createWithSuffix(Block block, String suffix, BiConsumer output) { + return this.template.createWithSuffix(block, suffix, this.mapping, output); + } + + private static TexturedModel.Provider createDefault(Function textureMappingGetter, ModelTemplate template) { + return block -> new TexturedModel((TextureMapping)textureMappingGetter.apply(block), template); + } + + public static TexturedModel createAllSame(ResourceLocation location) { + return new TexturedModel(TextureMapping.cube(location), ModelTemplates.CUBE_ALL); + } + + @FunctionalInterface + @Environment(EnvType.CLIENT) + public interface Provider { + TexturedModel get(Block block); + + default ResourceLocation create(Block block, BiConsumer output) { + return this.get(block).create(block, output); + } + + default ResourceLocation createWithSuffix(Block block, String suffix, BiConsumer output) { + return this.get(block).createWithSuffix(block, suffix, output); + } + + default TexturedModel.Provider updateTexture(Consumer updater) { + return block -> this.get(block).updateTextures(updater); + } + } +} diff --git a/net/minecraft/client/data/models/model/package-info.java b/net/minecraft/client/data/models/model/package-info.java new file mode 100644 index 00000000..88467d9d --- /dev/null +++ b/net/minecraft/client/data/models/model/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.data.models.model; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/data/models/package-info.java b/net/minecraft/client/data/models/package-info.java new file mode 100644 index 00000000..9f0cc8d1 --- /dev/null +++ b/net/minecraft/client/data/models/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.data.models; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/data/package-info.java b/net/minecraft/client/data/package-info.java new file mode 100644 index 00000000..c6f8e507 --- /dev/null +++ b/net/minecraft/client/data/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.data; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/gui/Font.java b/net/minecraft/client/gui/Font.java index b86c945f..d8c642cf 100644 --- a/net/minecraft/client/gui/Font.java +++ b/net/minecraft/client/gui/Font.java @@ -30,12 +30,12 @@ import net.minecraft.util.RandomSource; import net.minecraft.util.StringDecomposer; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; -import org.joml.Vector3f; @Environment(EnvType.CLIENT) public class Font { private static final float EFFECT_DEPTH = 0.01F; - private static final Vector3f SHADOW_OFFSET = new Vector3f(0.0F, 0.0F, 0.03F); + public static final float SHADOW_DEPTH = 0.03F; + public static final int NO_SHADOW = 0; public static final int ALPHA_CUTOFF = 8; public final int lineHeight = 9; public final RandomSource random = RandomSource.create(); @@ -184,13 +184,7 @@ public class Font { boolean inverseDepth ) { color = adjustColor(color); - Matrix4f matrix4f = new Matrix4f(pose); - if (dropShadow) { - this.renderText(text, x, y, color, true, pose, bufferSource, displayMode, backgroundColor, packedLightCoords, inverseDepth); - matrix4f.translate(SHADOW_OFFSET); - } - - x = this.renderText(text, x, y, color, false, matrix4f, bufferSource, displayMode, backgroundColor, packedLightCoords, inverseDepth); + x = this.renderText(text, x, y, color, dropShadow, pose, bufferSource, displayMode, backgroundColor, packedLightCoords, inverseDepth); return (int)x + (dropShadow ? 1 : 0); } @@ -208,13 +202,7 @@ public class Font { boolean inverseDepth ) { color = adjustColor(color); - Matrix4f matrix4f = new Matrix4f(pose); - if (dropShadow) { - this.renderText(text, x, y, color, true, pose, bufferSource, displayMode, backgroundColor, packedLightCoords, inverseDepth); - matrix4f.translate(SHADOW_OFFSET); - } - - x = this.renderText(text, x, y, color, false, matrix4f, bufferSource, displayMode, backgroundColor, packedLightCoords, inverseDepth); + x = this.renderText(text, x, y, color, dropShadow, pose, bufferSource, displayMode, backgroundColor, packedLightCoords, inverseDepth); return (int)x + (dropShadow ? 1 : 0); } @@ -321,8 +309,7 @@ public class Font { @Environment(EnvType.CLIENT) class StringRenderOutput implements FormattedCharSink { final MultiBufferSource bufferSource; - private final boolean dropShadow; - private final float dimFactor; + private final boolean drawShadow; private final int color; private final int backgroundColor; private final Matrix4f pose; @@ -371,9 +358,8 @@ public class Font { this.bufferSource = buferSource; this.x = x; this.y = y; - this.dropShadow = dropShadow; - this.dimFactor = dropShadow ? 0.25F : 1.0F; - this.color = ARGB.scaleRGB(color, this.dimFactor); + this.drawShadow = dropShadow; + this.color = color; this.backgroundColor = backgroundColor; this.pose = pose; this.mode = displayMode; @@ -388,22 +374,22 @@ public class Font { BakedGlyph bakedGlyph = style.isObfuscated() && j != 32 ? fontSet.getRandomGlyph(glyphInfo) : fontSet.getGlyph(j); boolean bl = style.isBold(); TextColor textColor = style.getColor(); - int k = textColor != null ? ARGB.color(ARGB.alpha(this.color), ARGB.scaleRGB(textColor.getValue(), this.dimFactor)) : this.color; + int k = this.getTextColor(textColor); + int l = this.getShadowColor(style, k); float f = glyphInfo.getAdvance(bl); float g = i == 0 ? this.x - 1.0F : this.x; + float h = glyphInfo.getShadowOffset(); if (!(bakedGlyph instanceof EmptyGlyph)) { - float h = bl ? glyphInfo.getBoldOffset() : 0.0F; - float l = this.dropShadow ? glyphInfo.getShadowOffset() : 0.0F; - this.glyphInstances.add(new BakedGlyph.GlyphInstance(this.x + l, this.y + l, k, bakedGlyph, style, h)); + float m = bl ? glyphInfo.getBoldOffset() : 0.0F; + this.glyphInstances.add(new BakedGlyph.GlyphInstance(this.x, this.y, k, l, bakedGlyph, style, m, h)); } - float h = this.dropShadow ? 1.0F : 0.0F; if (style.isStrikethrough()) { - this.addEffect(new BakedGlyph.Effect(g + h, this.y + h + 4.5F, this.x + h + f, this.y + h + 4.5F - 1.0F, this.getOverTextEffectDepth(), k)); + this.addEffect(new BakedGlyph.Effect(g, this.y + 4.5F, this.x + f, this.y + 4.5F - 1.0F, this.getOverTextEffectDepth(), k, l, h)); } if (style.isUnderlined()) { - this.addEffect(new BakedGlyph.Effect(g + h, this.y + h + 9.0F, this.x + h + f, this.y + h + 9.0F - 1.0F, this.getOverTextEffectDepth(), k)); + this.addEffect(new BakedGlyph.Effect(g, this.y + 9.0F, this.x + f, this.y + 9.0F - 1.0F, this.getOverTextEffectDepth(), k, l, h)); } this.x += f; @@ -435,6 +421,27 @@ public class Font { return this.x; } + private int getTextColor(@Nullable TextColor textColor) { + if (textColor != null) { + int i = ARGB.alpha(this.color); + int j = textColor.getValue(); + return ARGB.color(i, j); + } else { + return this.color; + } + } + + private int getShadowColor(Style style, int textColor) { + Integer integer = style.getShadowColor(); + if (integer != null) { + float f = ARGB.alphaFloat(textColor); + float g = ARGB.alphaFloat(integer); + return f != 1.0F ? ARGB.color(ARGB.as8BitChannel(f * g), integer) : integer; + } else { + return this.drawShadow ? ARGB.scaleRGB(textColor, 0.25F) : 0; + } + } + void renderCharacters() { for (BakedGlyph.GlyphInstance glyphInstance : this.glyphInstances) { BakedGlyph bakedGlyph = glyphInstance.glyph(); diff --git a/net/minecraft/client/gui/Gui.java b/net/minecraft/client/gui/Gui.java index 1d797920..a032e845 100644 --- a/net/minecraft/client/gui/Gui.java +++ b/net/minecraft/client/gui/Gui.java @@ -133,7 +133,7 @@ public class Gui { private static final int AIR_BUBBLE_SIZE = 9; private static final int AIR_BUBBLE_SEPERATION = 8; private static final int AIR_BUBBLE_POPPING_DURATION = 2; - private static final int EMPTY_AIR_BUBBLE_DELAY_DURATION = 4; + private static final int EMPTY_AIR_BUBBLE_DELAY_DURATION = 1; private static final float AIR_BUBBLE_POP_SOUND_VOLUME_BASE = 0.5F; private static final float AIR_BUBBLE_POP_SOUND_VOLUME_INCREMENT = 0.1F; private static final float AIR_BUBBLE_POP_SOUND_PITCH_BASE = 1.0F; @@ -1051,7 +1051,7 @@ public class Gui { } private static int getEmptyBubbleDelayDuration(int airSupply, boolean inWater) { - return airSupply != 0 && inWater ? 4 : 0; + return airSupply != 0 && inWater ? 1 : 0; } private void playAirBubblePoppedSound(int bubble, Player player, int pitch) { @@ -1432,10 +1432,7 @@ public class Gui { this.titleTime = this.titleFadeInTime + this.titleStayTime + this.titleFadeOutTime; } - /** - * Clears the title and subtitle, resetting the title display time. - */ - public void clear() { + public void clearTitles() { this.title = null; this.subtitle = null; this.titleTime = 0; @@ -1486,6 +1483,8 @@ public class Gui { this.minecraft.getToastManager().clear(); this.debugOverlay.reset(); this.chat.clearMessages(true); + this.clearTitles(); + this.resetTitleTimes(); } /** diff --git a/net/minecraft/client/gui/GuiGraphics.java b/net/minecraft/client/gui/GuiGraphics.java index 98112659..01356f6d 100644 --- a/net/minecraft/client/gui/GuiGraphics.java +++ b/net/minecraft/client/gui/GuiGraphics.java @@ -31,18 +31,23 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.MultiBufferSource.BufferSource; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling; +import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling.NineSlice; +import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling.Stretch; +import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling.Tile; import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling.NineSlice.Border; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.HoverEvent.Action; +import net.minecraft.network.chat.HoverEvent.EntityTooltipInfo; +import net.minecraft.network.chat.HoverEvent.ItemStackInfo; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; import net.minecraft.util.ARGB; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; @@ -65,6 +70,7 @@ public class GuiGraphics { private final BufferSource bufferSource; private final GuiGraphics.ScissorStack scissorStack = new GuiGraphics.ScissorStack(); private final GuiSpriteManager sprites; + private final ItemStackRenderState scratchItemStackRenderState = new ItemStackRenderState(); private GuiGraphics(Minecraft minecraft, PoseStack pose, BufferSource bufferSource) { this.minecraft = minecraft; @@ -176,7 +182,8 @@ public class GuiGraphics { * @param maxY the maximum y-coordinate of the scissor region. */ public void enableScissor(int minX, int minY, int maxX, int maxY) { - this.applyScissor(this.scissorStack.push(new ScreenRectangle(minX, minY, maxX - minX, maxY - minY))); + ScreenRectangle screenRectangle = new ScreenRectangle(minX, minY, maxX - minX, maxY - minY).transformAxisAligned(this.pose.last().pose()); + this.applyScissor(this.scissorStack.push(screenRectangle)); } /** @@ -507,8 +514,12 @@ public class GuiGraphics { * @param color the color of the text. */ public void drawWordWrap(Font font, FormattedText text, int x, int y, int lineWidth, int color) { + this.drawWordWrap(font, text, x, y, lineWidth, color, true); + } + + public void drawWordWrap(Font font, FormattedText text, int x, int y, int lineWidth, int color, boolean dropShadow) { for (FormattedCharSequence formattedCharSequence : font.split(text, lineWidth)) { - this.drawString(font, formattedCharSequence, x, y, color, false); + this.drawString(font, formattedCharSequence, x, y, color, dropShadow); y += 9; } } @@ -546,11 +557,11 @@ public class GuiGraphics { public void blitSprite(Function renderTypeGetter, ResourceLocation sprite, int x, int y, int width, int height, int blitOffset) { TextureAtlasSprite textureAtlasSprite = this.sprites.getSprite(sprite); GuiSpriteScaling guiSpriteScaling = this.sprites.getSpriteScaling(textureAtlasSprite); - if (guiSpriteScaling instanceof GuiSpriteScaling.Stretch) { + if (guiSpriteScaling instanceof Stretch) { this.blitSprite(renderTypeGetter, textureAtlasSprite, x, y, width, height, blitOffset); - } else if (guiSpriteScaling instanceof GuiSpriteScaling.Tile tile) { + } else if (guiSpriteScaling instanceof Tile tile) { this.blitTiledSprite(renderTypeGetter, textureAtlasSprite, x, y, width, height, 0, 0, tile.width(), tile.height(), tile.width(), tile.height(), blitOffset); - } else if (guiSpriteScaling instanceof GuiSpriteScaling.NineSlice nineSlice) { + } else if (guiSpriteScaling instanceof NineSlice nineSlice) { this.blitNineSlicedSprite(renderTypeGetter, textureAtlasSprite, nineSlice, x, y, width, height, blitOffset); } } @@ -569,10 +580,12 @@ public class GuiGraphics { ) { TextureAtlasSprite textureAtlasSprite = this.sprites.getSprite(sprite); GuiSpriteScaling guiSpriteScaling = this.sprites.getSpriteScaling(textureAtlasSprite); - if (guiSpriteScaling instanceof GuiSpriteScaling.Stretch) { + if (guiSpriteScaling instanceof Stretch) { this.blitSprite(renderTypeGetter, textureAtlasSprite, textureWidth, textureHeight, uPosition, vPosition, x, y, uWidth, vHeight, -1); } else { - this.blitSprite(renderTypeGetter, textureAtlasSprite, x, y, uWidth, vHeight); + this.enableScissor(x, y, x + uWidth, y + vHeight); + this.blitSprite(renderTypeGetter, sprite, x - uPosition, y - vPosition, textureWidth, textureHeight, -1); + this.disableScissor(); } } @@ -619,14 +632,7 @@ public class GuiGraphics { } private void blitNineSlicedSprite( - Function renderTypeGetter, - TextureAtlasSprite sprite, - GuiSpriteScaling.NineSlice nineSlice, - int x, - int y, - int blitOffset, - int width, - int height + Function renderTypeGetter, TextureAtlasSprite sprite, NineSlice nineSlice, int x, int y, int blitOffset, int width, int height ) { Border border = nineSlice.border(); int i = Math.min(border.left(), blitOffset / 2); @@ -734,7 +740,7 @@ public class GuiGraphics { sprite, x + blitOffset - j, y + k, - i, + j, width - l - k, nineSlice.width() - j, k, @@ -749,7 +755,7 @@ public class GuiGraphics { private void blitNineSliceInnerSegment( Function renderTypeGetter, - GuiSpriteScaling.NineSlice nineSlice, + NineSlice nineSlice, TextureAtlasSprite sprite, int x, int y, @@ -1008,36 +1014,25 @@ public class GuiGraphics { */ private void renderItem(@Nullable LivingEntity entity, @Nullable Level level, ItemStack stack, int x, int y, int seed, int guiOffset) { if (!stack.isEmpty()) { - BakedModel bakedModel = this.minecraft.getItemRenderer().getModel(stack, level, entity, seed); + this.minecraft.getItemModelResolver().updateForTopItem(this.scratchItemStackRenderState, stack, ItemDisplayContext.GUI, false, level, entity, seed); this.pose.pushPose(); - this.pose.translate((float)(x + 8), (float)(y + 8), (float)(150 + (bakedModel.isGui3d() ? guiOffset : 0))); + this.pose.translate((float)(x + 8), (float)(y + 8), (float)(150 + (this.scratchItemStackRenderState.isGui3d() ? guiOffset : 0))); try { this.pose.scale(16.0F, -16.0F, 16.0F); - boolean bl = !bakedModel.usesBlockLight(); + boolean bl = !this.scratchItemStackRenderState.usesBlockLight(); if (bl) { this.flush(); Lighting.setupForFlatItems(); } - if (stack.is(ItemTags.BUNDLES)) { - this.minecraft - .getItemRenderer() - .renderBundleItem( - stack, ItemDisplayContext.GUI, false, this.pose, this.bufferSource, 15728880, OverlayTexture.NO_OVERLAY, bakedModel, level, entity, seed - ); - } else { - this.minecraft - .getItemRenderer() - .render(stack, ItemDisplayContext.GUI, false, this.pose, this.bufferSource, 15728880, OverlayTexture.NO_OVERLAY, bakedModel); - } - + this.scratchItemStackRenderState.render(this.pose, this.bufferSource, 15728880, OverlayTexture.NO_OVERLAY); this.flush(); if (bl) { Lighting.setupFor3DItems(); } - } catch (Throwable var12) { - CrashReport crashReport = CrashReport.forThrowable(var12, "Rendering item"); + } catch (Throwable var11) { + CrashReport crashReport = CrashReport.forThrowable(var11, "Rendering item"); CrashReportCategory crashReportCategory = crashReport.addCategory("Item being rendered"); crashReportCategory.setDetail("Item Type", (CrashReportDetail)(() -> String.valueOf(stack.getItem()))); crashReportCategory.setDetail("Item Components", (CrashReportDetail)(() -> String.valueOf(stack.getComponents()))); @@ -1285,17 +1280,17 @@ public class GuiGraphics { public void renderComponentHoverEffect(Font font, @Nullable Style style, int mouseX, int mouseY) { if (style != null && style.getHoverEvent() != null) { HoverEvent hoverEvent = style.getHoverEvent(); - HoverEvent.ItemStackInfo itemStackInfo = hoverEvent.getValue(HoverEvent.Action.SHOW_ITEM); + ItemStackInfo itemStackInfo = hoverEvent.getValue(Action.SHOW_ITEM); if (itemStackInfo != null) { this.renderTooltip(font, itemStackInfo.getItemStack(), mouseX, mouseY); } else { - HoverEvent.EntityTooltipInfo entityTooltipInfo = hoverEvent.getValue(HoverEvent.Action.SHOW_ENTITY); + EntityTooltipInfo entityTooltipInfo = hoverEvent.getValue(Action.SHOW_ENTITY); if (entityTooltipInfo != null) { if (this.minecraft.options.advancedItemTooltips) { this.renderComponentTooltip(font, entityTooltipInfo.getTooltipLines(), mouseX, mouseY); } } else { - Component component = hoverEvent.getValue(HoverEvent.Action.SHOW_TEXT); + Component component = hoverEvent.getValue(Action.SHOW_TEXT); if (component != null) { this.renderTooltip(font, font.split(component, Math.max(this.guiWidth() / 2, 200)), mouseX, mouseY); } diff --git a/net/minecraft/client/gui/GuiSpriteManager.java b/net/minecraft/client/gui/GuiSpriteManager.java index a761bfd8..f749c93b 100644 --- a/net/minecraft/client/gui/GuiSpriteManager.java +++ b/net/minecraft/client/gui/GuiSpriteManager.java @@ -10,11 +10,11 @@ import net.minecraft.client.resources.metadata.animation.AnimationMetadataSectio import net.minecraft.client.resources.metadata.gui.GuiMetadataSection; import net.minecraft.client.resources.metadata.gui.GuiSpriteScaling; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; +import net.minecraft.server.packs.metadata.MetadataSectionType; @Environment(EnvType.CLIENT) public class GuiSpriteManager extends TextureAtlasHolder { - private static final Set> METADATA_SECTIONS = Set.of(AnimationMetadataSection.SERIALIZER, GuiMetadataSection.TYPE); + private static final Set> METADATA_SECTIONS = Set.of(AnimationMetadataSection.TYPE, GuiMetadataSection.TYPE); public GuiSpriteManager(TextureManager textureManager) { super(textureManager, ResourceLocation.withDefaultNamespace("textures/atlas/gui.png"), ResourceLocation.withDefaultNamespace("gui"), METADATA_SECTIONS); diff --git a/net/minecraft/client/gui/components/AbstractButton.java b/net/minecraft/client/gui/components/AbstractButton.java index 203661d8..e8ae1317 100644 --- a/net/minecraft/client/gui/components/AbstractButton.java +++ b/net/minecraft/client/gui/components/AbstractButton.java @@ -21,8 +21,8 @@ public abstract class AbstractButton extends AbstractWidget { ResourceLocation.withDefaultNamespace("widget/button_highlighted") ); - public AbstractButton(int x, int y, int width, int height, Component message) { - super(x, y, width, height, message); + public AbstractButton(int i, int j, int k, int l, Component component) { + super(i, j, k, l, component); } public abstract void onPress(); diff --git a/net/minecraft/client/gui/components/AbstractContainerWidget.java b/net/minecraft/client/gui/components/AbstractContainerWidget.java index 446d18a6..1b67817c 100644 --- a/net/minecraft/client/gui/components/AbstractContainerWidget.java +++ b/net/minecraft/client/gui/components/AbstractContainerWidget.java @@ -10,7 +10,7 @@ import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public abstract class AbstractContainerWidget extends AbstractWidget implements ContainerEventHandler { +public abstract class AbstractContainerWidget extends AbstractScrollArea implements ContainerEventHandler { @Nullable private GuiEventListener focused; private boolean isDragging; @@ -56,16 +56,19 @@ public abstract class AbstractContainerWidget extends AbstractWidget implements @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - return ContainerEventHandler.super.mouseClicked(mouseX, mouseY, button); + boolean bl = this.updateScrolling(mouseX, mouseY, button); + return ContainerEventHandler.super.mouseClicked(mouseX, mouseY, button) || bl; } @Override public boolean mouseReleased(double mouseX, double mouseY, int button) { + super.mouseReleased(mouseX, mouseY, button); return ContainerEventHandler.super.mouseReleased(mouseX, mouseY, button); } @Override public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { + super.mouseDragged(mouseX, mouseY, button, dragX, dragY); return ContainerEventHandler.super.mouseDragged(mouseX, mouseY, button, dragX, dragY); } diff --git a/net/minecraft/client/gui/components/AbstractScrollArea.java b/net/minecraft/client/gui/components/AbstractScrollArea.java new file mode 100644 index 00000000..6cb082d9 --- /dev/null +++ b/net/minecraft/client/gui/components/AbstractScrollArea.java @@ -0,0 +1,113 @@ +package net.minecraft.client.gui.components; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; + +@Environment(EnvType.CLIENT) +public abstract class AbstractScrollArea extends AbstractWidget { + public static final int SCROLLBAR_WIDTH = 6; + private double scrollAmount; + private static final ResourceLocation SCROLLER_SPRITE = ResourceLocation.withDefaultNamespace("widget/scroller"); + private static final ResourceLocation SCROLLER_BACKGROUND_SPRITE = ResourceLocation.withDefaultNamespace("widget/scroller_background"); + private boolean scrolling; + + public AbstractScrollArea(int i, int j, int k, int l, Component component) { + super(i, j, k, l, component); + } + + @Override + public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { + if (!this.visible) { + return false; + } else { + this.setScrollAmount(this.scrollAmount() - scrollY * this.scrollRate()); + return true; + } + } + + @Override + public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { + if (this.scrolling) { + if (mouseY < this.getY()) { + this.setScrollAmount(0.0); + } else if (mouseY > this.getBottom()) { + this.setScrollAmount(this.maxScrollAmount()); + } else { + double d = Math.max(1, this.maxScrollAmount()); + int i = this.scrollerHeight(); + double e = Math.max(1.0, d / (this.height - i)); + this.setScrollAmount(this.scrollAmount() + dragY * e); + } + + return true; + } else { + return super.mouseDragged(mouseX, mouseY, button, dragX, dragY); + } + } + + @Override + public void onRelease(double mouseX, double mouseY) { + this.scrolling = false; + } + + public double scrollAmount() { + return this.scrollAmount; + } + + public void setScrollAmount(double scrollAmount) { + this.scrollAmount = Mth.clamp(scrollAmount, 0.0, (double)this.maxScrollAmount()); + } + + public boolean updateScrolling(double mouseX, double mouseY, int button) { + this.scrolling = this.scrollbarVisible() + && this.isValidClickButton(button) + && mouseX >= this.scrollBarX() + && mouseX <= this.scrollBarX() + 6 + && mouseY >= this.getY() + && mouseY < this.getBottom(); + return this.scrolling; + } + + public void refreshScrollAmount() { + this.setScrollAmount(this.scrollAmount); + } + + public int maxScrollAmount() { + return Math.max(0, this.contentHeight() - this.height); + } + + protected boolean scrollbarVisible() { + return this.maxScrollAmount() > 0; + } + + protected int scrollerHeight() { + return Mth.clamp((int)((float)(this.height * this.height) / this.contentHeight()), 32, this.height - 8); + } + + protected int scrollBarX() { + return this.getRight() - 6; + } + + protected int scrollBarY() { + return Math.max(this.getY(), (int)this.scrollAmount * (this.height - this.scrollerHeight()) / this.maxScrollAmount() + this.getY()); + } + + protected void renderScrollbar(GuiGraphics guiGraphics) { + if (this.scrollbarVisible()) { + int i = this.scrollBarX(); + int j = this.scrollerHeight(); + int k = this.scrollBarY(); + guiGraphics.blitSprite(RenderType::guiTextured, SCROLLER_BACKGROUND_SPRITE, i, this.getY(), 6, this.getHeight()); + guiGraphics.blitSprite(RenderType::guiTextured, SCROLLER_SPRITE, i, k, 6, j); + } + } + + protected abstract int contentHeight(); + + protected abstract double scrollRate(); +} diff --git a/net/minecraft/client/gui/components/AbstractScrollWidget.java b/net/minecraft/client/gui/components/AbstractScrollWidget.java deleted file mode 100644 index f8c22ce7..00000000 --- a/net/minecraft/client/gui/components/AbstractScrollWidget.java +++ /dev/null @@ -1,184 +0,0 @@ -package net.minecraft.client.gui.components; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; - -@Environment(EnvType.CLIENT) -public abstract class AbstractScrollWidget extends AbstractWidget { - private static final WidgetSprites BACKGROUND_SPRITES = new WidgetSprites( - ResourceLocation.withDefaultNamespace("widget/text_field"), ResourceLocation.withDefaultNamespace("widget/text_field_highlighted") - ); - private static final ResourceLocation SCROLLER_SPRITE = ResourceLocation.withDefaultNamespace("widget/scroller"); - private static final int INNER_PADDING = 4; - private static final int SCROLL_BAR_WIDTH = 8; - private double scrollAmount; - private boolean scrolling; - - public AbstractScrollWidget(int x, int y, int width, int height, Component message) { - super(x, y, width, height, message); - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (!this.visible) { - return false; - } else { - boolean bl = this.withinContentAreaPoint(mouseX, mouseY); - boolean bl2 = this.scrollbarVisible() - && mouseX >= this.getX() + this.width - && mouseX <= this.getX() + this.width + 8 - && mouseY >= this.getY() - && mouseY < this.getY() + this.height; - if (bl2 && button == 0) { - this.scrolling = true; - return true; - } else { - return bl || bl2; - } - } - } - - @Override - public boolean mouseReleased(double mouseX, double mouseY, int button) { - if (button == 0) { - this.scrolling = false; - } - - return super.mouseReleased(mouseX, mouseY, button); - } - - @Override - public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { - if (this.visible && this.isFocused() && this.scrolling) { - if (mouseY < this.getY()) { - this.setScrollAmount(0.0); - } else if (mouseY > this.getY() + this.height) { - this.setScrollAmount(this.getMaxScrollAmount()); - } else { - int i = this.getScrollBarHeight(); - double d = Math.max(1, this.getMaxScrollAmount() / (this.height - i)); - this.setScrollAmount(this.scrollAmount + dragY * d); - } - - return true; - } else { - return false; - } - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { - if (!this.visible) { - return false; - } else { - this.setScrollAmount(this.scrollAmount - scrollY * this.scrollRate()); - return true; - } - } - - @Override - public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - boolean bl = keyCode == 265; - boolean bl2 = keyCode == 264; - if (bl || bl2) { - double d = this.scrollAmount; - this.setScrollAmount(this.scrollAmount + (bl ? -1 : 1) * this.scrollRate()); - if (d != this.scrollAmount) { - return true; - } - } - - return super.keyPressed(keyCode, scanCode, modifiers); - } - - @Override - public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - if (this.visible) { - this.renderBackground(guiGraphics); - guiGraphics.enableScissor(this.getX() + 1, this.getY() + 1, this.getX() + this.width - 1, this.getY() + this.height - 1); - guiGraphics.pose().pushPose(); - guiGraphics.pose().translate(0.0, -this.scrollAmount, 0.0); - this.renderContents(guiGraphics, mouseX, mouseY, partialTick); - guiGraphics.pose().popPose(); - guiGraphics.disableScissor(); - this.renderDecorations(guiGraphics); - } - } - - private int getScrollBarHeight() { - return Mth.clamp((int)((float)(this.height * this.height) / this.getContentHeight()), 32, this.height); - } - - protected void renderDecorations(GuiGraphics guiGraphics) { - if (this.scrollbarVisible()) { - this.renderScrollBar(guiGraphics); - } - } - - protected int innerPadding() { - return 4; - } - - protected int totalInnerPadding() { - return this.innerPadding() * 2; - } - - protected double scrollAmount() { - return this.scrollAmount; - } - - protected void setScrollAmount(double scrollAmount) { - this.scrollAmount = Mth.clamp(scrollAmount, 0.0, (double)this.getMaxScrollAmount()); - } - - protected int getMaxScrollAmount() { - return Math.max(0, this.getContentHeight() - (this.height - 4)); - } - - private int getContentHeight() { - return this.getInnerHeight() + 4; - } - - protected void renderBackground(GuiGraphics guiGraphics) { - this.renderBorder(guiGraphics, this.getX(), this.getY(), this.getWidth(), this.getHeight()); - } - - protected void renderBorder(GuiGraphics guiGraphics, int x, int y, int width, int height) { - ResourceLocation resourceLocation = BACKGROUND_SPRITES.get(this.isActive(), this.isFocused()); - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, x, y, width, height); - } - - private void renderScrollBar(GuiGraphics guiGraphics) { - int i = this.getScrollBarHeight(); - int j = this.getX() + this.width; - int k = Math.max(this.getY(), (int)this.scrollAmount * (this.height - i) / this.getMaxScrollAmount() + this.getY()); - guiGraphics.blitSprite(RenderType::guiTextured, SCROLLER_SPRITE, j, k, 8, i); - } - - protected boolean withinContentAreaTopBottom(int top, int bottom) { - return bottom - this.scrollAmount >= this.getY() && top - this.scrollAmount <= this.getY() + this.height; - } - - protected boolean withinContentAreaPoint(double x, double y) { - return x >= this.getX() && x < this.getX() + this.width && y >= this.getY() && y < this.getY() + this.height; - } - - protected boolean scrollbarVisible() { - return this.getInnerHeight() > this.getHeight(); - } - - public int scrollbarWidth() { - return 8; - } - - protected abstract int getInnerHeight(); - - protected abstract double scrollRate(); - - protected abstract void renderContents(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick); -} diff --git a/net/minecraft/client/gui/components/AbstractSelectionList.java b/net/minecraft/client/gui/components/AbstractSelectionList.java index 7449e9aa..83f26b03 100644 --- a/net/minecraft/client/gui/components/AbstractSelectionList.java +++ b/net/minecraft/client/gui/components/AbstractSelectionList.java @@ -5,6 +5,7 @@ import java.util.AbstractList; import java.util.Collection; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.function.Predicate; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -13,9 +14,9 @@ import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.events.ContainerEventHandler; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; +import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarratedElementType; import net.minecraft.client.gui.narration.NarrationElementOutput; -import net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority; import net.minecraft.client.gui.navigation.ScreenDirection; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.RenderType; @@ -27,19 +28,14 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public abstract class AbstractSelectionList> extends AbstractContainerWidget { - protected static final int SCROLLBAR_WIDTH = 6; - private static final ResourceLocation SCROLLER_SPRITE = ResourceLocation.withDefaultNamespace("widget/scroller"); - private static final ResourceLocation SCROLLER_BACKGROUND_SPRITE = ResourceLocation.withDefaultNamespace("widget/scroller_background"); private static final ResourceLocation MENU_LIST_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/menu_list_background.png"); private static final ResourceLocation INWORLD_MENU_LIST_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/inworld_menu_list_background.png"); protected final Minecraft minecraft; protected final int itemHeight; private final List children = new AbstractSelectionList.TrackedList(); protected boolean centerListVertically = true; - private double scrollAmount; private boolean renderHeader; protected int headerHeight; - private boolean scrolling; @Nullable private E selected; @Nullable @@ -51,12 +47,10 @@ public abstract class AbstractSelectionList= k && mouseX <= l && n >= 0 && m >= 0 && n < this.getItemCount() ? this.children().get(n) : null); } @@ -151,15 +142,12 @@ public abstract class AbstractSelectionList 0; - } - protected void renderListSeparators(GuiGraphics guiGraphics) { ResourceLocation resourceLocation = this.minecraft.level == null ? Screen.HEADER_SEPARATOR : Screen.INWORLD_HEADER_SEPARATOR; ResourceLocation resourceLocation2 = this.minecraft.level == null ? Screen.FOOTER_SEPARATOR : Screen.INWORLD_FOOTER_SEPARATOR; @@ -217,7 +189,7 @@ public abstract class AbstractSelectionList= this.getScrollbarPosition() && mouseX < this.getScrollbarPosition() + 6; - } - - protected int getScrollbarPosition() { - return this.getDefaultScrollbarPosition(); - } - - protected int getDefaultScrollbarPosition() { - return this.getRealRowRight() + this.getListOutlinePadding(); - } - - private int getListOutlinePadding() { - return 10; - } - - protected boolean isValidMouseClick(int button) { - return button == 0; + this.setScrollAmount(this.scrollAmount() + scroll); } @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (!this.isValidMouseClick(button)) { - return false; - } else { - this.updateScrollingState(mouseX, mouseY, button); - if (!this.isMouseOver(mouseX, mouseY)) { - return false; - } else { - E entry = this.getEntryAtPosition(mouseX, mouseY); - if (entry != null) { - if (entry.mouseClicked(mouseX, mouseY, button)) { - E entry2 = this.getFocused(); - if (entry2 != entry && entry2 instanceof ContainerEventHandler containerEventHandler) { - containerEventHandler.setFocused(null); - } - - this.setFocused(entry); - this.setDragging(true); - return true; - } - } else if (this.clickedHeader( - (int)(mouseX - (this.getX() + this.width / 2 - this.getRowWidth() / 2)), (int)(mouseY - this.getY()) + (int)this.getScrollAmount() - 4 - )) { - return true; - } - - return this.scrolling; - } - } + protected double scrollRate() { + return this.itemHeight / 2.0; } @Override - public boolean mouseReleased(double mouseX, double mouseY, int button) { - return this.getFocused() != null ? this.getFocused().mouseReleased(mouseX, mouseY, button) : false; + protected int scrollBarX() { + return this.getRowRight() + 6 + 2; } @Override - public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) { - if (super.mouseDragged(mouseX, mouseY, button, dragX, dragY)) { - return true; - } else if (button == 0 && this.scrolling) { - if (mouseY < this.getY()) { - this.setScrollAmount(0.0); - } else if (mouseY > this.getBottom()) { - this.setScrollAmount(this.getMaxScroll()); - } else { - double d = Math.max(1, this.getMaxScroll()); - int i = this.height; - int j = Mth.clamp((int)((float)(i * i) / this.getMaxPosition()), 32, i - 8); - double e = Math.max(1.0, d / (i - j)); - this.setScrollAmount(this.getScrollAmount() + dragY * e); - } - - return true; - } else { - return false; - } - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { - this.setScrollAmount(this.getScrollAmount() - scrollY * this.itemHeight / 2.0); - return true; + public Optional getChildAt(double mouseX, double mouseY) { + return Optional.ofNullable(this.getEntryAtPosition(mouseX, mouseY)); } @Override public void setFocused(@Nullable GuiEventListener focused) { + E entry = this.getFocused(); + if (entry != focused && entry instanceof ContainerEventHandler containerEventHandler) { + containerEventHandler.setFocused(null); + } + super.setFocused(focused); int i = this.children.indexOf(focused); if (i >= 0) { - E entry = (E)this.children.get(i); - this.setSelected(entry); + E entry2 = (E)this.children.get(i); + this.setSelected(entry2); if (this.minecraft.getLastInputType().isKeyboard()) { - this.ensureVisible(entry); + this.ensureVisible(entry2); } } } @@ -405,11 +291,6 @@ public abstract class AbstractSelectionList= this.getY() && mouseY <= this.getBottom() && mouseX >= this.getX() && mouseX <= this.getRight(); - } - protected void renderListItems(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { int i = this.getRowLeft(); int j = this.getRowWidth(); @@ -447,20 +328,12 @@ public abstract class AbstractSelectionList= this.getX() && mouseY >= this.getY() && mouseX < this.getRight() + 6 && mouseY < this.getBottom(); + } + + @Override + protected int scrollBarX() { + return this.getRight(); + } + + @Override + protected int contentHeight() { + return this.getInnerHeight() + this.totalInnerPadding(); + } + + protected void renderBackground(GuiGraphics guiGraphics) { + this.renderBorder(guiGraphics, this.getX(), this.getY(), this.getWidth(), this.getHeight()); + } + + protected void renderBorder(GuiGraphics guiGraphics, int x, int y, int width, int height) { + ResourceLocation resourceLocation = BACKGROUND_SPRITES.get(this.isActive(), this.isFocused()); + guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, x, y, width, height); + } + + protected boolean withinContentAreaTopBottom(int top, int bottom) { + return bottom - this.scrollAmount() >= this.getY() && top - this.scrollAmount() <= this.getY() + this.height; + } + + protected abstract int getInnerHeight(); + + protected abstract void renderContents(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick); + + protected int getInnerLeft() { + return this.getX() + this.innerPadding(); + } + + protected int getInnerTop() { + return this.getY() + this.innerPadding(); + } + + @Override + public void playDownSound(SoundManager handler) { + } +} diff --git a/net/minecraft/client/gui/components/AbstractWidget.java b/net/minecraft/client/gui/components/AbstractWidget.java index c2279c55..1cca167b 100644 --- a/net/minecraft/client/gui/components/AbstractWidget.java +++ b/net/minecraft/client/gui/components/AbstractWidget.java @@ -14,7 +14,6 @@ import net.minecraft.client.gui.layouts.LayoutElement; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarratedElementType; import net.minecraft.client.gui.narration.NarrationElementOutput; -import net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority; import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.resources.sounds.SimpleSoundInstance; @@ -133,7 +132,7 @@ public abstract class AbstractWidget implements Renderable, GuiEventListener, La public boolean mouseClicked(double mouseX, double mouseY, int button) { if (this.active && this.visible) { if (this.isValidClickButton(button)) { - boolean bl = this.clicked(mouseX, mouseY); + boolean bl = this.isMouseOver(mouseX, mouseY); if (bl) { this.playDownSound(Minecraft.getInstance().getSoundManager()); this.onClick(mouseX, mouseY); @@ -171,15 +170,6 @@ public abstract class AbstractWidget implements Renderable, GuiEventListener, La } } - protected boolean clicked(double mouseX, double mouseY) { - return this.active - && this.visible - && mouseX >= this.getX() - && mouseY >= this.getY() - && mouseX < this.getX() + this.getWidth() - && mouseY < this.getY() + this.getHeight(); - } - @Nullable @Override public ComponentPath nextFocusPath(FocusNavigationEvent event) { @@ -192,12 +182,7 @@ public abstract class AbstractWidget implements Renderable, GuiEventListener, La @Override public boolean isMouseOver(double mouseX, double mouseY) { - return this.active - && this.visible - && mouseX >= this.getX() - && mouseY >= this.getY() - && mouseX < this.getX() + this.width - && mouseY < this.getY() + this.height; + return this.active && this.visible && mouseX >= this.getX() && mouseY >= this.getY() && mouseX < this.getRight() && mouseY < this.getBottom(); } public void playDownSound(SoundManager handler) { @@ -257,11 +242,11 @@ public abstract class AbstractWidget implements Renderable, GuiEventListener, La } @Override - public NarrationPriority narrationPriority() { + public NarratableEntry.NarrationPriority narrationPriority() { if (this.isFocused()) { - return NarrationPriority.FOCUSED; + return NarratableEntry.NarrationPriority.FOCUSED; } else { - return this.isHovered ? NarrationPriority.HOVERED : NarrationPriority.NONE; + return this.isHovered ? NarratableEntry.NarrationPriority.HOVERED : NarratableEntry.NarrationPriority.NONE; } } diff --git a/net/minecraft/client/gui/components/ChatComponent.java b/net/minecraft/client/gui/components/ChatComponent.java index ba08dedc..a2723ef3 100644 --- a/net/minecraft/client/gui/components/ChatComponent.java +++ b/net/minecraft/client/gui/components/ChatComponent.java @@ -13,12 +13,14 @@ import net.minecraft.client.GuiMessage; import net.minecraft.client.GuiMessageTag; import net.minecraft.client.Minecraft; import net.minecraft.client.GuiMessage.Line; +import net.minecraft.client.GuiMessageTag.Icon; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.client.multiplayer.chat.ChatListener; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MessageSignature; import net.minecraft.network.chat.Style; +import net.minecraft.util.ARGB; import net.minecraft.util.ArrayListDeque; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; @@ -81,7 +83,7 @@ public class ChatComponent { guiGraphics.pose().translate(4.0F, 0.0F, 0.0F); int m = Mth.floor((l - 40) / f); int n = this.getMessageEndIndexAt(this.screenToChatX(mouseX), this.screenToChatY(mouseY)); - double d = this.minecraft.options.chatOpacity().get() * 0.9F + 0.1F; + double d = this.minecraft.options.chatOpacity().get() * 0.9 + 0.1; double e = this.minecraft.options.textBackgroundOpacity().get(); double g = this.minecraft.options.chatLineSpacing().get(); int o = this.getLineHeight(); @@ -116,7 +118,7 @@ public class ChatComponent { guiGraphics.pose().pushPose(); guiGraphics.pose().translate(0.0F, 0.0F, 50.0F); - guiGraphics.drawString(this.minecraft.font, line.content(), 0, y, 16777215 + (u << 24)); + guiGraphics.drawString(this.minecraft.font, line.content(), 0, y, ARGB.color(u, -1)); guiGraphics.pose().popPose(); } } @@ -156,7 +158,7 @@ public class ChatComponent { } } - private void drawTagIcon(GuiGraphics guiGraphics, int left, int bottom, GuiMessageTag.Icon tagIcon) { + private void drawTagIcon(GuiGraphics guiGraphics, int left, int bottom, Icon tagIcon) { int i = bottom - tagIcon.height - 1; tagIcon.draw(guiGraphics, left, i); } @@ -216,7 +218,7 @@ public class ChatComponent { private void addMessageToDisplayQueue(GuiMessage message) { int i = Mth.floor(this.getWidth() / this.getScale()); - GuiMessageTag.Icon icon = message.icon(); + Icon icon = message.icon(); if (icon != null) { i -= icon.width + 4 + 2; } @@ -397,7 +399,7 @@ public class ChatComponent { if (x < 0.0) { return true; } else { - GuiMessageTag.Icon icon = tag.icon(); + Icon icon = tag.icon(); if (icon == null) { return false; } else { diff --git a/net/minecraft/client/gui/components/ContainerObjectSelectionList.java b/net/minecraft/client/gui/components/ContainerObjectSelectionList.java index a9f60227..cd7d375c 100644 --- a/net/minecraft/client/gui/components/ContainerObjectSelectionList.java +++ b/net/minecraft/client/gui/components/ContainerObjectSelectionList.java @@ -10,21 +10,23 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarratedElementType; import net.minecraft.client.gui.narration.NarrationElementOutput; -import net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority; import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.navigation.ScreenAxis; import net.minecraft.client.gui.navigation.ScreenDirection; import net.minecraft.client.gui.navigation.FocusNavigationEvent.ArrowNavigation; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.Screen.NarratableSearchResult; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public abstract class ContainerObjectSelectionList> extends AbstractSelectionList { - public ContainerObjectSelectionList(Minecraft minecraft, int width, int height, int y, int itemHeight) { - super(minecraft, width, height, y, itemHeight); + public ContainerObjectSelectionList(Minecraft minecraft, int i, int j, int k, int l) { + super(minecraft, i, j, k, l); + } + + public ContainerObjectSelectionList(Minecraft minecraft, int i, int j, int k, int l, int m) { + super(minecraft, i, j, k, l, m); } @Nullable @@ -88,8 +90,8 @@ public abstract class ContainerObjectSelectionList list = this.narratables(); - NarratableSearchResult narratableSearchResult = Screen.findNarratableWidget(list, this.lastNarratable); + Screen.NarratableSearchResult narratableSearchResult = Screen.findNarratableWidget(list, this.lastNarratable); if (narratableSearchResult != null) { if (narratableSearchResult.priority.isTerminal()) { this.lastNarratable = narratableSearchResult.entry; @@ -207,7 +209,7 @@ public abstract class ContainerObjectSelectionList= stringView.beginIndex() && i <= stringView.endIndex()) { if (bl3) { - j = guiGraphics.drawString(this.font, string.substring(stringView.beginIndex(), i), this.getX() + this.innerPadding(), l, -2039584) - 1; + j = guiGraphics.drawString(this.font, string.substring(stringView.beginIndex(), i), this.getInnerLeft(), l, -2039584) - 1; guiGraphics.fill(j, l - 1, j + 1, l + 1 + 9, -3092272); guiGraphics.drawString(this.font, string.substring(i, stringView.endIndex()), j, l, -2039584); } } else { if (bl3) { - j = guiGraphics.drawString(this.font, string.substring(stringView.beginIndex(), stringView.endIndex()), this.getX() + this.innerPadding(), l, -2039584) - - 1; + j = guiGraphics.drawString(this.font, string.substring(stringView.beginIndex(), stringView.endIndex()), this.getInnerLeft(), l, -2039584) - 1; } k = l; @@ -137,8 +122,8 @@ public class MultiLineEditBox extends AbstractScrollWidget { if (this.textField.hasSelection()) { StringView stringView2 = this.textField.getSelected(); - int m = this.getX() + this.innerPadding(); - l = this.getY() + this.innerPadding(); + int m = this.getInnerLeft(); + l = this.getInnerTop(); for (StringView stringView3 : this.textField.iterateLines()) { if (stringView2.beginIndex() > stringView3.endIndex()) { @@ -182,11 +167,6 @@ public class MultiLineEditBox extends AbstractScrollWidget { return 9 * this.textField.getLineCount(); } - @Override - protected boolean scrollbarVisible() { - return this.textField.getLineCount() > this.getDisplayableLineCount(); - } - @Override protected double scrollRate() { return 9.0 / 2.0; @@ -211,10 +191,6 @@ public class MultiLineEditBox extends AbstractScrollWidget { this.setScrollAmount(d); } - private double getDisplayableLineCount() { - return (this.height - this.totalInnerPadding()) / 9.0; - } - private void seekCursorScreen(double mouseX, double mouseY) { double d = mouseX - this.getX() - this.innerPadding(); double e = mouseY - this.getY() - this.innerPadding() + this.scrollAmount(); diff --git a/net/minecraft/client/gui/components/MultiLineTextWidget.java b/net/minecraft/client/gui/components/MultiLineTextWidget.java index 8f786950..0c313cd1 100644 --- a/net/minecraft/client/gui/components/MultiLineTextWidget.java +++ b/net/minecraft/client/gui/components/MultiLineTextWidget.java @@ -30,8 +30,8 @@ public class MultiLineTextWidget extends AbstractStringWidget { this.active = false; } - public MultiLineTextWidget setColor(int color) { - super.setColor(color); + public MultiLineTextWidget setColor(int i) { + super.setColor(i); return this; } diff --git a/net/minecraft/client/gui/components/ObjectSelectionList.java b/net/minecraft/client/gui/components/ObjectSelectionList.java index 242b058c..c4761885 100644 --- a/net/minecraft/client/gui/components/ObjectSelectionList.java +++ b/net/minecraft/client/gui/components/ObjectSelectionList.java @@ -20,6 +20,10 @@ public abstract class ObjectSelectionList super(minecraft, i, j, k, l); } + public ObjectSelectionList(Minecraft minecraft, int i, int j, int k, int l, int m) { + super(minecraft, i, j, k, l, m); + } + @Nullable @Override public ComponentPath nextFocusPath(FocusNavigationEvent event) { @@ -27,7 +31,12 @@ public abstract class ObjectSelectionList return null; } else if (this.isFocused() && event instanceof ArrowNavigation arrowNavigation) { E entry = this.nextEntry(arrowNavigation.direction()); - return entry != null ? ComponentPath.path(this, ComponentPath.leaf(entry)) : null; + if (entry != null) { + return ComponentPath.path(this, ComponentPath.leaf(entry)); + } else { + this.setSelected(null); + return null; + } } else if (!this.isFocused()) { E entry2 = this.getSelected(); if (entry2 == null) { diff --git a/net/minecraft/client/gui/components/PlayerTabOverlay.java b/net/minecraft/client/gui/components/PlayerTabOverlay.java index 2aa65532..a275b640 100644 --- a/net/minecraft/client/gui/components/PlayerTabOverlay.java +++ b/net/minecraft/client/gui/components/PlayerTabOverlay.java @@ -17,7 +17,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.multiplayer.PlayerInfo; -import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; @@ -28,14 +27,13 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.player.PlayerModelPart; import net.minecraft.world.level.GameType; import net.minecraft.world.scores.Objective; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.ReadOnlyScoreInfo; import net.minecraft.world.scores.ScoreHolder; import net.minecraft.world.scores.Scoreboard; -import net.minecraft.world.scores.criteria.ObjectiveCriteria; +import net.minecraft.world.scores.criteria.ObjectiveCriteria.RenderType; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @@ -124,7 +122,7 @@ public class PlayerTabOverlay { l = readOnlyScoreInfo.value(); } - if (objective.getRenderType() != ObjectiveCriteria.RenderType.HEARTS) { + if (objective.getRenderType() != RenderType.HEARTS) { NumberFormat numberFormat = objective.numberFormatOrDefault(StyledFormat.PLAYER_LIST_DEFAULT); component2 = ReadOnlyScoreInfo.safeFormatValue(readOnlyScoreInfo, numberFormat); m = this.minecraft.font.width(component2); @@ -151,7 +149,7 @@ public class PlayerTabOverlay { boolean bl = this.minecraft.isLocalServer() || this.minecraft.getConnection().getConnection().isEncrypted(); int q; if (objective != null) { - if (objective.getRenderType() == ObjectiveCriteria.RenderType.HEARTS) { + if (objective.getRenderType() == RenderType.HEARTS) { q = 90; } else { q = k; @@ -210,8 +208,7 @@ public class PlayerTabOverlay { if (bl) { Player player = this.minecraft.level.getPlayerByUUID(gameProfile.getId()); boolean bl2 = player != null && LivingEntityRenderer.isEntityUpsideDown(player); - boolean bl3 = player != null && player.isModelPartShown(PlayerModelPart.HAT); - PlayerFaceRenderer.draw(guiGraphics, playerInfo2.getSkin().texture(), y, z, 8, bl3, bl2, -1); + PlayerFaceRenderer.draw(guiGraphics, playerInfo2.getSkin().texture(), y, z, 8, playerInfo2.showHat(), bl2, -1); y += 9; } @@ -258,14 +255,14 @@ public class PlayerTabOverlay { guiGraphics.pose().pushPose(); guiGraphics.pose().translate(0.0F, 0.0F, 100.0F); - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, x + width - 11, y, 10, 8); + guiGraphics.blitSprite(net.minecraft.client.renderer.RenderType::guiTextured, resourceLocation, x + width - 11, y, 10, 8); guiGraphics.pose().popPose(); } private void renderTablistScore( Objective objective, int y, PlayerTabOverlay.ScoreDisplayEntry displayEntry, int minX, int maxX, UUID playerUuid, GuiGraphics guiGraphics ) { - if (objective.getRenderType() == ObjectiveCriteria.RenderType.HEARTS) { + if (objective.getRenderType() == RenderType.HEARTS) { this.renderTablistHearts(y, minX, maxX, playerUuid, guiGraphics, displayEntry.score); } else if (displayEntry.formattedScore != null) { guiGraphics.drawString(this.minecraft.font, displayEntry.formattedScore, maxX - displayEntry.scoreWidth, y, 16777215); @@ -298,27 +295,31 @@ public class PlayerTabOverlay { ResourceLocation resourceLocation = bl ? HEART_CONTAINER_BLINKING_SPRITE : HEART_CONTAINER_SPRITE; for (int l = i; l < j; l++) { - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, minX + l * k, y, 9, 9); + guiGraphics.blitSprite(net.minecraft.client.renderer.RenderType::guiTextured, resourceLocation, minX + l * k, y, 9, 9); } for (int l = 0; l < i; l++) { - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, minX + l * k, y, 9, 9); + guiGraphics.blitSprite(net.minecraft.client.renderer.RenderType::guiTextured, resourceLocation, minX + l * k, y, 9, 9); if (bl) { if (l * 2 + 1 < healthState.displayedValue()) { - guiGraphics.blitSprite(RenderType::guiTextured, HEART_FULL_BLINKING_SPRITE, minX + l * k, y, 9, 9); + guiGraphics.blitSprite(net.minecraft.client.renderer.RenderType::guiTextured, HEART_FULL_BLINKING_SPRITE, minX + l * k, y, 9, 9); } if (l * 2 + 1 == healthState.displayedValue()) { - guiGraphics.blitSprite(RenderType::guiTextured, HEART_HALF_BLINKING_SPRITE, minX + l * k, y, 9, 9); + guiGraphics.blitSprite(net.minecraft.client.renderer.RenderType::guiTextured, HEART_HALF_BLINKING_SPRITE, minX + l * k, y, 9, 9); } } if (l * 2 + 1 < health) { - guiGraphics.blitSprite(RenderType::guiTextured, l >= 10 ? HEART_ABSORBING_FULL_BLINKING_SPRITE : HEART_FULL_SPRITE, minX + l * k, y, 9, 9); + guiGraphics.blitSprite( + net.minecraft.client.renderer.RenderType::guiTextured, l >= 10 ? HEART_ABSORBING_FULL_BLINKING_SPRITE : HEART_FULL_SPRITE, minX + l * k, y, 9, 9 + ); } if (l * 2 + 1 == health) { - guiGraphics.blitSprite(RenderType::guiTextured, l >= 10 ? HEART_ABSORBING_HALF_BLINKING_SPRITE : HEART_HALF_SPRITE, minX + l * k, y, 9, 9); + guiGraphics.blitSprite( + net.minecraft.client.renderer.RenderType::guiTextured, l >= 10 ? HEART_ABSORBING_HALF_BLINKING_SPRITE : HEART_HALF_SPRITE, minX + l * k, y, 9, 9 + ); } } } diff --git a/net/minecraft/client/gui/components/StringWidget.java b/net/minecraft/client/gui/components/StringWidget.java index 2797f676..b85db13c 100644 --- a/net/minecraft/client/gui/components/StringWidget.java +++ b/net/minecraft/client/gui/components/StringWidget.java @@ -22,13 +22,13 @@ public class StringWidget extends AbstractStringWidget { this(0, 0, width, height, message, font); } - public StringWidget(int x, int y, int width, int height, Component message, Font font) { - super(x, y, width, height, message, font); + public StringWidget(int i, int j, int k, int l, Component component, Font font) { + super(i, j, k, l, component, font); this.active = false; } - public StringWidget setColor(int color) { - super.setColor(color); + public StringWidget setColor(int i) { + super.setColor(i); return this; } diff --git a/net/minecraft/client/gui/components/events/ContainerEventHandler.java b/net/minecraft/client/gui/components/events/ContainerEventHandler.java index fcb8c066..83acfa49 100644 --- a/net/minecraft/client/gui/components/events/ContainerEventHandler.java +++ b/net/minecraft/client/gui/components/events/ContainerEventHandler.java @@ -17,6 +17,8 @@ import net.minecraft.client.gui.navigation.ScreenAxis; import net.minecraft.client.gui.navigation.ScreenDirection; import net.minecraft.client.gui.navigation.ScreenPosition; import net.minecraft.client.gui.navigation.ScreenRectangle; +import net.minecraft.client.gui.navigation.FocusNavigationEvent.ArrowNavigation; +import net.minecraft.client.gui.navigation.FocusNavigationEvent.TabNavigation; import org.jetbrains.annotations.Nullable; import org.joml.Vector2i; @@ -42,18 +44,20 @@ public interface ContainerEventHandler extends GuiEventListener { @Override default boolean mouseClicked(double mouseX, double mouseY, int button) { - for (GuiEventListener guiEventListener : this.children()) { + Optional optional = this.getChildAt(mouseX, mouseY); + if (optional.isEmpty()) { + return false; + } else { + GuiEventListener guiEventListener = (GuiEventListener)optional.get(); if (guiEventListener.mouseClicked(mouseX, mouseY, button)) { this.setFocused(guiEventListener); if (button == 0) { this.setDragging(true); } - - return true; } - } - return false; + return true; + } } @Override @@ -145,10 +149,10 @@ public interface ContainerEventHandler extends GuiEventListener { } } - if (event instanceof FocusNavigationEvent.TabNavigation tabNavigation) { + if (event instanceof TabNavigation tabNavigation) { return this.handleTabNavigation(tabNavigation); } else { - return event instanceof FocusNavigationEvent.ArrowNavigation arrowNavigation ? this.handleArrowNavigation(arrowNavigation) : null; + return event instanceof ArrowNavigation arrowNavigation ? this.handleArrowNavigation(arrowNavigation) : null; } } @@ -160,7 +164,7 @@ public interface ContainerEventHandler extends GuiEventListener { * @param tabNavigation The tab navigation event. */ @Nullable - private ComponentPath handleTabNavigation(FocusNavigationEvent.TabNavigation tabNavigation) { + private ComponentPath handleTabNavigation(TabNavigation tabNavigation) { boolean bl = tabNavigation.forward(); GuiEventListener guiEventListener = this.getFocused(); List list = new ArrayList(this.children()); @@ -198,11 +202,11 @@ public interface ContainerEventHandler extends GuiEventListener { * @param arrowNavigation The arrow navigation event. */ @Nullable - private ComponentPath handleArrowNavigation(FocusNavigationEvent.ArrowNavigation arrowNavigation) { + private ComponentPath handleArrowNavigation(ArrowNavigation arrowNavigation) { GuiEventListener guiEventListener = this.getFocused(); if (guiEventListener == null) { ScreenDirection screenDirection = arrowNavigation.direction(); - ScreenRectangle screenRectangle = this.getRectangle().getBorder(screenDirection.getOpposite()); + ScreenRectangle screenRectangle = this.getBorderForArrowNavigation(screenDirection.getOpposite()); return ComponentPath.path(this, this.nextFocusPathInDirection(screenRectangle, screenDirection, null, arrowNavigation)); } else { ScreenRectangle screenRectangle2 = guiEventListener.getRectangle(); diff --git a/net/minecraft/client/gui/components/events/GuiEventListener.java b/net/minecraft/client/gui/components/events/GuiEventListener.java index b6c07bd8..f091c61c 100644 --- a/net/minecraft/client/gui/components/events/GuiEventListener.java +++ b/net/minecraft/client/gui/components/events/GuiEventListener.java @@ -5,6 +5,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.gui.ComponentPath; import net.minecraft.client.gui.components.TabOrderedElement; import net.minecraft.client.gui.navigation.FocusNavigationEvent; +import net.minecraft.client.gui.navigation.ScreenDirection; import net.minecraft.client.gui.navigation.ScreenRectangle; import org.jetbrains.annotations.Nullable; @@ -159,4 +160,8 @@ public interface GuiEventListener extends TabOrderedElement { default ScreenRectangle getRectangle() { return ScreenRectangle.empty(); } + + default ScreenRectangle getBorderForArrowNavigation(ScreenDirection direction) { + return this.getRectangle().getBorder(direction); + } } diff --git a/net/minecraft/client/gui/components/tabs/TabNavigationBar.java b/net/minecraft/client/gui/components/tabs/TabNavigationBar.java index d5c0c29c..b13acb89 100644 --- a/net/minecraft/client/gui/components/tabs/TabNavigationBar.java +++ b/net/minecraft/client/gui/components/tabs/TabNavigationBar.java @@ -19,7 +19,6 @@ import net.minecraft.client.gui.layouts.LinearLayout; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarratedElementType; import net.minecraft.client.gui.narration.NarrationElementOutput; -import net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority; import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.gui.navigation.FocusNavigationEvent.TabNavigation; @@ -64,6 +63,14 @@ public class TabNavigationBar extends AbstractContainerEventHandler implements R this.width = width; } + @Override + public boolean isMouseOver(double mouseX, double mouseY) { + return mouseX >= this.layout.getX() + && mouseY >= this.layout.getY() + && mouseX < this.layout.getX() + this.layout.getWidth() + && mouseY < this.layout.getY() + this.layout.getHeight(); + } + @Override public void setFocused(boolean focused) { super.setFocused(focused); @@ -99,8 +106,12 @@ public class TabNavigationBar extends AbstractContainerEventHandler implements R } @Override - public NarrationPriority narrationPriority() { - return (NarrationPriority)this.tabButtons.stream().map(AbstractWidget::narrationPriority).max(Comparator.naturalOrder()).orElse(NarrationPriority.NONE); + public NarratableEntry.NarrationPriority narrationPriority() { + return (NarratableEntry.NarrationPriority)this.tabButtons + .stream() + .map(AbstractWidget::narrationPriority) + .max(Comparator.naturalOrder()) + .orElse(NarratableEntry.NarrationPriority.NONE); } @Override diff --git a/net/minecraft/client/gui/components/toasts/SystemToast.java b/net/minecraft/client/gui/components/toasts/SystemToast.java index b152e1ff..adbe55a8 100644 --- a/net/minecraft/client/gui/components/toasts/SystemToast.java +++ b/net/minecraft/client/gui/components/toasts/SystemToast.java @@ -8,6 +8,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.toasts.Toast.Visibility; import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -28,7 +29,7 @@ public class SystemToast implements Toast { private boolean changed; private final int width; private boolean forceHide; - private Toast.Visibility wantedVisibility = Toast.Visibility.HIDE; + private Visibility wantedVisibility = Visibility.HIDE; public SystemToast(SystemToast.SystemToastId id, Component title, @Nullable Component message) { this( @@ -72,7 +73,7 @@ public class SystemToast implements Toast { } @Override - public Toast.Visibility getWantedVisibility() { + public Visibility getWantedVisibility() { return this.wantedVisibility; } @@ -85,51 +86,23 @@ public class SystemToast implements Toast { double d = this.id.displayTime * toastManager.getNotificationDisplayTimeMultiplier(); long l = visibilityTime - this.lastChanged; - this.wantedVisibility = !this.forceHide && l < d ? Toast.Visibility.SHOW : Toast.Visibility.HIDE; + this.wantedVisibility = !this.forceHide && l < d ? Visibility.SHOW : Visibility.HIDE; } @Override public void render(GuiGraphics guiGraphics, Font font, long visibilityTime) { - int i = this.width(); - if (i == 160 && this.messageLines.size() <= 1) { - guiGraphics.blitSprite(RenderType::guiTextured, BACKGROUND_SPRITE, 0, 0, i, this.height()); - } else { - int j = this.height(); - int k = 28; - int l = Math.min(4, j - 28); - this.renderBackgroundRow(guiGraphics, i, 0, 0, 28); - - for (int m = 28; m < j - l; m += 10) { - this.renderBackgroundRow(guiGraphics, i, 16, m, Math.min(16, j - m - l)); - } - - this.renderBackgroundRow(guiGraphics, i, 32 - l, j - l, l); - } - + guiGraphics.blitSprite(RenderType::guiTextured, BACKGROUND_SPRITE, 0, 0, this.width(), this.height()); if (this.messageLines.isEmpty()) { guiGraphics.drawString(font, this.title, 18, 12, -256, false); } else { guiGraphics.drawString(font, this.title, 18, 7, -256, false); - for (int j = 0; j < this.messageLines.size(); j++) { - guiGraphics.drawString(font, (FormattedCharSequence)this.messageLines.get(j), 18, 18 + j * 12, -1, false); + for (int i = 0; i < this.messageLines.size(); i++) { + guiGraphics.drawString(font, (FormattedCharSequence)this.messageLines.get(i), 18, 18 + i * 12, -1, false); } } } - private void renderBackgroundRow(GuiGraphics guiGraphics, int width, int vOffset, int y, int height) { - int i = vOffset == 0 ? 20 : 5; - int j = Math.min(60, width - i); - ResourceLocation resourceLocation = BACKGROUND_SPRITE; - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, 160, 32, 0, vOffset, 0, y, i, height); - - for (int k = i; k < width - j; k += 64) { - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, 160, 32, 32, vOffset, k, y, Math.min(64, width - k - j), height); - } - - guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, 160, 32, 160 - j, vOffset, width - j, y, j, height); - } - public void reset(Component title, @Nullable Component message) { this.title = title; this.messageLines = nullToEmpty(message); diff --git a/net/minecraft/client/gui/components/toasts/TutorialToast.java b/net/minecraft/client/gui/components/toasts/TutorialToast.java index 8bf6e618..3b5cc716 100644 --- a/net/minecraft/client/gui/components/toasts/TutorialToast.java +++ b/net/minecraft/client/gui/components/toasts/TutorialToast.java @@ -1,12 +1,16 @@ package net.minecraft.client.gui.components.toasts; +import java.util.ArrayList; +import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.toasts.Toast.Visibility; import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; @@ -16,32 +20,39 @@ public class TutorialToast implements Toast { public static final int PROGRESS_BAR_WIDTH = 154; public static final int PROGRESS_BAR_HEIGHT = 1; public static final int PROGRESS_BAR_X = 3; - public static final int PROGRESS_BAR_Y = 28; + public static final int PROGRESS_BAR_MARGIN_BOTTOM = 4; + private static final int PADDING_TOP = 7; + private static final int PADDING_BOTTOM = 3; + private static final int LINE_SPACING = 11; + private static final int TEXT_LEFT = 30; + private static final int TEXT_WIDTH = 126; private final TutorialToast.Icons icon; - private final Component title; - @Nullable - private final Component message; - private Toast.Visibility visibility = Toast.Visibility.SHOW; + private final List lines; + private Visibility visibility = Visibility.SHOW; private long lastSmoothingTime; private float smoothedProgress; private float progress; private final boolean progressable; private final int timeToDisplayMs; - public TutorialToast(TutorialToast.Icons icon, Component title, @Nullable Component message, boolean progressable, int timeToDisplayMs) { + public TutorialToast(Font font, TutorialToast.Icons icon, Component title, @Nullable Component message, boolean progressable, int timeToDisplayMs) { this.icon = icon; - this.title = title; - this.message = message; + this.lines = new ArrayList(2); + this.lines.addAll(font.split(title.copy().withColor(-11534256), 126)); + if (message != null) { + this.lines.addAll(font.split(message, 126)); + } + this.progressable = progressable; this.timeToDisplayMs = timeToDisplayMs; } - public TutorialToast(TutorialToast.Icons icon, Component title, @Nullable Component message, boolean progressable) { - this(icon, title, message, progressable, 0); + public TutorialToast(Font font, TutorialToast.Icons icon, Component title, @Nullable Component message, boolean progressable) { + this(font, icon, title, message, progressable, 0); } @Override - public Toast.Visibility getWantedVisibility() { + public Visibility getWantedVisibility() { return this.visibility; } @@ -60,32 +71,43 @@ public class TutorialToast implements Toast { } } + @Override + public int height() { + return 7 + this.contentHeight() + 3; + } + + private int contentHeight() { + return Math.max(this.lines.size(), 2) * 11; + } + @Override public void render(GuiGraphics guiGraphics, Font font, long visibilityTime) { - guiGraphics.blitSprite(RenderType::guiTextured, BACKGROUND_SPRITE, 0, 0, this.width(), this.height()); + int i = this.height(); + guiGraphics.blitSprite(RenderType::guiTextured, BACKGROUND_SPRITE, 0, 0, this.width(), i); this.icon.render(guiGraphics, 6, 6); - if (this.message == null) { - guiGraphics.drawString(font, this.title, 30, 12, -11534256, false); - } else { - guiGraphics.drawString(font, this.title, 30, 7, -11534256, false); - guiGraphics.drawString(font, this.message, 30, 18, -16777216, false); + int j = this.lines.size() * 11; + int k = 7 + (this.contentHeight() - j) / 2; + + for (int l = 0; l < this.lines.size(); l++) { + guiGraphics.drawString(font, (FormattedCharSequence)this.lines.get(l), 30, k + l * 11, -16777216, false); } if (this.progressable) { - guiGraphics.fill(3, 28, 157, 29, -1); - int i; + int l = i - 4; + guiGraphics.fill(3, l, 157, l + 1, -1); + int m; if (this.progress >= this.smoothedProgress) { - i = -16755456; + m = -16755456; } else { - i = -11206656; + m = -11206656; } - guiGraphics.fill(3, 28, (int)(3.0F + 154.0F * this.smoothedProgress), 29, i); + guiGraphics.fill(3, l, (int)(3.0F + 154.0F * this.smoothedProgress), l + 1, m); } } public void hide() { - this.visibility = Toast.Visibility.HIDE; + this.visibility = Visibility.HIDE; } public void updateProgress(float progress) { diff --git a/net/minecraft/client/gui/font/FontTexture.java b/net/minecraft/client/gui/font/FontTexture.java index 8bc67e3b..91ca274c 100644 --- a/net/minecraft/client/gui/font/FontTexture.java +++ b/net/minecraft/client/gui/font/FontTexture.java @@ -10,7 +10,6 @@ import net.minecraft.client.gui.font.glyphs.BakedGlyph; import net.minecraft.client.renderer.texture.AbstractTexture; import net.minecraft.client.renderer.texture.Dumpable; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @@ -24,13 +23,10 @@ public class FontTexture extends AbstractTexture implements Dumpable { this.colored = colored; this.root = new FontTexture.Node(0, 0, 256, 256); TextureUtil.prepareImage(colored ? NativeImage.InternalGlFormat.RGBA : NativeImage.InternalGlFormat.RED, this.getId(), 256, 256); + this.setFilter(false, false); this.renderTypes = renderTypes; } - @Override - public void load(ResourceManager resourceManager) { - } - @Override public void close() { this.releaseId(); diff --git a/net/minecraft/client/gui/font/glyphs/BakedGlyph.java b/net/minecraft/client/gui/font/glyphs/BakedGlyph.java index efc62916..19070f74 100644 --- a/net/minecraft/client/gui/font/glyphs/BakedGlyph.java +++ b/net/minecraft/client/gui/font/glyphs/BakedGlyph.java @@ -11,6 +11,7 @@ import org.joml.Matrix4f; @Environment(EnvType.CLIENT) public class BakedGlyph { + public static final float Z_FIGHTER = 0.001F; private final GlyphRenderTypes renderTypes; private final float u0; private final float u1; @@ -39,30 +40,71 @@ public class BakedGlyph { float f = glyph.x(); float g = glyph.y(); int i = glyph.color(); - this.render(bl, f, g, pose, buffer, i, packedLight); - if (style.isBold()) { - this.render(bl, f + glyph.boldOffset(), g, pose, buffer, i, packedLight); + int j = glyph.shadowColor(); + boolean bl2 = style.isBold(); + if (glyph.hasShadow()) { + this.render(bl, f + glyph.shadowOffset(), g + glyph.shadowOffset(), pose, buffer, j, bl2, packedLight); + this.render(bl, f, g, 0.03F, pose, buffer, i, bl2, packedLight); + } else { + this.render(bl, f, g, pose, buffer, i, bl2, packedLight); + } + + if (bl2) { + if (glyph.hasShadow()) { + this.render(bl, f + glyph.boldOffset() + glyph.shadowOffset(), g + glyph.shadowOffset(), 0.001F, pose, buffer, j, true, packedLight); + this.render(bl, f + glyph.boldOffset(), g, 0.03F, pose, buffer, i, true, packedLight); + } else { + this.render(bl, f + glyph.boldOffset(), g, pose, buffer, i, true, packedLight); + } } } - private void render(boolean italic, float x, float y, Matrix4f pose, VertexConsumer buffer, int color, int packedLight) { + private void render(boolean italic, float x, float y, Matrix4f pose, VertexConsumer buffer, int color, boolean bold, int packedLight) { + this.render(italic, x, y, 0.0F, pose, buffer, color, bold, packedLight); + } + + private void render(boolean italic, float x, float y, float z, Matrix4f pose, VertexConsumer buffer, int color, boolean bold, int packedLight) { float f = x + this.left; float g = x + this.right; float h = y + this.up; float i = y + this.down; float j = italic ? 1.0F - 0.25F * this.up : 0.0F; float k = italic ? 1.0F - 0.25F * this.down : 0.0F; - buffer.addVertex(pose, f + j, h, 0.0F).setColor(color).setUv(this.u0, this.v0).setLight(packedLight); - buffer.addVertex(pose, f + k, i, 0.0F).setColor(color).setUv(this.u0, this.v1).setLight(packedLight); - buffer.addVertex(pose, g + k, i, 0.0F).setColor(color).setUv(this.u1, this.v1).setLight(packedLight); - buffer.addVertex(pose, g + j, h, 0.0F).setColor(color).setUv(this.u1, this.v0).setLight(packedLight); + float l = bold ? 0.1F : 0.0F; + buffer.addVertex(pose, f + j - l, h - l, z).setColor(color).setUv(this.u0, this.v0).setLight(packedLight); + buffer.addVertex(pose, f + k - l, i + l, z).setColor(color).setUv(this.u0, this.v1).setLight(packedLight); + buffer.addVertex(pose, g + k + l, i + l, z).setColor(color).setUv(this.u1, this.v1).setLight(packedLight); + buffer.addVertex(pose, g + j + l, h - l, z).setColor(color).setUv(this.u1, this.v0).setLight(packedLight); } - public void renderEffect(BakedGlyph.Effect effect, Matrix4f matrix, VertexConsumer buffer, int packedLight) { - buffer.addVertex(matrix, effect.x0, effect.y0, effect.depth).setColor(effect.color).setUv(this.u0, this.v0).setLight(packedLight); - buffer.addVertex(matrix, effect.x1, effect.y0, effect.depth).setColor(effect.color).setUv(this.u0, this.v1).setLight(packedLight); - buffer.addVertex(matrix, effect.x1, effect.y1, effect.depth).setColor(effect.color).setUv(this.u1, this.v1).setLight(packedLight); - buffer.addVertex(matrix, effect.x0, effect.y1, effect.depth).setColor(effect.color).setUv(this.u1, this.v0).setLight(packedLight); + public void renderEffect(BakedGlyph.Effect effect, Matrix4f pose, VertexConsumer buffer, int packedLight) { + if (effect.hasShadow()) { + this.buildEffect(effect, effect.shadowOffset(), 0.0F, effect.shadowColor(), buffer, packedLight, pose); + this.buildEffect(effect, 0.0F, 0.03F, effect.color, buffer, packedLight, pose); + } else { + this.buildEffect(effect, 0.0F, 0.0F, effect.color, buffer, packedLight, pose); + } + } + + private void buildEffect( + BakedGlyph.Effect effect, float shadowOffset, float depthOffset, int shadowColor, VertexConsumer buffer, int packedLight, Matrix4f pose + ) { + buffer.addVertex(pose, effect.x0 + shadowOffset, effect.y0 + shadowOffset, effect.depth + depthOffset) + .setColor(shadowColor) + .setUv(this.u0, this.v0) + .setLight(packedLight); + buffer.addVertex(pose, effect.x1 + shadowOffset, effect.y0 + shadowOffset, effect.depth + depthOffset) + .setColor(shadowColor) + .setUv(this.u0, this.v1) + .setLight(packedLight); + buffer.addVertex(pose, effect.x1 + shadowOffset, effect.y1 + shadowOffset, effect.depth + depthOffset) + .setColor(shadowColor) + .setUv(this.u1, this.v1) + .setLight(packedLight); + buffer.addVertex(pose, effect.x0 + shadowOffset, effect.y1 + shadowOffset, effect.depth + depthOffset) + .setColor(shadowColor) + .setUv(this.u1, this.v0) + .setLight(packedLight); } public RenderType renderType(Font.DisplayMode displayMode) { @@ -70,10 +112,21 @@ public class BakedGlyph { } @Environment(EnvType.CLIENT) - public record Effect(float x0, float y0, float x1, float y1, float depth, int color) { + public record Effect(float x0, float y0, float x1, float y1, float depth, int color, int shadowColor, float shadowOffset) { + + public Effect(float x0, float y0, float x1, float y1, float depth, int color) { + this(x0, y0, x1, y1, depth, color, 0, 0.0F); + } + + boolean hasShadow() { + return this.shadowColor() != 0; + } } @Environment(EnvType.CLIENT) - public record GlyphInstance(float x, float y, int color, BakedGlyph glyph, Style style, float boldOffset) { + public record GlyphInstance(float x, float y, int color, int shadowColor, BakedGlyph glyph, Style style, float boldOffset, float shadowOffset) { + boolean hasShadow() { + return this.shadowColor() != 0; + } } } diff --git a/net/minecraft/client/gui/font/providers/BitmapProvider.java b/net/minecraft/client/gui/font/providers/BitmapProvider.java index 2a3dac3a..2685f233 100644 --- a/net/minecraft/client/gui/font/providers/BitmapProvider.java +++ b/net/minecraft/client/gui/font/providers/BitmapProvider.java @@ -21,6 +21,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.font.CodepointMap; import net.minecraft.client.gui.font.glyphs.BakedGlyph; +import net.minecraft.client.gui.font.providers.BitmapProvider.Glyph.1; +import net.minecraft.client.gui.font.providers.GlyphProviderDefinition.Loader; +import net.minecraft.client.gui.font.providers.GlyphProviderDefinition.Reference; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import org.jetbrains.annotations.Nullable; @@ -120,13 +123,13 @@ public class BitmapProvider implements GlyphProvider { } @Override - public Either unpack() { + public Either unpack() { return Either.left(this::load); } - private GlyphProvider load(ResourceManager resoureManager) throws IOException { + private GlyphProvider load(ResourceManager resourceManager) throws IOException { ResourceLocation resourceLocation = this.file.withPrefix("textures/"); - InputStream inputStream = resoureManager.open(resourceLocation); + InputStream inputStream = resourceManager.open(resourceLocation); BitmapProvider var22; try { @@ -200,37 +203,7 @@ public class BitmapProvider implements GlyphProvider { @Override public BakedGlyph bake(Function function) { - return (BakedGlyph)function.apply(new SheetGlyphInfo() { - @Override - public float getOversample() { - return 1.0F / Glyph.this.scale; - } - - @Override - public int getPixelWidth() { - return Glyph.this.width; - } - - @Override - public int getPixelHeight() { - return Glyph.this.height; - } - - @Override - public float getBearingTop() { - return Glyph.this.ascent; - } - - @Override - public void upload(int xOffset, int yOffset) { - Glyph.this.image.upload(0, xOffset, yOffset, Glyph.this.offsetX, Glyph.this.offsetY, Glyph.this.width, Glyph.this.height, false, false); - } - - @Override - public boolean isColored() { - return Glyph.this.image.format().components() > 1; - } - }); + return (BakedGlyph)function.apply(new 1(this)); } } } diff --git a/net/minecraft/client/gui/layouts/FrameLayout.java b/net/minecraft/client/gui/layouts/FrameLayout.java index 8a1ccbdc..695cad12 100644 --- a/net/minecraft/client/gui/layouts/FrameLayout.java +++ b/net/minecraft/client/gui/layouts/FrameLayout.java @@ -6,6 +6,7 @@ import java.util.function.Consumer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; +import net.minecraft.client.gui.layouts.AbstractLayout.AbstractChildWrapper; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.util.Mth; @@ -24,9 +25,9 @@ public class FrameLayout extends AbstractLayout { this(0, 0, width, height); } - public FrameLayout(int x, int y, int width, int height) { - super(x, y, width, height); - this.setMinDimensions(width, height); + public FrameLayout(int i, int j, int k, int l) { + super(i, j, k, l); + this.setMinDimensions(k, l); } public FrameLayout setMinDimensions(int minWidth, int minHeight) { @@ -112,7 +113,7 @@ public class FrameLayout extends AbstractLayout { } @Environment(EnvType.CLIENT) - static class ChildContainer extends AbstractLayout.AbstractChildWrapper { + static class ChildContainer extends AbstractChildWrapper { protected ChildContainer(LayoutElement layoutElement, LayoutSettings layoutSettings) { super(layoutElement, layoutSettings); } diff --git a/net/minecraft/client/gui/layouts/LayoutSettings.java b/net/minecraft/client/gui/layouts/LayoutSettings.java index 8af224b8..7b7b78c9 100644 --- a/net/minecraft/client/gui/layouts/LayoutSettings.java +++ b/net/minecraft/client/gui/layouts/LayoutSettings.java @@ -82,59 +82,59 @@ public interface LayoutSettings { this.yAlignment = other.yAlignment; } - public LayoutSettings.LayoutSettingsImpl padding(int padding) { - return this.padding(padding, padding); + public LayoutSettings.LayoutSettingsImpl padding(int i) { + return this.padding(i, i); } - public LayoutSettings.LayoutSettingsImpl padding(int horizontalPadding, int verticalPadding) { - return this.paddingHorizontal(horizontalPadding).paddingVertical(verticalPadding); + public LayoutSettings.LayoutSettingsImpl padding(int i, int j) { + return this.paddingHorizontal(i).paddingVertical(j); } - public LayoutSettings.LayoutSettingsImpl padding(int paddingLeft, int paddingTop, int paddingRight, int paddingBottom) { - return this.paddingLeft(paddingLeft).paddingRight(paddingRight).paddingTop(paddingTop).paddingBottom(paddingBottom); + public LayoutSettings.LayoutSettingsImpl padding(int i, int j, int k, int l) { + return this.paddingLeft(i).paddingRight(k).paddingTop(j).paddingBottom(l); } - public LayoutSettings.LayoutSettingsImpl paddingLeft(int paddingLeft) { - this.paddingLeft = paddingLeft; + public LayoutSettings.LayoutSettingsImpl paddingLeft(int i) { + this.paddingLeft = i; return this; } - public LayoutSettings.LayoutSettingsImpl paddingTop(int paddingTop) { - this.paddingTop = paddingTop; + public LayoutSettings.LayoutSettingsImpl paddingTop(int i) { + this.paddingTop = i; return this; } - public LayoutSettings.LayoutSettingsImpl paddingRight(int paddingRight) { - this.paddingRight = paddingRight; + public LayoutSettings.LayoutSettingsImpl paddingRight(int i) { + this.paddingRight = i; return this; } - public LayoutSettings.LayoutSettingsImpl paddingBottom(int paddingBottom) { - this.paddingBottom = paddingBottom; + public LayoutSettings.LayoutSettingsImpl paddingBottom(int i) { + this.paddingBottom = i; return this; } - public LayoutSettings.LayoutSettingsImpl paddingHorizontal(int horizontalPadding) { - return this.paddingLeft(horizontalPadding).paddingRight(horizontalPadding); + public LayoutSettings.LayoutSettingsImpl paddingHorizontal(int i) { + return this.paddingLeft(i).paddingRight(i); } - public LayoutSettings.LayoutSettingsImpl paddingVertical(int verticalPadding) { - return this.paddingTop(verticalPadding).paddingBottom(verticalPadding); + public LayoutSettings.LayoutSettingsImpl paddingVertical(int i) { + return this.paddingTop(i).paddingBottom(i); } - public LayoutSettings.LayoutSettingsImpl align(float xAlignment, float yAlignment) { - this.xAlignment = xAlignment; - this.yAlignment = yAlignment; + public LayoutSettings.LayoutSettingsImpl align(float f, float g) { + this.xAlignment = f; + this.yAlignment = g; return this; } - public LayoutSettings.LayoutSettingsImpl alignHorizontally(float xAlignment) { - this.xAlignment = xAlignment; + public LayoutSettings.LayoutSettingsImpl alignHorizontally(float f) { + this.xAlignment = f; return this; } - public LayoutSettings.LayoutSettingsImpl alignVertically(float yAlignment) { - this.yAlignment = yAlignment; + public LayoutSettings.LayoutSettingsImpl alignVertically(float f) { + this.yAlignment = f; return this; } diff --git a/net/minecraft/client/gui/narration/NarratableEntry.java b/net/minecraft/client/gui/narration/NarratableEntry.java index 61306cbc..4f8d84aa 100644 --- a/net/minecraft/client/gui/narration/NarratableEntry.java +++ b/net/minecraft/client/gui/narration/NarratableEntry.java @@ -1,5 +1,7 @@ package net.minecraft.client.gui.narration; +import java.util.Collection; +import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.components.TabOrderedElement; @@ -21,6 +23,10 @@ public interface NarratableEntry extends TabOrderedElement, NarrationSupplier { return true; } + default Collection getNarratables() { + return List.of(this); + } + /** * The narration priority levels. */ diff --git a/net/minecraft/client/gui/navigation/ScreenRectangle.java b/net/minecraft/client/gui/navigation/ScreenRectangle.java index d3ad7ff5..f32a3145 100644 --- a/net/minecraft/client/gui/navigation/ScreenRectangle.java +++ b/net/minecraft/client/gui/navigation/ScreenRectangle.java @@ -1,8 +1,12 @@ package net.minecraft.client.gui.navigation; +import com.mojang.math.MatrixUtil; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; +import org.joml.Vector3f; @Environment(EnvType.CLIENT) public record ScreenRectangle(ScreenPosition position, int width, int height) { @@ -91,4 +95,14 @@ public record ScreenRectangle(ScreenPosition position, int width, int height) { public boolean containsPoint(int x, int y) { return x >= this.left() && x < this.right() && y >= this.top() && y < this.bottom(); } + + public ScreenRectangle transformAxisAligned(Matrix4f pose) { + if (MatrixUtil.isIdentity(pose)) { + return this; + } else { + Vector3f vector3f = pose.transformPosition(this.left(), this.top(), 0.0F, new Vector3f()); + Vector3f vector3f2 = pose.transformPosition(this.right(), this.bottom(), 0.0F, new Vector3f()); + return new ScreenRectangle(Mth.floor(vector3f.x), Mth.floor(vector3f.y), Mth.floor(vector3f2.x - vector3f.x), Mth.floor(vector3f2.y - vector3f.y)); + } + } } diff --git a/net/minecraft/client/gui/screens/ConnectScreen.java b/net/minecraft/client/gui/screens/ConnectScreen.java index 1c134006..63a98e30 100644 --- a/net/minecraft/client/gui/screens/ConnectScreen.java +++ b/net/minecraft/client/gui/screens/ConnectScreen.java @@ -16,12 +16,13 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.multiplayer.ClientHandshakePacketListenerImpl; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.multiplayer.TransferState; +import net.minecraft.client.multiplayer.ServerData.ServerPackStatus; import net.minecraft.client.multiplayer.chat.report.ReportEnvironment; import net.minecraft.client.multiplayer.resolver.ResolvedServerAddress; import net.minecraft.client.multiplayer.resolver.ServerAddress; import net.minecraft.client.multiplayer.resolver.ServerNameResolver; import net.minecraft.client.quickplay.QuickPlay; -import net.minecraft.client.quickplay.QuickPlayLog; +import net.minecraft.client.quickplay.QuickPlayLog.Type; import net.minecraft.client.resources.server.ServerPackManager.PackPromptStatus; import net.minecraft.network.Connection; import net.minecraft.network.chat.CommonComponents; @@ -78,7 +79,7 @@ public class ConnectScreen extends Screen { minecraft.disconnect(); minecraft.prepareForMultiplayer(); minecraft.updateReportEnvironment(ReportEnvironment.thirdParty(serverData.ip)); - minecraft.quickPlayLog().setWorldData(QuickPlayLog.Type.MULTIPLAYER, serverData.ip, serverData.name); + minecraft.quickPlayLog().setWorldData(Type.MULTIPLAYER, serverData.ip, serverData.name); minecraft.setScreen(connectScreen); connectScreen.connect(minecraft, serverAddress, serverData, transferState); } @@ -168,7 +169,7 @@ public class ConnectScreen extends Screen { } } - private static PackPromptStatus convertPackStatus(ServerData.ServerPackStatus packStatus) { + private static PackPromptStatus convertPackStatus(ServerPackStatus packStatus) { return switch (packStatus) { case ENABLED -> PackPromptStatus.ALLOWED; case DISABLED -> PackPromptStatus.DECLINED; diff --git a/net/minecraft/client/gui/screens/CreateFlatWorldScreen.java b/net/minecraft/client/gui/screens/CreateFlatWorldScreen.java index cde5e71e..eb47b791 100644 --- a/net/minecraft/client/gui/screens/CreateFlatWorldScreen.java +++ b/net/minecraft/client/gui/screens/CreateFlatWorldScreen.java @@ -4,9 +4,12 @@ import java.util.List; import java.util.function.Consumer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ObjectSelectionList; +import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; +import net.minecraft.client.gui.layouts.LinearLayout; import net.minecraft.client.gui.screens.CreateFlatWorldScreen.DetailsList.Entry; import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen; import net.minecraft.network.chat.CommonComponents; @@ -18,6 +21,7 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class CreateFlatWorldScreen extends Screen { + private static final Component TITLE = Component.translatable("createWorld.customize.flat.title"); static final ResourceLocation SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/slot"); private static final int SLOT_BG_SIZE = 18; private static final int SLOT_STAT_HEIGHT = 20; @@ -25,25 +29,20 @@ public class CreateFlatWorldScreen extends Screen { private static final int SLOT_BG_Y = 1; private static final int SLOT_FG_X = 2; private static final int SLOT_FG_Y = 2; + private final HeaderAndFooterLayout layout = new HeaderAndFooterLayout(this, 33, 64); protected final CreateWorldScreen parent; private final Consumer applySettings; FlatLevelGeneratorSettings generator; - /** - * The text used to identify the material for a layer - */ - private Component columnType; - /** - * The text used to identify the height of a layer - */ - private Component columnHeight; + @Nullable private CreateFlatWorldScreen.DetailsList list; /** * The remove layer button */ + @Nullable private Button deleteLayerButton; public CreateFlatWorldScreen(CreateWorldScreen parent, Consumer applySettings, FlatLevelGeneratorSettings generator) { - super(Component.translatable("createWorld.customize.flat.title")); + super(TITLE); this.parent = parent; this.applySettings = applySettings; this.generator = generator; @@ -55,14 +54,21 @@ public class CreateFlatWorldScreen extends Screen { public void setConfig(FlatLevelGeneratorSettings generator) { this.generator = generator; + if (this.list != null) { + this.list.resetRows(); + this.updateButtonValidity(); + } } @Override protected void init() { - this.columnType = Component.translatable("createWorld.customize.flat.tile"); - this.columnHeight = Component.translatable("createWorld.customize.flat.height"); - this.list = this.addRenderableWidget(new CreateFlatWorldScreen.DetailsList()); - this.deleteLayerButton = this.addRenderableWidget(Button.builder(Component.translatable("createWorld.customize.flat.removeLayer"), button -> { + this.layout.addTitleHeader(this.title, this.font); + this.list = this.layout.addToContents(new CreateFlatWorldScreen.DetailsList()); + LinearLayout linearLayout = this.layout.addToFooter(LinearLayout.vertical().spacing(4)); + linearLayout.defaultCellSetting().alignVerticallyMiddle(); + LinearLayout linearLayout2 = linearLayout.addChild(LinearLayout.horizontal().spacing(8)); + LinearLayout linearLayout3 = linearLayout.addChild(LinearLayout.horizontal().spacing(8)); + this.deleteLayerButton = linearLayout2.addChild(Button.builder(Component.translatable("createWorld.customize.flat.removeLayer"), button -> { if (this.hasValidSelection()) { List list = this.generator.getLayersInfo(); int i = this.list.children().indexOf(this.list.getSelected()); @@ -73,37 +79,50 @@ public class CreateFlatWorldScreen extends Screen { this.list.resetRows(); this.updateButtonValidity(); } - }).bounds(this.width / 2 - 155, this.height - 52, 150, 20).build()); - this.addRenderableWidget(Button.builder(Component.translatable("createWorld.customize.presets"), button -> { + }).build()); + linearLayout2.addChild(Button.builder(Component.translatable("createWorld.customize.presets"), button -> { this.minecraft.setScreen(new PresetFlatWorldScreen(this)); this.generator.updateLayers(); this.updateButtonValidity(); - }).bounds(this.width / 2 + 5, this.height - 52, 150, 20).build()); - this.addRenderableWidget(Button.builder(CommonComponents.GUI_DONE, button -> { + }).build()); + linearLayout3.addChild(Button.builder(CommonComponents.GUI_DONE, button -> { this.applySettings.accept(this.generator); - this.minecraft.setScreen(this.parent); + this.onClose(); this.generator.updateLayers(); - }).bounds(this.width / 2 - 155, this.height - 28, 150, 20).build()); - this.addRenderableWidget(Button.builder(CommonComponents.GUI_CANCEL, button -> { - this.minecraft.setScreen(this.parent); + }).build()); + linearLayout3.addChild(Button.builder(CommonComponents.GUI_CANCEL, button -> { + this.onClose(); this.generator.updateLayers(); - }).bounds(this.width / 2 + 5, this.height - 28, 150, 20).build()); + }).build()); this.generator.updateLayers(); this.updateButtonValidity(); + this.layout.visitWidgets(this::addRenderableWidget); + this.repositionElements(); + } + + @Override + protected void repositionElements() { + if (this.list != null) { + this.list.updateSize(this.width, this.layout); + } + + this.layout.arrangeElements(); } /** * Would update whether the edit and remove buttons are enabled, but is currently disabled and always disables the buttons (which are invisible anyway). */ void updateButtonValidity() { - this.deleteLayerButton.active = this.hasValidSelection(); + if (this.deleteLayerButton != null) { + this.deleteLayerButton.active = this.hasValidSelection(); + } } /** * Returns whether there is a valid layer selection */ private boolean hasValidSelection() { - return this.list.getSelected() != null; + return this.list != null && this.list.getSelected() != null; } @Override @@ -111,19 +130,13 @@ public class CreateFlatWorldScreen extends Screen { this.minecraft.setScreen(this.parent); } - @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - super.render(guiGraphics, mouseX, mouseY, partialTick); - guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 8, 16777215); - int i = this.width / 2 - 92 - 16; - guiGraphics.drawString(this.font, this.columnType, i, 32, 16777215); - guiGraphics.drawString(this.font, this.columnHeight, i + 2 + 213 - this.font.width(this.columnHeight), 32, 16777215); - } - @Environment(EnvType.CLIENT) class DetailsList extends ObjectSelectionList { + private static final Component LAYER_MATERIAL_TITLE = Component.translatable("createWorld.customize.flat.tile").withStyle(ChatFormatting.UNDERLINE); + private static final Component HEIGHT_TITLE = Component.translatable("createWorld.customize.flat.height").withStyle(ChatFormatting.UNDERLINE); + public DetailsList() { - super(CreateFlatWorldScreen.this.minecraft, CreateFlatWorldScreen.this.width, CreateFlatWorldScreen.this.height - 103, 43, 24); + super(CreateFlatWorldScreen.this.minecraft, CreateFlatWorldScreen.this.width, CreateFlatWorldScreen.this.height - 103, 43, 24, (int)(9.0 * 1.5)); for (int i = 0; i < CreateFlatWorldScreen.this.generator.getLayersInfo().size(); i++) { this.addEntry(new net.minecraft.client.gui.screens.CreateFlatWorldScreen.DetailsList.Entry(this)); @@ -148,5 +161,13 @@ public class CreateFlatWorldScreen extends Screen { this.setSelected((net.minecraft.client.gui.screens.CreateFlatWorldScreen.DetailsList.Entry)list.get(i)); } } + + @Override + protected void renderHeader(GuiGraphics guiGraphics, int x, int y) { + guiGraphics.drawString(CreateFlatWorldScreen.this.font, LAYER_MATERIAL_TITLE, x, y, -1); + guiGraphics.drawString( + CreateFlatWorldScreen.this.font, HEIGHT_TITLE, x + this.getRowWidth() - CreateFlatWorldScreen.this.font.width(HEIGHT_TITLE) - 8, y, -1 + ); + } } } diff --git a/net/minecraft/client/gui/screens/DeathScreen.java b/net/minecraft/client/gui/screens/DeathScreen.java index 8fd39a16..d2ce5413 100644 --- a/net/minecraft/client/gui/screens/DeathScreen.java +++ b/net/minecraft/client/gui/screens/DeathScreen.java @@ -9,10 +9,10 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.renderer.RenderType; -import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.ClickEvent.Action; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; @@ -151,7 +151,7 @@ public class DeathScreen extends Screen { public boolean mouseClicked(double mouseX, double mouseY, int button) { if (this.causeOfDeath != null && mouseY > 85.0 && mouseY < 85 + 9) { Style style = this.getClickedComponentStyleAt((int)mouseX); - if (style != null && style.getClickEvent() != null && style.getClickEvent().getAction() == ClickEvent.Action.OPEN_URL) { + if (style != null && style.getClickEvent() != null && style.getClickEvent().getAction() == Action.OPEN_URL) { this.handleComponentClicked(style); return false; } diff --git a/net/minecraft/client/gui/screens/EditServerScreen.java b/net/minecraft/client/gui/screens/EditServerScreen.java index e188377f..f131403e 100644 --- a/net/minecraft/client/gui/screens/EditServerScreen.java +++ b/net/minecraft/client/gui/screens/EditServerScreen.java @@ -9,6 +9,7 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.CycleButton; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.multiplayer.ServerData.ServerPackStatus; import net.minecraft.client.multiplayer.resolver.ServerAddress; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -43,8 +44,8 @@ public class EditServerScreen extends Screen { this.ipEdit.setResponder(string -> this.updateAddButtonStatus()); this.addWidget(this.ipEdit); this.addRenderableWidget( - CycleButton.builder(ServerData.ServerPackStatus::getName) - .withValues(ServerData.ServerPackStatus.values()) + CycleButton.builder(ServerPackStatus::getName) + .withValues(ServerPackStatus.values()) .withInitialValue(this.serverData.getResourcePackStatus()) .create( this.width / 2 - 100, diff --git a/net/minecraft/client/gui/screens/LoadingOverlay.java b/net/minecraft/client/gui/screens/LoadingOverlay.java index b2f8f9db..c4f22cbd 100644 --- a/net/minecraft/client/gui/screens/LoadingOverlay.java +++ b/net/minecraft/client/gui/screens/LoadingOverlay.java @@ -2,7 +2,6 @@ package net.minecraft.client.gui.screens; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.NativeImage; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Optional; @@ -14,14 +13,14 @@ import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.SimpleTexture; +import net.minecraft.client.renderer.texture.ReloadableTexture; +import net.minecraft.client.renderer.texture.TextureContents; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.metadata.texture.TextureMetadataSection; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.VanillaPackResources; -import net.minecraft.server.packs.resources.IoSupplier; import net.minecraft.server.packs.resources.ReloadInstance; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceProvider; import net.minecraft.util.ARGB; import net.minecraft.util.Mth; @@ -56,8 +55,8 @@ public class LoadingOverlay extends Overlay { this.fadeIn = fadeIn; } - public static void registerTextures(Minecraft minecraft) { - minecraft.getTextureManager().register(MOJANG_STUDIOS_LOGO_LOCATION, new LoadingOverlay.LogoTexture()); + public static void registerTextures(TextureManager textureManager) { + textureManager.registerAndLoad(MOJANG_STUDIOS_LOGO_LOCATION, new LoadingOverlay.LogoTexture()); } private static int replaceAlpha(int color, int alpha) { @@ -154,45 +153,36 @@ public class LoadingOverlay extends Overlay { } @Environment(EnvType.CLIENT) - static class LogoTexture extends SimpleTexture { + static class LogoTexture extends ReloadableTexture { public LogoTexture() { super(LoadingOverlay.MOJANG_STUDIOS_LOGO_LOCATION); } @Override - protected SimpleTexture.TextureImage getTextureImage(ResourceManager resourceManager) { - VanillaPackResources vanillaPackResources = Minecraft.getInstance().getVanillaPackResources(); - IoSupplier ioSupplier = vanillaPackResources.getResource(PackType.CLIENT_RESOURCES, LoadingOverlay.MOJANG_STUDIOS_LOGO_LOCATION); - if (ioSupplier == null) { - return new SimpleTexture.TextureImage(new FileNotFoundException(LoadingOverlay.MOJANG_STUDIOS_LOGO_LOCATION.toString())); - } else { - try { - InputStream inputStream = ioSupplier.get(); + public TextureContents loadContents(ResourceManager resourceManager) throws IOException { + ResourceProvider resourceProvider = Minecraft.getInstance().getVanillaPackResources().asProvider(); + InputStream inputStream = resourceProvider.open(LoadingOverlay.MOJANG_STUDIOS_LOGO_LOCATION); - SimpleTexture.TextureImage var5; + TextureContents var4; + try { + var4 = new TextureContents(NativeImage.read(inputStream), new TextureMetadataSection(true, true)); + } catch (Throwable var7) { + if (inputStream != null) { try { - var5 = new SimpleTexture.TextureImage(new TextureMetadataSection(true, true), NativeImage.read(inputStream)); - } catch (Throwable var8) { - if (inputStream != null) { - try { - inputStream.close(); - } catch (Throwable var7) { - var8.addSuppressed(var7); - } - } - - throw var8; - } - - if (inputStream != null) { inputStream.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); } - - return var5; - } catch (IOException var9) { - return new SimpleTexture.TextureImage(var9); } + + throw var7; } + + if (inputStream != null) { + inputStream.close(); + } + + return var4; } } } diff --git a/net/minecraft/client/gui/screens/PresetFlatWorldScreen.java b/net/minecraft/client/gui/screens/PresetFlatWorldScreen.java index daaed80e..958220e6 100644 --- a/net/minecraft/client/gui/screens/PresetFlatWorldScreen.java +++ b/net/minecraft/client/gui/screens/PresetFlatWorldScreen.java @@ -21,6 +21,7 @@ import net.minecraft.client.gui.screens.worldselection.WorldCreationContext; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.RegistryAccess; +import net.minecraft.core.Holder.Reference; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -90,7 +91,7 @@ public class PresetFlatWorldScreen extends Screen { int j = Math.min(currentHeight + i, DimensionType.Y_SIZE); int k = j - currentHeight; - Optional> optional; + Optional> optional; try { optional = blockGetter.get(ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(string))); } catch (Exception var10) { @@ -102,7 +103,7 @@ public class PresetFlatWorldScreen extends Screen { LOGGER.error("Error while parsing flat world string => Unknown block, {}", string); return null; } else { - return new FlatLayerInfo(k, (Block)((Holder.Reference)optional.get()).value()); + return new FlatLayerInfo(k, (Block)((Reference)optional.get()).value()); } } @@ -140,7 +141,7 @@ public class PresetFlatWorldScreen extends Screen { if (list.isEmpty()) { return FlatLevelGeneratorSettings.getDefault(biomeGetter, structureSetGetter, placedFeatureGetter); } else { - Holder.Reference reference = biomeGetter.getOrThrow(DEFAULT_BIOME); + Reference reference = biomeGetter.getOrThrow(DEFAULT_BIOME); Holder holder = reference; if (iterator.hasNext()) { String string = (String)iterator.next(); diff --git a/net/minecraft/client/gui/screens/RecoverWorldDataScreen.java b/net/minecraft/client/gui/screens/RecoverWorldDataScreen.java index ae225881..204d8bdf 100644 --- a/net/minecraft/client/gui/screens/RecoverWorldDataScreen.java +++ b/net/minecraft/client/gui/screens/RecoverWorldDataScreen.java @@ -23,7 +23,7 @@ import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.CommonLinks; -import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -45,9 +45,9 @@ public class RecoverWorldDataScreen extends Screen { private final Component message; private final MultiLineTextWidget messageWidget; private final MultiLineTextWidget issuesWidget; - private final LevelStorageSource.LevelStorageAccess storageAccess; + private final LevelStorageAccess storageAccess; - public RecoverWorldDataScreen(Minecraft minecraft, BooleanConsumer callback, LevelStorageSource.LevelStorageAccess storageAccess) { + public RecoverWorldDataScreen(Minecraft minecraft, BooleanConsumer callback, LevelStorageAccess storageAccess) { super(TITLE); this.callback = callback; this.message = Component.translatable("recover_world.message", Component.literal(storageAccess.getLevelId()).withStyle(ChatFormatting.GRAY)); @@ -97,7 +97,7 @@ public class RecoverWorldDataScreen extends Screen { } } - private Component buildInfo(LevelStorageSource.LevelStorageAccess level, boolean useFallback, @Nullable Exception exception) { + private Component buildInfo(LevelStorageAccess level, boolean useFallback, @Nullable Exception exception) { if (useFallback && exception instanceof FileNotFoundException) { return Component.empty(); } else { @@ -122,7 +122,7 @@ public class RecoverWorldDataScreen extends Screen { } @Nullable - private Exception collectIssue(LevelStorageSource.LevelStorageAccess level, boolean useFallback) { + private Exception collectIssue(LevelStorageAccess level, boolean useFallback) { try { if (!useFallback) { level.getSummary(level.getDataTag()); diff --git a/net/minecraft/client/gui/screens/Screen.java b/net/minecraft/client/gui/screens/Screen.java index c8b8745b..d8054e15 100644 --- a/net/minecraft/client/gui/screens/Screen.java +++ b/net/minecraft/client/gui/screens/Screen.java @@ -33,7 +33,6 @@ import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarratedElementType; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.narration.ScreenNarrationCollector; -import net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority; import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.navigation.ScreenDirection; import net.minecraft.client.gui.navigation.ScreenRectangle; @@ -48,6 +47,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.ClickEvent.Action; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.util.FormattedCharSequence; @@ -261,7 +261,7 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re this.insertText(style.getInsertion(), false); } } else if (clickEvent != null) { - if (clickEvent.getAction() == ClickEvent.Action.OPEN_URL) { + if (clickEvent.getAction() == Action.OPEN_URL) { if (!this.minecraft.options.chatLinks().get()) { return false; } @@ -282,11 +282,11 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re } catch (URISyntaxException var4) { LOGGER.error("Can't open url for {}", clickEvent, var4); } - } else if (clickEvent.getAction() == ClickEvent.Action.OPEN_FILE) { + } else if (clickEvent.getAction() == Action.OPEN_FILE) { Util.getPlatform().openFile(new File(clickEvent.getValue())); - } else if (clickEvent.getAction() == ClickEvent.Action.SUGGEST_COMMAND) { + } else if (clickEvent.getAction() == Action.SUGGEST_COMMAND) { this.insertText(StringUtil.filterText(clickEvent.getValue()), true); - } else if (clickEvent.getAction() == ClickEvent.Action.RUN_COMMAND) { + } else if (clickEvent.getAction() == Action.RUN_COMMAND) { String string = StringUtil.filterText(clickEvent.getValue()); if (string.startsWith("/")) { if (!this.minecraft.player.connection.sendUnsignedCommand(string.substring(1))) { @@ -295,7 +295,7 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re } else { LOGGER.error("Failed to run command without '/' prefix from click event: '{}'", string); } - } else if (clickEvent.getAction() == ClickEvent.Action.COPY_TO_CLIPBOARD) { + } else if (clickEvent.getAction() == Action.COPY_TO_CLIPBOARD) { this.minecraft.keyboardHandler.setClipboard(clickEvent.getValue()); } else { LOGGER.error("Don't know how to handle {}", clickEvent); @@ -524,8 +524,9 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re } protected void updateNarratedWidget(NarrationElementOutput narrationElementOutput) { - List list = this.narratables + List list = this.narratables .stream() + .flatMap(narratableEntry -> narratableEntry.getNarratables().stream()) .filter(NarratableEntry::isActive) .sorted(Comparator.comparingInt(TabOrderedElement::getTabOrderGroup)) .toList(); @@ -537,7 +538,7 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re if (list.size() > 1) { narrationElementOutput.add(NarratedElementType.POSITION, Component.translatable("narrator.position.screen", narratableSearchResult.index + 1, list.size())); - if (narratableSearchResult.priority == NarrationPriority.FOCUSED) { + if (narratableSearchResult.priority == NarratableEntry.NarrationPriority.FOCUSED) { narrationElementOutput.add(NarratedElementType.USAGE, this.getUsageNarration()); } } @@ -558,14 +559,14 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re for (int j = entries.size(); i < j; i++) { NarratableEntry narratableEntry = (NarratableEntry)entries.get(i); - NarrationPriority narrationPriority = narratableEntry.narrationPriority(); + NarratableEntry.NarrationPriority narrationPriority = narratableEntry.narrationPriority(); if (narrationPriority.isTerminal()) { if (narratableEntry != target) { return new Screen.NarratableSearchResult(narratableEntry, i, narrationPriority); } narratableSearchResult2 = new Screen.NarratableSearchResult(narratableEntry, i, narrationPriority); - } else if (narrationPriority.compareTo(narratableSearchResult != null ? narratableSearchResult.priority : NarrationPriority.NONE) > 0) { + } else if (narrationPriority.compareTo(narratableSearchResult != null ? narratableSearchResult.priority : NarratableEntry.NarrationPriority.NONE) > 0) { narratableSearchResult = new Screen.NarratableSearchResult(narratableEntry, i, narrationPriority); } } @@ -631,9 +632,9 @@ public abstract class Screen extends AbstractContainerEventHandler implements Re public static class NarratableSearchResult { public final NarratableEntry entry; public final int index; - public final NarrationPriority priority; + public final NarratableEntry.NarrationPriority priority; - public NarratableSearchResult(NarratableEntry entry, int index, NarrationPriority priority) { + public NarratableSearchResult(NarratableEntry entry, int index, NarratableEntry.NarrationPriority priority) { this.entry = entry; this.index = index; this.priority = priority; diff --git a/net/minecraft/client/gui/screens/TitleScreen.java b/net/minecraft/client/gui/screens/TitleScreen.java index 6a1759c4..8265a591 100644 --- a/net/minecraft/client/gui/screens/TitleScreen.java +++ b/net/minecraft/client/gui/screens/TitleScreen.java @@ -6,8 +6,6 @@ import com.mojang.realmsclient.RealmsMainScreen; import com.mojang.realmsclient.gui.screens.RealmsNotificationsScreen; import java.io.IOException; import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.SharedConstants; @@ -41,6 +39,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.levelgen.WorldOptions; import net.minecraft.world.level.levelgen.presets.WorldPresets; import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -92,13 +91,11 @@ public class TitleScreen extends Screen { } } - public static CompletableFuture preloadResources(TextureManager texMngr, Executor backgroundExecutor) { - return CompletableFuture.allOf( - texMngr.preload(LogoRenderer.MINECRAFT_LOGO, backgroundExecutor), - texMngr.preload(LogoRenderer.MINECRAFT_EDITION, backgroundExecutor), - texMngr.preload(PanoramaRenderer.PANORAMA_OVERLAY, backgroundExecutor), - CUBE_MAP.preload(texMngr, backgroundExecutor) - ); + public static void registerTextures(TextureManager textureManager) { + textureManager.registerForNextReload(LogoRenderer.MINECRAFT_LOGO); + textureManager.registerForNextReload(LogoRenderer.MINECRAFT_EDITION); + textureManager.registerForNextReload(PanoramaRenderer.PANORAMA_OVERLAY); + CUBE_MAP.registerTextures(textureManager); } @Override @@ -237,7 +234,7 @@ public class TitleScreen extends Screen { button -> { LevelStorageSource levelStorageSource = this.minecraft.getLevelSource(); - try (LevelStorageSource.LevelStorageAccess levelStorageAccess = levelStorageSource.createAccess("Demo_World")) { + try (LevelStorageAccess levelStorageAccess = levelStorageSource.createAccess("Demo_World")) { if (levelStorageAccess.hasWorldData()) { this.minecraft .setScreen( @@ -266,7 +263,7 @@ public class TitleScreen extends Screen { private boolean checkDemoWorldPresence() { try { boolean var2; - try (LevelStorageSource.LevelStorageAccess levelStorageAccess = this.minecraft.getLevelSource().createAccess("Demo_World")) { + try (LevelStorageAccess levelStorageAccess = this.minecraft.getLevelSource().createAccess("Demo_World")) { var2 = levelStorageAccess.hasWorldData(); } @@ -367,7 +364,7 @@ public class TitleScreen extends Screen { private void confirmDemo(boolean confirmed) { if (confirmed) { - try (LevelStorageSource.LevelStorageAccess levelStorageAccess = this.minecraft.getLevelSource().createAccess("Demo_World")) { + try (LevelStorageAccess levelStorageAccess = this.minecraft.getLevelSource().createAccess("Demo_World")) { levelStorageAccess.deleteLevel(); } catch (IOException var7) { SystemToast.onWorldDeleteFailure(this.minecraft, "Demo_World"); diff --git a/net/minecraft/client/gui/screens/achievement/StatsScreen.java b/net/minecraft/client/gui/screens/achievement/StatsScreen.java index 5820d452..3cb4cb82 100644 --- a/net/minecraft/client/gui/screens/achievement/StatsScreen.java +++ b/net/minecraft/client/gui/screens/achievement/StatsScreen.java @@ -202,11 +202,10 @@ public class StatsScreen extends Screen { protected int sortOrder; public ItemStatisticsList(final Minecraft minecraft) { - super(minecraft, StatsScreen.this.width, StatsScreen.this.height - 33 - 58, 33, 22); + super(minecraft, StatsScreen.this.width, StatsScreen.this.height - 33 - 58, 33, 22, 22); this.blockColumns = Lists.>newArrayList(); this.blockColumns.add(Stats.BLOCK_MINED); this.itemColumns = Lists.>newArrayList(Stats.ITEM_BROKEN, Stats.ITEM_CRAFTED, Stats.ITEM_USED, Stats.ITEM_PICKED_UP, Stats.ITEM_DROPPED); - this.setRenderHeader(true, 22); Set set = Sets.newIdentityHashSet(); for (Item item : BuiltInRegistries.ITEM) { @@ -272,11 +271,16 @@ public class StatsScreen extends Screen { } @Override - public int getRowWidth() { - return 280; + public boolean mouseClicked(double mouseX, double mouseY, int button) { + boolean bl = super.mouseClicked(mouseX, mouseY, button); + return !bl + && this.clickedHeader( + (int)(mouseX - (this.getX() + this.width / 2.0 - this.getRowWidth() / 2.0)), (int)(mouseY - this.getY()) + (int)this.scrollAmount() - 4 + ) + ? true + : bl; } - @Override protected boolean clickedHeader(int x, int y) { this.headerPressed = -1; @@ -293,10 +297,15 @@ public class StatsScreen extends Screen { this.minecraft.getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F)); return true; } else { - return super.clickedHeader(x, y); + return false; } } + @Override + public int getRowWidth() { + return 280; + } + private StatType getColumn(int index) { return index < this.blockColumns.size() ? (StatType)this.blockColumns.get(index) : (StatType)this.itemColumns.get(index - this.blockColumns.size()); } diff --git a/net/minecraft/client/gui/screens/advancements/AdvancementWidget.java b/net/minecraft/client/gui/screens/advancements/AdvancementWidget.java index 5622970a..fd464e23 100644 --- a/net/minecraft/client/gui/screens/advancements/AdvancementWidget.java +++ b/net/minecraft/client/gui/screens/advancements/AdvancementWidget.java @@ -9,6 +9,7 @@ import net.minecraft.advancements.AdvancementProgress; import net.minecraft.advancements.DisplayInfo; import net.minecraft.client.Minecraft; import net.minecraft.client.StringSplitter; +import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.RenderType; import net.minecraft.locale.Language; @@ -34,13 +35,15 @@ public class AdvancementWidget { private static final int TITLE_PADDING_LEFT = 3; private static final int TITLE_PADDING_RIGHT = 5; private static final int TITLE_X = 32; - private static final int TITLE_Y = 9; + private static final int TITLE_PADDING_TOP = 9; + private static final int TITLE_PADDING_BOTTOM = 8; private static final int TITLE_MAX_WIDTH = 163; + private static final int TITLE_MIN_WIDTH = 80; private static final int[] TEST_SPLIT_OFFSETS = new int[]{0, 10, -10, 25, -25}; private final AdvancementTab tab; private final AdvancementNode advancementNode; private final DisplayInfo display; - private final FormattedCharSequence title; + private final List titleLines; private final int width; private final List description; private final Minecraft minecraft; @@ -57,21 +60,22 @@ public class AdvancementWidget { this.advancementNode = advancementNode; this.display = display; this.minecraft = minecraft; - this.title = Language.getInstance().getVisualOrder(minecraft.font.substrByWidth(display.getTitle(), 163)); + this.titleLines = minecraft.font.split(display.getTitle(), 163); this.x = Mth.floor(display.getX() * 28.0F); this.y = Mth.floor(display.getY() * 27.0F); - int i = this.getMaxProgressWidth(); - int j = 29 + minecraft.font.width(this.title) + i; + int i = Math.max(this.titleLines.stream().mapToInt(minecraft.font::width).max().orElse(0), 80); + int j = this.getMaxProgressWidth(); + int k = 29 + i + j; this.description = Language.getInstance() .getVisualOrder( - this.findOptimalLines(ComponentUtils.mergeStyles(display.getDescription().copy(), Style.EMPTY.withColor(display.getType().getChatColor())), j) + this.findOptimalLines(ComponentUtils.mergeStyles(display.getDescription().copy(), Style.EMPTY.withColor(display.getType().getChatColor())), k) ); for (FormattedCharSequence formattedCharSequence : this.description) { - j = Math.max(j, minecraft.font.width(formattedCharSequence)); + k = Math.max(k, minecraft.font.width(formattedCharSequence)); } - this.width = j + 3 + 5; + this.width = k + 3 + 5; } private int getMaxProgressWidth() { @@ -180,27 +184,33 @@ public class AdvancementWidget { } public void drawHover(GuiGraphics guiGraphics, int x, int y, float fade, int width, int height) { + Font font = this.minecraft.font; + int i = 9 * this.titleLines.size() + 9 + 8; + int j = y + this.y + (26 - i) / 2; + int k = j + i; + int l = this.description.size() * 9; + int m = 6 + l; boolean bl = width + x + this.x + this.width + 26 >= this.tab.getScreen().width; Component component = this.progress == null ? null : this.progress.getProgressText(); - int i = component == null ? 0 : this.minecraft.font.width(component); - boolean bl2 = 113 - y - this.y - 26 <= 6 + this.description.size() * 9; + int n = component == null ? 0 : font.width(component); + boolean bl2 = k + m >= 113; float f = this.progress == null ? 0.0F : this.progress.getPercent(); - int j = Mth.floor(f * this.width); + int o = Mth.floor(f * this.width); AdvancementWidgetType advancementWidgetType; AdvancementWidgetType advancementWidgetType2; AdvancementWidgetType advancementWidgetType3; if (f >= 1.0F) { - j = this.width / 2; + o = this.width / 2; advancementWidgetType = AdvancementWidgetType.OBTAINED; advancementWidgetType2 = AdvancementWidgetType.OBTAINED; advancementWidgetType3 = AdvancementWidgetType.OBTAINED; - } else if (j < 2) { - j = this.width / 2; + } else if (o < 2) { + o = this.width / 2; advancementWidgetType = AdvancementWidgetType.UNOBTAINED; advancementWidgetType2 = AdvancementWidgetType.UNOBTAINED; advancementWidgetType3 = AdvancementWidgetType.UNOBTAINED; - } else if (j > this.width - 2) { - j = this.width / 2; + } else if (o > this.width - 2) { + o = this.width / 2; advancementWidgetType = AdvancementWidgetType.OBTAINED; advancementWidgetType2 = AdvancementWidgetType.OBTAINED; advancementWidgetType3 = AdvancementWidgetType.UNOBTAINED; @@ -210,52 +220,61 @@ public class AdvancementWidget { advancementWidgetType3 = AdvancementWidgetType.UNOBTAINED; } - int k = this.width - j; - int l = y + this.y; - int m; + int p = this.width - o; + int q; if (bl) { - m = x + this.x - this.width + 26 + 6; + q = x + this.x - this.width + 26 + 6; } else { - m = x + this.x; + q = x + this.x; } - int n = 32 + this.description.size() * 9; + int r = i + m; if (!this.description.isEmpty()) { if (bl2) { - guiGraphics.blitSprite(RenderType::guiTextured, TITLE_BOX_SPRITE, m, l + 26 - n, this.width, n); + guiGraphics.blitSprite(RenderType::guiTextured, TITLE_BOX_SPRITE, q, k - r, this.width, r); } else { - guiGraphics.blitSprite(RenderType::guiTextured, TITLE_BOX_SPRITE, m, l, this.width, n); + guiGraphics.blitSprite(RenderType::guiTextured, TITLE_BOX_SPRITE, q, j, this.width, r); } } - guiGraphics.blitSprite(RenderType::guiTextured, advancementWidgetType.boxSprite(), 200, 26, 0, 0, m, l, j, 26); - guiGraphics.blitSprite(RenderType::guiTextured, advancementWidgetType2.boxSprite(), 200, 26, 200 - k, 0, m + j, l, k, 26); + if (advancementWidgetType != advancementWidgetType2) { + guiGraphics.blitSprite(RenderType::guiTextured, advancementWidgetType.boxSprite(), 200, i, 0, 0, q, j, o, i); + guiGraphics.blitSprite(RenderType::guiTextured, advancementWidgetType2.boxSprite(), 200, i, 200 - p, 0, q + o, j, p, i); + } else { + guiGraphics.blitSprite(RenderType::guiTextured, advancementWidgetType.boxSprite(), q, j, this.width, i); + } + guiGraphics.blitSprite(RenderType::guiTextured, advancementWidgetType3.frameSprite(this.display.getType()), x + this.x + 3, y + this.y, 26, 26); + int s = q + 5; if (bl) { - guiGraphics.drawString(this.minecraft.font, this.title, m + 5, y + this.y + 9, -1); + this.drawMultilineText(guiGraphics, this.titleLines, s, j + 9, -1); if (component != null) { - guiGraphics.drawString(this.minecraft.font, component, x + this.x - i, y + this.y + 9, -1); + guiGraphics.drawString(font, component, x + this.x - n, j + 9, -1); } } else { - guiGraphics.drawString(this.minecraft.font, this.title, x + this.x + 32, y + this.y + 9, -1); + this.drawMultilineText(guiGraphics, this.titleLines, x + this.x + 32, j + 9, -1); if (component != null) { - guiGraphics.drawString(this.minecraft.font, component, x + this.x + this.width - i - 5, y + this.y + 9, -1); + guiGraphics.drawString(font, component, x + this.x + this.width - n - 5, j + 9, -1); } } if (bl2) { - for (int o = 0; o < this.description.size(); o++) { - guiGraphics.drawString(this.minecraft.font, (FormattedCharSequence)this.description.get(o), m + 5, l + 26 - n + 7 + o * 9, -5592406, false); - } + this.drawMultilineText(guiGraphics, this.description, s, j - l + 1, -16711936); } else { - for (int o = 0; o < this.description.size(); o++) { - guiGraphics.drawString(this.minecraft.font, (FormattedCharSequence)this.description.get(o), m + 5, y + this.y + 9 + 17 + o * 9, -5592406, false); - } + this.drawMultilineText(guiGraphics, this.description, s, k, -16711936); } guiGraphics.renderFakeItem(this.display.getIcon(), x + this.x + 8, y + this.y + 5); } + private void drawMultilineText(GuiGraphics guiGraphics, List text, int x, int y, int color) { + Font font = this.minecraft.font; + + for (int i = 0; i < text.size(); i++) { + guiGraphics.drawString(font, (FormattedCharSequence)text.get(i), x, y + i * 9, color); + } + } + public boolean isMouseOver(int x, int y, int mouseX, int mouseY) { if (!this.display.isHidden() || this.progress != null && this.progress.isDone()) { int i = x + this.x; diff --git a/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java b/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java index debfbae4..662d647a 100644 --- a/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java +++ b/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java @@ -14,6 +14,7 @@ import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.multiplayer.ClientAdvancements; import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.client.multiplayer.ClientAdvancements.Listener; import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -22,7 +23,7 @@ import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public class AdvancementsScreen extends Screen implements ClientAdvancements.Listener { +public class AdvancementsScreen extends Screen implements Listener { private static final ResourceLocation WINDOW_LOCATION = ResourceLocation.withDefaultNamespace("textures/gui/advancements/window.png"); public static final int WINDOW_WIDTH = 252; public static final int WINDOW_HEIGHT = 140; diff --git a/net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen.java b/net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen.java index 5cf46157..0110a3b9 100644 --- a/net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen.java +++ b/net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen.java @@ -194,11 +194,11 @@ public class GameModeSwitcherScreen extends Screen { } @Environment(EnvType.CLIENT) - public class GameModeSlot extends AbstractWidget { + public static class GameModeSlot extends AbstractWidget { final GameModeSwitcherScreen.GameModeIcon icon; private boolean isSelected; - public GameModeSlot(final GameModeSwitcherScreen.GameModeIcon icon, final int x, final int y) { + public GameModeSlot(GameModeSwitcherScreen.GameModeIcon icon, int x, int y) { super(x, y, 26, 26, icon.getName()); this.icon = icon; } diff --git a/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java b/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java index 2c1a9975..861166d9 100644 --- a/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java +++ b/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java @@ -2,7 +2,6 @@ package net.minecraft.client.gui.screens.inventory; import com.google.common.collect.Sets; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.datafixers.util.Pair; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -17,7 +16,6 @@ import net.minecraft.client.gui.ItemSlotMouseAction; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -296,10 +294,9 @@ public abstract class AbstractContainerScreen e guiGraphics.pose().pushPose(); guiGraphics.pose().translate(0.0F, 0.0F, 100.0F); if (itemStack.isEmpty() && slot.isActive()) { - Pair pair = slot.getNoItemIcon(); - if (pair != null) { - TextureAtlasSprite textureAtlasSprite = (TextureAtlasSprite)this.minecraft.getTextureAtlas(pair.getFirst()).apply(pair.getSecond()); - guiGraphics.blitSprite(RenderType::guiTextured, textureAtlasSprite, i, j, 16, 16); + ResourceLocation resourceLocation = slot.getNoItemIcon(); + if (resourceLocation != null) { + guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, i, j, 16, 16); bl2 = true; } } diff --git a/net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen.java b/net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen.java index 8fa494af..322c0021 100644 --- a/net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen.java +++ b/net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen.java @@ -10,7 +10,7 @@ import net.minecraft.client.gui.font.TextFieldHelper; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.SignRenderer; +import net.minecraft.client.renderer.blockentity.AbstractSignRenderer; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.game.ServerboundSignUpdatePacket; @@ -165,7 +165,7 @@ public abstract class AbstractSignEditScreen extends Screen { guiGraphics.pose().translate(0.0F, 0.0F, 4.0F); Vector3f vector3f = this.getSignTextScale(); guiGraphics.pose().scale(vector3f.x(), vector3f.y(), vector3f.z()); - int i = this.text.hasGlowingText() ? this.text.getColor().getTextColor() : SignRenderer.getDarkColor(this.text); + int i = this.text.hasGlowingText() ? this.text.getColor().getTextColor() : AbstractSignRenderer.getDarkColor(this.text); boolean bl = this.frame / 6 % 2 == 0; int j = this.signField.getCursorPos(); int k = this.signField.getSelectionPos(); diff --git a/net/minecraft/client/gui/screens/inventory/BookEditScreen.java b/net/minecraft/client/gui/screens/inventory/BookEditScreen.java index 4a524540..bc2978d7 100644 --- a/net/minecraft/client/gui/screens/inventory/BookEditScreen.java +++ b/net/minecraft/client/gui/screens/inventory/BookEditScreen.java @@ -423,7 +423,7 @@ public class BookEditScreen extends Screen { guiGraphics.drawString(this.font, formattedCharSequence, i + 36 + (114 - l) / 2, 50, 0, false); int m = this.font.width(this.ownerText); guiGraphics.drawString(this.font, this.ownerText, i + 36 + (114 - m) / 2, 60, 0, false); - guiGraphics.drawWordWrap(this.font, FINALIZE_WARNING_LABEL, i + 36, 82, 114, 0); + guiGraphics.drawWordWrap(this.font, FINALIZE_WARNING_LABEL, i + 36, 82, 114, 0, false); } else { int n = this.font.width(this.pageMsg); guiGraphics.drawString(this.font, this.pageMsg, i - n + 192 - 44, 18, 0, false); diff --git a/net/minecraft/client/gui/screens/inventory/BookViewScreen.java b/net/minecraft/client/gui/screens/inventory/BookViewScreen.java index 2abcea1a..a0c10799 100644 --- a/net/minecraft/client/gui/screens/inventory/BookViewScreen.java +++ b/net/minecraft/client/gui/screens/inventory/BookViewScreen.java @@ -16,6 +16,7 @@ import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.ClickEvent.Action; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; @@ -212,7 +213,7 @@ public class BookViewScreen extends Screen { ClickEvent clickEvent = style.getClickEvent(); if (clickEvent == null) { return false; - } else if (clickEvent.getAction() == ClickEvent.Action.CHANGE_PAGE) { + } else if (clickEvent.getAction() == Action.CHANGE_PAGE) { String string = clickEvent.getValue(); try { @@ -223,7 +224,7 @@ public class BookViewScreen extends Screen { } } else { boolean bl = super.handleComponentClicked(style); - if (bl && clickEvent.getAction() == ClickEvent.Action.RUN_COMMAND) { + if (bl && clickEvent.getAction() == Action.RUN_COMMAND) { this.closeScreen(); } diff --git a/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java b/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java index 878b0503..ad16d9d1 100644 --- a/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java +++ b/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java @@ -3,7 +3,6 @@ package net.minecraft.client.gui.screens.inventory; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.datafixers.util.Pair; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -24,9 +23,9 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.inventory.Hotbar; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.searchtree.SearchTree; -import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.core.RegistryAccess; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.HolderSet.Named; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; @@ -142,7 +141,7 @@ public class CreativeModeInventoryScreen extends AbstractContainerScreen getNoItemIcon() { + public ResourceLocation getNoItemIcon() { return this.target.getNoItemIcon(); } diff --git a/net/minecraft/client/gui/screens/inventory/CyclingSlotBackground.java b/net/minecraft/client/gui/screens/inventory/CyclingSlotBackground.java index 476e5595..8dc02de0 100644 --- a/net/minecraft/client/gui/screens/inventory/CyclingSlotBackground.java +++ b/net/minecraft/client/gui/screens/inventory/CyclingSlotBackground.java @@ -3,11 +3,8 @@ package net.minecraft.client.gui.screens.inventory; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ARGB; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -53,8 +50,7 @@ public class CyclingSlotBackground { } private void renderIcon(Slot slot, ResourceLocation icon, float alpha, GuiGraphics guiGraphics, int x, int y) { - TextureAtlasSprite textureAtlasSprite = (TextureAtlasSprite)Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS).apply(icon); - guiGraphics.blitSprite(RenderType::guiTextured, textureAtlasSprite, x + slot.x, y + slot.y, 16, 16, ARGB.white(alpha)); + guiGraphics.blitSprite(RenderType::guiTextured, icon, x + slot.x, y + slot.y, 16, 16, ARGB.white(alpha)); } private float getIconTransitionTransparency(float partialTick) { diff --git a/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java b/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java index c17464a0..97095f83 100644 --- a/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java +++ b/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java @@ -125,7 +125,7 @@ public class EnchantmentScreen extends AbstractContainerScreen if ((k < l + 1 || this.minecraft.player.experienceLevel < o) && !this.minecraft.player.getAbilities().instabuild) { guiGraphics.blitSprite(RenderType::guiTextured, ENCHANTMENT_SLOT_DISABLED_SPRITE, m, j + 14 + 19 * l, 108, 19); guiGraphics.blitSprite(RenderType::guiTextured, DISABLED_LEVEL_SPRITES[l], m + 1, j + 15 + 19 * l, 16, 16); - guiGraphics.drawWordWrap(this.font, formattedText, n, j + 16 + 19 * l, p, (q & 16711422) >> 1); + guiGraphics.drawWordWrap(this.font, formattedText, n, j + 16 + 19 * l, p, (q & 16711422) >> 1, false); q = 4226832; } else { int r = mouseX - (i + 60); @@ -138,7 +138,7 @@ public class EnchantmentScreen extends AbstractContainerScreen } guiGraphics.blitSprite(RenderType::guiTextured, ENABLED_LEVEL_SPRITES[l], m + 1, j + 15 + 19 * l, 16, 16); - guiGraphics.drawWordWrap(this.font, formattedText, n, j + 16 + 19 * l, p, q); + guiGraphics.drawWordWrap(this.font, formattedText, n, j + 16 + 19 * l, p, q, false); q = 8453920; } diff --git a/net/minecraft/client/gui/screens/inventory/HorseInventoryScreen.java b/net/minecraft/client/gui/screens/inventory/HorseInventoryScreen.java index 15e65117..58956aea 100644 --- a/net/minecraft/client/gui/screens/inventory/HorseInventoryScreen.java +++ b/net/minecraft/client/gui/screens/inventory/HorseInventoryScreen.java @@ -7,16 +7,13 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.animal.horse.AbstractHorse; -import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.HorseInventoryMenu; @Environment(EnvType.CLIENT) public class HorseInventoryScreen extends AbstractContainerScreen { + private static final ResourceLocation SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/slot"); private static final ResourceLocation CHEST_SLOTS_SPRITE = ResourceLocation.withDefaultNamespace("container/horse/chest_slots"); - private static final ResourceLocation SADDLE_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/horse/saddle_slot"); - private static final ResourceLocation LLAMA_ARMOR_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/horse/llama_armor_slot"); - private static final ResourceLocation ARMOR_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/horse/armor_slot"); private static final ResourceLocation HORSE_INVENTORY_LOCATION = ResourceLocation.withDefaultNamespace("textures/gui/container/horse.png"); /** * The EntityHorse whose inventory is currently being accessed. @@ -48,20 +45,20 @@ public class HorseInventoryScreen extends AbstractContainerScreen { - private static final ResourceLocation BANNER_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/loom/banner_slot"); - private static final ResourceLocation DYE_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/loom/dye_slot"); - private static final ResourceLocation PATTERN_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/loom/pattern_slot"); + private static final ResourceLocation BANNER_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/slot/banner"); + private static final ResourceLocation DYE_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/slot/dye"); + private static final ResourceLocation PATTERN_SLOT_SPRITE = ResourceLocation.withDefaultNamespace("container/slot/banner_pattern"); private static final ResourceLocation SCROLLER_SPRITE = ResourceLocation.withDefaultNamespace("container/loom/scroller"); private static final ResourceLocation SCROLLER_DISABLED_SPRITE = ResourceLocation.withDefaultNamespace("container/loom/scroller_disabled"); private static final ResourceLocation PATTERN_SELECTED_SPRITE = ResourceLocation.withDefaultNamespace("container/loom/pattern_selected"); @@ -72,7 +72,7 @@ public class LoomScreen extends AbstractContainerScreen { @Override protected void init() { super.init(); - this.flag = this.minecraft.getEntityModels().bakeLayer(ModelLayers.BANNER).getChild("flag"); + this.flag = this.minecraft.getEntityModels().bakeLayer(ModelLayers.STANDING_BANNER_FLAG).getChild("flag"); } @Override @@ -115,11 +115,9 @@ public class LoomScreen extends AbstractContainerScreen { guiGraphics.pose().pushPose(); guiGraphics.pose().translate((float)(i + 139), (float)(j + 52), 0.0F); guiGraphics.pose().scale(24.0F, 24.0F, 1.0F); - guiGraphics.pose().translate(0.5F, -0.5F, 0.5F); + guiGraphics.pose().translate(0.5F, 0.0F, 0.5F); float f = 0.6666667F; guiGraphics.pose().scale(0.6666667F, 0.6666667F, -0.6666667F); - this.flag.xRot = 0.0F; - this.flag.y = -32.0F; DyeColor dyeColor = ((BannerItem)slot4.getItem().getItem()).getColor(); guiGraphics.drawSpecial( multiBufferSource -> BannerRenderer.renderPatterns( @@ -172,12 +170,10 @@ public class LoomScreen extends AbstractContainerScreen { poseStack.pushPose(); poseStack.translate(x + 0.5F, (float)(y + 16), 0.0F); poseStack.scale(6.0F, -6.0F, 1.0F); - poseStack.translate(0.5F, 0.5F, 0.0F); + poseStack.translate(0.5F, 0.0F, 0.0F); poseStack.translate(0.5F, 0.5F, 0.5F); float f = 0.6666667F; poseStack.scale(0.6666667F, -0.6666667F, -0.6666667F); - this.flag.xRot = 0.0F; - this.flag.y = -32.0F; BannerPatternLayers bannerPatternLayers = new Builder().add(patern, DyeColor.WHITE).build(); guiGraphics.drawSpecial( multiBufferSource -> BannerRenderer.renderPatterns( diff --git a/net/minecraft/client/gui/screens/inventory/MerchantScreen.java b/net/minecraft/client/gui/screens/inventory/MerchantScreen.java index 3fd34aef..46b3d2af 100644 --- a/net/minecraft/client/gui/screens/inventory/MerchantScreen.java +++ b/net/minecraft/client/gui/screens/inventory/MerchantScreen.java @@ -4,7 +4,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.components.Button.OnPress; import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -297,7 +296,7 @@ public class MerchantScreen extends AbstractContainerScreen { class TradeOfferButton extends Button { final int index; - public TradeOfferButton(final int x, final int y, final int index, final OnPress onPress) { + public TradeOfferButton(final int x, final int y, final int index, final Button.OnPress onPress) { super(x, y, 88, 20, CommonComponents.EMPTY, onPress, DEFAULT_NARRATION); this.index = index; this.visible = false; diff --git a/net/minecraft/client/gui/screens/inventory/SmithingScreen.java b/net/minecraft/client/gui/screens/inventory/SmithingScreen.java index 279420d1..99f777ee 100644 --- a/net/minecraft/client/gui/screens/inventory/SmithingScreen.java +++ b/net/minecraft/client/gui/screens/inventory/SmithingScreen.java @@ -25,10 +25,10 @@ import org.joml.Vector3f; public class SmithingScreen extends ItemCombinerScreen { private static final ResourceLocation ERROR_SPRITE = ResourceLocation.withDefaultNamespace("container/smithing/error"); private static final ResourceLocation EMPTY_SLOT_SMITHING_TEMPLATE_ARMOR_TRIM = ResourceLocation.withDefaultNamespace( - "item/empty_slot_smithing_template_armor_trim" + "container/slot/smithing_template_armor_trim" ); private static final ResourceLocation EMPTY_SLOT_SMITHING_TEMPLATE_NETHERITE_UPGRADE = ResourceLocation.withDefaultNamespace( - "item/empty_slot_smithing_template_netherite_upgrade" + "container/slot/smithing_template_netherite_upgrade" ); private static final Component MISSING_TEMPLATE_TOOLTIP = Component.translatable("container.upgrade.missing_template_tooltip"); private static final Component ERROR_TOOLTIP = Component.translatable("container.upgrade.error_tooltip"); diff --git a/net/minecraft/client/gui/screens/inventory/StonecutterScreen.java b/net/minecraft/client/gui/screens/inventory/StonecutterScreen.java index caf6d0b9..f5da0b19 100644 --- a/net/minecraft/client/gui/screens/inventory/StonecutterScreen.java +++ b/net/minecraft/client/gui/screens/inventory/StonecutterScreen.java @@ -13,8 +13,9 @@ import net.minecraft.util.Mth; import net.minecraft.util.context.ContextMap; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.StonecutterMenu; -import net.minecraft.world.item.crafting.SelectableRecipe; import net.minecraft.world.item.crafting.StonecutterRecipe; +import net.minecraft.world.item.crafting.SelectableRecipe.SingleInputEntry; +import net.minecraft.world.item.crafting.SelectableRecipe.SingleInputSet; import net.minecraft.world.item.crafting.display.SlotDisplay; import net.minecraft.world.item.crafting.display.SlotDisplayContext; @@ -81,7 +82,7 @@ public class StonecutterScreen extends AbstractContainerScreen int i = this.leftPos + 52; int j = this.topPos + 14; int k = this.startIndex + 12; - SelectableRecipe.SingleInputSet singleInputSet = this.menu.getVisibleRecipes(); + SingleInputSet singleInputSet = this.menu.getVisibleRecipes(); for (int l = this.startIndex; l < k && l < singleInputSet.size(); l++) { int m = l - this.startIndex; @@ -89,7 +90,7 @@ public class StonecutterScreen extends AbstractContainerScreen int o = j + m / 4 * 18 + 2; if (x >= n && x < n + 16 && y >= o && y < o + 18) { ContextMap contextMap = SlotDisplayContext.fromLevel(this.minecraft.level); - SlotDisplay slotDisplay = ((SelectableRecipe.SingleInputEntry)singleInputSet.entries().get(l)).recipe().optionDisplay(); + SlotDisplay slotDisplay = ((SingleInputEntry)singleInputSet.entries().get(l)).recipe().optionDisplay(); guiGraphics.renderTooltip(this.font, slotDisplay.resolveForFirstStack(contextMap), x, y); } } @@ -116,7 +117,7 @@ public class StonecutterScreen extends AbstractContainerScreen } private void renderRecipes(GuiGraphics guiGraphics, int x, int y, int startIndex) { - SelectableRecipe.SingleInputSet singleInputSet = this.menu.getVisibleRecipes(); + SingleInputSet singleInputSet = this.menu.getVisibleRecipes(); ContextMap contextMap = SlotDisplayContext.fromLevel(this.minecraft.level); for (int i = this.startIndex; i < startIndex && i < singleInputSet.size(); i++) { @@ -124,7 +125,7 @@ public class StonecutterScreen extends AbstractContainerScreen int k = x + j % 4 * 16; int l = j / 4; int m = y + l * 18 + 2; - SlotDisplay slotDisplay = ((SelectableRecipe.SingleInputEntry)singleInputSet.entries().get(i)).recipe().optionDisplay(); + SlotDisplay slotDisplay = ((SingleInputEntry)singleInputSet.entries().get(i)).recipe().optionDisplay(); guiGraphics.renderItem(slotDisplay.resolveForFirstStack(contextMap), k, m); } } diff --git a/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java b/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java index b67ceb95..eea8091c 100644 --- a/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java +++ b/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java @@ -20,6 +20,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.multiplayer.ServerList; import net.minecraft.client.multiplayer.ServerStatusPinger; +import net.minecraft.client.multiplayer.ServerData.Type; import net.minecraft.client.multiplayer.resolver.ServerAddress; import net.minecraft.client.resources.language.I18n; import net.minecraft.client.server.LanServer; @@ -81,18 +82,18 @@ public class JoinMultiplayerScreen extends Screen { Button.builder(Component.translatable("selectServer.select"), buttonx -> this.joinSelectedServer()).width(100).build() ); Button button = this.addRenderableWidget(Button.builder(Component.translatable("selectServer.direct"), buttonx -> { - this.editingServer = new ServerData(I18n.get("selectServer.defaultName"), "", ServerData.Type.OTHER); + this.editingServer = new ServerData(I18n.get("selectServer.defaultName"), "", Type.OTHER); this.minecraft.setScreen(new DirectJoinServerScreen(this, this::directJoinCallback, this.editingServer)); }).width(100).build()); Button button2 = this.addRenderableWidget(Button.builder(Component.translatable("selectServer.add"), buttonx -> { - this.editingServer = new ServerData(I18n.get("selectServer.defaultName"), "", ServerData.Type.OTHER); + this.editingServer = new ServerData(I18n.get("selectServer.defaultName"), "", Type.OTHER); this.minecraft.setScreen(new EditServerScreen(this, this::addServerCallback, this.editingServer)); }).width(100).build()); this.editButton = this.addRenderableWidget(Button.builder(Component.translatable("selectServer.edit"), buttonx -> { ServerSelectionList.Entry entry = this.serverSelectionList.getSelected(); if (entry instanceof ServerSelectionList.OnlineServerEntry) { ServerData serverData = ((ServerSelectionList.OnlineServerEntry)entry).getServerData(); - this.editingServer = new ServerData(serverData.name, serverData.ip, ServerData.Type.OTHER); + this.editingServer = new ServerData(serverData.name, serverData.ip, Type.OTHER); this.editingServer.copyFrom(serverData); this.minecraft.setScreen(new EditServerScreen(this, this::editServerCallback, this.editingServer)); } @@ -251,7 +252,7 @@ public class JoinMultiplayerScreen extends Screen { this.join(((ServerSelectionList.OnlineServerEntry)entry).getServerData()); } else if (entry instanceof ServerSelectionList.NetworkServerEntry) { LanServer lanServer = ((ServerSelectionList.NetworkServerEntry)entry).getServerData(); - this.join(new ServerData(lanServer.getMotd(), lanServer.getAddress(), ServerData.Type.LAN)); + this.join(new ServerData(lanServer.getMotd(), lanServer.getAddress(), Type.LAN)); } } diff --git a/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java b/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java index 6641b498..d3c80d91 100644 --- a/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java +++ b/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java @@ -23,6 +23,7 @@ import net.minecraft.client.gui.screens.LoadingDotsText; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.multiplayer.ServerList; +import net.minecraft.client.multiplayer.ServerData.State; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.server.LanServer; import net.minecraft.network.chat.CommonComponents; @@ -155,11 +156,10 @@ public class ServerSelectionList extends ObjectSelectionList { - try { - this.screen - .getPinger() - .pingServer( - this.serverData, - () -> this.minecraft.execute(this::updateServerList), - () -> { - this.serverData - .setState( - this.serverData.protocol == SharedConstants.getCurrentVersion().getProtocolVersion() ? ServerData.State.SUCCESSFUL : ServerData.State.INCOMPATIBLE - ); - this.minecraft.execute(this::refreshStatus); - } - ); - } catch (UnknownHostException var2) { - this.serverData.setState(ServerData.State.UNREACHABLE); - this.serverData.motd = ServerSelectionList.CANT_RESOLVE_TEXT; - this.minecraft.execute(this::refreshStatus); - } catch (Exception var3) { - this.serverData.setState(ServerData.State.UNREACHABLE); - this.serverData.motd = ServerSelectionList.CANT_CONNECT_TEXT; - this.minecraft.execute(this::refreshStatus); - } - } - ); + ServerSelectionList.THREAD_POOL.submit(() -> { + try { + this.screen.getPinger().pingServer(this.serverData, () -> this.minecraft.execute(this::updateServerList), () -> { + this.serverData.setState(this.serverData.protocol == SharedConstants.getCurrentVersion().getProtocolVersion() ? State.SUCCESSFUL : State.INCOMPATIBLE); + this.minecraft.execute(this::refreshStatus); + }); + } catch (UnknownHostException var2) { + this.serverData.setState(State.UNREACHABLE); + this.serverData.motd = ServerSelectionList.CANT_RESOLVE_TEXT; + this.minecraft.execute(this::refreshStatus); + } catch (Exception var3) { + this.serverData.setState(State.UNREACHABLE); + this.serverData.motd = ServerSelectionList.CANT_CONNECT_TEXT; + this.minecraft.execute(this::refreshStatus); + } + }); } - guiGraphics.drawString(this.minecraft.font, this.serverData.name, left + 32 + 3, top + 1, 16777215, false); + guiGraphics.drawString(this.minecraft.font, this.serverData.name, left + 32 + 3, top + 1, -1); List list = this.minecraft.font.split(this.serverData.motd, width - 32 - 2); for (int i = 0; i < Math.min(list.size(), 2); i++) { - guiGraphics.drawString(this.minecraft.font, (FormattedCharSequence)list.get(i), left + 32 + 3, top + 12 + 9 * i, -8355712, false); + guiGraphics.drawString(this.minecraft.font, (FormattedCharSequence)list.get(i), left + 32 + 3, top + 12 + 9 * i, -8355712); } this.drawIcon(guiGraphics, left, top, this.icon.textureLocation()); - if (this.serverData.state() == ServerData.State.PINGING) { + if (this.serverData.state() == State.PINGING) { int i = (int)(Util.getMillis() / 100L + index * 2 & 7L); if (i > 4) { i = 8 - i; @@ -322,12 +310,12 @@ public class ServerSelectionList extends ObjectSelectionList= i && mouseX <= i + 10 && mouseY >= top && mouseY <= top + 8) { this.screen.setTooltipForNextRenderPass(this.statusIconTooltip); } else if (this.onlinePlayersTooltip != null && mouseX >= k && mouseX <= k + j && mouseY >= top && mouseY <= top - 1 + 9) { diff --git a/net/minecraft/client/gui/screens/options/LanguageSelectScreen.java b/net/minecraft/client/gui/screens/options/LanguageSelectScreen.java index fd519f32..4adf4933 100644 --- a/net/minecraft/client/gui/screens/options/LanguageSelectScreen.java +++ b/net/minecraft/client/gui/screens/options/LanguageSelectScreen.java @@ -2,17 +2,14 @@ package net.minecraft.client.gui.screens.options; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; -import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ObjectSelectionList; import net.minecraft.client.gui.components.StringWidget; import net.minecraft.client.gui.layouts.LinearLayout; -import net.minecraft.client.gui.navigation.CommonInputs; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.resources.language.LanguageInfo; +import net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry; import net.minecraft.client.resources.language.LanguageManager; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -58,7 +55,7 @@ public class LanguageSelectScreen extends OptionsSubScreen { } void onDone() { - LanguageSelectScreen.LanguageSelectionList.Entry entry = this.languageSelectionList.getSelected(); + Entry entry = this.languageSelectionList.getSelected(); if (entry != null && !entry.code.equals(this.languageManager.getSelected())) { this.languageManager.setSelected(entry.code); this.options.languageCode = entry.code; @@ -69,17 +66,23 @@ public class LanguageSelectScreen extends OptionsSubScreen { } @Environment(EnvType.CLIENT) - class LanguageSelectionList extends ObjectSelectionList { + class LanguageSelectionList extends ObjectSelectionList { public LanguageSelectionList(final Minecraft minecraft) { super(minecraft, LanguageSelectScreen.this.width, LanguageSelectScreen.this.height - 33 - 53, 33, 18); String string = LanguageSelectScreen.this.languageManager.getSelected(); - LanguageSelectScreen.this.languageManager.getLanguages().forEach((string2, languageInfo) -> { - LanguageSelectScreen.LanguageSelectionList.Entry entry = new LanguageSelectScreen.LanguageSelectionList.Entry(string2, languageInfo); - this.addEntry(entry); - if (string.equals(string2)) { - this.setSelected(entry); - } - }); + LanguageSelectScreen.this.languageManager + .getLanguages() + .forEach( + (string2, languageInfo) -> { + net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry entry = new net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry( + this, string2, languageInfo + ); + this.addEntry(entry); + if (string.equals(string2)) { + this.setSelected(entry); + } + } + ); if (this.getSelected() != null) { this.centerScrollOn(this.getSelected()); } @@ -89,53 +92,5 @@ public class LanguageSelectScreen extends OptionsSubScreen { public int getRowWidth() { return super.getRowWidth() + 50; } - - @Environment(EnvType.CLIENT) - public class Entry extends ObjectSelectionList.Entry { - final String code; - private final Component language; - private long lastClickTime; - - public Entry(final String code, final LanguageInfo languageInfo) { - this.code = code; - this.language = languageInfo.toComponent(); - } - - @Override - public void render(GuiGraphics guiGraphics, int index, int top, int left, int width, int height, int mouseX, int mouseY, boolean hovering, float partialTick) { - guiGraphics.drawCenteredString(LanguageSelectScreen.this.font, this.language, LanguageSelectionList.this.width / 2, top + height / 2 - 9 / 2, -1); - } - - @Override - public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - if (CommonInputs.selected(keyCode)) { - this.select(); - LanguageSelectScreen.this.onDone(); - return true; - } else { - return super.keyPressed(keyCode, scanCode, modifiers); - } - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - this.select(); - if (Util.getMillis() - this.lastClickTime < 250L) { - LanguageSelectScreen.this.onDone(); - } - - this.lastClickTime = Util.getMillis(); - return super.mouseClicked(mouseX, mouseY, button); - } - - private void select() { - LanguageSelectionList.this.setSelected(this); - } - - @Override - public Component getNarration() { - return Component.translatable("narrator.select", this.language); - } - } } } diff --git a/net/minecraft/client/gui/screens/options/controls/KeyBindsList.java b/net/minecraft/client/gui/screens/options/controls/KeyBindsList.java index 6bb1602c..a1313e1a 100644 --- a/net/minecraft/client/gui/screens/options/controls/KeyBindsList.java +++ b/net/minecraft/client/gui/screens/options/controls/KeyBindsList.java @@ -79,7 +79,7 @@ public class KeyBindsList extends ContainerObjectSelectionList implements R } @Override - public NarrationPriority narrationPriority() { - return this.visible ? NarrationPriority.HOVERED : NarrationPriority.NONE; + public NarratableEntry.NarrationPriority narrationPriority() { + return this.visible ? NarratableEntry.NarrationPriority.HOVERED : NarratableEntry.NarrationPriority.NONE; } @Override @@ -568,7 +566,7 @@ public abstract class RecipeBookComponent implements R list.add(this.searchBox); list.add(this.filterButton); list.addAll(this.tabButtons); - NarratableSearchResult narratableSearchResult = Screen.findNarratableWidget(list, null); + Screen.NarratableSearchResult narratableSearchResult = Screen.findNarratableWidget(list, null); if (narratableSearchResult != null) { narratableSearchResult.entry.updateNarration(narrationElementOutput.nest()); } diff --git a/net/minecraft/client/gui/screens/recipebook/RecipeBookPage.java b/net/minecraft/client/gui/screens/recipebook/RecipeBookPage.java index 98752a12..cb1ae95d 100644 --- a/net/minecraft/client/gui/screens/recipebook/RecipeBookPage.java +++ b/net/minecraft/client/gui/screens/recipebook/RecipeBookPage.java @@ -109,7 +109,7 @@ public class RecipeBookPage { if (this.totalPages > 1) { Component component = Component.translatable("gui.recipebook.page", this.currentPage + 1, this.totalPages); int i = this.minecraft.font.width(component); - guiGraphics.drawString(this.minecraft.font, component, x - i / 2 + 73, y + 141, -1, false); + guiGraphics.drawString(this.minecraft.font, component, x - i / 2 + 73, y + 141, -1); } this.hoveredButton = null; diff --git a/net/minecraft/client/gui/screens/recipebook/RecipeButton.java b/net/minecraft/client/gui/screens/recipebook/RecipeButton.java index e40d8f8a..2efcc225 100644 --- a/net/minecraft/client/gui/screens/recipebook/RecipeButton.java +++ b/net/minecraft/client/gui/screens/recipebook/RecipeButton.java @@ -1,6 +1,7 @@ package net.minecraft.client.gui.screens.recipebook; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -28,8 +29,9 @@ public class RecipeButton extends AbstractWidget { private static final float ANIMATION_TIME = 15.0F; private static final int BACKGROUND_SIZE = 25; private static final Component MORE_RECIPES_TOOLTIP = Component.translatable("gui.recipebook.moreRecipes"); - private RecipeCollection collection; + private RecipeCollection collection = RecipeCollection.EMPTY; private List selectedEntries = List.of(); + private boolean allRecipesHaveSameResultDisplay; private final SlotSelectTime slotSelectTime; private float animationTime; @@ -44,6 +46,7 @@ public class RecipeButton extends AbstractWidget { this.selectedEntries = list.stream() .map(recipeDisplayEntry -> new RecipeButton.ResolvedEntry(recipeDisplayEntry.id(), recipeDisplayEntry.resultItems(contextMap))) .toList(); + this.allRecipesHaveSameResultDisplay = allRecipesHaveSameResultDisplay(this.selectedEntries); List list2 = list.stream().map(RecipeDisplayEntry::id).filter(page.getRecipeBook()::willHighlight).toList(); if (!list2.isEmpty()) { list2.forEach(page::recipeShown); @@ -51,6 +54,24 @@ public class RecipeButton extends AbstractWidget { } } + private static boolean allRecipesHaveSameResultDisplay(List entries) { + Iterator iterator = entries.stream().flatMap(resolvedEntry -> resolvedEntry.displayItems().stream()).iterator(); + if (!iterator.hasNext()) { + return true; + } else { + ItemStack itemStack = (ItemStack)iterator.next(); + + while (iterator.hasNext()) { + ItemStack itemStack2 = (ItemStack)iterator.next(); + if (!ItemStack.isSameItemSameComponents(itemStack, itemStack2)) { + return false; + } + } + + return true; + } + } + public RecipeCollection getCollection() { return this.collection; } @@ -83,7 +104,7 @@ public class RecipeButton extends AbstractWidget { guiGraphics.blitSprite(RenderType::guiTextured, resourceLocation, this.getX(), this.getY(), this.width, this.height); ItemStack itemStack = this.getDisplayStack(); int i = 4; - if (this.collection.hasSingleResultItem() && this.hasMultipleRecipes()) { + if (this.hasMultipleRecipes() && this.allRecipesHaveSameResultDisplay) { guiGraphics.renderItem(itemStack, this.getX() + i + 1, this.getY() + i + 1, 0, 10); i--; } diff --git a/net/minecraft/client/gui/screens/recipebook/RecipeCollection.java b/net/minecraft/client/gui/screens/recipebook/RecipeCollection.java index 6428fac6..78bcab22 100644 --- a/net/minecraft/client/gui/screens/recipebook/RecipeCollection.java +++ b/net/minecraft/client/gui/screens/recipebook/RecipeCollection.java @@ -11,36 +11,16 @@ import net.minecraft.world.entity.player.StackedItemContents; import net.minecraft.world.item.crafting.display.RecipeDisplay; import net.minecraft.world.item.crafting.display.RecipeDisplayEntry; import net.minecraft.world.item.crafting.display.RecipeDisplayId; -import net.minecraft.world.item.crafting.display.SlotDisplay; @Environment(EnvType.CLIENT) public class RecipeCollection { + public static final RecipeCollection EMPTY = new RecipeCollection(List.of()); private final List entries; - private final boolean singleResultItem; private final Set craftable = new HashSet(); private final Set selected = new HashSet(); public RecipeCollection(List entries) { this.entries = entries; - if (entries.size() <= 1) { - this.singleResultItem = true; - } else { - this.singleResultItem = allRecipesHaveSameResult(this.entries); - } - } - - private static boolean allRecipesHaveSameResult(List recipes) { - int i = recipes.size(); - SlotDisplay slotDisplay = ((RecipeDisplayEntry)recipes.getFirst()).display().result(); - - for (int j = 1; j < i; j++) { - SlotDisplay slotDisplay2 = ((RecipeDisplayEntry)recipes.get(j)).display().result(); - if (!slotDisplay2.equals(slotDisplay)) { - return false; - } - } - - return true; } public void selectRecipes(StackedItemContents stackedItemContents, Predicate filter) { @@ -93,10 +73,6 @@ public class RecipeCollection { return list; } - public boolean hasSingleResultItem() { - return this.singleResultItem; - } - @Environment(EnvType.CLIENT) public static enum CraftableStatus { ANY, diff --git a/net/minecraft/client/gui/screens/reporting/ChatSelectionScreen.java b/net/minecraft/client/gui/screens/reporting/ChatSelectionScreen.java index 242531ae..412d732d 100644 --- a/net/minecraft/client/gui/screens/reporting/ChatSelectionScreen.java +++ b/net/minecraft/client/gui/screens/reporting/ChatSelectionScreen.java @@ -21,8 +21,8 @@ import net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelect import net.minecraft.client.multiplayer.chat.ChatTrustLevel; import net.minecraft.client.multiplayer.chat.LoggedChatMessage; import net.minecraft.client.multiplayer.chat.LoggedChatMessage.Player; +import net.minecraft.client.multiplayer.chat.report.ChatReport; import net.minecraft.client.multiplayer.chat.report.ReportingContext; -import net.minecraft.client.multiplayer.chat.report.ChatReport.Builder; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -41,11 +41,11 @@ public class ChatSelectionScreen extends Screen { private MultiLineLabel contextInfoLabel; @Nullable private ChatSelectionScreen.ChatSelectionList chatSelectionList; - final Builder report; - private final Consumer onSelected; + final ChatReport.Builder report; + private final Consumer onSelected; private ChatSelectionLogFiller chatLogFiller; - public ChatSelectionScreen(@Nullable Screen lastScreen, ReportingContext reportingContext, Builder report, Consumer onSelected) { + public ChatSelectionScreen(@Nullable Screen lastScreen, ReportingContext reportingContext, ChatReport.Builder report, Consumer onSelected) { super(TITLE); this.lastScreen = lastScreen; this.reportingContext = reportingContext; @@ -65,7 +65,7 @@ public class ChatSelectionScreen extends Screen { }).bounds(this.width / 2 - 155 + 160, this.height - 32, 150, 20).build()); this.updateConfirmSelectedButton(); this.extendLog(); - this.chatSelectionList.setScrollAmount(this.chatSelectionList.getMaxScroll()); + this.chatSelectionList.setScrollAmount(this.chatSelectionList.maxScrollAmount()); } private boolean canReport(LoggedChatMessage message) { @@ -88,12 +88,12 @@ public class ChatSelectionScreen extends Screen { @Override public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { super.render(guiGraphics, mouseX, mouseY, partialTick); - guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 10, 16777215); + guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 10, -1); AbuseReportLimits abuseReportLimits = this.reportingContext.sender().reportLimits(); int i = this.report.reportedMessages().size(); int j = abuseReportLimits.maxReportedMessageCount(); Component component = Component.translatable("gui.chatSelection.selected", i, j); - guiGraphics.drawCenteredString(this.font, component, this.width / 2, 16 + 9 * 3 / 2, -1); + guiGraphics.drawCenteredString(this.font, component, this.width / 2, 26, -1); this.contextInfoLabel.renderCentered(guiGraphics, this.width / 2, this.chatSelectionList.getFooterTop()); } @@ -119,10 +119,10 @@ public class ChatSelectionScreen extends Screen { } @Override - public void setScrollAmount(double scroll) { - double d = this.getScrollAmount(); - super.setScrollAmount(scroll); - if (this.getMaxScroll() > 1.0E-5F && scroll <= 1.0E-5F && !Mth.equal(scroll, d)) { + public void setScrollAmount(double scrollAmount) { + double d = this.scrollAmount(); + super.setScrollAmount(scrollAmount); + if (this.maxScrollAmount() > 1.0E-5F && scrollAmount <= 1.0E-5F && !Mth.equal(scrollAmount, d)) { ChatSelectionScreen.this.onReachedScrollTop(); } } @@ -154,9 +154,9 @@ public class ChatSelectionScreen extends Screen { @Override public void acceptDivider(Component text) { - this.addEntryToTop(new PaddingEntry(this)); + this.addEntryToTop(new PaddingEntry()); this.addEntryToTop(new DividerEntry(this, text)); - this.addEntryToTop(new PaddingEntry(this)); + this.addEntryToTop(new PaddingEntry()); this.previousHeading = null; } @@ -193,14 +193,14 @@ public class ChatSelectionScreen extends Screen { } @Nullable - protected net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry nextEntry(ScreenDirection direction) { - return this.nextEntry(direction, net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry::canSelect); + protected net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry nextEntry(ScreenDirection screenDirection) { + return this.nextEntry(screenDirection, net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry::canSelect); } - public void setSelected(@Nullable net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry selected) { - super.setSelected(selected); - net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry entry = this.nextEntry(ScreenDirection.UP); - if (entry == null) { + public void setSelected(@Nullable net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry entry) { + super.setSelected(entry); + net.minecraft.client.gui.screens.reporting.ChatSelectionScreen.ChatSelectionList.Entry entry2 = this.nextEntry(ScreenDirection.UP); + if (entry2 == null) { ChatSelectionScreen.this.onReachedScrollTop(); } } diff --git a/net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen.java b/net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen.java index 59f3afb2..742bc067 100644 --- a/net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen.java +++ b/net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen.java @@ -166,9 +166,9 @@ public class ReportReasonSelectionScreen extends Screen { return 320; } - public void setSelected(@Nullable net.minecraft.client.gui.screens.reporting.ReportReasonSelectionScreen.ReasonSelectionList.Entry selected) { - super.setSelected(selected); - ReportReasonSelectionScreen.this.currentlySelectedReason = selected != null ? selected.getReason() : null; + public void setSelected(@Nullable net.minecraft.client.gui.screens.reporting.ReportReasonSelectionScreen.ReasonSelectionList.Entry entry) { + super.setSelected(entry); + ReportReasonSelectionScreen.this.currentlySelectedReason = entry != null ? entry.getReason() : null; } } } diff --git a/net/minecraft/client/gui/screens/social/PlayerEntry.java b/net/minecraft/client/gui/screens/social/PlayerEntry.java index 6acdb050..099e9bf5 100644 --- a/net/minecraft/client/gui/screens/social/PlayerEntry.java +++ b/net/minecraft/client/gui/screens/social/PlayerEntry.java @@ -169,11 +169,11 @@ public class PlayerEntry extends ContainerObjectSelectionList.Entry } else { guiGraphics.fill(left, top, left + width, top + height, BG_FILL_REMOVED); l = top + (height - (9 + 9)) / 2; - guiGraphics.drawString(this.minecraft.font, component, k, l + 12, PLAYER_STATUS_COLOR, false); + guiGraphics.drawString(this.minecraft.font, component, k, l + 12, PLAYER_STATUS_COLOR); } PlayerFaceRenderer.draw(guiGraphics, (PlayerSkin)this.skinGetter.get(), i, j, 24); - guiGraphics.drawString(this.minecraft.font, this.playerName, k, l, PLAYERNAME_COLOR, false); + guiGraphics.drawString(this.minecraft.font, this.playerName, k, l, PLAYERNAME_COLOR); if (this.isRemoved) { guiGraphics.fill(i, j, i + 24, j + 24, SKIN_SHADE); } diff --git a/net/minecraft/client/gui/screens/social/SocialInteractionsPlayerList.java b/net/minecraft/client/gui/screens/social/SocialInteractionsPlayerList.java index dcfb02ac..74b04002 100644 --- a/net/minecraft/client/gui/screens/social/SocialInteractionsPlayerList.java +++ b/net/minecraft/client/gui/screens/social/SocialInteractionsPlayerList.java @@ -20,7 +20,7 @@ import net.minecraft.client.gui.components.ContainerObjectSelectionList; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.multiplayer.chat.ChatLog; -import net.minecraft.client.multiplayer.chat.LoggedChatMessage; +import net.minecraft.client.multiplayer.chat.LoggedChatMessage.Player; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @@ -101,7 +101,7 @@ public class SocialInteractionsPlayerList extends ContainerObjectSelectionList

set = new ObjectLinkedOpenHashSet<>(); for (int i = chatLog.end(); i >= chatLog.start(); i--) { - if (chatLog.lookup(i) instanceof LoggedChatMessage.Player player && player.message().hasSignature()) { + if (chatLog.lookup(i) instanceof Player player && player.message().hasSignature()) { set.add(player.profile()); } } diff --git a/net/minecraft/client/gui/screens/social/SocialInteractionsScreen.java b/net/minecraft/client/gui/screens/social/SocialInteractionsScreen.java index 3efe6186..547b1670 100644 --- a/net/minecraft/client/gui/screens/social/SocialInteractionsScreen.java +++ b/net/minecraft/client/gui/screens/social/SocialInteractionsScreen.java @@ -174,13 +174,13 @@ public class SocialInteractionsScreen extends Screen { case ALL: this.allButton.setMessage(TAB_ALL_SELECTED); Collection collection = this.minecraft.player.connection.getOnlinePlayerIds(); - this.socialInteractionsPlayerList.updatePlayerList(collection, this.socialInteractionsPlayerList.getScrollAmount(), true); + this.socialInteractionsPlayerList.updatePlayerList(collection, this.socialInteractionsPlayerList.scrollAmount(), true); break; case HIDDEN: this.hiddenButton.setMessage(TAB_HIDDEN_SELECTED); Set set = this.minecraft.getPlayerSocialManager().getHiddenPlayers(); bl = set.isEmpty(); - this.socialInteractionsPlayerList.updatePlayerList(set, this.socialInteractionsPlayerList.getScrollAmount(), false); + this.socialInteractionsPlayerList.updatePlayerList(set, this.socialInteractionsPlayerList.scrollAmount(), false); break; case BLOCKED: this.blockedButton.setMessage(TAB_BLOCKED_SELECTED); @@ -193,7 +193,7 @@ public class SocialInteractionsScreen extends Screen { .filter(playerSocialManager::isBlocked) .collect(Collectors.toSet()); bl = set2.isEmpty(); - this.socialInteractionsPlayerList.updatePlayerList(set2, this.socialInteractionsPlayerList.getScrollAmount(), false); + this.socialInteractionsPlayerList.updatePlayerList(set2, this.socialInteractionsPlayerList.scrollAmount(), false); } GameNarrator gameNarrator = this.minecraft.getNarrator(); diff --git a/net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget.java b/net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget.java index cdf4b862..f7253b69 100644 --- a/net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget.java +++ b/net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget.java @@ -10,7 +10,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.AbstractScrollWidget; +import net.minecraft.client.gui.components.AbstractTextAreaWidget; import net.minecraft.client.gui.components.MultiLineTextWidget; import net.minecraft.client.gui.layouts.Layout; import net.minecraft.client.gui.layouts.LinearLayout; @@ -24,7 +24,7 @@ import net.minecraft.network.chat.MutableComponent; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public class TelemetryEventWidget extends AbstractScrollWidget { +public class TelemetryEventWidget extends AbstractTextAreaWidget { private static final int HEADER_HORIZONTAL_PADDING = 32; private static final String TELEMETRY_REQUIRED_TRANSLATION_KEY = "telemetry.event.required"; private static final String TELEMETRY_OPTIONAL_TRANSLATION_KEY = "telemetry.event.optional"; @@ -43,12 +43,12 @@ public class TelemetryEventWidget extends AbstractScrollWidget { public void onOptInChanged(boolean optIn) { this.content = this.buildContent(optIn); - this.setScrollAmount(this.scrollAmount()); + this.refreshScrollAmount(); } public void updateLayout() { this.content = this.buildContent(Minecraft.getInstance().telemetryOptInExtra()); - this.setScrollAmount(this.scrollAmount()); + this.refreshScrollAmount(); } private TelemetryEventWidget.Content buildContent(boolean optIn) { @@ -73,7 +73,7 @@ public class TelemetryEventWidget extends AbstractScrollWidget { } @Override - protected void setScrollAmount(double scrollAmount) { + public void setScrollAmount(double scrollAmount) { super.setScrollAmount(scrollAmount); if (this.onScrolledListener != null) { this.onScrolledListener.accept(this.scrollAmount()); @@ -92,8 +92,8 @@ public class TelemetryEventWidget extends AbstractScrollWidget { @Override protected void renderContents(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - int i = this.getY() + this.innerPadding(); - int j = this.getX() + this.innerPadding(); + int i = this.getInnerTop(); + int j = this.getInnerLeft(); guiGraphics.pose().pushPose(); guiGraphics.pose().translate((double)j, (double)i, 0.0); this.content.container().visitWidgets(abstractWidget -> abstractWidget.render(guiGraphics, mouseX, mouseY, partialTick)); diff --git a/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java b/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java index 7336a280..929fb21a 100644 --- a/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java +++ b/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java @@ -30,13 +30,11 @@ import net.minecraft.SharedConstants; import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.CycleButton; import net.minecraft.client.gui.components.EditBox; -import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.Tooltip; -import net.minecraft.client.gui.components.CycleButton.ValueListSupplier; -import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.components.tabs.GridLayoutTab; import net.minecraft.client.gui.components.tabs.TabManager; import net.minecraft.client.gui.components.tabs.TabNavigationBar; @@ -46,7 +44,6 @@ import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; import net.minecraft.client.gui.layouts.LayoutSettings; import net.minecraft.client.gui.layouts.LinearLayout; import net.minecraft.client.gui.layouts.GridLayout.RowHelper; -import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.gui.screens.ConfirmScreen; import net.minecraft.client.gui.screens.GenericMessageScreen; @@ -54,7 +51,6 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.packs.PackSelectionScreen; import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen.WorldTab.1; import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen.WorldTab.2; -import net.minecraft.client.gui.screens.worldselection.SwitchGrid.Builder; import net.minecraft.client.gui.screens.worldselection.WorldCreationUiState.SelectedGameMode; import net.minecraft.client.gui.screens.worldselection.WorldCreationUiState.WorldTypeEntry; import net.minecraft.client.renderer.RenderType; @@ -82,16 +78,16 @@ import net.minecraft.world.level.GameRules; import net.minecraft.world.level.GameType; import net.minecraft.world.level.LevelSettings; import net.minecraft.world.level.WorldDataConfiguration; -import net.minecraft.world.level.levelgen.WorldDimensions; import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldOptions; +import net.minecraft.world.level.levelgen.WorldDimensions.Complete; import net.minecraft.world.level.levelgen.flat.FlatLevelGeneratorPresets; import net.minecraft.world.level.levelgen.presets.WorldPreset; import net.minecraft.world.level.levelgen.presets.WorldPresets; import net.minecraft.world.level.storage.LevelResource; -import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.PrimaryLevelData; import net.minecraft.world.level.storage.WorldData; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import net.minecraft.world.level.storage.PrimaryLevelData.SpecialWorldProperty; import net.minecraft.world.level.validation.DirectoryValidator; import org.apache.commons.lang3.mutable.MutableObject; @@ -114,7 +110,9 @@ public class CreateWorldScreen extends Screen { public static final ResourceLocation TAB_HEADER_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/tab_header_background.png"); private final HeaderAndFooterLayout layout = new HeaderAndFooterLayout(this); final WorldCreationUiState uiState; - private final TabManager tabManager = new TabManager(this::addRenderableWidget, guiEventListener -> this.removeWidget(guiEventListener)); + private final TabManager tabManager = new TabManager(guiEventListener -> { + AbstractWidget var10000 = this.addRenderableWidget(guiEventListener); + }, guiEventListener -> this.removeWidget(guiEventListener)); private boolean recreated; private final DirectoryValidator packValidator; private final CreateWorldCallback createWorldCallback; @@ -289,7 +287,7 @@ public class CreateWorldScreen extends Screen { private void onCreate() { WorldCreationContext worldCreationContext = this.uiState.getSettings(); - WorldDimensions.Complete complete = worldCreationContext.selectedDimensions().bake(worldCreationContext.datapackDimensions()); + Complete complete = worldCreationContext.selectedDimensions().bake(worldCreationContext.datapackDimensions()); LayeredRegistryAccess layeredRegistryAccess = worldCreationContext.worldgenRegistries() .replaceFrom(RegistryLayer.DIMENSIONS, complete.dimensionsRegistryAccess()); Lifecycle lifecycle = FeatureFlags.isExperimental(worldCreationContext.dataConfiguration().enabledFeatures()) ? Lifecycle.experimental() : Lifecycle.stable(); @@ -313,14 +311,14 @@ public class CreateWorldScreen extends Screen { String string = this.uiState.getTargetFolder(); WorldCreationContext worldCreationContext = this.uiState.getSettings(); queueLoadScreen(this.minecraft, PREPARING_WORLD_DATA); - Optional optional = createNewWorldDirectory(this.minecraft, string, this.tempDataPackDir); + Optional optional = createNewWorldDirectory(this.minecraft, string, this.tempDataPackDir); if (optional.isEmpty()) { SystemToast.onPackCopyFailure(this.minecraft, string); return false; } else { this.minecraft .createWorldOpenFlows() - .createLevelFromExistingSettings((LevelStorageSource.LevelStorageAccess)optional.get(), worldCreationContext.dataPackResources(), registryAccess, worldData); + .createLevelFromExistingSettings((LevelStorageAccess)optional.get(), worldCreationContext.dataPackResources(), registryAccess, worldData); return true; } } @@ -380,16 +378,6 @@ public class CreateWorldScreen extends Screen { this.renderMenuBackground(partialTick, 0, this.layout.getHeaderHeight(), this.width, this.height); } - @Override - protected T addWidget(T listener) { - return super.addWidget(listener); - } - - @Override - protected T addRenderableWidget(T widget) { - return super.addRenderableWidget(widget); - } - @Nullable private Path getOrCreateTempDataPackDir() { if (this.tempDataPackDir == null) { @@ -570,9 +558,9 @@ public class CreateWorldScreen extends Screen { } } - private static Optional createNewWorldDirectory(Minecraft minecraft, String saveName, @Nullable Path tempDataPackDir) { + private static Optional createNewWorldDirectory(Minecraft minecraft, String saveName, @Nullable Path tempDataPackDir) { try { - LevelStorageSource.LevelStorageAccess levelStorageAccess = minecraft.getLevelSource().createAccess(saveName); + LevelStorageAccess levelStorageAccess = minecraft.getLevelSource().createAccess(saveName); if (tempDataPackDir == null) { return Optional.of(levelStorageAccess); } @@ -841,13 +829,14 @@ public class CreateWorldScreen extends Screen { this.seedEdit.setValue(CreateWorldScreen.this.uiState.getSeed()); this.seedEdit.setResponder(string -> CreateWorldScreen.this.uiState.setSeed(this.seedEdit.getValue())); rowHelper.addChild(CommonLayouts.labeledElement(CreateWorldScreen.this.font, this.seedEdit, SEED_LABEL), 2); - Builder builder = SwitchGrid.builder(310); + SwitchGrid.Builder builder = SwitchGrid.builder(310); builder.addSwitch(GENERATE_STRUCTURES, CreateWorldScreen.this.uiState::isGenerateStructures, CreateWorldScreen.this.uiState::setGenerateStructures) .withIsActiveCondition(() -> !CreateWorldScreen.this.uiState.isDebug()) .withInfo(GENERATE_STRUCTURES_INFO); builder.addSwitch(BONUS_CHEST, CreateWorldScreen.this.uiState::isBonusChest, CreateWorldScreen.this.uiState::setBonusChest) .withIsActiveCondition(() -> !CreateWorldScreen.this.uiState.isHardcore() && !CreateWorldScreen.this.uiState.isDebug()); - SwitchGrid switchGrid = builder.build(layoutElement -> rowHelper.addChild(layoutElement, 2)); + SwitchGrid switchGrid = builder.build(); + rowHelper.addChild(switchGrid.layout(), 2); CreateWorldScreen.this.uiState.addListener(worldCreationUiState -> switchGrid.refreshStates()); } @@ -858,7 +847,7 @@ public class CreateWorldScreen extends Screen { } } - private ValueListSupplier createWorldTypeValueSupplier() { + private CycleButton.ValueListSupplier createWorldTypeValueSupplier() { return new 2(this); } diff --git a/net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen.java b/net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen.java index 61a92f6e..442e5175 100644 --- a/net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen.java +++ b/net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen.java @@ -30,6 +30,11 @@ import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.util.FormattedCharSequence; import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.GameRules.BooleanValue; +import net.minecraft.world.level.GameRules.Category; +import net.minecraft.world.level.GameRules.IntegerValue; +import net.minecraft.world.level.GameRules.Key; +import net.minecraft.world.level.GameRules.Value; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @@ -97,7 +102,7 @@ public class EditGameRulesScreen extends Screen { public class BooleanRuleEntry extends EditGameRulesScreen.GameRuleEntry { private final CycleButton checkbox; - public BooleanRuleEntry(final Component label, final List tooltip, final String description, final GameRules.BooleanValue value) { + public BooleanRuleEntry(final Component label, final List tooltip, final String description, final BooleanValue value) { super(tooltip, label); this.checkbox = CycleButton.onOffBuilder(value.get()) .displayOnlyValue() @@ -142,7 +147,7 @@ public class EditGameRulesScreen extends Screen { @FunctionalInterface @Environment(EnvType.CLIENT) - interface EntryFactory> { + interface EntryFactory> { EditGameRulesScreen.RuleEntry create(Component component, List list, String string, T value); } @@ -168,10 +173,10 @@ public class EditGameRulesScreen extends Screen { protected void renderLabel(GuiGraphics guiGraphics, int x, int y) { if (this.label.size() == 1) { - guiGraphics.drawString(EditGameRulesScreen.this.minecraft.font, (FormattedCharSequence)this.label.get(0), y, x + 5, -1, false); + guiGraphics.drawString(EditGameRulesScreen.this.minecraft.font, (FormattedCharSequence)this.label.get(0), y, x + 5, -1); } else if (this.label.size() >= 2) { - guiGraphics.drawString(EditGameRulesScreen.this.minecraft.font, (FormattedCharSequence)this.label.get(0), y, x, -1, false); - guiGraphics.drawString(EditGameRulesScreen.this.minecraft.font, (FormattedCharSequence)this.label.get(1), y, x + 10, -1, false); + guiGraphics.drawString(EditGameRulesScreen.this.minecraft.font, (FormattedCharSequence)this.label.get(0), y, x, -1); + guiGraphics.drawString(EditGameRulesScreen.this.minecraft.font, (FormattedCharSequence)this.label.get(1), y, x + 10, -1); } } } @@ -180,7 +185,7 @@ public class EditGameRulesScreen extends Screen { public class IntegerRuleEntry extends EditGameRulesScreen.GameRuleEntry { private final EditBox input; - public IntegerRuleEntry(final Component label, final List tooltip, final String description, final GameRules.IntegerValue value) { + public IntegerRuleEntry(final Component label, final List tooltip, final String description, final IntegerValue value) { super(tooltip, label); this.input = new EditBox(EditGameRulesScreen.this.minecraft.font, 10, 5, 44, 20, label.copy().append("\n").append(description).append("\n")); this.input.setValue(Integer.toString(value.get())); @@ -227,7 +232,7 @@ public class EditGameRulesScreen extends Screen { EditGameRulesScreen.this.layout.getHeaderHeight(), 24 ); - Map, EditGameRulesScreen.RuleEntry>> map = Maps., EditGameRulesScreen.RuleEntry>>newHashMap(); + Map, EditGameRulesScreen.RuleEntry>> map = Maps., EditGameRulesScreen.RuleEntry>>newHashMap(); gameRules.visitGameRuleTypes( new net.minecraft.client.gui.screens.worldselection.EditGameRulesScreen.RuleList.1(this, EditGameRulesScreen.this, gameRules, map) ); @@ -238,13 +243,13 @@ public class EditGameRulesScreen extends Screen { entry -> { this.addEntry( EditGameRulesScreen.this.new CategoryRuleEntry( - Component.translatable(((GameRules.Category)entry.getKey()).getDescriptionId()).withStyle(ChatFormatting.BOLD, ChatFormatting.YELLOW) + Component.translatable(((Category)entry.getKey()).getDescriptionId()).withStyle(ChatFormatting.BOLD, ChatFormatting.YELLOW) ) ); ((Map)entry.getValue()) .entrySet() .stream() - .sorted(java.util.Map.Entry.comparingByKey(Comparator.comparing(GameRules.Key::getId))) + .sorted(java.util.Map.Entry.comparingByKey(Comparator.comparing(Key::getId))) .forEach(entryx -> this.addEntry((EditGameRulesScreen.RuleEntry)entryx.getValue())); } ); diff --git a/net/minecraft/client/gui/screens/worldselection/EditWorldScreen.java b/net/minecraft/client/gui/screens/worldselection/EditWorldScreen.java index 998adbdc..54e68f7c 100644 --- a/net/minecraft/client/gui/screens/worldselection/EditWorldScreen.java +++ b/net/minecraft/client/gui/screens/worldselection/EditWorldScreen.java @@ -33,6 +33,7 @@ import net.minecraft.util.StringUtil; import net.minecraft.world.level.storage.LevelResource; import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelSummary; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; @@ -54,15 +55,15 @@ public class EditWorldScreen extends Screen { private static final int HALF_WIDTH = 98; private final LinearLayout layout = LinearLayout.vertical().spacing(5); private final BooleanConsumer callback; - private final LevelStorageSource.LevelStorageAccess levelAccess; + private final LevelStorageAccess levelAccess; private final EditBox nameEdit; - public static EditWorldScreen create(Minecraft minecraft, LevelStorageSource.LevelStorageAccess levelAccess, BooleanConsumer callback) throws IOException { + public static EditWorldScreen create(Minecraft minecraft, LevelStorageAccess levelAccess, BooleanConsumer callback) throws IOException { LevelSummary levelSummary = levelAccess.getSummary(levelAccess.getDataTag()); return new EditWorldScreen(minecraft, levelAccess, levelSummary.getLevelName(), callback); } - private EditWorldScreen(Minecraft minecraft, LevelStorageSource.LevelStorageAccess levelAccess, String levelName, BooleanConsumer callback) { + private EditWorldScreen(Minecraft minecraft, LevelStorageAccess levelAccess, String levelName, BooleanConsumer callback) { super(Component.translatable("selectWorld.edit.title")); this.callback = callback; this.levelAccess = levelAccess; @@ -142,7 +143,7 @@ public class EditWorldScreen extends Screen { this.callback.accept(true); } - public static boolean makeBackupAndShowToast(LevelStorageSource.LevelStorageAccess levelAccess) { + public static boolean makeBackupAndShowToast(LevelStorageAccess levelAccess) { long l = 0L; IOException iOException = null; diff --git a/net/minecraft/client/gui/screens/worldselection/ExperimentsScreen.java b/net/minecraft/client/gui/screens/worldselection/ExperimentsScreen.java index 2419ff38..5f9e6124 100644 --- a/net/minecraft/client/gui/screens/worldselection/ExperimentsScreen.java +++ b/net/minecraft/client/gui/screens/worldselection/ExperimentsScreen.java @@ -4,35 +4,47 @@ import com.google.common.collect.Lists; import it.unimi.dsi.fastutil.objects.Object2BooleanLinkedOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2BooleanMap; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.function.Consumer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.ChatFormatting; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.AbstractContainerWidget; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.MultiLineTextWidget; +import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; +import net.minecraft.client.gui.layouts.Layout; import net.minecraft.client.gui.layouts.LinearLayout; +import net.minecraft.client.gui.narration.NarratableEntry; +import net.minecraft.client.gui.narration.NarrationElementOutput; +import net.minecraft.client.gui.navigation.ScreenDirection; +import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.worldselection.SwitchGrid.Builder; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.server.packs.repository.Pack; import net.minecraft.server.packs.repository.PackRepository; import net.minecraft.server.packs.repository.PackSource; +import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class ExperimentsScreen extends Screen { private static final Component TITLE = Component.translatable("selectWorld.experiments"); private static final Component INFO = Component.translatable("selectWorld.experiments.info").withStyle(ChatFormatting.RED); private static final int MAIN_CONTENT_WIDTH = 310; + private static final int SCROLL_AREA_MIN_HEIGHT = 130; private final HeaderAndFooterLayout layout = new HeaderAndFooterLayout(this); private final Screen parent; private final PackRepository packRepository; private final Consumer output; private final Object2BooleanMap packs = new Object2BooleanLinkedOpenHashMap<>(); + @Nullable + private ExperimentsScreen.ScrollArea scrollArea; public ExperimentsScreen(Screen parent, PackRepository packRepository, Consumer output) { super(TITLE); @@ -52,7 +64,7 @@ public class ExperimentsScreen extends Screen { this.layout.addTitleHeader(TITLE, this.font); LinearLayout linearLayout = this.layout.addToContents(LinearLayout.vertical()); linearLayout.addChild(new MultiLineTextWidget(INFO, this.font).setMaxWidth(310), layoutSettings -> layoutSettings.paddingBottom(15)); - Builder builder = SwitchGrid.builder(310).withInfoUnderneath(2, true).withRowSpacing(4); + SwitchGrid.Builder builder = SwitchGrid.builder(299).withInfoUnderneath(2, true).withRowSpacing(4); this.packs .forEach( (pack, boolean_) -> builder.addSwitch( @@ -60,7 +72,9 @@ public class ExperimentsScreen extends Screen { ) .withInfo(pack.getDescription()) ); - builder.build(linearLayout::addChild); + Layout layout = builder.build().layout(); + this.scrollArea = new ExperimentsScreen.ScrollArea(layout, 310, 130); + linearLayout.addChild(this.scrollArea); LinearLayout linearLayout2 = this.layout.addToFooter(LinearLayout.horizontal().spacing(8)); linearLayout2.addChild(Button.builder(CommonComponents.GUI_DONE, button -> this.onDone()).build()); linearLayout2.addChild(Button.builder(CommonComponents.GUI_CANCEL, button -> this.onClose()).build()); @@ -77,7 +91,11 @@ public class ExperimentsScreen extends Screen { @Override protected void repositionElements() { + this.scrollArea.setHeight(130); this.layout.arrangeElements(); + int i = this.height - this.layout.getFooterHeight() - this.scrollArea.getRectangle().bottom(); + this.scrollArea.setHeight(this.scrollArea.getHeight() + i); + this.scrollArea.refreshScrollAmount(); } @Override @@ -103,4 +121,94 @@ public class ExperimentsScreen extends Screen { this.packRepository.setSelected(list.stream().map(Pack::getId).toList()); this.output.accept(this.packRepository); } + + @Environment(EnvType.CLIENT) + public class ScrollArea extends AbstractContainerWidget { + private final List children = new ArrayList(); + private final Layout layout; + + public ScrollArea(final Layout layout, final int width, final int height) { + super(0, 0, width, height, CommonComponents.EMPTY); + this.layout = layout; + layout.visitWidgets(this::addWidget); + } + + public void addWidget(AbstractWidget widget) { + this.children.add(widget); + } + + @Override + protected int contentHeight() { + return this.layout.getHeight(); + } + + @Override + protected double scrollRate() { + return 10.0; + } + + @Override + protected void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { + guiGraphics.enableScissor(this.getX(), this.getY(), this.getX() + this.width, this.getY() + this.height); + guiGraphics.pose().pushPose(); + guiGraphics.pose().translate(0.0, -this.scrollAmount(), 0.0); + + for (AbstractWidget abstractWidget : this.children) { + abstractWidget.render(guiGraphics, mouseX, mouseY, partialTick); + } + + guiGraphics.pose().popPose(); + guiGraphics.disableScissor(); + this.renderScrollbar(guiGraphics); + } + + @Override + protected void updateWidgetNarration(NarrationElementOutput narrationElementOutput) { + } + + @Override + public ScreenRectangle getBorderForArrowNavigation(ScreenDirection direction) { + return new ScreenRectangle(this.getX(), this.getY(), this.width, this.contentHeight()); + } + + @Override + public void setFocused(@Nullable GuiEventListener focused) { + super.setFocused(focused); + if (focused != null) { + ScreenRectangle screenRectangle = this.getRectangle(); + ScreenRectangle screenRectangle2 = focused.getRectangle(); + int i = (int)(screenRectangle2.top() - this.scrollAmount() - screenRectangle.top()); + int j = (int)(screenRectangle2.bottom() - this.scrollAmount() - screenRectangle.bottom()); + if (i < 0) { + this.setScrollAmount(this.scrollAmount() + i - 14.0); + } else if (j > 0) { + this.setScrollAmount(this.scrollAmount() + j + 14.0); + } + } + } + + @Override + public List children() { + return this.children; + } + + @Override + public void setX(int x) { + super.setX(x); + this.layout.setX(x); + this.layout.arrangeElements(); + } + + @Override + public void setY(int y) { + super.setY(y); + this.layout.setY(y); + this.layout.arrangeElements(); + } + + @Override + public Collection getNarratables() { + return this.children; + } + } } diff --git a/net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen.java b/net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen.java index b2cad3a0..5fe7f498 100644 --- a/net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen.java +++ b/net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen.java @@ -13,6 +13,7 @@ import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.RegistryAccess; +import net.minecraft.core.RegistryAccess.Frozen; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; @@ -23,8 +24,8 @@ import net.minecraft.util.Mth; import net.minecraft.util.worldupdate.WorldUpgrader; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelSettings; -import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.WorldData; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -42,7 +43,7 @@ public class OptimizeWorldScreen extends Screen { @Nullable public static OptimizeWorldScreen create( - Minecraft minecraft, BooleanConsumer callback, DataFixer dataFixer, LevelStorageSource.LevelStorageAccess levelStorage, boolean eraseCache + Minecraft minecraft, BooleanConsumer callback, DataFixer dataFixer, LevelStorageAccess levelStorage, boolean eraseCache ) { try { WorldOpenFlows worldOpenFlows = minecraft.createWorldOpenFlows(); @@ -51,7 +52,7 @@ public class OptimizeWorldScreen extends Screen { OptimizeWorldScreen var10; try (WorldStem worldStem = worldOpenFlows.loadWorldStem(levelStorage.getDataTag(), false, packRepository)) { WorldData worldData = worldStem.worldData(); - RegistryAccess.Frozen frozen = worldStem.registries().compositeAccess(); + Frozen frozen = worldStem.registries().compositeAccess(); levelStorage.saveDataTag(frozen, worldData); var10 = new OptimizeWorldScreen(callback, dataFixer, levelStorage, worldData.getLevelSettings(), eraseCache, frozen); } @@ -66,7 +67,7 @@ public class OptimizeWorldScreen extends Screen { private OptimizeWorldScreen( BooleanConsumer callback, DataFixer dataFixer, - LevelStorageSource.LevelStorageAccess levelStorage, + LevelStorageAccess levelStorage, LevelSettings levelSettings, boolean eraseCache, RegistryAccess registryAccess diff --git a/net/minecraft/client/gui/screens/worldselection/SwitchGrid.java b/net/minecraft/client/gui/screens/worldselection/SwitchGrid.java index 70bd2738..25cec495 100644 --- a/net/minecraft/client/gui/screens/worldselection/SwitchGrid.java +++ b/net/minecraft/client/gui/screens/worldselection/SwitchGrid.java @@ -15,7 +15,7 @@ import net.minecraft.client.gui.components.MultiLineTextWidget; import net.minecraft.client.gui.components.StringWidget; import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.layouts.GridLayout; -import net.minecraft.client.gui.layouts.LayoutElement; +import net.minecraft.client.gui.layouts.Layout; import net.minecraft.client.gui.layouts.SpacerElement; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -25,9 +25,15 @@ import org.jetbrains.annotations.Nullable; class SwitchGrid { private static final int DEFAULT_SWITCH_BUTTON_WIDTH = 44; private final List switches; + private final Layout layout; - SwitchGrid(List switches) { + SwitchGrid(List switches, Layout layout) { this.switches = switches; + this.layout = layout; + } + + public Layout layout() { + return this.layout; } public void refreshStates() { @@ -71,7 +77,7 @@ class SwitchGrid { return this; } - public SwitchGrid build(Consumer consumer) { + public SwitchGrid build() { GridLayout gridLayout = new GridLayout().rowSpacing(this.rowSpacing); gridLayout.addChild(SpacerElement.width(this.width - 44), 0, 0); gridLayout.addChild(SpacerElement.width(44), 0, 1); @@ -83,8 +89,7 @@ class SwitchGrid { } gridLayout.arrangeElements(); - consumer.accept(gridLayout); - SwitchGrid switchGrid = new SwitchGrid(list); + SwitchGrid switchGrid = new SwitchGrid(list, gridLayout); switchGrid.refreshStates(); return switchGrid; } diff --git a/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java b/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java index a41d09db..0f0cabbe 100644 --- a/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java +++ b/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java @@ -57,6 +57,8 @@ import net.minecraft.world.level.storage.LevelResource; import net.minecraft.world.level.storage.LevelStorageException; import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelSummary; +import net.minecraft.world.level.storage.LevelStorageSource.LevelCandidates; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import net.minecraft.world.level.storage.LevelSummary.CorruptedLevelSummary; import net.minecraft.world.level.storage.LevelSummary.SymlinkLevelSummary; import net.minecraft.world.level.validation.ContentValidationException; @@ -173,7 +175,7 @@ public class WorldSelectionList extends ObjectSelectionList> loadLevels() { - LevelStorageSource.LevelCandidates levelCandidates; + LevelCandidates levelCandidates; try { levelCandidates = this.minecraft.getLevelSource().findLevelCandidates(); } catch (LevelStorageException var3) { @@ -217,7 +219,7 @@ public class WorldSelectionList extends ObjectSelectionList getSelectedOpt() { @@ -272,11 +274,11 @@ public class WorldSelectionList extends ObjectSelectionList pair = this.minecraft.createWorldOpenFlows().recreateWorldData(levelStorageAccess); LevelSettings levelSettings = pair.getFirst(); WorldCreationContext worldCreationContext = pair.getSecond(); diff --git a/net/minecraft/client/main/Main.java b/net/minecraft/client/main/Main.java index bb5f0034..bef3d789 100644 --- a/net/minecraft/client/main/Main.java +++ b/net/minecraft/client/main/Main.java @@ -34,9 +34,14 @@ import net.minecraft.CrashReportCategory; import net.minecraft.DefaultUncaughtExceptionHandler; import net.minecraft.SharedConstants; import net.minecraft.Util; +import net.minecraft.client.ClientBootstrap; import net.minecraft.client.Minecraft; import net.minecraft.client.User; import net.minecraft.client.User.Type; +import net.minecraft.client.main.GameConfig.FolderData; +import net.minecraft.client.main.GameConfig.GameData; +import net.minecraft.client.main.GameConfig.QuickPlayData; +import net.minecraft.client.main.GameConfig.UserData; import net.minecraft.client.server.IntegratedServer; import net.minecraft.client.telemetry.TelemetryProperty; import net.minecraft.client.telemetry.events.GameLoadTimesEvent; @@ -120,6 +125,7 @@ public class Main { logger = LogUtils.getLogger(); string2 = "Bootstrap"; Bootstrap.bootStrap(); + ClientBootstrap.bootstrap(); GameLoadTimesEvent.INSTANCE.setBootstrapTime(Bootstrap.bootstrapDuration.get()); Bootstrap.validate(); string2 = "Argument parsing"; @@ -182,11 +188,11 @@ public class Main { optionSpec15.value(optionSet), uUID, optionSpec19.value(optionSet), emptyStringToEmptyOptional(string9), emptyStringToEmptyOptional(string10), type ); gameConfig = new GameConfig( - new GameConfig.UserData(user, propertyMap, propertyMap2, proxy), + new UserData(user, propertyMap, propertyMap2, proxy), new DisplayData(i, j, optionalInt, optionalInt2, bl), - new GameConfig.FolderData(file, file3, file2, string8), - new GameConfig.GameData(bl2, string, string7, bl3, bl4, bl5), - new GameConfig.QuickPlayData(string11, string12, string13, string14) + new FolderData(file, file3, file2, string8), + new GameData(bl2, string, string7, bl3, bl4, bl5), + new QuickPlayData(string11, string12, string13, string14) ); Util.startTimerHackThread(); completableFuture.join(); diff --git a/net/minecraft/client/model/AbstractBoatModel.java b/net/minecraft/client/model/AbstractBoatModel.java index d7afc835..541e1aa4 100644 --- a/net/minecraft/client/model/AbstractBoatModel.java +++ b/net/minecraft/client/model/AbstractBoatModel.java @@ -11,16 +11,16 @@ public abstract class AbstractBoatModel extends EntityModel { private final ModelPart leftPaddle; private final ModelPart rightPaddle; - public AbstractBoatModel(ModelPart root) { - super(root); - this.leftPaddle = root.getChild("left_paddle"); - this.rightPaddle = root.getChild("right_paddle"); + public AbstractBoatModel(ModelPart modelPart) { + super(modelPart); + this.leftPaddle = modelPart.getChild("left_paddle"); + this.rightPaddle = modelPart.getChild("right_paddle"); } - public void setupAnim(BoatRenderState renderState) { - super.setupAnim(renderState); - animatePaddle(renderState.rowingTimeLeft, 0, this.leftPaddle); - animatePaddle(renderState.rowingTimeRight, 1, this.rightPaddle); + public void setupAnim(BoatRenderState boatRenderState) { + super.setupAnim(boatRenderState); + animatePaddle(boatRenderState.rowingTimeLeft, 0, this.leftPaddle); + animatePaddle(boatRenderState.rowingTimeRight, 1, this.rightPaddle); } private static void animatePaddle(float rowingTime, int side, ModelPart part) { diff --git a/net/minecraft/client/model/AbstractEquineModel.java b/net/minecraft/client/model/AbstractEquineModel.java index 25df78e4..7f9ef8ae 100644 --- a/net/minecraft/client/model/AbstractEquineModel.java +++ b/net/minecraft/client/model/AbstractEquineModel.java @@ -171,44 +171,44 @@ public abstract class AbstractEquineModel extends E return meshDefinition; } - public void setupAnim(T renderState) { - super.setupAnim(renderState); + public void setupAnim(T equineRenderState) { + super.setupAnim(equineRenderState); for (ModelPart modelPart : this.saddleParts) { - modelPart.visible = renderState.isSaddled; + modelPart.visible = equineRenderState.isSaddled; } for (ModelPart modelPart : this.ridingParts) { - modelPart.visible = renderState.isRidden && renderState.isSaddled; + modelPart.visible = equineRenderState.isRidden && equineRenderState.isSaddled; } - float f = Mth.clamp(renderState.yRot, -20.0F, 20.0F); - float g = renderState.xRot * (float) (Math.PI / 180.0); - float h = renderState.walkAnimationSpeed; - float i = renderState.walkAnimationPos; + float f = Mth.clamp(equineRenderState.yRot, -20.0F, 20.0F); + float g = equineRenderState.xRot * (float) (Math.PI / 180.0); + float h = equineRenderState.walkAnimationSpeed; + float i = equineRenderState.walkAnimationPos; if (h > 0.2F) { g += Mth.cos(i * 0.8F) * 0.15F * h; } - float j = renderState.eatAnimation; - float k = renderState.standAnimation; + float j = equineRenderState.eatAnimation; + float k = equineRenderState.standAnimation; float l = 1.0F - k; - float m = renderState.feedingAnimation; - boolean bl = renderState.animateTail; + float m = equineRenderState.feedingAnimation; + boolean bl = equineRenderState.animateTail; this.headParts.xRot = (float) (Math.PI / 6) + g; this.headParts.yRot = f * (float) (Math.PI / 180.0); - float n = renderState.isInWater ? 0.2F : 1.0F; + float n = equineRenderState.isInWater ? 0.2F : 1.0F; float o = Mth.cos(n * i * 0.6662F + (float) Math.PI); float p = o * 0.8F * h; - float q = (1.0F - Math.max(k, j)) * ((float) (Math.PI / 6) + g + m * Mth.sin(renderState.ageInTicks) * 0.05F); - this.headParts.xRot = k * ((float) (Math.PI / 12) + g) + j * (2.1816616F + Mth.sin(renderState.ageInTicks) * 0.05F) + q; + float q = (1.0F - Math.max(k, j)) * ((float) (Math.PI / 6) + g + m * Mth.sin(equineRenderState.ageInTicks) * 0.05F); + this.headParts.xRot = k * ((float) (Math.PI / 12) + g) + j * (2.1816616F + Mth.sin(equineRenderState.ageInTicks) * 0.05F) + q; this.headParts.yRot = k * f * (float) (Math.PI / 180.0) + (1.0F - Math.max(k, j)) * this.headParts.yRot; - float r = renderState.ageScale; + float r = equineRenderState.ageScale; this.headParts.y = this.headParts.y + Mth.lerp(j, Mth.lerp(k, 0.0F, -8.0F * r), 7.0F * r); this.headParts.z = Mth.lerp(k, this.headParts.z, -4.0F * r); this.body.xRot = k * (float) (-Math.PI / 4) + l * this.body.xRot; float s = (float) (Math.PI / 12) * k; - float t = Mth.cos(renderState.ageInTicks * 0.6F + (float) Math.PI); + float t = Mth.cos(equineRenderState.ageInTicks * 0.6F + (float) Math.PI); this.leftFrontLeg.y -= 12.0F * r * k; this.leftFrontLeg.z += 4.0F * r * k; this.rightFrontLeg.y = this.leftFrontLeg.y; @@ -223,7 +223,7 @@ public abstract class AbstractEquineModel extends E this.tail.y += h * r; this.tail.z += h * 2.0F * r; if (bl) { - this.tail.yRot = Mth.cos(renderState.ageInTicks * 0.7F); + this.tail.yRot = Mth.cos(equineRenderState.ageInTicks * 0.7F); } else { this.tail.yRot = 0.0F; } diff --git a/net/minecraft/client/model/AbstractPiglinModel.java b/net/minecraft/client/model/AbstractPiglinModel.java index 3978eb46..db221d67 100644 --- a/net/minecraft/client/model/AbstractPiglinModel.java +++ b/net/minecraft/client/model/AbstractPiglinModel.java @@ -26,8 +26,8 @@ public class AbstractPiglinModel extends Humanoid public final ModelPart rightEar = this.head.getChild("right_ear"); public final ModelPart leftEar = this.head.getChild("left_ear"); - public AbstractPiglinModel(ModelPart root) { - super(root, RenderType::entityTranslucent); + public AbstractPiglinModel(ModelPart modelPart) { + super(modelPart, RenderType::entityTranslucent); } public static MeshDefinition createMesh(CubeDeformation cubeDeformation) { @@ -70,12 +70,12 @@ public class AbstractPiglinModel extends Humanoid } @Override - public void setupAnim(S renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationPos; - float g = renderState.walkAnimationSpeed; + public void setupAnim(S humanoidRenderState) { + super.setupAnim(humanoidRenderState); + float f = humanoidRenderState.walkAnimationPos; + float g = humanoidRenderState.walkAnimationSpeed; float h = (float) (Math.PI / 6); - float i = renderState.ageInTicks * 0.1F + f * 0.5F; + float i = humanoidRenderState.ageInTicks * 0.1F + f * 0.5F; float j = 0.08F + g * 0.4F; this.leftEar.zRot = (float) (-Math.PI / 6) - Mth.cos(i * 1.2F) * j; this.rightEar.zRot = (float) (Math.PI / 6) + Mth.cos(i) * j; diff --git a/net/minecraft/client/model/AllayModel.java b/net/minecraft/client/model/AllayModel.java index d8bdaf9f..6010943f 100644 --- a/net/minecraft/client/model/AllayModel.java +++ b/net/minecraft/client/model/AllayModel.java @@ -71,29 +71,29 @@ public class AllayModel extends EntityModel implements ArmedMo return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(AllayRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; - float h = renderState.ageInTicks * 20.0F * (float) (Math.PI / 180.0) + g; + public void setupAnim(AllayRenderState allayRenderState) { + super.setupAnim(allayRenderState); + float f = allayRenderState.walkAnimationSpeed; + float g = allayRenderState.walkAnimationPos; + float h = allayRenderState.ageInTicks * 20.0F * (float) (Math.PI / 180.0) + g; float i = Mth.cos(h) * (float) Math.PI * 0.15F + f; - float j = renderState.ageInTicks * 9.0F * (float) (Math.PI / 180.0); + float j = allayRenderState.ageInTicks * 9.0F * (float) (Math.PI / 180.0); float k = Math.min(f / 0.3F, 1.0F); float l = 1.0F - k; - float m = renderState.holdingAnimationProgress; - if (renderState.isDancing) { - float n = renderState.ageInTicks * 8.0F * (float) (Math.PI / 180.0) + f; + float m = allayRenderState.holdingAnimationProgress; + if (allayRenderState.isDancing) { + float n = allayRenderState.ageInTicks * 8.0F * (float) (Math.PI / 180.0) + f; float o = Mth.cos(n) * 16.0F * (float) (Math.PI / 180.0); - float p = renderState.spinningProgress; + float p = allayRenderState.spinningProgress; float q = Mth.cos(n) * 14.0F * (float) (Math.PI / 180.0); float r = Mth.cos(n) * 30.0F * (float) (Math.PI / 180.0); - this.root.yRot = renderState.isSpinning ? (float) (Math.PI * 4) * p : this.root.yRot; + this.root.yRot = allayRenderState.isSpinning ? (float) (Math.PI * 4) * p : this.root.yRot; this.root.zRot = o * (1.0F - p); this.head.yRot = r * (1.0F - p); this.head.zRot = q * (1.0F - p); } else { - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = allayRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = allayRenderState.yRot * (float) (Math.PI / 180.0); } this.right_wing.xRot = 0.43633232F * (1.0F - k); diff --git a/net/minecraft/client/model/ArmadilloModel.java b/net/minecraft/client/model/ArmadilloModel.java index 0ed0faaa..ccef1e56 100644 --- a/net/minecraft/client/model/ArmadilloModel.java +++ b/net/minecraft/client/model/ArmadilloModel.java @@ -104,9 +104,9 @@ public class ArmadilloModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(ArmadilloRenderState renderState) { - super.setupAnim(renderState); - if (renderState.isHidingInShell) { + public void setupAnim(ArmadilloRenderState armadilloRenderState) { + super.setupAnim(armadilloRenderState); + if (armadilloRenderState.isHidingInShell) { this.body.skipDraw = true; this.leftHindLeg.visible = false; this.rightHindLeg.visible = false; @@ -118,13 +118,13 @@ public class ArmadilloModel extends EntityModel { this.rightHindLeg.visible = true; this.tail.visible = true; this.cube.visible = false; - this.head.xRot = Mth.clamp(renderState.xRot, -22.5F, 25.0F) * (float) (Math.PI / 180.0); - this.head.yRot = Mth.clamp(renderState.yRot, -32.5F, 32.5F) * (float) (Math.PI / 180.0); + this.head.xRot = Mth.clamp(armadilloRenderState.xRot, -22.5F, 25.0F) * (float) (Math.PI / 180.0); + this.head.yRot = Mth.clamp(armadilloRenderState.yRot, -32.5F, 32.5F) * (float) (Math.PI / 180.0); } - this.animateWalk(ArmadilloAnimation.ARMADILLO_WALK, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 16.5F, 2.5F); - this.animate(renderState.rollOutAnimationState, ArmadilloAnimation.ARMADILLO_ROLL_OUT, renderState.ageInTicks, 1.0F); - this.animate(renderState.rollUpAnimationState, ArmadilloAnimation.ARMADILLO_ROLL_UP, renderState.ageInTicks, 1.0F); - this.animate(renderState.peekAnimationState, ArmadilloAnimation.ARMADILLO_PEEK, renderState.ageInTicks, 1.0F); + this.animateWalk(ArmadilloAnimation.ARMADILLO_WALK, armadilloRenderState.walkAnimationPos, armadilloRenderState.walkAnimationSpeed, 16.5F, 2.5F); + this.animate(armadilloRenderState.rollOutAnimationState, ArmadilloAnimation.ARMADILLO_ROLL_OUT, armadilloRenderState.ageInTicks, 1.0F); + this.animate(armadilloRenderState.rollUpAnimationState, ArmadilloAnimation.ARMADILLO_ROLL_UP, armadilloRenderState.ageInTicks, 1.0F); + this.animate(armadilloRenderState.peekAnimationState, ArmadilloAnimation.ARMADILLO_PEEK, armadilloRenderState.ageInTicks, 1.0F); } } diff --git a/net/minecraft/client/model/ArmorStandArmorModel.java b/net/minecraft/client/model/ArmorStandArmorModel.java index cdfc630c..7bb1c3ac 100644 --- a/net/minecraft/client/model/ArmorStandArmorModel.java +++ b/net/minecraft/client/model/ArmorStandArmorModel.java @@ -13,8 +13,8 @@ import net.minecraft.client.renderer.entity.state.ArmorStandRenderState; @Environment(EnvType.CLIENT) public class ArmorStandArmorModel extends HumanoidModel { - public ArmorStandArmorModel(ModelPart root) { - super(root); + public ArmorStandArmorModel(ModelPart modelPart) { + super(modelPart); } public static LayerDefinition createBodyLayer(CubeDeformation cubeDeformation) { @@ -39,25 +39,25 @@ public class ArmorStandArmorModel extends HumanoidModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(ArmorStandRenderState renderState) { - super.setupAnim(renderState); - this.head.xRot = (float) (Math.PI / 180.0) * renderState.headPose.getX(); - this.head.yRot = (float) (Math.PI / 180.0) * renderState.headPose.getY(); - this.head.zRot = (float) (Math.PI / 180.0) * renderState.headPose.getZ(); - this.body.xRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getX(); - this.body.yRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getY(); - this.body.zRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getZ(); - this.leftArm.xRot = (float) (Math.PI / 180.0) * renderState.leftArmPose.getX(); - this.leftArm.yRot = (float) (Math.PI / 180.0) * renderState.leftArmPose.getY(); - this.leftArm.zRot = (float) (Math.PI / 180.0) * renderState.leftArmPose.getZ(); - this.rightArm.xRot = (float) (Math.PI / 180.0) * renderState.rightArmPose.getX(); - this.rightArm.yRot = (float) (Math.PI / 180.0) * renderState.rightArmPose.getY(); - this.rightArm.zRot = (float) (Math.PI / 180.0) * renderState.rightArmPose.getZ(); - this.leftLeg.xRot = (float) (Math.PI / 180.0) * renderState.leftLegPose.getX(); - this.leftLeg.yRot = (float) (Math.PI / 180.0) * renderState.leftLegPose.getY(); - this.leftLeg.zRot = (float) (Math.PI / 180.0) * renderState.leftLegPose.getZ(); - this.rightLeg.xRot = (float) (Math.PI / 180.0) * renderState.rightLegPose.getX(); - this.rightLeg.yRot = (float) (Math.PI / 180.0) * renderState.rightLegPose.getY(); - this.rightLeg.zRot = (float) (Math.PI / 180.0) * renderState.rightLegPose.getZ(); + public void setupAnim(ArmorStandRenderState armorStandRenderState) { + super.setupAnim(armorStandRenderState); + this.head.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.headPose.getX(); + this.head.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.headPose.getY(); + this.head.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.headPose.getZ(); + this.body.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getX(); + this.body.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getY(); + this.body.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getZ(); + this.leftArm.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.leftArmPose.getX(); + this.leftArm.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.leftArmPose.getY(); + this.leftArm.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.leftArmPose.getZ(); + this.rightArm.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.rightArmPose.getX(); + this.rightArm.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.rightArmPose.getY(); + this.rightArm.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.rightArmPose.getZ(); + this.leftLeg.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.leftLegPose.getX(); + this.leftLeg.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.leftLegPose.getY(); + this.leftLeg.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.leftLegPose.getZ(); + this.rightLeg.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.rightLegPose.getX(); + this.rightLeg.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.rightLegPose.getY(); + this.rightLeg.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.rightLegPose.getZ(); } } diff --git a/net/minecraft/client/model/ArmorStandModel.java b/net/minecraft/client/model/ArmorStandModel.java index e0c9c6d7..ea352b1b 100644 --- a/net/minecraft/client/model/ArmorStandModel.java +++ b/net/minecraft/client/model/ArmorStandModel.java @@ -24,12 +24,12 @@ public class ArmorStandModel extends ArmorStandArmorModel { private final ModelPart shoulderStick; private final ModelPart basePlate; - public ArmorStandModel(ModelPart root) { - super(root); - this.rightBodyStick = root.getChild("right_body_stick"); - this.leftBodyStick = root.getChild("left_body_stick"); - this.shoulderStick = root.getChild("shoulder_stick"); - this.basePlate = root.getChild("base_plate"); + public ArmorStandModel(ModelPart modelPart) { + super(modelPart); + this.rightBodyStick = modelPart.getChild("right_body_stick"); + this.leftBodyStick = modelPart.getChild("left_body_stick"); + this.shoulderStick = modelPart.getChild("shoulder_stick"); + this.basePlate = modelPart.getChild("base_plate"); this.hat.visible = false; } @@ -62,21 +62,21 @@ public class ArmorStandModel extends ArmorStandArmorModel { } @Override - public void setupAnim(ArmorStandRenderState renderState) { - super.setupAnim(renderState); - this.basePlate.yRot = (float) (Math.PI / 180.0) * -renderState.yRot; - this.leftArm.visible = renderState.showArms; - this.rightArm.visible = renderState.showArms; - this.basePlate.visible = renderState.showBasePlate; - this.rightBodyStick.xRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getX(); - this.rightBodyStick.yRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getY(); - this.rightBodyStick.zRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getZ(); - this.leftBodyStick.xRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getX(); - this.leftBodyStick.yRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getY(); - this.leftBodyStick.zRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getZ(); - this.shoulderStick.xRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getX(); - this.shoulderStick.yRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getY(); - this.shoulderStick.zRot = (float) (Math.PI / 180.0) * renderState.bodyPose.getZ(); + public void setupAnim(ArmorStandRenderState armorStandRenderState) { + super.setupAnim(armorStandRenderState); + this.basePlate.yRot = (float) (Math.PI / 180.0) * -armorStandRenderState.yRot; + this.leftArm.visible = armorStandRenderState.showArms; + this.rightArm.visible = armorStandRenderState.showArms; + this.basePlate.visible = armorStandRenderState.showBasePlate; + this.rightBodyStick.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getX(); + this.rightBodyStick.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getY(); + this.rightBodyStick.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getZ(); + this.leftBodyStick.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getX(); + this.leftBodyStick.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getY(); + this.leftBodyStick.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getZ(); + this.shoulderStick.xRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getX(); + this.shoulderStick.yRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getY(); + this.shoulderStick.zRot = (float) (Math.PI / 180.0) * armorStandRenderState.bodyPose.getZ(); } @Override diff --git a/net/minecraft/client/model/ArrowModel.java b/net/minecraft/client/model/ArrowModel.java index 89c495ea..79c989a2 100644 --- a/net/minecraft/client/model/ArrowModel.java +++ b/net/minecraft/client/model/ArrowModel.java @@ -33,10 +33,10 @@ public class ArrowModel extends EntityModel { return LayerDefinition.create(meshDefinition.transformed(partPose -> partPose.scaled(0.9F)), 32, 32); } - public void setupAnim(ArrowRenderState renderState) { - super.setupAnim(renderState); - if (renderState.shake > 0.0F) { - float f = -Mth.sin(renderState.shake * 3.0F) * renderState.shake; + public void setupAnim(ArrowRenderState arrowRenderState) { + super.setupAnim(arrowRenderState); + if (arrowRenderState.shake > 0.0F) { + float f = -Mth.sin(arrowRenderState.shake * 3.0F) * arrowRenderState.shake; this.root.zRot += f * (float) (Math.PI / 180.0); } } diff --git a/net/minecraft/client/model/AxolotlModel.java b/net/minecraft/client/model/AxolotlModel.java index 3e505e6a..3bf95b2b 100644 --- a/net/minecraft/client/model/AxolotlModel.java +++ b/net/minecraft/client/model/AxolotlModel.java @@ -72,19 +72,19 @@ public class AxolotlModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(AxolotlRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.playingDeadFactor; - float g = renderState.inWaterFactor; - float h = renderState.onGroundFactor; - float i = renderState.movingFactor; + public void setupAnim(AxolotlRenderState axolotlRenderState) { + super.setupAnim(axolotlRenderState); + float f = axolotlRenderState.playingDeadFactor; + float g = axolotlRenderState.inWaterFactor; + float h = axolotlRenderState.onGroundFactor; + float i = axolotlRenderState.movingFactor; float j = 1.0F - i; float k = 1.0F - Math.min(h, i); - this.body.yRot = this.body.yRot + renderState.yRot * (float) (Math.PI / 180.0); - this.setupSwimmingAnimation(renderState.ageInTicks, renderState.xRot, Math.min(i, g)); - this.setupWaterHoveringAnimation(renderState.ageInTicks, Math.min(j, g)); - this.setupGroundCrawlingAnimation(renderState.ageInTicks, Math.min(i, h)); - this.setupLayStillOnGroundAnimation(renderState.ageInTicks, Math.min(j, h)); + this.body.yRot = this.body.yRot + axolotlRenderState.yRot * (float) (Math.PI / 180.0); + this.setupSwimmingAnimation(axolotlRenderState.ageInTicks, axolotlRenderState.xRot, Math.min(i, g)); + this.setupWaterHoveringAnimation(axolotlRenderState.ageInTicks, Math.min(j, g)); + this.setupGroundCrawlingAnimation(axolotlRenderState.ageInTicks, Math.min(i, h)); + this.setupLayStillOnGroundAnimation(axolotlRenderState.ageInTicks, Math.min(j, h)); this.setupPlayDeadAnimation(f); this.applyMirrorLegRotations(k); } diff --git a/net/minecraft/client/model/BannerFlagModel.java b/net/minecraft/client/model/BannerFlagModel.java new file mode 100644 index 00000000..36dc57cd --- /dev/null +++ b/net/minecraft/client/model/BannerFlagModel.java @@ -0,0 +1,37 @@ +package net.minecraft.client.model; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.util.Mth; + +@Environment(EnvType.CLIENT) +public class BannerFlagModel extends Model { + private final ModelPart flag; + + public BannerFlagModel(ModelPart root) { + super(root, RenderType::entitySolid); + this.flag = root.getChild("flag"); + } + + public static LayerDefinition createFlagLayer(boolean isStanding) { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition partDefinition = meshDefinition.getRoot(); + partDefinition.addOrReplaceChild( + "flag", + CubeListBuilder.create().texOffs(0, 0).addBox(-10.0F, 0.0F, -2.0F, 20.0F, 40.0F, 1.0F), + PartPose.offset(0.0F, isStanding ? -44.0F : -20.5F, isStanding ? 0.0F : 10.5F) + ); + return LayerDefinition.create(meshDefinition, 64, 64); + } + + public void setupAnim(float angle) { + this.flag.xRot = (-0.0125F + 0.01F * Mth.cos((float) (Math.PI * 2) * angle)) * (float) Math.PI; + } +} diff --git a/net/minecraft/client/model/BannerModel.java b/net/minecraft/client/model/BannerModel.java new file mode 100644 index 00000000..1ccee3ea --- /dev/null +++ b/net/minecraft/client/model/BannerModel.java @@ -0,0 +1,37 @@ +package net.minecraft.client.model; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.renderer.RenderType; + +@Environment(EnvType.CLIENT) +public class BannerModel extends Model { + public static final int BANNER_WIDTH = 20; + public static final int BANNER_HEIGHT = 40; + public static final String FLAG = "flag"; + private static final String POLE = "pole"; + private static final String BAR = "bar"; + + public BannerModel(ModelPart root) { + super(root, RenderType::entitySolid); + } + + public static LayerDefinition createBodyLayer(boolean isStanding) { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition partDefinition = meshDefinition.getRoot(); + if (isStanding) { + partDefinition.addOrReplaceChild("pole", CubeListBuilder.create().texOffs(44, 0).addBox(-1.0F, -42.0F, -1.0F, 2.0F, 42.0F, 2.0F), PartPose.ZERO); + } + + partDefinition.addOrReplaceChild( + "bar", CubeListBuilder.create().texOffs(0, 42).addBox(-10.0F, isStanding ? -44.0F : -20.5F, isStanding ? -1.0F : 9.5F, 20.0F, 2.0F, 2.0F), PartPose.ZERO + ); + return LayerDefinition.create(meshDefinition, 64, 64); + } +} diff --git a/net/minecraft/client/model/BatModel.java b/net/minecraft/client/model/BatModel.java index 9d90cbf3..733f3a67 100644 --- a/net/minecraft/client/model/BatModel.java +++ b/net/minecraft/client/model/BatModel.java @@ -66,14 +66,14 @@ public class BatModel extends EntityModel { return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(BatRenderState renderState) { - super.setupAnim(renderState); - if (renderState.isResting) { - this.applyHeadRotation(renderState.yRot); + public void setupAnim(BatRenderState batRenderState) { + super.setupAnim(batRenderState); + if (batRenderState.isResting) { + this.applyHeadRotation(batRenderState.yRot); } - this.animate(renderState.flyAnimationState, BatAnimation.BAT_FLYING, renderState.ageInTicks, 1.0F); - this.animate(renderState.restAnimationState, BatAnimation.BAT_RESTING, renderState.ageInTicks, 1.0F); + this.animate(batRenderState.flyAnimationState, BatAnimation.BAT_FLYING, batRenderState.ageInTicks, 1.0F); + this.animate(batRenderState.restAnimationState, BatAnimation.BAT_RESTING, batRenderState.ageInTicks, 1.0F); } private void applyHeadRotation(float headRotation) { diff --git a/net/minecraft/client/model/BeeModel.java b/net/minecraft/client/model/BeeModel.java index 2ec2e5a6..df8d8e9e 100644 --- a/net/minecraft/client/model/BeeModel.java +++ b/net/minecraft/client/model/BeeModel.java @@ -85,12 +85,12 @@ public class BeeModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(BeeRenderState renderState) { - super.setupAnim(renderState); - this.rollAmount = renderState.rollAmount; - this.stinger.visible = renderState.hasStinger; - if (!renderState.isOnGround) { - float f = renderState.ageInTicks * 120.32113F * (float) (Math.PI / 180.0); + public void setupAnim(BeeRenderState beeRenderState) { + super.setupAnim(beeRenderState); + this.rollAmount = beeRenderState.rollAmount; + this.stinger.visible = beeRenderState.hasStinger; + if (!beeRenderState.isOnGround) { + float f = beeRenderState.ageInTicks * 120.32113F * (float) (Math.PI / 180.0); this.rightWing.yRot = 0.0F; this.rightWing.zRot = Mth.cos(f) * (float) Math.PI * 0.15F; this.leftWing.xRot = this.rightWing.xRot; @@ -101,14 +101,14 @@ public class BeeModel extends EntityModel { this.backLeg.xRot = (float) (Math.PI / 4); } - if (!renderState.isAngry && !renderState.isOnGround) { - float f = Mth.cos(renderState.ageInTicks * 0.18F); + if (!beeRenderState.isAngry && !beeRenderState.isOnGround) { + float f = Mth.cos(beeRenderState.ageInTicks * 0.18F); this.bone.xRot = 0.1F + f * (float) Math.PI * 0.025F; this.leftAntenna.xRot = f * (float) Math.PI * 0.03F; this.rightAntenna.xRot = f * (float) Math.PI * 0.03F; this.frontLeg.xRot = -f * (float) Math.PI * 0.1F + (float) (Math.PI / 8); this.backLeg.xRot = -f * (float) Math.PI * 0.05F + (float) (Math.PI / 4); - this.bone.y = this.bone.y - Mth.cos(renderState.ageInTicks * 0.18F) * 0.9F; + this.bone.y = this.bone.y - Mth.cos(beeRenderState.ageInTicks * 0.18F) * 0.9F; } if (this.rollAmount > 0.0F) { diff --git a/net/minecraft/client/model/BlazeModel.java b/net/minecraft/client/model/BlazeModel.java index 3ed5d29a..84494796 100644 --- a/net/minecraft/client/model/BlazeModel.java +++ b/net/minecraft/client/model/BlazeModel.java @@ -66,36 +66,36 @@ public class BlazeModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(LivingEntityRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.ageInTicks * (float) Math.PI * -0.1F; + public void setupAnim(LivingEntityRenderState livingEntityRenderState) { + super.setupAnim(livingEntityRenderState); + float f = livingEntityRenderState.ageInTicks * (float) Math.PI * -0.1F; for (int i = 0; i < 4; i++) { - this.upperBodyParts[i].y = -2.0F + Mth.cos((i * 2 + renderState.ageInTicks) * 0.25F); + this.upperBodyParts[i].y = -2.0F + Mth.cos((i * 2 + livingEntityRenderState.ageInTicks) * 0.25F); this.upperBodyParts[i].x = Mth.cos(f) * 9.0F; this.upperBodyParts[i].z = Mth.sin(f) * 9.0F; f++; } - f = (float) (Math.PI / 4) + renderState.ageInTicks * (float) Math.PI * 0.03F; + f = (float) (Math.PI / 4) + livingEntityRenderState.ageInTicks * (float) Math.PI * 0.03F; for (int i = 4; i < 8; i++) { - this.upperBodyParts[i].y = 2.0F + Mth.cos((i * 2 + renderState.ageInTicks) * 0.25F); + this.upperBodyParts[i].y = 2.0F + Mth.cos((i * 2 + livingEntityRenderState.ageInTicks) * 0.25F); this.upperBodyParts[i].x = Mth.cos(f) * 7.0F; this.upperBodyParts[i].z = Mth.sin(f) * 7.0F; f++; } - f = 0.47123894F + renderState.ageInTicks * (float) Math.PI * -0.05F; + f = 0.47123894F + livingEntityRenderState.ageInTicks * (float) Math.PI * -0.05F; for (int i = 8; i < 12; i++) { - this.upperBodyParts[i].y = 11.0F + Mth.cos((i * 1.5F + renderState.ageInTicks) * 0.5F); + this.upperBodyParts[i].y = 11.0F + Mth.cos((i * 1.5F + livingEntityRenderState.ageInTicks) * 0.5F); this.upperBodyParts[i].x = Mth.cos(f) * 5.0F; this.upperBodyParts[i].z = Mth.sin(f) * 5.0F; f++; } - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = livingEntityRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = livingEntityRenderState.xRot * (float) (Math.PI / 180.0); } } diff --git a/net/minecraft/client/model/BreezeModel.java b/net/minecraft/client/model/BreezeModel.java index 4ae2b18c..f6c939eb 100644 --- a/net/minecraft/client/model/BreezeModel.java +++ b/net/minecraft/client/model/BreezeModel.java @@ -106,14 +106,14 @@ public class BreezeModel extends EntityModel { return LayerDefinition.create(meshDefinition, width, height); } - public void setupAnim(BreezeRenderState renderState) { - super.setupAnim(renderState); - this.animate(renderState.idle, BreezeAnimation.IDLE, renderState.ageInTicks); - this.animate(renderState.shoot, BreezeAnimation.SHOOT, renderState.ageInTicks); - this.animate(renderState.slide, BreezeAnimation.SLIDE, renderState.ageInTicks); - this.animate(renderState.slideBack, BreezeAnimation.SLIDE_BACK, renderState.ageInTicks); - this.animate(renderState.inhale, BreezeAnimation.INHALE, renderState.ageInTicks); - this.animate(renderState.longJump, BreezeAnimation.JUMP, renderState.ageInTicks); + public void setupAnim(BreezeRenderState breezeRenderState) { + super.setupAnim(breezeRenderState); + this.animate(breezeRenderState.idle, BreezeAnimation.IDLE, breezeRenderState.ageInTicks); + this.animate(breezeRenderState.shoot, BreezeAnimation.SHOOT, breezeRenderState.ageInTicks); + this.animate(breezeRenderState.slide, BreezeAnimation.SLIDE, breezeRenderState.ageInTicks); + this.animate(breezeRenderState.slideBack, BreezeAnimation.SLIDE_BACK, breezeRenderState.ageInTicks); + this.animate(breezeRenderState.inhale, BreezeAnimation.INHALE, breezeRenderState.ageInTicks); + this.animate(breezeRenderState.longJump, BreezeAnimation.JUMP, breezeRenderState.ageInTicks); } public ModelPart head() { diff --git a/net/minecraft/client/model/CamelModel.java b/net/minecraft/client/model/CamelModel.java index 2f94e3ff..e615f412 100644 --- a/net/minecraft/client/model/CamelModel.java +++ b/net/minecraft/client/model/CamelModel.java @@ -117,16 +117,16 @@ public class CamelModel extends EntityModel { return LayerDefinition.create(meshDefinition, 128, 128); } - public void setupAnim(CamelRenderState renderState) { - super.setupAnim(renderState); - this.applyHeadRotation(renderState, renderState.yRot, renderState.xRot); - this.toggleInvisibleParts(renderState); - this.animateWalk(CamelAnimation.CAMEL_WALK, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 2.0F, 2.5F); - this.animate(renderState.sitAnimationState, CamelAnimation.CAMEL_SIT, renderState.ageInTicks, 1.0F); - this.animate(renderState.sitPoseAnimationState, CamelAnimation.CAMEL_SIT_POSE, renderState.ageInTicks, 1.0F); - this.animate(renderState.sitUpAnimationState, CamelAnimation.CAMEL_STANDUP, renderState.ageInTicks, 1.0F); - this.animate(renderState.idleAnimationState, CamelAnimation.CAMEL_IDLE, renderState.ageInTicks, 1.0F); - this.animate(renderState.dashAnimationState, CamelAnimation.CAMEL_DASH, renderState.ageInTicks, 1.0F); + public void setupAnim(CamelRenderState camelRenderState) { + super.setupAnim(camelRenderState); + this.applyHeadRotation(camelRenderState, camelRenderState.yRot, camelRenderState.xRot); + this.toggleInvisibleParts(camelRenderState); + this.animateWalk(CamelAnimation.CAMEL_WALK, camelRenderState.walkAnimationPos, camelRenderState.walkAnimationSpeed, 2.0F, 2.5F); + this.animate(camelRenderState.sitAnimationState, CamelAnimation.CAMEL_SIT, camelRenderState.ageInTicks, 1.0F); + this.animate(camelRenderState.sitPoseAnimationState, CamelAnimation.CAMEL_SIT_POSE, camelRenderState.ageInTicks, 1.0F); + this.animate(camelRenderState.sitUpAnimationState, CamelAnimation.CAMEL_STANDUP, camelRenderState.ageInTicks, 1.0F); + this.animate(camelRenderState.idleAnimationState, CamelAnimation.CAMEL_IDLE, camelRenderState.ageInTicks, 1.0F); + this.animate(camelRenderState.dashAnimationState, CamelAnimation.CAMEL_DASH, camelRenderState.ageInTicks, 1.0F); } private void applyHeadRotation(CamelRenderState renderState, float yRot, float xRot) { diff --git a/net/minecraft/client/model/ChickenModel.java b/net/minecraft/client/model/ChickenModel.java index 18a6dda7..b559a606 100644 --- a/net/minecraft/client/model/ChickenModel.java +++ b/net/minecraft/client/model/ChickenModel.java @@ -22,14 +22,10 @@ public class ChickenModel extends EntityModel { private final ModelPart leftLeg; private final ModelPart rightWing; private final ModelPart leftWing; - private final ModelPart beak; - private final ModelPart redThing; public ChickenModel(ModelPart root) { super(root); this.head = root.getChild("head"); - this.beak = root.getChild("beak"); - this.redThing = root.getChild("red_thing"); this.rightLeg = root.getChild("right_leg"); this.leftLeg = root.getChild("left_leg"); this.rightWing = root.getChild("right_wing"); @@ -40,15 +36,11 @@ public class ChickenModel extends EntityModel { MeshDefinition meshDefinition = new MeshDefinition(); PartDefinition partDefinition = meshDefinition.getRoot(); int i = 16; - partDefinition.addOrReplaceChild( + PartDefinition partDefinition2 = partDefinition.addOrReplaceChild( "head", CubeListBuilder.create().texOffs(0, 0).addBox(-2.0F, -6.0F, -2.0F, 4.0F, 6.0F, 3.0F), PartPose.offset(0.0F, 15.0F, -4.0F) ); - partDefinition.addOrReplaceChild( - "beak", CubeListBuilder.create().texOffs(14, 0).addBox(-2.0F, -4.0F, -4.0F, 4.0F, 2.0F, 2.0F), PartPose.offset(0.0F, 15.0F, -4.0F) - ); - partDefinition.addOrReplaceChild( - "red_thing", CubeListBuilder.create().texOffs(14, 4).addBox(-1.0F, -2.0F, -3.0F, 2.0F, 2.0F, 2.0F), PartPose.offset(0.0F, 15.0F, -4.0F) - ); + partDefinition2.addOrReplaceChild("beak", CubeListBuilder.create().texOffs(14, 0).addBox(-2.0F, -4.0F, -4.0F, 4.0F, 2.0F, 2.0F), PartPose.ZERO); + partDefinition2.addOrReplaceChild("red_thing", CubeListBuilder.create().texOffs(14, 4).addBox(-1.0F, -2.0F, -3.0F, 2.0F, 2.0F, 2.0F), PartPose.ZERO); partDefinition.addOrReplaceChild( "body", CubeListBuilder.create().texOffs(0, 9).addBox(-3.0F, -4.0F, -3.0F, 6.0F, 8.0F, 6.0F), @@ -66,17 +58,13 @@ public class ChickenModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(ChickenRenderState renderState) { - super.setupAnim(renderState); - float f = (Mth.sin(renderState.flap) + 1.0F) * renderState.flapSpeed; - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.beak.xRot = this.head.xRot; - this.beak.yRot = this.head.yRot; - this.redThing.xRot = this.head.xRot; - this.redThing.yRot = this.head.yRot; - float g = renderState.walkAnimationSpeed; - float h = renderState.walkAnimationPos; + public void setupAnim(ChickenRenderState chickenRenderState) { + super.setupAnim(chickenRenderState); + float f = (Mth.sin(chickenRenderState.flap) + 1.0F) * chickenRenderState.flapSpeed; + this.head.xRot = chickenRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = chickenRenderState.yRot * (float) (Math.PI / 180.0); + float g = chickenRenderState.walkAnimationSpeed; + float h = chickenRenderState.walkAnimationPos; this.rightLeg.xRot = Mth.cos(h * 0.6662F) * 1.4F * g; this.leftLeg.xRot = Mth.cos(h * 0.6662F + (float) Math.PI) * 1.4F * g; this.rightWing.zRot = f; diff --git a/net/minecraft/client/model/CodModel.java b/net/minecraft/client/model/CodModel.java index ba22a54f..0cfbd9fd 100644 --- a/net/minecraft/client/model/CodModel.java +++ b/net/minecraft/client/model/CodModel.java @@ -52,9 +52,9 @@ public class CodModel extends EntityModel { return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(LivingEntityRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.isInWater ? 1.0F : 1.5F; - this.tailFin.yRot = -f * 0.45F * Mth.sin(0.6F * renderState.ageInTicks); + public void setupAnim(LivingEntityRenderState livingEntityRenderState) { + super.setupAnim(livingEntityRenderState); + float f = livingEntityRenderState.isInWater ? 1.0F : 1.5F; + this.tailFin.yRot = -f * 0.45F * Mth.sin(0.6F * livingEntityRenderState.ageInTicks); } } diff --git a/net/minecraft/client/model/CreakingModel.java b/net/minecraft/client/model/CreakingModel.java index 2541adff..1cef29c0 100644 --- a/net/minecraft/client/model/CreakingModel.java +++ b/net/minecraft/client/model/CreakingModel.java @@ -18,11 +18,11 @@ public class CreakingModel extends EntityModel { private final ModelPart head; private final List headParts; - public CreakingModel(ModelPart root) { - super(root); - ModelPart modelPart = root.getChild("root"); - ModelPart modelPart2 = modelPart.getChild("upper_body"); - this.head = modelPart2.getChild("head"); + public CreakingModel(ModelPart modelPart) { + super(modelPart); + ModelPart modelPart2 = modelPart.getChild("root"); + ModelPart modelPart3 = modelPart2.getChild("upper_body"); + this.head = modelPart3.getChild("head"); this.headParts = List.of(this.head); } @@ -89,17 +89,20 @@ public class CreakingModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(CreakingRenderState renderState) { - this.root().getAllParts().forEach(ModelPart::resetPose); - if (renderState.canMove) { - this.animateWalk(CreakingAnimation.CREAKING_WALK, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 5.5F, 3.0F); + public void setupAnim(CreakingRenderState creakingRenderState) { + super.setupAnim(creakingRenderState); + this.head.xRot = creakingRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = creakingRenderState.yRot * (float) (Math.PI / 180.0); + if (creakingRenderState.canMove) { + this.animateWalk(CreakingAnimation.CREAKING_WALK, creakingRenderState.walkAnimationPos, creakingRenderState.walkAnimationSpeed, 1.0F, 1.0F); } - this.animate(renderState.attackAnimationState, CreakingAnimation.CREAKING_ATTACK, renderState.ageInTicks); - this.animate(renderState.invulnerabilityAnimationState, CreakingAnimation.CREAKING_INVULNERABLE, renderState.ageInTicks); + this.animate(creakingRenderState.attackAnimationState, CreakingAnimation.CREAKING_ATTACK, creakingRenderState.ageInTicks); + this.animate(creakingRenderState.invulnerabilityAnimationState, CreakingAnimation.CREAKING_INVULNERABLE, creakingRenderState.ageInTicks); + this.animate(creakingRenderState.deathAnimationState, CreakingAnimation.CREAKING_DEATH, creakingRenderState.ageInTicks); } public List getHeadModelParts(CreakingRenderState renderState) { - return !renderState.isActive ? NO_PARTS : this.headParts; + return !renderState.eyesGlowing ? NO_PARTS : this.headParts; } } diff --git a/net/minecraft/client/model/CreeperModel.java b/net/minecraft/client/model/CreeperModel.java index 32d7920e..72b6e5b7 100644 --- a/net/minecraft/client/model/CreeperModel.java +++ b/net/minecraft/client/model/CreeperModel.java @@ -47,12 +47,12 @@ public class CreeperModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(CreeperRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; + public void setupAnim(CreeperRenderState creeperRenderState) { + super.setupAnim(creeperRenderState); + this.head.yRot = creeperRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = creeperRenderState.xRot * (float) (Math.PI / 180.0); + float f = creeperRenderState.walkAnimationSpeed; + float g = creeperRenderState.walkAnimationPos; this.rightHindLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * f; this.leftHindLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * f; this.rightFrontLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * f; diff --git a/net/minecraft/client/model/DolphinModel.java b/net/minecraft/client/model/DolphinModel.java index b482f8d9..c54c890d 100644 --- a/net/minecraft/client/model/DolphinModel.java +++ b/net/minecraft/client/model/DolphinModel.java @@ -62,14 +62,14 @@ public class DolphinModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(DolphinRenderState renderState) { - super.setupAnim(renderState); - this.body.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.body.yRot = renderState.yRot * (float) (Math.PI / 180.0); - if (renderState.isMoving) { - this.body.xRot = this.body.xRot + (-0.05F - 0.05F * Mth.cos(renderState.ageInTicks * 0.3F)); - this.tail.xRot = -0.1F * Mth.cos(renderState.ageInTicks * 0.3F); - this.tailFin.xRot = -0.2F * Mth.cos(renderState.ageInTicks * 0.3F); + public void setupAnim(DolphinRenderState dolphinRenderState) { + super.setupAnim(dolphinRenderState); + this.body.xRot = dolphinRenderState.xRot * (float) (Math.PI / 180.0); + this.body.yRot = dolphinRenderState.yRot * (float) (Math.PI / 180.0); + if (dolphinRenderState.isMoving) { + this.body.xRot = this.body.xRot + (-0.05F - 0.05F * Mth.cos(dolphinRenderState.ageInTicks * 0.3F)); + this.tail.xRot = -0.1F * Mth.cos(dolphinRenderState.ageInTicks * 0.3F); + this.tailFin.xRot = -0.2F * Mth.cos(dolphinRenderState.ageInTicks * 0.3F); } } } diff --git a/net/minecraft/client/model/DonkeyModel.java b/net/minecraft/client/model/DonkeyModel.java index 5a0c68af..918a1976 100644 --- a/net/minecraft/client/model/DonkeyModel.java +++ b/net/minecraft/client/model/DonkeyModel.java @@ -8,28 +8,31 @@ import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.MeshTransformer; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.DonkeyRenderState; @Environment(EnvType.CLIENT) public class DonkeyModel extends AbstractEquineModel { + public static final float DONKEY_SCALE = 0.87F; + public static final float MULE_SCALE = 0.92F; private final ModelPart leftChest = this.body.getChild("left_chest"); private final ModelPart rightChest = this.body.getChild("right_chest"); - public DonkeyModel(ModelPart root) { - super(root); + public DonkeyModel(ModelPart modelPart) { + super(modelPart); } - public static LayerDefinition createBodyLayer() { + public static LayerDefinition createBodyLayer(float scale) { MeshDefinition meshDefinition = AbstractEquineModel.createBodyMesh(CubeDeformation.NONE); modifyMesh(meshDefinition.getRoot()); - return LayerDefinition.create(meshDefinition, 64, 64); + return LayerDefinition.create(meshDefinition, 64, 64).apply(MeshTransformer.scaling(scale)); } - public static LayerDefinition createBabyLayer() { + public static LayerDefinition createBabyLayer(float scale) { MeshDefinition meshDefinition = AbstractEquineModel.createFullScaleBabyMesh(CubeDeformation.NONE); modifyMesh(meshDefinition.getRoot()); - return LayerDefinition.create(AbstractEquineModel.BABY_TRANSFORMER.apply(meshDefinition), 64, 64); + return LayerDefinition.create(AbstractEquineModel.BABY_TRANSFORMER.apply(meshDefinition), 64, 64).apply(MeshTransformer.scaling(scale)); } private static void modifyMesh(PartDefinition partDefinition) { @@ -47,9 +50,9 @@ public class DonkeyModel extends AbstractEquineModel { ); } - public void setupAnim(DonkeyRenderState renderState) { - super.setupAnim(renderState); - this.leftChest.visible = renderState.hasChest; - this.rightChest.visible = renderState.hasChest; + public void setupAnim(DonkeyRenderState donkeyRenderState) { + super.setupAnim(donkeyRenderState); + this.leftChest.visible = donkeyRenderState.hasChest; + this.rightChest.visible = donkeyRenderState.hasChest; } } diff --git a/net/minecraft/client/model/DrownedModel.java b/net/minecraft/client/model/DrownedModel.java index c9caa3af..fbb9f978 100644 --- a/net/minecraft/client/model/DrownedModel.java +++ b/net/minecraft/client/model/DrownedModel.java @@ -11,14 +11,11 @@ import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.ZombieRenderState; import net.minecraft.util.Mth; -import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; @Environment(EnvType.CLIENT) public class DrownedModel extends ZombieModel { - public DrownedModel(ModelPart root) { - super(root); + public DrownedModel(ModelPart modelPart) { + super(modelPart); } public static LayerDefinition createBodyLayer(CubeDeformation cubeDeformation) { @@ -33,22 +30,15 @@ public class DrownedModel extends ZombieModel { return LayerDefinition.create(meshDefinition, 64, 64); } - protected HumanoidModel.ArmPose getArmPose(ZombieRenderState renderState, HumanoidArm arm) { - ItemStack itemStack = arm == HumanoidArm.RIGHT ? renderState.rightHandItem : renderState.leftHandItem; - return itemStack.is(Items.TRIDENT) && renderState.isAggressive && renderState.mainArm == arm - ? HumanoidModel.ArmPose.THROW_SPEAR - : HumanoidModel.ArmPose.EMPTY; - } - @Override public void setupAnim(ZombieRenderState zombieRenderState) { super.setupAnim(zombieRenderState); - if (this.getArmPose(zombieRenderState, HumanoidArm.LEFT) == HumanoidModel.ArmPose.THROW_SPEAR) { + if (zombieRenderState.leftArmPose == HumanoidModel.ArmPose.THROW_SPEAR) { this.leftArm.xRot = this.leftArm.xRot * 0.5F - (float) Math.PI; this.leftArm.yRot = 0.0F; } - if (this.getArmPose(zombieRenderState, HumanoidArm.RIGHT) == HumanoidModel.ArmPose.THROW_SPEAR) { + if (zombieRenderState.rightArmPose == HumanoidModel.ArmPose.THROW_SPEAR) { this.rightArm.xRot = this.rightArm.xRot * 0.5F - (float) Math.PI; this.rightArm.yRot = 0.0F; } diff --git a/net/minecraft/client/model/ElytraModel.java b/net/minecraft/client/model/ElytraModel.java index b6f9ee99..8056e012 100644 --- a/net/minecraft/client/model/ElytraModel.java +++ b/net/minecraft/client/model/ElytraModel.java @@ -41,12 +41,12 @@ public class ElytraModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(HumanoidRenderState renderState) { - super.setupAnim(renderState); - this.leftWing.y = renderState.isCrouching ? 3.0F : 0.0F; - this.leftWing.xRot = renderState.elytraRotX; - this.leftWing.zRot = renderState.elytraRotZ; - this.leftWing.yRot = renderState.elytraRotY; + public void setupAnim(HumanoidRenderState humanoidRenderState) { + super.setupAnim(humanoidRenderState); + this.leftWing.y = humanoidRenderState.isCrouching ? 3.0F : 0.0F; + this.leftWing.xRot = humanoidRenderState.elytraRotX; + this.leftWing.zRot = humanoidRenderState.elytraRotZ; + this.leftWing.yRot = humanoidRenderState.elytraRotY; this.rightWing.yRot = -this.leftWing.yRot; this.rightWing.y = this.leftWing.y; this.rightWing.xRot = this.leftWing.xRot; diff --git a/net/minecraft/client/model/EndCrystalModel.java b/net/minecraft/client/model/EndCrystalModel.java index 8acceb75..61e3d772 100644 --- a/net/minecraft/client/model/EndCrystalModel.java +++ b/net/minecraft/client/model/EndCrystalModel.java @@ -46,11 +46,11 @@ public class EndCrystalModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(EndCrystalRenderState renderState) { - super.setupAnim(renderState); - this.base.visible = renderState.showsBottom; - float f = renderState.ageInTicks * 3.0F; - float g = EndCrystalRenderer.getY(renderState.ageInTicks) * 16.0F; + public void setupAnim(EndCrystalRenderState endCrystalRenderState) { + super.setupAnim(endCrystalRenderState); + this.base.visible = endCrystalRenderState.showsBottom; + float f = endCrystalRenderState.ageInTicks * 3.0F; + float g = EndCrystalRenderer.getY(endCrystalRenderState.ageInTicks) * 16.0F; this.outerGlass.y += g / 2.0F; this.outerGlass.rotateBy(Axis.YP.rotationDegrees(f).rotateAxis((float) (Math.PI / 3), SIN_45, 0.0F, SIN_45)); this.innerGlass.rotateBy(new Quaternionf().setAngleAxis((float) (Math.PI / 3), SIN_45, 0.0F, SIN_45).rotateY(f * (float) (Math.PI / 180.0))); diff --git a/net/minecraft/client/model/EntityModel.java b/net/minecraft/client/model/EntityModel.java index b5b85483..2401a995 100644 --- a/net/minecraft/client/model/EntityModel.java +++ b/net/minecraft/client/model/EntityModel.java @@ -16,8 +16,8 @@ public abstract class EntityModel extends Model { this(root, RenderType::entityCutoutNoCull); } - protected EntityModel(ModelPart root, Function renderType) { - super(root, renderType); + protected EntityModel(ModelPart modelPart, Function function) { + super(modelPart, function); } public void setupAnim(T renderState) { diff --git a/net/minecraft/client/model/EvokerFangsModel.java b/net/minecraft/client/model/EvokerFangsModel.java index bd6c9af2..2af41715 100644 --- a/net/minecraft/client/model/EvokerFangsModel.java +++ b/net/minecraft/client/model/EvokerFangsModel.java @@ -39,9 +39,9 @@ public class EvokerFangsModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(EvokerFangsRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.biteProgress; + public void setupAnim(EvokerFangsRenderState evokerFangsRenderState) { + super.setupAnim(evokerFangsRenderState); + float f = evokerFangsRenderState.biteProgress; float g = Math.min(f * 2.0F, 1.0F); g = 1.0F - g * g * g; this.upperJaw.zRot = (float) Math.PI - g * 0.35F * (float) Math.PI; diff --git a/net/minecraft/client/model/FelineModel.java b/net/minecraft/client/model/FelineModel.java index fcb27fef..98fd0b42 100644 --- a/net/minecraft/client/model/FelineModel.java +++ b/net/minecraft/client/model/FelineModel.java @@ -16,7 +16,6 @@ import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) public class FelineModel extends EntityModel { public static final MeshTransformer BABY_TRANSFORMER = new BabyModelTransform(true, 10.0F, 4.0F, Set.of("head")); - public static final MeshTransformer CAT_TRANSFORMER = MeshTransformer.scaling(0.8F); private static final float XO = 0.0F; private static final float YO = 16.0F; private static final float ZO = -9.0F; @@ -82,50 +81,50 @@ public class FelineModel extends EntityModel { return meshDefinition; } - public void setupAnim(T renderState) { - super.setupAnim(renderState); - if (renderState.isCrouching) { - this.body.y++; - this.head.y += 2.0F; - this.tail1.y++; - this.tail2.y += -4.0F; - this.tail2.z += 2.0F; + public void setupAnim(T felineRenderState) { + super.setupAnim(felineRenderState); + float f = felineRenderState.ageScale; + if (felineRenderState.isCrouching) { + this.body.y += 1.0F * f; + this.head.y += 2.0F * f; + this.tail1.y += 1.0F * f; + this.tail2.y += -4.0F * f; + this.tail2.z += 2.0F * f; this.tail1.xRot = (float) (Math.PI / 2); this.tail2.xRot = (float) (Math.PI / 2); - } else if (renderState.isSprinting) { + } else if (felineRenderState.isSprinting) { this.tail2.y = this.tail1.y; - this.tail2.z += 2.0F; + this.tail2.z += 2.0F * f; this.tail1.xRot = (float) (Math.PI / 2); this.tail2.xRot = (float) (Math.PI / 2); } - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - if (!renderState.isSitting) { + this.head.xRot = felineRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = felineRenderState.yRot * (float) (Math.PI / 180.0); + if (!felineRenderState.isSitting) { this.body.xRot = (float) (Math.PI / 2); - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; - if (renderState.isSprinting) { - this.leftHindLeg.xRot = Mth.cos(g * 0.6662F) * f; - this.rightHindLeg.xRot = Mth.cos(g * 0.6662F + 0.3F) * f; - this.leftFrontLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI + 0.3F) * f; - this.rightFrontLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * f; - this.tail2.xRot = 1.7278761F + (float) (Math.PI / 10) * Mth.cos(g) * f; + float g = felineRenderState.walkAnimationSpeed; + float h = felineRenderState.walkAnimationPos; + if (felineRenderState.isSprinting) { + this.leftHindLeg.xRot = Mth.cos(h * 0.6662F) * g; + this.rightHindLeg.xRot = Mth.cos(h * 0.6662F + 0.3F) * g; + this.leftFrontLeg.xRot = Mth.cos(h * 0.6662F + (float) Math.PI + 0.3F) * g; + this.rightFrontLeg.xRot = Mth.cos(h * 0.6662F + (float) Math.PI) * g; + this.tail2.xRot = 1.7278761F + (float) (Math.PI / 10) * Mth.cos(h) * g; } else { - this.leftHindLeg.xRot = Mth.cos(g * 0.6662F) * f; - this.rightHindLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * f; - this.leftFrontLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * f; - this.rightFrontLeg.xRot = Mth.cos(g * 0.6662F) * f; - if (!renderState.isCrouching) { - this.tail2.xRot = 1.7278761F + (float) (Math.PI / 4) * Mth.cos(g) * f; + this.leftHindLeg.xRot = Mth.cos(h * 0.6662F) * g; + this.rightHindLeg.xRot = Mth.cos(h * 0.6662F + (float) Math.PI) * g; + this.leftFrontLeg.xRot = Mth.cos(h * 0.6662F + (float) Math.PI) * g; + this.rightFrontLeg.xRot = Mth.cos(h * 0.6662F) * g; + if (!felineRenderState.isCrouching) { + this.tail2.xRot = 1.7278761F + (float) (Math.PI / 4) * Mth.cos(h) * g; } else { - this.tail2.xRot = 1.7278761F + 0.47123894F * Mth.cos(g) * f; + this.tail2.xRot = 1.7278761F + 0.47123894F * Mth.cos(h) * g; } } } - float f = renderState.ageScale; - if (renderState.isSitting) { + if (felineRenderState.isSitting) { this.body.xRot = (float) (Math.PI / 4); this.body.y += -4.0F * f; this.body.z += 5.0F * f; @@ -151,9 +150,9 @@ public class FelineModel extends EntityModel { this.rightHindLeg.z -= 4.0F * f; } - if (renderState.lieDownAmount > 0.0F) { - this.head.zRot = Mth.rotLerp(renderState.lieDownAmount, this.head.zRot, -1.2707963F); - this.head.yRot = Mth.rotLerp(renderState.lieDownAmount, this.head.yRot, 1.2707963F); + if (felineRenderState.lieDownAmount > 0.0F) { + this.head.zRot = Mth.rotLerp(felineRenderState.lieDownAmount, this.head.zRot, -1.2707963F); + this.head.yRot = Mth.rotLerp(felineRenderState.lieDownAmount, this.head.yRot, 1.2707963F); this.leftFrontLeg.xRot = -1.2707963F; this.rightFrontLeg.xRot = -0.47079635F; this.rightFrontLeg.zRot = -0.2F; @@ -163,12 +162,12 @@ public class FelineModel extends EntityModel { this.rightHindLeg.zRot = -0.5F; this.rightHindLeg.x += 0.8F * f; this.rightHindLeg.y += 2.0F * f; - this.tail1.xRot = Mth.rotLerp(renderState.lieDownAmountTail, this.tail1.xRot, 0.8F); - this.tail2.xRot = Mth.rotLerp(renderState.lieDownAmountTail, this.tail2.xRot, -0.4F); + this.tail1.xRot = Mth.rotLerp(felineRenderState.lieDownAmountTail, this.tail1.xRot, 0.8F); + this.tail2.xRot = Mth.rotLerp(felineRenderState.lieDownAmountTail, this.tail2.xRot, -0.4F); } - if (renderState.relaxStateOneAmount > 0.0F) { - this.head.xRot = Mth.rotLerp(renderState.relaxStateOneAmount, this.head.xRot, -0.58177644F); + if (felineRenderState.relaxStateOneAmount > 0.0F) { + this.head.xRot = Mth.rotLerp(felineRenderState.relaxStateOneAmount, this.head.xRot, -0.58177644F); } } } diff --git a/net/minecraft/client/model/FoxModel.java b/net/minecraft/client/model/FoxModel.java index c0c10ecf..a08f423c 100644 --- a/net/minecraft/client/model/FoxModel.java +++ b/net/minecraft/client/model/FoxModel.java @@ -69,30 +69,30 @@ public class FoxModel extends EntityModel { return LayerDefinition.create(meshDefinition, 48, 32); } - public void setupAnim(FoxRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; + public void setupAnim(FoxRenderState foxRenderState) { + super.setupAnim(foxRenderState); + float f = foxRenderState.walkAnimationSpeed; + float g = foxRenderState.walkAnimationPos; this.rightHindLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * f; this.leftHindLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * f; this.rightFrontLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * f; this.leftFrontLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * f; - this.head.zRot = renderState.headRollAngle; + this.head.zRot = foxRenderState.headRollAngle; this.rightHindLeg.visible = true; this.leftHindLeg.visible = true; this.rightFrontLeg.visible = true; this.leftFrontLeg.visible = true; - float h = renderState.ageScale; - if (renderState.isCrouching) { + float h = foxRenderState.ageScale; + if (foxRenderState.isCrouching) { this.body.xRot += 0.10471976F; - float i = renderState.crouchAmount; + float i = foxRenderState.crouchAmount; this.body.y += i * h; this.head.y += i * h; - } else if (renderState.isSleeping) { + } else if (foxRenderState.isSleeping) { this.body.zRot = (float) (-Math.PI / 2); this.body.y += 5.0F * h; this.tail.xRot = (float) (-Math.PI * 5.0 / 6.0); - if (renderState.isBaby) { + if (foxRenderState.isBaby) { this.tail.xRot = -2.1816616F; this.body.z += 2.0F; } @@ -105,7 +105,7 @@ public class FoxModel extends EntityModel { this.leftHindLeg.visible = false; this.rightFrontLeg.visible = false; this.leftFrontLeg.visible = false; - } else if (renderState.isSitting) { + } else if (foxRenderState.isSitting) { this.body.xRot = (float) (Math.PI / 6); this.body.y -= 7.0F * h; this.body.z += 3.0F * h; @@ -113,7 +113,7 @@ public class FoxModel extends EntityModel { this.tail.z -= 1.0F * h; this.head.xRot = 0.0F; this.head.yRot = 0.0F; - if (renderState.isBaby) { + if (foxRenderState.isBaby) { this.head.y--; this.head.z -= 0.375F; } else { @@ -131,19 +131,19 @@ public class FoxModel extends EntityModel { this.leftFrontLeg.xRot = (float) (-Math.PI / 12); } - if (!renderState.isSleeping && !renderState.isFaceplanted && !renderState.isCrouching) { - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); + if (!foxRenderState.isSleeping && !foxRenderState.isFaceplanted && !foxRenderState.isCrouching) { + this.head.xRot = foxRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = foxRenderState.yRot * (float) (Math.PI / 180.0); } - if (renderState.isSleeping) { + if (foxRenderState.isSleeping) { this.head.xRot = 0.0F; this.head.yRot = (float) (-Math.PI * 2.0 / 3.0); - this.head.zRot = Mth.cos(renderState.ageInTicks * 0.027F) / 22.0F; + this.head.zRot = Mth.cos(foxRenderState.ageInTicks * 0.027F) / 22.0F; } - if (renderState.isCrouching) { - float i = Mth.cos(renderState.ageInTicks) * 0.01F; + if (foxRenderState.isCrouching) { + float i = Mth.cos(foxRenderState.ageInTicks) * 0.01F; this.body.yRot = i; this.rightHindLeg.zRot = i; this.leftHindLeg.zRot = i; @@ -151,7 +151,7 @@ public class FoxModel extends EntityModel { this.leftFrontLeg.zRot = i / 2.0F; } - if (renderState.isFaceplanted) { + if (foxRenderState.isFaceplanted) { float i = 0.1F; this.legMotionPos += 0.67F; this.rightHindLeg.xRot = Mth.cos(this.legMotionPos * 0.4662F) * 0.1F; diff --git a/net/minecraft/client/model/FrogModel.java b/net/minecraft/client/model/FrogModel.java index 8d2effc4..2eb65f82 100644 --- a/net/minecraft/client/model/FrogModel.java +++ b/net/minecraft/client/model/FrogModel.java @@ -87,18 +87,18 @@ public class FrogModel extends EntityModel { return LayerDefinition.create(meshDefinition, 48, 48); } - public void setupAnim(FrogRenderState renderState) { - super.setupAnim(renderState); - this.animate(renderState.jumpAnimationState, FrogAnimation.FROG_JUMP, renderState.ageInTicks); - this.animate(renderState.croakAnimationState, FrogAnimation.FROG_CROAK, renderState.ageInTicks); - this.animate(renderState.tongueAnimationState, FrogAnimation.FROG_TONGUE, renderState.ageInTicks); - if (renderState.isSwimming) { - this.animateWalk(FrogAnimation.FROG_SWIM, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 1.0F, 2.5F); + public void setupAnim(FrogRenderState frogRenderState) { + super.setupAnim(frogRenderState); + this.animate(frogRenderState.jumpAnimationState, FrogAnimation.FROG_JUMP, frogRenderState.ageInTicks); + this.animate(frogRenderState.croakAnimationState, FrogAnimation.FROG_CROAK, frogRenderState.ageInTicks); + this.animate(frogRenderState.tongueAnimationState, FrogAnimation.FROG_TONGUE, frogRenderState.ageInTicks); + if (frogRenderState.isSwimming) { + this.animateWalk(FrogAnimation.FROG_SWIM, frogRenderState.walkAnimationPos, frogRenderState.walkAnimationSpeed, 1.0F, 2.5F); } else { - this.animateWalk(FrogAnimation.FROG_WALK, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 1.5F, 2.5F); + this.animateWalk(FrogAnimation.FROG_WALK, frogRenderState.walkAnimationPos, frogRenderState.walkAnimationSpeed, 1.5F, 2.5F); } - this.animate(renderState.swimIdleAnimationState, FrogAnimation.FROG_IDLE_WATER, renderState.ageInTicks); - this.croakingBody.visible = renderState.croakAnimationState.isStarted(); + this.animate(frogRenderState.swimIdleAnimationState, FrogAnimation.FROG_IDLE_WATER, frogRenderState.ageInTicks); + this.croakingBody.visible = frogRenderState.croakAnimationState.isStarted(); } } diff --git a/net/minecraft/client/model/GhastModel.java b/net/minecraft/client/model/GhastModel.java index c23bc581..f6984a13 100644 --- a/net/minecraft/client/model/GhastModel.java +++ b/net/minecraft/client/model/GhastModel.java @@ -49,11 +49,11 @@ public class GhastModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32).apply(MeshTransformer.scaling(4.5F)); } - public void setupAnim(GhastRenderState renderState) { - super.setupAnim(renderState); + public void setupAnim(GhastRenderState ghastRenderState) { + super.setupAnim(ghastRenderState); for (int i = 0; i < this.tentacles.length; i++) { - this.tentacles[i].xRot = 0.2F * Mth.sin(renderState.ageInTicks * 0.3F + i) + 0.4F; + this.tentacles[i].xRot = 0.2F * Mth.sin(ghastRenderState.ageInTicks * 0.3F + i) + 0.4F; } } } diff --git a/net/minecraft/client/model/GoatModel.java b/net/minecraft/client/model/GoatModel.java index 17e92408..86c3bd51 100644 --- a/net/minecraft/client/model/GoatModel.java +++ b/net/minecraft/client/model/GoatModel.java @@ -66,12 +66,12 @@ public class GoatModel extends QuadrupedModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(GoatRenderState renderState) { - super.setupAnim(renderState); - this.head.getChild("left_horn").visible = renderState.hasLeftHorn; - this.head.getChild("right_horn").visible = renderState.hasRightHorn; - if (renderState.rammingXHeadRot != 0.0F) { - this.head.xRot = renderState.rammingXHeadRot; + public void setupAnim(GoatRenderState goatRenderState) { + super.setupAnim(goatRenderState); + this.head.getChild("left_horn").visible = goatRenderState.hasLeftHorn; + this.head.getChild("right_horn").visible = goatRenderState.hasRightHorn; + if (goatRenderState.rammingXHeadRot != 0.0F) { + this.head.xRot = goatRenderState.rammingXHeadRot; } } } diff --git a/net/minecraft/client/model/GuardianModel.java b/net/minecraft/client/model/GuardianModel.java index 9cb3097d..a0ee328e 100644 --- a/net/minecraft/client/model/GuardianModel.java +++ b/net/minecraft/client/model/GuardianModel.java @@ -101,23 +101,25 @@ public class GuardianModel extends EntityModel { return createBodyLayer().apply(ELDER_GUARDIAN_SCALE); } - public void setupAnim(GuardianRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - float f = (1.0F - renderState.spikesAnimation) * 0.55F; - this.setupSpikes(renderState.ageInTicks, f); - if (renderState.lookAtPosition != null && renderState.lookDirection != null) { - double d = renderState.lookAtPosition.y - renderState.eyePosition.y; + public void setupAnim(GuardianRenderState guardianRenderState) { + super.setupAnim(guardianRenderState); + this.head.yRot = guardianRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = guardianRenderState.xRot * (float) (Math.PI / 180.0); + float f = (1.0F - guardianRenderState.spikesAnimation) * 0.55F; + this.setupSpikes(guardianRenderState.ageInTicks, f); + if (guardianRenderState.lookAtPosition != null && guardianRenderState.lookDirection != null) { + double d = guardianRenderState.lookAtPosition.y - guardianRenderState.eyePosition.y; if (d > 0.0) { this.eye.y = 0.0F; } else { this.eye.y = 1.0F; } - Vec3 vec3 = renderState.lookDirection; + Vec3 vec3 = guardianRenderState.lookDirection; vec3 = new Vec3(vec3.x, 0.0, vec3.z); - Vec3 vec32 = new Vec3(renderState.eyePosition.x - renderState.lookAtPosition.x, 0.0, renderState.eyePosition.z - renderState.lookAtPosition.z) + Vec3 vec32 = new Vec3( + guardianRenderState.eyePosition.x - guardianRenderState.lookAtPosition.x, 0.0, guardianRenderState.eyePosition.z - guardianRenderState.lookAtPosition.z + ) .normalize() .yRot((float) (Math.PI / 2)); double e = vec3.dot(vec32); @@ -125,7 +127,7 @@ public class GuardianModel extends EntityModel { } this.eye.visible = true; - float g = renderState.tailAnimation; + float g = guardianRenderState.tailAnimation; this.tailParts[0].yRot = Mth.sin(g) * (float) Math.PI * 0.05F; this.tailParts[1].yRot = Mth.sin(g) * (float) Math.PI * 0.1F; this.tailParts[2].yRot = Mth.sin(g) * (float) Math.PI * 0.15F; diff --git a/net/minecraft/client/model/HoglinModel.java b/net/minecraft/client/model/HoglinModel.java index 32120da1..05f08ecd 100644 --- a/net/minecraft/client/model/HoglinModel.java +++ b/net/minecraft/client/model/HoglinModel.java @@ -107,16 +107,16 @@ public class HoglinModel extends EntityModel { return LayerDefinition.create(meshDefinition, 128, 64).apply(BABY_TRANSFORMER); } - public void setupAnim(HoglinRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; + public void setupAnim(HoglinRenderState hoglinRenderState) { + super.setupAnim(hoglinRenderState); + float f = hoglinRenderState.walkAnimationSpeed; + float g = hoglinRenderState.walkAnimationPos; this.rightEar.zRot = (float) (-Math.PI * 2.0 / 9.0) - f * Mth.sin(g); this.leftEar.zRot = (float) (Math.PI * 2.0 / 9.0) + f * Mth.sin(g); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - float h = 1.0F - Mth.abs(10 - 2 * renderState.attackAnimationRemainingTicks) / 10.0F; + this.head.yRot = hoglinRenderState.yRot * (float) (Math.PI / 180.0); + float h = 1.0F - Mth.abs(10 - 2 * hoglinRenderState.attackAnimationRemainingTicks) / 10.0F; this.head.xRot = Mth.lerp(h, 0.87266463F, (float) (-Math.PI / 9)); - if (renderState.isBaby) { + if (hoglinRenderState.isBaby) { this.head.y += h * 2.5F; } diff --git a/net/minecraft/client/model/HumanoidArmorModel.java b/net/minecraft/client/model/HumanoidArmorModel.java index ba1371a3..a8d0fd2f 100644 --- a/net/minecraft/client/model/HumanoidArmorModel.java +++ b/net/minecraft/client/model/HumanoidArmorModel.java @@ -12,8 +12,8 @@ import net.minecraft.client.renderer.entity.state.HumanoidRenderState; @Environment(EnvType.CLIENT) public class HumanoidArmorModel extends HumanoidModel { - public HumanoidArmorModel(ModelPart root) { - super(root); + public HumanoidArmorModel(ModelPart modelPart) { + super(modelPart); } public static MeshDefinition createBodyLayer(CubeDeformation cubeDeformation) { diff --git a/net/minecraft/client/model/HumanoidModel.java b/net/minecraft/client/model/HumanoidModel.java index 52dcda9b..9ff58fe7 100644 --- a/net/minecraft/client/model/HumanoidModel.java +++ b/net/minecraft/client/model/HumanoidModel.java @@ -107,35 +107,31 @@ public class HumanoidModel extends EntityModel return meshDefinition; } - protected HumanoidModel.ArmPose getArmPose(T renderState, HumanoidArm arm) { - return HumanoidModel.ArmPose.EMPTY; - } - - public void setupAnim(T renderState) { - super.setupAnim(renderState); - HumanoidModel.ArmPose armPose = this.getArmPose(renderState, HumanoidArm.LEFT); - HumanoidModel.ArmPose armPose2 = this.getArmPose(renderState, HumanoidArm.RIGHT); - float f = renderState.swimAmount; - boolean bl = renderState.isFallFlying; - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); + public void setupAnim(T humanoidRenderState) { + super.setupAnim(humanoidRenderState); + HumanoidModel.ArmPose armPose = humanoidRenderState.leftArmPose; + HumanoidModel.ArmPose armPose2 = humanoidRenderState.rightArmPose; + float f = humanoidRenderState.swimAmount; + boolean bl = humanoidRenderState.isFallFlying; + this.head.xRot = humanoidRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = humanoidRenderState.yRot * (float) (Math.PI / 180.0); if (bl) { this.head.xRot = (float) (-Math.PI / 4); } else if (f > 0.0F) { this.head.xRot = Mth.rotLerpRad(f, this.head.xRot, (float) (-Math.PI / 4)); } - float g = renderState.walkAnimationPos; - float h = renderState.walkAnimationSpeed; - this.rightArm.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 2.0F * h * 0.5F / renderState.speedValue; - this.leftArm.xRot = Mth.cos(g * 0.6662F) * 2.0F * h * 0.5F / renderState.speedValue; - this.rightLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * h / renderState.speedValue; - this.leftLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * h / renderState.speedValue; + float g = humanoidRenderState.walkAnimationPos; + float h = humanoidRenderState.walkAnimationSpeed; + this.rightArm.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 2.0F * h * 0.5F / humanoidRenderState.speedValue; + this.leftArm.xRot = Mth.cos(g * 0.6662F) * 2.0F * h * 0.5F / humanoidRenderState.speedValue; + this.rightLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * h / humanoidRenderState.speedValue; + this.leftLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * h / humanoidRenderState.speedValue; this.rightLeg.yRot = 0.005F; this.leftLeg.yRot = -0.005F; this.rightLeg.zRot = 0.005F; this.leftLeg.zRot = -0.005F; - if (renderState.isPassenger) { + if (humanoidRenderState.isPassenger) { this.rightArm.xRot += (float) (-Math.PI / 5); this.leftArm.xRot += (float) (-Math.PI / 5); this.rightLeg.xRot = -1.4137167F; @@ -146,27 +142,27 @@ public class HumanoidModel extends EntityModel this.leftLeg.zRot = -0.07853982F; } - boolean bl2 = renderState.mainArm == HumanoidArm.RIGHT; - if (renderState.isUsingItem) { - boolean bl3 = renderState.useItemHand == InteractionHand.MAIN_HAND; + boolean bl2 = humanoidRenderState.mainArm == HumanoidArm.RIGHT; + if (humanoidRenderState.isUsingItem) { + boolean bl3 = humanoidRenderState.useItemHand == InteractionHand.MAIN_HAND; if (bl3 == bl2) { - this.poseRightArm(renderState, armPose2); + this.poseRightArm(humanoidRenderState, armPose2); } else { - this.poseLeftArm(renderState, armPose); + this.poseLeftArm(humanoidRenderState, armPose); } } else { boolean bl3 = bl2 ? armPose.isTwoHanded() : armPose2.isTwoHanded(); if (bl2 != bl3) { - this.poseLeftArm(renderState, armPose); - this.poseRightArm(renderState, armPose2); + this.poseLeftArm(humanoidRenderState, armPose); + this.poseRightArm(humanoidRenderState, armPose2); } else { - this.poseRightArm(renderState, armPose2); - this.poseLeftArm(renderState, armPose); + this.poseRightArm(humanoidRenderState, armPose2); + this.poseLeftArm(humanoidRenderState, armPose); } } - this.setupAttackAnimation(renderState, renderState.ageInTicks); - if (renderState.isCrouching) { + this.setupAttackAnimation(humanoidRenderState, humanoidRenderState.ageInTicks); + if (humanoidRenderState.isCrouching) { this.body.xRot = 0.5F; this.rightArm.xRot += 0.4F; this.leftArm.xRot += 0.4F; @@ -179,19 +175,19 @@ public class HumanoidModel extends EntityModel } if (armPose2 != HumanoidModel.ArmPose.SPYGLASS) { - AnimationUtils.bobModelPart(this.rightArm, renderState.ageInTicks, 1.0F); + AnimationUtils.bobModelPart(this.rightArm, humanoidRenderState.ageInTicks, 1.0F); } if (armPose != HumanoidModel.ArmPose.SPYGLASS) { - AnimationUtils.bobModelPart(this.leftArm, renderState.ageInTicks, -1.0F); + AnimationUtils.bobModelPart(this.leftArm, humanoidRenderState.ageInTicks, -1.0F); } if (f > 0.0F) { float i = g % 26.0F; - HumanoidArm humanoidArm = renderState.attackArm; - float j = humanoidArm == HumanoidArm.RIGHT && renderState.attackTime > 0.0F ? 0.0F : f; - float k = humanoidArm == HumanoidArm.LEFT && renderState.attackTime > 0.0F ? 0.0F : f; - if (!renderState.isUsingItem) { + HumanoidArm humanoidArm = humanoidRenderState.attackArm; + float j = humanoidArm == HumanoidArm.RIGHT && humanoidRenderState.attackTime > 0.0F ? 0.0F : f; + float k = humanoidArm == HumanoidArm.LEFT && humanoidRenderState.attackTime > 0.0F ? 0.0F : f; + if (!humanoidRenderState.isUsingItem) { if (i < 14.0F) { this.leftArm.xRot = Mth.rotLerpRad(k, this.leftArm.xRot, 0.0F); this.rightArm.xRot = Mth.lerp(j, this.rightArm.xRot, 0.0F); diff --git a/net/minecraft/client/model/IllagerModel.java b/net/minecraft/client/model/IllagerModel.java index 652ecf51..5955cb24 100644 --- a/net/minecraft/client/model/IllagerModel.java +++ b/net/minecraft/client/model/IllagerModel.java @@ -81,11 +81,11 @@ public class IllagerModel extends EntityModel i return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(S renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - if (renderState.isRiding) { + public void setupAnim(S illagerRenderState) { + super.setupAnim(illagerRenderState); + this.head.yRot = illagerRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = illagerRenderState.xRot * (float) (Math.PI / 180.0); + if (illagerRenderState.isRiding) { this.rightArm.xRot = (float) (-Math.PI / 5); this.rightArm.yRot = 0.0F; this.rightArm.zRot = 0.0F; @@ -99,8 +99,8 @@ public class IllagerModel extends EntityModel i this.leftLeg.yRot = (float) (-Math.PI / 10); this.leftLeg.zRot = -0.07853982F; } else { - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; + float f = illagerRenderState.walkAnimationSpeed; + float g = illagerRenderState.walkAnimationPos; this.rightArm.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 2.0F * f * 0.5F; this.rightArm.yRot = 0.0F; this.rightArm.zRot = 0.0F; @@ -115,20 +115,20 @@ public class IllagerModel extends EntityModel i this.leftLeg.zRot = 0.0F; } - AbstractIllager.IllagerArmPose illagerArmPose = renderState.armPose; + AbstractIllager.IllagerArmPose illagerArmPose = illagerRenderState.armPose; if (illagerArmPose == AbstractIllager.IllagerArmPose.ATTACKING) { - if (renderState.getMainHandItem().isEmpty()) { - AnimationUtils.animateZombieArms(this.leftArm, this.rightArm, true, renderState.attackAnim, renderState.ageInTicks); + if (illagerRenderState.getMainHandItem().isEmpty()) { + AnimationUtils.animateZombieArms(this.leftArm, this.rightArm, true, illagerRenderState.attackAnim, illagerRenderState.ageInTicks); } else { - AnimationUtils.swingWeaponDown(this.rightArm, this.leftArm, renderState.mainArm, renderState.attackAnim, renderState.ageInTicks); + AnimationUtils.swingWeaponDown(this.rightArm, this.leftArm, illagerRenderState.mainArm, illagerRenderState.attackAnim, illagerRenderState.ageInTicks); } } else if (illagerArmPose == AbstractIllager.IllagerArmPose.SPELLCASTING) { this.rightArm.z = 0.0F; this.rightArm.x = -5.0F; this.leftArm.z = 0.0F; this.leftArm.x = 5.0F; - this.rightArm.xRot = Mth.cos(renderState.ageInTicks * 0.6662F) * 0.25F; - this.leftArm.xRot = Mth.cos(renderState.ageInTicks * 0.6662F) * 0.25F; + this.rightArm.xRot = Mth.cos(illagerRenderState.ageInTicks * 0.6662F) * 0.25F; + this.leftArm.xRot = Mth.cos(illagerRenderState.ageInTicks * 0.6662F) * 0.25F; this.rightArm.zRot = (float) (Math.PI * 3.0 / 4.0); this.leftArm.zRot = (float) (-Math.PI * 3.0 / 4.0); this.rightArm.yRot = 0.0F; @@ -142,16 +142,16 @@ public class IllagerModel extends EntityModel i } else if (illagerArmPose == AbstractIllager.IllagerArmPose.CROSSBOW_HOLD) { AnimationUtils.animateCrossbowHold(this.rightArm, this.leftArm, this.head, true); } else if (illagerArmPose == AbstractIllager.IllagerArmPose.CROSSBOW_CHARGE) { - AnimationUtils.animateCrossbowCharge(this.rightArm, this.leftArm, renderState.maxCrossbowChargeDuration, renderState.ticksUsingItem, true); + AnimationUtils.animateCrossbowCharge(this.rightArm, this.leftArm, illagerRenderState.maxCrossbowChargeDuration, illagerRenderState.ticksUsingItem, true); } else if (illagerArmPose == AbstractIllager.IllagerArmPose.CELEBRATING) { this.rightArm.z = 0.0F; this.rightArm.x = -5.0F; - this.rightArm.xRot = Mth.cos(renderState.ageInTicks * 0.6662F) * 0.05F; + this.rightArm.xRot = Mth.cos(illagerRenderState.ageInTicks * 0.6662F) * 0.05F; this.rightArm.zRot = 2.670354F; this.rightArm.yRot = 0.0F; this.leftArm.z = 0.0F; this.leftArm.x = 5.0F; - this.leftArm.xRot = Mth.cos(renderState.ageInTicks * 0.6662F) * 0.05F; + this.leftArm.xRot = Mth.cos(illagerRenderState.ageInTicks * 0.6662F) * 0.05F; this.leftArm.zRot = (float) (-Math.PI * 3.0 / 4.0); this.leftArm.yRot = 0.0F; } diff --git a/net/minecraft/client/model/IronGolemModel.java b/net/minecraft/client/model/IronGolemModel.java index 88f3c2de..055049e7 100644 --- a/net/minecraft/client/model/IronGolemModel.java +++ b/net/minecraft/client/model/IronGolemModel.java @@ -61,16 +61,16 @@ public class IronGolemModel extends EntityModel { return LayerDefinition.create(meshDefinition, 128, 128); } - public void setupAnim(IronGolemRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.attackTicksRemaining; - float g = renderState.walkAnimationSpeed; - float h = renderState.walkAnimationPos; + public void setupAnim(IronGolemRenderState ironGolemRenderState) { + super.setupAnim(ironGolemRenderState); + float f = ironGolemRenderState.attackTicksRemaining; + float g = ironGolemRenderState.walkAnimationSpeed; + float h = ironGolemRenderState.walkAnimationPos; if (f > 0.0F) { this.rightArm.xRot = -2.0F + 1.5F * Mth.triangleWave(f, 10.0F); this.leftArm.xRot = -2.0F + 1.5F * Mth.triangleWave(f, 10.0F); } else { - int i = renderState.offerFlowerTick; + int i = ironGolemRenderState.offerFlowerTick; if (i > 0) { this.rightArm.xRot = -0.8F + 0.025F * Mth.triangleWave(i, 70.0F); this.leftArm.xRot = 0.0F; @@ -80,8 +80,8 @@ public class IronGolemModel extends EntityModel { } } - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = ironGolemRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = ironGolemRenderState.xRot * (float) (Math.PI / 180.0); this.rightLeg.xRot = -1.5F * Mth.triangleWave(h, 13.0F) * g; this.leftLeg.xRot = 1.5F * Mth.triangleWave(h, 13.0F) * g; this.rightLeg.yRot = 0.0F; diff --git a/net/minecraft/client/model/LavaSlimeModel.java b/net/minecraft/client/model/LavaSlimeModel.java index ca1b08dd..f86a32eb 100644 --- a/net/minecraft/client/model/LavaSlimeModel.java +++ b/net/minecraft/client/model/LavaSlimeModel.java @@ -31,25 +31,24 @@ public class LavaSlimeModel extends EntityModel { for (int i = 0; i < 8; i++) { int j = 0; - int k = i; - if (i == 2) { - j = 24; - k = 10; - } else if (i == 3) { - j = 24; - k = 19; + int k = 0; + if (i > 0 && i < 4) { + k += 9 * i; + } else if (i > 3) { + j = 32; + k += 9 * i - 36; } partDefinition.addOrReplaceChild(getSegmentName(i), CubeListBuilder.create().texOffs(j, k).addBox(-4.0F, 16 + i, -4.0F, 8.0F, 1.0F, 8.0F), PartPose.ZERO); } - partDefinition.addOrReplaceChild("inside_cube", CubeListBuilder.create().texOffs(0, 16).addBox(-2.0F, 18.0F, -2.0F, 4.0F, 4.0F, 4.0F), PartPose.ZERO); - return LayerDefinition.create(meshDefinition, 64, 32); + partDefinition.addOrReplaceChild("inside_cube", CubeListBuilder.create().texOffs(24, 40).addBox(-2.0F, 18.0F, -2.0F, 4.0F, 4.0F, 4.0F), PartPose.ZERO); + return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(SlimeRenderState renderState) { - super.setupAnim(renderState); - float f = Math.max(0.0F, renderState.squish); + public void setupAnim(SlimeRenderState slimeRenderState) { + super.setupAnim(slimeRenderState); + float f = Math.max(0.0F, slimeRenderState.squish); for (int i = 0; i < this.bodyCubes.length; i++) { this.bodyCubes[i].y = -(4 - i) * f * 1.7F; diff --git a/net/minecraft/client/model/LlamaModel.java b/net/minecraft/client/model/LlamaModel.java index 733a3efb..41b54e17 100644 --- a/net/minecraft/client/model/LlamaModel.java +++ b/net/minecraft/client/model/LlamaModel.java @@ -102,17 +102,17 @@ public class LlamaModel extends EntityModel { return meshDefinition; } - public void setupAnim(LlamaRenderState renderState) { - super.setupAnim(renderState); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - float f = renderState.walkAnimationSpeed; - float g = renderState.walkAnimationPos; + public void setupAnim(LlamaRenderState llamaRenderState) { + super.setupAnim(llamaRenderState); + this.head.xRot = llamaRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = llamaRenderState.yRot * (float) (Math.PI / 180.0); + float f = llamaRenderState.walkAnimationSpeed; + float g = llamaRenderState.walkAnimationPos; this.rightHindLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * f; this.leftHindLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * f; this.rightFrontLeg.xRot = Mth.cos(g * 0.6662F + (float) Math.PI) * 1.4F * f; this.leftFrontLeg.xRot = Mth.cos(g * 0.6662F) * 1.4F * f; - this.rightChest.visible = renderState.hasChest; - this.leftChest.visible = renderState.hasChest; + this.rightChest.visible = llamaRenderState.hasChest; + this.leftChest.visible = llamaRenderState.hasChest; } } diff --git a/net/minecraft/client/model/PandaModel.java b/net/minecraft/client/model/PandaModel.java index 380524fa..bdc20651 100644 --- a/net/minecraft/client/model/PandaModel.java +++ b/net/minecraft/client/model/PandaModel.java @@ -52,40 +52,40 @@ public class PandaModel extends QuadrupedModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(PandaRenderState renderState) { - super.setupAnim(renderState); - if (renderState.isUnhappy) { - this.head.yRot = 0.35F * Mth.sin(0.6F * renderState.ageInTicks); - this.head.zRot = 0.35F * Mth.sin(0.6F * renderState.ageInTicks); - this.rightFrontLeg.xRot = -0.75F * Mth.sin(0.3F * renderState.ageInTicks); - this.leftFrontLeg.xRot = 0.75F * Mth.sin(0.3F * renderState.ageInTicks); + public void setupAnim(PandaRenderState pandaRenderState) { + super.setupAnim(pandaRenderState); + if (pandaRenderState.isUnhappy) { + this.head.yRot = 0.35F * Mth.sin(0.6F * pandaRenderState.ageInTicks); + this.head.zRot = 0.35F * Mth.sin(0.6F * pandaRenderState.ageInTicks); + this.rightFrontLeg.xRot = -0.75F * Mth.sin(0.3F * pandaRenderState.ageInTicks); + this.leftFrontLeg.xRot = 0.75F * Mth.sin(0.3F * pandaRenderState.ageInTicks); } else { this.head.zRot = 0.0F; } - if (renderState.isSneezing) { - if (renderState.sneezeTime < 15) { - this.head.xRot = (float) (-Math.PI / 4) * renderState.sneezeTime / 14.0F; - } else if (renderState.sneezeTime < 20) { - float f = (renderState.sneezeTime - 15) / 5; + if (pandaRenderState.isSneezing) { + if (pandaRenderState.sneezeTime < 15) { + this.head.xRot = (float) (-Math.PI / 4) * pandaRenderState.sneezeTime / 14.0F; + } else if (pandaRenderState.sneezeTime < 20) { + float f = (pandaRenderState.sneezeTime - 15) / 5; this.head.xRot = (float) (-Math.PI / 4) + (float) (Math.PI / 4) * f; } } - if (renderState.sitAmount > 0.0F) { - this.body.xRot = Mth.rotLerpRad(renderState.sitAmount, this.body.xRot, 1.7407963F); - this.head.xRot = Mth.rotLerpRad(renderState.sitAmount, this.head.xRot, (float) (Math.PI / 2)); + if (pandaRenderState.sitAmount > 0.0F) { + this.body.xRot = Mth.rotLerpRad(pandaRenderState.sitAmount, this.body.xRot, 1.7407963F); + this.head.xRot = Mth.rotLerpRad(pandaRenderState.sitAmount, this.head.xRot, (float) (Math.PI / 2)); this.rightFrontLeg.zRot = -0.27079642F; this.leftFrontLeg.zRot = 0.27079642F; this.rightHindLeg.zRot = 0.5707964F; this.leftHindLeg.zRot = -0.5707964F; - if (renderState.isEating) { - this.head.xRot = (float) (Math.PI / 2) + 0.2F * Mth.sin(renderState.ageInTicks * 0.6F); - this.rightFrontLeg.xRot = -0.4F - 0.2F * Mth.sin(renderState.ageInTicks * 0.6F); - this.leftFrontLeg.xRot = -0.4F - 0.2F * Mth.sin(renderState.ageInTicks * 0.6F); + if (pandaRenderState.isEating) { + this.head.xRot = (float) (Math.PI / 2) + 0.2F * Mth.sin(pandaRenderState.ageInTicks * 0.6F); + this.rightFrontLeg.xRot = -0.4F - 0.2F * Mth.sin(pandaRenderState.ageInTicks * 0.6F); + this.leftFrontLeg.xRot = -0.4F - 0.2F * Mth.sin(pandaRenderState.ageInTicks * 0.6F); } - if (renderState.isScared) { + if (pandaRenderState.isScared) { this.head.xRot = 2.1707964F; this.rightFrontLeg.xRot = -0.9F; this.leftFrontLeg.xRot = -0.9F; @@ -97,20 +97,20 @@ public class PandaModel extends QuadrupedModel { this.leftFrontLeg.zRot = 0.0F; } - if (renderState.lieOnBackAmount > 0.0F) { - this.rightHindLeg.xRot = -0.6F * Mth.sin(renderState.ageInTicks * 0.15F); - this.leftHindLeg.xRot = 0.6F * Mth.sin(renderState.ageInTicks * 0.15F); - this.rightFrontLeg.xRot = 0.3F * Mth.sin(renderState.ageInTicks * 0.25F); - this.leftFrontLeg.xRot = -0.3F * Mth.sin(renderState.ageInTicks * 0.25F); - this.head.xRot = Mth.rotLerpRad(renderState.lieOnBackAmount, this.head.xRot, (float) (Math.PI / 2)); + if (pandaRenderState.lieOnBackAmount > 0.0F) { + this.rightHindLeg.xRot = -0.6F * Mth.sin(pandaRenderState.ageInTicks * 0.15F); + this.leftHindLeg.xRot = 0.6F * Mth.sin(pandaRenderState.ageInTicks * 0.15F); + this.rightFrontLeg.xRot = 0.3F * Mth.sin(pandaRenderState.ageInTicks * 0.25F); + this.leftFrontLeg.xRot = -0.3F * Mth.sin(pandaRenderState.ageInTicks * 0.25F); + this.head.xRot = Mth.rotLerpRad(pandaRenderState.lieOnBackAmount, this.head.xRot, (float) (Math.PI / 2)); } - if (renderState.rollAmount > 0.0F) { - this.head.xRot = Mth.rotLerpRad(renderState.rollAmount, this.head.xRot, 2.0561945F); - this.rightHindLeg.xRot = -0.5F * Mth.sin(renderState.ageInTicks * 0.5F); - this.leftHindLeg.xRot = 0.5F * Mth.sin(renderState.ageInTicks * 0.5F); - this.rightFrontLeg.xRot = 0.5F * Mth.sin(renderState.ageInTicks * 0.5F); - this.leftFrontLeg.xRot = -0.5F * Mth.sin(renderState.ageInTicks * 0.5F); + if (pandaRenderState.rollAmount > 0.0F) { + this.head.xRot = Mth.rotLerpRad(pandaRenderState.rollAmount, this.head.xRot, 2.0561945F); + this.rightHindLeg.xRot = -0.5F * Mth.sin(pandaRenderState.ageInTicks * 0.5F); + this.leftHindLeg.xRot = 0.5F * Mth.sin(pandaRenderState.ageInTicks * 0.5F); + this.rightFrontLeg.xRot = 0.5F * Mth.sin(pandaRenderState.ageInTicks * 0.5F); + this.leftFrontLeg.xRot = -0.5F * Mth.sin(pandaRenderState.ageInTicks * 0.5F); } } } diff --git a/net/minecraft/client/model/ParrotModel.java b/net/minecraft/client/model/ParrotModel.java index d537f8b5..aada500e 100644 --- a/net/minecraft/client/model/ParrotModel.java +++ b/net/minecraft/client/model/ParrotModel.java @@ -80,45 +80,46 @@ public class ParrotModel extends EntityModel { return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(ParrotRenderState renderState) { - super.setupAnim(renderState); - this.prepare(renderState.pose); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - switch (renderState.pose) { + public void setupAnim(ParrotRenderState parrotRenderState) { + super.setupAnim(parrotRenderState); + this.prepare(parrotRenderState.pose); + this.head.xRot = parrotRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = parrotRenderState.yRot * (float) (Math.PI / 180.0); + switch (parrotRenderState.pose) { case STANDING: - this.leftLeg.xRot = this.leftLeg.xRot + Mth.cos(renderState.walkAnimationPos * 0.6662F) * 1.4F * renderState.walkAnimationSpeed; - this.rightLeg.xRot = this.rightLeg.xRot + Mth.cos(renderState.walkAnimationPos * 0.6662F + (float) Math.PI) * 1.4F * renderState.walkAnimationSpeed; + this.leftLeg.xRot = this.leftLeg.xRot + Mth.cos(parrotRenderState.walkAnimationPos * 0.6662F) * 1.4F * parrotRenderState.walkAnimationSpeed; + this.rightLeg.xRot = this.rightLeg.xRot + + Mth.cos(parrotRenderState.walkAnimationPos * 0.6662F + (float) Math.PI) * 1.4F * parrotRenderState.walkAnimationSpeed; case FLYING: case ON_SHOULDER: default: - float h = renderState.flapAngle * 0.3F; + float h = parrotRenderState.flapAngle * 0.3F; this.head.y += h; - this.tail.xRot = this.tail.xRot + Mth.cos(renderState.walkAnimationPos * 0.6662F) * 0.3F * renderState.walkAnimationSpeed; + this.tail.xRot = this.tail.xRot + Mth.cos(parrotRenderState.walkAnimationPos * 0.6662F) * 0.3F * parrotRenderState.walkAnimationSpeed; this.tail.y += h; this.body.y += h; - this.leftWing.zRot = -0.0873F - renderState.flapAngle; + this.leftWing.zRot = -0.0873F - parrotRenderState.flapAngle; this.leftWing.y += h; - this.rightWing.zRot = 0.0873F + renderState.flapAngle; + this.rightWing.zRot = 0.0873F + parrotRenderState.flapAngle; this.rightWing.y += h; this.leftLeg.y += h; this.rightLeg.y += h; case SITTING: break; case PARTY: - float f = Mth.cos(renderState.ageInTicks); - float g = Mth.sin(renderState.ageInTicks); + float f = Mth.cos(parrotRenderState.ageInTicks); + float g = Mth.sin(parrotRenderState.ageInTicks); this.head.x += f; this.head.y += g; this.head.xRot = 0.0F; this.head.yRot = 0.0F; - this.head.zRot = Mth.sin(renderState.ageInTicks) * 0.4F; + this.head.zRot = Mth.sin(parrotRenderState.ageInTicks) * 0.4F; this.body.x += f; this.body.y += g; - this.leftWing.zRot = -0.0873F - renderState.flapAngle; + this.leftWing.zRot = -0.0873F - parrotRenderState.flapAngle; this.leftWing.x += f; this.leftWing.y += g; - this.rightWing.zRot = 0.0873F + renderState.flapAngle; + this.rightWing.zRot = 0.0873F + parrotRenderState.flapAngle; this.rightWing.x += f; this.rightWing.y += g; this.tail.x += f; diff --git a/net/minecraft/client/model/PhantomModel.java b/net/minecraft/client/model/PhantomModel.java index 1f9b8223..f4485473 100644 --- a/net/minecraft/client/model/PhantomModel.java +++ b/net/minecraft/client/model/PhantomModel.java @@ -73,9 +73,9 @@ public class PhantomModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(PhantomRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.flapTime * 7.448451F * (float) (Math.PI / 180.0); + public void setupAnim(PhantomRenderState phantomRenderState) { + super.setupAnim(phantomRenderState); + float f = phantomRenderState.flapTime * 7.448451F * (float) (Math.PI / 180.0); float g = 16.0F; this.leftWingBase.zRot = Mth.cos(f) * 16.0F * (float) (Math.PI / 180.0); this.leftWingTip.zRot = Mth.cos(f) * 16.0F * (float) (Math.PI / 180.0); diff --git a/net/minecraft/client/model/PiglinModel.java b/net/minecraft/client/model/PiglinModel.java index 30ce107c..893e44eb 100644 --- a/net/minecraft/client/model/PiglinModel.java +++ b/net/minecraft/client/model/PiglinModel.java @@ -10,17 +10,17 @@ import net.minecraft.world.entity.monster.piglin.PiglinArmPose; @Environment(EnvType.CLIENT) public class PiglinModel extends AbstractPiglinModel { - public PiglinModel(ModelPart root) { - super(root); + public PiglinModel(ModelPart modelPart) { + super(modelPart); } - public void setupAnim(PiglinRenderState renderState) { - super.setupAnim(renderState); + public void setupAnim(PiglinRenderState piglinRenderState) { + super.setupAnim(piglinRenderState); float f = (float) (Math.PI / 6); - float g = renderState.attackTime; - PiglinArmPose piglinArmPose = renderState.armPose; + float g = piglinRenderState.attackTime; + PiglinArmPose piglinArmPose = piglinRenderState.armPose; if (piglinArmPose == PiglinArmPose.DANCING) { - float h = renderState.ageInTicks / 60.0F; + float h = piglinRenderState.ageInTicks / 60.0F; this.rightEar.zRot = (float) (Math.PI / 6) + (float) (Math.PI / 180.0) * Mth.sin(h * 30.0F) * 10.0F; this.leftEar.zRot = (float) (-Math.PI / 6) - (float) (Math.PI / 180.0) * Mth.cos(h * 30.0F) * 10.0F; this.head.x = this.head.x + Mth.sin(h * 10.0F); @@ -31,17 +31,17 @@ public class PiglinModel extends AbstractPiglinModel { this.leftArm.y = this.leftArm.y + (Mth.sin(h * 40.0F) * 0.5F + 0.5F); this.body.y = this.body.y + Mth.sin(h * 40.0F) * 0.35F; } else if (piglinArmPose == PiglinArmPose.ATTACKING_WITH_MELEE_WEAPON && g == 0.0F) { - this.holdWeaponHigh(renderState); + this.holdWeaponHigh(piglinRenderState); } else if (piglinArmPose == PiglinArmPose.CROSSBOW_HOLD) { - AnimationUtils.animateCrossbowHold(this.rightArm, this.leftArm, this.head, renderState.mainArm == HumanoidArm.RIGHT); + AnimationUtils.animateCrossbowHold(this.rightArm, this.leftArm, this.head, piglinRenderState.mainArm == HumanoidArm.RIGHT); } else if (piglinArmPose == PiglinArmPose.CROSSBOW_CHARGE) { AnimationUtils.animateCrossbowCharge( - this.rightArm, this.leftArm, renderState.maxCrossbowChageDuration, renderState.ticksUsingItem, renderState.mainArm == HumanoidArm.RIGHT + this.rightArm, this.leftArm, piglinRenderState.maxCrossbowChageDuration, piglinRenderState.ticksUsingItem, piglinRenderState.mainArm == HumanoidArm.RIGHT ); } else if (piglinArmPose == PiglinArmPose.ADMIRING_ITEM) { this.head.xRot = 0.5F; this.head.yRot = 0.0F; - if (renderState.mainArm == HumanoidArm.LEFT) { + if (piglinRenderState.mainArm == HumanoidArm.LEFT) { this.rightArm.yRot = -0.5F; this.rightArm.xRot = -0.9F; } else { @@ -51,12 +51,12 @@ public class PiglinModel extends AbstractPiglinModel { } } - protected void setupAttackAnimation(PiglinRenderState renderState, float ageInTicks) { - float f = renderState.attackTime; - if (f > 0.0F && renderState.armPose == PiglinArmPose.ATTACKING_WITH_MELEE_WEAPON) { - AnimationUtils.swingWeaponDown(this.rightArm, this.leftArm, renderState.mainArm, f, renderState.ageInTicks); + protected void setupAttackAnimation(PiglinRenderState piglinRenderState, float f) { + float g = piglinRenderState.attackTime; + if (g > 0.0F && piglinRenderState.armPose == PiglinArmPose.ATTACKING_WITH_MELEE_WEAPON) { + AnimationUtils.swingWeaponDown(this.rightArm, this.leftArm, piglinRenderState.mainArm, g, piglinRenderState.ageInTicks); } else { - super.setupAttackAnimation(renderState, ageInTicks); + super.setupAttackAnimation(piglinRenderState, f); } } diff --git a/net/minecraft/client/model/PlayerModel.java b/net/minecraft/client/model/PlayerModel.java index 6daf8d2d..546d2074 100644 --- a/net/minecraft/client/model/PlayerModel.java +++ b/net/minecraft/client/model/PlayerModel.java @@ -12,7 +12,6 @@ import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.client.renderer.entity.state.PlayerRenderState; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.HumanoidArm; @@ -89,20 +88,20 @@ public class PlayerModel extends HumanoidModel { return meshDefinition; } - public void setupAnim(PlayerRenderState renderState) { - boolean bl = !renderState.isSpectator; + public void setupAnim(PlayerRenderState playerRenderState) { + boolean bl = !playerRenderState.isSpectator; this.body.visible = bl; this.rightArm.visible = bl; this.leftArm.visible = bl; this.rightLeg.visible = bl; this.leftLeg.visible = bl; - this.hat.visible = renderState.showHat; - this.jacket.visible = renderState.showJacket; - this.leftPants.visible = renderState.showLeftPants; - this.rightPants.visible = renderState.showRightPants; - this.leftSleeve.visible = renderState.showLeftSleeve; - this.rightSleeve.visible = renderState.showRightSleeve; - super.setupAnim(renderState); + this.hat.visible = playerRenderState.showHat; + this.jacket.visible = playerRenderState.showJacket; + this.leftPants.visible = playerRenderState.showLeftPants; + this.rightPants.visible = playerRenderState.showRightPants; + this.leftSleeve.visible = playerRenderState.showLeftSleeve; + this.rightSleeve.visible = playerRenderState.showRightSleeve; + super.setupAnim(playerRenderState); } @Override @@ -132,8 +131,4 @@ public class PlayerModel extends HumanoidModel { public ModelPart getRandomBodyPart(RandomSource random) { return Util.getRandom(this.bodyParts, random); } - - protected HumanoidModel.ArmPose getArmPose(PlayerRenderState renderState, HumanoidArm arm) { - return PlayerRenderer.getArmPose(renderState, arm); - } } diff --git a/net/minecraft/client/model/PolarBearModel.java b/net/minecraft/client/model/PolarBearModel.java index 477703f2..7677c108 100644 --- a/net/minecraft/client/model/PolarBearModel.java +++ b/net/minecraft/client/model/PolarBearModel.java @@ -53,11 +53,11 @@ public class PolarBearModel extends QuadrupedModel { return LayerDefinition.create(meshDefinition, 128, 64).apply(MeshTransformer.scaling(1.2F)); } - public void setupAnim(PolarBearRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.standScale * renderState.standScale; - float g = renderState.ageScale; - float h = renderState.isBaby ? 0.44444445F : 1.0F; + public void setupAnim(PolarBearRenderState polarBearRenderState) { + super.setupAnim(polarBearRenderState); + float f = polarBearRenderState.standScale * polarBearRenderState.standScale; + float g = polarBearRenderState.ageScale; + float h = polarBearRenderState.isBaby ? 0.44444445F : 1.0F; this.body.xRot -= f * (float) Math.PI * 0.35F; this.body.y += f * g * 2.0F; this.rightFrontLeg.y -= f * g * 20.0F; diff --git a/net/minecraft/client/model/QuadrupedModel.java b/net/minecraft/client/model/QuadrupedModel.java index ea681c60..212c440b 100644 --- a/net/minecraft/client/model/QuadrupedModel.java +++ b/net/minecraft/client/model/QuadrupedModel.java @@ -49,12 +49,12 @@ public class QuadrupedModel extends EntityMod return meshDefinition; } - public void setupAnim(T renderState) { - super.setupAnim(renderState); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - float f = renderState.walkAnimationPos; - float g = renderState.walkAnimationSpeed; + public void setupAnim(T livingEntityRenderState) { + super.setupAnim(livingEntityRenderState); + this.head.xRot = livingEntityRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = livingEntityRenderState.yRot * (float) (Math.PI / 180.0); + float f = livingEntityRenderState.walkAnimationPos; + float g = livingEntityRenderState.walkAnimationSpeed; this.rightHindLeg.xRot = Mth.cos(f * 0.6662F) * 1.4F * g; this.leftHindLeg.xRot = Mth.cos(f * 0.6662F + (float) Math.PI) * 1.4F * g; this.rightFrontLeg.xRot = Mth.cos(f * 0.6662F + (float) Math.PI) * 1.4F * g; diff --git a/net/minecraft/client/model/RabbitModel.java b/net/minecraft/client/model/RabbitModel.java index 44a9f1f4..d4914f3a 100644 --- a/net/minecraft/client/model/RabbitModel.java +++ b/net/minecraft/client/model/RabbitModel.java @@ -24,8 +24,6 @@ public class RabbitModel extends EntityModel { ); private static final String LEFT_HAUNCH = "left_haunch"; private static final String RIGHT_HAUNCH = "right_haunch"; - private final ModelPart leftRearFoot; - private final ModelPart rightRearFoot; private final ModelPart leftHaunch; private final ModelPart rightHaunch; private final ModelPart leftFrontLeg; @@ -34,45 +32,34 @@ public class RabbitModel extends EntityModel { * The Rabbit's Head */ private final ModelPart head; - private final ModelPart rightEar; - private final ModelPart leftEar; - /** - * The Rabbit's Nose - */ - private final ModelPart nose; public RabbitModel(ModelPart root) { super(root); - this.leftRearFoot = root.getChild("left_hind_foot"); - this.rightRearFoot = root.getChild("right_hind_foot"); this.leftHaunch = root.getChild("left_haunch"); this.rightHaunch = root.getChild("right_haunch"); this.leftFrontLeg = root.getChild("left_front_leg"); this.rightFrontLeg = root.getChild("right_front_leg"); this.head = root.getChild("head"); - this.rightEar = root.getChild("right_ear"); - this.leftEar = root.getChild("left_ear"); - this.nose = root.getChild("nose"); } public static LayerDefinition createBodyLayer(boolean baby) { MeshDefinition meshDefinition = new MeshDefinition(); PartDefinition partDefinition = meshDefinition.getRoot(); - partDefinition.addOrReplaceChild( - "left_hind_foot", CubeListBuilder.create().texOffs(26, 24).addBox(-1.0F, 5.5F, -3.7F, 2.0F, 1.0F, 7.0F), PartPose.offset(3.0F, 17.5F, 3.7F) - ); - partDefinition.addOrReplaceChild( - "right_hind_foot", CubeListBuilder.create().texOffs(8, 24).addBox(-1.0F, 5.5F, -3.7F, 2.0F, 1.0F, 7.0F), PartPose.offset(-3.0F, 17.5F, 3.7F) - ); - partDefinition.addOrReplaceChild( + PartDefinition partDefinition2 = partDefinition.addOrReplaceChild( "left_haunch", CubeListBuilder.create().texOffs(30, 15).addBox(-1.0F, 0.0F, 0.0F, 2.0F, 4.0F, 5.0F), - PartPose.offsetAndRotation(3.0F, 17.5F, 3.7F, (float) (-Math.PI / 9), 0.0F, 0.0F) + PartPose.offsetAndRotation(3.0F, 17.5F, 3.7F, -0.36651915F, 0.0F, 0.0F) ); - partDefinition.addOrReplaceChild( + PartDefinition partDefinition3 = partDefinition.addOrReplaceChild( "right_haunch", CubeListBuilder.create().texOffs(16, 15).addBox(-1.0F, 0.0F, 0.0F, 2.0F, 4.0F, 5.0F), - PartPose.offsetAndRotation(-3.0F, 17.5F, 3.7F, (float) (-Math.PI / 9), 0.0F, 0.0F) + PartPose.offsetAndRotation(-3.0F, 17.5F, 3.7F, -0.36651915F, 0.0F, 0.0F) + ); + partDefinition2.addOrReplaceChild( + "left_hind_foot", CubeListBuilder.create().texOffs(26, 24).addBox(-1.0F, 5.5F, -3.7F, 2.0F, 1.0F, 7.0F), PartPose.rotation(0.36651915F, 0.0F, 0.0F) + ); + partDefinition3.addOrReplaceChild( + "right_hind_foot", CubeListBuilder.create().texOffs(8, 24).addBox(-1.0F, 5.5F, -3.7F, 2.0F, 1.0F, 7.0F), PartPose.rotation(0.36651915F, 0.0F, 0.0F) ); partDefinition.addOrReplaceChild( "body", @@ -82,53 +69,43 @@ public class RabbitModel extends EntityModel { partDefinition.addOrReplaceChild( "left_front_leg", CubeListBuilder.create().texOffs(8, 15).addBox(-1.0F, 0.0F, -1.0F, 2.0F, 7.0F, 2.0F), - PartPose.offsetAndRotation(3.0F, 17.0F, -1.0F, (float) (-Math.PI / 18), 0.0F, 0.0F) + PartPose.offsetAndRotation(3.0F, 17.0F, -1.0F, -0.19198622F, 0.0F, 0.0F) ); partDefinition.addOrReplaceChild( "right_front_leg", CubeListBuilder.create().texOffs(0, 15).addBox(-1.0F, 0.0F, -1.0F, 2.0F, 7.0F, 2.0F), - PartPose.offsetAndRotation(-3.0F, 17.0F, -1.0F, (float) (-Math.PI / 18), 0.0F, 0.0F) + PartPose.offsetAndRotation(-3.0F, 17.0F, -1.0F, -0.19198622F, 0.0F, 0.0F) ); - partDefinition.addOrReplaceChild( + PartDefinition partDefinition4 = partDefinition.addOrReplaceChild( "head", CubeListBuilder.create().texOffs(32, 0).addBox(-2.5F, -4.0F, -5.0F, 5.0F, 4.0F, 5.0F), PartPose.offset(0.0F, 16.0F, -1.0F) ); - partDefinition.addOrReplaceChild( + partDefinition4.addOrReplaceChild( "right_ear", CubeListBuilder.create().texOffs(52, 0).addBox(-2.5F, -9.0F, -1.0F, 2.0F, 5.0F, 1.0F), - PartPose.offsetAndRotation(0.0F, 16.0F, -1.0F, 0.0F, (float) (-Math.PI / 12), 0.0F) + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, (float) (-Math.PI / 12), 0.0F) ); - partDefinition.addOrReplaceChild( + partDefinition4.addOrReplaceChild( "left_ear", CubeListBuilder.create().texOffs(58, 0).addBox(0.5F, -9.0F, -1.0F, 2.0F, 5.0F, 1.0F), - PartPose.offsetAndRotation(0.0F, 16.0F, -1.0F, 0.0F, (float) (Math.PI / 12), 0.0F) + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, (float) (Math.PI / 12), 0.0F) ); partDefinition.addOrReplaceChild( "tail", CubeListBuilder.create().texOffs(52, 6).addBox(-1.5F, -1.5F, 0.0F, 3.0F, 3.0F, 2.0F), PartPose.offsetAndRotation(0.0F, 20.0F, 7.0F, -0.3490659F, 0.0F, 0.0F) ); - partDefinition.addOrReplaceChild( - "nose", CubeListBuilder.create().texOffs(32, 9).addBox(-0.5F, -2.5F, -5.5F, 1.0F, 1.0F, 1.0F), PartPose.offset(0.0F, 16.0F, -1.0F) - ); + partDefinition4.addOrReplaceChild("nose", CubeListBuilder.create().texOffs(32, 9).addBox(-0.5F, -2.5F, -5.5F, 1.0F, 1.0F, 1.0F), PartPose.ZERO); return LayerDefinition.create(meshDefinition, 64, 32).apply(baby ? BABY_TRANSFORMER : ADULT_TRANSFORMER); } - public void setupAnim(RabbitRenderState renderState) { - super.setupAnim(renderState); - this.nose.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.rightEar.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.leftEar.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.nose.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.rightEar.yRot = this.nose.yRot - (float) (Math.PI / 12); - this.leftEar.yRot = this.nose.yRot + (float) (Math.PI / 12); - float f = Mth.sin(renderState.jumpCompletion * (float) Math.PI); - this.leftHaunch.xRot = (f * 50.0F - 21.0F) * (float) (Math.PI / 180.0); - this.rightHaunch.xRot = (f * 50.0F - 21.0F) * (float) (Math.PI / 180.0); - this.leftRearFoot.xRot = f * 50.0F * (float) (Math.PI / 180.0); - this.rightRearFoot.xRot = f * 50.0F * (float) (Math.PI / 180.0); - this.leftFrontLeg.xRot = (f * -40.0F - 11.0F) * (float) (Math.PI / 180.0); - this.rightFrontLeg.xRot = (f * -40.0F - 11.0F) * (float) (Math.PI / 180.0); + public void setupAnim(RabbitRenderState rabbitRenderState) { + super.setupAnim(rabbitRenderState); + this.head.xRot = rabbitRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = rabbitRenderState.yRot * (float) (Math.PI / 180.0); + float f = Mth.sin(rabbitRenderState.jumpCompletion * (float) Math.PI); + this.leftHaunch.xRot += f * 50.0F * (float) (Math.PI / 180.0); + this.rightHaunch.xRot += f * 50.0F * (float) (Math.PI / 180.0); + this.leftFrontLeg.xRot += f * -40.0F * (float) (Math.PI / 180.0); + this.rightFrontLeg.xRot += f * -40.0F * (float) (Math.PI / 180.0); } } diff --git a/net/minecraft/client/model/RavagerModel.java b/net/minecraft/client/model/RavagerModel.java index 5f95dcf6..e4ce4137 100644 --- a/net/minecraft/client/model/RavagerModel.java +++ b/net/minecraft/client/model/RavagerModel.java @@ -77,10 +77,10 @@ public class RavagerModel extends EntityModel { return LayerDefinition.create(meshDefinition, 128, 128); } - public void setupAnim(RavagerRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.stunnedTicksRemaining; - float g = renderState.attackTicksRemaining; + public void setupAnim(RavagerRenderState ravagerRenderState) { + super.setupAnim(ravagerRenderState); + float f = ravagerRenderState.stunnedTicksRemaining; + float g = ravagerRenderState.attackTicksRemaining; int i = 10; if (g > 0.0F) { float h = Mth.triangleWave(g, 10.0F); @@ -106,16 +106,16 @@ public class RavagerModel extends EntityModel { if (bl) { double d = f / 40.0; this.neck.x = (float)Math.sin(d * 10.0) * 3.0F; - } else if (renderState.roarAnimation > 0.0) { - float l = Mth.sin(renderState.roarAnimation * (float) Math.PI * 0.25F); + } else if (ravagerRenderState.roarAnimation > 0.0) { + float l = Mth.sin(ravagerRenderState.roarAnimation * (float) Math.PI * 0.25F); this.mouth.xRot = (float) (Math.PI / 2) * l; } } - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - float hx = renderState.walkAnimationPos; - float jx = 0.4F * renderState.walkAnimationSpeed; + this.head.xRot = ravagerRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = ravagerRenderState.yRot * (float) (Math.PI / 180.0); + float hx = ravagerRenderState.walkAnimationPos; + float jx = 0.4F * ravagerRenderState.walkAnimationSpeed; this.rightHindLeg.xRot = Mth.cos(hx * 0.6662F) * jx; this.leftHindLeg.xRot = Mth.cos(hx * 0.6662F + (float) Math.PI) * jx; this.rightFrontLeg.xRot = Mth.cos(hx * 0.6662F + (float) Math.PI) * jx; diff --git a/net/minecraft/client/model/SalmonModel.java b/net/minecraft/client/model/SalmonModel.java index 6ee97571..a386c5dd 100644 --- a/net/minecraft/client/model/SalmonModel.java +++ b/net/minecraft/client/model/SalmonModel.java @@ -61,15 +61,15 @@ public class SalmonModel extends EntityModel { return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(SalmonRenderState renderState) { - super.setupAnim(renderState); + public void setupAnim(SalmonRenderState salmonRenderState) { + super.setupAnim(salmonRenderState); float f = 1.0F; float g = 1.0F; - if (!renderState.isInWater) { + if (!salmonRenderState.isInWater) { f = 1.3F; g = 1.7F; } - this.bodyBack.yRot = -f * 0.25F * Mth.sin(g * 0.6F * renderState.ageInTicks); + this.bodyBack.yRot = -f * 0.25F * Mth.sin(g * 0.6F * salmonRenderState.ageInTicks); } } diff --git a/net/minecraft/client/model/SheepFurModel.java b/net/minecraft/client/model/SheepFurModel.java index 22d51b83..0343bf3c 100644 --- a/net/minecraft/client/model/SheepFurModel.java +++ b/net/minecraft/client/model/SheepFurModel.java @@ -36,9 +36,9 @@ public class SheepFurModel extends QuadrupedModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(SheepRenderState renderState) { - super.setupAnim(renderState); - this.head.y = this.head.y + renderState.headEatPositionScale * 9.0F * renderState.ageScale; - this.head.xRot = renderState.headEatAngleScale; + public void setupAnim(SheepRenderState sheepRenderState) { + super.setupAnim(sheepRenderState); + this.head.y = this.head.y + sheepRenderState.headEatPositionScale * 9.0F * sheepRenderState.ageScale; + this.head.xRot = sheepRenderState.headEatAngleScale; } } diff --git a/net/minecraft/client/model/SheepModel.java b/net/minecraft/client/model/SheepModel.java index 964089e3..14569fd9 100644 --- a/net/minecraft/client/model/SheepModel.java +++ b/net/minecraft/client/model/SheepModel.java @@ -35,9 +35,9 @@ public class SheepModel extends QuadrupedModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(SheepRenderState renderState) { - super.setupAnim(renderState); - this.head.y = this.head.y + renderState.headEatPositionScale * 9.0F * renderState.ageScale; - this.head.xRot = renderState.headEatAngleScale; + public void setupAnim(SheepRenderState sheepRenderState) { + super.setupAnim(sheepRenderState); + this.head.y = this.head.y + sheepRenderState.headEatPositionScale * 9.0F * sheepRenderState.ageScale; + this.head.xRot = sheepRenderState.headEatAngleScale; } } diff --git a/net/minecraft/client/model/ShulkerBulletModel.java b/net/minecraft/client/model/ShulkerBulletModel.java index ad0860ff..64c25ccb 100644 --- a/net/minecraft/client/model/ShulkerBulletModel.java +++ b/net/minecraft/client/model/ShulkerBulletModel.java @@ -37,9 +37,9 @@ public class ShulkerBulletModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(ShulkerBulletRenderState renderState) { - super.setupAnim(renderState); - this.main.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.main.xRot = renderState.xRot * (float) (Math.PI / 180.0); + public void setupAnim(ShulkerBulletRenderState shulkerBulletRenderState) { + super.setupAnim(shulkerBulletRenderState); + this.main.yRot = shulkerBulletRenderState.yRot * (float) (Math.PI / 180.0); + this.main.xRot = shulkerBulletRenderState.xRot * (float) (Math.PI / 180.0); } } diff --git a/net/minecraft/client/model/ShulkerModel.java b/net/minecraft/client/model/ShulkerModel.java index 4342ffe4..234fa567 100644 --- a/net/minecraft/client/model/ShulkerModel.java +++ b/net/minecraft/client/model/ShulkerModel.java @@ -49,23 +49,23 @@ public class ShulkerModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(ShulkerRenderState renderState) { - super.setupAnim(renderState); - float f = (0.5F + renderState.peekAmount) * (float) Math.PI; + public void setupAnim(ShulkerRenderState shulkerRenderState) { + super.setupAnim(shulkerRenderState); + float f = (0.5F + shulkerRenderState.peekAmount) * (float) Math.PI; float g = -1.0F + Mth.sin(f); float h = 0.0F; if (f > (float) Math.PI) { - h = Mth.sin(renderState.ageInTicks * 0.1F) * 0.7F; + h = Mth.sin(shulkerRenderState.ageInTicks * 0.1F) * 0.7F; } this.lid.setPos(0.0F, 16.0F + Mth.sin(f) * 8.0F + h, 0.0F); - if (renderState.peekAmount > 0.3F) { + if (shulkerRenderState.peekAmount > 0.3F) { this.lid.yRot = g * g * g * g * (float) Math.PI * 0.125F; } else { this.lid.yRot = 0.0F; } - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = (renderState.yHeadRot - 180.0F - renderState.yBodyRot) * (float) (Math.PI / 180.0); + this.head.xRot = shulkerRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = (shulkerRenderState.yHeadRot - 180.0F - shulkerRenderState.yBodyRot) * (float) (Math.PI / 180.0); } } diff --git a/net/minecraft/client/model/SkeletonModel.java b/net/minecraft/client/model/SkeletonModel.java index cb15b8ec..1df76346 100644 --- a/net/minecraft/client/model/SkeletonModel.java +++ b/net/minecraft/client/model/SkeletonModel.java @@ -13,13 +13,11 @@ import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.SkeletonRenderState; import net.minecraft.util.Mth; import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; @Environment(EnvType.CLIENT) public class SkeletonModel extends HumanoidModel { - public SkeletonModel(ModelPart root) { - super(root); + public SkeletonModel(ModelPart modelPart) { + super(modelPart); } public static LayerDefinition createBodyLayer() { @@ -44,17 +42,10 @@ public class SkeletonModel extends HumanoidModel< ); } - protected HumanoidModel.ArmPose getArmPose(S renderState, HumanoidArm arm) { - return renderState.getMainHandItem().is(Items.BOW) && renderState.isAggressive && renderState.mainArm == arm - ? HumanoidModel.ArmPose.BOW_AND_ARROW - : HumanoidModel.ArmPose.EMPTY; - } - - public void setupAnim(S renderState) { - super.setupAnim(renderState); - ItemStack itemStack = renderState.getMainHandItem(); - if (renderState.isAggressive && !itemStack.is(Items.BOW)) { - float f = renderState.attackTime; + public void setupAnim(S skeletonRenderState) { + super.setupAnim(skeletonRenderState); + if (skeletonRenderState.isAggressive && !skeletonRenderState.isHoldingBow) { + float f = skeletonRenderState.attackTime; float g = Mth.sin(f * (float) Math.PI); float h = Mth.sin((1.0F - (1.0F - f) * (1.0F - f)) * (float) Math.PI); this.rightArm.zRot = 0.0F; @@ -65,7 +56,7 @@ public class SkeletonModel extends HumanoidModel< this.leftArm.xRot = (float) (-Math.PI / 2); this.rightArm.xRot -= g * 1.2F - h * 0.4F; this.leftArm.xRot -= g * 1.2F - h * 0.4F; - AnimationUtils.bobArms(this.rightArm, this.leftArm, renderState.ageInTicks); + AnimationUtils.bobArms(this.rightArm, this.leftArm, skeletonRenderState.ageInTicks); } } diff --git a/net/minecraft/client/model/SnifferModel.java b/net/minecraft/client/model/SnifferModel.java index 8f7ca241..d1088359 100644 --- a/net/minecraft/client/model/SnifferModel.java +++ b/net/minecraft/client/model/SnifferModel.java @@ -102,22 +102,22 @@ public class SnifferModel extends EntityModel { return LayerDefinition.create(meshDefinition, 192, 192); } - public void setupAnim(SnifferRenderState renderState) { - super.setupAnim(renderState); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - if (renderState.isSearching) { - this.animateWalk(SnifferAnimation.SNIFFER_SNIFF_SEARCH, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 9.0F, 100.0F); + public void setupAnim(SnifferRenderState snifferRenderState) { + super.setupAnim(snifferRenderState); + this.head.xRot = snifferRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = snifferRenderState.yRot * (float) (Math.PI / 180.0); + if (snifferRenderState.isSearching) { + this.animateWalk(SnifferAnimation.SNIFFER_SNIFF_SEARCH, snifferRenderState.walkAnimationPos, snifferRenderState.walkAnimationSpeed, 9.0F, 100.0F); } else { - this.animateWalk(SnifferAnimation.SNIFFER_WALK, renderState.walkAnimationPos, renderState.walkAnimationSpeed, 9.0F, 100.0F); + this.animateWalk(SnifferAnimation.SNIFFER_WALK, snifferRenderState.walkAnimationPos, snifferRenderState.walkAnimationSpeed, 9.0F, 100.0F); } - this.animate(renderState.diggingAnimationState, SnifferAnimation.SNIFFER_DIG, renderState.ageInTicks); - this.animate(renderState.sniffingAnimationState, SnifferAnimation.SNIFFER_LONGSNIFF, renderState.ageInTicks); - this.animate(renderState.risingAnimationState, SnifferAnimation.SNIFFER_STAND_UP, renderState.ageInTicks); - this.animate(renderState.feelingHappyAnimationState, SnifferAnimation.SNIFFER_HAPPY, renderState.ageInTicks); - this.animate(renderState.scentingAnimationState, SnifferAnimation.SNIFFER_SNIFFSNIFF, renderState.ageInTicks); - if (renderState.isBaby) { + this.animate(snifferRenderState.diggingAnimationState, SnifferAnimation.SNIFFER_DIG, snifferRenderState.ageInTicks); + this.animate(snifferRenderState.sniffingAnimationState, SnifferAnimation.SNIFFER_LONGSNIFF, snifferRenderState.ageInTicks); + this.animate(snifferRenderState.risingAnimationState, SnifferAnimation.SNIFFER_STAND_UP, snifferRenderState.ageInTicks); + this.animate(snifferRenderState.feelingHappyAnimationState, SnifferAnimation.SNIFFER_HAPPY, snifferRenderState.ageInTicks); + this.animate(snifferRenderState.scentingAnimationState, SnifferAnimation.SNIFFER_SNIFFSNIFF, snifferRenderState.ageInTicks); + if (snifferRenderState.isBaby) { this.applyStatic(SnifferAnimation.BABY_TRANSFORM); } } diff --git a/net/minecraft/client/model/SnowGolemModel.java b/net/minecraft/client/model/SnowGolemModel.java index 3e04852a..cf459cc0 100644 --- a/net/minecraft/client/model/SnowGolemModel.java +++ b/net/minecraft/client/model/SnowGolemModel.java @@ -48,11 +48,11 @@ public class SnowGolemModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(LivingEntityRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.upperBody.yRot = renderState.yRot * (float) (Math.PI / 180.0) * 0.25F; + public void setupAnim(LivingEntityRenderState livingEntityRenderState) { + super.setupAnim(livingEntityRenderState); + this.head.yRot = livingEntityRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = livingEntityRenderState.xRot * (float) (Math.PI / 180.0); + this.upperBody.yRot = livingEntityRenderState.yRot * (float) (Math.PI / 180.0) * 0.25F; float f = Mth.sin(this.upperBody.yRot); float g = Mth.cos(this.upperBody.yRot); this.leftArm.yRot = this.upperBody.yRot; diff --git a/net/minecraft/client/model/SpiderModel.java b/net/minecraft/client/model/SpiderModel.java index 050cd796..c659d70a 100644 --- a/net/minecraft/client/model/SpiderModel.java +++ b/net/minecraft/client/model/SpiderModel.java @@ -86,12 +86,12 @@ public class SpiderModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(LivingEntityRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - float f = renderState.walkAnimationPos * 0.6662F; - float g = renderState.walkAnimationSpeed; + public void setupAnim(LivingEntityRenderState livingEntityRenderState) { + super.setupAnim(livingEntityRenderState); + this.head.yRot = livingEntityRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = livingEntityRenderState.xRot * (float) (Math.PI / 180.0); + float f = livingEntityRenderState.walkAnimationPos * 0.6662F; + float g = livingEntityRenderState.walkAnimationSpeed; float h = -(Mth.cos(f * 2.0F + 0.0F) * 0.4F) * g; float i = -(Mth.cos(f * 2.0F + (float) Math.PI) * 0.4F) * g; float j = -(Mth.cos(f * 2.0F + (float) (Math.PI / 2)) * 0.4F) * g; diff --git a/net/minecraft/client/model/SpinAttackEffectModel.java b/net/minecraft/client/model/SpinAttackEffectModel.java index 550036b5..65717650 100644 --- a/net/minecraft/client/model/SpinAttackEffectModel.java +++ b/net/minecraft/client/model/SpinAttackEffectModel.java @@ -16,11 +16,11 @@ public class SpinAttackEffectModel extends EntityModel { private static final int BOX_COUNT = 2; private final ModelPart[] boxes = new ModelPart[2]; - public SpinAttackEffectModel(ModelPart root) { - super(root); + public SpinAttackEffectModel(ModelPart modelPart) { + super(modelPart); for (int i = 0; i < 2; i++) { - this.boxes[i] = root.getChild(boxName(i)); + this.boxes[i] = modelPart.getChild(boxName(i)); } } @@ -43,11 +43,11 @@ public class SpinAttackEffectModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(PlayerRenderState renderState) { - super.setupAnim(renderState); + public void setupAnim(PlayerRenderState playerRenderState) { + super.setupAnim(playerRenderState); for (int i = 0; i < this.boxes.length; i++) { - float f = renderState.ageInTicks * -(45 + (i + 1) * 5); + float f = playerRenderState.ageInTicks * -(45 + (i + 1) * 5); this.boxes[i].yRot = Mth.wrapDegrees(f) * (float) (Math.PI / 180.0); } } diff --git a/net/minecraft/client/model/SquidModel.java b/net/minecraft/client/model/SquidModel.java index f930229c..e4bba421 100644 --- a/net/minecraft/client/model/SquidModel.java +++ b/net/minecraft/client/model/SquidModel.java @@ -51,11 +51,11 @@ public class SquidModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(SquidRenderState renderState) { - super.setupAnim(renderState); + public void setupAnim(SquidRenderState squidRenderState) { + super.setupAnim(squidRenderState); for (ModelPart modelPart : this.tentacles) { - modelPart.xRot = renderState.tentacleAngle; + modelPart.xRot = squidRenderState.tentacleAngle; } } } diff --git a/net/minecraft/client/model/StriderModel.java b/net/minecraft/client/model/StriderModel.java index 8534a147..2bc99bbe 100644 --- a/net/minecraft/client/model/StriderModel.java +++ b/net/minecraft/client/model/StriderModel.java @@ -7,12 +7,14 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.MeshTransformer; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.StriderRenderState; import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) public class StriderModel extends EntityModel { + public static final MeshTransformer BABY_TRANSFORMER = MeshTransformer.scaling(0.5F); private static final String RIGHT_BOTTOM_BRISTLE = "right_bottom_bristle"; private static final String RIGHT_MIDDLE_BRISTLE = "right_middle_bristle"; private static final String RIGHT_TOP_BRISTLE = "right_top_bristle"; @@ -87,13 +89,13 @@ public class StriderModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 128); } - public void setupAnim(StriderRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationPos; - float g = Math.min(renderState.walkAnimationSpeed, 0.25F); - if (!renderState.isRidden) { - this.body.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.body.yRot = renderState.yRot * (float) (Math.PI / 180.0); + public void setupAnim(StriderRenderState striderRenderState) { + super.setupAnim(striderRenderState); + float f = striderRenderState.walkAnimationPos; + float g = Math.min(striderRenderState.walkAnimationSpeed, 0.25F); + if (!striderRenderState.isRidden) { + this.body.xRot = striderRenderState.xRot * (float) (Math.PI / 180.0); + this.body.yRot = striderRenderState.yRot * (float) (Math.PI / 180.0); } else { this.body.xRot = 0.0F; this.body.yRot = 0.0F; @@ -124,11 +126,11 @@ public class StriderModel extends EntityModel { this.leftBottomBristle.zRot += i * 1.3F; float j = 1.0F; float k = 1.0F; - this.rightBottomBristle.zRot = this.rightBottomBristle.zRot + 0.05F * Mth.sin(renderState.ageInTicks * 1.0F * -0.4F); - this.rightMiddleBristle.zRot = this.rightMiddleBristle.zRot + 0.1F * Mth.sin(renderState.ageInTicks * 1.0F * 0.2F); - this.rightTopBristle.zRot = this.rightTopBristle.zRot + 0.1F * Mth.sin(renderState.ageInTicks * 1.0F * 0.4F); - this.leftTopBristle.zRot = this.leftTopBristle.zRot + 0.1F * Mth.sin(renderState.ageInTicks * 1.0F * 0.4F); - this.leftMiddleBristle.zRot = this.leftMiddleBristle.zRot + 0.1F * Mth.sin(renderState.ageInTicks * 1.0F * 0.2F); - this.leftBottomBristle.zRot = this.leftBottomBristle.zRot + 0.05F * Mth.sin(renderState.ageInTicks * 1.0F * -0.4F); + this.rightBottomBristle.zRot = this.rightBottomBristle.zRot + 0.05F * Mth.sin(striderRenderState.ageInTicks * 1.0F * -0.4F); + this.rightMiddleBristle.zRot = this.rightMiddleBristle.zRot + 0.1F * Mth.sin(striderRenderState.ageInTicks * 1.0F * 0.2F); + this.rightTopBristle.zRot = this.rightTopBristle.zRot + 0.1F * Mth.sin(striderRenderState.ageInTicks * 1.0F * 0.4F); + this.leftTopBristle.zRot = this.leftTopBristle.zRot + 0.1F * Mth.sin(striderRenderState.ageInTicks * 1.0F * 0.4F); + this.leftMiddleBristle.zRot = this.leftMiddleBristle.zRot + 0.1F * Mth.sin(striderRenderState.ageInTicks * 1.0F * 0.2F); + this.leftBottomBristle.zRot = this.leftBottomBristle.zRot + 0.05F * Mth.sin(striderRenderState.ageInTicks * 1.0F * -0.4F); } } diff --git a/net/minecraft/client/model/TadpoleModel.java b/net/minecraft/client/model/TadpoleModel.java index fcaff258..c429808e 100644 --- a/net/minecraft/client/model/TadpoleModel.java +++ b/net/minecraft/client/model/TadpoleModel.java @@ -36,9 +36,9 @@ public class TadpoleModel extends EntityModel { return LayerDefinition.create(meshDefinition, 16, 16); } - public void setupAnim(LivingEntityRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.isInWater ? 1.0F : 1.5F; - this.tail.yRot = -f * 0.25F * Mth.sin(0.3F * renderState.ageInTicks); + public void setupAnim(LivingEntityRenderState livingEntityRenderState) { + super.setupAnim(livingEntityRenderState); + float f = livingEntityRenderState.isInWater ? 1.0F : 1.5F; + this.tail.yRot = -f * 0.25F * Mth.sin(0.3F * livingEntityRenderState.ageInTicks); } } diff --git a/net/minecraft/client/model/TropicalFishModelA.java b/net/minecraft/client/model/TropicalFishModelA.java index 0c0a7d59..e43252be 100644 --- a/net/minecraft/client/model/TropicalFishModelA.java +++ b/net/minecraft/client/model/TropicalFishModelA.java @@ -47,9 +47,9 @@ public class TropicalFishModelA extends EntityModel { return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(TropicalFishRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.isInWater ? 1.0F : 1.5F; - this.tail.yRot = -f * 0.45F * Mth.sin(0.6F * renderState.ageInTicks); + public void setupAnim(TropicalFishRenderState tropicalFishRenderState) { + super.setupAnim(tropicalFishRenderState); + float f = tropicalFishRenderState.isInWater ? 1.0F : 1.5F; + this.tail.yRot = -f * 0.45F * Mth.sin(0.6F * tropicalFishRenderState.ageInTicks); } } diff --git a/net/minecraft/client/model/TropicalFishModelB.java b/net/minecraft/client/model/TropicalFishModelB.java index 996fc8bd..6e5f0ea2 100644 --- a/net/minecraft/client/model/TropicalFishModelB.java +++ b/net/minecraft/client/model/TropicalFishModelB.java @@ -50,9 +50,9 @@ public class TropicalFishModelB extends EntityModel { return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(TropicalFishRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.isInWater ? 1.0F : 1.5F; - this.tail.yRot = -f * 0.45F * Mth.sin(0.6F * renderState.ageInTicks); + public void setupAnim(TropicalFishRenderState tropicalFishRenderState) { + super.setupAnim(tropicalFishRenderState); + float f = tropicalFishRenderState.isInWater ? 1.0F : 1.5F; + this.tail.yRot = -f * 0.45F * Mth.sin(0.6F * tropicalFishRenderState.ageInTicks); } } diff --git a/net/minecraft/client/model/TurtleModel.java b/net/minecraft/client/model/TurtleModel.java index bf5b5660..7c471f7f 100644 --- a/net/minecraft/client/model/TurtleModel.java +++ b/net/minecraft/client/model/TurtleModel.java @@ -60,13 +60,13 @@ public class TurtleModel extends QuadrupedModel { return LayerDefinition.create(meshDefinition, 128, 64); } - public void setupAnim(TurtleRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationPos; - float g = renderState.walkAnimationSpeed; - if (renderState.isOnLand) { - float h = renderState.isLayingEgg ? 4.0F : 1.0F; - float i = renderState.isLayingEgg ? 2.0F : 1.0F; + public void setupAnim(TurtleRenderState turtleRenderState) { + super.setupAnim(turtleRenderState); + float f = turtleRenderState.walkAnimationPos; + float g = turtleRenderState.walkAnimationSpeed; + if (turtleRenderState.isOnLand) { + float h = turtleRenderState.isLayingEgg ? 4.0F : 1.0F; + float i = turtleRenderState.isLayingEgg ? 2.0F : 1.0F; float j = f * 5.0F; float k = Mth.cos(h * j); float l = Mth.cos(j); @@ -83,7 +83,7 @@ public class TurtleModel extends QuadrupedModel { this.leftFrontLeg.zRot = i; } - this.eggBelly.visible = renderState.hasEgg; + this.eggBelly.visible = turtleRenderState.hasEgg; if (this.eggBelly.visible) { this.root.y--; } diff --git a/net/minecraft/client/model/VexModel.java b/net/minecraft/client/model/VexModel.java index ecdbe877..2e35a658 100644 --- a/net/minecraft/client/model/VexModel.java +++ b/net/minecraft/client/model/VexModel.java @@ -67,21 +67,21 @@ public class VexModel extends EntityModel implements ArmedModel return LayerDefinition.create(meshDefinition, 32, 32); } - public void setupAnim(VexRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - float f = Mth.cos(renderState.ageInTicks * 5.5F * (float) (Math.PI / 180.0)) * 0.1F; + public void setupAnim(VexRenderState vexRenderState) { + super.setupAnim(vexRenderState); + this.head.yRot = vexRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = vexRenderState.xRot * (float) (Math.PI / 180.0); + float f = Mth.cos(vexRenderState.ageInTicks * 5.5F * (float) (Math.PI / 180.0)) * 0.1F; this.rightArm.zRot = (float) (Math.PI / 5) + f; this.leftArm.zRot = -((float) (Math.PI / 5) + f); - if (renderState.isCharging) { + if (vexRenderState.isCharging) { this.body.xRot = 0.0F; - this.setArmsCharging(!renderState.rightHandItem.isEmpty(), !renderState.leftHandItem.isEmpty(), f); + this.setArmsCharging(!vexRenderState.rightHandItem.isEmpty(), !vexRenderState.leftHandItem.isEmpty(), f); } else { this.body.xRot = (float) (Math.PI / 20); } - this.leftWing.yRot = 1.0995574F + Mth.cos(renderState.ageInTicks * 45.836624F * (float) (Math.PI / 180.0)) * (float) (Math.PI / 180.0) * 16.2F; + this.leftWing.yRot = 1.0995574F + Mth.cos(vexRenderState.ageInTicks * 45.836624F * (float) (Math.PI / 180.0)) * (float) (Math.PI / 180.0) * 16.2F; this.rightWing.yRot = -this.leftWing.yRot; this.leftWing.xRot = 0.47123888F; this.leftWing.zRot = -0.47123888F; diff --git a/net/minecraft/client/model/VillagerHeadModel.java b/net/minecraft/client/model/VillagerHeadModel.java deleted file mode 100644 index 75d48974..00000000 --- a/net/minecraft/client/model/VillagerHeadModel.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.client.model; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -@Environment(EnvType.CLIENT) -public interface VillagerHeadModel { - void hatVisible(boolean visible); -} diff --git a/net/minecraft/client/model/VillagerLikeModel.java b/net/minecraft/client/model/VillagerLikeModel.java new file mode 100644 index 00000000..37b73da7 --- /dev/null +++ b/net/minecraft/client/model/VillagerLikeModel.java @@ -0,0 +1,12 @@ +package net.minecraft.client.model; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public interface VillagerLikeModel { + void hatVisible(boolean hatVisible); + + void translateToArms(PoseStack poseStack); +} diff --git a/net/minecraft/client/model/VillagerModel.java b/net/minecraft/client/model/VillagerModel.java index 276bf999..b4fe6ed6 100644 --- a/net/minecraft/client/model/VillagerModel.java +++ b/net/minecraft/client/model/VillagerModel.java @@ -1,5 +1,6 @@ package net.minecraft.client.model; +import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.geom.ModelPart; @@ -7,17 +8,20 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.MeshTransformer; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.VillagerRenderState; import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) -public class VillagerModel extends EntityModel implements HeadedModel, VillagerHeadModel { +public class VillagerModel extends EntityModel implements HeadedModel, VillagerLikeModel { + public static final MeshTransformer BABY_TRANSFORMER = MeshTransformer.scaling(0.5F); private final ModelPart head; private final ModelPart hat; private final ModelPart hatRim; private final ModelPart rightLeg; private final ModelPart leftLeg; + private final ModelPart arms; public VillagerModel(ModelPart root) { super(root); @@ -26,6 +30,7 @@ public class VillagerModel extends EntityModel implements H this.hatRim = this.hat.getChild("hat_rim"); this.rightLeg = root.getChild("right_leg"); this.leftLeg = root.getChild("left_leg"); + this.arms = root.getChild("arms"); } public static MeshDefinition createBodyModel() { @@ -70,19 +75,19 @@ public class VillagerModel extends EntityModel implements H return meshDefinition; } - public void setupAnim(VillagerRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - if (renderState.isUnhappy) { - this.head.zRot = 0.3F * Mth.sin(0.45F * renderState.ageInTicks); + public void setupAnim(VillagerRenderState villagerRenderState) { + super.setupAnim(villagerRenderState); + this.head.yRot = villagerRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = villagerRenderState.xRot * (float) (Math.PI / 180.0); + if (villagerRenderState.isUnhappy) { + this.head.zRot = 0.3F * Mth.sin(0.45F * villagerRenderState.ageInTicks); this.head.xRot = 0.4F; } else { this.head.zRot = 0.0F; } - this.rightLeg.xRot = Mth.cos(renderState.walkAnimationPos * 0.6662F) * 1.4F * renderState.walkAnimationSpeed * 0.5F; - this.leftLeg.xRot = Mth.cos(renderState.walkAnimationPos * 0.6662F + (float) Math.PI) * 1.4F * renderState.walkAnimationSpeed * 0.5F; + this.rightLeg.xRot = Mth.cos(villagerRenderState.walkAnimationPos * 0.6662F) * 1.4F * villagerRenderState.walkAnimationSpeed * 0.5F; + this.leftLeg.xRot = Mth.cos(villagerRenderState.walkAnimationPos * 0.6662F + (float) Math.PI) * 1.4F * villagerRenderState.walkAnimationSpeed * 0.5F; this.rightLeg.yRot = 0.0F; this.leftLeg.yRot = 0.0F; } @@ -93,9 +98,15 @@ public class VillagerModel extends EntityModel implements H } @Override - public void hatVisible(boolean visible) { - this.head.visible = visible; - this.hat.visible = visible; - this.hatRim.visible = visible; + public void hatVisible(boolean hatVisible) { + this.head.visible = hatVisible; + this.hat.visible = hatVisible; + this.hatRim.visible = hatVisible; + } + + @Override + public void translateToArms(PoseStack poseStack) { + this.root.translateAndRotate(poseStack); + this.arms.translateAndRotate(poseStack); } } diff --git a/net/minecraft/client/model/WardenModel.java b/net/minecraft/client/model/WardenModel.java index 67548aa0..33fc8d46 100644 --- a/net/minecraft/client/model/WardenModel.java +++ b/net/minecraft/client/model/WardenModel.java @@ -93,18 +93,18 @@ public class WardenModel extends EntityModel { return LayerDefinition.create(meshDefinition, 128, 128); } - public void setupAnim(WardenRenderState renderState) { - super.setupAnim(renderState); - this.animateHeadLookTarget(renderState.yRot, renderState.xRot); - this.animateWalk(renderState.walkAnimationPos, renderState.walkAnimationSpeed); - this.animateIdlePose(renderState.ageInTicks); - this.animateTendrils(renderState, renderState.ageInTicks); - this.animate(renderState.attackAnimationState, WardenAnimation.WARDEN_ATTACK, renderState.ageInTicks); - this.animate(renderState.sonicBoomAnimationState, WardenAnimation.WARDEN_SONIC_BOOM, renderState.ageInTicks); - this.animate(renderState.diggingAnimationState, WardenAnimation.WARDEN_DIG, renderState.ageInTicks); - this.animate(renderState.emergeAnimationState, WardenAnimation.WARDEN_EMERGE, renderState.ageInTicks); - this.animate(renderState.roarAnimationState, WardenAnimation.WARDEN_ROAR, renderState.ageInTicks); - this.animate(renderState.sniffAnimationState, WardenAnimation.WARDEN_SNIFF, renderState.ageInTicks); + public void setupAnim(WardenRenderState wardenRenderState) { + super.setupAnim(wardenRenderState); + this.animateHeadLookTarget(wardenRenderState.yRot, wardenRenderState.xRot); + this.animateWalk(wardenRenderState.walkAnimationPos, wardenRenderState.walkAnimationSpeed); + this.animateIdlePose(wardenRenderState.ageInTicks); + this.animateTendrils(wardenRenderState, wardenRenderState.ageInTicks); + this.animate(wardenRenderState.attackAnimationState, WardenAnimation.WARDEN_ATTACK, wardenRenderState.ageInTicks); + this.animate(wardenRenderState.sonicBoomAnimationState, WardenAnimation.WARDEN_SONIC_BOOM, wardenRenderState.ageInTicks); + this.animate(wardenRenderState.diggingAnimationState, WardenAnimation.WARDEN_DIG, wardenRenderState.ageInTicks); + this.animate(wardenRenderState.emergeAnimationState, WardenAnimation.WARDEN_EMERGE, wardenRenderState.ageInTicks); + this.animate(wardenRenderState.roarAnimationState, WardenAnimation.WARDEN_ROAR, wardenRenderState.ageInTicks); + this.animate(wardenRenderState.sniffAnimationState, WardenAnimation.WARDEN_SNIFF, wardenRenderState.ageInTicks); } private void animateHeadLookTarget(float yaw, float pitch) { diff --git a/net/minecraft/client/model/WitchModel.java b/net/minecraft/client/model/WitchModel.java index d58a2a11..23b591d1 100644 --- a/net/minecraft/client/model/WitchModel.java +++ b/net/minecraft/client/model/WitchModel.java @@ -1,5 +1,6 @@ package net.minecraft.client.model; +import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.geom.ModelPart; @@ -13,13 +14,14 @@ import net.minecraft.client.renderer.entity.state.WitchRenderState; import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) -public class WitchModel extends EntityModel implements HeadedModel, VillagerHeadModel { +public class WitchModel extends EntityModel implements HeadedModel, VillagerLikeModel { protected final ModelPart nose; private final ModelPart head; private final ModelPart hat; private final ModelPart hatRim; private final ModelPart rightLeg; private final ModelPart leftLeg; + private final ModelPart arms; public WitchModel(ModelPart root) { super(root); @@ -29,6 +31,7 @@ public class WitchModel extends EntityModel implements HeadedM this.nose = this.head.getChild("nose"); this.rightLeg = root.getChild("right_leg"); this.leftLeg = root.getChild("left_leg"); + this.arms = root.getChild("arms"); } public static LayerDefinition createBodyLayer() { @@ -62,16 +65,16 @@ public class WitchModel extends EntityModel implements HeadedM return LayerDefinition.create(meshDefinition, 64, 128); } - public void setupAnim(WitchRenderState renderState) { - super.setupAnim(renderState); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.rightLeg.xRot = Mth.cos(renderState.walkAnimationPos * 0.6662F) * 1.4F * renderState.walkAnimationSpeed * 0.5F; - this.leftLeg.xRot = Mth.cos(renderState.walkAnimationPos * 0.6662F + (float) Math.PI) * 1.4F * renderState.walkAnimationSpeed * 0.5F; - float f = 0.01F * (renderState.entityId % 10); - this.nose.xRot = Mth.sin(renderState.ageInTicks * f) * 4.5F * (float) (Math.PI / 180.0); - this.nose.zRot = Mth.cos(renderState.ageInTicks * f) * 2.5F * (float) (Math.PI / 180.0); - if (renderState.isHoldingItem) { + public void setupAnim(WitchRenderState witchRenderState) { + super.setupAnim(witchRenderState); + this.head.yRot = witchRenderState.yRot * (float) (Math.PI / 180.0); + this.head.xRot = witchRenderState.xRot * (float) (Math.PI / 180.0); + this.rightLeg.xRot = Mth.cos(witchRenderState.walkAnimationPos * 0.6662F) * 1.4F * witchRenderState.walkAnimationSpeed * 0.5F; + this.leftLeg.xRot = Mth.cos(witchRenderState.walkAnimationPos * 0.6662F + (float) Math.PI) * 1.4F * witchRenderState.walkAnimationSpeed * 0.5F; + float f = 0.01F * (witchRenderState.entityId % 10); + this.nose.xRot = Mth.sin(witchRenderState.ageInTicks * f) * 4.5F * (float) (Math.PI / 180.0); + this.nose.zRot = Mth.cos(witchRenderState.ageInTicks * f) * 2.5F * (float) (Math.PI / 180.0); + if (witchRenderState.isHoldingItem) { this.nose.setPos(0.0F, 1.0F, -1.5F); this.nose.xRot = -0.9F; } @@ -87,9 +90,15 @@ public class WitchModel extends EntityModel implements HeadedM } @Override - public void hatVisible(boolean visible) { - this.head.visible = visible; - this.hat.visible = visible; - this.hatRim.visible = visible; + public void hatVisible(boolean hatVisible) { + this.head.visible = hatVisible; + this.hat.visible = hatVisible; + this.hatRim.visible = hatVisible; + } + + @Override + public void translateToArms(PoseStack poseStack) { + this.root.translateAndRotate(poseStack); + this.arms.translateAndRotate(poseStack); } } diff --git a/net/minecraft/client/model/WitherBossModel.java b/net/minecraft/client/model/WitherBossModel.java index ad5e5b97..0dcdeed0 100644 --- a/net/minecraft/client/model/WitherBossModel.java +++ b/net/minecraft/client/model/WitherBossModel.java @@ -69,16 +69,16 @@ public class WitherBossModel extends EntityModel { return LayerDefinition.create(meshDefinition, 64, 64); } - public void setupAnim(WitherRenderState renderState) { - super.setupAnim(renderState); - setupHeadRotation(renderState, this.rightHead, 0); - setupHeadRotation(renderState, this.leftHead, 1); - float f = Mth.cos(renderState.ageInTicks * 0.1F); + public void setupAnim(WitherRenderState witherRenderState) { + super.setupAnim(witherRenderState); + setupHeadRotation(witherRenderState, this.rightHead, 0); + setupHeadRotation(witherRenderState, this.leftHead, 1); + float f = Mth.cos(witherRenderState.ageInTicks * 0.1F); this.ribcage.xRot = (0.065F + 0.05F * f) * (float) Math.PI; this.tail.setPos(-2.0F, 6.9F + Mth.cos(this.ribcage.xRot) * 10.0F, -0.5F + Mth.sin(this.ribcage.xRot) * 10.0F); this.tail.xRot = (0.265F + 0.1F * f) * (float) Math.PI; - this.centerHead.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.centerHead.xRot = renderState.xRot * (float) (Math.PI / 180.0); + this.centerHead.yRot = witherRenderState.yRot * (float) (Math.PI / 180.0); + this.centerHead.xRot = witherRenderState.xRot * (float) (Math.PI / 180.0); } private static void setupHeadRotation(WitherRenderState renderState, ModelPart head, int headIndex) { diff --git a/net/minecraft/client/model/WolfModel.java b/net/minecraft/client/model/WolfModel.java index f150ec29..eafed47e 100644 --- a/net/minecraft/client/model/WolfModel.java +++ b/net/minecraft/client/model/WolfModel.java @@ -93,18 +93,18 @@ public class WolfModel extends EntityModel { return meshDefinition; } - public void setupAnim(WolfRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.walkAnimationPos; - float g = renderState.walkAnimationSpeed; - if (renderState.isAngry) { + public void setupAnim(WolfRenderState wolfRenderState) { + super.setupAnim(wolfRenderState); + float f = wolfRenderState.walkAnimationPos; + float g = wolfRenderState.walkAnimationSpeed; + if (wolfRenderState.isAngry) { this.tail.yRot = 0.0F; } else { this.tail.yRot = Mth.cos(f * 0.6662F) * 1.4F * g; } - if (renderState.isSitting) { - float h = renderState.ageScale; + if (wolfRenderState.isSitting) { + float h = wolfRenderState.ageScale; this.upperBody.y += 2.0F * h; this.upperBody.xRot = (float) (Math.PI * 2.0 / 5.0); this.upperBody.yRot = 0.0F; @@ -132,12 +132,12 @@ public class WolfModel extends EntityModel { this.leftFrontLeg.xRot = Mth.cos(f * 0.6662F) * 1.4F * g; } - this.realHead.zRot = renderState.headRollAngle + renderState.getBodyRollAngle(0.0F); - this.upperBody.zRot = renderState.getBodyRollAngle(-0.08F); - this.body.zRot = renderState.getBodyRollAngle(-0.16F); - this.realTail.zRot = renderState.getBodyRollAngle(-0.2F); - this.head.xRot = renderState.xRot * (float) (Math.PI / 180.0); - this.head.yRot = renderState.yRot * (float) (Math.PI / 180.0); - this.tail.xRot = renderState.tailAngle; + this.realHead.zRot = wolfRenderState.headRollAngle + wolfRenderState.getBodyRollAngle(0.0F); + this.upperBody.zRot = wolfRenderState.getBodyRollAngle(-0.08F); + this.body.zRot = wolfRenderState.getBodyRollAngle(-0.16F); + this.realTail.zRot = wolfRenderState.getBodyRollAngle(-0.2F); + this.head.xRot = wolfRenderState.xRot * (float) (Math.PI / 180.0); + this.head.yRot = wolfRenderState.yRot * (float) (Math.PI / 180.0); + this.tail.xRot = wolfRenderState.tailAngle; } } diff --git a/net/minecraft/client/model/ZombieVillagerModel.java b/net/minecraft/client/model/ZombieVillagerModel.java index 5f8bf72f..9f709b18 100644 --- a/net/minecraft/client/model/ZombieVillagerModel.java +++ b/net/minecraft/client/model/ZombieVillagerModel.java @@ -1,5 +1,6 @@ package net.minecraft.client.model; +import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.geom.ModelPart; @@ -10,13 +11,14 @@ import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.ZombieVillagerRenderState; +import net.minecraft.world.entity.HumanoidArm; @Environment(EnvType.CLIENT) -public class ZombieVillagerModel extends HumanoidModel implements VillagerHeadModel { +public class ZombieVillagerModel extends HumanoidModel implements VillagerLikeModel { private final ModelPart hatRim = this.hat.getChild("hat_rim"); - public ZombieVillagerModel(ModelPart root) { - super(root); + public ZombieVillagerModel(ModelPart modelPart) { + super(modelPart); } public static LayerDefinition createBodyLayer() { @@ -80,16 +82,21 @@ public class ZombieVillagerModel extends Hu return LayerDefinition.create(meshDefinition, 64, 32); } - public void setupAnim(S renderState) { - super.setupAnim(renderState); - float f = renderState.attackTime; - AnimationUtils.animateZombieArms(this.leftArm, this.rightArm, renderState.isAggressive, f, renderState.ageInTicks); + public void setupAnim(S zombieVillagerRenderState) { + super.setupAnim(zombieVillagerRenderState); + float f = zombieVillagerRenderState.attackTime; + AnimationUtils.animateZombieArms(this.leftArm, this.rightArm, zombieVillagerRenderState.isAggressive, f, zombieVillagerRenderState.ageInTicks); } @Override - public void hatVisible(boolean visible) { - this.head.visible = visible; - this.hat.visible = visible; - this.hatRim.visible = visible; + public void hatVisible(boolean hatVisible) { + this.head.visible = hatVisible; + this.hat.visible = hatVisible; + this.hatRim.visible = hatVisible; + } + + @Override + public void translateToArms(PoseStack poseStack) { + this.translateToHand(HumanoidArm.RIGHT, poseStack); } } diff --git a/net/minecraft/client/model/dragon/EnderDragonModel.java b/net/minecraft/client/model/dragon/EnderDragonModel.java index 9f8c1366..f9b2843d 100644 --- a/net/minecraft/client/model/dragon/EnderDragonModel.java +++ b/net/minecraft/client/model/dragon/EnderDragonModel.java @@ -11,7 +11,7 @@ import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.entity.state.EnderDragonRenderState; import net.minecraft.util.Mth; -import net.minecraft.world.entity.boss.enderdragon.DragonFlightHistory; +import net.minecraft.world.entity.boss.enderdragon.DragonFlightHistory.Sample; @Environment(EnvType.CLIENT) public class EnderDragonModel extends EntityModel { @@ -201,9 +201,9 @@ public class EnderDragonModel extends EntityModel { return LayerDefinition.create(meshDefinition, 256, 256); } - public void setupAnim(EnderDragonRenderState renderState) { - super.setupAnim(renderState); - float f = renderState.flapTime * (float) (Math.PI * 2); + public void setupAnim(EnderDragonRenderState enderDragonRenderState) { + super.setupAnim(enderDragonRenderState); + float f = enderDragonRenderState.flapTime * (float) (Math.PI * 2); this.jaw.xRot = (Mth.sin(f) + 1.0F) * 0.2F; float g = Mth.sin(f - 1.0F) + 1.0F; g = (g * g + g * 2.0F) * 0.05F; @@ -214,16 +214,16 @@ public class EnderDragonModel extends EntityModel { float i = this.neckParts[0].y; float j = this.neckParts[0].z; float k = 1.5F; - DragonFlightHistory.Sample sample = renderState.getHistoricalPos(6); - float l = Mth.wrapDegrees(renderState.getHistoricalPos(5).yRot() - renderState.getHistoricalPos(10).yRot()); - float m = Mth.wrapDegrees(renderState.getHistoricalPos(5).yRot() + l / 2.0F); + Sample sample = enderDragonRenderState.getHistoricalPos(6); + float l = Mth.wrapDegrees(enderDragonRenderState.getHistoricalPos(5).yRot() - enderDragonRenderState.getHistoricalPos(10).yRot()); + float m = Mth.wrapDegrees(enderDragonRenderState.getHistoricalPos(5).yRot() + l / 2.0F); for (int n = 0; n < 5; n++) { ModelPart modelPart = this.neckParts[n]; - DragonFlightHistory.Sample sample2 = renderState.getHistoricalPos(5 - n); + Sample sample2 = enderDragonRenderState.getHistoricalPos(5 - n); float o = Mth.cos(n * 0.45F + f) * 0.15F; modelPart.yRot = Mth.wrapDegrees(sample2.yRot() - sample.yRot()) * (float) (Math.PI / 180.0) * 1.5F; - modelPart.xRot = o + renderState.getHeadPartYOffset(n, sample, sample2) * (float) (Math.PI / 180.0) * 1.5F * 5.0F; + modelPart.xRot = o + enderDragonRenderState.getHeadPartYOffset(n, sample, sample2) * (float) (Math.PI / 180.0) * 1.5F * 5.0F; modelPart.zRot = -Mth.wrapDegrees(sample2.yRot() - m) * (float) (Math.PI / 180.0) * 1.5F; modelPart.y = i; modelPart.z = j; @@ -236,9 +236,9 @@ public class EnderDragonModel extends EntityModel { this.head.y = i; this.head.z = j; this.head.x = h; - DragonFlightHistory.Sample sample3 = renderState.getHistoricalPos(0); + Sample sample3 = enderDragonRenderState.getHistoricalPos(0); this.head.yRot = Mth.wrapDegrees(sample3.yRot() - sample.yRot()) * (float) (Math.PI / 180.0); - this.head.xRot = Mth.wrapDegrees(renderState.getHeadPartYOffset(6, sample, sample3)) * (float) (Math.PI / 180.0) * 1.5F * 5.0F; + this.head.xRot = Mth.wrapDegrees(enderDragonRenderState.getHeadPartYOffset(6, sample, sample3)) * (float) (Math.PI / 180.0) * 1.5F * 5.0F; this.head.zRot = -Mth.wrapDegrees(sample3.yRot() - m) * (float) (Math.PI / 180.0); this.body.zRot = -l * 1.5F * (float) (Math.PI / 180.0); this.leftWing.xRot = 0.125F - Mth.cos(f) * 0.2F; @@ -255,10 +255,10 @@ public class EnderDragonModel extends EntityModel { i = this.tailParts[0].y; j = this.tailParts[0].z; h = this.tailParts[0].x; - sample = renderState.getHistoricalPos(11); + sample = enderDragonRenderState.getHistoricalPos(11); for (int q = 0; q < 12; q++) { - DragonFlightHistory.Sample sample4 = renderState.getHistoricalPos(12 + q); + Sample sample4 = enderDragonRenderState.getHistoricalPos(12 + q); p += Mth.sin(q * 0.45F + f) * 0.05F; ModelPart modelPart2 = this.tailParts[q]; modelPart2.yRot = (Mth.wrapDegrees(sample4.yRot() - sample.yRot()) * 1.5F + 180.0F) * (float) (Math.PI / 180.0); diff --git a/net/minecraft/client/model/geom/EntityModelSet.java b/net/minecraft/client/model/geom/EntityModelSet.java index 7e900bc4..3db62997 100644 --- a/net/minecraft/client/model/geom/EntityModelSet.java +++ b/net/minecraft/client/model/geom/EntityModelSet.java @@ -5,12 +5,15 @@ import java.util.Map; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.server.packs.resources.ResourceManagerReloadListener; @Environment(EnvType.CLIENT) -public class EntityModelSet implements ResourceManagerReloadListener { - private Map roots = ImmutableMap.of(); +public class EntityModelSet { + public static final EntityModelSet EMPTY = new EntityModelSet(Map.of()); + private final Map roots; + + public EntityModelSet(Map roots) { + this.roots = roots; + } public ModelPart bakeLayer(ModelLayerLocation modelLayerLocation) { LayerDefinition layerDefinition = (LayerDefinition)this.roots.get(modelLayerLocation); @@ -21,8 +24,7 @@ public class EntityModelSet implements ResourceManagerReloadListener { } } - @Override - public void onResourceManagerReload(ResourceManager resourceManager) { - this.roots = ImmutableMap.copyOf(LayerDefinitions.createRoots()); + public static EntityModelSet vanilla() { + return new EntityModelSet(ImmutableMap.copyOf(LayerDefinitions.createRoots())); } } diff --git a/net/minecraft/client/model/geom/LayerDefinitions.java b/net/minecraft/client/model/geom/LayerDefinitions.java index d9446c1b..59cb1dae 100644 --- a/net/minecraft/client/model/geom/LayerDefinitions.java +++ b/net/minecraft/client/model/geom/LayerDefinitions.java @@ -14,6 +14,8 @@ import net.minecraft.client.model.ArmorStandArmorModel; import net.minecraft.client.model.ArmorStandModel; import net.minecraft.client.model.ArrowModel; import net.minecraft.client.model.AxolotlModel; +import net.minecraft.client.model.BannerFlagModel; +import net.minecraft.client.model.BannerModel; import net.minecraft.client.model.BatModel; import net.minecraft.client.model.BeeModel; import net.minecraft.client.model.BeeStingerModel; @@ -39,6 +41,7 @@ import net.minecraft.client.model.EndCrystalModel; import net.minecraft.client.model.EndermanModel; import net.minecraft.client.model.EndermiteModel; import net.minecraft.client.model.EvokerFangsModel; +import net.minecraft.client.model.FelineModel; import net.minecraft.client.model.FoxModel; import net.minecraft.client.model.FrogModel; import net.minecraft.client.model.GhastModel; @@ -54,7 +57,6 @@ import net.minecraft.client.model.LeashKnotModel; import net.minecraft.client.model.LlamaModel; import net.minecraft.client.model.LlamaSpitModel; import net.minecraft.client.model.MinecartModel; -import net.minecraft.client.model.OcelotModel; import net.minecraft.client.model.PandaModel; import net.minecraft.client.model.ParrotModel; import net.minecraft.client.model.PhantomModel; @@ -105,7 +107,6 @@ import net.minecraft.client.model.dragon.EnderDragonModel; import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshTransformer; -import net.minecraft.client.renderer.blockentity.BannerRenderer; import net.minecraft.client.renderer.blockentity.BedRenderer; import net.minecraft.client.renderer.blockentity.ConduitRenderer; import net.minecraft.client.renderer.blockentity.DecoratedPotRenderer; @@ -137,9 +138,9 @@ public class LayerDefinitions { LayerDefinition layerDefinition12 = CowModel.createBodyLayer(); LayerDefinition layerDefinition13 = layerDefinition12.apply(CowModel.BABY_TRANSFORMER); LayerDefinition layerDefinition14 = ElytraModel.createLayer(); - LayerDefinition layerDefinition15 = LayerDefinition.create(OcelotModel.createBodyMesh(CubeDeformation.NONE), 64, 32); - LayerDefinition layerDefinition16 = layerDefinition15.apply(CatModel.CAT_TRANSFORMER); - LayerDefinition layerDefinition17 = LayerDefinition.create(OcelotModel.createBodyMesh(new CubeDeformation(0.01F)), 64, 32).apply(CatModel.CAT_TRANSFORMER); + LayerDefinition layerDefinition15 = LayerDefinition.create(FelineModel.createBodyMesh(CubeDeformation.NONE), 64, 32); + LayerDefinition layerDefinition16 = layerDefinition15.apply(FelineModel.BABY_TRANSFORMER); + LayerDefinition layerDefinition17 = LayerDefinition.create(FelineModel.createBodyMesh(new CubeDeformation(0.01F)), 64, 32); LayerDefinition layerDefinition18 = LayerDefinition.create(PiglinModel.createMesh(CubeDeformation.NONE), 64, 64); LayerDefinition layerDefinition19 = LayerDefinition.create(PiglinHeadModel.createHeadModel(), 64, 64); LayerDefinition layerDefinition20 = SkullModel.createHumanoidHeadLayer(); @@ -186,7 +187,10 @@ public class LayerDefinitions { builder.put(ModelLayers.ARROW, ArrowModel.createBodyLayer()); builder.put(ModelLayers.AXOLOTL, layerDefinition10); builder.put(ModelLayers.AXOLOTL_BABY, layerDefinition10.apply(AxolotlModel.BABY_TRANSFORMER)); - builder.put(ModelLayers.BANNER, BannerRenderer.createBodyLayer()); + builder.put(ModelLayers.STANDING_BANNER, BannerModel.createBodyLayer(true)); + builder.put(ModelLayers.WALL_BANNER, BannerModel.createBodyLayer(false)); + builder.put(ModelLayers.STANDING_BANNER_FLAG, BannerFlagModel.createFlagLayer(true)); + builder.put(ModelLayers.WALL_BANNER_FLAG, BannerFlagModel.createFlagLayer(false)); builder.put(ModelLayers.BAT, BatModel.createBodyLayer()); builder.put(ModelLayers.BED_FOOT, BedRenderer.createFootLayer()); builder.put(ModelLayers.BED_HEAD, BedRenderer.createHeadLayer()); @@ -203,10 +207,10 @@ public class LayerDefinitions { builder.put(ModelLayers.BOOK, BookModel.createBodyLayer()); builder.put(ModelLayers.BREEZE, BreezeModel.createBodyLayer(32, 32)); builder.put(ModelLayers.BREEZE_WIND, BreezeModel.createBodyLayer(128, 128)); - builder.put(ModelLayers.CAT, layerDefinition16); - builder.put(ModelLayers.CAT_BABY, layerDefinition16.apply(CatModel.BABY_TRANSFORMER)); - builder.put(ModelLayers.CAT_COLLAR, layerDefinition17); - builder.put(ModelLayers.CAT_BABY_COLLAR, layerDefinition17.apply(CatModel.BABY_TRANSFORMER)); + builder.put(ModelLayers.CAT, layerDefinition15.apply(CatModel.CAT_TRANSFORMER)); + builder.put(ModelLayers.CAT_BABY, layerDefinition16.apply(CatModel.CAT_TRANSFORMER)); + builder.put(ModelLayers.CAT_COLLAR, layerDefinition17.apply(CatModel.CAT_TRANSFORMER)); + builder.put(ModelLayers.CAT_BABY_COLLAR, layerDefinition17.apply(FelineModel.BABY_TRANSFORMER).apply(CatModel.CAT_TRANSFORMER)); builder.put(ModelLayers.CAMEL, layerDefinition30); builder.put(ModelLayers.CAMEL_BABY, layerDefinition30.apply(CamelModel.BABY_TRANSFORMER)); builder.put(ModelLayers.CAVE_SPIDER, layerDefinition28.apply(MeshTransformer.scaling(0.7F))); @@ -230,8 +234,8 @@ public class LayerDefinitions { builder.put(ModelLayers.DECORATED_POT_SIDES, DecoratedPotRenderer.createSidesLayer()); builder.put(ModelLayers.DOLPHIN, layerDefinition50); builder.put(ModelLayers.DOLPHIN_BABY, layerDefinition50.apply(DolphinModel.BABY_TRANSFORMER)); - builder.put(ModelLayers.DONKEY, DonkeyModel.createBodyLayer()); - builder.put(ModelLayers.DONKEY_BABY, DonkeyModel.createBabyLayer()); + builder.put(ModelLayers.DONKEY, DonkeyModel.createBodyLayer(0.87F)); + builder.put(ModelLayers.DONKEY_BABY, DonkeyModel.createBabyLayer(0.87F)); builder.put(ModelLayers.DOUBLE_CHEST_LEFT, ChestModel.createDoubleBodyLeftLayer()); builder.put(ModelLayers.DOUBLE_CHEST_RIGHT, ChestModel.createDoubleBodyRightLayer()); builder.put(ModelLayers.DRAGON_SKULL, DragonHeadModel.createHeadLayer()); @@ -269,17 +273,20 @@ public class LayerDefinitions { builder.put(ModelLayers.HOGLIN, layerDefinition24); builder.put(ModelLayers.HOGLIN_BABY, layerDefinition25); builder.put(ModelLayers.HOPPER_MINECART, layerDefinition5); - builder.put(ModelLayers.HORSE, layerDefinition7); - builder.put(ModelLayers.HORSE_BABY, layerDefinition8); - builder.put(ModelLayers.HORSE_ARMOR, LayerDefinition.create(AbstractEquineModel.createBodyMesh(new CubeDeformation(0.1F)), 64, 64)); - builder.put(ModelLayers.HORSE_BABY_ARMOR, LayerDefinition.create(AbstractEquineModel.createBabyMesh(new CubeDeformation(0.1F)), 64, 64)); - MeshTransformer meshTransformer3 = MeshTransformer.scaling(1.0625F); - builder.put(ModelLayers.HUSK, layerDefinition.apply(meshTransformer3)); - builder.put(ModelLayers.HUSK_INNER_ARMOR, layerDefinition4.apply(meshTransformer3)); - builder.put(ModelLayers.HUSK_OUTER_ARMOR, layerDefinition2.apply(meshTransformer3)); - builder.put(ModelLayers.HUSK_BABY, layerDefinition.apply(HumanoidModel.BABY_TRANSFORMER).apply(meshTransformer3)); - builder.put(ModelLayers.HUSK_BABY_INNER_ARMOR, layerDefinition4.apply(HumanoidModel.BABY_TRANSFORMER).apply(meshTransformer3)); - builder.put(ModelLayers.HUSK_BABY_OUTER_ARMOR, layerDefinition2.apply(HumanoidModel.BABY_TRANSFORMER).apply(meshTransformer3)); + MeshTransformer meshTransformer3 = MeshTransformer.scaling(1.1F); + builder.put(ModelLayers.HORSE, layerDefinition7.apply(meshTransformer3)); + builder.put(ModelLayers.HORSE_BABY, layerDefinition8.apply(meshTransformer3)); + builder.put(ModelLayers.HORSE_ARMOR, LayerDefinition.create(AbstractEquineModel.createBodyMesh(new CubeDeformation(0.1F)), 64, 64).apply(meshTransformer3)); + builder.put( + ModelLayers.HORSE_BABY_ARMOR, LayerDefinition.create(AbstractEquineModel.createBabyMesh(new CubeDeformation(0.1F)), 64, 64).apply(meshTransformer3) + ); + MeshTransformer meshTransformer4 = MeshTransformer.scaling(1.0625F); + builder.put(ModelLayers.HUSK, layerDefinition.apply(meshTransformer4)); + builder.put(ModelLayers.HUSK_INNER_ARMOR, layerDefinition4.apply(meshTransformer4)); + builder.put(ModelLayers.HUSK_OUTER_ARMOR, layerDefinition2.apply(meshTransformer4)); + builder.put(ModelLayers.HUSK_BABY, layerDefinition.apply(HumanoidModel.BABY_TRANSFORMER).apply(meshTransformer4)); + builder.put(ModelLayers.HUSK_BABY_INNER_ARMOR, layerDefinition4.apply(HumanoidModel.BABY_TRANSFORMER).apply(meshTransformer4)); + builder.put(ModelLayers.HUSK_BABY_OUTER_ARMOR, layerDefinition2.apply(HumanoidModel.BABY_TRANSFORMER).apply(meshTransformer4)); builder.put(ModelLayers.ILLUSIONER, layerDefinition9); builder.put(ModelLayers.IRON_GOLEM, IronGolemModel.createBodyLayer()); builder.put(ModelLayers.LEASH_KNOT, LeashKnotModel.createBodyLayer()); @@ -292,10 +299,10 @@ public class LayerDefinitions { builder.put(ModelLayers.MINECART, layerDefinition5); builder.put(ModelLayers.MOOSHROOM, layerDefinition12); builder.put(ModelLayers.MOOSHROOM_BABY, layerDefinition13); - builder.put(ModelLayers.MULE, DonkeyModel.createBodyLayer()); - builder.put(ModelLayers.MULE_BABY, DonkeyModel.createBabyLayer()); + builder.put(ModelLayers.MULE, DonkeyModel.createBodyLayer(0.92F)); + builder.put(ModelLayers.MULE_BABY, DonkeyModel.createBabyLayer(0.92F)); builder.put(ModelLayers.OCELOT, layerDefinition15); - builder.put(ModelLayers.OCELOT_BABY, layerDefinition15.apply(OcelotModel.BABY_TRANSFORMER)); + builder.put(ModelLayers.OCELOT_BABY, layerDefinition16); builder.put(ModelLayers.PANDA, layerDefinition33); builder.put(ModelLayers.PANDA_BABY, layerDefinition33.apply(PandaModel.BABY_TRANSFORMER)); builder.put(ModelLayers.PARROT, ParrotModel.createBodyLayer()); @@ -366,6 +373,8 @@ public class LayerDefinitions { builder.put(ModelLayers.STRAY_OUTER_LAYER, LayerDefinition.create(HumanoidModel.createMesh(new CubeDeformation(0.25F), 0.0F), 64, 32)); builder.put(ModelLayers.STRIDER, layerDefinition23); builder.put(ModelLayers.STRIDER_SADDLE, layerDefinition23); + builder.put(ModelLayers.STRIDER_BABY, layerDefinition23.apply(StriderModel.BABY_TRANSFORMER)); + builder.put(ModelLayers.STRIDER_BABY_SADDLE, layerDefinition23.apply(StriderModel.BABY_TRANSFORMER)); builder.put(ModelLayers.TADPOLE, TadpoleModel.createBodyLayer()); builder.put(ModelLayers.TNT_MINECART, layerDefinition5); builder.put(ModelLayers.TRADER_LLAMA, layerDefinition21); @@ -379,6 +388,7 @@ public class LayerDefinitions { builder.put(ModelLayers.TURTLE_BABY, layerDefinition40.apply(TurtleModel.BABY_TRANSFORMER)); builder.put(ModelLayers.VEX, VexModel.createBodyLayer()); builder.put(ModelLayers.VILLAGER, layerDefinition27); + builder.put(ModelLayers.VILLAGER_BABY, layerDefinition27.apply(VillagerModel.BABY_TRANSFORMER)); builder.put(ModelLayers.VINDICATOR, layerDefinition9); builder.put(ModelLayers.WARDEN, WardenModel.createBodyLayer()); builder.put(ModelLayers.WANDERING_TRADER, layerDefinition27); @@ -387,10 +397,10 @@ public class LayerDefinitions { builder.put(ModelLayers.WITHER, WitherBossModel.createBodyLayer(CubeDeformation.NONE)); builder.put(ModelLayers.WITHER_ARMOR, WitherBossModel.createBodyLayer(INNER_ARMOR_DEFORMATION)); builder.put(ModelLayers.WITHER_SKULL, WitherSkullRenderer.createSkullLayer()); - MeshTransformer meshTransformer4 = MeshTransformer.scaling(1.2F); - builder.put(ModelLayers.WITHER_SKELETON, layerDefinition26.apply(meshTransformer4)); - builder.put(ModelLayers.WITHER_SKELETON_INNER_ARMOR, layerDefinition4.apply(meshTransformer4)); - builder.put(ModelLayers.WITHER_SKELETON_OUTER_ARMOR, layerDefinition2.apply(meshTransformer4)); + MeshTransformer meshTransformer5 = MeshTransformer.scaling(1.2F); + builder.put(ModelLayers.WITHER_SKELETON, layerDefinition26.apply(meshTransformer5)); + builder.put(ModelLayers.WITHER_SKELETON_INNER_ARMOR, layerDefinition4.apply(meshTransformer5)); + builder.put(ModelLayers.WITHER_SKELETON_OUTER_ARMOR, layerDefinition2.apply(meshTransformer5)); builder.put(ModelLayers.WITHER_SKELETON_SKULL, layerDefinition6); builder.put(ModelLayers.WOLF, layerDefinition41); builder.put(ModelLayers.WOLF_ARMOR, layerDefinition42); @@ -443,11 +453,14 @@ public class LayerDefinitions { builder.put(ModelLayers.MANGROVE_CHEST_BOAT, layerDefinition53); LayerDefinition layerDefinition54 = SignRenderer.createSignLayer(true); LayerDefinition layerDefinition55 = SignRenderer.createSignLayer(false); - LayerDefinition layerDefinition56 = HangingSignRenderer.createHangingSignLayer(); WoodType.values().forEach(woodType -> { builder.put(ModelLayers.createStandingSignModelName(woodType), layerDefinition54); builder.put(ModelLayers.createWallSignModelName(woodType), layerDefinition55); - builder.put(ModelLayers.createHangingSignModelName(woodType), layerDefinition56); + + for (HangingSignRenderer.AttachmentType attachmentType : HangingSignRenderer.AttachmentType.values()) { + LayerDefinition layerDefinition3x = HangingSignRenderer.createHangingSignLayer(attachmentType); + builder.put(ModelLayers.createHangingSignModelName(woodType, attachmentType), layerDefinition3x); + } }); ImmutableMap immutableMap = builder.build(); List list = (List)ModelLayers.getKnownLocations() diff --git a/net/minecraft/client/model/geom/ModelLayers.java b/net/minecraft/client/model/geom/ModelLayers.java index 3ed19654..485fa91e 100644 --- a/net/minecraft/client/model/geom/ModelLayers.java +++ b/net/minecraft/client/model/geom/ModelLayers.java @@ -5,6 +5,7 @@ import java.util.Set; import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.blockentity.HangingSignRenderer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.properties.WoodType; @@ -28,7 +29,10 @@ public class ModelLayers { public static final ModelLayerLocation AXOLOTL_BABY = register("axolotl_baby"); public static final ModelLayerLocation BAMBOO_CHEST_RAFT = register("chest_boat/bamboo"); public static final ModelLayerLocation BAMBOO_RAFT = register("boat/bamboo"); - public static final ModelLayerLocation BANNER = register("banner"); + public static final ModelLayerLocation STANDING_BANNER = register("standing_banner"); + public static final ModelLayerLocation STANDING_BANNER_FLAG = register("standing_banner", "flag"); + public static final ModelLayerLocation WALL_BANNER = register("wall_banner"); + public static final ModelLayerLocation WALL_BANNER_FLAG = register("wall_banner", "flag"); public static final ModelLayerLocation BAT = register("bat"); public static final ModelLayerLocation BED_FOOT = register("bed_foot"); public static final ModelLayerLocation BED_HEAD = register("bed_head"); @@ -222,6 +226,8 @@ public class ModelLayers { public static final ModelLayerLocation STRAY_OUTER_LAYER = register("stray", "outer"); public static final ModelLayerLocation STRIDER = register("strider"); public static final ModelLayerLocation STRIDER_SADDLE = register("strider", "saddle"); + public static final ModelLayerLocation STRIDER_BABY = register("strider_baby"); + public static final ModelLayerLocation STRIDER_BABY_SADDLE = register("strider_baby", "saddle"); public static final ModelLayerLocation TADPOLE = register("tadpole"); public static final ModelLayerLocation TNT_MINECART = register("tnt_minecart"); public static final ModelLayerLocation TRADER_LLAMA = register("trader_llama"); @@ -235,6 +241,7 @@ public class ModelLayers { public static final ModelLayerLocation TURTLE_BABY = register("turtle_baby"); public static final ModelLayerLocation VEX = register("vex"); public static final ModelLayerLocation VILLAGER = register("villager"); + public static final ModelLayerLocation VILLAGER_BABY = register("villager_baby"); public static final ModelLayerLocation VINDICATOR = register("vindicator"); public static final ModelLayerLocation WANDERING_TRADER = register("wandering_trader"); public static final ModelLayerLocation WARDEN = register("warden"); @@ -308,8 +315,8 @@ public class ModelLayers { return createLocation("sign/wall/" + woodType.name(), "main"); } - public static ModelLayerLocation createHangingSignModelName(WoodType woodType) { - return createLocation("hanging_sign/" + woodType.name(), "main"); + public static ModelLayerLocation createHangingSignModelName(WoodType woodType, HangingSignRenderer.AttachmentType attachmentType) { + return createLocation("hanging_sign/" + woodType.name() + "/" + attachmentType.getSerializedName(), "main"); } public static Stream getKnownLocations() { diff --git a/net/minecraft/client/model/geom/builders/PartDefinition.java b/net/minecraft/client/model/geom/builders/PartDefinition.java index db77d1e9..1c2085b8 100644 --- a/net/minecraft/client/model/geom/builders/PartDefinition.java +++ b/net/minecraft/client/model/geom/builders/PartDefinition.java @@ -1,6 +1,5 @@ package net.minecraft.client.model.geom.builders; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; import java.util.List; @@ -13,6 +12,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart.Cube; @Environment(EnvType.CLIENT) public class PartDefinition { @@ -30,13 +30,13 @@ public class PartDefinition { return this.addOrReplaceChild(name, partDefinition); } - public PartDefinition addOrReplaceChild(String name, PartDefinition chuld) { - PartDefinition partDefinition = (PartDefinition)this.children.put(name, chuld); + public PartDefinition addOrReplaceChild(String name, PartDefinition child) { + PartDefinition partDefinition = (PartDefinition)this.children.put(name, child); if (partDefinition != null) { - chuld.children.putAll(partDefinition.children); + child.children.putAll(partDefinition.children); } - return chuld; + return child; } public PartDefinition clearChild(String name) { @@ -52,10 +52,7 @@ public class PartDefinition { Entry::getKey, entry -> ((PartDefinition)entry.getValue()).bake(texWidth, texHeight), (modelPartx, modelPart2) -> modelPartx, Object2ObjectArrayMap::new ) ); - List list = (List)this.cubes - .stream() - .map(cubeDefinition -> cubeDefinition.bake(texWidth, texHeight)) - .collect(ImmutableList.toImmutableList()); + List list = this.cubes.stream().map(cubeDefinition -> cubeDefinition.bake(texWidth, texHeight)).toList(); ModelPart modelPart = new ModelPart(list, object2ObjectArrayMap); modelPart.setInitialPose(this.partPose); modelPart.loadPose(this.partPose); diff --git a/net/minecraft/client/multiplayer/ClientChunkCache.java b/net/minecraft/client/multiplayer/ClientChunkCache.java index b1b9d06a..30cb1b70 100644 --- a/net/minecraft/client/multiplayer/ClientChunkCache.java +++ b/net/minecraft/client/multiplayer/ClientChunkCache.java @@ -69,15 +69,15 @@ public class ClientChunkCache extends ChunkSource { } @Nullable - public LevelChunk getChunk(int x, int z, ChunkStatus chunkStatus, boolean requireChunk) { - if (this.storage.inRange(x, z)) { - LevelChunk levelChunk = this.storage.getChunk(this.storage.getIndex(x, z)); - if (isValidChunk(levelChunk, x, z)) { + public LevelChunk getChunk(int i, int j, ChunkStatus chunkStatus, boolean bl) { + if (this.storage.inRange(i, j)) { + LevelChunk levelChunk = this.storage.getChunk(this.storage.getIndex(i, j)); + if (isValidChunk(levelChunk, i, j)) { return levelChunk; } } - return requireChunk ? this.emptyChunk : null; + return bl ? this.emptyChunk : null; } @Override @@ -114,6 +114,7 @@ public class ClientChunkCache extends ChunkSource { this.storage.replace(i, levelChunk); } else { levelChunk.replaceWithPacketData(buffer, tag, consumer); + this.storage.refreshEmptySections(levelChunk); } this.level.onChunkLoaded(chunkPos); @@ -255,6 +256,21 @@ public class ClientChunkCache extends ChunkSource { } } + void refreshEmptySections(LevelChunk chunk) { + ChunkPos chunkPos = chunk.getPos(); + LevelChunkSection[] levelChunkSections = chunk.getSections(); + + for (int i = 0; i < levelChunkSections.length; i++) { + LevelChunkSection levelChunkSection = levelChunkSections[i]; + long l = SectionPos.asLong(chunkPos.x, chunk.getSectionYFromSectionIndex(i), chunkPos.z); + if (levelChunkSection.hasOnlyAir()) { + this.loadedEmptySections.add(l); + } else if (this.loadedEmptySections.remove(l)) { + ClientChunkCache.this.level.onSectionBecomingNonEmpty(l); + } + } + } + boolean inRange(int x, int z) { return Math.abs(x - this.viewCenterX) <= this.chunkRadius && Math.abs(z - this.viewCenterZ) <= this.chunkRadius; } diff --git a/net/minecraft/client/multiplayer/ClientLevel.java b/net/minecraft/client/multiplayer/ClientLevel.java index a2e289e0..8f3cabd7 100644 --- a/net/minecraft/client/multiplayer/ClientLevel.java +++ b/net/minecraft/client/multiplayer/ClientLevel.java @@ -6,6 +6,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Queues; import com.mojang.logging.LogUtils; import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; +import java.util.Arrays; import java.util.Deque; import java.util.List; import java.util.Map; @@ -22,7 +23,7 @@ import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockTintCache; import net.minecraft.client.multiplayer.prediction.BlockStatePredictionHandler; -import net.minecraft.client.particle.FireworkParticles.Starter; +import net.minecraft.client.particle.FireworkParticles; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.renderer.BiomeColors; import net.minecraft.client.renderer.DimensionSpecialEffects; @@ -34,6 +35,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Cursor3D; import net.minecraft.core.Direction; import net.minecraft.core.Holder; +import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.BlockParticleOption; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; @@ -56,6 +58,8 @@ import net.minecraft.world.Difficulty; import net.minecraft.world.TickRateManager; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.boss.EnderDragonPart; +import net.minecraft.world.entity.boss.enderdragon.EnderDragon; import net.minecraft.world.entity.player.Player; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.BlockItem; @@ -113,6 +117,7 @@ public class ClientLevel extends Level { private final TickRateManager tickRateManager; private final Minecraft minecraft = Minecraft.getInstance(); final List players = Lists.newArrayList(); + final List dragonParts = Lists.newArrayList(); private final Map mapData = Maps.newHashMap(); private static final int CLOUD_COLOR = -1; private int skyFlashTime; @@ -319,7 +324,6 @@ public class ClientLevel extends Level { public void onChunkLoaded(ChunkPos chunkPos) { this.tintCaches.forEach((colorResolver, blockTintCache) -> blockTintCache.invalidateForChunk(chunkPos.x, chunkPos.z)); this.entityStorage.startTicking(chunkPos); - this.levelRenderer.onChunkLoaded(chunkPos); } public void onSectionBecomingNonEmpty(long sectionPos) { @@ -435,20 +439,20 @@ public class ClientLevel extends Level { private void trySpawnDripParticles(BlockPos blockPos, BlockState blockState, ParticleOptions particleData, boolean shapeDownSolid) { if (blockState.getFluidState().isEmpty()) { VoxelShape voxelShape = blockState.getCollisionShape(this, blockPos); - double d = voxelShape.max(Direction.Axis.Y); + double d = voxelShape.max(Axis.Y); if (d < 1.0) { if (shapeDownSolid) { this.spawnFluidParticle(blockPos.getX(), blockPos.getX() + 1, blockPos.getZ(), blockPos.getZ() + 1, blockPos.getY() + 1 - 0.05, particleData); } } else if (!blockState.is(BlockTags.IMPERMEABLE)) { - double e = voxelShape.min(Direction.Axis.Y); + double e = voxelShape.min(Axis.Y); if (e > 0.0) { this.spawnParticle(blockPos, particleData, voxelShape, blockPos.getY() + e - 0.05); } else { BlockPos blockPos2 = blockPos.below(); BlockState blockState2 = this.getBlockState(blockPos2); VoxelShape voxelShape2 = blockState2.getCollisionShape(this, blockPos2); - double f = voxelShape2.max(Direction.Axis.Y); + double f = voxelShape2.max(Axis.Y); if (f < 1.0 && blockState2.getFluidState().isEmpty()) { this.spawnParticle(blockPos, particleData, voxelShape, blockPos.getY() - 0.05); } @@ -459,10 +463,10 @@ public class ClientLevel extends Level { private void spawnParticle(BlockPos pos, ParticleOptions particleData, VoxelShape voxelShape, double y) { this.spawnFluidParticle( - pos.getX() + voxelShape.min(Direction.Axis.X), - pos.getX() + voxelShape.max(Direction.Axis.X), - pos.getZ() + voxelShape.min(Direction.Axis.Z), - pos.getZ() + voxelShape.max(Direction.Axis.Z), + pos.getX() + voxelShape.min(Axis.X), + pos.getX() + voxelShape.max(Axis.X), + pos.getZ() + voxelShape.min(Axis.Z), + pos.getZ() + voxelShape.max(Axis.Z), y, particleData ); @@ -528,7 +532,7 @@ public class ClientLevel extends Level { this.addParticle(ParticleTypes.POOF, x, y, z, this.random.nextGaussian() * 0.05, 0.005, this.random.nextGaussian() * 0.05); } } else { - this.minecraft.particleEngine.add(new Starter(this, x, y, z, xSpeed, ySpeed, zSpeed, this.minecraft.particleEngine, explosions)); + this.minecraft.particleEngine.add(new FireworkParticles.Starter(this, x, y, z, xSpeed, ySpeed, zSpeed, this.minecraft.particleEngine, explosions)); } } @@ -632,25 +636,25 @@ public class ClientLevel extends Level { } @Override - public void addParticle(ParticleOptions particleData, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - this.levelRenderer.addParticle(particleData, particleData.getType().getOverrideLimiter(), x, y, z, xSpeed, ySpeed, zSpeed); + public void addParticle(ParticleOptions particle, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + this.levelRenderer.addParticle(particle, particle.getType().getOverrideLimiter(), x, y, z, xSpeed, ySpeed, zSpeed); } @Override - public void addParticle(ParticleOptions particleData, boolean forceAlwaysRender, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - this.levelRenderer.addParticle(particleData, particleData.getType().getOverrideLimiter() || forceAlwaysRender, x, y, z, xSpeed, ySpeed, zSpeed); - } - - @Override - public void addAlwaysVisibleParticle(ParticleOptions particleData, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - this.levelRenderer.addParticle(particleData, false, true, x, y, z, xSpeed, ySpeed, zSpeed); - } - - @Override - public void addAlwaysVisibleParticle( - ParticleOptions particleData, boolean ignoreRange, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed + public void addParticle( + ParticleOptions particle, boolean overrideLimiter, boolean alwaysShow, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed ) { - this.levelRenderer.addParticle(particleData, particleData.getType().getOverrideLimiter() || ignoreRange, true, x, y, z, xSpeed, ySpeed, zSpeed); + this.levelRenderer.addParticle(particle, particle.getType().getOverrideLimiter() || overrideLimiter, alwaysShow, x, y, z, xSpeed, ySpeed, zSpeed); + } + + @Override + public void addAlwaysVisibleParticle(ParticleOptions particle, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + this.levelRenderer.addParticle(particle, false, true, x, y, z, xSpeed, ySpeed, zSpeed); + } + + @Override + public void addAlwaysVisibleParticle(ParticleOptions particle, boolean ignoreRange, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + this.levelRenderer.addParticle(particle, particle.getType().getOverrideLimiter() || ignoreRange, true, x, y, z, xSpeed, ySpeed, zSpeed); } @Override @@ -658,6 +662,10 @@ public class ClientLevel extends Level { return this.players; } + public List dragonParts() { + return this.dragonParts; + } + @Override public Holder getUncachedNoiseBiome(int x, int y, int z) { return this.registryAccess().lookupOrThrow(Registries.BIOME).getOrThrow(Biomes.PLAINS); @@ -1007,14 +1015,28 @@ public class ClientLevel extends Level { } public void onTrackingStart(Entity entity) { - if (entity instanceof AbstractClientPlayer) { - ClientLevel.this.players.add((AbstractClientPlayer)entity); + switch (entity) { + case AbstractClientPlayer abstractClientPlayer: + ClientLevel.this.players.add(abstractClientPlayer); + break; + case EnderDragon enderDragon: + ClientLevel.this.dragonParts.addAll(Arrays.asList(enderDragon.getSubEntities())); + break; + default: } } public void onTrackingEnd(Entity entity) { entity.unRide(); - ClientLevel.this.players.remove(entity); + switch (entity) { + case AbstractClientPlayer abstractClientPlayer: + ClientLevel.this.players.remove(abstractClientPlayer); + break; + case EnderDragon enderDragon: + ClientLevel.this.dragonParts.removeAll(Arrays.asList(enderDragon.getSubEntities())); + break; + default: + } } public void onSectionChange(Entity entity) { diff --git a/net/minecraft/client/multiplayer/ClientPacketListener.java b/net/minecraft/client/multiplayer/ClientPacketListener.java index 604f529c..f1fb7a39 100644 --- a/net/minecraft/client/multiplayer/ClientPacketListener.java +++ b/net/minecraft/client/multiplayer/ClientPacketListener.java @@ -30,7 +30,7 @@ import net.minecraft.client.ClientRecipeBook; import net.minecraft.client.DebugQueryHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; -import net.minecraft.client.gui.components.ChatComponent.State; +import net.minecraft.client.gui.components.ChatComponent; import net.minecraft.client.gui.components.toasts.RecipeToast; import net.minecraft.client.gui.components.toasts.SystemToast; import net.minecraft.client.gui.screens.DeathScreen; @@ -38,23 +38,20 @@ import net.minecraft.client.gui.screens.DemoIntroScreen; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.gui.screens.ReceivingLevelScreen; import net.minecraft.client.gui.screens.WinScreen; -import net.minecraft.client.gui.screens.DeathScreen.TitleConfirmScreen; -import net.minecraft.client.gui.screens.ReceivingLevelScreen.Reason; import net.minecraft.client.gui.screens.achievement.StatsScreen; import net.minecraft.client.gui.screens.inventory.BookViewScreen; import net.minecraft.client.gui.screens.inventory.CommandBlockEditScreen; import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; import net.minecraft.client.gui.screens.inventory.HorseInventoryScreen; -import net.minecraft.client.gui.screens.inventory.BookViewScreen.BookAccess; import net.minecraft.client.gui.screens.multiplayer.ServerReconfigScreen; import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener; import net.minecraft.client.particle.ItemPickupParticle; import net.minecraft.client.player.KeyboardInput; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.RemotePlayer; -import net.minecraft.client.renderer.debug.BrainDebugRenderer; import net.minecraft.client.renderer.debug.VillageSectionsDebugRenderer; import net.minecraft.client.renderer.debug.WorldGenAttemptRenderer; +import net.minecraft.client.renderer.debug.BrainDebugRenderer.PoiInfo; import net.minecraft.client.resources.sounds.BeeAggressiveSoundInstance; import net.minecraft.client.resources.sounds.BeeFlyingSoundInstance; import net.minecraft.client.resources.sounds.BeeSoundInstance; @@ -67,9 +64,9 @@ import net.minecraft.commands.arguments.ArgumentSignatures; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistrySynchronization; import net.minecraft.core.SectionPos; +import net.minecraft.core.RegistryAccess.Frozen; import net.minecraft.core.component.DataComponents; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; @@ -243,14 +240,15 @@ import net.minecraft.network.protocol.game.ServerboundChatSessionUpdatePacket; import net.minecraft.network.protocol.game.ServerboundChunkBatchReceivedPacket; import net.minecraft.network.protocol.game.ServerboundClientCommandPacket; import net.minecraft.network.protocol.game.ServerboundConfigurationAcknowledgedPacket; -import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; import net.minecraft.network.protocol.game.ServerboundMoveVehiclePacket; +import net.minecraft.network.protocol.game.ServerboundPlayerLoadedPacket; import net.minecraft.network.protocol.game.VecDeltaCodec; -import net.minecraft.network.protocol.game.ClientboundChunksBiomesPacket.ChunkBiomeData; import net.minecraft.network.protocol.game.ClientboundGameEventPacket.Type; import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket.Parameters; import net.minecraft.network.protocol.game.ClientboundUpdateAttributesPacket.AttributeSnapshot; import net.minecraft.network.protocol.game.ServerboundClientCommandPacket.Action; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.PosRot; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.Rot; import net.minecraft.network.protocol.ping.ClientboundPongResponsePacket; import net.minecraft.network.syncher.SynchedEntityData.DataValue; import net.minecraft.resources.ResourceKey; @@ -261,7 +259,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.stats.Stat; import net.minecraft.stats.StatsCounter; -import net.minecraft.tags.TagNetworkSerialization; +import net.minecraft.tags.TagNetworkSerialization.NetworkPayload; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.util.SignatureValidator; @@ -307,7 +305,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.crafting.RecipeAccess; -import net.minecraft.world.item.crafting.SelectableRecipe; +import net.minecraft.world.item.crafting.SelectableRecipe.SingleInputSet; import net.minecraft.world.item.crafting.display.RecipeDisplayId; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.GameType; @@ -366,10 +364,10 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme */ private final RandomSource random = RandomSource.createThreadSafe(); private CommandDispatcher commands = new CommandDispatcher<>(); - private ClientRecipeContainer recipes = new ClientRecipeContainer(Map.of(), SelectableRecipe.SingleInputSet.empty()); + private ClientRecipeContainer recipes = new ClientRecipeContainer(Map.of(), SingleInputSet.empty()); private final UUID id = UUID.randomUUID(); private Set> levels; - private final RegistryAccess.Frozen registryAccess; + private final Frozen registryAccess; private final FeatureFlagSet enabledFeatures; private final PotionBrewing potionBrewing; private FuelValues fuelValues; @@ -459,7 +457,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme commonPlayerSpawnInfo.seed(), i ); - this.minecraft.setLevel(this.level, Reason.OTHER); + this.minecraft.setLevel(this.level, ReceivingLevelScreen.Reason.OTHER); if (this.minecraft.player == null) { this.minecraft.player = this.minecraft.gameMode.createPlayer(this.level, new StatsCounter(), new ClientRecipeBook()); this.minecraft.player.setYRot(-180.0F); @@ -475,7 +473,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme this.minecraft.player.input = new KeyboardInput(this.minecraft.options); this.minecraft.gameMode.adjustPlayer(this.minecraft.player); this.minecraft.cameraEntity = this.minecraft.player; - this.startWaitingForNewLevel(this.minecraft.player, this.level, Reason.OTHER); + this.startWaitingForNewLevel(this.minecraft.player, this.level, ReceivingLevelScreen.Reason.OTHER); this.minecraft.player.setReducedDebugInfo(packet.reducedDebugInfo()); this.minecraft.player.setShowDeathScreen(packet.showDeathScreen()); this.minecraft.player.setDoLimitedCrafting(packet.doLimitedCrafting()); @@ -619,7 +617,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme setValuesFromPositionPacket(packet.change(), packet.relatives(), this.minecraft.player, false); this.connection .send( - new ServerboundMovePlayerPacket.PosRot( + new PosRot( this.minecraft.player.getX(), this.minecraft.player.getY(), this.minecraft.player.getZ(), @@ -639,7 +637,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme entity.positionRider(this.minecraft.player); this.minecraft.player.setOldPosAndRot(); if (entity.isControlledByOrIsLocalPlayer()) { - this.connection.send(new ServerboundMoveVehiclePacket(entity)); + this.connection.send(ServerboundMoveVehiclePacket.fromEntity(entity)); } } } @@ -667,8 +665,8 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme @Override public void handleSetHeldSlot(ClientboundSetHeldSlotPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); - if (Inventory.isHotbarSlot(packet.getSlot())) { - this.minecraft.player.getInventory().selected = packet.getSlot(); + if (Inventory.isHotbarSlot(packet.slot())) { + this.minecraft.player.getInventory().selected = packet.slot(); } } @@ -742,8 +740,8 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme setValuesFromPositionPacket(packet.change(), packet.relatives(), player, false); } - this.connection.send(new ServerboundMovePlayerPacket.PosRot(player.getX(), player.getY(), player.getZ(), player.getYRot(), player.getXRot(), false, false)); this.connection.send(new ServerboundAcceptTeleportationPacket(packet.id())); + this.connection.send(new PosRot(player.getX(), player.getY(), player.getZ(), player.getYRot(), player.getXRot(), false, false)); } private static boolean setValuesFromPositionPacket(PositionMoveRotation positionMoveRotation, Set relatives, Entity entity, boolean lerp) { @@ -780,7 +778,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme player.setYRot(packet.yRot()); player.setXRot(packet.xRot()); player.setOldRot(); - this.connection.send(new ServerboundMovePlayerPacket.Rot(player.getYRot(), player.getXRot(), false, false)); + this.connection.send(new Rot(player.getYRot(), player.getXRot(), false, false)); } @Override @@ -801,6 +799,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme LevelChunk levelChunk = this.level.getChunkSource().getChunk(i, j, false); if (levelChunk != null) { this.enableChunkLight(levelChunk, i, j); + this.minecraft.levelRenderer.onChunkReadyToRender(levelChunk.getPos()); } }); } @@ -809,15 +808,15 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme public void handleChunksBiomes(ClientboundChunksBiomesPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); - for (ChunkBiomeData chunkBiomeData : packet.chunkBiomeData()) { + for (ClientboundChunksBiomesPacket.ChunkBiomeData chunkBiomeData : packet.chunkBiomeData()) { this.level.getChunkSource().replaceBiomes(chunkBiomeData.pos().x, chunkBiomeData.pos().z, chunkBiomeData.getReadBuffer()); } - for (ChunkBiomeData chunkBiomeData : packet.chunkBiomeData()) { + for (ClientboundChunksBiomesPacket.ChunkBiomeData chunkBiomeData : packet.chunkBiomeData()) { this.level.onChunkLoaded(new ChunkPos(chunkBiomeData.pos().x, chunkBiomeData.pos().z)); } - for (ChunkBiomeData chunkBiomeData : packet.chunkBiomeData()) { + for (ClientboundChunksBiomesPacket.ChunkBiomeData chunkBiomeData : packet.chunkBiomeData()) { for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { for (int k = this.level.getMinSectionY(); k <= this.level.getMaxSectionY(); k++) { @@ -882,7 +881,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); this.minecraft.getChatListener().clearQueue(); this.sendChatAcknowledgement(); - State state = this.minecraft.gui.getChat().storeState(); + ChatComponent.State state = this.minecraft.gui.getChat().storeState(); this.minecraft.clearClientLevel(new ServerReconfigScreen(RECONFIGURE_SCREEN_MESSAGE, this.connection)); this.connection .setupInboundProtocol( @@ -945,9 +944,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme ); } - this.minecraft - .particleEngine - .add(new ItemPickupParticle(this.minecraft.getEntityRenderDispatcher(), this.minecraft.renderBuffers(), this.level, entity, livingEntity)); + this.minecraft.particleEngine.add(new ItemPickupParticle(this.minecraft.getEntityRenderDispatcher(), this.level, entity, livingEntity)); if (entity instanceof ItemEntity itemEntity) { ItemStack itemStack = itemEntity.getItem(); if (!itemStack.isEmpty()) { @@ -1178,7 +1175,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme LocalPlayer localPlayer = this.minecraft.player; ResourceKey resourceKey2 = localPlayer.level().dimension(); boolean bl = resourceKey != resourceKey2; - Reason reason = this.determineLevelLoadingReason(localPlayer.isDeadOrDying(), resourceKey, resourceKey2); + ReceivingLevelScreen.Reason reason = this.determineLevelLoadingReason(localPlayer.isDeadOrDying(), resourceKey, resourceKey2); if (bl) { Map map = this.level.getAllMapData(); boolean bl2 = commonPlayerSpawnInfo.isDebug(); @@ -1253,20 +1250,20 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme localPlayer2.setPortalCooldown(commonPlayerSpawnInfo.portalCooldown()); localPlayer2.spinningEffectIntensity = localPlayer.spinningEffectIntensity; localPlayer2.oSpinningEffectIntensity = localPlayer.oSpinningEffectIntensity; - if (this.minecraft.screen instanceof DeathScreen || this.minecraft.screen instanceof TitleConfirmScreen) { + if (this.minecraft.screen instanceof DeathScreen || this.minecraft.screen instanceof DeathScreen.TitleConfirmScreen) { this.minecraft.setScreen(null); } this.minecraft.gameMode.setLocalMode(commonPlayerSpawnInfo.gameType(), commonPlayerSpawnInfo.previousGameType()); } - private Reason determineLevelLoadingReason(boolean dying, ResourceKey spawnDimension, ResourceKey currentDimension) { - Reason reason = Reason.OTHER; + private ReceivingLevelScreen.Reason determineLevelLoadingReason(boolean dying, ResourceKey spawnDimension, ResourceKey currentDimension) { + ReceivingLevelScreen.Reason reason = ReceivingLevelScreen.Reason.OTHER; if (!dying) { if (spawnDimension == Level.NETHER || currentDimension == Level.NETHER) { - reason = Reason.NETHER_PORTAL; + reason = ReceivingLevelScreen.Reason.NETHER_PORTAL; } else if (spawnDimension == Level.END || currentDimension == Level.END) { - reason = Reason.END_PORTAL; + reason = ReceivingLevelScreen.Reason.END_PORTAL; } } @@ -1502,7 +1499,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme } } - private void startWaitingForNewLevel(LocalPlayer player, ClientLevel level, Reason reason) { + private void startWaitingForNewLevel(LocalPlayer player, ClientLevel level, ReceivingLevelScreen.Reason reason) { this.levelLoadStatusManager = new LevelLoadStatusManager(player, level, this.minecraft.levelRenderer); this.minecraft.setScreen(new ReceivingLevelScreen(this.levelLoadStatusManager::levelReady, reason)); } @@ -1672,7 +1669,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme } } - private Registry.PendingTags updateTags(ResourceKey> registryKey, TagNetworkSerialization.NetworkPayload payload) { + private Registry.PendingTags updateTags(ResourceKey> registryKey, NetworkPayload payload) { Registry registry = this.registryAccess.lookupOrThrow(registryKey); return registry.prepareTagReload(payload.resolve(registry)); } @@ -1780,7 +1777,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme @Override public void handleTitlesClear(ClientboundClearTitlesPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); - this.minecraft.gui.clear(); + this.minecraft.gui.clearTitles(); if (packet.shouldResetTimes()) { this.minecraft.gui.resetTitleTimes(); } @@ -1858,30 +1855,26 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme public void handlePlayerInfoUpdate(ClientboundPlayerInfoUpdatePacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); - for (net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Entry entry : packet.newEntries()) { + for (ClientboundPlayerInfoUpdatePacket.Entry entry : packet.newEntries()) { PlayerInfo playerInfo = new PlayerInfo((GameProfile)Objects.requireNonNull(entry.profile()), this.enforcesSecureChat()); if (this.playerInfoMap.putIfAbsent(entry.profileId(), playerInfo) == null) { this.minecraft.getPlayerSocialManager().addPlayer(playerInfo); } } - for (net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Entry entryx : packet.entries()) { + for (ClientboundPlayerInfoUpdatePacket.Entry entryx : packet.entries()) { PlayerInfo playerInfo = (PlayerInfo)this.playerInfoMap.get(entryx.profileId()); if (playerInfo == null) { LOGGER.warn("Ignoring player info update for unknown player {} ({})", entryx.profileId(), packet.actions()); } else { - for (net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Action action : packet.actions()) { + for (ClientboundPlayerInfoUpdatePacket.Action action : packet.actions()) { this.applyPlayerInfoUpdate(action, entryx, playerInfo); } } } } - private void applyPlayerInfoUpdate( - net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Action action, - net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Entry entry, - PlayerInfo playerInfo - ) { + private void applyPlayerInfoUpdate(ClientboundPlayerInfoUpdatePacket.Action action, ClientboundPlayerInfoUpdatePacket.Entry entry, PlayerInfo playerInfo) { switch (action) { case INITIALIZE_CHAT: this.initializeChatSession(entry, playerInfo); @@ -1906,12 +1899,15 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme case UPDATE_DISPLAY_NAME: playerInfo.setTabListDisplayName(entry.displayName()); break; + case UPDATE_HAT: + playerInfo.setShowHat(entry.showHat()); + break; case UPDATE_LIST_ORDER: playerInfo.setTabListOrder(entry.listOrder()); } } - private void initializeChatSession(net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Entry entry, PlayerInfo playerInfo) { + private void initializeChatSession(ClientboundPlayerInfoUpdatePacket.Entry entry, PlayerInfo playerInfo) { GameProfile gameProfile = playerInfo.getProfile(); SignatureValidator signatureValidator = this.minecraft.getProfileKeySignatureValidator(); if (signatureValidator == null) { @@ -1999,14 +1995,14 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); Entity entity = this.minecraft.player.getRootVehicle(); if (entity != this.minecraft.player && entity.isControlledByLocalInstance()) { - Vec3 vec3 = new Vec3(packet.getX(), packet.getY(), packet.getZ()); + Vec3 vec3 = packet.position(); Vec3 vec32 = new Vec3(entity.lerpTargetX(), entity.lerpTargetY(), entity.lerpTargetZ()); if (vec3.distanceTo(vec32) > 1.0E-5F) { entity.cancelLerp(); - entity.absMoveTo(vec3.x(), vec3.y(), vec3.z(), packet.getYRot(), packet.getXRot()); + entity.absMoveTo(vec3.x(), vec3.y(), vec3.z(), packet.yRot(), packet.xRot()); } - this.connection.send(new ServerboundMoveVehiclePacket(entity)); + this.connection.send(ServerboundMoveVehiclePacket.fromEntity(entity)); } } @@ -2014,7 +2010,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme public void handleOpenBook(ClientboundOpenBookPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.minecraft); ItemStack itemStack = this.minecraft.player.getItemInHand(packet.getHand()); - BookAccess bookAccess = BookAccess.fromItem(itemStack); + BookViewScreen.BookAccess bookAccess = BookViewScreen.BookAccess.fromItem(itemStack); if (bookAccess != null) { this.minecraft.setScreen(new BookViewScreen(bookAccess)); } @@ -2049,9 +2045,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme } else if (payload instanceof PoiTicketCountDebugPayload poiTicketCountDebugPayload) { this.minecraft.debugRenderer.brainDebugRenderer.setFreeTicketCount(poiTicketCountDebugPayload.pos(), poiTicketCountDebugPayload.freeTicketCount()); } else if (payload instanceof PoiAddedDebugPayload poiAddedDebugPayload) { - BrainDebugRenderer.PoiInfo poiInfo = new BrainDebugRenderer.PoiInfo( - poiAddedDebugPayload.pos(), poiAddedDebugPayload.poiType(), poiAddedDebugPayload.freeTicketCount() - ); + PoiInfo poiInfo = new PoiInfo(poiAddedDebugPayload.pos(), poiAddedDebugPayload.poiType(), poiAddedDebugPayload.freeTicketCount()); this.minecraft.debugRenderer.brainDebugRenderer.addPoi(poiInfo); } else if (payload instanceof PoiRemovedDebugPayload poiRemovedDebugPayload) { this.minecraft.debugRenderer.brainDebugRenderer.removePoi(poiRemovedDebugPayload.pos()); @@ -2219,7 +2213,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme double f = packet.getMaxSpeed() * packet.getZDist(); try { - this.level.addParticle(packet.getParticle(), packet.isOverrideLimiter(), packet.getX(), packet.getY(), packet.getZ(), d, e, f); + this.level.addParticle(packet.getParticle(), packet.isOverrideLimiter(), packet.alwaysShow(), packet.getX(), packet.getY(), packet.getZ(), d, e, f); } catch (Throwable var17) { LOGGER.warn("Could not spawn particle effect {}", packet.getParticle()); } @@ -2233,7 +2227,8 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme double m = this.random.nextGaussian() * packet.getMaxSpeed(); try { - this.level.addParticle(packet.getParticle(), packet.isOverrideLimiter(), packet.getX() + g, packet.getY() + h, packet.getZ() + j, k, l, m); + this.level + .addParticle(packet.getParticle(), packet.isOverrideLimiter(), packet.alwaysShow(), packet.getX() + g, packet.getY() + h, packet.getZ() + j, k, l, m); } catch (Throwable var16) { LOGGER.warn("Could not spawn particle effect {}", packet.getParticle()); return; @@ -2467,7 +2462,7 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme return this.levels; } - public RegistryAccess.Frozen registryAccess() { + public Frozen registryAccess() { return this.registryAccess; } @@ -2549,6 +2544,10 @@ public class ClientPacketListener extends ClientCommonPacketListenerImpl impleme this.telemetryManager.tick(); if (this.levelLoadStatusManager != null) { this.levelLoadStatusManager.tick(); + if (this.levelLoadStatusManager.levelReady() && !this.minecraft.player.hasClientLoaded()) { + this.connection.send(new ServerboundPlayerLoadedPacket()); + this.minecraft.player.setClientLoaded(true); + } } } diff --git a/net/minecraft/client/multiplayer/ClientSuggestionProvider.java b/net/minecraft/client/multiplayer/ClientSuggestionProvider.java index b58d5af0..e714b139 100644 --- a/net/minecraft/client/multiplayer/ClientSuggestionProvider.java +++ b/net/minecraft/client/multiplayer/ClientSuggestionProvider.java @@ -20,8 +20,8 @@ import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; +import net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket; import net.minecraft.network.protocol.game.ServerboundCommandSuggestionPacket; -import net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket.Action; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.flag.FeatureFlagSet; @@ -172,7 +172,7 @@ public class ClientSuggestionProvider implements SharedSuggestionProvider { } } - public void modifyCustomCompletions(Action action, List entries) { + public void modifyCustomCompletions(ClientboundCustomChatCompletionsPacket.Action action, List entries) { switch (action) { case ADD: this.customCompletionSuggestions.addAll(entries); diff --git a/net/minecraft/client/multiplayer/MultiPlayerGameMode.java b/net/minecraft/client/multiplayer/MultiPlayerGameMode.java index 3acf0610..490f1b73 100644 --- a/net/minecraft/client/multiplayer/MultiPlayerGameMode.java +++ b/net/minecraft/client/multiplayer/MultiPlayerGameMode.java @@ -26,7 +26,8 @@ import net.minecraft.network.protocol.game.ServerboundContainerButtonClickPacket import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; import net.minecraft.network.protocol.game.ServerboundContainerSlotStateChangedPacket; import net.minecraft.network.protocol.game.ServerboundInteractPacket; -import net.minecraft.network.protocol.game.ServerboundPickItemPacket; +import net.minecraft.network.protocol.game.ServerboundPickItemFromBlockPacket; +import net.minecraft.network.protocol.game.ServerboundPickItemFromEntityPacket; import net.minecraft.network.protocol.game.ServerboundPlaceRecipePacket; import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket; import net.minecraft.network.protocol.game.ServerboundSetCarriedItemPacket; @@ -39,6 +40,8 @@ import net.minecraft.stats.StatsCounter; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResult.Success; +import net.minecraft.world.InteractionResult.TryEmptyHandInteraction; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.HasCustomInventoryScreen; import net.minecraft.world.entity.player.Player; @@ -328,7 +331,7 @@ public class MultiPlayerGameMode { return interactionResult; } - if (interactionResult instanceof InteractionResult.TryEmptyHandInteraction && hand == InteractionHand.MAIN_HAND) { + if (interactionResult instanceof TryEmptyHandInteraction && hand == InteractionHand.MAIN_HAND) { InteractionResult interactionResult2 = blockState.useWithoutItem(this.minecraft.level, player, result); if (interactionResult2.consumesAction()) { return interactionResult2; @@ -369,7 +372,7 @@ public class MultiPlayerGameMode { } else { InteractionResult interactionResult = itemStack.use(this.minecraft.level, player, hand); ItemStack itemStack2; - if (interactionResult instanceof InteractionResult.Success success) { + if (interactionResult instanceof Success success) { itemStack2 = (ItemStack)Objects.requireNonNullElseGet(success.heldItemTransformedTo(), () -> player.getItemInHand(hand)); } else { itemStack2 = player.getItemInHand(hand); @@ -545,8 +548,12 @@ public class MultiPlayerGameMode { return this.destroyProgress > 0.0F ? (int)(this.destroyProgress * 10.0F) : -1; } - public void handlePickItem(int index) { - this.connection.send(new ServerboundPickItemPacket(index)); + public void handlePickItemFromBlock(BlockPos pos, boolean includeData) { + this.connection.send(new ServerboundPickItemFromBlockPacket(pos, includeData)); + } + + public void handlePickItemFromEntity(Entity entity, boolean includeData) { + this.connection.send(new ServerboundPickItemFromEntityPacket(entity.getId(), includeData)); } public void handleSlotStateChanged(int slotId, int containerId, boolean newState) { diff --git a/net/minecraft/client/multiplayer/PlayerInfo.java b/net/minecraft/client/multiplayer/PlayerInfo.java index 085b23e0..151bc229 100644 --- a/net/minecraft/client/multiplayer/PlayerInfo.java +++ b/net/minecraft/client/multiplayer/PlayerInfo.java @@ -2,6 +2,7 @@ package net.minecraft.client.multiplayer; import com.google.common.base.Suppliers; import com.mojang.authlib.GameProfile; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Supplier; import net.fabricmc.api.EnvType; @@ -32,6 +33,7 @@ public class PlayerInfo { */ @Nullable private Component tabListDisplayName; + private boolean showHat = true; @Nullable private RemoteChatSession chatSession; private SignedMessageValidator messageValidator; @@ -47,11 +49,11 @@ public class PlayerInfo { private static Supplier createSkinLookup(GameProfile profile) { Minecraft minecraft = Minecraft.getInstance(); SkinManager skinManager = minecraft.getSkinManager(); - CompletableFuture completableFuture = skinManager.getOrLoad(profile); + CompletableFuture> completableFuture = skinManager.getOrLoad(profile); boolean bl = !minecraft.isLocalPlayer(profile.getId()); PlayerSkin playerSkin = DefaultPlayerSkin.get(profile); return () -> { - PlayerSkin playerSkin2 = (PlayerSkin)completableFuture.getNow(playerSkin); + PlayerSkin playerSkin2 = (PlayerSkin)((Optional)completableFuture.getNow(Optional.empty())).orElse(playerSkin); return bl && !playerSkin2.secure() ? playerSkin : playerSkin2; }; } @@ -124,6 +126,14 @@ public class PlayerInfo { return this.tabListDisplayName; } + public void setShowHat(boolean showHat) { + this.showHat = showHat; + } + + public boolean showHat() { + return this.showHat; + } + public void setTabListOrder(int tabListOrder) { this.tabListOrder = tabListOrder; } diff --git a/net/minecraft/client/multiplayer/chat/report/ChatReport.java b/net/minecraft/client/multiplayer/chat/report/ChatReport.java index cbbd9bcd..4535f645 100644 --- a/net/minecraft/client/multiplayer/chat/report/ChatReport.java +++ b/net/minecraft/client/multiplayer/chat/report/ChatReport.java @@ -20,7 +20,9 @@ import net.fabricmc.api.Environment; import net.minecraft.Optionull; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.reporting.ChatReportScreen; -import net.minecraft.client.multiplayer.chat.LoggedChatMessage; +import net.minecraft.client.multiplayer.chat.LoggedChatMessage.Player; +import net.minecraft.client.multiplayer.chat.report.Report.CannotBuildReason; +import net.minecraft.client.multiplayer.chat.report.Report.Result; import net.minecraft.network.chat.MessageSignature; import net.minecraft.network.chat.SignedMessageBody; import net.minecraft.network.chat.SignedMessageLink; @@ -31,8 +33,8 @@ import org.jetbrains.annotations.Nullable; public class ChatReport extends Report { final IntSet reportedMessages = new IntOpenHashSet(); - ChatReport(UUID reportId, Instant createdAt, UUID reportedProfileId) { - super(reportId, createdAt, reportedProfileId); + ChatReport(UUID uUID, Instant instant, UUID uUID2) { + super(uUID, instant, uUID2); } public void toggleReported(int id, AbuseReportLimits limits) { @@ -58,7 +60,7 @@ public class ChatReport extends Report { } @Environment(EnvType.CLIENT) - public static class Builder extends Report.Builder { + public static class Builder extends net.minecraft.client.multiplayer.chat.report.Report.Builder { public Builder(ChatReport report, AbuseReportLimits limits) { super(report, limits); } @@ -86,21 +88,21 @@ public class ChatReport extends Report { @Nullable @Override - public Report.CannotBuildReason checkBuildable() { + public CannotBuildReason checkBuildable() { if (this.report.reportedMessages.isEmpty()) { - return Report.CannotBuildReason.NO_REPORTED_MESSAGES; + return CannotBuildReason.NO_REPORTED_MESSAGES; } else if (this.report.reportedMessages.size() > this.limits.maxReportedMessageCount()) { - return Report.CannotBuildReason.TOO_MANY_MESSAGES; + return CannotBuildReason.TOO_MANY_MESSAGES; } else if (this.report.reason == null) { - return Report.CannotBuildReason.NO_REASON; + return CannotBuildReason.NO_REASON; } else { - return this.report.comments.length() > this.limits.maxOpinionCommentsLength() ? Report.CannotBuildReason.COMMENT_TOO_LONG : super.checkBuildable(); + return this.report.comments.length() > this.limits.maxOpinionCommentsLength() ? CannotBuildReason.COMMENT_TOO_LONG : super.checkBuildable(); } } @Override - public Either build(ReportingContext reportingContext) { - Report.CannotBuildReason cannotBuildReason = this.checkBuildable(); + public Either build(ReportingContext reportingContext) { + CannotBuildReason cannotBuildReason = this.checkBuildable(); if (cannotBuildReason != null) { return Either.right(cannotBuildReason); } else { @@ -108,7 +110,7 @@ public class ChatReport extends Report { ReportEvidence reportEvidence = this.buildEvidence(reportingContext); ReportedEntity reportedEntity = new ReportedEntity(this.report.reportedProfileId); AbuseReport abuseReport = AbuseReport.chat(this.report.comments, string, reportEvidence, reportedEntity, this.report.createdAt); - return Either.left(new Report.Result(this.report.reportId, ReportType.CHAT, abuseReport)); + return Either.left(new Result(this.report.reportId, ReportType.CHAT, abuseReport)); } } @@ -121,7 +123,7 @@ public class ChatReport extends Report { return new ReportEvidence(Lists.reverse(list)); } - private ReportChatMessage buildReportedChatMessage(LoggedChatMessage.Player chatMessage, boolean messageReported) { + private ReportChatMessage buildReportedChatMessage(Player chatMessage, boolean messageReported) { SignedMessageLink signedMessageLink = chatMessage.message().link(); SignedMessageBody signedMessageBody = chatMessage.message().signedBody(); List list = signedMessageBody.lastSeen().entries().stream().map(MessageSignature::asByteBuffer).toList(); diff --git a/net/minecraft/client/multiplayer/chat/report/ReportEnvironment.java b/net/minecraft/client/multiplayer/chat/report/ReportEnvironment.java index 80e1953f..d0bc2103 100644 --- a/net/minecraft/client/multiplayer/chat/report/ReportEnvironment.java +++ b/net/minecraft/client/multiplayer/chat/report/ReportEnvironment.java @@ -46,7 +46,7 @@ public record ReportEnvironment(String clientVersion, @Nullable ReportEnvironmen private static String getClientVersion() { StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("1.21.3"); + stringBuilder.append("1.21.4"); if (Minecraft.checkModStatus().shouldReportAsModified()) { stringBuilder.append(" (modded)"); } diff --git a/net/minecraft/client/particle/BreakingItemParticle.java b/net/minecraft/client/particle/BreakingItemParticle.java index 558b2039..96180a6c 100644 --- a/net/minecraft/client/particle/BreakingItemParticle.java +++ b/net/minecraft/client/particle/BreakingItemParticle.java @@ -4,8 +4,14 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.particles.ItemParticleOption; +import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -14,8 +20,8 @@ public class BreakingItemParticle extends TextureSheetParticle { private final float uo; private final float vo; - BreakingItemParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, ItemStack stack) { - this(level, x, y, z, stack); + BreakingItemParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, ItemStackRenderState renderState) { + this(level, x, y, z, renderState); this.xd *= 0.1F; this.yd *= 0.1F; this.zd *= 0.1F; @@ -29,9 +35,15 @@ public class BreakingItemParticle extends TextureSheetParticle { return ParticleRenderType.TERRAIN_SHEET; } - protected BreakingItemParticle(ClientLevel level, double x, double y, double z, ItemStack stack) { + protected BreakingItemParticle(ClientLevel level, double x, double y, double z, ItemStackRenderState renderState) { super(level, x, y, z, 0.0, 0.0, 0.0); - this.setSprite(Minecraft.getInstance().getItemRenderer().getModel(stack, level, null, 0).getParticleIcon()); + TextureAtlasSprite textureAtlasSprite = renderState.pickParticleIcon(this.random); + if (textureAtlasSprite != null) { + this.setSprite(textureAtlasSprite); + } else { + this.setSprite((TextureAtlasSprite)Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS).apply(MissingTextureAtlasSprite.getLocation())); + } + this.gravity = 1.0F; this.quadSize /= 2.0F; this.uo = this.random.nextFloat() * 3.0F; @@ -59,30 +71,40 @@ public class BreakingItemParticle extends TextureSheetParticle { } @Environment(EnvType.CLIENT) - public static class CobwebProvider implements ParticleProvider { + public static class CobwebProvider extends BreakingItemParticle.ItemParticleProvider { public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { - return new BreakingItemParticle(clientLevel, d, e, f, new ItemStack(Items.COBWEB)); + return new BreakingItemParticle(clientLevel, d, e, f, this.calculateState(new ItemStack(Items.COBWEB), clientLevel)); } } @Environment(EnvType.CLIENT) - public static class Provider implements ParticleProvider { + public abstract static class ItemParticleProvider implements ParticleProvider { + private final ItemStackRenderState scratchRenderState = new ItemStackRenderState(); + + protected ItemStackRenderState calculateState(ItemStack stack, ClientLevel level) { + Minecraft.getInstance().getItemModelResolver().updateForTopItem(this.scratchRenderState, stack, ItemDisplayContext.GROUND, false, level, null, 0); + return this.scratchRenderState; + } + } + + @Environment(EnvType.CLIENT) + public static class Provider extends BreakingItemParticle.ItemParticleProvider { public Particle createParticle(ItemParticleOption type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new BreakingItemParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, type.getItem()); + return new BreakingItemParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, this.calculateState(type.getItem(), level)); } } @Environment(EnvType.CLIENT) - public static class SlimeProvider implements ParticleProvider { + public static class SlimeProvider extends BreakingItemParticle.ItemParticleProvider { public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new BreakingItemParticle(level, x, y, z, new ItemStack(Items.SLIME_BALL)); + return new BreakingItemParticle(level, x, y, z, this.calculateState(new ItemStack(Items.SLIME_BALL), level)); } } @Environment(EnvType.CLIENT) - public static class SnowballProvider implements ParticleProvider { + public static class SnowballProvider extends BreakingItemParticle.ItemParticleProvider { public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new BreakingItemParticle(level, x, y, z, new ItemStack(Items.SNOWBALL)); + return new BreakingItemParticle(level, x, y, z, this.calculateState(new ItemStack(Items.SNOWBALL), level)); } } } diff --git a/net/minecraft/client/particle/BubbleColumnUpParticle.java b/net/minecraft/client/particle/BubbleColumnUpParticle.java index b395f0a8..ed167d15 100644 --- a/net/minecraft/client/particle/BubbleColumnUpParticle.java +++ b/net/minecraft/client/particle/BubbleColumnUpParticle.java @@ -9,15 +9,15 @@ import net.minecraft.tags.FluidTags; @Environment(EnvType.CLIENT) public class BubbleColumnUpParticle extends TextureSheetParticle { - BubbleColumnUpParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z); + BubbleColumnUpParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f); this.gravity = -0.125F; this.friction = 0.85F; this.setSize(0.02F, 0.02F); this.quadSize = this.quadSize * (this.random.nextFloat() * 0.6F + 0.2F); - this.xd = xSpeed * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; - this.yd = ySpeed * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; - this.zd = zSpeed * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; + this.xd = g * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; + this.yd = h * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; + this.zd = i * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; this.lifetime = (int)(40.0 / (Math.random() * 0.8 + 0.2)); } diff --git a/net/minecraft/client/particle/BubbleParticle.java b/net/minecraft/client/particle/BubbleParticle.java index 164d0cdf..98c149b8 100644 --- a/net/minecraft/client/particle/BubbleParticle.java +++ b/net/minecraft/client/particle/BubbleParticle.java @@ -9,13 +9,13 @@ import net.minecraft.tags.FluidTags; @Environment(EnvType.CLIENT) public class BubbleParticle extends TextureSheetParticle { - BubbleParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z); + BubbleParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f); this.setSize(0.02F, 0.02F); this.quadSize = this.quadSize * (this.random.nextFloat() * 0.6F + 0.2F); - this.xd = xSpeed * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; - this.yd = ySpeed * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; - this.zd = zSpeed * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; + this.xd = g * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; + this.yd = h * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; + this.zd = i * 0.2F + (Math.random() * 2.0 - 1.0) * 0.02F; this.lifetime = (int)(8.0 / (Math.random() * 0.8 + 0.2)); } diff --git a/net/minecraft/client/particle/CherryParticle.java b/net/minecraft/client/particle/CherryParticle.java deleted file mode 100644 index 40b0dfe6..00000000 --- a/net/minecraft/client/particle/CherryParticle.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.minecraft.client.particle; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.multiplayer.ClientLevel; - -@Environment(EnvType.CLIENT) -public class CherryParticle extends TextureSheetParticle { - private static final float ACCELERATION_SCALE = 0.0025F; - private static final int INITIAL_LIFETIME = 300; - private static final int CURVE_ENDPOINT_TIME = 300; - private static final float FALL_ACC = 0.25F; - private static final float WIND_BIG = 2.0F; - private float rotSpeed; - private final float particleRandom; - private final float spinAcceleration; - - protected CherryParticle(ClientLevel level, double x, double y, double z, SpriteSet spriteSet) { - super(level, x, y, z); - this.setSprite(spriteSet.get(this.random.nextInt(12), 12)); - this.rotSpeed = (float)Math.toRadians(this.random.nextBoolean() ? -30.0 : 30.0); - this.particleRandom = this.random.nextFloat(); - this.spinAcceleration = (float)Math.toRadians(this.random.nextBoolean() ? -5.0 : 5.0); - this.lifetime = 300; - this.gravity = 7.5E-4F; - float f = this.random.nextBoolean() ? 0.05F : 0.075F; - this.quadSize = f; - this.setSize(f, f); - this.friction = 1.0F; - } - - @Override - public ParticleRenderType getRenderType() { - return ParticleRenderType.PARTICLE_SHEET_OPAQUE; - } - - @Override - public void tick() { - this.xo = this.x; - this.yo = this.y; - this.zo = this.z; - if (this.lifetime-- <= 0) { - this.remove(); - } - - if (!this.removed) { - float f = 300 - this.lifetime; - float g = Math.min(f / 300.0F, 1.0F); - double d = Math.cos(Math.toRadians(this.particleRandom * 60.0F)) * 2.0 * Math.pow(g, 1.25); - double e = Math.sin(Math.toRadians(this.particleRandom * 60.0F)) * 2.0 * Math.pow(g, 1.25); - this.xd += d * 0.0025F; - this.zd += e * 0.0025F; - this.yd = this.yd - this.gravity; - this.rotSpeed = this.rotSpeed + this.spinAcceleration / 20.0F; - this.oRoll = this.roll; - this.roll = this.roll + this.rotSpeed / 20.0F; - this.move(this.xd, this.yd, this.zd); - if (this.onGround || this.lifetime < 299 && (this.xd == 0.0 || this.zd == 0.0)) { - this.remove(); - } - - if (!this.removed) { - this.xd = this.xd * this.friction; - this.yd = this.yd * this.friction; - this.zd = this.zd * this.friction; - } - } - } -} diff --git a/net/minecraft/client/particle/CritParticle.java b/net/minecraft/client/particle/CritParticle.java index c14529b2..001f76fa 100644 --- a/net/minecraft/client/particle/CritParticle.java +++ b/net/minecraft/client/particle/CritParticle.java @@ -8,20 +8,20 @@ import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) public class CritParticle extends TextureSheetParticle { - CritParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, 0.0, 0.0, 0.0); + CritParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, 0.0, 0.0, 0.0); this.friction = 0.7F; this.gravity = 0.5F; this.xd *= 0.1F; this.yd *= 0.1F; this.zd *= 0.1F; - this.xd += xSpeed * 0.4; - this.yd += ySpeed * 0.4; - this.zd += zSpeed * 0.4; - float f = (float)(Math.random() * 0.3F + 0.6F); - this.rCol = f; - this.gCol = f; - this.bCol = f; + this.xd += g * 0.4; + this.yd += h * 0.4; + this.zd += i * 0.4; + float j = (float)(Math.random() * 0.3F + 0.6F); + this.rCol = j; + this.gCol = j; + this.bCol = j; this.quadSize *= 0.75F; this.lifetime = Math.max((int)(6.0 / (Math.random() * 0.8 + 0.6)), 1); this.hasPhysics = false; diff --git a/net/minecraft/client/particle/DripParticle.java b/net/minecraft/client/particle/DripParticle.java index 47468731..81be8a0c 100644 --- a/net/minecraft/client/particle/DripParticle.java +++ b/net/minecraft/client/particle/DripParticle.java @@ -310,8 +310,8 @@ public class DripParticle extends TextureSheetParticle { @Environment(EnvType.CLIENT) static class FallingParticle extends DripParticle { - FallingParticle(ClientLevel level, double x, double y, double z, Fluid type) { - this(level, x, y, z, type, (int)(64.0 / (Math.random() * 0.8 + 0.2))); + FallingParticle(ClientLevel clientLevel, double d, double e, double f, Fluid fluid) { + this(clientLevel, d, e, f, fluid, (int)(64.0 / (Math.random() * 0.8 + 0.2))); } FallingParticle(ClientLevel level, double x, double y, double z, Fluid type, int lifetime) { diff --git a/net/minecraft/client/particle/DustColorTransitionParticle.java b/net/minecraft/client/particle/DustColorTransitionParticle.java index 9e62d53f..9d362f0c 100644 --- a/net/minecraft/client/particle/DustColorTransitionParticle.java +++ b/net/minecraft/client/particle/DustColorTransitionParticle.java @@ -35,9 +35,9 @@ public class DustColorTransitionParticle extends DustParticleBase { + private final SpriteSet sprites; + + public CherryProvider(SpriteSet sprites) { + this.sprites = sprites; + } + + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new FallingLeavesParticle(clientLevel, d, e, f, this.sprites, 0.25F, 2.0F, false, true, 1.0F, 0.0F); + } + } + + @Environment(EnvType.CLIENT) + public static class PaleOakProvider implements ParticleProvider { + private final SpriteSet sprites; + + public PaleOakProvider(SpriteSet sprites) { + this.sprites = sprites; + } + + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new FallingLeavesParticle(clientLevel, d, e, f, this.sprites, 0.07F, 10.0F, true, false, 2.0F, 0.021F); + } + } +} diff --git a/net/minecraft/client/particle/FireworkParticles.java b/net/minecraft/client/particle/FireworkParticles.java index 591ce628..e1cc7490 100644 --- a/net/minecraft/client/particle/FireworkParticles.java +++ b/net/minecraft/client/particle/FireworkParticles.java @@ -18,6 +18,7 @@ import net.minecraft.util.ARGB; import net.minecraft.util.Mth; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.component.FireworkExplosion; +import net.minecraft.world.item.component.FireworkExplosion.Shape; @Environment(EnvType.CLIENT) public class FireworkParticles { @@ -38,8 +39,8 @@ public class FireworkParticles { @Environment(EnvType.CLIENT) public static class OverlayParticle extends TextureSheetParticle { - OverlayParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z); + OverlayParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f); this.lifetime = 4; } @@ -49,9 +50,9 @@ public class FireworkParticles { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { - this.setAlpha(0.6F - (this.age + partialTicks - 1.0F) * 0.25F * 0.5F); - super.render(buffer, camera, partialTicks); + public void render(VertexConsumer buffer, Camera camera, float partialTick) { + this.setAlpha(0.6F - (this.age + partialTick - 1.0F) * 0.25F * 0.5F); + super.render(buffer, camera, partialTick); } @Override @@ -90,9 +91,9 @@ public class FireworkParticles { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { + public void render(VertexConsumer buffer, Camera camera, float partialTick) { if (!this.twinkle || this.age < this.lifetime / 3 || (this.age + this.lifetime) / 3 % 2 == 0) { - super.render(buffer, camera, partialTicks); + super.render(buffer, camera, partialTick); } } @@ -185,7 +186,7 @@ public class FireworkParticles { bl2 = true; } else { for (FireworkExplosion fireworkExplosion : this.explosions) { - if (fireworkExplosion.shape() == FireworkExplosion.Shape.LARGE_BALL) { + if (fireworkExplosion.shape() == Shape.LARGE_BALL) { bl2 = true; break; } diff --git a/net/minecraft/client/particle/FlameParticle.java b/net/minecraft/client/particle/FlameParticle.java index 04b18c61..f43e407e 100644 --- a/net/minecraft/client/particle/FlameParticle.java +++ b/net/minecraft/client/particle/FlameParticle.java @@ -8,8 +8,8 @@ import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) public class FlameParticle extends RisingParticle { - FlameParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed); + FlameParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, g, h, i); } @Override @@ -67,8 +67,8 @@ public class FlameParticle extends RisingParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - FlameParticle flameParticle = new FlameParticle(level, x, y, z, xSpeed, ySpeed, zSpeed); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + FlameParticle flameParticle = new FlameParticle(clientLevel, d, e, f, g, h, i); flameParticle.pickSprite(this.sprite); flameParticle.scale(0.5F); return flameParticle; diff --git a/net/minecraft/client/particle/FlyStraightTowardsParticle.java b/net/minecraft/client/particle/FlyStraightTowardsParticle.java index 11e15484..ba858209 100644 --- a/net/minecraft/client/particle/FlyStraightTowardsParticle.java +++ b/net/minecraft/client/particle/FlyStraightTowardsParticle.java @@ -77,9 +77,9 @@ public class FlyStraightTowardsParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - FlyStraightTowardsParticle flyStraightTowardsParticle = new FlyStraightTowardsParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, -12210434, -1); - flyStraightTowardsParticle.scale(Mth.randomBetween(level.getRandom(), 3.0F, 5.0F)); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + FlyStraightTowardsParticle flyStraightTowardsParticle = new FlyStraightTowardsParticle(clientLevel, d, e, f, g, h, i, -12210434, -1); + flyStraightTowardsParticle.scale(Mth.randomBetween(clientLevel.getRandom(), 3.0F, 5.0F)); flyStraightTowardsParticle.pickSprite(this.sprite); return flyStraightTowardsParticle; } diff --git a/net/minecraft/client/particle/FlyTowardsPositionParticle.java b/net/minecraft/client/particle/FlyTowardsPositionParticle.java index d9d5df6e..1409f860 100644 --- a/net/minecraft/client/particle/FlyTowardsPositionParticle.java +++ b/net/minecraft/client/particle/FlyTowardsPositionParticle.java @@ -5,7 +5,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.particle.Particle.LifetimeAlpha; import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) @@ -14,14 +13,14 @@ public class FlyTowardsPositionParticle extends TextureSheetParticle { private final double yStart; private final double zStart; private final boolean isGlowing; - private final LifetimeAlpha lifetimeAlpha; + private final Particle.LifetimeAlpha lifetimeAlpha; - FlyTowardsPositionParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - this(level, x, y, z, xSpeed, ySpeed, zSpeed, false, LifetimeAlpha.ALWAYS_OPAQUE); + FlyTowardsPositionParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + this(clientLevel, d, e, f, g, h, i, false, Particle.LifetimeAlpha.ALWAYS_OPAQUE); } FlyTowardsPositionParticle( - ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, boolean isGlowing, LifetimeAlpha lifetimeAlpha + ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, boolean isGlowing, Particle.LifetimeAlpha lifetimeAlpha ) { super(level, x, y, z); this.isGlowing = isGlowing; @@ -99,9 +98,9 @@ public class FlyTowardsPositionParticle extends TextureSheetParticle { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { - this.setAlpha(this.lifetimeAlpha.currentAlphaForAge(this.age, this.lifetime, partialTicks)); - super.render(buffer, camera, partialTicks); + public void render(VertexConsumer buffer, Camera camera, float partialTick) { + this.setAlpha(this.lifetimeAlpha.currentAlphaForAge(this.age, this.lifetime, partialTick)); + super.render(buffer, camera, partialTick); } @Environment(EnvType.CLIENT) @@ -112,8 +111,8 @@ public class FlyTowardsPositionParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - FlyTowardsPositionParticle flyTowardsPositionParticle = new FlyTowardsPositionParticle(level, x, y, z, xSpeed, ySpeed, zSpeed); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + FlyTowardsPositionParticle flyTowardsPositionParticle = new FlyTowardsPositionParticle(clientLevel, d, e, f, g, h, i); flyTowardsPositionParticle.pickSprite(this.sprite); return flyTowardsPositionParticle; } @@ -127,8 +126,8 @@ public class FlyTowardsPositionParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - FlyTowardsPositionParticle flyTowardsPositionParticle = new FlyTowardsPositionParticle(level, x, y, z, xSpeed, ySpeed, zSpeed); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + FlyTowardsPositionParticle flyTowardsPositionParticle = new FlyTowardsPositionParticle(clientLevel, d, e, f, g, h, i); flyTowardsPositionParticle.pickSprite(this.sprite); return flyTowardsPositionParticle; } @@ -142,9 +141,9 @@ public class FlyTowardsPositionParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { FlyTowardsPositionParticle flyTowardsPositionParticle = new FlyTowardsPositionParticle( - level, x, y, z, xSpeed, ySpeed, zSpeed, true, new LifetimeAlpha(0.0F, 0.6F, 0.25F, 1.0F) + clientLevel, d, e, f, g, h, i, true, new Particle.LifetimeAlpha(0.0F, 0.6F, 0.25F, 1.0F) ); flyTowardsPositionParticle.scale(1.5F); flyTowardsPositionParticle.pickSprite(this.sprite); diff --git a/net/minecraft/client/particle/GlowParticle.java b/net/minecraft/client/particle/GlowParticle.java index 9e878f4f..d84203bc 100644 --- a/net/minecraft/client/particle/GlowParticle.java +++ b/net/minecraft/client/particle/GlowParticle.java @@ -57,13 +57,13 @@ public class GlowParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - GlowParticle glowParticle = new GlowParticle(level, x, y, z, 0.0, 0.0, 0.0, this.sprite); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + GlowParticle glowParticle = new GlowParticle(clientLevel, d, e, f, 0.0, 0.0, 0.0, this.sprite); glowParticle.setColor(1.0F, 0.9F, 1.0F); - glowParticle.setParticleSpeed(xSpeed * 0.25, ySpeed * 0.25, zSpeed * 0.25); - int i = 2; - int j = 4; - glowParticle.setLifetime(level.random.nextInt(2) + 2); + glowParticle.setParticleSpeed(g * 0.25, h * 0.25, i * 0.25); + int j = 2; + int k = 4; + glowParticle.setLifetime(clientLevel.random.nextInt(2) + 2); return glowParticle; } } @@ -76,23 +76,23 @@ public class GlowParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { GlowParticle glowParticle = new GlowParticle( - level, x, y, z, 0.5 - GlowParticle.RANDOM.nextDouble(), ySpeed, 0.5 - GlowParticle.RANDOM.nextDouble(), this.sprite + clientLevel, d, e, f, 0.5 - GlowParticle.RANDOM.nextDouble(), h, 0.5 - GlowParticle.RANDOM.nextDouble(), this.sprite ); - if (level.random.nextBoolean()) { + if (clientLevel.random.nextBoolean()) { glowParticle.setColor(0.6F, 1.0F, 0.8F); } else { glowParticle.setColor(0.08F, 0.4F, 0.4F); } glowParticle.yd *= 0.2F; - if (xSpeed == 0.0 && zSpeed == 0.0) { + if (g == 0.0 && i == 0.0) { glowParticle.xd *= 0.1F; glowParticle.zd *= 0.1F; } - glowParticle.setLifetime((int)(8.0 / (level.random.nextDouble() * 0.8 + 0.2))); + glowParticle.setLifetime((int)(8.0 / (clientLevel.random.nextDouble() * 0.8 + 0.2))); return glowParticle; } } @@ -106,18 +106,18 @@ public class GlowParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - GlowParticle glowParticle = new GlowParticle(level, x, y, z, 0.0, 0.0, 0.0, this.sprite); - if (level.random.nextBoolean()) { + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + GlowParticle glowParticle = new GlowParticle(clientLevel, d, e, f, 0.0, 0.0, 0.0, this.sprite); + if (clientLevel.random.nextBoolean()) { glowParticle.setColor(0.29F, 0.58F, 0.51F); } else { glowParticle.setColor(0.43F, 0.77F, 0.62F); } - glowParticle.setParticleSpeed(xSpeed * 0.01, ySpeed * 0.01, zSpeed * 0.01); - int i = 10; - int j = 40; - glowParticle.setLifetime(level.random.nextInt(30) + 10); + glowParticle.setParticleSpeed(g * 0.01, h * 0.01, i * 0.01); + int j = 10; + int k = 40; + glowParticle.setLifetime(clientLevel.random.nextInt(30) + 10); return glowParticle; } } @@ -131,13 +131,13 @@ public class GlowParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - GlowParticle glowParticle = new GlowParticle(level, x, y, z, 0.0, 0.0, 0.0, this.sprite); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + GlowParticle glowParticle = new GlowParticle(clientLevel, d, e, f, 0.0, 0.0, 0.0, this.sprite); glowParticle.setColor(1.0F, 0.9F, 1.0F); - glowParticle.setParticleSpeed(xSpeed * 0.01 / 2.0, ySpeed * 0.01, zSpeed * 0.01 / 2.0); - int i = 10; - int j = 40; - glowParticle.setLifetime(level.random.nextInt(30) + 10); + glowParticle.setParticleSpeed(g * 0.01 / 2.0, h * 0.01, i * 0.01 / 2.0); + int j = 10; + int k = 40; + glowParticle.setLifetime(clientLevel.random.nextInt(30) + 10); return glowParticle; } } @@ -151,13 +151,13 @@ public class GlowParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - GlowParticle glowParticle = new GlowParticle(level, x, y, z, 0.0, 0.0, 0.0, this.sprite); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + GlowParticle glowParticle = new GlowParticle(clientLevel, d, e, f, 0.0, 0.0, 0.0, this.sprite); glowParticle.setColor(0.91F, 0.55F, 0.08F); - glowParticle.setParticleSpeed(xSpeed * 0.01 / 2.0, ySpeed * 0.01, zSpeed * 0.01 / 2.0); - int i = 10; - int j = 40; - glowParticle.setLifetime(level.random.nextInt(30) + 10); + glowParticle.setParticleSpeed(g * 0.01 / 2.0, h * 0.01, i * 0.01 / 2.0); + int j = 10; + int k = 40; + glowParticle.setLifetime(clientLevel.random.nextInt(30) + 10); return glowParticle; } } diff --git a/net/minecraft/client/particle/GustParticle.java b/net/minecraft/client/particle/GustParticle.java index f504b34a..8c5d6092 100644 --- a/net/minecraft/client/particle/GustParticle.java +++ b/net/minecraft/client/particle/GustParticle.java @@ -45,8 +45,8 @@ public class GustParticle extends TextureSheetParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new GustParticle(level, x, y, z, this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new GustParticle(clientLevel, d, e, f, this.sprites); } } @@ -58,8 +58,8 @@ public class GustParticle extends TextureSheetParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - Particle particle = new GustParticle(level, x, y, z, this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + Particle particle = new GustParticle(clientLevel, d, e, f, this.sprites); particle.scale(0.15F); return particle; } diff --git a/net/minecraft/client/particle/GustSeedParticle.java b/net/minecraft/client/particle/GustSeedParticle.java index b00ea8b1..b827993e 100644 --- a/net/minecraft/client/particle/GustSeedParticle.java +++ b/net/minecraft/client/particle/GustSeedParticle.java @@ -46,8 +46,8 @@ public class GustSeedParticle extends NoRenderParticle { this.tickDelayInBetween = tickDelayInBetween; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new GustSeedParticle(level, x, y, z, this.scale, this.lifetime, this.tickDelayInBetween); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new GustSeedParticle(clientLevel, d, e, f, this.scale, this.lifetime, this.tickDelayInBetween); } } } diff --git a/net/minecraft/client/particle/HeartParticle.java b/net/minecraft/client/particle/HeartParticle.java index eece9177..e54f7526 100644 --- a/net/minecraft/client/particle/HeartParticle.java +++ b/net/minecraft/client/particle/HeartParticle.java @@ -8,8 +8,8 @@ import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) public class HeartParticle extends TextureSheetParticle { - HeartParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z, 0.0, 0.0, 0.0); + HeartParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f, 0.0, 0.0, 0.0); this.speedUpWhenYMotionIsBlocked = true; this.friction = 0.86F; this.xd *= 0.01F; diff --git a/net/minecraft/client/particle/HugeExplosionSeedParticle.java b/net/minecraft/client/particle/HugeExplosionSeedParticle.java index 5219912f..a868807a 100644 --- a/net/minecraft/client/particle/HugeExplosionSeedParticle.java +++ b/net/minecraft/client/particle/HugeExplosionSeedParticle.java @@ -8,8 +8,8 @@ import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class HugeExplosionSeedParticle extends NoRenderParticle { - HugeExplosionSeedParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z, 0.0, 0.0, 0.0); + HugeExplosionSeedParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f, 0.0, 0.0, 0.0); this.lifetime = 8; } diff --git a/net/minecraft/client/particle/ItemPickupParticle.java b/net/minecraft/client/particle/ItemPickupParticle.java index 97bb312c..54f6659a 100644 --- a/net/minecraft/client/particle/ItemPickupParticle.java +++ b/net/minecraft/client/particle/ItemPickupParticle.java @@ -7,7 +7,6 @@ import net.fabricmc.api.Environment; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderBuffers; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -17,7 +16,6 @@ import net.minecraft.world.phys.Vec3; @Environment(EnvType.CLIENT) public class ItemPickupParticle extends Particle { private static final int LIFE_TIME = 3; - private final RenderBuffers renderBuffers; private final Entity itemEntity; private final Entity target; private int life; @@ -29,15 +27,12 @@ public class ItemPickupParticle extends Particle { private double targetYOld; private double targetZOld; - public ItemPickupParticle(EntityRenderDispatcher entityRenderDispatcher, RenderBuffers buffers, ClientLevel level, Entity itemEntity, Entity target) { - this(entityRenderDispatcher, buffers, level, itemEntity, target, itemEntity.getDeltaMovement()); + public ItemPickupParticle(EntityRenderDispatcher entityRenderDispatcher, ClientLevel level, Entity itemEntity, Entity target) { + this(entityRenderDispatcher, level, itemEntity, target, itemEntity.getDeltaMovement()); } - private ItemPickupParticle( - EntityRenderDispatcher entityRenderDispatcher, RenderBuffers buffers, ClientLevel level, Entity itemEntity, Entity target, Vec3 speedVector - ) { - super(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), speedVector.x, speedVector.y, speedVector.z); - this.renderBuffers = buffers; + private ItemPickupParticle(EntityRenderDispatcher entityRenderDispatcher, ClientLevel level, Entity itemEntity, Entity target, Vec3 speed) { + super(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), speed.x, speed.y, speed.z); this.itemEntity = this.getSafeCopy(itemEntity); this.target = target; this.entityRenderDispatcher = entityRenderDispatcher; @@ -55,16 +50,15 @@ public class ItemPickupParticle extends Particle { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { - float f = (this.life + partialTicks) / 3.0F; + public void renderCustom(PoseStack poseStack, MultiBufferSource bufferSource, Camera camera, float partialTick) { + float f = (this.life + partialTick) / 3.0F; f *= f; - double d = Mth.lerp((double)partialTicks, this.targetXOld, this.targetX); - double e = Mth.lerp((double)partialTicks, this.targetYOld, this.targetY); - double g = Mth.lerp((double)partialTicks, this.targetZOld, this.targetZ); + double d = Mth.lerp((double)partialTick, this.targetXOld, this.targetX); + double e = Mth.lerp((double)partialTick, this.targetYOld, this.targetY); + double g = Mth.lerp((double)partialTick, this.targetZOld, this.targetZ); double h = Mth.lerp((double)f, this.itemEntity.getX(), d); double i = Mth.lerp((double)f, this.itemEntity.getY(), e); double j = Mth.lerp((double)f, this.itemEntity.getZ(), g); - MultiBufferSource.BufferSource bufferSource = this.renderBuffers.bufferSource(); Vec3 vec3 = camera.getPosition(); this.entityRenderDispatcher .render( @@ -72,12 +66,15 @@ public class ItemPickupParticle extends Particle { h - vec3.x(), i - vec3.y(), j - vec3.z(), - partialTicks, + partialTick, new PoseStack(), bufferSource, - this.entityRenderDispatcher.getPackedLightCoords(this.itemEntity, partialTicks) + this.entityRenderDispatcher.getPackedLightCoords(this.itemEntity, partialTick) ); - bufferSource.endBatch(); + } + + @Override + public void render(VertexConsumer buffer, Camera camera, float partialTick) { } @Override diff --git a/net/minecraft/client/particle/LavaParticle.java b/net/minecraft/client/particle/LavaParticle.java index 3a85e09f..5d3482e5 100644 --- a/net/minecraft/client/particle/LavaParticle.java +++ b/net/minecraft/client/particle/LavaParticle.java @@ -8,8 +8,8 @@ import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class LavaParticle extends TextureSheetParticle { - LavaParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z, 0.0, 0.0, 0.0); + LavaParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f, 0.0, 0.0, 0.0); this.gravity = 0.75F; this.friction = 0.999F; this.xd *= 0.8F; diff --git a/net/minecraft/client/particle/MobAppearanceParticle.java b/net/minecraft/client/particle/MobAppearanceParticle.java index c63a096c..fc3973b0 100644 --- a/net/minecraft/client/particle/MobAppearanceParticle.java +++ b/net/minecraft/client/particle/MobAppearanceParticle.java @@ -24,8 +24,8 @@ public class MobAppearanceParticle extends Particle { private final Model model; private final RenderType renderType = RenderType.entityTranslucent(ElderGuardianRenderer.GUARDIAN_ELDER_LOCATION); - MobAppearanceParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z); + MobAppearanceParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f); this.model = new GuardianModel(Minecraft.getInstance().getEntityModels().bakeLayer(ModelLayers.ELDER_GUARDIAN)); this.gravity = 0.0F; this.lifetime = 30; @@ -37,20 +37,23 @@ public class MobAppearanceParticle extends Particle { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { - float f = (this.age + partialTicks) / this.lifetime; + public void renderCustom(PoseStack poseStack, MultiBufferSource bufferSource, Camera camera, float partialTick) { + float f = (this.age + partialTick) / this.lifetime; float g = 0.05F + 0.5F * Mth.sin(f * (float) Math.PI); int i = ARGB.colorFromFloat(g, 1.0F, 1.0F, 1.0F); - PoseStack poseStack = new PoseStack(); + poseStack.pushPose(); poseStack.mulPose(camera.rotation()); poseStack.mulPose(Axis.XP.rotationDegrees(60.0F - 150.0F * f)); float h = 0.42553192F; poseStack.scale(0.42553192F, -0.42553192F, -0.42553192F); poseStack.translate(0.0F, -0.56F, 3.5F); - MultiBufferSource.BufferSource bufferSource = Minecraft.getInstance().renderBuffers().bufferSource(); VertexConsumer vertexConsumer = bufferSource.getBuffer(this.renderType); this.model.renderToBuffer(poseStack, vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY, i); - bufferSource.endBatch(); + poseStack.popPose(); + } + + @Override + public void render(VertexConsumer buffer, Camera camera, float partialTick) { } @Environment(EnvType.CLIENT) diff --git a/net/minecraft/client/particle/NoRenderParticle.java b/net/minecraft/client/particle/NoRenderParticle.java index f1a6e776..7a83a1c6 100644 --- a/net/minecraft/client/particle/NoRenderParticle.java +++ b/net/minecraft/client/particle/NoRenderParticle.java @@ -8,16 +8,16 @@ import net.minecraft.client.multiplayer.ClientLevel; @Environment(EnvType.CLIENT) public class NoRenderParticle extends Particle { - protected NoRenderParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z); + protected NoRenderParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f); } - protected NoRenderParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed); + protected NoRenderParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, g, h, i); } @Override - public final void render(VertexConsumer buffer, Camera camera, float partialTicks) { + public final void render(VertexConsumer buffer, Camera camera, float partialTick) { } @Override diff --git a/net/minecraft/client/particle/Particle.java b/net/minecraft/client/particle/Particle.java index 8bd71f71..c77be2bf 100644 --- a/net/minecraft/client/particle/Particle.java +++ b/net/minecraft/client/particle/Particle.java @@ -1,5 +1,6 @@ package net.minecraft.client.particle; +import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import java.util.List; import java.util.Optional; @@ -8,6 +9,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleGroup; import net.minecraft.util.Mth; @@ -135,7 +137,10 @@ public abstract class Particle { } } - public abstract void render(VertexConsumer buffer, Camera camera, float partialTicks); + public abstract void render(VertexConsumer buffer, Camera camera, float partialTick); + + public void renderCustom(PoseStack poseStack, MultiBufferSource bufferSource, Camera camera, float partialTick) { + } public abstract ParticleRenderType getRenderType(); diff --git a/net/minecraft/client/particle/ParticleEngine.java b/net/minecraft/client/particle/ParticleEngine.java index 55daaa57..e6542c85 100644 --- a/net/minecraft/client/particle/ParticleEngine.java +++ b/net/minecraft/client/particle/ParticleEngine.java @@ -5,11 +5,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Queues; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.MeshData; -import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.logging.LogUtils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -22,6 +19,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Queue; import java.util.Set; @@ -36,52 +34,14 @@ import net.minecraft.ReportedException; import net.minecraft.Util; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.particle.BlockMarker.Provider; -import net.minecraft.client.particle.BreakingItemParticle.CobwebProvider; -import net.minecraft.client.particle.BreakingItemParticle.SlimeProvider; -import net.minecraft.client.particle.BreakingItemParticle.SnowballProvider; -import net.minecraft.client.particle.CampfireSmokeParticle.CosyProvider; -import net.minecraft.client.particle.CampfireSmokeParticle.SignalProvider; -import net.minecraft.client.particle.CritParticle.DamageIndicatorProvider; -import net.minecraft.client.particle.CritParticle.MagicProvider; -import net.minecraft.client.particle.FireworkParticles.FlashProvider; -import net.minecraft.client.particle.FireworkParticles.SparkProvider; -import net.minecraft.client.particle.FlameParticle.SmallFlameProvider; -import net.minecraft.client.particle.FlyStraightTowardsParticle.OminousSpawnProvider; -import net.minecraft.client.particle.FlyTowardsPositionParticle.EnchantProvider; -import net.minecraft.client.particle.FlyTowardsPositionParticle.NautilusProvider; -import net.minecraft.client.particle.FlyTowardsPositionParticle.VaultConnectionProvider; -import net.minecraft.client.particle.GlowParticle.ElectricSparkProvider; -import net.minecraft.client.particle.GlowParticle.GlowSquidProvider; -import net.minecraft.client.particle.GlowParticle.ScrapeProvider; -import net.minecraft.client.particle.GlowParticle.WaxOffProvider; -import net.minecraft.client.particle.GlowParticle.WaxOnProvider; -import net.minecraft.client.particle.GustParticle.SmallProvider; -import net.minecraft.client.particle.HeartParticle.AngryVillagerProvider; +import net.minecraft.client.particle.DustParticle.Provider; import net.minecraft.client.particle.ParticleProvider.Sprite; -import net.minecraft.client.particle.PlayerCloudParticle.SneezeProvider; -import net.minecraft.client.particle.ReversePortalParticle.ReversePortalProvider; -import net.minecraft.client.particle.SoulParticle.EmissiveProvider; -import net.minecraft.client.particle.SpellParticle.InstantProvider; -import net.minecraft.client.particle.SpellParticle.MobEffectProvider; -import net.minecraft.client.particle.SpellParticle.WitchProvider; -import net.minecraft.client.particle.SquidInkParticle.GlowInkProvider; -import net.minecraft.client.particle.SuspendedParticle.CrimsonSporeProvider; -import net.minecraft.client.particle.SuspendedParticle.SporeBlossomAirProvider; -import net.minecraft.client.particle.SuspendedParticle.UnderwaterProvider; -import net.minecraft.client.particle.SuspendedParticle.WarpedSporeProvider; -import net.minecraft.client.particle.SuspendedTownParticle.ComposterFillProvider; -import net.minecraft.client.particle.SuspendedTownParticle.DolphinSpeedProvider; -import net.minecraft.client.particle.SuspendedTownParticle.EggCrackProvider; -import net.minecraft.client.particle.SuspendedTownParticle.HappyVillagerProvider; -import net.minecraft.client.particle.TerrainParticle.CrumblingProvider; -import net.minecraft.client.particle.TerrainParticle.DustPillarProvider; -import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.texture.SpriteLoader; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.texture.SpriteLoader.Preparations; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleGroup; @@ -94,6 +54,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.PreparableReloadListener.PreparationBarrier; import net.minecraft.util.GsonHelper; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; @@ -113,8 +74,8 @@ public class ParticleEngine implements PreparableReloadListener { private static final FileToIdConverter PARTICLE_LISTER = FileToIdConverter.json("particles"); private static final ResourceLocation PARTICLES_ATLAS_INFO = ResourceLocation.withDefaultNamespace("particles"); private static final int MAX_PARTICLES_PER_LAYER = 16384; - private static final List RENDER_ORDER = ImmutableList.of( - ParticleRenderType.TERRAIN_SHEET, ParticleRenderType.PARTICLE_SHEET_OPAQUE, ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT, ParticleRenderType.CUSTOM + private static final List RENDER_ORDER = List.of( + ParticleRenderType.TERRAIN_SHEET, ParticleRenderType.PARTICLE_SHEET_OPAQUE, ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT ); protected ClientLevel level; private final Map> particles = Maps.>newIdentityHashMap(); @@ -136,119 +97,118 @@ public class ParticleEngine implements PreparableReloadListener { } private void registerProviders() { - this.register(ParticleTypes.ANGRY_VILLAGER, AngryVillagerProvider::new); - this.register(ParticleTypes.BLOCK_MARKER, new Provider()); - this.register(ParticleTypes.BLOCK, new net.minecraft.client.particle.TerrainParticle.Provider()); - this.register(ParticleTypes.BUBBLE, net.minecraft.client.particle.BubbleParticle.Provider::new); - this.register(ParticleTypes.BUBBLE_COLUMN_UP, net.minecraft.client.particle.BubbleColumnUpParticle.Provider::new); - this.register(ParticleTypes.BUBBLE_POP, net.minecraft.client.particle.BubblePopParticle.Provider::new); - this.register(ParticleTypes.CAMPFIRE_COSY_SMOKE, CosyProvider::new); - this.register(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, SignalProvider::new); - this.register(ParticleTypes.CLOUD, net.minecraft.client.particle.PlayerCloudParticle.Provider::new); - this.register(ParticleTypes.COMPOSTER, ComposterFillProvider::new); - this.register(ParticleTypes.CRIT, net.minecraft.client.particle.CritParticle.Provider::new); - this.register(ParticleTypes.CURRENT_DOWN, net.minecraft.client.particle.WaterCurrentDownParticle.Provider::new); - this.register(ParticleTypes.DAMAGE_INDICATOR, DamageIndicatorProvider::new); - this.register(ParticleTypes.DRAGON_BREATH, net.minecraft.client.particle.DragonBreathParticle.Provider::new); - this.register(ParticleTypes.DOLPHIN, DolphinSpeedProvider::new); + this.register(ParticleTypes.ANGRY_VILLAGER, HeartParticle.AngryVillagerProvider::new); + this.register(ParticleTypes.BLOCK_MARKER, new BlockMarker.Provider()); + this.register(ParticleTypes.BLOCK, new TerrainParticle.Provider()); + this.register(ParticleTypes.BUBBLE, BubbleParticle.Provider::new); + this.register(ParticleTypes.BUBBLE_COLUMN_UP, BubbleColumnUpParticle.Provider::new); + this.register(ParticleTypes.BUBBLE_POP, BubblePopParticle.Provider::new); + this.register(ParticleTypes.CAMPFIRE_COSY_SMOKE, CampfireSmokeParticle.CosyProvider::new); + this.register(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, CampfireSmokeParticle.SignalProvider::new); + this.register(ParticleTypes.CLOUD, PlayerCloudParticle.Provider::new); + this.register(ParticleTypes.COMPOSTER, SuspendedTownParticle.ComposterFillProvider::new); + this.register(ParticleTypes.CRIT, CritParticle.Provider::new); + this.register(ParticleTypes.CURRENT_DOWN, WaterCurrentDownParticle.Provider::new); + this.register(ParticleTypes.DAMAGE_INDICATOR, CritParticle.DamageIndicatorProvider::new); + this.register(ParticleTypes.DRAGON_BREATH, DragonBreathParticle.Provider::new); + this.register(ParticleTypes.DOLPHIN, SuspendedTownParticle.DolphinSpeedProvider::new); this.register(ParticleTypes.DRIPPING_LAVA, DripParticle::createLavaHangParticle); this.register(ParticleTypes.FALLING_LAVA, DripParticle::createLavaFallParticle); this.register(ParticleTypes.LANDING_LAVA, DripParticle::createLavaLandParticle); this.register(ParticleTypes.DRIPPING_WATER, DripParticle::createWaterHangParticle); this.register(ParticleTypes.FALLING_WATER, DripParticle::createWaterFallParticle); - this.register(ParticleTypes.DUST, net.minecraft.client.particle.DustParticle.Provider::new); - this.register(ParticleTypes.DUST_COLOR_TRANSITION, net.minecraft.client.particle.DustColorTransitionParticle.Provider::new); - this.register(ParticleTypes.EFFECT, net.minecraft.client.particle.SpellParticle.Provider::new); - this.register(ParticleTypes.ELDER_GUARDIAN, new net.minecraft.client.particle.MobAppearanceParticle.Provider()); - this.register(ParticleTypes.ENCHANTED_HIT, MagicProvider::new); - this.register(ParticleTypes.ENCHANT, EnchantProvider::new); + this.register(ParticleTypes.DUST, Provider::new); + this.register(ParticleTypes.DUST_COLOR_TRANSITION, DustColorTransitionParticle.Provider::new); + this.register(ParticleTypes.EFFECT, SpellParticle.Provider::new); + this.register(ParticleTypes.ELDER_GUARDIAN, new MobAppearanceParticle.Provider()); + this.register(ParticleTypes.ENCHANTED_HIT, CritParticle.MagicProvider::new); + this.register(ParticleTypes.ENCHANT, FlyTowardsPositionParticle.EnchantProvider::new); this.register(ParticleTypes.END_ROD, net.minecraft.client.particle.EndRodParticle.Provider::new); - this.register(ParticleTypes.ENTITY_EFFECT, MobEffectProvider::new); - this.register(ParticleTypes.EXPLOSION_EMITTER, new net.minecraft.client.particle.HugeExplosionSeedParticle.Provider()); - this.register(ParticleTypes.EXPLOSION, net.minecraft.client.particle.HugeExplosionParticle.Provider::new); - this.register(ParticleTypes.SONIC_BOOM, net.minecraft.client.particle.SonicBoomParticle.Provider::new); - this.register(ParticleTypes.FALLING_DUST, net.minecraft.client.particle.FallingDustParticle.Provider::new); - this.register(ParticleTypes.GUST, net.minecraft.client.particle.GustParticle.Provider::new); - this.register(ParticleTypes.SMALL_GUST, SmallProvider::new); - this.register(ParticleTypes.GUST_EMITTER_LARGE, new net.minecraft.client.particle.GustSeedParticle.Provider(3.0, 7, 0)); - this.register(ParticleTypes.GUST_EMITTER_SMALL, new net.minecraft.client.particle.GustSeedParticle.Provider(1.0, 3, 2)); - this.register(ParticleTypes.FIREWORK, SparkProvider::new); - this.register(ParticleTypes.FISHING, net.minecraft.client.particle.WakeParticle.Provider::new); - this.register(ParticleTypes.FLAME, net.minecraft.client.particle.FlameParticle.Provider::new); - this.register(ParticleTypes.INFESTED, net.minecraft.client.particle.SpellParticle.Provider::new); - this.register(ParticleTypes.SCULK_SOUL, EmissiveProvider::new); - this.register(ParticleTypes.SCULK_CHARGE, net.minecraft.client.particle.SculkChargeParticle.Provider::new); - this.register(ParticleTypes.SCULK_CHARGE_POP, net.minecraft.client.particle.SculkChargePopParticle.Provider::new); - this.register(ParticleTypes.SOUL, net.minecraft.client.particle.SoulParticle.Provider::new); - this.register(ParticleTypes.SOUL_FIRE_FLAME, net.minecraft.client.particle.FlameParticle.Provider::new); - this.register(ParticleTypes.FLASH, FlashProvider::new); - this.register(ParticleTypes.HAPPY_VILLAGER, HappyVillagerProvider::new); - this.register(ParticleTypes.HEART, net.minecraft.client.particle.HeartParticle.Provider::new); - this.register(ParticleTypes.INSTANT_EFFECT, InstantProvider::new); - this.register(ParticleTypes.ITEM, new net.minecraft.client.particle.BreakingItemParticle.Provider()); - this.register(ParticleTypes.ITEM_SLIME, new SlimeProvider()); - this.register(ParticleTypes.ITEM_COBWEB, new CobwebProvider()); - this.register(ParticleTypes.ITEM_SNOWBALL, new SnowballProvider()); + this.register(ParticleTypes.ENTITY_EFFECT, SpellParticle.MobEffectProvider::new); + this.register(ParticleTypes.EXPLOSION_EMITTER, new HugeExplosionSeedParticle.Provider()); + this.register(ParticleTypes.EXPLOSION, HugeExplosionParticle.Provider::new); + this.register(ParticleTypes.SONIC_BOOM, SonicBoomParticle.Provider::new); + this.register(ParticleTypes.FALLING_DUST, FallingDustParticle.Provider::new); + this.register(ParticleTypes.GUST, GustParticle.Provider::new); + this.register(ParticleTypes.SMALL_GUST, GustParticle.SmallProvider::new); + this.register(ParticleTypes.GUST_EMITTER_LARGE, new GustSeedParticle.Provider(3.0, 7, 0)); + this.register(ParticleTypes.GUST_EMITTER_SMALL, new GustSeedParticle.Provider(1.0, 3, 2)); + this.register(ParticleTypes.FIREWORK, FireworkParticles.SparkProvider::new); + this.register(ParticleTypes.FISHING, WakeParticle.Provider::new); + this.register(ParticleTypes.FLAME, FlameParticle.Provider::new); + this.register(ParticleTypes.INFESTED, SpellParticle.Provider::new); + this.register(ParticleTypes.SCULK_SOUL, SoulParticle.EmissiveProvider::new); + this.register(ParticleTypes.SCULK_CHARGE, SculkChargeParticle.Provider::new); + this.register(ParticleTypes.SCULK_CHARGE_POP, SculkChargePopParticle.Provider::new); + this.register(ParticleTypes.SOUL, SoulParticle.Provider::new); + this.register(ParticleTypes.SOUL_FIRE_FLAME, FlameParticle.Provider::new); + this.register(ParticleTypes.FLASH, FireworkParticles.FlashProvider::new); + this.register(ParticleTypes.HAPPY_VILLAGER, SuspendedTownParticle.HappyVillagerProvider::new); + this.register(ParticleTypes.HEART, HeartParticle.Provider::new); + this.register(ParticleTypes.INSTANT_EFFECT, SpellParticle.InstantProvider::new); + this.register(ParticleTypes.ITEM, new BreakingItemParticle.Provider()); + this.register(ParticleTypes.ITEM_SLIME, new BreakingItemParticle.SlimeProvider()); + this.register(ParticleTypes.ITEM_COBWEB, new BreakingItemParticle.CobwebProvider()); + this.register(ParticleTypes.ITEM_SNOWBALL, new BreakingItemParticle.SnowballProvider()); this.register(ParticleTypes.LARGE_SMOKE, net.minecraft.client.particle.LargeSmokeParticle.Provider::new); - this.register(ParticleTypes.LAVA, net.minecraft.client.particle.LavaParticle.Provider::new); - this.register(ParticleTypes.MYCELIUM, net.minecraft.client.particle.SuspendedTownParticle.Provider::new); - this.register(ParticleTypes.NAUTILUS, NautilusProvider::new); - this.register(ParticleTypes.NOTE, net.minecraft.client.particle.NoteParticle.Provider::new); - this.register(ParticleTypes.POOF, net.minecraft.client.particle.ExplodeParticle.Provider::new); - this.register(ParticleTypes.PORTAL, net.minecraft.client.particle.PortalParticle.Provider::new); - this.register(ParticleTypes.RAIN, net.minecraft.client.particle.WaterDropParticle.Provider::new); + this.register(ParticleTypes.LAVA, LavaParticle.Provider::new); + this.register(ParticleTypes.MYCELIUM, SuspendedTownParticle.Provider::new); + this.register(ParticleTypes.NAUTILUS, FlyTowardsPositionParticle.NautilusProvider::new); + this.register(ParticleTypes.NOTE, NoteParticle.Provider::new); + this.register(ParticleTypes.POOF, ExplodeParticle.Provider::new); + this.register(ParticleTypes.PORTAL, PortalParticle.Provider::new); + this.register(ParticleTypes.RAIN, WaterDropParticle.Provider::new); this.register(ParticleTypes.SMOKE, net.minecraft.client.particle.SmokeParticle.Provider::new); - this.register(ParticleTypes.WHITE_SMOKE, net.minecraft.client.particle.WhiteSmokeParticle.Provider::new); - this.register(ParticleTypes.SNEEZE, SneezeProvider::new); - this.register(ParticleTypes.SNOWFLAKE, net.minecraft.client.particle.SnowflakeParticle.Provider::new); - this.register(ParticleTypes.SPIT, net.minecraft.client.particle.SpitParticle.Provider::new); - this.register(ParticleTypes.SWEEP_ATTACK, net.minecraft.client.particle.AttackSweepParticle.Provider::new); + this.register(ParticleTypes.WHITE_SMOKE, WhiteSmokeParticle.Provider::new); + this.register(ParticleTypes.SNEEZE, PlayerCloudParticle.SneezeProvider::new); + this.register(ParticleTypes.SNOWFLAKE, SnowflakeParticle.Provider::new); + this.register(ParticleTypes.SPIT, SpitParticle.Provider::new); + this.register(ParticleTypes.SWEEP_ATTACK, AttackSweepParticle.Provider::new); this.register(ParticleTypes.TOTEM_OF_UNDYING, net.minecraft.client.particle.TotemParticle.Provider::new); - this.register(ParticleTypes.SQUID_INK, net.minecraft.client.particle.SquidInkParticle.Provider::new); - this.register(ParticleTypes.UNDERWATER, UnderwaterProvider::new); - this.register(ParticleTypes.SPLASH, net.minecraft.client.particle.SplashParticle.Provider::new); - this.register(ParticleTypes.WITCH, WitchProvider::new); + this.register(ParticleTypes.SQUID_INK, SquidInkParticle.Provider::new); + this.register(ParticleTypes.UNDERWATER, SuspendedParticle.UnderwaterProvider::new); + this.register(ParticleTypes.SPLASH, SplashParticle.Provider::new); + this.register(ParticleTypes.WITCH, SpellParticle.WitchProvider::new); this.register(ParticleTypes.DRIPPING_HONEY, DripParticle::createHoneyHangParticle); this.register(ParticleTypes.FALLING_HONEY, DripParticle::createHoneyFallParticle); this.register(ParticleTypes.LANDING_HONEY, DripParticle::createHoneyLandParticle); this.register(ParticleTypes.FALLING_NECTAR, DripParticle::createNectarFallParticle); this.register(ParticleTypes.FALLING_SPORE_BLOSSOM, DripParticle::createSporeBlossomFallParticle); - this.register(ParticleTypes.SPORE_BLOSSOM_AIR, SporeBlossomAirProvider::new); + this.register(ParticleTypes.SPORE_BLOSSOM_AIR, SuspendedParticle.SporeBlossomAirProvider::new); this.register(ParticleTypes.ASH, net.minecraft.client.particle.AshParticle.Provider::new); - this.register(ParticleTypes.CRIMSON_SPORE, CrimsonSporeProvider::new); - this.register(ParticleTypes.WARPED_SPORE, WarpedSporeProvider::new); + this.register(ParticleTypes.CRIMSON_SPORE, SuspendedParticle.CrimsonSporeProvider::new); + this.register(ParticleTypes.WARPED_SPORE, SuspendedParticle.WarpedSporeProvider::new); this.register(ParticleTypes.DRIPPING_OBSIDIAN_TEAR, DripParticle::createObsidianTearHangParticle); this.register(ParticleTypes.FALLING_OBSIDIAN_TEAR, DripParticle::createObsidianTearFallParticle); this.register(ParticleTypes.LANDING_OBSIDIAN_TEAR, DripParticle::createObsidianTearLandParticle); - this.register(ParticleTypes.REVERSE_PORTAL, ReversePortalProvider::new); + this.register(ParticleTypes.REVERSE_PORTAL, ReversePortalParticle.ReversePortalProvider::new); this.register(ParticleTypes.WHITE_ASH, net.minecraft.client.particle.WhiteAshParticle.Provider::new); - this.register(ParticleTypes.SMALL_FLAME, SmallFlameProvider::new); + this.register(ParticleTypes.SMALL_FLAME, FlameParticle.SmallFlameProvider::new); this.register(ParticleTypes.DRIPPING_DRIPSTONE_WATER, DripParticle::createDripstoneWaterHangParticle); this.register(ParticleTypes.FALLING_DRIPSTONE_WATER, DripParticle::createDripstoneWaterFallParticle); - this.register( - ParticleTypes.CHERRY_LEAVES, spriteSet -> (simpleParticleType, clientLevel, d, e, f, g, h, i) -> new CherryParticle(clientLevel, d, e, f, spriteSet) - ); + this.register(ParticleTypes.CHERRY_LEAVES, FallingLeavesParticle.CherryProvider::new); + this.register(ParticleTypes.PALE_OAK_LEAVES, FallingLeavesParticle.PaleOakProvider::new); this.register(ParticleTypes.DRIPPING_DRIPSTONE_LAVA, DripParticle::createDripstoneLavaHangParticle); this.register(ParticleTypes.FALLING_DRIPSTONE_LAVA, DripParticle::createDripstoneLavaFallParticle); - this.register(ParticleTypes.VIBRATION, net.minecraft.client.particle.VibrationSignalParticle.Provider::new); + this.register(ParticleTypes.VIBRATION, VibrationSignalParticle.Provider::new); this.register(ParticleTypes.TRAIL, TrailParticle.Provider::new); - this.register(ParticleTypes.GLOW_SQUID_INK, GlowInkProvider::new); - this.register(ParticleTypes.GLOW, GlowSquidProvider::new); - this.register(ParticleTypes.WAX_ON, WaxOnProvider::new); - this.register(ParticleTypes.WAX_OFF, WaxOffProvider::new); - this.register(ParticleTypes.ELECTRIC_SPARK, ElectricSparkProvider::new); - this.register(ParticleTypes.SCRAPE, ScrapeProvider::new); - this.register(ParticleTypes.SHRIEK, net.minecraft.client.particle.ShriekParticle.Provider::new); - this.register(ParticleTypes.EGG_CRACK, EggCrackProvider::new); - this.register(ParticleTypes.DUST_PLUME, net.minecraft.client.particle.DustPlumeParticle.Provider::new); - this.register(ParticleTypes.TRIAL_SPAWNER_DETECTED_PLAYER, net.minecraft.client.particle.TrialSpawnerDetectionParticle.Provider::new); - this.register(ParticleTypes.TRIAL_SPAWNER_DETECTED_PLAYER_OMINOUS, net.minecraft.client.particle.TrialSpawnerDetectionParticle.Provider::new); - this.register(ParticleTypes.VAULT_CONNECTION, VaultConnectionProvider::new); - this.register(ParticleTypes.DUST_PILLAR, new DustPillarProvider()); - this.register(ParticleTypes.RAID_OMEN, net.minecraft.client.particle.SpellParticle.Provider::new); - this.register(ParticleTypes.TRIAL_OMEN, net.minecraft.client.particle.SpellParticle.Provider::new); - this.register(ParticleTypes.OMINOUS_SPAWNING, OminousSpawnProvider::new); - this.register(ParticleTypes.BLOCK_CRUMBLE, new CrumblingProvider()); + this.register(ParticleTypes.GLOW_SQUID_INK, SquidInkParticle.GlowInkProvider::new); + this.register(ParticleTypes.GLOW, GlowParticle.GlowSquidProvider::new); + this.register(ParticleTypes.WAX_ON, GlowParticle.WaxOnProvider::new); + this.register(ParticleTypes.WAX_OFF, GlowParticle.WaxOffProvider::new); + this.register(ParticleTypes.ELECTRIC_SPARK, GlowParticle.ElectricSparkProvider::new); + this.register(ParticleTypes.SCRAPE, GlowParticle.ScrapeProvider::new); + this.register(ParticleTypes.SHRIEK, ShriekParticle.Provider::new); + this.register(ParticleTypes.EGG_CRACK, SuspendedTownParticle.EggCrackProvider::new); + this.register(ParticleTypes.DUST_PLUME, DustPlumeParticle.Provider::new); + this.register(ParticleTypes.TRIAL_SPAWNER_DETECTED_PLAYER, TrialSpawnerDetectionParticle.Provider::new); + this.register(ParticleTypes.TRIAL_SPAWNER_DETECTED_PLAYER_OMINOUS, TrialSpawnerDetectionParticle.Provider::new); + this.register(ParticleTypes.VAULT_CONNECTION, FlyTowardsPositionParticle.VaultConnectionProvider::new); + this.register(ParticleTypes.DUST_PILLAR, new TerrainParticle.DustPillarProvider()); + this.register(ParticleTypes.RAID_OMEN, SpellParticle.Provider::new); + this.register(ParticleTypes.TRIAL_OMEN, SpellParticle.Provider::new); + this.register(ParticleTypes.OMINOUS_SPAWNING, FlyStraightTowardsParticle.OminousSpawnProvider::new); + this.register(ParticleTypes.BLOCK_CRUMBLE, new TerrainParticle.CrumblingProvider()); } private void register(ParticleType particleType, ParticleProvider particleFactory) { @@ -273,9 +233,7 @@ public class ParticleEngine implements PreparableReloadListener { } @Override - public CompletableFuture reload( - PreparableReloadListener.PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor - ) { + public CompletableFuture reload(PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor) { @Environment(EnvType.CLIENT) record ParticleDefinition(ResourceLocation id, Optional> sprites) { } @@ -299,14 +257,14 @@ public class ParticleEngine implements PreparableReloadListener { return Util.sequence(list); } ); - CompletableFuture completableFuture2 = SpriteLoader.create(this.textureAtlas) + CompletableFuture completableFuture2 = SpriteLoader.create(this.textureAtlas) .loadAndStitch(manager, PARTICLES_ATLAS_INFO, 0, backgroundExecutor) - .thenCompose(Preparations::waitForUpload); + .thenCompose(SpriteLoader.Preparations::waitForUpload); return CompletableFuture.allOf(completableFuture2, completableFuture).thenCompose(barrier::wait).thenAcceptAsync(void_ -> { this.clearParticles(); ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("upload"); - Preparations preparations = (Preparations)completableFuture2.join(); + SpriteLoader.Preparations preparations = (SpriteLoader.Preparations)completableFuture2.join(); this.textureAtlas.upload(preparations); profilerFiller.popPush("bindSpriteSets"); Set set = new HashSet(); @@ -475,39 +433,52 @@ public class ParticleEngine implements PreparableReloadListener { } } - public void render(LightTexture lightTexture, Camera camera, float partialTick) { - lightTexture.turnOnLightLayer(); - RenderSystem.enableDepthTest(); - + public void render(Camera camera, float partialTick, BufferSource bufferSource) { for (ParticleRenderType particleRenderType : RENDER_ORDER) { Queue queue = (Queue)this.particles.get(particleRenderType); if (queue != null && !queue.isEmpty()) { - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder bufferBuilder = particleRenderType.begin(tesselator, this.textureManager); - if (bufferBuilder != null) { - for (Particle particle : queue) { - try { - particle.render(bufferBuilder, camera, partialTick); - } catch (Throwable var14) { - CrashReport crashReport = CrashReport.forThrowable(var14, "Rendering Particle"); - CrashReportCategory crashReportCategory = crashReport.addCategory("Particle being rendered"); - crashReportCategory.setDetail("Particle", particle::toString); - crashReportCategory.setDetail("Particle Type", particleRenderType::toString); - throw new ReportedException(crashReport); - } - } - - MeshData meshData = bufferBuilder.build(); - if (meshData != null) { - BufferUploader.drawWithShader(meshData); - } - } + renderParticleType(camera, partialTick, bufferSource, particleRenderType, queue); } } - RenderSystem.depthMask(true); - RenderSystem.disableBlend(); - lightTexture.turnOffLightLayer(); + Queue queue2 = (Queue)this.particles.get(ParticleRenderType.CUSTOM); + if (queue2 != null && !queue2.isEmpty()) { + renderCustomParticles(camera, partialTick, bufferSource, queue2); + } + + bufferSource.endBatch(); + } + + private static void renderParticleType(Camera camera, float partialTick, BufferSource bufferSource, ParticleRenderType particleType, Queue particles) { + VertexConsumer vertexConsumer = bufferSource.getBuffer((RenderType)Objects.requireNonNull(particleType.renderType())); + + for (Particle particle : particles) { + try { + particle.render(vertexConsumer, camera, partialTick); + } catch (Throwable var11) { + CrashReport crashReport = CrashReport.forThrowable(var11, "Rendering Particle"); + CrashReportCategory crashReportCategory = crashReport.addCategory("Particle being rendered"); + crashReportCategory.setDetail("Particle", particle::toString); + crashReportCategory.setDetail("Particle Type", particleType::toString); + throw new ReportedException(crashReport); + } + } + } + + private static void renderCustomParticles(Camera camera, float partialTick, BufferSource bufferSource, Queue particles) { + PoseStack poseStack = new PoseStack(); + + for (Particle particle : particles) { + try { + particle.renderCustom(poseStack, bufferSource, camera, partialTick); + } catch (Throwable var10) { + CrashReport crashReport = CrashReport.forThrowable(var10, "Rendering Particle"); + CrashReportCategory crashReportCategory = crashReport.addCategory("Particle being rendered"); + crashReportCategory.setDetail("Particle", particle::toString); + crashReportCategory.setDetail("Particle Type", "Custom"); + throw new ReportedException(crashReport); + } + } } public void setLevel(@Nullable ClientLevel level) { diff --git a/net/minecraft/client/particle/ParticleRenderType.java b/net/minecraft/client/particle/ParticleRenderType.java index c9586696..4045f4ad 100644 --- a/net/minecraft/client/particle/ParticleRenderType.java +++ b/net/minecraft/client/particle/ParticleRenderType.java @@ -1,87 +1,20 @@ package net.minecraft.client.particle; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureManager; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public interface ParticleRenderType { - ParticleRenderType TERRAIN_SHEET = new ParticleRenderType() { - @Override - public BufferBuilder begin(Tesselator tesselator, TextureManager textureManager) { - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.depthMask(true); - RenderSystem.setShader(CoreShaders.PARTICLE); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); - return tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.PARTICLE); - } - - public String toString() { - return "TERRAIN_SHEET"; - } - }; - ParticleRenderType PARTICLE_SHEET_OPAQUE = new ParticleRenderType() { - @Override - public BufferBuilder begin(Tesselator tesselator, TextureManager textureManager) { - RenderSystem.disableBlend(); - RenderSystem.depthMask(true); - RenderSystem.setShader(CoreShaders.PARTICLE); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_PARTICLES); - return tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.PARTICLE); - } - - public String toString() { - return "PARTICLE_SHEET_OPAQUE"; - } - }; - ParticleRenderType PARTICLE_SHEET_TRANSLUCENT = new ParticleRenderType() { - @Override - public BufferBuilder begin(Tesselator tesselator, TextureManager textureManager) { - RenderSystem.depthMask(true); - RenderSystem.setShader(CoreShaders.PARTICLE); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_PARTICLES); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - return tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.PARTICLE); - } - - public String toString() { - return "PARTICLE_SHEET_TRANSLUCENT"; - } - }; - ParticleRenderType CUSTOM = new ParticleRenderType() { - @Override - public BufferBuilder begin(Tesselator tesselator, TextureManager textureManager) { - RenderSystem.depthMask(true); - RenderSystem.disableBlend(); - return tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.PARTICLE); - } - - public String toString() { - return "CUSTOM"; - } - }; - ParticleRenderType NO_RENDER = new ParticleRenderType() { - @Nullable - @Override - public BufferBuilder begin(Tesselator tesselator, TextureManager textureManager) { - return null; - } - - public String toString() { - return "NO_RENDER"; - } - }; - - @Nullable - BufferBuilder begin(Tesselator tesselator, TextureManager textureManager); +public record ParticleRenderType(String name, @Nullable RenderType renderType) { + public static final ParticleRenderType TERRAIN_SHEET = new ParticleRenderType("TERRAIN_SHEET", RenderType.translucentParticle(TextureAtlas.LOCATION_BLOCKS)); + public static final ParticleRenderType PARTICLE_SHEET_OPAQUE = new ParticleRenderType( + "PARTICLE_SHEET_OPAQUE", RenderType.opaqueParticle(TextureAtlas.LOCATION_PARTICLES) + ); + public static final ParticleRenderType PARTICLE_SHEET_TRANSLUCENT = new ParticleRenderType( + "PARTICLE_SHEET_TRANSLUCENT", RenderType.translucentParticle(TextureAtlas.LOCATION_PARTICLES) + ); + public static final ParticleRenderType CUSTOM = new ParticleRenderType("CUSTOM", null); + public static final ParticleRenderType NO_RENDER = new ParticleRenderType("NO_RENDER", null); } diff --git a/net/minecraft/client/particle/PortalParticle.java b/net/minecraft/client/particle/PortalParticle.java index 7d096159..7a1e671f 100644 --- a/net/minecraft/client/particle/PortalParticle.java +++ b/net/minecraft/client/particle/PortalParticle.java @@ -11,22 +11,22 @@ public class PortalParticle extends TextureSheetParticle { private final double yStart; private final double zStart; - protected PortalParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z); - this.xd = xSpeed; - this.yd = ySpeed; - this.zd = zSpeed; - this.x = x; - this.y = y; - this.z = z; + protected PortalParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f); + this.xd = g; + this.yd = h; + this.zd = i; + this.x = d; + this.y = e; + this.z = f; this.xStart = this.x; this.yStart = this.y; this.zStart = this.z; this.quadSize = 0.1F * (this.random.nextFloat() * 0.2F + 0.5F); - float f = this.random.nextFloat() * 0.6F + 0.4F; - this.rCol = f * 0.9F; - this.gCol = f * 0.3F; - this.bCol = f; + float j = this.random.nextFloat() * 0.6F + 0.4F; + this.rCol = j * 0.9F; + this.gCol = j * 0.3F; + this.bCol = j; this.lifetime = (int)(Math.random() * 10.0) + 40; } diff --git a/net/minecraft/client/particle/ReversePortalParticle.java b/net/minecraft/client/particle/ReversePortalParticle.java index dcef3d1d..18569784 100644 --- a/net/minecraft/client/particle/ReversePortalParticle.java +++ b/net/minecraft/client/particle/ReversePortalParticle.java @@ -7,8 +7,8 @@ import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class ReversePortalParticle extends PortalParticle { - ReversePortalParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed); + ReversePortalParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, g, h, i); this.quadSize *= 1.5F; this.lifetime = (int)(Math.random() * 2.0) + 60; } diff --git a/net/minecraft/client/particle/ShriekParticle.java b/net/minecraft/client/particle/ShriekParticle.java index a977cb95..acf5edec 100644 --- a/net/minecraft/client/particle/ShriekParticle.java +++ b/net/minecraft/client/particle/ShriekParticle.java @@ -31,14 +31,14 @@ public class ShriekParticle extends TextureSheetParticle { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { + public void render(VertexConsumer buffer, Camera camera, float partialTick) { if (this.delay <= 0) { - this.alpha = 1.0F - Mth.clamp((this.age + partialTicks) / this.lifetime, 0.0F, 1.0F); + this.alpha = 1.0F - Mth.clamp((this.age + partialTick) / this.lifetime, 0.0F, 1.0F); Quaternionf quaternionf = new Quaternionf(); quaternionf.rotationX(-1.0472F); - this.renderRotatedQuad(buffer, camera, quaternionf, partialTicks); + this.renderRotatedQuad(buffer, camera, quaternionf, partialTick); quaternionf.rotationYXZ((float) -Math.PI, 1.0472F, 0.0F); - this.renderRotatedQuad(buffer, camera, quaternionf, partialTicks); + this.renderRotatedQuad(buffer, camera, quaternionf, partialTick); } } @@ -69,8 +69,8 @@ public class ShriekParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(ShriekParticleOption type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - ShriekParticle shriekParticle = new ShriekParticle(level, x, y, z, type.getDelay()); + public Particle createParticle(ShriekParticleOption shriekParticleOption, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + ShriekParticle shriekParticle = new ShriekParticle(clientLevel, d, e, f, shriekParticleOption.getDelay()); shriekParticle.pickSprite(this.sprite); shriekParticle.setAlpha(1.0F); return shriekParticle; diff --git a/net/minecraft/client/particle/SingleQuadParticle.java b/net/minecraft/client/particle/SingleQuadParticle.java index db70a2c0..14a83f7a 100644 --- a/net/minecraft/client/particle/SingleQuadParticle.java +++ b/net/minecraft/client/particle/SingleQuadParticle.java @@ -14,12 +14,12 @@ import org.joml.Vector3f; public abstract class SingleQuadParticle extends Particle { protected float quadSize = 0.1F * (this.random.nextFloat() * 0.5F + 0.5F) * 2.0F; - protected SingleQuadParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z); + protected SingleQuadParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f); } - protected SingleQuadParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed); + protected SingleQuadParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, g, h, i); } public SingleQuadParticle.FacingCameraMode getFacingCameraMode() { @@ -27,14 +27,14 @@ public abstract class SingleQuadParticle extends Particle { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { + public void render(VertexConsumer buffer, Camera camera, float partialTick) { Quaternionf quaternionf = new Quaternionf(); - this.getFacingCameraMode().setRotation(quaternionf, camera, partialTicks); + this.getFacingCameraMode().setRotation(quaternionf, camera, partialTick); if (this.roll != 0.0F) { - quaternionf.rotateZ(Mth.lerp(partialTicks, this.oRoll, this.roll)); + quaternionf.rotateZ(Mth.lerp(partialTick, this.oRoll, this.roll)); } - this.renderRotatedQuad(buffer, camera, quaternionf, partialTicks); + this.renderRotatedQuad(buffer, camera, quaternionf, partialTick); } protected void renderRotatedQuad(VertexConsumer buffer, Camera camera, Quaternionf quaternion, float partialTicks) { diff --git a/net/minecraft/client/particle/SnowflakeParticle.java b/net/minecraft/client/particle/SnowflakeParticle.java index 583eaf23..24c76ce6 100644 --- a/net/minecraft/client/particle/SnowflakeParticle.java +++ b/net/minecraft/client/particle/SnowflakeParticle.java @@ -44,8 +44,8 @@ public class SnowflakeParticle extends TextureSheetParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - SnowflakeParticle snowflakeParticle = new SnowflakeParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + SnowflakeParticle snowflakeParticle = new SnowflakeParticle(clientLevel, d, e, f, g, h, i, this.sprites); snowflakeParticle.setColor(0.923F, 0.964F, 0.999F); return snowflakeParticle; } diff --git a/net/minecraft/client/particle/SonicBoomParticle.java b/net/minecraft/client/particle/SonicBoomParticle.java index 2e1fa914..7ba5153d 100644 --- a/net/minecraft/client/particle/SonicBoomParticle.java +++ b/net/minecraft/client/particle/SonicBoomParticle.java @@ -7,11 +7,11 @@ import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class SonicBoomParticle extends HugeExplosionParticle { - protected SonicBoomParticle(ClientLevel level, double x, double y, double z, double quadSizeMultiplier, SpriteSet sprites) { - super(level, x, y, z, quadSizeMultiplier, sprites); + protected SonicBoomParticle(ClientLevel clientLevel, double d, double e, double f, double g, SpriteSet spriteSet) { + super(clientLevel, d, e, f, g, spriteSet); this.lifetime = 16; this.quadSize = 1.5F; - this.setSpriteFromAge(sprites); + this.setSpriteFromAge(spriteSet); } @Environment(EnvType.CLIENT) @@ -22,8 +22,8 @@ public class SonicBoomParticle extends HugeExplosionParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new SonicBoomParticle(level, x, y, z, xSpeed, this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new SonicBoomParticle(clientLevel, d, e, f, g, this.sprites); } } } diff --git a/net/minecraft/client/particle/SoulParticle.java b/net/minecraft/client/particle/SoulParticle.java index 89d40883..4dc2356b 100644 --- a/net/minecraft/client/particle/SoulParticle.java +++ b/net/minecraft/client/particle/SoulParticle.java @@ -41,8 +41,8 @@ public class SoulParticle extends RisingParticle { this.sprite = sprite; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - SoulParticle soulParticle = new SoulParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, this.sprite); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + SoulParticle soulParticle = new SoulParticle(clientLevel, d, e, f, g, h, i, this.sprite); soulParticle.setAlpha(1.0F); soulParticle.isGlowing = true; return soulParticle; diff --git a/net/minecraft/client/particle/SpellParticle.java b/net/minecraft/client/particle/SpellParticle.java index 1f61ee5a..4e2ff548 100644 --- a/net/minecraft/client/particle/SpellParticle.java +++ b/net/minecraft/client/particle/SpellParticle.java @@ -89,10 +89,10 @@ public class SpellParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(ColorParticleOption type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - Particle particle = new SpellParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, this.sprite); - particle.setColor(type.getRed(), type.getGreen(), type.getBlue()); - particle.setAlpha(type.getAlpha()); + public Particle createParticle(ColorParticleOption colorParticleOption, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + Particle particle = new SpellParticle(clientLevel, d, e, f, g, h, i, this.sprite); + particle.setColor(colorParticleOption.getRed(), colorParticleOption.getGreen(), colorParticleOption.getBlue()); + particle.setAlpha(colorParticleOption.getAlpha()); return particle; } } diff --git a/net/minecraft/client/particle/SpitParticle.java b/net/minecraft/client/particle/SpitParticle.java index 1add9986..0faccfce 100644 --- a/net/minecraft/client/particle/SpitParticle.java +++ b/net/minecraft/client/particle/SpitParticle.java @@ -7,8 +7,8 @@ import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class SpitParticle extends ExplodeParticle { - SpitParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, SpriteSet sprites) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed, sprites); + SpitParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i, SpriteSet spriteSet) { + super(clientLevel, d, e, f, g, h, i, spriteSet); this.gravity = 0.5F; } diff --git a/net/minecraft/client/particle/SquidInkParticle.java b/net/minecraft/client/particle/SquidInkParticle.java index 5b7693f7..680d2810 100644 --- a/net/minecraft/client/particle/SquidInkParticle.java +++ b/net/minecraft/client/particle/SquidInkParticle.java @@ -46,8 +46,8 @@ public class SquidInkParticle extends SimpleAnimatedParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new SquidInkParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, ARGB.color(255, 204, 31, 102), this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new SquidInkParticle(clientLevel, d, e, f, g, h, i, ARGB.color(255, 204, 31, 102), this.sprites); } } diff --git a/net/minecraft/client/particle/SuspendedParticle.java b/net/minecraft/client/particle/SuspendedParticle.java index 28cb42e9..9171240e 100644 --- a/net/minecraft/client/particle/SuspendedParticle.java +++ b/net/minecraft/client/particle/SuspendedParticle.java @@ -1,10 +1,9 @@ package net.minecraft.client.particle; -import java.util.Optional; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.particles.ParticleGroup; +import net.minecraft.client.particle.SuspendedParticle.SporeBlossomAirProvider.1; import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; @@ -65,14 +64,9 @@ public class SuspendedParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - SuspendedParticle suspendedParticle = new SuspendedParticle(level, this.sprite, x, y, z, 0.0, -0.8F, 0.0) { - @Override - public Optional getParticleGroup() { - return Optional.of(ParticleGroup.SPORE_BLOSSOM); - } - }; - suspendedParticle.lifetime = Mth.randomBetweenInclusive(level.random, 500, 1000); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + SuspendedParticle suspendedParticle = new 1(this, clientLevel, this.sprite, d, e, f, 0.0, -0.8F, 0.0); + suspendedParticle.lifetime = Mth.randomBetweenInclusive(clientLevel.random, 500, 1000); suspendedParticle.gravity = 0.01F; suspendedParticle.setColor(0.32F, 0.5F, 0.22F); return suspendedParticle; diff --git a/net/minecraft/client/particle/SuspendedTownParticle.java b/net/minecraft/client/particle/SuspendedTownParticle.java index 20a578e6..7a1a8929 100644 --- a/net/minecraft/client/particle/SuspendedTownParticle.java +++ b/net/minecraft/client/particle/SuspendedTownParticle.java @@ -7,12 +7,12 @@ import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class SuspendedTownParticle extends TextureSheetParticle { - SuspendedTownParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed); - float f = this.random.nextFloat() * 0.1F + 0.2F; - this.rCol = f; - this.gCol = f; - this.bCol = f; + SuspendedTownParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, g, h, i); + float j = this.random.nextFloat() * 0.1F + 0.2F; + this.rCol = j; + this.gCol = j; + this.bCol = j; this.setSize(0.02F, 0.02F); this.quadSize = this.quadSize * (this.random.nextFloat() * 0.6F + 0.5F); this.xd *= 0.02F; @@ -90,8 +90,8 @@ public class SuspendedTownParticle extends TextureSheetParticle { this.sprite = sprite; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - SuspendedTownParticle suspendedTownParticle = new SuspendedTownParticle(level, x, y, z, xSpeed, ySpeed, zSpeed); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + SuspendedTownParticle suspendedTownParticle = new SuspendedTownParticle(clientLevel, d, e, f, g, h, i); suspendedTownParticle.pickSprite(this.sprite); suspendedTownParticle.setColor(1.0F, 1.0F, 1.0F); return suspendedTownParticle; diff --git a/net/minecraft/client/particle/TextureSheetParticle.java b/net/minecraft/client/particle/TextureSheetParticle.java index 56f1522e..2f2a174c 100644 --- a/net/minecraft/client/particle/TextureSheetParticle.java +++ b/net/minecraft/client/particle/TextureSheetParticle.java @@ -9,12 +9,12 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; public abstract class TextureSheetParticle extends SingleQuadParticle { protected TextureAtlasSprite sprite; - protected TextureSheetParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z); + protected TextureSheetParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f); } - protected TextureSheetParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - super(level, x, y, z, xSpeed, ySpeed, zSpeed); + protected TextureSheetParticle(ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + super(clientLevel, d, e, f, g, h, i); } protected void setSprite(TextureAtlasSprite sprite) { diff --git a/net/minecraft/client/particle/TrackingEmitter.java b/net/minecraft/client/particle/TrackingEmitter.java index eeb75ed2..0e9cf6c9 100644 --- a/net/minecraft/client/particle/TrackingEmitter.java +++ b/net/minecraft/client/particle/TrackingEmitter.java @@ -40,7 +40,7 @@ public class TrackingEmitter extends NoRenderParticle { double g = this.entity.getX(d / 4.0); double h = this.entity.getY(0.5 + e / 4.0); double j = this.entity.getZ(f / 4.0); - this.level.addParticle(this.particleType, false, g, h, j, d, e + 0.2, f); + this.level.addParticle(this.particleType, g, h, j, d, e + 0.2, f); } } diff --git a/net/minecraft/client/particle/TrailParticle.java b/net/minecraft/client/particle/TrailParticle.java index 65b159fb..9fb2f993 100644 --- a/net/minecraft/client/particle/TrailParticle.java +++ b/net/minecraft/client/particle/TrailParticle.java @@ -3,7 +3,7 @@ package net.minecraft.client.particle; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.particles.TargetColorParticleOption; +import net.minecraft.core.particles.TrailParticleOption; import net.minecraft.util.ARGB; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; @@ -49,17 +49,17 @@ public class TrailParticle extends TextureSheetParticle { } @Environment(EnvType.CLIENT) - public static class Provider implements ParticleProvider { + public static class Provider implements ParticleProvider { private final SpriteSet sprite; public Provider(SpriteSet sprite) { this.sprite = sprite; } - public Particle createParticle(TargetColorParticleOption type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - TrailParticle trailParticle = new TrailParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, type.target(), type.color()); + public Particle createParticle(TrailParticleOption trailParticleOption, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + TrailParticle trailParticle = new TrailParticle(clientLevel, d, e, f, g, h, i, trailParticleOption.target(), trailParticleOption.color()); trailParticle.pickSprite(this.sprite); - trailParticle.setLifetime(level.random.nextInt(40) + 10); + trailParticle.setLifetime(trailParticleOption.duration()); return trailParticle; } } diff --git a/net/minecraft/client/particle/TrialSpawnerDetectionParticle.java b/net/minecraft/client/particle/TrialSpawnerDetectionParticle.java index 15da9a83..f205f9b3 100644 --- a/net/minecraft/client/particle/TrialSpawnerDetectionParticle.java +++ b/net/minecraft/client/particle/TrialSpawnerDetectionParticle.java @@ -66,8 +66,8 @@ public class TrialSpawnerDetectionParticle extends TextureSheetParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new TrialSpawnerDetectionParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, 1.5F, this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new TrialSpawnerDetectionParticle(clientLevel, d, e, f, g, h, i, 1.5F, this.sprites); } } } diff --git a/net/minecraft/client/particle/VibrationSignalParticle.java b/net/minecraft/client/particle/VibrationSignalParticle.java index 663a8fe5..911601f5 100644 --- a/net/minecraft/client/particle/VibrationSignalParticle.java +++ b/net/minecraft/client/particle/VibrationSignalParticle.java @@ -37,15 +37,15 @@ public class VibrationSignalParticle extends TextureSheetParticle { } @Override - public void render(VertexConsumer buffer, Camera camera, float partialTicks) { - float f = Mth.sin((this.age + partialTicks - (float) (Math.PI * 2)) * 0.05F) * 2.0F; - float g = Mth.lerp(partialTicks, this.rotO, this.rot); - float h = Mth.lerp(partialTicks, this.pitchO, this.pitch) + (float) (Math.PI / 2); + public void render(VertexConsumer buffer, Camera camera, float partialTick) { + float f = Mth.sin((this.age + partialTick - (float) (Math.PI * 2)) * 0.05F) * 2.0F; + float g = Mth.lerp(partialTick, this.rotO, this.rot); + float h = Mth.lerp(partialTick, this.pitchO, this.pitch) + (float) (Math.PI / 2); Quaternionf quaternionf = new Quaternionf(); quaternionf.rotationY(g).rotateX(-h).rotateY(f); - this.renderRotatedQuad(buffer, camera, quaternionf, partialTicks); + this.renderRotatedQuad(buffer, camera, quaternionf, partialTick); quaternionf.rotationY((float) -Math.PI + g).rotateX(h).rotateY(f); - this.renderRotatedQuad(buffer, camera, quaternionf, partialTicks); + this.renderRotatedQuad(buffer, camera, quaternionf, partialTick); } @Override @@ -95,8 +95,12 @@ public class VibrationSignalParticle extends TextureSheetParticle { this.sprite = sprites; } - public Particle createParticle(VibrationParticleOption type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - VibrationSignalParticle vibrationSignalParticle = new VibrationSignalParticle(level, x, y, z, type.getDestination(), type.getArrivalInTicks()); + public Particle createParticle( + VibrationParticleOption vibrationParticleOption, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i + ) { + VibrationSignalParticle vibrationSignalParticle = new VibrationSignalParticle( + clientLevel, d, e, f, vibrationParticleOption.getDestination(), vibrationParticleOption.getArrivalInTicks() + ); vibrationSignalParticle.pickSprite(this.sprite); vibrationSignalParticle.setAlpha(1.0F); return vibrationSignalParticle; diff --git a/net/minecraft/client/particle/WaterCurrentDownParticle.java b/net/minecraft/client/particle/WaterCurrentDownParticle.java index 3cf00bcc..1b169bf5 100644 --- a/net/minecraft/client/particle/WaterCurrentDownParticle.java +++ b/net/minecraft/client/particle/WaterCurrentDownParticle.java @@ -12,8 +12,8 @@ import net.minecraft.util.Mth; public class WaterCurrentDownParticle extends TextureSheetParticle { private float angle; - WaterCurrentDownParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z); + WaterCurrentDownParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f); this.lifetime = (int)(Math.random() * 60.0) + 30; this.hasPhysics = false; this.xd = 0.0; diff --git a/net/minecraft/client/particle/WaterDropParticle.java b/net/minecraft/client/particle/WaterDropParticle.java index 6b4499b0..696204d1 100644 --- a/net/minecraft/client/particle/WaterDropParticle.java +++ b/net/minecraft/client/particle/WaterDropParticle.java @@ -4,13 +4,13 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.SimpleParticleType; @Environment(EnvType.CLIENT) public class WaterDropParticle extends TextureSheetParticle { - protected WaterDropParticle(ClientLevel level, double x, double y, double z) { - super(level, x, y, z, 0.0, 0.0, 0.0); + protected WaterDropParticle(ClientLevel clientLevel, double d, double e, double f) { + super(clientLevel, d, e, f, 0.0, 0.0, 0.0); this.xd *= 0.3F; this.yd = Math.random() * 0.2F + 0.1F; this.zd *= 0.3F; @@ -48,7 +48,7 @@ public class WaterDropParticle extends TextureSheetParticle { BlockPos blockPos = BlockPos.containing(this.x, this.y, this.z); double d = Math.max( - this.level.getBlockState(blockPos).getCollisionShape(this.level, blockPos).max(Direction.Axis.Y, this.x - blockPos.getX(), this.z - blockPos.getZ()), + this.level.getBlockState(blockPos).getCollisionShape(this.level, blockPos).max(Axis.Y, this.x - blockPos.getX(), this.z - blockPos.getZ()), this.level.getFluidState(blockPos).getHeight(this.level, blockPos) ); if (d > 0.0 && this.y < blockPos.getY() + d) { diff --git a/net/minecraft/client/particle/WhiteSmokeParticle.java b/net/minecraft/client/particle/WhiteSmokeParticle.java index 32441da9..4837c75c 100644 --- a/net/minecraft/client/particle/WhiteSmokeParticle.java +++ b/net/minecraft/client/particle/WhiteSmokeParticle.java @@ -26,8 +26,8 @@ public class WhiteSmokeParticle extends BaseAshSmokeParticle { this.sprites = sprites; } - public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { - return new WhiteSmokeParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, 1.0F, this.sprites); + public Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double d, double e, double f, double g, double h, double i) { + return new WhiteSmokeParticle(clientLevel, d, e, f, g, h, i, 1.0F, this.sprites); } } } diff --git a/net/minecraft/client/player/ClientInput.java b/net/minecraft/client/player/ClientInput.java index b93acc28..f431ca15 100644 --- a/net/minecraft/client/player/ClientInput.java +++ b/net/minecraft/client/player/ClientInput.java @@ -11,7 +11,7 @@ public class ClientInput { public float leftImpulse; public float forwardImpulse; - public void tick(boolean isSneaking, float sneakingSpeed) { + public void tick() { } public Vec2 getMoveVector() { diff --git a/net/minecraft/client/player/KeyboardInput.java b/net/minecraft/client/player/KeyboardInput.java index 671cf284..8d515487 100644 --- a/net/minecraft/client/player/KeyboardInput.java +++ b/net/minecraft/client/player/KeyboardInput.java @@ -22,7 +22,7 @@ public class KeyboardInput extends ClientInput { } @Override - public void tick(boolean isSneaking, float sneakingSpeed) { + public void tick() { this.keyPresses = new Input( this.options.keyUp.isDown(), this.options.keyDown.isDown(), @@ -34,9 +34,5 @@ public class KeyboardInput extends ClientInput { ); this.forwardImpulse = calculateImpulse(this.keyPresses.forward(), this.keyPresses.backward()); this.leftImpulse = calculateImpulse(this.keyPresses.left(), this.keyPresses.right()); - if (isSneaking) { - this.leftImpulse *= sneakingSpeed; - this.forwardImpulse *= sneakingSpeed; - } } } diff --git a/net/minecraft/client/player/LocalPlayer.java b/net/minecraft/client/player/LocalPlayer.java index d5f59a26..84b9e0ac 100644 --- a/net/minecraft/client/player/LocalPlayer.java +++ b/net/minecraft/client/player/LocalPlayer.java @@ -35,12 +35,13 @@ import net.minecraft.client.resources.sounds.UnderwaterAmbientSoundInstances.Und import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; +import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.component.DataComponents; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.game.ServerboundClientCommandPacket; import net.minecraft.network.protocol.game.ServerboundContainerClosePacket; -import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; import net.minecraft.network.protocol.game.ServerboundMoveVehiclePacket; import net.minecraft.network.protocol.game.ServerboundPlayerAbilitiesPacket; import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket; @@ -48,6 +49,10 @@ import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; import net.minecraft.network.protocol.game.ServerboundPlayerInputPacket; import net.minecraft.network.protocol.game.ServerboundRecipeBookSeenRecipePacket; import net.minecraft.network.protocol.game.ServerboundSwingPacket; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.Pos; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.PosRot; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.Rot; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.StatusOnly; import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket.Action; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.sounds.SoundEvent; @@ -62,6 +67,7 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.PlayerRideableJumping; @@ -77,7 +83,7 @@ import net.minecraft.world.item.component.WritableBookContent; import net.minecraft.world.item.crafting.display.RecipeDisplayId; import net.minecraft.world.level.BaseCommandBlock; import net.minecraft.world.level.GameType; -import net.minecraft.world.level.block.Portal; +import net.minecraft.world.level.block.Portal.Transition; import net.minecraft.world.level.block.entity.CommandBlockEntity; import net.minecraft.world.level.block.entity.HangingSignBlockEntity; import net.minecraft.world.level.block.entity.JigsawBlockEntity; @@ -101,6 +107,7 @@ public class LocalPlayer extends AbstractClientPlayer { private static final float WATER_VISION_QUICK_PERCENT = 0.6F; private static final double SUFFOCATING_COLLISION_CHECK_SCALE = 0.35; private static final double MINOR_COLLISION_ANGLE_THRESHOLD_RADIAN = 0.13962634F; + public static final float USING_ITEM_SPEED_FACTOR = 0.2F; public final ClientPacketListener connection; private final StatsCounter stats; private final ClientRecipeBook recipeBook; @@ -217,27 +224,30 @@ public class LocalPlayer extends AbstractClientPlayer { @Override public void tick() { - this.dropSpamThrottler.tick(); - super.tick(); - this.sendShiftKeyState(); - if (!this.lastSentInput.equals(this.input.keyPresses)) { - this.connection.send(new ServerboundPlayerInputPacket(this.input.keyPresses)); - this.lastSentInput = this.input.keyPresses; - } - - if (this.isPassenger()) { - this.connection.send(new ServerboundMovePlayerPacket.Rot(this.getYRot(), this.getXRot(), this.onGround(), this.horizontalCollision)); - Entity entity = this.getRootVehicle(); - if (entity != this && entity.isControlledByLocalInstance()) { - this.connection.send(new ServerboundMoveVehiclePacket(entity)); - this.sendIsSprintingIfNeeded(); + this.tickClientLoadTimeout(); + if (this.hasClientLoaded()) { + this.dropSpamThrottler.tick(); + super.tick(); + this.sendShiftKeyState(); + if (!this.lastSentInput.equals(this.input.keyPresses)) { + this.connection.send(new ServerboundPlayerInputPacket(this.input.keyPresses)); + this.lastSentInput = this.input.keyPresses; } - } else { - this.sendPosition(); - } - for (AmbientSoundHandler ambientSoundHandler : this.ambientSoundHandlers) { - ambientSoundHandler.tick(); + if (this.isPassenger()) { + this.connection.send(new Rot(this.getYRot(), this.getXRot(), this.onGround(), this.horizontalCollision)); + Entity entity = this.getRootVehicle(); + if (entity != this && entity.isControlledByLocalInstance()) { + this.connection.send(ServerboundMoveVehiclePacket.fromEntity(entity)); + this.sendIsSprintingIfNeeded(); + } + } else { + this.sendPosition(); + } + + for (AmbientSoundHandler ambientSoundHandler : this.ambientSoundHandlers) { + ambientSoundHandler.tick(); + } } } @@ -266,16 +276,13 @@ public class LocalPlayer extends AbstractClientPlayer { boolean bl = Mth.lengthSquared(d, e, f) > Mth.square(2.0E-4) || this.positionReminder >= 20; boolean bl2 = g != 0.0 || h != 0.0; if (bl && bl2) { - this.connection - .send( - new ServerboundMovePlayerPacket.PosRot(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot(), this.onGround(), this.horizontalCollision) - ); + this.connection.send(new PosRot(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot(), this.onGround(), this.horizontalCollision)); } else if (bl) { - this.connection.send(new ServerboundMovePlayerPacket.Pos(this.getX(), this.getY(), this.getZ(), this.onGround(), this.horizontalCollision)); + this.connection.send(new Pos(this.getX(), this.getY(), this.getZ(), this.onGround(), this.horizontalCollision)); } else if (bl2) { - this.connection.send(new ServerboundMovePlayerPacket.Rot(this.getYRot(), this.getXRot(), this.onGround(), this.horizontalCollision)); + this.connection.send(new Rot(this.getYRot(), this.getXRot(), this.onGround(), this.horizontalCollision)); } else if (this.lastOnGround != this.onGround() || this.lastHorizontalCollision != this.horizontalCollision) { - this.connection.send(new ServerboundMovePlayerPacket.StatusOnly(this.onGround(), this.horizontalCollision)); + this.connection.send(new StatusOnly(this.onGround(), this.horizontalCollision)); } if (bl) { @@ -414,7 +421,7 @@ public class LocalPlayer extends AbstractClientPlayer { } @Override - protected int getPermissionLevel() { + public int getPermissionLevel() { return this.permissionLevel; } @@ -438,7 +445,7 @@ public class LocalPlayer extends AbstractClientPlayer { for (Direction direction2 : directions) { double g = direction2.getAxis().choose(d, 0.0, e); - double h = direction2.getAxisDirection() == Direction.AxisDirection.POSITIVE ? 1.0 - g : g; + double h = direction2.getAxisDirection() == AxisDirection.POSITIVE ? 1.0 - g : g; if (h < f && !this.suffocatesAt(blockPos.relative(direction2))) { f = h; direction = direction2; @@ -447,7 +454,7 @@ public class LocalPlayer extends AbstractClientPlayer { if (direction != null) { Vec3 vec3 = this.getDeltaMovement(); - if (direction.getAxis() == Direction.Axis.X) { + if (direction.getAxis() == Axis.X) { this.setDeltaMovement(0.1 * direction.getStepX(), vec3.y, vec3.z); } else { this.setDeltaMovement(vec3.x, vec3.y, 0.1 * direction.getStepZ()); @@ -673,7 +680,7 @@ public class LocalPlayer extends AbstractClientPlayer { } if (!(this.minecraft.screen instanceof ReceivingLevelScreen)) { - this.handleConfusionTransitionEffect(this.getActivePortalLocalTransition() == Portal.Transition.CONFUSION); + this.handleConfusionTransitionEffect(this.getActivePortalLocalTransition() == Transition.CONFUSION); this.processPortalCooldown(); } @@ -686,15 +693,24 @@ public class LocalPlayer extends AbstractClientPlayer { && !this.isPassenger() && this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING) && (this.isShiftKeyDown() || !this.isSleeping() && !this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.STANDING)); - float f = (float)this.getAttributeValue(Attributes.SNEAKING_SPEED); - this.input.tick(this.isMovingSlowly(), f); + this.input.tick(); this.minecraft.getTutorial().onInput(this.input); + if (this.shouldStopSprinting()) { + this.setSprinting(false); + } + if (this.isUsingItem() && !this.isPassenger()) { this.input.leftImpulse *= 0.2F; this.input.forwardImpulse *= 0.2F; this.sprintTriggerTime = 0; } + if (this.isMovingSlowly()) { + float f = (float)this.getAttributeValue(Attributes.SNEAKING_SPEED); + this.input.leftImpulse *= f; + this.input.forwardImpulse *= f; + } + boolean bl4 = false; if (this.autoJumpTime > 0) { this.autoJumpTime--; @@ -831,8 +847,24 @@ public class LocalPlayer extends AbstractClientPlayer { } } - public Portal.Transition getActivePortalLocalTransition() { - return this.portalProcess == null ? Portal.Transition.NONE : this.portalProcess.getPortalLocalTransition(); + private boolean shouldStopSprinting() { + return this.isFallFlying() + || this.hasBlindness() + || this.isMovingSlowly() + || this.isPassenger() && !this.isRidingCamel() + || this.isUsingItem() && !this.isPassenger() && !this.isUnderWater(); + } + + private boolean isRidingCamel() { + return this.getVehicle() != null && this.getVehicle().getType() == EntityType.CAMEL; + } + + private boolean hasBlindness() { + return this.hasEffect(MobEffects.BLINDNESS); + } + + public Transition getActivePortalLocalTransition() { + return this.portalProcess == null ? Transition.NONE : this.portalProcess.getPortalLocalTransition(); } @Override @@ -986,7 +1018,7 @@ public class LocalPlayer extends AbstractClientPlayer { BlockState blockState3 = this.level().getBlockState(blockPos3); VoxelShape voxelShape; if (!(voxelShape = blockState3.getCollisionShape(this.level(), blockPos3, collisionContext)).isEmpty()) { - r = (float)voxelShape.max(Direction.Axis.Y) + blockPos3.getY(); + r = (float)voxelShape.max(Axis.Y) + blockPos3.getY(); if (r - this.getY() > n) { return; } @@ -1054,9 +1086,10 @@ public class LocalPlayer extends AbstractClientPlayer { && this.hasEnoughImpulseToStartSprinting() && this.hasEnoughFoodToStartSprinting() && !this.isUsingItem() - && !this.hasEffect(MobEffects.BLINDNESS) + && !this.hasBlindness() && (!this.isPassenger() || this.vehicleCanSprint(this.getVehicle())) - && !this.isFallFlying(); + && !this.isFallFlying() + && (!this.isMovingSlowly() || this.isUnderWater()); } private boolean vehicleCanSprint(Entity vehicle) { @@ -1090,7 +1123,7 @@ public class LocalPlayer extends AbstractClientPlayer { public void onGameModeChanged(GameType gameMode) { if (gameMode == GameType.SPECTATOR) { - this.setDeltaMovement(this.getDeltaMovement().with(Direction.Axis.Y, 0.0)); + this.setDeltaMovement(this.getDeltaMovement().with(Axis.Y, 0.0)); } } diff --git a/net/minecraft/client/renderer/BlockEntityWithoutLevelRenderer.java b/net/minecraft/client/renderer/BlockEntityWithoutLevelRenderer.java deleted file mode 100644 index c03cf908..00000000 --- a/net/minecraft/client/renderer/BlockEntityWithoutLevelRenderer.java +++ /dev/null @@ -1,174 +0,0 @@ -package net.minecraft.client.renderer; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Map; -import java.util.Objects; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.ShieldModel; -import net.minecraft.client.model.SkullModelBase; -import net.minecraft.client.model.TridentModel; -import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.model.geom.ModelLayers; -import net.minecraft.client.renderer.blockentity.BannerRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; -import net.minecraft.client.renderer.blockentity.SkullBlockRenderer; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.Material; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.core.BlockPos; -import net.minecraft.core.component.DataComponents; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.server.packs.resources.ResourceManagerReloadListener; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.component.ResolvableProfile; -import net.minecraft.world.level.block.AbstractBannerBlock; -import net.minecraft.world.level.block.AbstractSkullBlock; -import net.minecraft.world.level.block.BedBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.ShulkerBoxBlock; -import net.minecraft.world.level.block.SkullBlock; -import net.minecraft.world.level.block.entity.BannerBlockEntity; -import net.minecraft.world.level.block.entity.BannerPatternLayers; -import net.minecraft.world.level.block.entity.BedBlockEntity; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.ChestBlockEntity; -import net.minecraft.world.level.block.entity.ConduitBlockEntity; -import net.minecraft.world.level.block.entity.DecoratedPotBlockEntity; -import net.minecraft.world.level.block.entity.EnderChestBlockEntity; -import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity; -import net.minecraft.world.level.block.entity.TrappedChestBlockEntity; -import net.minecraft.world.level.block.state.BlockState; - -@Environment(EnvType.CLIENT) -public class BlockEntityWithoutLevelRenderer implements ResourceManagerReloadListener { - private static final ShulkerBoxBlockEntity[] SHULKER_BOXES = (ShulkerBoxBlockEntity[])Arrays.stream(DyeColor.values()) - .sorted(Comparator.comparingInt(DyeColor::getId)) - .map(dyeColor -> new ShulkerBoxBlockEntity(dyeColor, BlockPos.ZERO, Blocks.SHULKER_BOX.defaultBlockState())) - .toArray(ShulkerBoxBlockEntity[]::new); - private static final ShulkerBoxBlockEntity DEFAULT_SHULKER_BOX = new ShulkerBoxBlockEntity(BlockPos.ZERO, Blocks.SHULKER_BOX.defaultBlockState()); - private final ChestBlockEntity chest = new ChestBlockEntity(BlockPos.ZERO, Blocks.CHEST.defaultBlockState()); - private final ChestBlockEntity trappedChest = new TrappedChestBlockEntity(BlockPos.ZERO, Blocks.TRAPPED_CHEST.defaultBlockState()); - private final EnderChestBlockEntity enderChest = new EnderChestBlockEntity(BlockPos.ZERO, Blocks.ENDER_CHEST.defaultBlockState()); - private final BannerBlockEntity banner = new BannerBlockEntity(BlockPos.ZERO, Blocks.WHITE_BANNER.defaultBlockState()); - private final BedBlockEntity bed = new BedBlockEntity(BlockPos.ZERO, Blocks.RED_BED.defaultBlockState()); - private final ConduitBlockEntity conduit = new ConduitBlockEntity(BlockPos.ZERO, Blocks.CONDUIT.defaultBlockState()); - private final DecoratedPotBlockEntity decoratedPot = new DecoratedPotBlockEntity(BlockPos.ZERO, Blocks.DECORATED_POT.defaultBlockState()); - private ShieldModel shieldModel; - private TridentModel tridentModel; - private Map skullModels; - private final BlockEntityRenderDispatcher blockEntityRenderDispatcher; - private final EntityModelSet entityModelSet; - - public BlockEntityWithoutLevelRenderer(BlockEntityRenderDispatcher blockEntityRenderDispatcher, EntityModelSet entityModelSet) { - this.blockEntityRenderDispatcher = blockEntityRenderDispatcher; - this.entityModelSet = entityModelSet; - } - - @Override - public void onResourceManagerReload(ResourceManager resourceManager) { - this.shieldModel = new ShieldModel(this.entityModelSet.bakeLayer(ModelLayers.SHIELD)); - this.tridentModel = new TridentModel(this.entityModelSet.bakeLayer(ModelLayers.TRIDENT)); - this.skullModels = SkullBlockRenderer.createSkullRenderers(this.entityModelSet); - } - - public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { - Item item = stack.getItem(); - if (item instanceof BlockItem) { - Block block = ((BlockItem)item).getBlock(); - if (block instanceof AbstractSkullBlock abstractSkullBlock) { - ResolvableProfile resolvableProfile = stack.get(DataComponents.PROFILE); - if (resolvableProfile != null && !resolvableProfile.isResolved()) { - stack.remove(DataComponents.PROFILE); - resolvableProfile.resolve().thenAcceptAsync(resolvableProfilex -> stack.set(DataComponents.PROFILE, resolvableProfilex), Minecraft.getInstance()); - resolvableProfile = null; - } - - SkullModelBase skullModelBase = (SkullModelBase)this.skullModels.get(abstractSkullBlock.getType()); - RenderType renderType = SkullBlockRenderer.getRenderType(abstractSkullBlock.getType(), resolvableProfile); - SkullBlockRenderer.renderSkull(null, 180.0F, 0.0F, poseStack, buffer, packedLight, skullModelBase, renderType); - } else { - BlockState blockState = block.defaultBlockState(); - BlockEntity blockEntity; - if (block instanceof AbstractBannerBlock) { - this.banner.fromItem(stack, ((AbstractBannerBlock)block).getColor()); - blockEntity = this.banner; - } else if (block instanceof BedBlock) { - this.bed.setColor(((BedBlock)block).getColor()); - blockEntity = this.bed; - } else if (blockState.is(Blocks.CONDUIT)) { - blockEntity = this.conduit; - } else if (blockState.is(Blocks.CHEST)) { - blockEntity = this.chest; - } else if (blockState.is(Blocks.ENDER_CHEST)) { - blockEntity = this.enderChest; - } else if (blockState.is(Blocks.TRAPPED_CHEST)) { - blockEntity = this.trappedChest; - } else if (blockState.is(Blocks.DECORATED_POT)) { - this.decoratedPot.setFromItem(stack); - blockEntity = this.decoratedPot; - } else { - if (!(block instanceof ShulkerBoxBlock)) { - return; - } - - DyeColor dyeColor = ShulkerBoxBlock.getColorFromItem(item); - if (dyeColor == null) { - blockEntity = DEFAULT_SHULKER_BOX; - } else { - blockEntity = SHULKER_BOXES[dyeColor.getId()]; - } - } - - this.blockEntityRenderDispatcher.renderItem(blockEntity, poseStack, buffer, packedLight, packedOverlay); - } - } else { - if (stack.is(Items.SHIELD)) { - BannerPatternLayers bannerPatternLayers = stack.getOrDefault(DataComponents.BANNER_PATTERNS, BannerPatternLayers.EMPTY); - DyeColor dyeColor2 = stack.get(DataComponents.BASE_COLOR); - boolean bl = !bannerPatternLayers.layers().isEmpty() || dyeColor2 != null; - poseStack.pushPose(); - poseStack.scale(1.0F, -1.0F, -1.0F); - Material material = bl ? ModelBakery.SHIELD_BASE : ModelBakery.NO_PATTERN_SHIELD; - VertexConsumer vertexConsumer = material.sprite() - .wrap(ItemRenderer.getFoilBuffer(buffer, this.shieldModel.renderType(material.atlasLocation()), displayContext == ItemDisplayContext.GUI, stack.hasFoil())); - this.shieldModel.handle().render(poseStack, vertexConsumer, packedLight, packedOverlay); - if (bl) { - BannerRenderer.renderPatterns( - poseStack, - buffer, - packedLight, - packedOverlay, - this.shieldModel.plate(), - material, - false, - (DyeColor)Objects.requireNonNullElse(dyeColor2, DyeColor.WHITE), - bannerPatternLayers, - stack.hasFoil(), - false - ); - } else { - this.shieldModel.plate().render(poseStack, vertexConsumer, packedLight, packedOverlay); - } - - poseStack.popPose(); - } else if (stack.is(Items.TRIDENT)) { - poseStack.pushPose(); - poseStack.scale(1.0F, -1.0F, -1.0F); - VertexConsumer vertexConsumer2 = ItemRenderer.getFoilBuffer(buffer, this.tridentModel.renderType(TridentModel.TEXTURE), false, stack.hasFoil()); - this.tridentModel.renderToBuffer(poseStack, vertexConsumer2, packedLight, packedOverlay); - poseStack.popPose(); - } - } - } -} diff --git a/net/minecraft/client/renderer/CloudRenderer.java b/net/minecraft/client/renderer/CloudRenderer.java index 29ee3dc5..3223d885 100644 --- a/net/minecraft/client/renderer/CloudRenderer.java +++ b/net/minecraft/client/renderer/CloudRenderer.java @@ -49,10 +49,7 @@ public class CloudRenderer extends SimplePreparableReloadListener prepare(ResourceManager resourceManager, ProfilerFiller profiler) { + protected Optional prepare(ResourceManager resourceManager, ProfilerFiller profilerFiller) { try { InputStream inputStream = resourceManager.open(TEXTURE_LOCATION); @@ -101,8 +98,8 @@ public class CloudRenderer extends SimplePreparableReloadListener object, ResourceManager resourceManager, ProfilerFiller profiler) { - this.texture = (CloudRenderer.TextureData)object.orElse(null); + protected void apply(Optional optional, ResourceManager resourceManager, ProfilerFiller profilerFiller) { + this.texture = (CloudRenderer.TextureData)optional.orElse(null); this.needsRebuild = true; } @@ -175,7 +172,7 @@ public class CloudRenderer extends SimplePreparableReloadListener sides; public CubeMap(ResourceLocation baseImageLocation) { - for (int i = 0; i < 6; i++) { - this.images[i] = baseImageLocation.withPath(baseImageLocation.getPath() + "_" + i + ".png"); - } + this.sides = IntStream.range(0, 6).mapToObj(i -> baseImageLocation.withPath(baseImageLocation.getPath() + "_" + i + ".png")).toList(); } public void render(Minecraft mc, float pitch, float yaw, float alpha) { @@ -52,8 +50,8 @@ public class CubeMap { matrix4fStack.rotateY(yaw * (float) (Math.PI / 180.0)); for (int k = 0; k < 6; k++) { - RenderSystem.setShaderTexture(0, this.images[k]); - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + RenderSystem.setShaderTexture(0, (ResourceLocation)this.sides.get(k)); + BufferBuilder bufferBuilder = tesselator.begin(Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); int l = Math.round(255.0F * alpha) / (j + 1); if (k == 0) { bufferBuilder.addVertex(-1.0F, -1.0F, 1.0F).setUv(0.0F, 0.0F).setWhiteAlpha(l); @@ -112,13 +110,9 @@ public class CubeMap { RenderSystem.enableDepthTest(); } - public CompletableFuture preload(TextureManager texMngr, Executor backgroundExecutor) { - CompletableFuture[] completableFutures = new CompletableFuture[6]; - - for (int i = 0; i < completableFutures.length; i++) { - completableFutures[i] = texMngr.preload(this.images[i], backgroundExecutor); + public void registerTextures(TextureManager textureManager) { + for (ResourceLocation resourceLocation : this.sides) { + textureManager.registerForNextReload(resourceLocation); } - - return CompletableFuture.allOf(completableFutures); } } diff --git a/net/minecraft/client/renderer/FogRenderer.java b/net/minecraft/client/renderer/FogRenderer.java index a370f7fc..e308e65c 100644 --- a/net/minecraft/client/renderer/FogRenderer.java +++ b/net/minecraft/client/renderer/FogRenderer.java @@ -87,9 +87,9 @@ public class FogRenderer { float u = 0.25F + 0.75F * renderDistance / 32.0F; u = 1.0F - (float)Math.pow(u, 0.25); int v = level.getSkyColor(camera.getPosition(), partialTick); - float w = ARGB.from8BitChannel(ARGB.red(v)); - float x = ARGB.from8BitChannel(ARGB.green(v)); - float y = ARGB.from8BitChannel(ARGB.blue(v)); + float w = ARGB.redFloat(v); + float x = ARGB.greenFloat(v); + float y = ARGB.blueFloat(v); float z = Mth.clamp(Mth.cos(level.getTimeOfDay(partialTick) * (float) (Math.PI * 2)) * 2.0F + 0.5F, 0.0F, 1.0F); BiomeManager biomeManager = level.getBiomeManager(); Vec3 vec3 = camera.getPosition().subtract(2.0, 2.0, 2.0).scale(0.25); @@ -109,10 +109,10 @@ public class FogRenderer { if (h > 0.0F && level.effects().isSunriseOrSunset(level.getTimeOfDay(partialTick))) { int aa = level.effects().getSunriseOrSunsetColor(level.getTimeOfDay(partialTick)); - h *= ARGB.from8BitChannel(ARGB.alpha(aa)); - r = r * (1.0F - h) + ARGB.from8BitChannel(ARGB.red(aa)) * h; - s = s * (1.0F - h) + ARGB.from8BitChannel(ARGB.green(aa)) * h; - t = t * (1.0F - h) + ARGB.from8BitChannel(ARGB.blue(aa)) * h; + h *= ARGB.alphaFloat(aa); + r = r * (1.0F - h) + ARGB.redFloat(aa) * h; + s = s * (1.0F - h) + ARGB.greenFloat(aa) * h; + t = t * (1.0F - h) + ARGB.blueFloat(aa) * h; } } diff --git a/net/minecraft/client/renderer/GameRenderer.java b/net/minecraft/client/renderer/GameRenderer.java index 484360da..9dbf6b82 100644 --- a/net/minecraft/client/renderer/GameRenderer.java +++ b/net/minecraft/client/renderer/GameRenderer.java @@ -28,6 +28,7 @@ import net.minecraft.client.Options; import net.minecraft.client.Screenshot; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.server.IntegratedServer; import net.minecraft.core.BlockPos; @@ -407,7 +408,9 @@ public class GameRenderer implements AutoCloseable { matrix4fStack.popMatrix(); poseStack.popPose(); if (this.minecraft.options.getCameraType().isFirstPerson() && !bl) { - ScreenEffectRenderer.renderScreenEffect(this.minecraft, poseStack); + BufferSource bufferSource = this.renderBuffers.bufferSource(); + ScreenEffectRenderer.renderScreenEffect(this.minecraft, poseStack, bufferSource); + bufferSource.endBatch(); } } } @@ -674,7 +677,7 @@ public class GameRenderer implements AutoCloseable { Matrix4f matrix4f3 = new Matrix4f().rotation(quaternionf); this.minecraft.levelRenderer.prepareCullFrustum(camera.getPosition(), matrix4f3, matrix4f2); this.minecraft.getMainRenderTarget().bindWrite(true); - this.minecraft.levelRenderer.renderLevel(this.resourcePool, deltaTracker, bl, camera, this, this.lightTexture, matrix4f3, matrix4f); + this.minecraft.levelRenderer.renderLevel(this.resourcePool, deltaTracker, bl, camera, this, matrix4f3, matrix4f); profilerFiller.popPush("hand"); if (this.renderHand) { RenderSystem.clear(256); diff --git a/net/minecraft/client/renderer/ItemBlockRenderTypes.java b/net/minecraft/client/renderer/ItemBlockRenderTypes.java index e56c70bf..42a5041d 100644 --- a/net/minecraft/client/renderer/ItemBlockRenderTypes.java +++ b/net/minecraft/client/renderer/ItemBlockRenderTypes.java @@ -74,6 +74,8 @@ public class ItemBlockRenderTypes { hashMap.put(Blocks.SEAGRASS, renderType3); hashMap.put(Blocks.TALL_SEAGRASS, renderType3); hashMap.put(Blocks.DANDELION, renderType3); + hashMap.put(Blocks.OPEN_EYEBLOSSOM, renderType3); + hashMap.put(Blocks.CLOSED_EYEBLOSSOM, renderType3); hashMap.put(Blocks.POPPY, renderType3); hashMap.put(Blocks.BLUE_ORCHID, renderType3); hashMap.put(Blocks.ALLIUM, renderType3); @@ -136,6 +138,7 @@ public class ItemBlockRenderTypes { hashMap.put(Blocks.PALE_MOSS_CARPET, renderType3); hashMap.put(Blocks.PALE_HANGING_MOSS, renderType3); hashMap.put(Blocks.GLOW_LICHEN, renderType3); + hashMap.put(Blocks.RESIN_CLUMP, renderType3); hashMap.put(Blocks.LILY_PAD, renderType3); hashMap.put(Blocks.NETHER_WART, renderType3); hashMap.put(Blocks.BREWING_STAND, renderType3); @@ -154,6 +157,8 @@ public class ItemBlockRenderTypes { hashMap.put(Blocks.POTTED_FERN, renderType3); hashMap.put(Blocks.POTTED_DANDELION, renderType3); hashMap.put(Blocks.POTTED_POPPY, renderType3); + hashMap.put(Blocks.POTTED_OPEN_EYEBLOSSOM, renderType3); + hashMap.put(Blocks.POTTED_CLOSED_EYEBLOSSOM, renderType3); hashMap.put(Blocks.POTTED_BLUE_ORCHID, renderType3); hashMap.put(Blocks.POTTED_ALLIUM, renderType3); hashMap.put(Blocks.POTTED_AZURE_BLUET, renderType3); diff --git a/net/minecraft/client/renderer/ItemInHandRenderer.java b/net/minecraft/client/renderer/ItemInHandRenderer.java index f3a15559..e08aed3e 100644 --- a/net/minecraft/client/renderer/ItemInHandRenderer.java +++ b/net/minecraft/client/renderer/ItemInHandRenderer.java @@ -14,6 +14,7 @@ import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.player.PlayerRenderer; +import net.minecraft.client.renderer.item.ItemModelResolver; import net.minecraft.client.renderer.state.MapRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.component.DataComponents; @@ -29,6 +30,7 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.MapItem; +import net.minecraft.world.item.ShieldItem; import net.minecraft.world.level.saveddata.maps.MapId; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; import org.joml.Matrix4f; @@ -119,11 +121,13 @@ public class ItemInHandRenderer { private float oOffHandHeight; private final EntityRenderDispatcher entityRenderDispatcher; private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; - public ItemInHandRenderer(Minecraft minecraft, EntityRenderDispatcher entityRenderDispatcher, ItemRenderer itemRenderer) { + public ItemInHandRenderer(Minecraft minecraft, EntityRenderDispatcher entityRenderDispatcher, ItemRenderer itemRenderer, ItemModelResolver itemModelResolver) { this.minecraft = minecraft; this.entityRenderDispatcher = entityRenderDispatcher; this.itemRenderer = itemRenderer; + this.itemModelResolver = itemModelResolver; } public void renderItem( @@ -428,12 +432,7 @@ public class ItemInHandRenderer { poseStack.scale(1.0F, 1.0F, 1.0F + g * 0.2F); poseStack.mulPose(Axis.YN.rotationDegrees(i * 45.0F)); } else { - float fx = -0.4F * Mth.sin(Mth.sqrt(swingProgress) * (float) Math.PI); - float gx = 0.2F * Mth.sin(Mth.sqrt(swingProgress) * (float) (Math.PI * 2)); - float h = -0.2F * Mth.sin(swingProgress * (float) Math.PI); - poseStack.translate(i * fx, gx, h); - this.applyItemArmTransform(poseStack, humanoidArm, equippedProgress); - this.applyItemArmAttackTransform(poseStack, humanoidArm, swingProgress); + this.swingArm(swingProgress, equippedProgress, poseStack, i, humanoidArm); if (bl2 && swingProgress < 0.001F && bl) { poseStack.translate(i * -0.641864F, 0.0F, 0.0F); poseStack.mulPose(Axis.YP.rotationDegrees(i * 10.0F)); @@ -445,8 +444,8 @@ public class ItemInHandRenderer { ); } else { boolean bl2 = humanoidArm == HumanoidArm.RIGHT; + int l = bl2 ? 1 : -1; if (player.isUsingItem() && player.getUseItemRemainingTicks() > 0 && player.getUsedItemHand() == hand) { - int l = bl2 ? 1 : -1; switch (stack.getUseAnimation()) { case NONE: this.applyItemArmTransform(poseStack, humanoidArm, equippedProgress); @@ -458,6 +457,12 @@ public class ItemInHandRenderer { break; case BLOCK: this.applyItemArmTransform(poseStack, humanoidArm, equippedProgress); + if (!(stack.getItem() instanceof ShieldItem)) { + poseStack.translate(l * -0.14142136F, 0.08F, 0.14142136F); + poseStack.mulPose(Axis.XP.rotationDegrees(-102.25F)); + poseStack.mulPose(Axis.YP.rotationDegrees(l * 13.365F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(l * 78.05F)); + } break; case BOW: this.applyItemArmTransform(poseStack, humanoidArm, equippedProgress); @@ -508,21 +513,17 @@ public class ItemInHandRenderer { break; case BRUSH: this.applyBrushTransform(poseStack, partialTicks, humanoidArm, stack, player, equippedProgress); + break; + case BUNDLE: + this.swingArm(swingProgress, equippedProgress, poseStack, l, humanoidArm); } } else if (player.isAutoSpinAttack()) { this.applyItemArmTransform(poseStack, humanoidArm, equippedProgress); - int l = bl2 ? 1 : -1; poseStack.translate(l * -0.4F, 0.8F, 0.3F); poseStack.mulPose(Axis.YP.rotationDegrees(l * 65.0F)); poseStack.mulPose(Axis.ZP.rotationDegrees(l * -85.0F)); } else { - float n = -0.4F * Mth.sin(Mth.sqrt(swingProgress) * (float) Math.PI); - float mxx = 0.2F * Mth.sin(Mth.sqrt(swingProgress) * (float) (Math.PI * 2)); - float fxxx = -0.2F * Mth.sin(swingProgress * (float) Math.PI); - int o = bl2 ? 1 : -1; - poseStack.translate(o * n, mxx, fxxx); - this.applyItemArmTransform(poseStack, humanoidArm, equippedProgress); - this.applyItemArmAttackTransform(poseStack, humanoidArm, swingProgress); + this.swingArm(swingProgress, equippedProgress, poseStack, l, humanoidArm); } this.renderItem( @@ -534,17 +535,30 @@ public class ItemInHandRenderer { } } + private void swingArm(float swingProgress, float equippedProgress, PoseStack poseStack, int direction, HumanoidArm arm) { + float f = -0.4F * Mth.sin(Mth.sqrt(swingProgress) * (float) Math.PI); + float g = 0.2F * Mth.sin(Mth.sqrt(swingProgress) * (float) (Math.PI * 2)); + float h = -0.2F * Mth.sin(swingProgress * (float) Math.PI); + poseStack.translate(direction * f, g, h); + this.applyItemArmTransform(poseStack, arm, equippedProgress); + this.applyItemArmAttackTransform(poseStack, arm, swingProgress); + } + + private boolean shouldInstantlyReplaceVisibleItem(ItemStack oldItem, ItemStack newItem) { + return ItemStack.matches(oldItem, newItem) ? true : !this.itemModelResolver.shouldPlaySwapAnimation(newItem); + } + public void tick() { this.oMainHandHeight = this.mainHandHeight; this.oOffHandHeight = this.offHandHeight; LocalPlayer localPlayer = this.minecraft.player; ItemStack itemStack = localPlayer.getMainHandItem(); ItemStack itemStack2 = localPlayer.getOffhandItem(); - if (ItemStack.matches(this.mainHandItem, itemStack)) { + if (this.shouldInstantlyReplaceVisibleItem(this.mainHandItem, itemStack)) { this.mainHandItem = itemStack; } - if (ItemStack.matches(this.offHandItem, itemStack2)) { + if (this.shouldInstantlyReplaceVisibleItem(this.offHandItem, itemStack2)) { this.offHandItem = itemStack2; } @@ -553,8 +567,10 @@ public class ItemInHandRenderer { this.offHandHeight = Mth.clamp(this.offHandHeight - 0.4F, 0.0F, 1.0F); } else { float f = localPlayer.getAttackStrengthScale(1.0F); - this.mainHandHeight = this.mainHandHeight + Mth.clamp((this.mainHandItem == itemStack ? f * f * f : 0.0F) - this.mainHandHeight, -0.4F, 0.4F); - this.offHandHeight = this.offHandHeight + Mth.clamp((this.offHandItem == itemStack2 ? 1 : 0) - this.offHandHeight, -0.4F, 0.4F); + float g = this.mainHandItem != itemStack ? 0.0F : f * f * f; + float h = this.offHandItem != itemStack2 ? 0.0F : 1.0F; + this.mainHandHeight = this.mainHandHeight + Mth.clamp(g - this.mainHandHeight, -0.4F, 0.4F); + this.offHandHeight = this.offHandHeight + Mth.clamp(h - this.offHandHeight, -0.4F, 0.4F); } if (this.mainHandHeight < 0.1F) { diff --git a/net/minecraft/client/renderer/ItemModelShaper.java b/net/minecraft/client/renderer/ItemModelShaper.java deleted file mode 100644 index bf656b28..00000000 --- a/net/minecraft/client/renderer/ItemModelShaper.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.minecraft.client.renderer; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; -import java.util.function.Supplier; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelManager; -import net.minecraft.client.resources.model.ModelResourceLocation; -import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; - -@Environment(EnvType.CLIENT) -public class ItemModelShaper { - private final Map modelToBakedModel = new HashMap(); - private final Supplier missingModel; - private final Function modelGetter; - - public ItemModelShaper(ModelManager modelManager) { - this.missingModel = modelManager::getMissingModel; - this.modelGetter = resourceLocation -> modelManager.getModel(ModelResourceLocation.inventory(resourceLocation)); - } - - public BakedModel getItemModel(ItemStack stack) { - ResourceLocation resourceLocation = stack.get(DataComponents.ITEM_MODEL); - return resourceLocation == null ? (BakedModel)this.missingModel.get() : this.getItemModel(resourceLocation); - } - - public BakedModel getItemModel(ResourceLocation name) { - return (BakedModel)this.modelToBakedModel.computeIfAbsent(name, this.modelGetter); - } - - public void invalidateCache() { - this.modelToBakedModel.clear(); - } -} diff --git a/net/minecraft/client/renderer/LevelEventHandler.java b/net/minecraft/client/renderer/LevelEventHandler.java index c7aef042..b911b4d6 100644 --- a/net/minecraft/client/renderer/LevelEventHandler.java +++ b/net/minecraft/client/renderer/LevelEventHandler.java @@ -13,6 +13,7 @@ import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; +import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; @@ -410,7 +411,7 @@ public class LevelEventHandler { ParticleUtils.spawnSmashAttackParticles(this.level, pos, data); break; case 3000: - this.level.addParticle(ParticleTypes.EXPLOSION_EMITTER, true, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 0.0, 0.0, 0.0); + this.level.addParticle(ParticleTypes.EXPLOSION_EMITTER, true, true, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 0.0, 0.0, 0.0); this.level .playLocalSound( pos, @@ -425,8 +426,8 @@ public class LevelEventHandler { this.level.playLocalSound(pos, SoundEvents.ENDER_DRAGON_GROWL, SoundSource.HOSTILE, 64.0F, 0.8F + this.level.random.nextFloat() * 0.3F, false); break; case 3002: - if (data >= 0 && data < Direction.Axis.VALUES.length) { - ParticleUtils.spawnParticlesAlongAxis(Direction.Axis.VALUES[data], this.level, pos, 0.125, ParticleTypes.ELECTRIC_SPARK, UniformInt.of(10, 19)); + if (data >= 0 && data < Axis.VALUES.length) { + ParticleUtils.spawnParticlesAlongAxis(Axis.VALUES[data], this.level, pos, 0.125, ParticleTypes.ELECTRIC_SPARK, UniformInt.of(10, 19)); } else { ParticleUtils.spawnParticlesOnBlockFaces(this.level, pos, ParticleTypes.ELECTRIC_SPARK, UniformInt.of(3, 5)); } @@ -459,7 +460,7 @@ public class LevelEventHandler { if (b == 0) { for (Direction direction : Direction.values()) { float y = direction == Direction.DOWN ? (float) Math.PI : 0.0F; - double p = direction.getAxis() == Direction.Axis.Y ? 0.65 : 0.57; + double p = direction.getAxis() == Axis.Y ? 0.65 : 0.57; ParticleUtils.spawnParticlesOnBlockFace(this.level, pos, new SculkChargeParticleOptions(y), intProvider, direction, supplier, p); } } else { @@ -489,7 +490,7 @@ public class LevelEventHandler { break; case 3007: for (int af = 0; af < 10; af++) { - this.level.addParticle(new ShriekParticleOption(af * 5), false, pos.getX() + 0.5, pos.getY() + SculkShriekerBlock.TOP_Y, pos.getZ() + 0.5, 0.0, 0.0, 0.0); + this.level.addParticle(new ShriekParticleOption(af * 5), pos.getX() + 0.5, pos.getY() + SculkShriekerBlock.TOP_Y, pos.getZ() + 0.5, 0.0, 0.0, 0.0); } BlockState blockState3 = this.level.getBlockState(pos); diff --git a/net/minecraft/client/renderer/LevelRenderer.java b/net/minecraft/client/renderer/LevelRenderer.java index c30d2178..38257b4e 100644 --- a/net/minecraft/client/renderer/LevelRenderer.java +++ b/net/minecraft/client/renderer/LevelRenderer.java @@ -4,10 +4,12 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.mojang.blaze3d.framegraph.FrameGraphBuilder; import com.mojang.blaze3d.framegraph.FramePass; +import com.mojang.blaze3d.framegraph.FrameGraphBuilder.Inspector; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.pipeline.TextureTarget; -import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.Lighting; +import com.mojang.blaze3d.platform.GlStateManager.DestFactor; +import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; import com.mojang.blaze3d.resource.GraphicsResourceAllocator; import com.mojang.blaze3d.resource.RenderTargetDescriptor; import com.mojang.blaze3d.resource.ResourceHandle; @@ -15,11 +17,11 @@ import com.mojang.blaze3d.shaders.Uniform; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator; -import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.VertexBuffer; import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.blaze3d.vertex.VertexMultiConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import com.mojang.logging.LogUtils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -53,6 +55,7 @@ import net.minecraft.client.PrioritizeChunkUpdates; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.DimensionSpecialEffects.SkyType; import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.chunk.RenderRegionCache; @@ -87,7 +90,6 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.lighting.LevelLightEngine; import net.minecraft.world.level.material.FogType; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; @@ -209,9 +211,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab public void doEntityOutline() { if (this.shouldShowEntityOutlines()) { RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE - ); + RenderSystem.blendFuncSeparate(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ZERO, DestFactor.ONE); this.entityOutlineTarget.blitAndBlendToScreen(this.minecraft.getWindow().getWidth(), this.minecraft.getWindow().getHeight()); RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); @@ -284,10 +284,8 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab this.viewArea = new ViewArea(this.sectionRenderDispatcher, this.level, this.minecraft.options.getEffectiveRenderDistance(), this); this.sectionOcclusionGraph.waitAndReset(this.viewArea); this.clearVisibleSections(); - Entity entity = this.minecraft.getCameraEntity(); - if (entity != null) { - this.viewArea.repositionCamera(SectionPos.of(entity)); - } + Camera camera = this.minecraft.gameRenderer.getMainCamera(); + this.viewArea.repositionCamera(SectionPos.of(camera.getPosition())); } } @@ -425,7 +423,6 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, - LightTexture lightTexture, Matrix4f frustumMatrix, Matrix4f projectionMatrix ) { @@ -504,7 +501,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab postChain2.addToFrame(frameGraphBuilder, i, j, this.targets); } - this.addParticlesPass(frameGraphBuilder, camera, lightTexture, f, fogParameters); + this.addParticlesPass(frameGraphBuilder, camera, f, fogParameters); CloudStatus cloudStatus = this.minecraft.options.getCloudsType(); if (cloudStatus != CloudStatus.OFF) { float k = this.level.effects().getCloudHeight(); @@ -515,14 +512,14 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab } } - this.addWeatherPass(frameGraphBuilder, lightTexture, camera.getPosition(), f, fogParameters); + this.addWeatherPass(frameGraphBuilder, camera.getPosition(), f, fogParameters); if (postChain != null) { postChain.addToFrame(frameGraphBuilder, i, j, this.targets); } this.addLateDebugPass(frameGraphBuilder, vec3, fogParameters); profilerFiller.popPush("framegraph"); - frameGraphBuilder.execute(graphicsResourceAllocator, new FrameGraphBuilder.Inspector() { + frameGraphBuilder.execute(graphicsResourceAllocator, new Inspector() { @Override public void beforeExecutePass(String name) { profilerFiller.push(name); @@ -674,7 +671,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab }); } - private void addParticlesPass(FrameGraphBuilder frameGraphBuilder, Camera camera, LightTexture lightTexture, float partialTick, FogParameters fog) { + private void addParticlesPass(FrameGraphBuilder frameGraphBuilder, Camera camera, float partialTick, FogParameters fog) { FramePass framePass = frameGraphBuilder.addPass("particles"); if (this.targets.particles != null) { this.targets.particles = framePass.readsAndWrites(this.targets.particles); @@ -693,9 +690,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab resourceHandle2.get().copyDepthFrom(resourceHandle.get()); } - RenderStateShard.PARTICLES_TARGET.setupRenderState(); - this.minecraft.particleEngine.render(lightTexture, camera, partialTick); - RenderStateShard.PARTICLES_TARGET.clearRenderState(); + this.minecraft.particleEngine.render(camera, partialTick, this.renderBuffers.bufferSource()); }); } @@ -727,7 +722,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab }); } - private void addWeatherPass(FrameGraphBuilder frameGraphBuilder, LightTexture lightTexture, Vec3 cameraPosition, float partialTick, FogParameters fog) { + private void addWeatherPass(FrameGraphBuilder frameGraphBuilder, Vec3 cameraPosition, float partialTick, FogParameters fog) { int i = this.minecraft.options.getEffectiveRenderDistance() * 16; float f = this.minecraft.gameRenderer.getDepthFar(); FramePass framePass = frameGraphBuilder.addPass("weather"); @@ -739,10 +734,10 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab framePass.executes(() -> { RenderSystem.setShaderFog(fog); - RenderStateShard.WEATHER_TARGET.setupRenderState(); - this.weatherEffectRenderer.render(this.minecraft.level, lightTexture, this.ticks, partialTick, cameraPosition); + BufferSource bufferSource = this.renderBuffers.bufferSource(); + this.weatherEffectRenderer.render(this.minecraft.level, bufferSource, this.ticks, partialTick, cameraPosition); this.worldBorderRenderer.render(this.level.getWorldBorder(), cameraPosition, i, f); - RenderStateShard.WEATHER_TARGET.clearRenderState(); + bufferSource.endBatch(); }); } @@ -839,7 +834,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab if (sortedSet != null && !sortedSet.isEmpty()) { int i = ((BlockDestructionProgress)sortedSet.last()).getProgress(); if (i >= 0) { - PoseStack.Pose pose = poseStack.last(); + Pose pose = poseStack.last(); VertexConsumer vertexConsumer = new SheetedDecalTextureGenerator( crumblingBufferSource.getBuffer((RenderType)ModelBakery.DESTROY_TYPES.get(i)), pose, 1.0F ); @@ -881,7 +876,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab int i = ((BlockDestructionProgress)sortedSet.last()).getProgress(); poseStack.pushPose(); poseStack.translate(blockPos.getX() - d, blockPos.getY() - e, blockPos.getZ() - f); - PoseStack.Pose pose = poseStack.last(); + Pose pose = poseStack.last(); VertexConsumer vertexConsumer = new SheetedDecalTextureGenerator(bufferSource.getBuffer((RenderType)ModelBakery.DESTROY_TYPES.get(i)), pose, 1.0F); this.minecraft.getBlockRenderer().renderBreakingTexture(this.level.getBlockState(blockPos), blockPos, this.level, poseStack, vertexConsumer); poseStack.popPose(); @@ -989,7 +984,7 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab renderType.clearRenderState(); zone.close(); } else { - compiledShaderProgram.setDefaultUniforms(VertexFormat.Mode.QUADS, frustrumMatrix, projectionMatrix, this.minecraft.getWindow()); + compiledShaderProgram.setDefaultUniforms(Mode.QUADS, frustrumMatrix, projectionMatrix, this.minecraft.getWindow()); compiledShaderProgram.apply(); Uniform uniform = compiledShaderProgram.MODEL_OFFSET; @@ -1059,18 +1054,16 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab FogType fogType = camera.getFluidInCamera(); if (fogType != FogType.POWDER_SNOW && fogType != FogType.LAVA && !this.doesMobEffectBlockSky(camera)) { DimensionSpecialEffects dimensionSpecialEffects = this.level.effects(); - DimensionSpecialEffects.SkyType skyType = dimensionSpecialEffects.skyType(); - if (skyType != DimensionSpecialEffects.SkyType.NONE) { + SkyType skyType = dimensionSpecialEffects.skyType(); + if (skyType != SkyType.NONE) { FramePass framePass = frameGraphBuilder.addPass("sky"); this.targets.main = framePass.readsAndWrites(this.targets.main); framePass.executes(() -> { RenderSystem.setShaderFog(fog); - RenderStateShard.MAIN_TARGET.setupRenderState(); - PoseStack poseStack = new PoseStack(); - if (skyType == DimensionSpecialEffects.SkyType.END) { - this.skyRenderer.renderEndSky(poseStack); + if (skyType == SkyType.END) { + this.skyRenderer.renderEndSky(); } else { - Tesselator tesselator = Tesselator.getInstance(); + PoseStack poseStack = new PoseStack(); float g = this.level.getSunAngle(partialTick); float h = this.level.getTimeOfDay(partialTick); float i = 1.0F - this.level.getRainLevel(partialTick); @@ -1078,15 +1071,17 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab int k = dimensionSpecialEffects.getSunriseOrSunsetColor(h); int l = this.level.getMoonPhase(); int m = this.level.getSkyColor(this.minecraft.gameRenderer.getMainCamera().getPosition(), partialTick); - float n = ARGB.from8BitChannel(ARGB.red(m)); - float o = ARGB.from8BitChannel(ARGB.green(m)); - float p = ARGB.from8BitChannel(ARGB.blue(m)); + float n = ARGB.redFloat(m); + float o = ARGB.greenFloat(m); + float p = ARGB.blueFloat(m); this.skyRenderer.renderSkyDisc(n, o, p); + BufferSource bufferSource = this.renderBuffers.bufferSource(); if (dimensionSpecialEffects.isSunriseOrSunset(h)) { - this.skyRenderer.renderSunriseAndSunset(poseStack, tesselator, g, k); + this.skyRenderer.renderSunriseAndSunset(poseStack, bufferSource, g, k); } - this.skyRenderer.renderSunMoonAndStars(poseStack, tesselator, h, l, i, j, fog); + this.skyRenderer.renderSunMoonAndStars(poseStack, bufferSource, h, l, i, j, fog); + bufferSource.endBatch(); if (this.shouldRenderDarkDisc(partialTick)) { this.skyRenderer.renderDarkDisc(poseStack); } @@ -1109,14 +1104,12 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab private void compileSections(Camera camera) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("populate_sections_to_compile"); - LevelLightEngine levelLightEngine = this.level.getLightEngine(); RenderRegionCache renderRegionCache = new RenderRegionCache(); BlockPos blockPos = camera.getBlockPosition(); List list = Lists.newArrayList(); for (SectionRenderDispatcher.RenderSection renderSection : this.visibleSections) { - long l = renderSection.getSectionNode(); - if (renderSection.isDirty() && renderSection.hasAllNeighbors() && isLightOnInSectionAndNeighbors(levelLightEngine, l)) { + if (renderSection.isDirty() && renderSection.hasAllNeighbors()) { boolean bl = false; if (this.minecraft.options.prioritizeChunkUpdates().get() == PrioritizeChunkUpdates.NEARBY) { BlockPos blockPos2 = renderSection.getOrigin().offset(8, 8, 8); @@ -1149,21 +1142,6 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab this.scheduleTranslucentSectionResort(camera.getPosition()); } - private static boolean isLightOnInSectionAndNeighbors(LevelLightEngine lightEngine, long packedSectionPos) { - int i = SectionPos.z(packedSectionPos); - int j = SectionPos.x(packedSectionPos); - - for (int k = i - 1; k <= i + 1; k++) { - for (int l = j - 1; l <= j + 1; l++) { - if (!lightEngine.lightOnInColumn(SectionPos.getZeroNode(l, k))) { - return false; - } - } - } - - return true; - } - private void renderHitOutline( PoseStack poseStack, VertexConsumer buffer, Entity entity, double camX, double camY, double camZ, BlockPos pos, BlockState state, int color ) { @@ -1342,8 +1320,8 @@ public class LevelRenderer implements ResourceManagerReloadListener, AutoCloseab return this.sectionRenderDispatcher.isQueueEmpty(); } - public void onChunkLoaded(ChunkPos chunkPos) { - this.sectionOcclusionGraph.onChunkLoaded(chunkPos); + public void onChunkReadyToRender(ChunkPos chunkPos) { + this.sectionOcclusionGraph.onChunkReadyToRender(chunkPos); } public void needsUpdate() { diff --git a/net/minecraft/client/renderer/LightTexture.java b/net/minecraft/client/renderer/LightTexture.java index fb0c9be7..5e836749 100644 --- a/net/minecraft/client/renderer/LightTexture.java +++ b/net/minecraft/client/renderer/LightTexture.java @@ -5,7 +5,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferUploader; import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import java.util.Objects; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -115,7 +115,7 @@ public class LightTexture implements AutoCloseable { compiledShaderProgram.safeGetUniform("DarkenWorldFactor").set(this.renderer.getDarkenWorldAmount(partialTicks)); compiledShaderProgram.safeGetUniform("BrightnessFactor").set(Math.max(0.0F, o - i)); this.target.bindWrite(true); - BufferBuilder bufferBuilder = RenderSystem.renderThreadTesselator().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLIT_SCREEN); + BufferBuilder bufferBuilder = RenderSystem.renderThreadTesselator().begin(Mode.QUADS, DefaultVertexFormat.BLIT_SCREEN); bufferBuilder.addVertex(0.0F, 0.0F, 0.0F); bufferBuilder.addVertex(1.0F, 0.0F, 0.0F); bufferBuilder.addVertex(1.0F, 1.0F, 0.0F); @@ -149,12 +149,12 @@ public class LightTexture implements AutoCloseable { return packedLight >>> 20 & 15; } - public static int lightCoordsWithEmission(int packedLight, int emmision) { - if (emmision == 0) { + public static int lightCoordsWithEmission(int packedLight, int emission) { + if (emission == 0) { return packedLight; } else { - int i = Math.max(sky(packedLight), emmision); - int j = Math.max(block(packedLight), emmision); + int i = Math.max(sky(packedLight), emission); + int j = Math.max(block(packedLight), emission); return pack(j, i); } } diff --git a/net/minecraft/client/renderer/PostChain.java b/net/minecraft/client/renderer/PostChain.java index d24cf7ec..e24cd289 100644 --- a/net/minecraft/client/renderer/PostChain.java +++ b/net/minecraft/client/renderer/PostChain.java @@ -8,7 +8,6 @@ import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.resource.GraphicsResourceAllocator; import com.mojang.blaze3d.resource.RenderTargetDescriptor; import com.mojang.blaze3d.resource.ResourceHandle; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,14 +19,8 @@ import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.PostChain.TargetBundle.1; -import net.minecraft.client.renderer.PostChainConfig.FixedSizedTarget; -import net.minecraft.client.renderer.PostChainConfig.FullScreenTarget; -import net.minecraft.client.renderer.PostChainConfig.Input; -import net.minecraft.client.renderer.PostChainConfig.InternalTarget; -import net.minecraft.client.renderer.PostChainConfig.Pass; -import net.minecraft.client.renderer.PostChainConfig.TargetInput; -import net.minecraft.client.renderer.PostChainConfig.TextureInput; -import net.minecraft.client.renderer.PostChainConfig.Uniform; +import net.minecraft.client.renderer.PostPass.TargetInput; +import net.minecraft.client.renderer.PostPass.TextureInput; import net.minecraft.client.renderer.texture.AbstractTexture; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.resources.ResourceLocation; @@ -38,10 +31,10 @@ import org.joml.Matrix4f; public class PostChain { public static final ResourceLocation MAIN_TARGET_ID = ResourceLocation.withDefaultNamespace("main"); private final List passes; - private final Map internalTargets; + private final Map internalTargets; private final Set externalTargets; - private PostChain(List passes, Map internalTargets, Set externalTargets) { + private PostChain(List passes, Map internalTargets, Set externalTargets) { this.passes = passes; this.internalTargets = internalTargets; this.externalTargets = externalTargets; @@ -57,7 +50,7 @@ public class PostChain { } else { Builder builder = ImmutableList.builder(); - for (Pass pass : config.passes()) { + for (PostChainConfig.Pass pass : config.passes()) { builder.add(createPass(textureManager, shaderManager, pass)); } @@ -65,31 +58,28 @@ public class PostChain { } } - private static PostPass createPass(TextureManager textureManager, ShaderManager shaderManager, Pass pass) throws ShaderManager.CompilationException { - ResourceLocation resourceLocation = pass.program(); - CompiledShaderProgram compiledShaderProgram = shaderManager.getProgramForLoading( - new ShaderProgram(resourceLocation, DefaultVertexFormat.POSITION, ShaderDefines.EMPTY) - ); + private static PostPass createPass(TextureManager textureManager, ShaderManager shaderManager, PostChainConfig.Pass pass) throws ShaderManager.CompilationException { + CompiledShaderProgram compiledShaderProgram = shaderManager.getProgramForLoading(pass.program()); - for (Uniform uniform : pass.uniforms()) { + for (PostChainConfig.Uniform uniform : pass.uniforms()) { String string = uniform.name(); if (compiledShaderProgram.getUniform(string) == null) { - throw new ShaderManager.CompilationException("Uniform '" + string + "' does not exist for " + resourceLocation); + throw new ShaderManager.CompilationException("Uniform '" + string + "' does not exist for " + pass.programId()); } } - String string2 = resourceLocation.toString(); + String string2 = pass.programId().toString(); PostPass postPass = new PostPass(string2, compiledShaderProgram, pass.outputTarget(), pass.uniforms()); - for (Input input : pass.inputs()) { + for (PostChainConfig.Input input : pass.inputs()) { switch (input) { - case TextureInput(String var35, ResourceLocation var36, int var37, int var38, boolean var39): - AbstractTexture abstractTexture = textureManager.getTexture(var36.withPath((UnaryOperator)(stringx -> "textures/effect/" + stringx + ".png"))); - abstractTexture.setFilter(var39, false); - postPass.addInput(new PostPass.TextureInput(var35, abstractTexture, var37, var38)); + case PostChainConfig.TextureInput(String var34, ResourceLocation var35, int var36, int var37, boolean var38): + AbstractTexture abstractTexture = textureManager.getTexture(var35.withPath((UnaryOperator)(stringx -> "textures/effect/" + stringx + ".png"))); + abstractTexture.setFilter(var38, false); + postPass.addInput(new TextureInput(var34, abstractTexture, var36, var37)); break; - case TargetInput(String var22, ResourceLocation var41, boolean var42, boolean var43): - postPass.addInput(new PostPass.TargetInput(var22, var41, var42, var43)); + case PostChainConfig.TargetInput(String var21, ResourceLocation var40, boolean var41, boolean var42): + postPass.addInput(new TargetInput(var21, var40, var41, var42)); break; default: throw new MatchException(null, null); @@ -107,12 +97,12 @@ public class PostChain { map.put(resourceLocation, targetBundle.getOrThrow(resourceLocation)); } - for (Entry entry : this.internalTargets.entrySet()) { + for (Entry entry : this.internalTargets.entrySet()) { ResourceLocation resourceLocation2 = (ResourceLocation)entry.getKey(); - RenderTargetDescriptor renderTargetDescriptor = switch ((InternalTarget)entry.getValue()) { - case FixedSizedTarget(int var25, int var26) -> new RenderTargetDescriptor(var25, var26, true); - case FullScreenTarget var16 -> new RenderTargetDescriptor(width, height, true); + RenderTargetDescriptor renderTargetDescriptor = switch ((PostChainConfig.InternalTarget)entry.getValue()) { + case PostChainConfig.FixedSizedTarget(int var25, int var26) -> new RenderTargetDescriptor(var25, var26, true); + case PostChainConfig.FullScreenTarget var16 -> new RenderTargetDescriptor(width, height, true); default -> throw new MatchException(null, null); }; map.put(resourceLocation2, frameGraphBuilder.createInternal(resourceLocation2.toString(), renderTargetDescriptor)); diff --git a/net/minecraft/client/renderer/PostChainConfig.java b/net/minecraft/client/renderer/PostChainConfig.java index 6cc78ed9..c85f6530 100644 --- a/net/minecraft/client/renderer/PostChainConfig.java +++ b/net/minecraft/client/renderer/PostChainConfig.java @@ -1,5 +1,6 @@ package net.minecraft.client.renderer; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; @@ -71,7 +72,7 @@ public record PostChainConfig(Map inputs, ResourceLocation outputTarget, List uniforms) { + public record Pass(ResourceLocation programId, List inputs, ResourceLocation outputTarget, List uniforms) { private static final Codec> INPUTS_CODEC = PostChainConfig.Input.CODEC.listOf().validate(list -> { Set set = new ObjectArraySet<>(list.size()); @@ -85,13 +86,17 @@ public record PostChainConfig(Map CODEC = RecordCodecBuilder.create( instance -> instance.group( - ResourceLocation.CODEC.fieldOf("program").forGetter(PostChainConfig.Pass::program), + ResourceLocation.CODEC.fieldOf("program").forGetter(PostChainConfig.Pass::programId), INPUTS_CODEC.optionalFieldOf("inputs", List.of()).forGetter(PostChainConfig.Pass::inputs), ResourceLocation.CODEC.fieldOf("output").forGetter(PostChainConfig.Pass::outputTarget), PostChainConfig.Uniform.CODEC.listOf().optionalFieldOf("uniforms", List.of()).forGetter(PostChainConfig.Pass::uniforms) ) .apply(instance, PostChainConfig.Pass::new) ); + + public ShaderProgram program() { + return new ShaderProgram(this.programId, DefaultVertexFormat.POSITION, ShaderDefines.EMPTY); + } } @Environment(EnvType.CLIENT) diff --git a/net/minecraft/client/renderer/RenderStateShard.java b/net/minecraft/client/renderer/RenderStateShard.java index ae64f557..fc4a5d1e 100644 --- a/net/minecraft/client/renderer/RenderStateShard.java +++ b/net/minecraft/client/renderer/RenderStateShard.java @@ -1,9 +1,11 @@ package net.minecraft.client.renderer; -import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.pipeline.RenderTarget; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.platform.GlStateManager.DestFactor; +import com.mojang.blaze3d.platform.GlStateManager.LogicOp; +import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; import com.mojang.blaze3d.systems.RenderSystem; +import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.OptionalDouble; @@ -12,12 +14,12 @@ import net.fabricmc.api.Environment; import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderStateShard.MultiTextureStateShard.Builder; +import net.minecraft.client.renderer.RenderStateShard.MultiTextureStateShard.Entry; import net.minecraft.client.renderer.texture.AbstractTexture; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.TriState; -import org.apache.commons.lang3.tuple.Triple; import org.joml.Matrix4f; import org.joml.Matrix4fStack; @@ -33,7 +35,7 @@ public abstract class RenderStateShard { protected static final RenderStateShard.TransparencyStateShard ADDITIVE_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( "additive_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); + RenderSystem.blendFunc(SourceFactor.ONE, DestFactor.ONE); }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); @@ -42,50 +44,42 @@ public abstract class RenderStateShard { protected static final RenderStateShard.TransparencyStateShard LIGHTNING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( "lightning_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE); + RenderSystem.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE); }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } ); - protected static final RenderStateShard.TransparencyStateShard GLINT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( - "glint_transparency", - () -> { + protected static final RenderStateShard.TransparencyStateShard GLINT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard("glint_transparency", () -> { + RenderSystem.enableBlend(); + RenderSystem.blendFuncSeparate(SourceFactor.SRC_COLOR, DestFactor.ONE, SourceFactor.ZERO, DestFactor.ONE); + }, () -> { + RenderSystem.disableBlend(); + RenderSystem.defaultBlendFunc(); + }); + protected static final RenderStateShard.TransparencyStateShard CRUMBLING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( + "crumbling_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.SRC_COLOR, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE - ); - }, - () -> { + RenderSystem.blendFuncSeparate(SourceFactor.DST_COLOR, DestFactor.SRC_COLOR, SourceFactor.ONE, DestFactor.ZERO); + }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } ); - protected static final RenderStateShard.TransparencyStateShard CRUMBLING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( - "crumbling_transparency", - () -> { + protected static final RenderStateShard.TransparencyStateShard OVERLAY_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( + "overlay_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.DST_COLOR, GlStateManager.DestFactor.SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO - ); - }, - () -> { + RenderSystem.blendFuncSeparate(SourceFactor.SRC_ALPHA, DestFactor.ONE, SourceFactor.ONE, DestFactor.ZERO); + }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } ); protected static final RenderStateShard.TransparencyStateShard TRANSLUCENT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( - "translucent_transparency", - () -> { + "translucent_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.SRC_ALPHA, - GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, - GlStateManager.SourceFactor.ONE, - GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA - ); - }, - () -> { + RenderSystem.blendFuncSeparate(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ONE_MINUS_SRC_ALPHA); + }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } @@ -93,24 +87,17 @@ public abstract class RenderStateShard { protected static final RenderStateShard.TransparencyStateShard VIGNETTE_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( "vignette_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR); + RenderSystem.blendFunc(SourceFactor.ZERO, DestFactor.ONE_MINUS_SRC_COLOR); }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } ); protected static final RenderStateShard.TransparencyStateShard CROSSHAIR_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( - "crosshair_transparency", - () -> { + "crosshair_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, - GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, - GlStateManager.SourceFactor.ONE, - GlStateManager.DestFactor.ZERO - ); - }, - () -> { + RenderSystem.blendFuncSeparate(SourceFactor.ONE_MINUS_DST_COLOR, DestFactor.ONE_MINUS_SRC_COLOR, SourceFactor.ONE, DestFactor.ZERO); + }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } @@ -125,14 +112,10 @@ public abstract class RenderStateShard { } ); protected static final RenderStateShard.TransparencyStateShard NAUSEA_OVERLAY_TRANSPARENCY = new RenderStateShard.TransparencyStateShard( - "nausea_overlay_transparency", - () -> { + "nausea_overlay_transparency", () -> { RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE - ); - }, - () -> { + RenderSystem.blendFuncSeparate(SourceFactor.ONE, DestFactor.ONE, SourceFactor.ONE, DestFactor.ONE); + }, () -> { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } @@ -148,6 +131,7 @@ public abstract class RenderStateShard { ); protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_SHADER = new RenderStateShard.ShaderStateShard(CoreShaders.POSITION_COLOR); protected static final RenderStateShard.ShaderStateShard POSITION_TEXTURE_COLOR_SHADER = new RenderStateShard.ShaderStateShard(CoreShaders.POSITION_TEX_COLOR); + protected static final RenderStateShard.ShaderStateShard PARTICLE_SHADER = new RenderStateShard.ShaderStateShard(CoreShaders.PARTICLE); protected static final RenderStateShard.ShaderStateShard RENDERTYPE_SOLID_SHADER = new RenderStateShard.ShaderStateShard(CoreShaders.RENDERTYPE_SOLID); protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_MIPPED_SHADER = new RenderStateShard.ShaderStateShard( CoreShaders.RENDERTYPE_CUTOUT_MIPPED @@ -320,6 +304,13 @@ public abstract class RenderStateShard { matrix4fStack.popMatrix(); } ); + protected static final RenderStateShard.LayeringStateShard WORLD_BORDER_LAYERING = new RenderStateShard.LayeringStateShard("world_border_layering", () -> { + RenderSystem.polygonOffset(-3.0F, -3.0F); + RenderSystem.enablePolygonOffset(); + }, () -> { + RenderSystem.polygonOffset(0.0F, 0.0F); + RenderSystem.disablePolygonOffset(); + }); protected static final RenderStateShard.OutputStateShard MAIN_TARGET = new RenderStateShard.OutputStateShard( "main_target", () -> Minecraft.getInstance().getMainRenderTarget().bindWrite(false), () -> {} ); @@ -377,7 +368,7 @@ public abstract class RenderStateShard { ); protected static final RenderStateShard.ColorLogicStateShard OR_REVERSE_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard("or_reverse", () -> { RenderSystem.enableColorLogicOp(); - RenderSystem.logicOp(GlStateManager.LogicOp.OR_REVERSE); + RenderSystem.logicOp(LogicOp.OR_REVERSE); }, () -> RenderSystem.disableColorLogicOp()); public RenderStateShard(String name, Runnable setupState, Runnable clearState) { @@ -537,17 +528,17 @@ public abstract class RenderStateShard { protected static class MultiTextureStateShard extends RenderStateShard.EmptyTextureStateShard { private final Optional cutoutTexture; - MultiTextureStateShard(ImmutableList> textures) { + MultiTextureStateShard(List entries) { super(() -> { - int i = 0; - - for (Triple triple : textures) { + for (int i = 0; i < entries.size(); i++) { + Entry entry = (Entry)entries.get(i); TextureManager textureManager = Minecraft.getInstance().getTextureManager(); - textureManager.getTexture(triple.getLeft()).setFilter(triple.getMiddle(), triple.getRight()); - RenderSystem.setShaderTexture(i++, triple.getLeft()); + AbstractTexture abstractTexture = textureManager.getTexture(entry.id); + abstractTexture.setFilter(entry.blur, entry.mipmap); + RenderSystem.setShaderTexture(i, abstractTexture.getId()); } }, () -> {}); - this.cutoutTexture = textures.stream().findFirst().map(Triple::getLeft); + this.cutoutTexture = entries.isEmpty() ? Optional.empty() : Optional.of(((Entry)entries.getFirst()).id); } @Override @@ -619,8 +610,8 @@ public abstract class RenderStateShard { super(() -> { TextureManager textureManager = Minecraft.getInstance().getTextureManager(); AbstractTexture abstractTexture = textureManager.getTexture(texture); - abstractTexture.setFilter(blur.toBoolean(abstractTexture.getDefaultBlur()), mipmap); - RenderSystem.setShaderTexture(0, texture); + abstractTexture.setFilter(blur, mipmap); + RenderSystem.setShaderTexture(0, abstractTexture.getId()); }, () -> {}); this.texture = Optional.of(texture); this.blur = blur; diff --git a/net/minecraft/client/renderer/RenderType.java b/net/minecraft/client/renderer/RenderType.java index 0ca92adb..7fec919a 100644 --- a/net/minecraft/client/renderer/RenderType.java +++ b/net/minecraft/client/renderer/RenderType.java @@ -5,6 +5,7 @@ import com.mojang.blaze3d.vertex.BufferUploader; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.MeshData; import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import java.util.List; import java.util.Optional; import java.util.OptionalDouble; @@ -30,7 +31,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType SOLID = create( "solid", DefaultVertexFormat.BLOCK, - VertexFormat.Mode.QUADS, + Mode.QUADS, 4194304, true, false, @@ -43,7 +44,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType CUTOUT_MIPPED = create( "cutout_mipped", DefaultVertexFormat.BLOCK, - VertexFormat.Mode.QUADS, + Mode.QUADS, 4194304, true, false, @@ -56,7 +57,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType CUTOUT = create( "cutout", DefaultVertexFormat.BLOCK, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, true, false, @@ -67,10 +68,10 @@ public abstract class RenderType extends RenderStateShard { .createCompositeState(true) ); private static final RenderType TRANSLUCENT = create( - "translucent", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 786432, true, true, translucentState(RENDERTYPE_TRANSLUCENT_SHADER) + "translucent", DefaultVertexFormat.BLOCK, Mode.QUADS, 786432, true, true, translucentState(RENDERTYPE_TRANSLUCENT_SHADER) ); private static final RenderType TRANSLUCENT_MOVING_BLOCK = create( - "translucent_moving_block", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 786432, false, true, translucentMovingBlockState() + "translucent_moving_block", DefaultVertexFormat.BLOCK, Mode.QUADS, 786432, false, true, translucentMovingBlockState() ); private static final Function ARMOR_CUTOUT_NO_CULL = Util.memoize( (Function)(resourceLocation -> createArmorCutoutNoCull("armor_cutout_no_cull", resourceLocation, false)) @@ -86,7 +87,7 @@ public abstract class RenderType extends RenderStateShard { .setOverlayState(OVERLAY) .setLayeringState(VIEW_OFFSET_Z_LAYERING) .createCompositeState(true); - return create("armor_translucent", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, compositeState); + return create("armor_translucent", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, true, compositeState); }) ); private static final Function ENTITY_SOLID = Util.memoize( @@ -98,7 +99,7 @@ public abstract class RenderType extends RenderStateShard { .setLightmapState(LIGHTMAP) .setOverlayState(OVERLAY) .createCompositeState(true); - return create("entity_solid", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, compositeState); + return create("entity_solid", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, false, compositeState); }) ); private static final Function ENTITY_SOLID_Z_OFFSET_FORWARD = Util.memoize( @@ -111,7 +112,7 @@ public abstract class RenderType extends RenderStateShard { .setOverlayState(OVERLAY) .setLayeringState(VIEW_OFFSET_Z_LAYERING_FORWARD) .createCompositeState(true); - return create("entity_solid_z_offset_forward", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, compositeState); + return create("entity_solid_z_offset_forward", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, false, compositeState); }) ); private static final Function ENTITY_CUTOUT = Util.memoize( @@ -123,7 +124,7 @@ public abstract class RenderType extends RenderStateShard { .setLightmapState(LIGHTMAP) .setOverlayState(OVERLAY) .createCompositeState(true); - return create("entity_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, compositeState); + return create("entity_cutout", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, false, compositeState); }) ); private static final BiFunction ENTITY_CUTOUT_NO_CULL = Util.memoize( @@ -136,7 +137,7 @@ public abstract class RenderType extends RenderStateShard { .setLightmapState(LIGHTMAP) .setOverlayState(OVERLAY) .createCompositeState(boolean_); - return create("entity_cutout_no_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, compositeState); + return create("entity_cutout_no_cull", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, false, compositeState); }) ); private static final BiFunction ENTITY_CUTOUT_NO_CULL_Z_OFFSET = Util.memoize( @@ -150,7 +151,7 @@ public abstract class RenderType extends RenderStateShard { .setOverlayState(OVERLAY) .setLayeringState(VIEW_OFFSET_Z_LAYERING) .createCompositeState(boolean_); - return create("entity_cutout_no_cull_z_offset", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, compositeState); + return create("entity_cutout_no_cull_z_offset", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, false, compositeState); }) ); private static final Function ITEM_ENTITY_TRANSLUCENT_CULL = Util.memoize( @@ -164,7 +165,7 @@ public abstract class RenderType extends RenderStateShard { .setOverlayState(OVERLAY) .setWriteMaskState(COLOR_DEPTH_WRITE) .createCompositeState(true); - return create("item_entity_translucent_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, compositeState); + return create("item_entity_translucent_cull", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, true, compositeState); }) ); private static final BiFunction ENTITY_TRANSLUCENT = Util.memoize( @@ -177,7 +178,7 @@ public abstract class RenderType extends RenderStateShard { .setLightmapState(LIGHTMAP) .setOverlayState(OVERLAY) .createCompositeState(boolean_); - return create("entity_translucent", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, compositeState); + return create("entity_translucent", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, true, compositeState); }) ); private static final BiFunction ENTITY_TRANSLUCENT_EMISSIVE = Util.memoize( @@ -190,7 +191,7 @@ public abstract class RenderType extends RenderStateShard { .setWriteMaskState(COLOR_WRITE) .setOverlayState(OVERLAY) .createCompositeState(boolean_); - return create("entity_translucent_emissive", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, compositeState); + return create("entity_translucent_emissive", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, true, compositeState); }) ); private static final Function ENTITY_SMOOTH_CUTOUT = Util.memoize( @@ -201,7 +202,7 @@ public abstract class RenderType extends RenderStateShard { .setCullState(NO_CULL) .setLightmapState(LIGHTMAP) .createCompositeState(true); - return create("entity_smooth_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, compositeState); + return create("entity_smooth_cutout", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, compositeState); }) ); private static final BiFunction BEACON_BEAM = Util.memoize( @@ -212,7 +213,7 @@ public abstract class RenderType extends RenderStateShard { .setTransparencyState(boolean_ ? TRANSLUCENT_TRANSPARENCY : NO_TRANSPARENCY) .setWriteMaskState(boolean_ ? COLOR_WRITE : COLOR_DEPTH_WRITE) .createCompositeState(false); - return create("beacon_beam", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, false, true, compositeState); + return create("beacon_beam", DefaultVertexFormat.BLOCK, Mode.QUADS, 1536, false, true, compositeState); }) ); private static final Function ENTITY_DECAL = Util.memoize( @@ -225,7 +226,7 @@ public abstract class RenderType extends RenderStateShard { .setLightmapState(LIGHTMAP) .setOverlayState(OVERLAY) .createCompositeState(false); - return create("entity_decal", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, compositeState); + return create("entity_decal", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, compositeState); }) ); private static final Function ENTITY_NO_OUTLINE = Util.memoize( @@ -239,7 +240,7 @@ public abstract class RenderType extends RenderStateShard { .setOverlayState(OVERLAY) .setWriteMaskState(COLOR_WRITE) .createCompositeState(false); - return create("entity_no_outline", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, false, true, compositeState); + return create("entity_no_outline", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, false, true, compositeState); }) ); private static final Function ENTITY_SHADOW = Util.memoize( @@ -255,7 +256,7 @@ public abstract class RenderType extends RenderStateShard { .setDepthTestState(LEQUAL_DEPTH_TEST) .setLayeringState(VIEW_OFFSET_Z_LAYERING) .createCompositeState(false); - return create("entity_shadow", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, false, false, compositeState); + return create("entity_shadow", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, false, false, compositeState); }) ); private static final Function DRAGON_EXPLOSION_ALPHA = Util.memoize( @@ -265,7 +266,7 @@ public abstract class RenderType extends RenderStateShard { .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) .setCullState(NO_CULL) .createCompositeState(true); - return create("entity_alpha", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, compositeState); + return create("entity_alpha", DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, compositeState); }) ); private static final BiFunction EYES = Util.memoize( @@ -274,7 +275,7 @@ public abstract class RenderType extends RenderStateShard { return create( "eyes", DefaultVertexFormat.NEW_ENTITY, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -290,7 +291,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType LEASH = create( "leash", DefaultVertexFormat.POSITION_COLOR_LIGHTMAP, - VertexFormat.Mode.TRIANGLE_STRIP, + Mode.TRIANGLE_STRIP, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_LEASH_SHADER) @@ -302,7 +303,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType WATER_MASK = create( "water_mask", DefaultVertexFormat.POSITION, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_WATER_MASK_SHADER) @@ -313,7 +314,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType ARMOR_ENTITY_GLINT = create( "armor_entity_glint", DefaultVertexFormat.POSITION_TEX, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_ARMOR_ENTITY_GLINT_SHADER) @@ -329,7 +330,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType GLINT_TRANSLUCENT = create( "glint_translucent", DefaultVertexFormat.POSITION_TEX, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_GLINT_TRANSLUCENT_SHADER) @@ -345,7 +346,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType GLINT = create( "glint", DefaultVertexFormat.POSITION_TEX, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_GLINT_SHADER) @@ -360,7 +361,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType ENTITY_GLINT = create( "entity_glint", DefaultVertexFormat.POSITION_TEX, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_ENTITY_GLINT_SHADER) @@ -378,7 +379,7 @@ public abstract class RenderType extends RenderStateShard { return create( "crumbling", DefaultVertexFormat.BLOCK, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -396,7 +397,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "text", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, false, false, @@ -411,7 +412,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType TEXT_BACKGROUND = create( "text_background", DefaultVertexFormat.POSITION_COLOR_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -426,7 +427,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "text_intensity", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, false, false, @@ -442,7 +443,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "text_polygon_offset", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -459,7 +460,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "text_intensity_polygon_offset", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -476,7 +477,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "text_see_through", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, false, @@ -493,7 +494,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType TEXT_BACKGROUND_SEE_THROUGH = create( "text_background_see_through", DefaultVertexFormat.POSITION_COLOR_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -510,7 +511,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "text_intensity_see_through", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -527,7 +528,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType LIGHTNING = create( "lightning", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -541,7 +542,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType DRAGON_RAYS = create( "dragon_rays", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.TRIANGLES, + Mode.TRIANGLES, 1536, false, false, @@ -554,17 +555,17 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType DRAGON_RAYS_DEPTH = create( "dragon_rays_depth", DefaultVertexFormat.POSITION, - VertexFormat.Mode.TRIANGLES, + Mode.TRIANGLES, 1536, false, false, RenderType.CompositeState.builder().setShaderState(POSITION_SHADER).setWriteMaskState(DEPTH_WRITE).createCompositeState(false) ); - private static final RenderType TRIPWIRE = create("tripwire", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, true, true, tripwireState()); + private static final RenderType TRIPWIRE = create("tripwire", DefaultVertexFormat.BLOCK, Mode.QUADS, 1536, true, true, tripwireState()); private static final RenderType END_PORTAL = create( "end_portal", DefaultVertexFormat.POSITION, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, false, @@ -581,7 +582,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType END_GATEWAY = create( "end_gateway", DefaultVertexFormat.POSITION, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, false, @@ -601,7 +602,7 @@ public abstract class RenderType extends RenderStateShard { public static final RenderType.CompositeRenderType LINES = create( "lines", DefaultVertexFormat.POSITION_COLOR_NORMAL, - VertexFormat.Mode.LINES, + Mode.LINES, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_LINES_SHADER) @@ -616,7 +617,7 @@ public abstract class RenderType extends RenderStateShard { public static final RenderType.CompositeRenderType SECONDARY_BLOCK_OUTLINE = create( "secondary_block_outline", DefaultVertexFormat.POSITION_COLOR_NORMAL, - VertexFormat.Mode.LINES, + Mode.LINES, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_LINES_SHADER) @@ -631,7 +632,7 @@ public abstract class RenderType extends RenderStateShard { public static final RenderType.CompositeRenderType LINE_STRIP = create( "line_strip", DefaultVertexFormat.POSITION_COLOR_NORMAL, - VertexFormat.Mode.LINE_STRIP, + Mode.LINE_STRIP, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_LINES_SHADER) @@ -647,7 +648,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(double_ -> create( "debug_line_strip", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.DEBUG_LINE_STRIP, + Mode.DEBUG_LINE_STRIP, 1536, RenderType.CompositeState.builder() .setShaderState(POSITION_COLOR_SHADER) @@ -660,7 +661,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType DEBUG_FILLED_BOX = create( "debug_filled_box", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.TRIANGLE_STRIP, + Mode.TRIANGLE_STRIP, 1536, false, true, @@ -673,7 +674,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType DEBUG_QUADS = create( "debug_quads", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -686,7 +687,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType DEBUG_TRIANGLE_FAN = create( "debug_triangle_fan", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.TRIANGLE_FAN, + Mode.TRIANGLE_FAN, 1536, false, true, @@ -699,7 +700,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType DEBUG_STRUCTURE_QUADS = create( "debug_structure_quads", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -714,7 +715,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType DEBUG_SECTION_QUADS = create( "debug_section_quads", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -725,10 +726,147 @@ public abstract class RenderType extends RenderStateShard { .setCullState(CULL) .createCompositeState(false) ); + private static final RenderType WORLD_BORDER_NO_DEPTH_WRITE = createWorldBorder(false); + private static final RenderType WORLD_BORDER_DEPTH_WRITE = createWorldBorder(true); + private static final Function OPAQUE_PARTICLE = Util.memoize( + (Function)(resourceLocation -> create( + "opaque_particle", + DefaultVertexFormat.PARTICLE, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(PARTICLE_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) + .setLightmapState(LIGHTMAP) + .setWriteMaskState(COLOR_DEPTH_WRITE) + .createCompositeState(false) + )) + ); + private static final Function TRANSLUCENT_PARTICLE = Util.memoize( + (Function)(resourceLocation -> create( + "translucent_particle", + DefaultVertexFormat.PARTICLE, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(PARTICLE_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setOutputState(PARTICLES_TARGET) + .setLightmapState(LIGHTMAP) + .setWriteMaskState(COLOR_DEPTH_WRITE) + .createCompositeState(false) + )) + ); + private static final Function WEATHER_DEPTH_WRITE = createWeather(true); + private static final Function WEATHER_NO_DEPTH_WRITE = createWeather(false); + private static final RenderType SKY = create( + "sky", + DefaultVertexFormat.POSITION, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder().setShaderState(POSITION_SHADER).setWriteMaskState(COLOR_WRITE).createCompositeState(false) + ); + private static final RenderType END_SKY = create( + "end_sky", + DefaultVertexFormat.POSITION_TEX_COLOR, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_TEXTURE_COLOR_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(SkyRenderer.END_SKY_LOCATION, TriState.FALSE, false)) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setWriteMaskState(COLOR_WRITE) + .createCompositeState(false) + ); + private static final RenderType SUNRISE_SUNSET = create( + "sunrise_sunset", + DefaultVertexFormat.POSITION_COLOR, + Mode.TRIANGLE_FAN, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_COLOR_SHADER) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setWriteMaskState(COLOR_WRITE) + .createCompositeState(false) + ); + private static final RenderType STARS = create( + "stars", + DefaultVertexFormat.POSITION, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_SHADER) + .setTransparencyState(OVERLAY_TRANSPARENCY) + .setWriteMaskState(COLOR_WRITE) + .createCompositeState(false) + ); + private static final Function CELESTIAL = Util.memoize( + (Function)(resourceLocation -> create( + "celestial", + DefaultVertexFormat.POSITION_TEX_COLOR, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_TEXTURE_COLOR_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) + .setTransparencyState(OVERLAY_TRANSPARENCY) + .setWriteMaskState(COLOR_WRITE) + .createCompositeState(false) + )) + ); + private static final Function BLOCK_SCREEN_EFFECT = Util.memoize( + (Function)(resourceLocation -> create( + "block_screen_effect", + DefaultVertexFormat.POSITION_TEX_COLOR, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_TEXTURE_COLOR_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) + .setDepthTestState(NO_DEPTH_TEST) + .setWriteMaskState(COLOR_WRITE) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .createCompositeState(false) + )) + ); + private static final Function FIRE_SCREEN_EFFECT = Util.memoize( + (Function)(resourceLocation -> create( + "fire_screen_effect", + DefaultVertexFormat.POSITION_TEX_COLOR, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_TEXTURE_COLOR_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) + .setDepthTestState(NO_DEPTH_TEST) + .setWriteMaskState(COLOR_WRITE) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .createCompositeState(false) + )) + ); private static final RenderType.CompositeRenderType GUI = create( "gui", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_GUI_SHADER) @@ -739,7 +877,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType GUI_OVERLAY = create( "gui_overlay", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_GUI_OVERLAY_SHADER) @@ -752,7 +890,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "gui_textured_overlay", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.DEFAULT, false)) @@ -767,7 +905,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "gui_opaque_textured_background", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) @@ -780,7 +918,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType GUI_NAUSEA_OVERLAY = create( "gui_nausea_overlay", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(Gui.NAUSEA_LOCATION, TriState.DEFAULT, false)) @@ -793,7 +931,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType GUI_TEXT_HIGHLIGHT = create( "gui_text_highlight", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_GUI_TEXT_HIGHLIGHT_SHADER) @@ -805,7 +943,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType GUI_GHOST_RECIPE_OVERLAY = create( "gui_ghost_recipe_overlay", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_GUI_GHOST_RECIPE_OVERLAY_SHADER) @@ -818,7 +956,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "gui_textured", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) @@ -832,7 +970,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "vignette", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.DEFAULT, false)) @@ -847,7 +985,7 @@ public abstract class RenderType extends RenderStateShard { (Function)(resourceLocation -> create( "crosshair", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) @@ -859,7 +997,7 @@ public abstract class RenderType extends RenderStateShard { private static final RenderType.CompositeRenderType MOJANG_LOGO = create( "mojang_logo", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, RenderType.CompositeState.builder() .setTextureState(new RenderStateShard.TextureStateShard(LoadingOverlay.MOJANG_STUDIOS_LOGO_LOCATION, TriState.DEFAULT, false)) @@ -871,7 +1009,7 @@ public abstract class RenderType extends RenderStateShard { ); private static final ImmutableList CHUNK_BUFFER_LAYERS = ImmutableList.of(solid(), cutoutMipped(), cutout(), translucent(), tripwire()); private final VertexFormat format; - private final VertexFormat.Mode mode; + private final Mode mode; private final int bufferSize; private final boolean affectsCrumbling; private final boolean sortOnUpload; @@ -927,7 +1065,7 @@ public abstract class RenderType extends RenderStateShard { .setLayeringState(VIEW_OFFSET_Z_LAYERING) .setDepthTestState(equalDepthTest ? EQUAL_DEPTH_TEST : LEQUAL_DEPTH_TEST) .createCompositeState(true); - return create(name, DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, compositeState); + return create(name, DefaultVertexFormat.NEW_ENTITY, Mode.QUADS, 1536, true, false, compositeState); } public static RenderType armorCutoutNoCull(ResourceLocation location) { @@ -1026,7 +1164,7 @@ public abstract class RenderType extends RenderStateShard { return create( "breeze_wind", DefaultVertexFormat.NEW_ENTITY, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -1046,7 +1184,7 @@ public abstract class RenderType extends RenderStateShard { return create( "energy_swirl", DefaultVertexFormat.NEW_ENTITY, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, false, true, @@ -1164,7 +1302,7 @@ public abstract class RenderType extends RenderStateShard { return create( "clouds", DefaultVertexFormat.POSITION_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 786432, false, false, @@ -1226,6 +1364,93 @@ public abstract class RenderType extends RenderStateShard { return DEBUG_SECTION_QUADS; } + private static RenderType createWorldBorder(boolean depthWrite) { + return create( + "world_border", + DefaultVertexFormat.POSITION_TEX, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(POSITION_TEX_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(WorldBorderRenderer.FORCEFIELD_LOCATION, TriState.FALSE, false)) + .setTransparencyState(OVERLAY_TRANSPARENCY) + .setLightmapState(LIGHTMAP) + .setOutputState(WEATHER_TARGET) + .setWriteMaskState(depthWrite ? COLOR_DEPTH_WRITE : COLOR_WRITE) + .setLayeringState(WORLD_BORDER_LAYERING) + .setCullState(NO_CULL) + .createCompositeState(false) + ); + } + + public static RenderType worldBorder(boolean depthWrite) { + return depthWrite ? WORLD_BORDER_DEPTH_WRITE : WORLD_BORDER_NO_DEPTH_WRITE; + } + + public static RenderType opaqueParticle(ResourceLocation texture) { + return (RenderType)OPAQUE_PARTICLE.apply(texture); + } + + public static RenderType translucentParticle(ResourceLocation texture) { + return (RenderType)TRANSLUCENT_PARTICLE.apply(texture); + } + + private static Function createWeather(boolean depthWrite) { + return Util.memoize( + (Function)(resourceLocation -> create( + "weather", + DefaultVertexFormat.PARTICLE, + Mode.QUADS, + 1536, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(PARTICLE_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(resourceLocation, TriState.FALSE, false)) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setOutputState(WEATHER_TARGET) + .setLightmapState(LIGHTMAP) + .setWriteMaskState(depthWrite ? COLOR_DEPTH_WRITE : COLOR_WRITE) + .setCullState(NO_CULL) + .createCompositeState(false) + )) + ); + } + + public static RenderType weather(ResourceLocation texture, boolean depthWrite) { + return (RenderType)(depthWrite ? WEATHER_DEPTH_WRITE : WEATHER_NO_DEPTH_WRITE).apply(texture); + } + + public static RenderType sky() { + return SKY; + } + + public static RenderType endSky() { + return END_SKY; + } + + public static RenderType sunriseSunset() { + return SUNRISE_SUNSET; + } + + public static RenderType stars() { + return STARS; + } + + public static RenderType celestial(ResourceLocation texture) { + return (RenderType)CELESTIAL.apply(texture); + } + + public static RenderType blockScreenEffect(ResourceLocation texture) { + return (RenderType)BLOCK_SCREEN_EFFECT.apply(texture); + } + + public static RenderType fireScreenEffect(ResourceLocation texture) { + return (RenderType)FIRE_SCREEN_EFFECT.apply(texture); + } + public static RenderType gui() { return GUI; } @@ -1271,14 +1496,7 @@ public abstract class RenderType extends RenderStateShard { } public RenderType( - String name, - VertexFormat format, - VertexFormat.Mode mode, - int bufferSize, - boolean affectsCrumbling, - boolean sortOnUpload, - Runnable setupState, - Runnable clearState + String name, VertexFormat format, Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, Runnable setupState, Runnable clearState ) { super(name, setupState, clearState); this.format = format; @@ -1288,12 +1506,12 @@ public abstract class RenderType extends RenderStateShard { this.sortOnUpload = sortOnUpload; } - static RenderType.CompositeRenderType create(String name, VertexFormat format, VertexFormat.Mode mode, int bufferSize, RenderType.CompositeState state) { + static RenderType.CompositeRenderType create(String name, VertexFormat format, Mode mode, int bufferSize, RenderType.CompositeState state) { return create(name, format, mode, bufferSize, false, false, state); } private static RenderType.CompositeRenderType create( - String name, VertexFormat format, VertexFormat.Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, RenderType.CompositeState state + String name, VertexFormat format, Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, RenderType.CompositeState state ) { return new RenderType.CompositeRenderType(name, format, mode, bufferSize, affectsCrumbling, sortOnUpload, state); } @@ -1321,7 +1539,7 @@ public abstract class RenderType extends RenderStateShard { return this.format; } - public VertexFormat.Mode mode() { + public Mode mode() { return this.mode; } @@ -1351,7 +1569,7 @@ public abstract class RenderType extends RenderStateShard { (BiFunction)((resourceLocation, cullStateShard) -> RenderType.create( "outline", DefaultVertexFormat.POSITION_TEX_COLOR, - VertexFormat.Mode.QUADS, + Mode.QUADS, 1536, RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_OUTLINE_SHADER) @@ -1367,7 +1585,7 @@ public abstract class RenderType extends RenderStateShard { private final boolean isOutline; CompositeRenderType( - String name, VertexFormat format, VertexFormat.Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, RenderType.CompositeState state + String name, VertexFormat format, Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, RenderType.CompositeState state ) { super( name, diff --git a/net/minecraft/client/renderer/ScreenEffectRenderer.java b/net/minecraft/client/renderer/ScreenEffectRenderer.java index fd1de629..460922ce 100644 --- a/net/minecraft/client/renderer/ScreenEffectRenderer.java +++ b/net/minecraft/client/renderer/ScreenEffectRenderer.java @@ -1,12 +1,7 @@ package net.minecraft.client.renderer; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -16,6 +11,7 @@ import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.FluidTags; +import net.minecraft.util.ARGB; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.RenderShape; @@ -27,22 +23,22 @@ import org.joml.Matrix4f; public class ScreenEffectRenderer { private static final ResourceLocation UNDERWATER_LOCATION = ResourceLocation.withDefaultNamespace("textures/misc/underwater.png"); - public static void renderScreenEffect(Minecraft minecraft, PoseStack poseStack) { + public static void renderScreenEffect(Minecraft minecraft, PoseStack poseStack, MultiBufferSource bufferSource) { Player player = minecraft.player; if (!player.noPhysics) { BlockState blockState = getViewBlockingState(player); if (blockState != null) { - renderTex(minecraft.getBlockRenderer().getBlockModelShaper().getParticleIcon(blockState), poseStack); + renderTex(minecraft.getBlockRenderer().getBlockModelShaper().getParticleIcon(blockState), poseStack, bufferSource); } } if (!minecraft.player.isSpectator()) { if (minecraft.player.isEyeInFluid(FluidTags.WATER)) { - renderWater(minecraft, poseStack); + renderWater(minecraft, poseStack, bufferSource); } if (minecraft.player.isOnFire()) { - renderFire(minecraft, poseStack); + renderFire(poseStack, bufferSource); } } } @@ -65,61 +61,49 @@ public class ScreenEffectRenderer { return null; } - private static void renderTex(TextureAtlasSprite texture, PoseStack poseStack) { - RenderSystem.setShaderTexture(0, texture.atlasLocation()); - RenderSystem.setShader(CoreShaders.POSITION_TEX_COLOR); + private static void renderTex(TextureAtlasSprite texture, PoseStack poseStack, MultiBufferSource bufferSource) { float f = 0.1F; + int i = ARGB.colorFromFloat(1.0F, 0.1F, 0.1F, 0.1F); float g = -1.0F; float h = 1.0F; - float i = -1.0F; - float j = 1.0F; - float k = -0.5F; - float l = texture.getU0(); - float m = texture.getU1(); - float n = texture.getV0(); - float o = texture.getV1(); - Matrix4f matrix4f = poseStack.last().pose(); - BufferBuilder bufferBuilder = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); - bufferBuilder.addVertex(matrix4f, -1.0F, -1.0F, -0.5F).setUv(m, o).setColor(0.1F, 0.1F, 0.1F, 1.0F); - bufferBuilder.addVertex(matrix4f, 1.0F, -1.0F, -0.5F).setUv(l, o).setColor(0.1F, 0.1F, 0.1F, 1.0F); - bufferBuilder.addVertex(matrix4f, 1.0F, 1.0F, -0.5F).setUv(l, n).setColor(0.1F, 0.1F, 0.1F, 1.0F); - bufferBuilder.addVertex(matrix4f, -1.0F, 1.0F, -0.5F).setUv(m, n).setColor(0.1F, 0.1F, 0.1F, 1.0F); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); - } - - private static void renderWater(Minecraft minecraft, PoseStack poseStack) { - RenderSystem.setShader(CoreShaders.POSITION_TEX); - RenderSystem.setShaderTexture(0, UNDERWATER_LOCATION); - BlockPos blockPos = BlockPos.containing(minecraft.player.getX(), minecraft.player.getEyeY(), minecraft.player.getZ()); - float f = LightTexture.getBrightness(minecraft.player.level().dimensionType(), minecraft.player.level().getMaxLocalRawBrightness(blockPos)); - RenderSystem.enableBlend(); - RenderSystem.setShaderColor(f, f, f, 0.1F); - float g = 4.0F; - float h = -1.0F; - float i = 1.0F; float j = -1.0F; float k = 1.0F; float l = -0.5F; - float m = -minecraft.player.getYRot() / 64.0F; - float n = minecraft.player.getXRot() / 64.0F; + float m = texture.getU0(); + float n = texture.getU1(); + float o = texture.getV0(); + float p = texture.getV1(); Matrix4f matrix4f = poseStack.last().pose(); - BufferBuilder bufferBuilder = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - bufferBuilder.addVertex(matrix4f, -1.0F, -1.0F, -0.5F).setUv(4.0F + m, 4.0F + n); - bufferBuilder.addVertex(matrix4f, 1.0F, -1.0F, -0.5F).setUv(0.0F + m, 4.0F + n); - bufferBuilder.addVertex(matrix4f, 1.0F, 1.0F, -0.5F).setUv(0.0F + m, 0.0F + n); - bufferBuilder.addVertex(matrix4f, -1.0F, 1.0F, -0.5F).setUv(4.0F + m, 0.0F + n); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.disableBlend(); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.blockScreenEffect(texture.atlasLocation())); + vertexConsumer.addVertex(matrix4f, -1.0F, -1.0F, -0.5F).setUv(n, p).setColor(i); + vertexConsumer.addVertex(matrix4f, 1.0F, -1.0F, -0.5F).setUv(m, p).setColor(i); + vertexConsumer.addVertex(matrix4f, 1.0F, 1.0F, -0.5F).setUv(m, o).setColor(i); + vertexConsumer.addVertex(matrix4f, -1.0F, 1.0F, -0.5F).setUv(n, o).setColor(i); } - private static void renderFire(Minecraft minecraft, PoseStack poseStack) { - RenderSystem.setShader(CoreShaders.POSITION_TEX_COLOR); - RenderSystem.depthFunc(519); - RenderSystem.depthMask(false); - RenderSystem.enableBlend(); + private static void renderWater(Minecraft minecraft, PoseStack poseStack, MultiBufferSource bufferSource) { + BlockPos blockPos = BlockPos.containing(minecraft.player.getX(), minecraft.player.getEyeY(), minecraft.player.getZ()); + float f = LightTexture.getBrightness(minecraft.player.level().dimensionType(), minecraft.player.level().getMaxLocalRawBrightness(blockPos)); + int i = ARGB.colorFromFloat(0.1F, f, f, f); + float g = 4.0F; + float h = -1.0F; + float j = 1.0F; + float k = -1.0F; + float l = 1.0F; + float m = -0.5F; + float n = -minecraft.player.getYRot() / 64.0F; + float o = minecraft.player.getXRot() / 64.0F; + Matrix4f matrix4f = poseStack.last().pose(); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.blockScreenEffect(UNDERWATER_LOCATION)); + vertexConsumer.addVertex(matrix4f, -1.0F, -1.0F, -0.5F).setUv(4.0F + n, 4.0F + o).setColor(i); + vertexConsumer.addVertex(matrix4f, 1.0F, -1.0F, -0.5F).setUv(0.0F + n, 4.0F + o).setColor(i); + vertexConsumer.addVertex(matrix4f, 1.0F, 1.0F, -0.5F).setUv(0.0F + n, 0.0F + o).setColor(i); + vertexConsumer.addVertex(matrix4f, -1.0F, 1.0F, -0.5F).setUv(4.0F + n, 0.0F + o).setColor(i); + } + + private static void renderFire(PoseStack poseStack, MultiBufferSource bufferSource) { TextureAtlasSprite textureAtlasSprite = ModelBakery.FIRE_1.sprite(); - RenderSystem.setShaderTexture(0, textureAtlasSprite.atlasLocation()); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.fireScreenEffect(textureAtlasSprite.atlasLocation())); float f = textureAtlasSprite.getU0(); float g = textureAtlasSprite.getU1(); float h = (f + g) / 2.0F; @@ -143,17 +127,11 @@ public class ScreenEffectRenderer { poseStack.translate(-(r * 2 - 1) * 0.24F, -0.3F, 0.0F); poseStack.mulPose(Axis.YP.rotationDegrees((r * 2 - 1) * 10.0F)); Matrix4f matrix4f = poseStack.last().pose(); - BufferBuilder bufferBuilder = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); - bufferBuilder.addVertex(matrix4f, -0.5F, -0.5F, -0.5F).setUv(n, p).setColor(1.0F, 1.0F, 1.0F, 0.9F); - bufferBuilder.addVertex(matrix4f, 0.5F, -0.5F, -0.5F).setUv(m, p).setColor(1.0F, 1.0F, 1.0F, 0.9F); - bufferBuilder.addVertex(matrix4f, 0.5F, 0.5F, -0.5F).setUv(m, o).setColor(1.0F, 1.0F, 1.0F, 0.9F); - bufferBuilder.addVertex(matrix4f, -0.5F, 0.5F, -0.5F).setUv(n, o).setColor(1.0F, 1.0F, 1.0F, 0.9F); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); + vertexConsumer.addVertex(matrix4f, -0.5F, -0.5F, -0.5F).setUv(n, p).setColor(1.0F, 1.0F, 1.0F, 0.9F); + vertexConsumer.addVertex(matrix4f, 0.5F, -0.5F, -0.5F).setUv(m, p).setColor(1.0F, 1.0F, 1.0F, 0.9F); + vertexConsumer.addVertex(matrix4f, 0.5F, 0.5F, -0.5F).setUv(m, o).setColor(1.0F, 1.0F, 1.0F, 0.9F); + vertexConsumer.addVertex(matrix4f, -0.5F, 0.5F, -0.5F).setUv(n, o).setColor(1.0F, 1.0F, 1.0F, 0.9F); poseStack.popPose(); } - - RenderSystem.disableBlend(); - RenderSystem.depthMask(true); - RenderSystem.depthFunc(515); } } diff --git a/net/minecraft/client/renderer/SectionOcclusionGraph.java b/net/minecraft/client/renderer/SectionOcclusionGraph.java index 3625804a..2ba96c36 100644 --- a/net/minecraft/client/renderer/SectionOcclusionGraph.java +++ b/net/minecraft/client/renderer/SectionOcclusionGraph.java @@ -29,6 +29,7 @@ import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.SectionPos; +import net.minecraft.core.Direction.Axis; import net.minecraft.server.level.ChunkTrackingView; import net.minecraft.util.Mth; import net.minecraft.util.VisibleForDebug; @@ -94,7 +95,7 @@ public class SectionOcclusionGraph { return this.needsFrustumUpdate.compareAndSet(true, false); } - public void onChunkLoaded(ChunkPos chunkPos) { + public void onChunkReadyToRender(ChunkPos chunkPos) { SectionOcclusionGraph.GraphEvents graphEvents = (SectionOcclusionGraph.GraphEvents)this.nextGraphEvents.get(); if (graphEvents != null) { this.addNeighbors(graphEvents, chunkPos); @@ -191,6 +192,10 @@ public class SectionOcclusionGraph { graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x, chunkPos.z - 1)); graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x + 1, chunkPos.z)); graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x, chunkPos.z + 1)); + graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x - 1, chunkPos.z - 1)); + graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x - 1, chunkPos.z + 1)); + graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x + 1, chunkPos.z - 1)); + graphEvents.chunksWhichReceivedNeighbors.add(ChunkPos.asLong(chunkPos.x + 1, chunkPos.z + 1)); } private void initializeQueueForFullUpdate(Camera camera, Queue nodeQueue) { @@ -288,9 +293,9 @@ public class SectionOcclusionGraph { if (smartCull && bl) { BlockPos blockPos3 = renderSection2.getOrigin(); BlockPos blockPos4 = blockPos3.offset( - (direction.getAxis() == Direction.Axis.X ? blockPos2.getX() <= blockPos3.getX() : blockPos2.getX() >= blockPos3.getX()) ? 0 : 16, - (direction.getAxis() == Direction.Axis.Y ? blockPos2.getY() <= blockPos3.getY() : blockPos2.getY() >= blockPos3.getY()) ? 0 : 16, - (direction.getAxis() == Direction.Axis.Z ? blockPos2.getZ() <= blockPos3.getZ() : blockPos2.getZ() >= blockPos3.getZ()) ? 0 : 16 + (direction.getAxis() == Axis.X ? blockPos2.getX() <= blockPos3.getX() : blockPos2.getX() >= blockPos3.getX()) ? 0 : 16, + (direction.getAxis() == Axis.Y ? blockPos2.getY() <= blockPos3.getY() : blockPos2.getY() >= blockPos3.getY()) ? 0 : 16, + (direction.getAxis() == Axis.Z ? blockPos2.getZ() <= blockPos3.getZ() : blockPos2.getZ() >= blockPos3.getZ()) ? 0 : 16 ); Vec3 vec3 = new Vec3(blockPos4.getX(), blockPos4.getY(), blockPos4.getZ()); Vec3 vec32 = cameraPosition.subtract(vec3).normalize().scale(CEILED_SECTION_DIAGONAL); diff --git a/net/minecraft/client/renderer/ShaderManager.java b/net/minecraft/client/renderer/ShaderManager.java index 23c8d180..e0ac9eca 100644 --- a/net/minecraft/client/renderer/ShaderManager.java +++ b/net/minecraft/client/renderer/ShaderManager.java @@ -8,6 +8,7 @@ import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import com.mojang.blaze3d.preprocessor.GlslPreprocessor; import com.mojang.blaze3d.shaders.CompiledShader; +import com.mojang.blaze3d.shaders.CompiledShader.Type; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.logging.LogUtils; import com.mojang.serialization.JsonOps; @@ -15,6 +16,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArraySet; import java.io.IOException; import java.io.Reader; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -55,17 +57,14 @@ public class ShaderManager extends SimplePreparableReloadListener builder = ImmutableMap.builder(); Builder builder2 = ImmutableMap.builder(); Map map = resourceManager.listResources("shaders", resourceLocation -> isProgram(resourceLocation) || isShader(resourceLocation)); for (Entry entry : map.entrySet()) { ResourceLocation resourceLocation = (ResourceLocation)entry.getKey(); - CompiledShader.Type type = CompiledShader.Type.byLocation(resourceLocation); + Type type = Type.byLocation(resourceLocation); if (type != null) { loadShader(resourceLocation, (Resource)entry.getValue(), type, map, builder2); } else if (isProgram(resourceLocation)) { @@ -83,11 +82,7 @@ public class ShaderManager extends SimplePreparableReloadListener shaderResources, - Builder output + ResourceLocation location, Resource shader, Type type, Map shaderResources, Builder output ) { ResourceLocation resourceLocation = type.idConverter().fileToId(location); GlslPreprocessor glslPreprocessor = createPreprocessor(shaderResources, location); @@ -236,18 +231,25 @@ public class ShaderManager extends SimplePreparableReloadListener map = new HashMap(); + Set set = new HashSet(CoreShaders.getProgramsToPreload()); - for (ShaderProgram shaderProgram : CoreShaders.getProgramsToPreload()) { + for (PostChainConfig postChainConfig : configs.postChains.values()) { + for (PostChainConfig.Pass pass : postChainConfig.passes()) { + set.add(pass.program()); + } + } + + for (ShaderProgram shaderProgram : set) { try { compilationCache.programs.put(shaderProgram, Optional.of(compilationCache.compileProgram(shaderProgram))); - } catch (ShaderManager.CompilationException var9) { - map.put(shaderProgram, var9); + } catch (ShaderManager.CompilationException var11) { + map.put(shaderProgram, var11); } } @@ -271,6 +273,13 @@ public class ShaderManager extends SimplePreparableReloadListener> programs = new HashMap(); final Map shaders = new HashMap(); final Map> postChains = new HashMap(); + boolean triggeredRecovery; CompilationCache(final ShaderManager.Configs configs) { this.configs = configs; @@ -404,13 +414,13 @@ public class ShaderManager extends SimplePreparableReloadListener SHULKER_TEXTURE_LOCATION = (List)Stream.of( - "white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray", "light_gray", "cyan", "purple", "blue", "brown", "green", "red", "black" - ) - .map(string -> new Material(SHULKER_SHEET, ResourceLocation.withDefaultNamespace("entity/shulker/shulker_" + string))) + public static final Material DEFAULT_SHULKER_TEXTURE_LOCATION = createShulkerMaterial(ResourceLocation.withDefaultNamespace("shulker")); + public static final List SHULKER_TEXTURE_LOCATION = (List)Arrays.stream(DyeColor.values()) + .sorted(Comparator.comparingInt(DyeColor::getId)) + .map(Sheets::createShulkerMaterial) .collect(ImmutableList.toImmutableList()); public static final Map SIGN_MATERIALS = (Map)WoodType.values() .collect(Collectors.toMap(Function.identity(), Sheets::createSignMaterial)); @@ -64,12 +63,12 @@ public class Sheets { private static final Map SHIELD_MATERIALS = new HashMap(); public static final Map, Material> DECORATED_POT_MATERIALS = (Map, Material>)BuiltInRegistries.DECORATED_POT_PATTERN .listElements() - .collect(Collectors.toMap(Holder.Reference::key, reference -> createDecoratedPotMaterial(((DecoratedPotPattern)reference.value()).assetId()))); + .collect(Collectors.toMap(Reference::key, reference -> createDecoratedPotMaterial(((DecoratedPotPattern)reference.value()).assetId()))); public static final Material DECORATED_POT_BASE = createDecoratedPotMaterial(ResourceLocation.withDefaultNamespace("decorated_pot_base")); public static final Material DECORATED_POT_SIDE = createDecoratedPotMaterial(ResourceLocation.withDefaultNamespace("decorated_pot_side")); - public static final Material[] BED_TEXTURES = (Material[])Arrays.stream(DyeColor.values()) + private static final Material[] BED_TEXTURES = (Material[])Arrays.stream(DyeColor.values()) .sorted(Comparator.comparingInt(DyeColor::getId)) - .map(dyeColor -> new Material(BED_SHEET, ResourceLocation.withDefaultNamespace("entity/bed/" + dyeColor.getName()))) + .map(Sheets::createBedMaterial) .toArray(Material[]::new); public static final Material CHEST_TRAP_LOCATION = chestMaterial("trapped"); public static final Material CHEST_TRAP_LOCATION_LEFT = chestMaterial("trapped_left"); @@ -126,12 +125,52 @@ public class Sheets { return TRANSLUCENT_ITEM_CULL_BLOCK_SHEET; } + public static Material getBedMaterial(DyeColor color) { + return BED_TEXTURES[color.getId()]; + } + + public static ResourceLocation colorToResourceMaterial(DyeColor color) { + return ResourceLocation.withDefaultNamespace(color.getName()); + } + + public static Material createBedMaterial(DyeColor color) { + return createBedMaterial(colorToResourceMaterial(color)); + } + + public static Material createBedMaterial(ResourceLocation assetId) { + return new Material(BED_SHEET, assetId.withPrefix("entity/bed/")); + } + + public static Material getShulkerBoxMaterial(DyeColor color) { + return (Material)SHULKER_TEXTURE_LOCATION.get(color.getId()); + } + + public static ResourceLocation colorToShulkerMaterial(DyeColor color) { + return ResourceLocation.withDefaultNamespace("shulker_" + color.getName()); + } + + public static Material createShulkerMaterial(DyeColor color) { + return createShulkerMaterial(colorToShulkerMaterial(color)); + } + + public static Material createShulkerMaterial(ResourceLocation assetId) { + return new Material(SHULKER_SHEET, assetId.withPrefix("entity/shulker/")); + } + private static Material createSignMaterial(WoodType woodType) { - return new Material(SIGN_SHEET, ResourceLocation.withDefaultNamespace("entity/signs/" + woodType.name())); + return createSignMaterial(ResourceLocation.withDefaultNamespace(woodType.name())); + } + + public static Material createSignMaterial(ResourceLocation assetId) { + return new Material(SIGN_SHEET, assetId.withPrefix("entity/signs/")); } private static Material createHangingSignMaterial(WoodType woodType) { - return new Material(SIGN_SHEET, ResourceLocation.withDefaultNamespace("entity/signs/hanging/" + woodType.name())); + return createHangingSignMaterial(ResourceLocation.withDefaultNamespace(woodType.name())); + } + + public static Material createHangingSignMaterial(ResourceLocation assetId) { + return new Material(SIGN_SHEET, assetId.withPrefix("entity/signs/hanging/")); } public static Material getSignMaterial(WoodType woodType) { @@ -160,6 +199,10 @@ public class Sheets { return new Material(CHEST_SHEET, ResourceLocation.withDefaultNamespace("entity/chest/" + chestName)); } + public static Material chestMaterial(ResourceLocation assetId) { + return new Material(CHEST_SHEET, assetId.withPrefix("entity/chest/")); + } + private static Material createDecoratedPotMaterial(ResourceLocation assetId) { return new Material(DECORATED_POT_SHEET, assetId.withPrefix("entity/decorated_pot/")); } diff --git a/net/minecraft/client/renderer/SkyRenderer.java b/net/minecraft/client/renderer/SkyRenderer.java index 3038a3d4..58295b01 100644 --- a/net/minecraft/client/renderer/SkyRenderer.java +++ b/net/minecraft/client/renderer/SkyRenderer.java @@ -1,18 +1,15 @@ package net.minecraft.client.renderer; -import com.mojang.blaze3d.buffers.BufferUsage; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.MeshData; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.VertexBuffer; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ARGB; import net.minecraft.util.Mth; @@ -26,41 +23,21 @@ import org.joml.Vector3f; public class SkyRenderer implements AutoCloseable { private static final ResourceLocation SUN_LOCATION = ResourceLocation.withDefaultNamespace("textures/environment/sun.png"); private static final ResourceLocation MOON_LOCATION = ResourceLocation.withDefaultNamespace("textures/environment/moon_phases.png"); - private static final ResourceLocation END_SKY_LOCATION = ResourceLocation.withDefaultNamespace("textures/environment/end_sky.png"); + public static final ResourceLocation END_SKY_LOCATION = ResourceLocation.withDefaultNamespace("textures/environment/end_sky.png"); private static final float SKY_DISC_RADIUS = 512.0F; - private final VertexBuffer starBuffer = this.createStarBuffer(); - private final VertexBuffer topSkyBuffer = this.createTopSkyBuffer(); - private final VertexBuffer bottomSkyBuffer = this.createBottomSkyBuffer(); + private final VertexBuffer starBuffer = VertexBuffer.uploadStatic(Mode.QUADS, DefaultVertexFormat.POSITION, this::buildStars); + private final VertexBuffer topSkyBuffer = VertexBuffer.uploadStatic( + Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION, vertexConsumer -> this.buildSkyDisc(vertexConsumer, 16.0F) + ); + private final VertexBuffer bottomSkyBuffer = VertexBuffer.uploadStatic( + Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION, vertexConsumer -> this.buildSkyDisc(vertexConsumer, -16.0F) + ); + private final VertexBuffer endSkyBuffer = VertexBuffer.uploadStatic(Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR, this::buildEndSky); - private VertexBuffer createStarBuffer() { - VertexBuffer vertexBuffer = new VertexBuffer(BufferUsage.STATIC_WRITE); - vertexBuffer.bind(); - vertexBuffer.upload(this.drawStars(Tesselator.getInstance())); - VertexBuffer.unbind(); - return vertexBuffer; - } - - private VertexBuffer createTopSkyBuffer() { - VertexBuffer vertexBuffer = new VertexBuffer(BufferUsage.STATIC_WRITE); - vertexBuffer.bind(); - vertexBuffer.upload(this.buildSkyDisc(Tesselator.getInstance(), 16.0F)); - VertexBuffer.unbind(); - return vertexBuffer; - } - - private VertexBuffer createBottomSkyBuffer() { - VertexBuffer vertexBuffer = new VertexBuffer(BufferUsage.STATIC_WRITE); - vertexBuffer.bind(); - vertexBuffer.upload(this.buildSkyDisc(Tesselator.getInstance(), -16.0F)); - VertexBuffer.unbind(); - return vertexBuffer; - } - - private MeshData drawStars(Tesselator tesselator) { + private void buildStars(VertexConsumer buffer) { RandomSource randomSource = RandomSource.create(10842L); int i = 1500; float f = 100.0F; - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION); for (int j = 0; j < 1500; j++) { float g = randomSource.nextFloat() * 2.0F - 1.0F; @@ -72,61 +49,47 @@ public class SkyRenderer implements AutoCloseable { Vector3f vector3f = new Vector3f(g, h, k).normalize(100.0F); float n = (float)(randomSource.nextDouble() * (float) Math.PI * 2.0); Matrix3f matrix3f = new Matrix3f().rotateTowards(new Vector3f(vector3f).negate(), new Vector3f(0.0F, 1.0F, 0.0F)).rotateZ(-n); - bufferBuilder.addVertex(new Vector3f(l, -l, 0.0F).mul(matrix3f).add(vector3f)); - bufferBuilder.addVertex(new Vector3f(l, l, 0.0F).mul(matrix3f).add(vector3f)); - bufferBuilder.addVertex(new Vector3f(-l, l, 0.0F).mul(matrix3f).add(vector3f)); - bufferBuilder.addVertex(new Vector3f(-l, -l, 0.0F).mul(matrix3f).add(vector3f)); + buffer.addVertex(new Vector3f(l, -l, 0.0F).mul(matrix3f).add(vector3f)); + buffer.addVertex(new Vector3f(l, l, 0.0F).mul(matrix3f).add(vector3f)); + buffer.addVertex(new Vector3f(-l, l, 0.0F).mul(matrix3f).add(vector3f)); + buffer.addVertex(new Vector3f(-l, -l, 0.0F).mul(matrix3f).add(vector3f)); } } - - return bufferBuilder.buildOrThrow(); } - private MeshData buildSkyDisc(Tesselator tesselator, float y) { + private void buildSkyDisc(VertexConsumer buffer, float y) { float f = Math.signum(y) * 512.0F; - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION); - bufferBuilder.addVertex(0.0F, y, 0.0F); + buffer.addVertex(0.0F, y, 0.0F); for (int i = -180; i <= 180; i += 45) { - bufferBuilder.addVertex(f * Mth.cos(i * (float) (Math.PI / 180.0)), y, 512.0F * Mth.sin(i * (float) (Math.PI / 180.0))); + buffer.addVertex(f * Mth.cos(i * (float) (Math.PI / 180.0)), y, 512.0F * Mth.sin(i * (float) (Math.PI / 180.0))); } - - return bufferBuilder.buildOrThrow(); } public void renderSkyDisc(float red, float green, float blue) { - RenderSystem.depthMask(false); - RenderSystem.setShader(CoreShaders.POSITION); RenderSystem.setShaderColor(red, green, blue, 1.0F); - this.topSkyBuffer.bind(); - this.topSkyBuffer.drawWithShader(RenderSystem.getModelViewMatrix(), RenderSystem.getProjectionMatrix(), RenderSystem.getShader()); - VertexBuffer.unbind(); + this.topSkyBuffer.drawWithRenderType(RenderType.sky()); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.depthMask(true); } public void renderDarkDisc(PoseStack poseStack) { - RenderSystem.depthMask(false); - RenderSystem.setShader(CoreShaders.POSITION); RenderSystem.setShaderColor(0.0F, 0.0F, 0.0F, 1.0F); poseStack.pushPose(); poseStack.translate(0.0F, 12.0F, 0.0F); - this.bottomSkyBuffer.bind(); - this.bottomSkyBuffer.drawWithShader(RenderSystem.getModelViewMatrix(), RenderSystem.getProjectionMatrix(), RenderSystem.getShader()); - VertexBuffer.unbind(); + this.bottomSkyBuffer.drawWithRenderType(RenderType.sky()); poseStack.popPose(); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.depthMask(true); } public void renderSunMoonAndStars( - PoseStack poseStack, Tesselator tesselator, float timeOfDay, int moonPhase, float rainLevel, float starBrightness, FogParameters fog + PoseStack poseStack, BufferSource bufferSource, float timeOfDay, int moonPhase, float rainLevel, float starBrightness, FogParameters fog ) { poseStack.pushPose(); poseStack.mulPose(Axis.YP.rotationDegrees(-90.0F)); poseStack.mulPose(Axis.XP.rotationDegrees(timeOfDay * 360.0F)); - this.renderSun(rainLevel, tesselator, poseStack); - this.renderMoon(moonPhase, rainLevel, tesselator, poseStack); + this.renderSun(rainLevel, bufferSource, poseStack); + this.renderMoon(moonPhase, rainLevel, bufferSource, poseStack); + bufferSource.endBatch(); if (starBrightness > 0.0F) { this.renderStars(fog, starBrightness, poseStack); } @@ -134,29 +97,19 @@ public class SkyRenderer implements AutoCloseable { poseStack.popPose(); } - private void renderSun(float alpha, Tesselator tesselator, PoseStack poseStack) { + private void renderSun(float alpha, MultiBufferSource bufferSource, PoseStack poseStack) { float f = 30.0F; float g = 100.0F; - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.celestial(SUN_LOCATION)); + int i = ARGB.white(alpha); Matrix4f matrix4f = poseStack.last().pose(); - RenderSystem.depthMask(false); - RenderSystem.overlayBlendFunc(); - RenderSystem.setShader(CoreShaders.POSITION_TEX); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha); - RenderSystem.setShaderTexture(0, SUN_LOCATION); - RenderSystem.enableBlend(); - bufferBuilder.addVertex(matrix4f, -30.0F, 100.0F, -30.0F).setUv(0.0F, 0.0F); - bufferBuilder.addVertex(matrix4f, 30.0F, 100.0F, -30.0F).setUv(1.0F, 0.0F); - bufferBuilder.addVertex(matrix4f, 30.0F, 100.0F, 30.0F).setUv(1.0F, 1.0F); - bufferBuilder.addVertex(matrix4f, -30.0F, 100.0F, 30.0F).setUv(0.0F, 1.0F); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.disableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.depthMask(true); + vertexConsumer.addVertex(matrix4f, -30.0F, 100.0F, -30.0F).setUv(0.0F, 0.0F).setColor(i); + vertexConsumer.addVertex(matrix4f, 30.0F, 100.0F, -30.0F).setUv(1.0F, 0.0F).setColor(i); + vertexConsumer.addVertex(matrix4f, 30.0F, 100.0F, 30.0F).setUv(1.0F, 1.0F).setColor(i); + vertexConsumer.addVertex(matrix4f, -30.0F, 100.0F, 30.0F).setUv(0.0F, 1.0F).setColor(i); } - private void renderMoon(int phase, float alpha, Tesselator tesselator, PoseStack poseStack) { + private void renderMoon(int phase, float alpha, MultiBufferSource bufferSource, PoseStack poseStack) { float f = 20.0F; int i = phase % 4; int j = phase / 4 % 2; @@ -165,59 +118,37 @@ public class SkyRenderer implements AutoCloseable { float k = (i + 1) / 4.0F; float l = (j + 1) / 2.0F; float m = 100.0F; - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - RenderSystem.depthMask(false); - RenderSystem.overlayBlendFunc(); - RenderSystem.setShader(CoreShaders.POSITION_TEX); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha); - RenderSystem.setShaderTexture(0, MOON_LOCATION); - RenderSystem.enableBlend(); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.celestial(MOON_LOCATION)); + int n = ARGB.white(alpha); Matrix4f matrix4f = poseStack.last().pose(); - bufferBuilder.addVertex(matrix4f, -20.0F, -100.0F, 20.0F).setUv(k, l); - bufferBuilder.addVertex(matrix4f, 20.0F, -100.0F, 20.0F).setUv(g, l); - bufferBuilder.addVertex(matrix4f, 20.0F, -100.0F, -20.0F).setUv(g, h); - bufferBuilder.addVertex(matrix4f, -20.0F, -100.0F, -20.0F).setUv(k, h); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.disableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.depthMask(true); + vertexConsumer.addVertex(matrix4f, -20.0F, -100.0F, 20.0F).setUv(k, l).setColor(n); + vertexConsumer.addVertex(matrix4f, 20.0F, -100.0F, 20.0F).setUv(g, l).setColor(n); + vertexConsumer.addVertex(matrix4f, 20.0F, -100.0F, -20.0F).setUv(g, h).setColor(n); + vertexConsumer.addVertex(matrix4f, -20.0F, -100.0F, -20.0F).setUv(k, h).setColor(n); } private void renderStars(FogParameters fog, float starBrightness, PoseStack poseStack) { Matrix4fStack matrix4fStack = RenderSystem.getModelViewStack(); matrix4fStack.pushMatrix(); matrix4fStack.mul(poseStack.last().pose()); - RenderSystem.depthMask(false); - RenderSystem.overlayBlendFunc(); - RenderSystem.setShader(CoreShaders.POSITION); RenderSystem.setShaderColor(starBrightness, starBrightness, starBrightness, starBrightness); - RenderSystem.enableBlend(); RenderSystem.setShaderFog(FogParameters.NO_FOG); - this.starBuffer.bind(); - this.starBuffer.drawWithShader(matrix4fStack, RenderSystem.getProjectionMatrix(), RenderSystem.getShader()); - VertexBuffer.unbind(); + this.starBuffer.drawWithRenderType(RenderType.stars()); RenderSystem.setShaderFog(fog); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.disableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.depthMask(true); matrix4fStack.popMatrix(); } - public void renderSunriseAndSunset(PoseStack poseStack, Tesselator tesselator, float sunAngle, int color) { - RenderSystem.setShader(CoreShaders.POSITION_COLOR); - RenderSystem.depthMask(false); - RenderSystem.enableBlend(); + public void renderSunriseAndSunset(PoseStack poseStack, BufferSource bufferSource, float sunAngle, int color) { poseStack.pushPose(); poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); float f = Mth.sin(sunAngle) < 0.0F ? 180.0F : 0.0F; poseStack.mulPose(Axis.ZP.rotationDegrees(f)); poseStack.mulPose(Axis.ZP.rotationDegrees(90.0F)); Matrix4f matrix4f = poseStack.last().pose(); - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); - float g = ARGB.from8BitChannel(ARGB.alpha(color)); - bufferBuilder.addVertex(matrix4f, 0.0F, 100.0F, 0.0F).setColor(color); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.sunriseSunset()); + float g = ARGB.alphaFloat(color); + vertexConsumer.addVertex(matrix4f, 0.0F, 100.0F, 0.0F).setColor(color); int i = ARGB.transparent(color); int j = 16; @@ -225,61 +156,47 @@ public class SkyRenderer implements AutoCloseable { float h = k * (float) (Math.PI * 2) / 16.0F; float l = Mth.sin(h); float m = Mth.cos(h); - bufferBuilder.addVertex(matrix4f, l * 120.0F, m * 120.0F, -m * 40.0F * g).setColor(i); + vertexConsumer.addVertex(matrix4f, l * 120.0F, m * 120.0F, -m * 40.0F * g).setColor(i); } - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); poseStack.popPose(); - RenderSystem.disableBlend(); - RenderSystem.depthMask(true); } - public void renderEndSky(PoseStack poseStack) { - RenderSystem.enableBlend(); - RenderSystem.depthMask(false); - RenderSystem.setShader(CoreShaders.POSITION_TEX_COLOR); - RenderSystem.setShaderTexture(0, END_SKY_LOCATION); - Tesselator tesselator = Tesselator.getInstance(); - + private void buildEndSky(VertexConsumer buffer) { for (int i = 0; i < 6; i++) { - poseStack.pushPose(); - if (i == 1) { - poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); + Matrix4f matrix4f = new Matrix4f(); + switch (i) { + case 1: + matrix4f.rotationX((float) (Math.PI / 2)); + break; + case 2: + matrix4f.rotationX((float) (-Math.PI / 2)); + break; + case 3: + matrix4f.rotationX((float) Math.PI); + break; + case 4: + matrix4f.rotationZ((float) (Math.PI / 2)); + break; + case 5: + matrix4f.rotationZ((float) (-Math.PI / 2)); } - if (i == 2) { - poseStack.mulPose(Axis.XP.rotationDegrees(-90.0F)); - } - - if (i == 3) { - poseStack.mulPose(Axis.XP.rotationDegrees(180.0F)); - } - - if (i == 4) { - poseStack.mulPose(Axis.ZP.rotationDegrees(90.0F)); - } - - if (i == 5) { - poseStack.mulPose(Axis.ZP.rotationDegrees(-90.0F)); - } - - Matrix4f matrix4f = poseStack.last().pose(); - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); - bufferBuilder.addVertex(matrix4f, -100.0F, -100.0F, -100.0F).setUv(0.0F, 0.0F).setColor(-14145496); - bufferBuilder.addVertex(matrix4f, -100.0F, -100.0F, 100.0F).setUv(0.0F, 16.0F).setColor(-14145496); - bufferBuilder.addVertex(matrix4f, 100.0F, -100.0F, 100.0F).setUv(16.0F, 16.0F).setColor(-14145496); - bufferBuilder.addVertex(matrix4f, 100.0F, -100.0F, -100.0F).setUv(16.0F, 0.0F).setColor(-14145496); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); - poseStack.popPose(); + buffer.addVertex(matrix4f, -100.0F, -100.0F, -100.0F).setUv(0.0F, 0.0F).setColor(-14145496); + buffer.addVertex(matrix4f, -100.0F, -100.0F, 100.0F).setUv(0.0F, 16.0F).setColor(-14145496); + buffer.addVertex(matrix4f, 100.0F, -100.0F, 100.0F).setUv(16.0F, 16.0F).setColor(-14145496); + buffer.addVertex(matrix4f, 100.0F, -100.0F, -100.0F).setUv(16.0F, 0.0F).setColor(-14145496); } + } - RenderSystem.depthMask(true); - RenderSystem.disableBlend(); + public void renderEndSky() { + this.endSkyBuffer.drawWithRenderType(RenderType.endSky()); } public void close() { this.starBuffer.close(); this.topSkyBuffer.close(); this.bottomSkyBuffer.close(); + this.endSkyBuffer.close(); } } diff --git a/net/minecraft/client/renderer/SpecialBlockModelRenderer.java b/net/minecraft/client/renderer/SpecialBlockModelRenderer.java new file mode 100644 index 00000000..471f5004 --- /dev/null +++ b/net/minecraft/client/renderer/SpecialBlockModelRenderer.java @@ -0,0 +1,34 @@ +package net.minecraft.client.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.Map; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.special.SpecialModelRenderer; +import net.minecraft.client.renderer.special.SpecialModelRenderers; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.level.block.Block; + +@Environment(EnvType.CLIENT) +public class SpecialBlockModelRenderer { + public static final SpecialBlockModelRenderer EMPTY = new SpecialBlockModelRenderer(Map.of()); + private final Map> renderers; + + public SpecialBlockModelRenderer(Map> renderers) { + this.renderers = renderers; + } + + public static SpecialBlockModelRenderer vanilla(EntityModelSet modelSet) { + return new SpecialBlockModelRenderer(SpecialModelRenderers.createBlockRenderers(modelSet)); + } + + public void renderByBlock( + Block block, ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay + ) { + SpecialModelRenderer specialModelRenderer = (SpecialModelRenderer)this.renderers.get(block); + if (specialModelRenderer != null) { + specialModelRenderer.render(null, displayContext, poseStack, bufferSource, packedLight, packedOverlay, false); + } + } +} diff --git a/net/minecraft/client/renderer/WeatherEffectRenderer.java b/net/minecraft/client/renderer/WeatherEffectRenderer.java index 1b801f66..dbce8aae 100644 --- a/net/minecraft/client/renderer/WeatherEffectRenderer.java +++ b/net/minecraft/client/renderer/WeatherEffectRenderer.java @@ -1,11 +1,6 @@ package net.minecraft.client.renderer; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexConsumer; import java.util.ArrayList; import java.util.List; import net.fabricmc.api.EnvType; @@ -14,8 +9,8 @@ import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.core.SectionPos; +import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.resources.ResourceLocation; @@ -31,7 +26,7 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.CampfireBlock; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; @@ -60,7 +55,7 @@ public class WeatherEffectRenderer { } } - public void render(Level level, LightTexture lightTexture, int ticks, float partialTick, Vec3 cameraPosition) { + public void render(Level level, MultiBufferSource bufferSource, int ticks, float partialTick, Vec3 cameraPosition) { float f = level.getRainLevel(partialTick); if (!(f <= 0.0F)) { int i = Minecraft.useFancyGraphics() ? 10 : 5; @@ -68,7 +63,7 @@ public class WeatherEffectRenderer { List list2 = new ArrayList(); this.collectColumnInstances(level, ticks, partialTick, cameraPosition, i, list, list2); if (!list.isEmpty() || !list2.isEmpty()) { - this.render(lightTexture, cameraPosition, i, f, list, list2); + this.render(bufferSource, cameraPosition, i, f, list, list2); } } } @@ -90,7 +85,7 @@ public class WeatherEffectRenderer { for (int l = k - radius; l <= k + radius; l++) { for (int m = i - radius; m <= i + radius; m++) { - int n = level.getHeight(Heightmap.Types.MOTION_BLOCKING, m, l); + int n = level.getHeight(Types.MOTION_BLOCKING, m, l); int o = Math.max(j - radius, n); int p = Math.max(j + radius, n); if (p - o != 0) { @@ -112,34 +107,22 @@ public class WeatherEffectRenderer { } private void render( - LightTexture lightTexture, + MultiBufferSource bufferSource, Vec3 cameraPosition, int radius, float rainLevel, List rainColumnInstances, - List snowCoiumnInstances + List snowColumnInstances ) { - lightTexture.turnOnLightLayer(); - Tesselator tesselator = Tesselator.getInstance(); - RenderSystem.disableCull(); - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.depthMask(Minecraft.useShaderTransparency()); - RenderSystem.setShader(CoreShaders.PARTICLE); if (!rainColumnInstances.isEmpty()) { - RenderSystem.setShaderTexture(0, RAIN_LOCATION); - this.renderInstances(tesselator, rainColumnInstances, cameraPosition, 1.0F, radius, rainLevel); + RenderType renderType = RenderType.weather(RAIN_LOCATION, Minecraft.useShaderTransparency()); + this.renderInstances(bufferSource.getBuffer(renderType), rainColumnInstances, cameraPosition, 1.0F, radius, rainLevel); } - if (!snowCoiumnInstances.isEmpty()) { - RenderSystem.setShaderTexture(0, SNOW_LOCATION); - this.renderInstances(tesselator, snowCoiumnInstances, cameraPosition, 0.8F, radius, rainLevel); + if (!snowColumnInstances.isEmpty()) { + RenderType renderType = RenderType.weather(SNOW_LOCATION, Minecraft.useShaderTransparency()); + this.renderInstances(bufferSource.getBuffer(renderType), snowColumnInstances, cameraPosition, 0.8F, radius, rainLevel); } - - RenderSystem.depthMask(true); - RenderSystem.enableCull(); - RenderSystem.disableBlend(); - lightTexture.turnOffLightLayer(); } private WeatherEffectRenderer.ColumnInstance createRainColumnInstance( @@ -165,11 +148,9 @@ public class WeatherEffectRenderer { } private void renderInstances( - Tesselator tesselator, List instances, Vec3 cameraPosition, float amount, int radius, float rainLevel + VertexConsumer buffer, List columnInstances, Vec3 cameraPosition, float amount, int radius, float rainLevel ) { - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.PARTICLE); - - for (WeatherEffectRenderer.ColumnInstance columnInstance : instances) { + for (WeatherEffectRenderer.ColumnInstance columnInstance : columnInstances) { float f = (float)(columnInstance.x + 0.5 - cameraPosition.x); float g = (float)(columnInstance.z + 0.5 - cameraPosition.z); float h = (float)Mth.lengthSquared(f, g); @@ -188,13 +169,11 @@ public class WeatherEffectRenderer { float u = columnInstance.uOffset + 1.0F; float v = columnInstance.bottomY * 0.25F + columnInstance.vOffset; float w = columnInstance.topY * 0.25F + columnInstance.vOffset; - bufferBuilder.addVertex(n, p, r).setUv(t, v).setColor(j).setLight(columnInstance.lightCoords); - bufferBuilder.addVertex(o, p, s).setUv(u, v).setColor(j).setLight(columnInstance.lightCoords); - bufferBuilder.addVertex(o, q, s).setUv(u, w).setColor(j).setLight(columnInstance.lightCoords); - bufferBuilder.addVertex(n, q, r).setUv(t, w).setColor(j).setLight(columnInstance.lightCoords); + buffer.addVertex(n, p, r).setUv(t, v).setColor(j).setLight(columnInstance.lightCoords); + buffer.addVertex(o, p, s).setUv(u, v).setColor(j).setLight(columnInstance.lightCoords); + buffer.addVertex(o, q, s).setUv(u, w).setColor(j).setLight(columnInstance.lightCoords); + buffer.addVertex(n, q, r).setUv(t, w).setColor(j).setLight(columnInstance.lightCoords); } - - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); } public void tickRainParticles(ClientLevel level, Camera camera, int ticks, ParticleStatus particleStatus) { @@ -208,7 +187,7 @@ public class WeatherEffectRenderer { for (int j = 0; j < i; j++) { int k = randomSource.nextInt(21) - 10; int l = randomSource.nextInt(21) - 10; - BlockPos blockPos3 = level.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, blockPos.offset(k, 0, l)); + BlockPos blockPos3 = level.getHeightmapPos(Types.MOTION_BLOCKING, blockPos.offset(k, 0, l)); if (blockPos3.getY() > level.getMinY() && blockPos3.getY() <= blockPos.getY() + 10 && blockPos3.getY() >= blockPos.getY() - 10 @@ -223,7 +202,7 @@ public class WeatherEffectRenderer { BlockState blockState = level.getBlockState(blockPos2); FluidState fluidState = level.getFluidState(blockPos2); VoxelShape voxelShape = blockState.getCollisionShape(level, blockPos2); - double g = voxelShape.max(Direction.Axis.Y, d, e); + double g = voxelShape.max(Axis.Y, d, e); double h = fluidState.getHeight(level, blockPos2); double m = Math.max(g, h); ParticleOptions particleOptions = !fluidState.is(FluidTags.LAVA) && !blockState.is(Blocks.MAGMA_BLOCK) && !CampfireBlock.isLitCampfire(blockState) @@ -235,7 +214,7 @@ public class WeatherEffectRenderer { if (blockPos2 != null && randomSource.nextInt(3) < this.rainSoundTime++) { this.rainSoundTime = 0; - if (blockPos2.getY() > blockPos.getY() + 1 && level.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, blockPos).getY() > Mth.floor((float)blockPos.getY())) { + if (blockPos2.getY() > blockPos.getY() + 1 && level.getHeightmapPos(Types.MOTION_BLOCKING, blockPos).getY() > Mth.floor((float)blockPos.getY())) { level.playLocalSound(blockPos2, SoundEvents.WEATHER_RAIN_ABOVE, SoundSource.WEATHER, 0.1F, 0.5F, false); } else { level.playLocalSound(blockPos2, SoundEvents.WEATHER_RAIN, SoundSource.WEATHER, 0.2F, 1.0F, false); diff --git a/net/minecraft/client/renderer/WorldBorderRenderer.java b/net/minecraft/client/renderer/WorldBorderRenderer.java index 2705d6ea..2084c3bb 100644 --- a/net/minecraft/client/renderer/WorldBorderRenderer.java +++ b/net/minecraft/client/renderer/WorldBorderRenderer.java @@ -1,13 +1,12 @@ package net.minecraft.client.renderer; -import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferUploader; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.MeshData; import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormat.Mode; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; @@ -20,7 +19,7 @@ import net.minecraft.world.phys.Vec3; @Environment(EnvType.CLIENT) public class WorldBorderRenderer { - private static final ResourceLocation FORCEFIELD_LOCATION = ResourceLocation.withDefaultNamespace("textures/misc/forcefield.png"); + public static final ResourceLocation FORCEFIELD_LOCATION = ResourceLocation.withDefaultNamespace("textures/misc/forcefield.png"); public void render(WorldBorder worldBorder, Vec3 cameraPosition, double renderDistance, double farPlaneDepth) { double d = worldBorder.getMinX(); @@ -37,26 +36,17 @@ public class WorldBorderRenderer { double i = cameraPosition.x; double j = cameraPosition.z; float k = (float)farPlaneDepth; - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.blendFuncSeparate( - GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO - ); - RenderSystem.setShaderTexture(0, FORCEFIELD_LOCATION); - RenderSystem.depthMask(Minecraft.useShaderTransparency()); + RenderType renderType = RenderType.worldBorder(Minecraft.useShaderTransparency()); + renderType.setupRenderState(); int l = worldBorder.getStatus().getColor(); float m = ARGB.red(l) / 255.0F; float n = ARGB.green(l) / 255.0F; float o = ARGB.blue(l) / 255.0F; RenderSystem.setShaderColor(m, n, o, (float)h); - RenderSystem.setShader(CoreShaders.POSITION_TEX); - RenderSystem.polygonOffset(-3.0F, -3.0F); - RenderSystem.enablePolygonOffset(); - RenderSystem.disableCull(); float p = (float)(Util.getMillis() % 3000L) / 3000.0F; float q = (float)(-Mth.frac(cameraPosition.y * 0.5)); float r = q + k; - BufferBuilder bufferBuilder = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); + BufferBuilder bufferBuilder = Tesselator.getInstance().begin(Mode.QUADS, DefaultVertexFormat.POSITION_TEX); double s = Math.max(Mth.floor(j - renderDistance), f); double t = Math.min(Mth.ceil(j + renderDistance), g); float u = (Mth.floor(s) & 1) * 0.5F; @@ -124,13 +114,8 @@ public class WorldBorderRenderer { BufferUploader.drawWithShader(meshData); } - RenderSystem.enableCull(); - RenderSystem.polygonOffset(0.0F, 0.0F); - RenderSystem.disablePolygonOffset(); - RenderSystem.disableBlend(); - RenderSystem.defaultBlendFunc(); + renderType.clearRenderState(); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.depthMask(true); } } } diff --git a/net/minecraft/client/renderer/block/BlockRenderDispatcher.java b/net/minecraft/client/renderer/block/BlockRenderDispatcher.java index d9c1974a..755f5068 100644 --- a/net/minecraft/client/renderer/block/BlockRenderDispatcher.java +++ b/net/minecraft/client/renderer/block/BlockRenderDispatcher.java @@ -2,15 +2,16 @@ package net.minecraft.client.renderer.block; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import java.util.function.Supplier; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; import net.minecraft.ReportedException; import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SpecialBlockModelRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; @@ -18,7 +19,6 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.state.BlockState; @@ -28,14 +28,14 @@ import net.minecraft.world.level.material.FluidState; public class BlockRenderDispatcher implements ResourceManagerReloadListener { private final BlockModelShaper blockModelShaper; private final ModelBlockRenderer modelRenderer; - private final BlockEntityWithoutLevelRenderer blockEntityRenderer; + private final Supplier specialBlockModelRenderer; private final LiquidBlockRenderer liquidBlockRenderer; private final RandomSource random = RandomSource.create(); private final BlockColors blockColors; - public BlockRenderDispatcher(BlockModelShaper blockModelShaper, BlockEntityWithoutLevelRenderer blockEntityRenderer, BlockColors blockColors) { + public BlockRenderDispatcher(BlockModelShaper blockModelShaper, Supplier specialBlockModelRenderer, BlockColors blockColors) { this.blockModelShaper = blockModelShaper; - this.blockEntityRenderer = blockEntityRenderer; + this.specialBlockModelRenderer = specialBlockModelRenderer; this.blockColors = blockColors; this.modelRenderer = new ModelBlockRenderer(this.blockColors); this.liquidBlockRenderer = new LiquidBlockRenderer(); @@ -89,19 +89,15 @@ public class BlockRenderDispatcher implements ResourceManagerReloadListener { public void renderSingleBlock(BlockState state, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { RenderShape renderShape = state.getRenderShape(); if (renderShape != RenderShape.INVISIBLE) { - switch (renderShape) { - case MODEL: - BakedModel bakedModel = this.getBlockModel(state); - int i = this.blockColors.getColor(state, null, null, 0); - float f = (i >> 16 & 0xFF) / 255.0F; - float g = (i >> 8 & 0xFF) / 255.0F; - float h = (i & 0xFF) / 255.0F; - this.modelRenderer - .renderModel(poseStack.last(), bufferSource.getBuffer(ItemBlockRenderTypes.getRenderType(state)), state, bakedModel, f, g, h, packedLight, packedOverlay); - break; - case ENTITYBLOCK_ANIMATED: - this.blockEntityRenderer.renderByItem(new ItemStack(state.getBlock()), ItemDisplayContext.NONE, poseStack, bufferSource, packedLight, packedOverlay); - } + BakedModel bakedModel = this.getBlockModel(state); + int i = this.blockColors.getColor(state, null, null, 0); + float f = (i >> 16 & 0xFF) / 255.0F; + float g = (i >> 8 & 0xFF) / 255.0F; + float h = (i & 0xFF) / 255.0F; + this.modelRenderer + .renderModel(poseStack.last(), bufferSource.getBuffer(ItemBlockRenderTypes.getRenderType(state)), state, bakedModel, f, g, h, packedLight, packedOverlay); + ((SpecialBlockModelRenderer)this.specialBlockModelRenderer.get()) + .renderByBlock(state.getBlock(), ItemDisplayContext.NONE, poseStack, bufferSource, packedLight, packedOverlay); } } diff --git a/net/minecraft/client/renderer/block/model/BakedOverrides.java b/net/minecraft/client/renderer/block/model/BakedOverrides.java deleted file mode 100644 index f4af498e..00000000 --- a/net/minecraft/client/renderer/block/model/BakedOverrides.java +++ /dev/null @@ -1,104 +0,0 @@ -package net.minecraft.client.renderer.block.model; - -import com.google.common.collect.Lists; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import java.util.List; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.block.model.ItemOverride.Predicate; -import net.minecraft.client.renderer.item.ItemProperties; -import net.minecraft.client.renderer.item.ItemPropertyFunction; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelBaker; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class BakedOverrides { - public static final BakedOverrides EMPTY = new BakedOverrides(); - public static final float NO_OVERRIDE = Float.NEGATIVE_INFINITY; - private final BakedOverrides.BakedOverride[] overrides; - private final ResourceLocation[] properties; - - private BakedOverrides() { - this.overrides = new BakedOverrides.BakedOverride[0]; - this.properties = new ResourceLocation[0]; - } - - public BakedOverrides(ModelBaker baker, List overrides) { - this.properties = (ResourceLocation[])overrides.stream() - .flatMap(itemOverridex -> itemOverridex.predicates().stream()) - .map(Predicate::property) - .distinct() - .toArray(ResourceLocation[]::new); - Object2IntMap object2IntMap = new Object2IntOpenHashMap<>(); - - for (int i = 0; i < this.properties.length; i++) { - object2IntMap.put(this.properties[i], i); - } - - List list = Lists.newArrayList(); - - for (int j = overrides.size() - 1; j >= 0; j--) { - ItemOverride itemOverride = (ItemOverride)overrides.get(j); - BakedModel bakedModel = baker.bake(itemOverride.model(), BlockModelRotation.X0_Y0); - BakedOverrides.PropertyMatcher[] propertyMatchers = (BakedOverrides.PropertyMatcher[])itemOverride.predicates().stream().map(predicate -> { - int i = object2IntMap.getInt(predicate.property()); - return new BakedOverrides.PropertyMatcher(i, predicate.value()); - }).toArray(BakedOverrides.PropertyMatcher[]::new); - list.add(new BakedOverrides.BakedOverride(propertyMatchers, bakedModel)); - } - - this.overrides = (BakedOverrides.BakedOverride[])list.toArray(new BakedOverrides.BakedOverride[0]); - } - - @Nullable - public BakedModel findOverride(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { - int i = this.properties.length; - if (i != 0) { - float[] fs = new float[i]; - - for (int j = 0; j < i; j++) { - ResourceLocation resourceLocation = this.properties[j]; - ItemPropertyFunction itemPropertyFunction = ItemProperties.getProperty(stack, resourceLocation); - if (itemPropertyFunction != null) { - fs[j] = itemPropertyFunction.call(stack, level, entity, seed); - } else { - fs[j] = Float.NEGATIVE_INFINITY; - } - } - - for (BakedOverrides.BakedOverride bakedOverride : this.overrides) { - if (bakedOverride.test(fs)) { - return bakedOverride.model; - } - } - } - - return null; - } - - @Environment(EnvType.CLIENT) - record BakedOverride(BakedOverrides.PropertyMatcher[] matchers, @Nullable BakedModel model) { - - boolean test(float[] values) { - for (BakedOverrides.PropertyMatcher propertyMatcher : this.matchers) { - float f = values[propertyMatcher.index]; - if (f < propertyMatcher.value) { - return false; - } - } - - return true; - } - } - - @Environment(EnvType.CLIENT) - record PropertyMatcher(int index, float value) { - } -} diff --git a/net/minecraft/client/renderer/block/model/BlockElement.java b/net/minecraft/client/renderer/block/model/BlockElement.java index f1cf9d8a..370b1e0a 100644 --- a/net/minecraft/client/renderer/block/model/BlockElement.java +++ b/net/minecraft/client/renderer/block/model/BlockElement.java @@ -14,6 +14,7 @@ import java.util.Map.Entry; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; import net.minecraft.util.GsonHelper; import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; @@ -27,6 +28,7 @@ public class BlockElement { public final Vector3f from; public final Vector3f to; public final Map faces; + @Nullable public final BlockElementRotation rotation; public final boolean shade; public final int lightEmission; @@ -55,21 +57,14 @@ public class BlockElement { } private float[] uvsByFace(Direction face) { - switch (face) { - case DOWN: - return new float[]{this.from.x(), 16.0F - this.to.z(), this.to.x(), 16.0F - this.from.z()}; - case UP: - return new float[]{this.from.x(), this.from.z(), this.to.x(), this.to.z()}; - case NORTH: - default: - return new float[]{16.0F - this.to.x(), 16.0F - this.to.y(), 16.0F - this.from.x(), 16.0F - this.from.y()}; - case SOUTH: - return new float[]{this.from.x(), 16.0F - this.to.y(), this.to.x(), 16.0F - this.from.y()}; - case WEST: - return new float[]{this.from.z(), 16.0F - this.to.y(), this.to.z(), 16.0F - this.from.y()}; - case EAST: - return new float[]{16.0F - this.to.z(), 16.0F - this.to.y(), 16.0F - this.from.z(), 16.0F - this.from.y()}; - } + return switch (face) { + case DOWN -> new float[]{this.from.x(), 16.0F - this.to.z(), this.to.x(), 16.0F - this.from.z()}; + case UP -> new float[]{this.from.x(), this.from.z(), this.to.x(), this.to.z()}; + case NORTH -> new float[]{16.0F - this.to.x(), 16.0F - this.to.y(), 16.0F - this.from.x(), 16.0F - this.from.y()}; + case SOUTH -> new float[]{this.from.x(), 16.0F - this.to.y(), this.to.x(), 16.0F - this.from.y()}; + case WEST -> new float[]{this.from.z(), 16.0F - this.to.y(), this.to.z(), 16.0F - this.from.y()}; + case EAST -> new float[]{16.0F - this.to.z(), 16.0F - this.to.y(), 16.0F - this.from.z(), 16.0F - this.from.y()}; + }; } @Environment(EnvType.CLIENT) @@ -110,7 +105,7 @@ public class BlockElement { JsonObject jsonObject = GsonHelper.getAsJsonObject(json, "rotation"); Vector3f vector3f = this.getVector3f(jsonObject, "origin"); vector3f.mul(0.0625F); - Direction.Axis axis = this.getAxis(jsonObject); + Axis axis = this.getAxis(jsonObject); float f = this.getAngle(jsonObject); boolean bl = GsonHelper.getAsBoolean(jsonObject, "rescale", false); blockElementRotation = new BlockElementRotation(vector3f, axis, f, bl); @@ -128,9 +123,9 @@ public class BlockElement { } } - private Direction.Axis getAxis(JsonObject json) { + private Axis getAxis(JsonObject json) { String string = GsonHelper.getAsString(json, "axis"); - Direction.Axis axis = Direction.Axis.byName(string.toLowerCase(Locale.ROOT)); + Axis axis = Axis.byName(string.toLowerCase(Locale.ROOT)); if (axis == null) { throw new JsonParseException("Invalid rotation axis: " + string); } else { diff --git a/net/minecraft/client/renderer/block/model/BlockModel.java b/net/minecraft/client/renderer/block/model/BlockModel.java index a8e4d655..99e0fdbc 100644 --- a/net/minecraft/client/renderer/block/model/BlockModel.java +++ b/net/minecraft/client/renderer/block/model/BlockModel.java @@ -1,9 +1,6 @@ package net.minecraft.client.renderer.block.model; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; @@ -11,39 +8,25 @@ import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import com.mojang.datafixers.util.Either; -import com.mojang.logging.LogUtils; import java.io.Reader; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Map.Entry; -import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BuiltInModel; -import net.minecraft.client.resources.model.Material; import net.minecraft.client.resources.model.ModelBaker; import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.ResolvableModel; import net.minecraft.client.resources.model.SimpleBakedModel; -import net.minecraft.client.resources.model.SpecialModels; import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; -import net.minecraft.world.item.ItemDisplayContext; import org.jetbrains.annotations.Nullable; -import org.slf4j.Logger; @Environment(EnvType.CLIENT) public class BlockModel implements UnbakedModel { - private static final Logger LOGGER = LogUtils.getLogger(); - private static final FaceBakery FACE_BAKERY = new FaceBakery(); @VisibleForTesting static final Gson GSON = new GsonBuilder() .registerTypeAdapter(BlockModel.class, new BlockModel.Deserializer()) @@ -52,26 +35,20 @@ public class BlockModel implements UnbakedModel { .registerTypeAdapter(BlockFaceUV.class, new BlockFaceUV.Deserializer()) .registerTypeAdapter(ItemTransform.class, new ItemTransform.Deserializer()) .registerTypeAdapter(ItemTransforms.class, new ItemTransforms.Deserializer()) - .registerTypeAdapter(ItemOverride.class, new ItemOverride.Deserializer()) .create(); - private static final char REFERENCE_CHAR = '#'; - public static final String PARTICLE_TEXTURE_REFERENCE = "particle"; - private static final boolean DEFAULT_AMBIENT_OCCLUSION = true; - public static final Material MISSING_MATERIAL = new Material(TextureAtlas.LOCATION_BLOCKS, MissingTextureAtlasSprite.getLocation()); private final List elements; @Nullable - private final BlockModel.GuiLight guiLight; + private final UnbakedModel.GuiLight guiLight; @Nullable private final Boolean hasAmbientOcclusion; + @Nullable private final ItemTransforms transforms; - private final List overrides; - public String name = ""; @VisibleForTesting - protected final Map> textureMap; + private final TextureSlots.Data textureSlots; @Nullable - protected BlockModel parent; + private UnbakedModel parent; @Nullable - protected ResourceLocation parentLocation; + private final ResourceLocation parentLocation; public static BlockModel fromStream(Reader reader) { return GsonHelper.fromJson(GSON, reader, BlockModel.class); @@ -80,162 +57,74 @@ public class BlockModel implements UnbakedModel { public BlockModel( @Nullable ResourceLocation parentLocation, List elements, - Map> textureMap, + TextureSlots.Data textureSlots, @Nullable Boolean hasAmbientOcclusion, - @Nullable BlockModel.GuiLight guiLight, - ItemTransforms transforms, - List overrides + @Nullable UnbakedModel.GuiLight guiLight, + @Nullable ItemTransforms transforms ) { this.elements = elements; this.hasAmbientOcclusion = hasAmbientOcclusion; this.guiLight = guiLight; - this.textureMap = textureMap; + this.textureSlots = textureSlots; this.parentLocation = parentLocation; this.transforms = transforms; - this.overrides = overrides; } - public List getElements() { - return this.elements.isEmpty() && this.parent != null ? this.parent.getElements() : this.elements; + @Nullable + @Override + public Boolean getAmbientOcclusion() { + return this.hasAmbientOcclusion; } - public boolean hasAmbientOcclusion() { - if (this.hasAmbientOcclusion != null) { - return this.hasAmbientOcclusion; - } else { - return this.parent != null ? this.parent.hasAmbientOcclusion() : true; - } - } - - public BlockModel.GuiLight getGuiLight() { - if (this.guiLight != null) { - return this.guiLight; - } else { - return this.parent != null ? this.parent.getGuiLight() : BlockModel.GuiLight.SIDE; - } - } - - public boolean isResolved() { - return this.parentLocation == null || this.parent != null && this.parent.isResolved(); - } - - public List getOverrides() { - return this.overrides; + @Nullable + @Override + public UnbakedModel.GuiLight getGuiLight() { + return this.guiLight; } @Override - public void resolveDependencies(UnbakedModel.Resolver resolver) { + public void resolveDependencies(ResolvableModel.Resolver resolver) { if (this.parentLocation != null) { - if (!(resolver.resolve(this.parentLocation) instanceof BlockModel blockModel)) { - throw new IllegalStateException("BlockModel parent has to be a block model."); - } - - this.parent = blockModel; + this.parent = resolver.resolve(this.parentLocation); } } + @Nullable + @Override + public UnbakedModel getParent() { + return this.parent; + } + @Override - public BakedModel bake(ModelBaker baker, Function spriteGetter, ModelState state) { - return this.bake(spriteGetter, state, true); - } - - public BakedModel bake(Function spriteGetter, ModelState state, boolean isGui3d) { - TextureAtlasSprite textureAtlasSprite = (TextureAtlasSprite)spriteGetter.apply(this.getMaterial("particle")); - if (this.getRootModel() == SpecialModels.BLOCK_ENTITY_MARKER) { - return new BuiltInModel(this.getTransforms(), textureAtlasSprite, this.getGuiLight().lightLikeBlock()); - } else { - SimpleBakedModel.Builder builder = new SimpleBakedModel.Builder(this, isGui3d).particle(textureAtlasSprite); - - for (BlockElement blockElement : this.getElements()) { - for (Direction direction : blockElement.faces.keySet()) { - BlockElementFace blockElementFace = (BlockElementFace)blockElement.faces.get(direction); - TextureAtlasSprite textureAtlasSprite2 = (TextureAtlasSprite)spriteGetter.apply(this.getMaterial(blockElementFace.texture())); - if (blockElementFace.cullForDirection() == null) { - builder.addUnculledFace(bakeFace(blockElement, blockElementFace, textureAtlasSprite2, direction, state)); - } else { - builder.addCulledFace( - Direction.rotate(state.getRotation().getMatrix(), blockElementFace.cullForDirection()), - bakeFace(blockElement, blockElementFace, textureAtlasSprite2, direction, state) - ); - } - } - } - - return builder.build(); - } - } - - private static BakedQuad bakeFace(BlockElement element, BlockElementFace face, TextureAtlasSprite sprite, Direction facing, ModelState state) { - return FACE_BAKERY.bakeQuad(element.from, element.to, face, sprite, facing, state, element.rotation, element.shade, element.lightEmission); - } - - public boolean hasTexture(String textureName) { - return !MissingTextureAtlasSprite.getLocation().equals(this.getMaterial(textureName).texture()); - } - - public Material getMaterial(String name) { - if (isTextureReference(name)) { - name = name.substring(1); - } - - List list = Lists.newArrayList(); - - while (true) { - Either either = this.findTextureEntry(name); - Optional optional = either.left(); - if (optional.isPresent()) { - return (Material)optional.get(); - } - - name = (String)either.right().get(); - if (list.contains(name)) { - LOGGER.warn("Unable to resolve texture due to reference chain {}->{} in {}", Joiner.on("->").join(list), name, this.name); - return MISSING_MATERIAL; - } - - list.add(name); - } - } - - private Either findTextureEntry(String name) { - for (BlockModel blockModel = this; blockModel != null; blockModel = blockModel.parent) { - Either either = (Either)blockModel.textureMap.get(name); - if (either != null) { - return either; - } - } - - return Either.left(MISSING_MATERIAL); - } - - static boolean isTextureReference(String str) { - return str.charAt(0) == '#'; - } - - public BlockModel getRootModel() { - return this.parent == null ? this : this.parent.getRootModel(); + public TextureSlots.Data getTextureSlots() { + return this.textureSlots; } + @Nullable + @Override public ItemTransforms getTransforms() { - ItemTransform itemTransform = this.getTransform(ItemDisplayContext.THIRD_PERSON_LEFT_HAND); - ItemTransform itemTransform2 = this.getTransform(ItemDisplayContext.THIRD_PERSON_RIGHT_HAND); - ItemTransform itemTransform3 = this.getTransform(ItemDisplayContext.FIRST_PERSON_LEFT_HAND); - ItemTransform itemTransform4 = this.getTransform(ItemDisplayContext.FIRST_PERSON_RIGHT_HAND); - ItemTransform itemTransform5 = this.getTransform(ItemDisplayContext.HEAD); - ItemTransform itemTransform6 = this.getTransform(ItemDisplayContext.GUI); - ItemTransform itemTransform7 = this.getTransform(ItemDisplayContext.GROUND); - ItemTransform itemTransform8 = this.getTransform(ItemDisplayContext.FIXED); - return new ItemTransforms(itemTransform, itemTransform2, itemTransform3, itemTransform4, itemTransform5, itemTransform6, itemTransform7, itemTransform8); + return this.transforms; } - private ItemTransform getTransform(ItemDisplayContext displayContext) { - return this.parent != null && !this.transforms.hasTransform(displayContext) - ? this.parent.getTransform(displayContext) - : this.transforms.getTransform(displayContext); + @Override + public BakedModel bake( + TextureSlots textureSlots, ModelBaker baker, ModelState modelState, boolean hasAmbientOcclusion, boolean useBlockLight, ItemTransforms transforms + ) { + return this.elements.isEmpty() && this.parent != null + ? this.parent.bake(textureSlots, baker, modelState, hasAmbientOcclusion, useBlockLight, transforms) + : SimpleBakedModel.bakeElements(this.elements, textureSlots, baker.sprites(), modelState, hasAmbientOcclusion, useBlockLight, true, transforms); } - public String toString() { - return this.name; + @Nullable + @VisibleForTesting + List getElements() { + return this.elements; + } + + @Nullable + @VisibleForTesting + ResourceLocation getParentLocation() { + return this.parentLocation; } @Environment(EnvType.CLIENT) @@ -244,59 +133,29 @@ public class BlockModel implements UnbakedModel { JsonObject jsonObject = json.getAsJsonObject(); List list = this.getElements(context, jsonObject); String string = this.getParentName(jsonObject); - Map> map = this.getTextureMap(jsonObject); + TextureSlots.Data data = this.getTextureMap(jsonObject); Boolean boolean_ = this.getAmbientOcclusion(jsonObject); - ItemTransforms itemTransforms = ItemTransforms.NO_TRANSFORMS; + ItemTransforms itemTransforms = null; if (jsonObject.has("display")) { JsonObject jsonObject2 = GsonHelper.getAsJsonObject(jsonObject, "display"); itemTransforms = context.deserialize(jsonObject2, ItemTransforms.class); } - List list2 = this.getOverrides(context, jsonObject); - BlockModel.GuiLight guiLight = null; + UnbakedModel.GuiLight guiLight = null; if (jsonObject.has("gui_light")) { - guiLight = BlockModel.GuiLight.getByName(GsonHelper.getAsString(jsonObject, "gui_light")); + guiLight = UnbakedModel.GuiLight.getByName(GsonHelper.getAsString(jsonObject, "gui_light")); } ResourceLocation resourceLocation = string.isEmpty() ? null : ResourceLocation.parse(string); - return new BlockModel(resourceLocation, list, map, boolean_, guiLight, itemTransforms, list2); + return new BlockModel(resourceLocation, list, data, boolean_, guiLight, itemTransforms); } - protected List getOverrides(JsonDeserializationContext context, JsonObject json) { - List list = Lists.newArrayList(); - if (json.has("overrides")) { - for (JsonElement jsonElement : GsonHelper.getAsJsonArray(json, "overrides")) { - list.add((ItemOverride)context.deserialize(jsonElement, ItemOverride.class)); - } - } - - return list; - } - - private Map> getTextureMap(JsonObject json) { - ResourceLocation resourceLocation = TextureAtlas.LOCATION_BLOCKS; - Map> map = Maps.>newHashMap(); + private TextureSlots.Data getTextureMap(JsonObject json) { if (json.has("textures")) { JsonObject jsonObject = GsonHelper.getAsJsonObject(json, "textures"); - - for (Entry entry : jsonObject.entrySet()) { - map.put((String)entry.getKey(), parseTextureLocationOrReference(resourceLocation, ((JsonElement)entry.getValue()).getAsString())); - } - } - - return map; - } - - private static Either parseTextureLocationOrReference(ResourceLocation location, String name) { - if (BlockModel.isTextureReference(name)) { - return Either.right(name.substring(1)); + return TextureSlots.parseTextureMap(jsonObject, TextureAtlas.LOCATION_BLOCKS); } else { - ResourceLocation resourceLocation = ResourceLocation.tryParse(name); - if (resourceLocation == null) { - throw new JsonParseException(name + " is not valid resource location"); - } else { - return Either.left(new Material(location, resourceLocation)); - } + return TextureSlots.Data.EMPTY; } } @@ -310,40 +169,17 @@ public class BlockModel implements UnbakedModel { } protected List getElements(JsonDeserializationContext context, JsonObject json) { - List list = Lists.newArrayList(); - if (json.has("elements")) { + if (!json.has("elements")) { + return List.of(); + } else { + List list = new ArrayList(); + for (JsonElement jsonElement : GsonHelper.getAsJsonArray(json, "elements")) { list.add((BlockElement)context.deserialize(jsonElement, BlockElement.class)); } + + return list; } - - return list; - } - } - - @Environment(EnvType.CLIENT) - public static enum GuiLight { - FRONT("front"), - SIDE("side"); - - private final String name; - - private GuiLight(final String name) { - this.name = name; - } - - public static BlockModel.GuiLight getByName(String name) { - for (BlockModel.GuiLight guiLight : values()) { - if (guiLight.name.equals(name)) { - return guiLight; - } - } - - throw new IllegalArgumentException("Invalid gui light: " + name); - } - - public boolean lightLikeBlock() { - return this == SIDE; } } } diff --git a/net/minecraft/client/renderer/block/model/BlockModelDefinition.java b/net/minecraft/client/renderer/block/model/BlockModelDefinition.java index c611d7e5..91648f42 100644 --- a/net/minecraft/client/renderer/block/model/BlockModelDefinition.java +++ b/net/minecraft/client/renderer/block/model/BlockModelDefinition.java @@ -24,7 +24,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.multipart.MultiPart; import net.minecraft.client.renderer.block.model.multipart.Selector; -import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -109,19 +108,27 @@ public class BlockModelDefinition { multiPart = null; } - this.variants.forEach((string2, multiVariant) -> { - try { - list.stream().filter(VariantSelector.predicate(stateDefinition, string2)).forEach(blockState -> { - UnbakedModel unbakedModel = (UnbakedModel)map.put(blockState, multiVariant); - if (unbakedModel != null && unbakedModel != multiPart) { - String stringx = (String)((Entry)this.variants.entrySet().stream().filter(entry -> entry.getValue() == unbakedModel).findFirst().get()).getKey(); - throw new RuntimeException("Overlapping definition with: " + stringx); + this.variants + .forEach( + (string2, multiVariant) -> { + try { + list.stream() + .filter(VariantSelector.predicate(stateDefinition, string2)) + .forEach( + blockState -> { + UnbakedBlockStateModel unbakedBlockStateModel = (UnbakedBlockStateModel)map.put(blockState, multiVariant); + if (unbakedBlockStateModel != null && unbakedBlockStateModel != multiPart) { + String stringx = (String)((Entry)this.variants.entrySet().stream().filter(entry -> entry.getValue() == unbakedBlockStateModel).findFirst().get()) + .getKey(); + throw new RuntimeException("Overlapping definition with: " + stringx); + } + } + ); + } catch (Exception var9) { + LOGGER.warn("Exception loading blockstate definition: '{}' for variant: '{}': {}", name, string2, var9.getMessage()); } - }); - } catch (Exception var9) { - LOGGER.warn("Exception loading blockstate definition: '{}' for variant: '{}': {}", name, string2, var9.getMessage()); - } - }); + } + ); return map; } diff --git a/net/minecraft/client/renderer/block/model/FaceBakery.java b/net/minecraft/client/renderer/block/model/FaceBakery.java index aeb0bfa1..a4b0e6e4 100644 --- a/net/minecraft/client/renderer/block/model/FaceBakery.java +++ b/net/minecraft/client/renderer/block/model/FaceBakery.java @@ -28,7 +28,7 @@ public class FaceBakery { private static final int COLOR_INDEX = 3; public static final int UV_INDEX = 4; - public BakedQuad bakeQuad( + public static BakedQuad bakeQuad( Vector3f posFrom, Vector3f posTo, BlockElementFace face, @@ -53,11 +53,11 @@ public class FaceBakery { blockFaceUV.uvs[2] = Mth.lerp(f, blockFaceUV.uvs[2], g); blockFaceUV.uvs[1] = Mth.lerp(f, blockFaceUV.uvs[1], h); blockFaceUV.uvs[3] = Mth.lerp(f, blockFaceUV.uvs[3], h); - int[] is = this.makeVertices(blockFaceUV, sprite, facing, this.setupShape(posFrom, posTo), transform.getRotation(), rotation); + int[] is = makeVertices(blockFaceUV, sprite, facing, setupShape(posFrom, posTo), transform.getRotation(), rotation); Direction direction = calculateFacing(is); System.arraycopy(fs, 0, blockFaceUV.uvs, 0, fs.length); if (rotation == null) { - this.recalculateWinding(is, direction); + recalculateWinding(is, direction); } return new BakedQuad(is, face.tintIndex(), direction, sprite, shade, lightEmission); @@ -102,7 +102,7 @@ public class FaceBakery { return new BlockFaceUV(new float[]{n, p, o, q}, s); } - private int[] makeVertices( + private static int[] makeVertices( BlockFaceUV uvs, TextureAtlasSprite sprite, Direction orientation, @@ -113,13 +113,13 @@ public class FaceBakery { int[] is = new int[32]; for (int i = 0; i < 4; i++) { - this.bakeVertex(is, i, orientation, uvs, posDiv16, sprite, transformation, partRotation); + bakeVertex(is, i, orientation, uvs, posDiv16, sprite, transformation, partRotation); } return is; } - private float[] setupShape(Vector3f min, Vector3f max) { + private static float[] setupShape(Vector3f min, Vector3f max) { float[] fs = new float[Direction.values().length]; fs[Constants.MIN_X] = min.x() / 16.0F; fs[Constants.MIN_Y] = min.y() / 16.0F; @@ -130,7 +130,7 @@ public class FaceBakery { return fs; } - private void bakeVertex( + private static void bakeVertex( int[] vertexData, int vertexIndex, Direction facing, @@ -142,12 +142,12 @@ public class FaceBakery { ) { VertexInfo vertexInfo = FaceInfo.fromFacing(facing).getVertexInfo(vertexIndex); Vector3f vector3f = new Vector3f(posDiv16[vertexInfo.xFace], posDiv16[vertexInfo.yFace], posDiv16[vertexInfo.zFace]); - this.applyElementRotation(vector3f, partRotation); - this.applyModelRotation(vector3f, transformation); - this.fillVertex(vertexData, vertexIndex, vector3f, sprite, blockFaceUV); + applyElementRotation(vector3f, partRotation); + applyModelRotation(vector3f, transformation); + fillVertex(vertexData, vertexIndex, vector3f, sprite, blockFaceUV); } - private void fillVertex(int[] vertexData, int vertexIndex, Vector3f vector, TextureAtlasSprite sprite, BlockFaceUV blockFaceUV) { + private static void fillVertex(int[] vertexData, int vertexIndex, Vector3f vector, TextureAtlasSprite sprite, BlockFaceUV blockFaceUV) { int i = vertexIndex * 8; vertexData[i] = Float.floatToRawIntBits(vector.x()); vertexData[i + 1] = Float.floatToRawIntBits(vector.y()); @@ -157,7 +157,7 @@ public class FaceBakery { vertexData[i + 4 + 1] = Float.floatToRawIntBits(sprite.getV(blockFaceUV.getV(vertexIndex) / 16.0F)); } - private void applyElementRotation(Vector3f vec, @Nullable BlockElementRotation partRotation) { + private static void applyElementRotation(Vector3f vec, @Nullable BlockElementRotation partRotation) { if (partRotation != null) { Vector3f vector3f; Vector3f vector3f2; @@ -191,23 +191,23 @@ public class FaceBakery { vector3f2.set(1.0F, 1.0F, 1.0F); } - this.rotateVertexBy(vec, new Vector3f(partRotation.origin()), new Matrix4f().rotation(quaternionf), vector3f2); + rotateVertexBy(vec, new Vector3f(partRotation.origin()), new Matrix4f().rotation(quaternionf), vector3f2); } } - public void applyModelRotation(Vector3f pos, Transformation transform) { + private static void applyModelRotation(Vector3f pos, Transformation transform) { if (transform != Transformation.identity()) { - this.rotateVertexBy(pos, new Vector3f(0.5F, 0.5F, 0.5F), transform.getMatrix(), new Vector3f(1.0F, 1.0F, 1.0F)); + rotateVertexBy(pos, new Vector3f(0.5F, 0.5F, 0.5F), transform.getMatrix(), new Vector3f(1.0F, 1.0F, 1.0F)); } } - private void rotateVertexBy(Vector3f pos, Vector3f origin, Matrix4f transform, Vector3f scale) { + private static void rotateVertexBy(Vector3f pos, Vector3f origin, Matrix4f transform, Vector3f scale) { Vector4f vector4f = transform.transform(new Vector4f(pos.x() - origin.x(), pos.y() - origin.y(), pos.z() - origin.z(), 1.0F)); vector4f.mul(new Vector4f(scale, 1.0F)); pos.set(vector4f.x() + origin.x(), vector4f.y() + origin.y(), vector4f.z() + origin.z()); } - public static Direction calculateFacing(int[] faceData) { + private static Direction calculateFacing(int[] faceData) { Vector3f vector3f = new Vector3f(Float.intBitsToFloat(faceData[0]), Float.intBitsToFloat(faceData[1]), Float.intBitsToFloat(faceData[2])); Vector3f vector3f2 = new Vector3f(Float.intBitsToFloat(faceData[8]), Float.intBitsToFloat(faceData[9]), Float.intBitsToFloat(faceData[10])); Vector3f vector3f3 = new Vector3f(Float.intBitsToFloat(faceData[16]), Float.intBitsToFloat(faceData[17]), Float.intBitsToFloat(faceData[18])); @@ -234,7 +234,7 @@ public class FaceBakery { } } - private void recalculateWinding(int[] vertices, Direction direction) { + private static void recalculateWinding(int[] vertices, Direction direction) { int[] is = new int[vertices.length]; System.arraycopy(vertices, 0, is, 0, vertices.length); float[] fs = new float[Direction.values().length]; diff --git a/net/minecraft/client/renderer/block/model/ItemModelGenerator.java b/net/minecraft/client/renderer/block/model/ItemModelGenerator.java index 05fb5ec1..c64884b5 100644 --- a/net/minecraft/client/renderer/block/model/ItemModelGenerator.java +++ b/net/minecraft/client/renderer/block/model/ItemModelGenerator.java @@ -1,52 +1,84 @@ package net.minecraft.client.renderer.block.model; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.mojang.datafixers.util.Either; +import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.block.model.TextureSlots.Data.Builder; import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelBaker; +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.client.resources.model.SimpleBakedModel; +import net.minecraft.client.resources.model.SpriteGetter; +import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; @Environment(EnvType.CLIENT) -public class ItemModelGenerator { - public static final List LAYERS = Lists.newArrayList("layer0", "layer1", "layer2", "layer3", "layer4"); +public class ItemModelGenerator implements UnbakedModel { + public static final ResourceLocation GENERATED_ITEM_MODEL_ID = ResourceLocation.withDefaultNamespace("builtin/generated"); + public static final List LAYERS = List.of("layer0", "layer1", "layer2", "layer3", "layer4"); private static final float MIN_Z = 7.5F; private static final float MAX_Z = 8.5F; + private static final TextureSlots.Data TEXTURE_SLOTS = new Builder().addReference("particle", "layer0").build(); - public BlockModel generateBlockModel(Function spriteGetter, BlockModel model) { - Map> map = Maps.>newHashMap(); - List list = Lists.newArrayList(); + @Override + public TextureSlots.Data getTextureSlots() { + return TEXTURE_SLOTS; + } + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + } + + @Nullable + @Override + public UnbakedModel.GuiLight getGuiLight() { + return UnbakedModel.GuiLight.FRONT; + } + + @Override + public BakedModel bake( + TextureSlots textureSlots, ModelBaker baker, ModelState modelState, boolean hasAmbientOcclusion, boolean useBlockLight, ItemTransforms transforms + ) { + return this.bake(textureSlots, baker.sprites(), modelState, hasAmbientOcclusion, useBlockLight, transforms); + } + + private BakedModel bake( + TextureSlots textureSlots, SpriteGetter spriteGetter, ModelState modelState, boolean hasAmbientOcclusion, boolean useBlockLight, ItemTransforms transforms + ) { + Builder builder = new Builder(); + List list = new ArrayList(); for (int i = 0; i < LAYERS.size(); i++) { String string = (String)LAYERS.get(i); - if (!model.hasTexture(string)) { + Material material = textureSlots.getMaterial(string); + if (material == null) { break; } - Material material = model.getMaterial(string); - map.put(string, Either.left(material)); - SpriteContents spriteContents = ((TextureAtlasSprite)spriteGetter.apply(material)).contents(); + builder.addTexture(string, material); + SpriteContents spriteContents = spriteGetter.get(material).contents(); list.addAll(this.processFrames(i, string, spriteContents)); } - map.put("particle", model.hasTexture("particle") ? Either.left(model.getMaterial("particle")) : (Either)map.get("layer0")); - BlockModel blockModel = new BlockModel(null, list, map, false, model.getGuiLight(), model.getTransforms(), model.getOverrides()); - blockModel.name = model.name; - return blockModel; + return SimpleBakedModel.bakeElements(list, textureSlots, spriteGetter, modelState, hasAmbientOcclusion, useBlockLight, false, transforms); } private List processFrames(int tintIndex, String texture, SpriteContents sprite) { - Map map = Maps.newHashMap(); - map.put(Direction.SOUTH, new BlockElementFace(null, tintIndex, texture, new BlockFaceUV(new float[]{0.0F, 0.0F, 16.0F, 16.0F}, 0))); - map.put(Direction.NORTH, new BlockElementFace(null, tintIndex, texture, new BlockFaceUV(new float[]{16.0F, 0.0F, 0.0F, 16.0F}, 0))); - List list = Lists.newArrayList(); + Map map = Map.of( + Direction.SOUTH, + new BlockElementFace(null, tintIndex, texture, new BlockFaceUV(new float[]{0.0F, 0.0F, 16.0F, 16.0F}, 0)), + Direction.NORTH, + new BlockElementFace(null, tintIndex, texture, new BlockFaceUV(new float[]{16.0F, 0.0F, 0.0F, 16.0F}, 0)) + ); + List list = new ArrayList(); list.add(new BlockElement(new Vector3f(0.0F, 0.0F, 7.5F), new Vector3f(16.0F, 16.0F, 8.5F), map)); list.addAll(this.createSideElements(sprite, texture, tintIndex)); return list; @@ -55,7 +87,7 @@ public class ItemModelGenerator { private List createSideElements(SpriteContents sprite, String texture, int tintIndex) { float f = sprite.width(); float g = sprite.height(); - List list = Lists.newArrayList(); + List list = new ArrayList(); for (ItemModelGenerator.Span span : this.getSpans(sprite)) { float h = 0.0F; @@ -120,8 +152,9 @@ public class ItemModelGenerator { m *= p; n *= q; o *= q; - Map map = Maps.newHashMap(); - map.put(spanFacing.getDirection(), new BlockElementFace(null, tintIndex, texture, new BlockFaceUV(new float[]{l, n, m, o}, 0))); + Map map = Map.of( + spanFacing.getDirection(), new BlockElementFace(null, tintIndex, texture, new BlockFaceUV(new float[]{l, n, m, o}, 0)) + ); switch (spanFacing) { case UP: list.add(new BlockElement(new Vector3f(h, i, 7.5F), new Vector3f(j, i, 8.5F), map)); @@ -143,7 +176,7 @@ public class ItemModelGenerator { private List getSpans(SpriteContents sprite) { int i = sprite.width(); int j = sprite.height(); - List list = Lists.newArrayList(); + List list = new ArrayList(); sprite.getUniqueFrames().forEach(k -> { for (int l = 0; l < j; l++) { for (int m = 0; m < i; m++) { diff --git a/net/minecraft/client/renderer/block/model/ItemOverride.java b/net/minecraft/client/renderer/block/model/ItemOverride.java deleted file mode 100644 index cd13c2f4..00000000 --- a/net/minecraft/client/renderer/block/model/ItemOverride.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.client.renderer.block.model; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Maps; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import java.lang.reflect.Type; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; - -@Environment(EnvType.CLIENT) -public record ItemOverride(ResourceLocation model, List predicates) { - public ItemOverride(ResourceLocation model, List predicates) { - predicates = List.copyOf(predicates); - this.model = model; - this.predicates = predicates; - } - - @Environment(EnvType.CLIENT) - protected static class Deserializer implements JsonDeserializer { - public ItemOverride deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { - JsonObject jsonObject = json.getAsJsonObject(); - ResourceLocation resourceLocation = ResourceLocation.parse(GsonHelper.getAsString(jsonObject, "model")); - List list = this.getPredicates(jsonObject); - return new ItemOverride(resourceLocation, list); - } - - protected List getPredicates(JsonObject json) { - Map map = Maps.newLinkedHashMap(); - JsonObject jsonObject = GsonHelper.getAsJsonObject(json, "predicate"); - - for (Entry entry : jsonObject.entrySet()) { - map.put(ResourceLocation.parse((String)entry.getKey()), GsonHelper.convertToFloat((JsonElement)entry.getValue(), (String)entry.getKey())); - } - - return (List)map.entrySet() - .stream() - .map(entryx -> new ItemOverride.Predicate((ResourceLocation)entryx.getKey(), (Float)entryx.getValue())) - .collect(ImmutableList.toImmutableList()); - } - } - - @Environment(EnvType.CLIENT) - public record Predicate(ResourceLocation property, float value) { - } -} diff --git a/net/minecraft/client/renderer/block/model/ItemTransforms.java b/net/minecraft/client/renderer/block/model/ItemTransforms.java index 246d50e1..cde13e19 100644 --- a/net/minecraft/client/renderer/block/model/ItemTransforms.java +++ b/net/minecraft/client/renderer/block/model/ItemTransforms.java @@ -11,60 +11,26 @@ import net.fabricmc.api.Environment; import net.minecraft.world.item.ItemDisplayContext; @Environment(EnvType.CLIENT) -public class ItemTransforms { - public static final ItemTransforms NO_TRANSFORMS = new ItemTransforms(); - public final ItemTransform thirdPersonLeftHand; - public final ItemTransform thirdPersonRightHand; - public final ItemTransform firstPersonLeftHand; - public final ItemTransform firstPersonRightHand; - public final ItemTransform head; - public final ItemTransform gui; - public final ItemTransform ground; - public final ItemTransform fixed; - - private ItemTransforms() { - this( - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM, - ItemTransform.NO_TRANSFORM - ); - } - - public ItemTransforms(ItemTransforms transforms) { - this.thirdPersonLeftHand = transforms.thirdPersonLeftHand; - this.thirdPersonRightHand = transforms.thirdPersonRightHand; - this.firstPersonLeftHand = transforms.firstPersonLeftHand; - this.firstPersonRightHand = transforms.firstPersonRightHand; - this.head = transforms.head; - this.gui = transforms.gui; - this.ground = transforms.ground; - this.fixed = transforms.fixed; - } - - public ItemTransforms( - ItemTransform thirdPersonLeftHand, - ItemTransform thirdPersonRightHand, - ItemTransform firstPersonLeftHand, - ItemTransform firstPersonRightHand, - ItemTransform head, - ItemTransform gui, - ItemTransform ground, - ItemTransform fixed - ) { - this.thirdPersonLeftHand = thirdPersonLeftHand; - this.thirdPersonRightHand = thirdPersonRightHand; - this.firstPersonLeftHand = firstPersonLeftHand; - this.firstPersonRightHand = firstPersonRightHand; - this.head = head; - this.gui = gui; - this.ground = ground; - this.fixed = fixed; - } +public record ItemTransforms( + ItemTransform thirdPersonLeftHand, + ItemTransform thirdPersonRightHand, + ItemTransform firstPersonLeftHand, + ItemTransform firstPersonRightHand, + ItemTransform head, + ItemTransform gui, + ItemTransform ground, + ItemTransform fixed +) { + public static final ItemTransforms NO_TRANSFORMS = new ItemTransforms( + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM, + ItemTransform.NO_TRANSFORM + ); public ItemTransform getTransform(ItemDisplayContext displayContext) { return switch (displayContext) { @@ -80,10 +46,6 @@ public class ItemTransforms { }; } - public boolean hasTransform(ItemDisplayContext displayContext) { - return this.getTransform(displayContext) != ItemTransform.NO_TRANSFORM; - } - @Environment(EnvType.CLIENT) protected static class Deserializer implements JsonDeserializer { public ItemTransforms deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { diff --git a/net/minecraft/client/renderer/block/model/MultiVariant.java b/net/minecraft/client/renderer/block/model/MultiVariant.java index 8d9ee246..6c7ea33d 100644 --- a/net/minecraft/client/renderer/block/model/MultiVariant.java +++ b/net/minecraft/client/renderer/block/model/MultiVariant.java @@ -8,18 +8,13 @@ import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import java.lang.reflect.Type; import java.util.List; -import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.Material; import net.minecraft.client.resources.model.ModelBaker; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.client.resources.model.ResolvableModel; import net.minecraft.client.resources.model.WeightedBakedModel; import net.minecraft.util.random.SimpleWeightedRandomList; -import net.minecraft.util.random.SimpleWeightedRandomList.Builder; import net.minecraft.world.level.block.state.BlockState; @Environment(EnvType.CLIENT) @@ -38,21 +33,21 @@ public record MultiVariant(List variants) implements UnbakedBlockStateM } @Override - public void resolveDependencies(UnbakedModel.Resolver resolver) { - this.variants.forEach(variant -> resolver.resolve(variant.getModelLocation())); + public void resolveDependencies(ResolvableModel.Resolver resolver) { + this.variants.forEach(variant -> resolver.resolve(variant.modelLocation())); } @Override - public BakedModel bake(ModelBaker baker, Function spriteGetter, ModelState state) { + public BakedModel bake(ModelBaker baker) { if (this.variants.size() == 1) { Variant variant = (Variant)this.variants.getFirst(); - return baker.bake(variant.getModelLocation(), variant); + return baker.bake(variant.modelLocation(), variant); } else { - Builder builder = SimpleWeightedRandomList.builder(); + SimpleWeightedRandomList.Builder builder = SimpleWeightedRandomList.builder(); for (Variant variant2 : this.variants) { - BakedModel bakedModel = baker.bake(variant2.getModelLocation(), variant2); - builder.add(bakedModel, variant2.getWeight()); + BakedModel bakedModel = baker.bake(variant2.modelLocation(), variant2); + builder.add(bakedModel, variant2.weight()); } return new WeightedBakedModel(builder.build()); diff --git a/net/minecraft/client/renderer/block/model/TextureSlots.java b/net/minecraft/client/renderer/block/model/TextureSlots.java new file mode 100644 index 00000000..cfde4a96 --- /dev/null +++ b/net/minecraft/client/renderer/block/model/TextureSlots.java @@ -0,0 +1,166 @@ +package net.minecraft.client.renderer.block.model; + +import com.google.common.collect.Lists; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.mojang.logging.LogUtils; +import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectMaps; +import it.unimi.dsi.fastutil.objects.ObjectIterator; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.block.model.TextureSlots.Data.Builder; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelDebugName; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; + +@Environment(EnvType.CLIENT) +public class TextureSlots { + public static final TextureSlots EMPTY = new TextureSlots(Map.of()); + private static final char REFERENCE_CHAR = '#'; + private final Map resolvedValues; + + TextureSlots(Map resolvedValues) { + this.resolvedValues = resolvedValues; + } + + @Nullable + public Material getMaterial(String name) { + if (isTextureReference(name)) { + name = name.substring(1); + } + + return (Material)this.resolvedValues.get(name); + } + + private static boolean isTextureReference(String name) { + return name.charAt(0) == '#'; + } + + public static TextureSlots.Data parseTextureMap(JsonObject json, ResourceLocation atlas) { + Builder builder = new Builder(); + + for (Entry entry : json.entrySet()) { + parseEntry(atlas, (String)entry.getKey(), ((JsonElement)entry.getValue()).getAsString(), builder); + } + + return builder.build(); + } + + private static void parseEntry(ResourceLocation atlas, String name, String material, Builder builder) { + if (isTextureReference(material)) { + builder.addReference(name, material.substring(1)); + } else { + ResourceLocation resourceLocation = ResourceLocation.tryParse(material); + if (resourceLocation == null) { + throw new JsonParseException(material + " is not valid resource location"); + } + + builder.addTexture(name, new Material(atlas, resourceLocation)); + } + } + + @Environment(EnvType.CLIENT) + public record Data(Map values) { + public static final TextureSlots.Data EMPTY = new TextureSlots.Data(Map.of()); + } + + @Environment(EnvType.CLIENT) + record Reference(String target) implements TextureSlots.SlotContents { + } + + @Environment(EnvType.CLIENT) + public static class Resolver { + private static final Logger LOGGER = LogUtils.getLogger(); + private final List entries = new ArrayList(); + + public TextureSlots.Resolver addLast(TextureSlots.Data data) { + this.entries.addLast(data); + return this; + } + + public TextureSlots.Resolver addFirst(TextureSlots.Data data) { + this.entries.addFirst(data); + return this; + } + + public TextureSlots resolve(ModelDebugName name) { + if (this.entries.isEmpty()) { + return TextureSlots.EMPTY; + } else { + Object2ObjectMap object2ObjectMap = new Object2ObjectArrayMap<>(); + Object2ObjectMap object2ObjectMap2 = new Object2ObjectArrayMap<>(); + + for (TextureSlots.Data data : Lists.reverse(this.entries)) { + data.values.forEach((string, slotContents) -> { + switch (slotContents) { + case TextureSlots.Value value: + object2ObjectMap2.remove(string); + object2ObjectMap.put(string, value.material()); + break; + case TextureSlots.Reference reference: + object2ObjectMap.remove(string); + object2ObjectMap2.put(string, reference); + break; + default: + throw new MatchException(null, null); + } + }); + } + + if (object2ObjectMap2.isEmpty()) { + return new TextureSlots(object2ObjectMap); + } else { + boolean bl = true; + + while (bl) { + bl = false; + ObjectIterator> objectIterator = Object2ObjectMaps.fastIterator( + object2ObjectMap2 + ); + + while (objectIterator.hasNext()) { + it.unimi.dsi.fastutil.objects.Object2ObjectMap.Entry entry = (it.unimi.dsi.fastutil.objects.Object2ObjectMap.Entry)objectIterator.next(); + Material material = object2ObjectMap.get(((TextureSlots.Reference)entry.getValue()).target); + if (material != null) { + object2ObjectMap.put((String)entry.getKey(), material); + objectIterator.remove(); + bl = true; + } + } + } + + if (!object2ObjectMap2.isEmpty()) { + LOGGER.warn( + "Unresolved texture references in {}:\n{}", + name.get(), + object2ObjectMap2.entrySet() + .stream() + .map(entryx -> "\t#" + (String)entryx.getKey() + "-> #" + ((TextureSlots.Reference)entryx.getValue()).target + "\n") + .collect(Collectors.joining()) + ); + } + + return new TextureSlots(object2ObjectMap); + } + } + } + } + + @Environment(EnvType.CLIENT) + public sealed interface SlotContents permits TextureSlots.Value, TextureSlots.Reference { + } + + @Environment(EnvType.CLIENT) + record Value(Material material) implements TextureSlots.SlotContents { + } +} diff --git a/net/minecraft/client/renderer/block/model/UnbakedBlockStateModel.java b/net/minecraft/client/renderer/block/model/UnbakedBlockStateModel.java index 714b44b1..0d766abd 100644 --- a/net/minecraft/client/renderer/block/model/UnbakedBlockStateModel.java +++ b/net/minecraft/client/renderer/block/model/UnbakedBlockStateModel.java @@ -2,10 +2,14 @@ package net.minecraft.client.renderer.block.model; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelBaker; +import net.minecraft.client.resources.model.ResolvableModel; import net.minecraft.world.level.block.state.BlockState; @Environment(EnvType.CLIENT) -public interface UnbakedBlockStateModel extends UnbakedModel { +public interface UnbakedBlockStateModel extends ResolvableModel { + BakedModel bake(ModelBaker baker); + Object visualEqualityGroup(BlockState state); } diff --git a/net/minecraft/client/renderer/block/model/Variant.java b/net/minecraft/client/renderer/block/model/Variant.java index 6b75fc5d..03fa660f 100644 --- a/net/minecraft/client/renderer/block/model/Variant.java +++ b/net/minecraft/client/renderer/block/model/Variant.java @@ -8,7 +8,6 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.mojang.math.Transformation; import java.lang.reflect.Type; -import java.util.Objects; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.resources.model.BlockModelRotation; @@ -17,23 +16,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; @Environment(EnvType.CLIENT) -public class Variant implements ModelState { - private final ResourceLocation modelLocation; - private final Transformation rotation; - private final boolean uvLock; - private final int weight; - - public Variant(ResourceLocation modelLocation, Transformation rotation, boolean uvLock, int weight) { - this.modelLocation = modelLocation; - this.rotation = rotation; - this.uvLock = uvLock; - this.weight = weight; - } - - public ResourceLocation getModelLocation() { - return this.modelLocation; - } - +public record Variant(ResourceLocation modelLocation, Transformation rotation, boolean uvLock, int weight) implements ModelState { @Override public Transformation getRotation() { return this.rotation; @@ -44,34 +27,6 @@ public class Variant implements ModelState { return this.uvLock; } - public int getWeight() { - return this.weight; - } - - public String toString() { - return "Variant{modelLocation=" + this.modelLocation + ", rotation=" + this.rotation + ", uvLock=" + this.uvLock + ", weight=" + this.weight + "}"; - } - - public boolean equals(Object object) { - if (this == object) { - return true; - } else { - return !(object instanceof Variant variant) - ? false - : this.modelLocation.equals(variant.modelLocation) - && Objects.equals(this.rotation, variant.rotation) - && this.uvLock == variant.uvLock - && this.weight == variant.weight; - } - } - - public int hashCode() { - int i = this.modelLocation.hashCode(); - i = 31 * i + this.rotation.hashCode(); - i = 31 * i + Boolean.valueOf(this.uvLock).hashCode(); - return 31 * i + this.weight; - } - @Environment(EnvType.CLIENT) public static class Deserializer implements JsonDeserializer { @VisibleForTesting diff --git a/net/minecraft/client/renderer/block/model/multipart/MultiPart.java b/net/minecraft/client/renderer/block/model/multipart/MultiPart.java index 47bfa1aa..a5d321eb 100644 --- a/net/minecraft/client/renderer/block/model/multipart/MultiPart.java +++ b/net/minecraft/client/renderer/block/model/multipart/MultiPart.java @@ -12,20 +12,16 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import java.util.Set; -import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.MultiVariant; import net.minecraft.client.renderer.block.model.UnbakedBlockStateModel; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.Material; import net.minecraft.client.resources.model.ModelBaker; -import net.minecraft.client.resources.model.ModelState; import net.minecraft.client.resources.model.MultiPartBakedModel; -import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.client.resources.model.ResolvableModel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; @@ -56,16 +52,16 @@ public class MultiPart implements UnbakedBlockStateModel { } @Override - public void resolveDependencies(UnbakedModel.Resolver resolver) { + public void resolveDependencies(ResolvableModel.Resolver resolver) { this.selectors.forEach(instantiatedSelector -> instantiatedSelector.variant.resolveDependencies(resolver)); } @Override - public BakedModel bake(ModelBaker baker, Function spriteGetter, ModelState state) { + public BakedModel bake(ModelBaker baker) { List list = new ArrayList(this.selectors.size()); for (MultiPart.InstantiatedSelector instantiatedSelector : this.selectors) { - BakedModel bakedModel = instantiatedSelector.variant.bake(baker, spriteGetter, state); + BakedModel bakedModel = instantiatedSelector.variant.bake(baker); list.add(new MultiPartBakedModel.Selector(instantiatedSelector.predicate, bakedModel)); } diff --git a/net/minecraft/client/renderer/blockentity/AbstractSignRenderer.java b/net/minecraft/client/renderer/blockentity/AbstractSignRenderer.java new file mode 100644 index 00000000..a0c121f9 --- /dev/null +++ b/net/minecraft/client/renderer/blockentity/AbstractSignRenderer.java @@ -0,0 +1,179 @@ +package net.minecraft.client.renderer.blockentity; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +import java.util.List; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.model.Model; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.resources.model.Material; +import net.minecraft.core.BlockPos; +import net.minecraft.util.ARGB; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.block.SignBlock; +import net.minecraft.world.level.block.entity.SignBlockEntity; +import net.minecraft.world.level.block.entity.SignText; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.WoodType; +import net.minecraft.world.phys.Vec3; + +@Environment(EnvType.CLIENT) +public abstract class AbstractSignRenderer implements BlockEntityRenderer { + private static final int BLACK_TEXT_OUTLINE_COLOR = -988212; + private static final int OUTLINE_RENDER_DISTANCE = Mth.square(16); + private final Font font; + + public AbstractSignRenderer(BlockEntityRendererProvider.Context context) { + this.font = context.getFont(); + } + + protected abstract Model getSignModel(BlockState state, WoodType woodType); + + protected abstract Material getSignMaterial(WoodType woodType); + + protected abstract float getSignModelRenderScale(); + + protected abstract float getSignTextRenderScale(); + + protected abstract Vec3 getTextOffset(); + + protected abstract void translateSign(PoseStack poseStack, float yRot, BlockState state); + + public void render(SignBlockEntity signBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + BlockState blockState = signBlockEntity.getBlockState(); + SignBlock signBlock = (SignBlock)blockState.getBlock(); + Model model = this.getSignModel(blockState, signBlock.type()); + this.renderSignWithText(signBlockEntity, poseStack, multiBufferSource, i, j, blockState, signBlock, signBlock.type(), model); + } + + private void renderSignWithText( + SignBlockEntity blockEntity, + PoseStack poseStack, + MultiBufferSource bufferSource, + int packedLight, + int packedOverlay, + BlockState state, + SignBlock sign, + WoodType woodType, + Model model + ) { + poseStack.pushPose(); + this.translateSign(poseStack, -sign.getYRotationDegrees(state), state); + this.renderSign(poseStack, bufferSource, packedLight, packedOverlay, woodType, model); + this.renderSignText( + blockEntity.getBlockPos(), + blockEntity.getFrontText(), + poseStack, + bufferSource, + packedLight, + blockEntity.getTextLineHeight(), + blockEntity.getMaxTextLineWidth(), + true + ); + this.renderSignText( + blockEntity.getBlockPos(), + blockEntity.getBackText(), + poseStack, + bufferSource, + packedLight, + blockEntity.getTextLineHeight(), + blockEntity.getMaxTextLineWidth(), + false + ); + poseStack.popPose(); + } + + protected void renderSign(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, WoodType woodType, Model model) { + poseStack.pushPose(); + float f = this.getSignModelRenderScale(); + poseStack.scale(f, -f, -f); + Material material = this.getSignMaterial(woodType); + VertexConsumer vertexConsumer = material.buffer(bufferSource, model::renderType); + model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + poseStack.popPose(); + } + + private void renderSignText( + BlockPos pos, SignText text, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int lineHeight, int maxLineWidth, boolean isFront + ) { + poseStack.pushPose(); + this.translateSignText(poseStack, isFront, this.getTextOffset()); + int i = getDarkColor(text); + int j = 4 * lineHeight / 2; + FormattedCharSequence[] formattedCharSequences = text.getRenderMessages(Minecraft.getInstance().isTextFilteringEnabled(), component -> { + List list = this.font.split(component, maxLineWidth); + return list.isEmpty() ? FormattedCharSequence.EMPTY : (FormattedCharSequence)list.get(0); + }); + int k; + boolean bl; + int l; + if (text.hasGlowingText()) { + k = text.getColor().getTextColor(); + bl = isOutlineVisible(pos, k); + l = 15728880; + } else { + k = i; + bl = false; + l = packedLight; + } + + for (int m = 0; m < 4; m++) { + FormattedCharSequence formattedCharSequence = formattedCharSequences[m]; + float f = -this.font.width(formattedCharSequence) / 2; + if (bl) { + this.font.drawInBatch8xOutline(formattedCharSequence, f, m * lineHeight - j, k, i, poseStack.last().pose(), bufferSource, l); + } else { + this.font + .drawInBatch(formattedCharSequence, f, (float)(m * lineHeight - j), k, false, poseStack.last().pose(), bufferSource, Font.DisplayMode.POLYGON_OFFSET, 0, l); + } + } + + poseStack.popPose(); + } + + private void translateSignText(PoseStack poseStack, boolean isFront, Vec3 offset) { + if (!isFront) { + poseStack.mulPose(Axis.YP.rotationDegrees(180.0F)); + } + + float f = 0.015625F * this.getSignTextRenderScale(); + poseStack.translate(offset); + poseStack.scale(f, -f, f); + } + + private static boolean isOutlineVisible(BlockPos pos, int color) { + if (color == DyeColor.BLACK.getTextColor()) { + return true; + } else { + Minecraft minecraft = Minecraft.getInstance(); + LocalPlayer localPlayer = minecraft.player; + if (localPlayer != null && minecraft.options.getCameraType().isFirstPerson() && localPlayer.isScoping()) { + return true; + } else { + Entity entity = minecraft.getCameraEntity(); + return entity != null && entity.distanceToSqr(Vec3.atCenterOf(pos)) < OUTLINE_RENDER_DISTANCE; + } + } + } + + public static int getDarkColor(SignText text) { + int i = text.getColor().getTextColor(); + if (i == DyeColor.BLACK.getTextColor() && text.hasGlowingText()) { + return -988212; + } else { + double d = 0.4; + int j = (int)(ARGB.red(i) * 0.4); + int k = (int)(ARGB.green(i) * 0.4); + int l = (int)(ARGB.blue(i) * 0.4); + return ARGB.color(0, j, k, l); + } + } +} diff --git a/net/minecraft/client/renderer/blockentity/BannerRenderer.java b/net/minecraft/client/renderer/blockentity/BannerRenderer.java index 4cc973a4..2002aad6 100644 --- a/net/minecraft/client/renderer/blockentity/BannerRenderer.java +++ b/net/minecraft/client/renderer/blockentity/BannerRenderer.java @@ -1,26 +1,21 @@ package net.minecraft.client.renderer.blockentity; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.model.BannerFlagModel; +import net.minecraft.client.model.BannerModel; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.CubeListBuilder; -import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.client.model.geom.builders.MeshDefinition; -import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.resources.model.Material; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.util.Mth; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.BannerBlock; import net.minecraft.world.level.block.WallBannerBlock; @@ -32,72 +27,70 @@ import net.minecraft.world.level.block.state.properties.RotationSegment; @Environment(EnvType.CLIENT) public class BannerRenderer implements BlockEntityRenderer { - private static final int BANNER_WIDTH = 20; - private static final int BANNER_HEIGHT = 40; private static final int MAX_PATTERNS = 16; - public static final String FLAG = "flag"; - private static final String POLE = "pole"; - private static final String BAR = "bar"; - private final ModelPart flag; - private final ModelPart pole; - private final ModelPart bar; + private static final float SIZE = 0.6666667F; + private final BannerModel standingModel; + private final BannerModel wallModel; + private final BannerFlagModel standingFlagModel; + private final BannerFlagModel wallFlagModel; - public BannerRenderer(Context context) { - ModelPart modelPart = context.bakeLayer(ModelLayers.BANNER); - this.flag = modelPart.getChild("flag"); - this.pole = modelPart.getChild("pole"); - this.bar = modelPart.getChild("bar"); + public BannerRenderer(BlockEntityRendererProvider.Context context) { + this(context.getModelSet()); } - public static LayerDefinition createBodyLayer() { - MeshDefinition meshDefinition = new MeshDefinition(); - PartDefinition partDefinition = meshDefinition.getRoot(); - partDefinition.addOrReplaceChild( - "flag", CubeListBuilder.create().texOffs(0, 0).addBox(-10.0F, 0.0F, -2.0F, 20.0F, 40.0F, 1.0F), PartPose.offset(0.0F, -32.0F, 0.0F) - ); - partDefinition.addOrReplaceChild("pole", CubeListBuilder.create().texOffs(44, 0).addBox(-1.0F, -30.0F, -1.0F, 2.0F, 42.0F, 2.0F), PartPose.ZERO); - partDefinition.addOrReplaceChild("bar", CubeListBuilder.create().texOffs(0, 42).addBox(-10.0F, -32.0F, -1.0F, 20.0F, 2.0F, 2.0F), PartPose.ZERO); - return LayerDefinition.create(meshDefinition, 64, 64); + public BannerRenderer(EntityModelSet modelSet) { + this.standingModel = new BannerModel(modelSet.bakeLayer(ModelLayers.STANDING_BANNER)); + this.wallModel = new BannerModel(modelSet.bakeLayer(ModelLayers.WALL_BANNER)); + this.standingFlagModel = new BannerFlagModel(modelSet.bakeLayer(ModelLayers.STANDING_BANNER_FLAG)); + this.wallFlagModel = new BannerFlagModel(modelSet.bakeLayer(ModelLayers.WALL_BANNER_FLAG)); } - public void render(BannerBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - float f = 0.6666667F; - boolean bl = blockEntity.getLevel() == null; - poseStack.pushPose(); - long l; - if (bl) { - l = 0L; - poseStack.translate(0.5F, 0.5F, 0.5F); - this.pole.visible = true; + public void render(BannerBlockEntity bannerBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + BlockState blockState = bannerBlockEntity.getBlockState(); + BannerModel bannerModel; + BannerFlagModel bannerFlagModel; + float g; + if (blockState.getBlock() instanceof BannerBlock) { + g = -RotationSegment.convertToDegrees((Integer)blockState.getValue(BannerBlock.ROTATION)); + bannerModel = this.standingModel; + bannerFlagModel = this.standingFlagModel; } else { - l = blockEntity.getLevel().getGameTime(); - BlockState blockState = blockEntity.getBlockState(); - if (blockState.getBlock() instanceof BannerBlock) { - poseStack.translate(0.5F, 0.5F, 0.5F); - float g = -RotationSegment.convertToDegrees((Integer)blockState.getValue(BannerBlock.ROTATION)); - poseStack.mulPose(Axis.YP.rotationDegrees(g)); - this.pole.visible = true; - } else { - poseStack.translate(0.5F, -0.16666667F, 0.5F); - float g = -((Direction)blockState.getValue(WallBannerBlock.FACING)).toYRot(); - poseStack.mulPose(Axis.YP.rotationDegrees(g)); - poseStack.translate(0.0F, -0.3125F, -0.4375F); - this.pole.visible = false; - } + g = -((Direction)blockState.getValue(WallBannerBlock.FACING)).toYRot(); + bannerModel = this.wallModel; + bannerFlagModel = this.wallFlagModel; } + long l = bannerBlockEntity.getLevel().getGameTime(); + BlockPos blockPos = bannerBlockEntity.getBlockPos(); + float h = ((float)Math.floorMod(blockPos.getX() * 7 + blockPos.getY() * 9 + blockPos.getZ() * 13 + l, 100L) + f) / 100.0F; + renderBanner(poseStack, multiBufferSource, i, j, g, bannerModel, bannerFlagModel, h, bannerBlockEntity.getBaseColor(), bannerBlockEntity.getPatterns()); + } + + public void renderInHand( + PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, DyeColor baseColor, BannerPatternLayers patterns + ) { + renderBanner(poseStack, bufferSource, packedLight, packedOverlay, 0.0F, this.standingModel, this.standingFlagModel, 0.0F, baseColor, patterns); + } + + private static void renderBanner( + PoseStack poseStack, + MultiBufferSource bufferSource, + int packedLight, + int packedOverlay, + float rotation, + BannerModel standingModel, + BannerFlagModel standingFlagModel, + float angle, + DyeColor baseColor, + BannerPatternLayers patterns + ) { poseStack.pushPose(); + poseStack.translate(0.5F, 0.0F, 0.5F); + poseStack.mulPose(Axis.YP.rotationDegrees(rotation)); poseStack.scale(0.6666667F, -0.6666667F, -0.6666667F); - VertexConsumer vertexConsumer = ModelBakery.BANNER_BASE.buffer(bufferSource, RenderType::entitySolid); - this.pole.render(poseStack, vertexConsumer, packedLight, packedOverlay); - this.bar.render(poseStack, vertexConsumer, packedLight, packedOverlay); - BlockPos blockPos = blockEntity.getBlockPos(); - float h = ((float)Math.floorMod(blockPos.getX() * 7 + blockPos.getY() * 9 + blockPos.getZ() * 13 + l, 100L) + partialTick) / 100.0F; - this.flag.xRot = (-0.0125F + 0.01F * Mth.cos((float) (Math.PI * 2) * h)) * (float) Math.PI; - renderPatterns( - poseStack, bufferSource, packedLight, packedOverlay, this.flag, ModelBakery.BANNER_BASE, true, blockEntity.getBaseColor(), blockEntity.getPatterns() - ); - poseStack.popPose(); + standingModel.renderToBuffer(poseStack, ModelBakery.BANNER_BASE.buffer(bufferSource, RenderType::entitySolid), packedLight, packedOverlay); + standingFlagModel.setupAnim(angle); + renderPatterns(poseStack, bufferSource, packedLight, packedOverlay, standingFlagModel.root(), ModelBakery.BANNER_BASE, true, baseColor, patterns); poseStack.popPose(); } diff --git a/net/minecraft/client/renderer/blockentity/BeaconRenderer.java b/net/minecraft/client/renderer/blockentity/BeaconRenderer.java index bd1c869e..12d22171 100644 --- a/net/minecraft/client/renderer/blockentity/BeaconRenderer.java +++ b/net/minecraft/client/renderer/blockentity/BeaconRenderer.java @@ -2,13 +2,13 @@ package net.minecraft.client.renderer.blockentity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.math.Axis; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ARGB; @@ -21,18 +21,18 @@ public class BeaconRenderer implements BlockEntityRenderer { public static final ResourceLocation BEAM_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/beacon_beam.png"); public static final int MAX_RENDER_Y = 1024; - public BeaconRenderer(Context context) { + public BeaconRenderer(BlockEntityRendererProvider.Context context) { } - public void render(BeaconBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - long l = blockEntity.getLevel().getGameTime(); - List list = blockEntity.getBeamSections(); - int i = 0; + public void render(BeaconBlockEntity beaconBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + long l = beaconBlockEntity.getLevel().getGameTime(); + List list = beaconBlockEntity.getBeamSections(); + int k = 0; - for (int j = 0; j < list.size(); j++) { - BeaconBlockEntity.BeaconBeamSection beaconBeamSection = (BeaconBlockEntity.BeaconBeamSection)list.get(j); - renderBeaconBeam(poseStack, bufferSource, partialTick, l, i, j == list.size() - 1 ? 1024 : beaconBeamSection.getHeight(), beaconBeamSection.getColor()); - i += beaconBeamSection.getHeight(); + for (int m = 0; m < list.size(); m++) { + BeaconBlockEntity.BeaconBeamSection beaconBeamSection = (BeaconBlockEntity.BeaconBeamSection)list.get(m); + renderBeaconBeam(poseStack, multiBufferSource, f, l, k, m == list.size() - 1 ? 1024 : beaconBeamSection.getHeight(), beaconBeamSection.getColor()); + k += beaconBeamSection.getHeight(); } } @@ -140,7 +140,7 @@ public class BeaconRenderer implements BlockEntityRenderer { float minV, float maxV ) { - PoseStack.Pose pose = poseStack.last(); + Pose pose = poseStack.last(); renderQuad(pose, consumer, color, minY, maxY, x1, z1, x2, z2, minU, maxU, minV, maxV); renderQuad(pose, consumer, color, minY, maxY, x4, z4, x3, z3, minU, maxU, minV, maxV); renderQuad(pose, consumer, color, minY, maxY, x2, z2, x4, z4, minU, maxU, minV, maxV); @@ -148,7 +148,7 @@ public class BeaconRenderer implements BlockEntityRenderer { } private static void renderQuad( - PoseStack.Pose pose, + Pose pose, VertexConsumer consumer, int color, int minY, @@ -168,7 +168,7 @@ public class BeaconRenderer implements BlockEntityRenderer { addVertex(pose, consumer, color, maxY, maxX, maxZ, minU, minV); } - private static void addVertex(PoseStack.Pose pose, VertexConsumer consumer, int color, int y, float x, float z, float u, float v) { + private static void addVertex(Pose pose, VertexConsumer consumer, int color, int y, float x, float z, float u, float v) { consumer.addVertex(pose, x, (float)y, z) .setColor(color) .setUv(u, v) @@ -177,7 +177,7 @@ public class BeaconRenderer implements BlockEntityRenderer { .setNormal(pose, 0.0F, 1.0F, 0.0F); } - public boolean shouldRenderOffScreen(BeaconBlockEntity blockEntity) { + public boolean shouldRenderOffScreen(BeaconBlockEntity beaconBlockEntity) { return true; } @@ -186,7 +186,7 @@ public class BeaconRenderer implements BlockEntityRenderer { return 256; } - public boolean shouldRender(BeaconBlockEntity blockEntity, Vec3 cameraPos) { - return Vec3.atCenterOf(blockEntity.getBlockPos()).multiply(1.0, 0.0, 1.0).closerThan(cameraPos.multiply(1.0, 0.0, 1.0), this.getViewDistance()); + public boolean shouldRender(BeaconBlockEntity beaconBlockEntity, Vec3 vec3) { + return Vec3.atCenterOf(beaconBlockEntity.getBlockPos()).multiply(1.0, 0.0, 1.0).closerThan(vec3.multiply(1.0, 0.0, 1.0), this.getViewDistance()); } } diff --git a/net/minecraft/client/renderer/blockentity/BedRenderer.java b/net/minecraft/client/renderer/blockentity/BedRenderer.java index 3cb3fe57..807d4b34 100644 --- a/net/minecraft/client/renderer/blockentity/BedRenderer.java +++ b/net/minecraft/client/renderer/blockentity/BedRenderer.java @@ -6,6 +6,8 @@ import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.Model; +import net.minecraft.client.model.Model.Simple; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeListBuilder; @@ -15,13 +17,13 @@ import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.resources.model.Material; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BedBlock; import net.minecraft.world.level.block.ChestBlock; import net.minecraft.world.level.block.DoubleBlockCombiner; +import net.minecraft.world.level.block.DoubleBlockCombiner.NeighborCombineResult; import net.minecraft.world.level.block.entity.BedBlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -32,9 +34,13 @@ public class BedRenderer implements BlockEntityRenderer { private final Model headModel; private final Model footModel; - public BedRenderer(Context context) { - this.headModel = new Model.Simple(context.bakeLayer(ModelLayers.BED_HEAD), RenderType::entitySolid); - this.footModel = new Model.Simple(context.bakeLayer(ModelLayers.BED_FOOT), RenderType::entitySolid); + public BedRenderer(BlockEntityRendererProvider.Context context) { + this(context.getModelSet()); + } + + public BedRenderer(EntityModelSet modelSet) { + this.headModel = new Simple(modelSet.bakeLayer(ModelLayers.BED_HEAD), RenderType::entitySolid); + this.footModel = new Simple(modelSet.bakeLayer(ModelLayers.BED_FOOT), RenderType::entitySolid); } public static LayerDefinition createHeadLayer() { @@ -69,38 +75,40 @@ public class BedRenderer implements BlockEntityRenderer { return LayerDefinition.create(meshDefinition, 64, 64); } - public void render(BedBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - Material material = Sheets.BED_TEXTURES[blockEntity.getColor().getId()]; - Level level = blockEntity.getLevel(); + public void render(BedBlockEntity bedBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + Level level = bedBlockEntity.getLevel(); if (level != null) { - BlockState blockState = blockEntity.getBlockState(); - DoubleBlockCombiner.NeighborCombineResult neighborCombineResult = DoubleBlockCombiner.combineWithNeigbour( + Material material = Sheets.getBedMaterial(bedBlockEntity.getColor()); + BlockState blockState = bedBlockEntity.getBlockState(); + NeighborCombineResult neighborCombineResult = DoubleBlockCombiner.combineWithNeigbour( BlockEntityType.BED, BedBlock::getBlockType, BedBlock::getConnectedDirection, ChestBlock.FACING, blockState, level, - blockEntity.getBlockPos(), + bedBlockEntity.getBlockPos(), (levelAccessor, blockPos) -> false ); - int i = neighborCombineResult.apply(new BrightnessCombiner<>()).get(packedLight); + int k = neighborCombineResult.apply(new BrightnessCombiner<>()).get(i); this.renderPiece( poseStack, - bufferSource, + multiBufferSource, blockState.getValue(BedBlock.PART) == BedPart.HEAD ? this.headModel : this.footModel, blockState.getValue(BedBlock.FACING), material, - i, - packedOverlay, + k, + j, false ); - } else { - this.renderPiece(poseStack, bufferSource, this.headModel, Direction.SOUTH, material, packedLight, packedOverlay, false); - this.renderPiece(poseStack, bufferSource, this.footModel, Direction.SOUTH, material, packedLight, packedOverlay, true); } } + public void renderInHand(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, Material material) { + this.renderPiece(poseStack, bufferSource, this.headModel, Direction.SOUTH, material, packedLight, packedOverlay, false); + this.renderPiece(poseStack, bufferSource, this.footModel, Direction.SOUTH, material, packedLight, packedOverlay, true); + } + private void renderPiece( PoseStack poseStack, MultiBufferSource bufferSource, Model model, Direction direction, Material material, int packedLight, int packedOverlay, boolean isFeet ) { diff --git a/net/minecraft/client/renderer/blockentity/BellRenderer.java b/net/minecraft/client/renderer/blockentity/BellRenderer.java index 6bb35b18..30d23d44 100644 --- a/net/minecraft/client/renderer/blockentity/BellRenderer.java +++ b/net/minecraft/client/renderer/blockentity/BellRenderer.java @@ -8,7 +8,6 @@ import net.minecraft.client.model.BellModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.resources.model.Material; import net.minecraft.resources.ResourceLocation; @@ -21,13 +20,13 @@ public class BellRenderer implements BlockEntityRenderer { ); private final BellModel model; - public BellRenderer(Context context) { + public BellRenderer(BlockEntityRendererProvider.Context context) { this.model = new BellModel(context.bakeLayer(ModelLayers.BELL)); } - public void render(BellBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - VertexConsumer vertexConsumer = BELL_RESOURCE_LOCATION.buffer(bufferSource, RenderType::entitySolid); - this.model.setupAnim(blockEntity, partialTick); - this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + public void render(BellBlockEntity bellBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + VertexConsumer vertexConsumer = BELL_RESOURCE_LOCATION.buffer(multiBufferSource, RenderType::entitySolid); + this.model.setupAnim(bellBlockEntity, f); + this.model.renderToBuffer(poseStack, vertexConsumer, i, j); } } diff --git a/net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher.java b/net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher.java index 5df35bd9..5e8ba7ee 100644 --- a/net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher.java +++ b/net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher.java @@ -15,9 +15,9 @@ import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.item.ItemModelResolver; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; @@ -31,22 +31,25 @@ import org.jetbrains.annotations.Nullable; public class BlockEntityRenderDispatcher implements ResourceManagerReloadListener { private Map, BlockEntityRenderer> renderers = ImmutableMap.of(); private final Font font; - private final EntityModelSet entityModelSet; + private final Supplier entityModelSet; public Level level; public Camera camera; public HitResult cameraHitResult; - private final Supplier blockRenderDispatcher; - private final Supplier itemRenderer; - private final Supplier entityRenderer; + private final BlockRenderDispatcher blockRenderDispatcher; + private final ItemModelResolver itemModelResolver; + private final ItemRenderer itemRenderer; + private final EntityRenderDispatcher entityRenderer; public BlockEntityRenderDispatcher( Font font, - EntityModelSet entityModelSet, - Supplier blockRenderDispatcher, - Supplier itemRenderer, - Supplier entityRenderer + Supplier entityModelSet, + BlockRenderDispatcher blockRenderDispatcher, + ItemModelResolver itemModelResolver, + ItemRenderer itemRenderer, + EntityRenderDispatcher entityRenderer ) { this.itemRenderer = itemRenderer; + this.itemModelResolver = itemModelResolver; this.entityRenderer = entityRenderer; this.font = font; this.entityModelSet = entityModelSet; @@ -72,7 +75,14 @@ public class BlockEntityRenderDispatcher implements ResourceManagerReloadListene if (blockEntityRenderer != null) { if (blockEntity.hasLevel() && blockEntity.getType().isValid(blockEntity.getBlockState())) { if (blockEntityRenderer.shouldRender(blockEntity, this.camera.getPosition())) { - tryRender(blockEntity, () -> setupAndRender(blockEntityRenderer, blockEntity, partialTick, poseStack, bufferSource)); + try { + setupAndRender(blockEntityRenderer, blockEntity, partialTick, poseStack, bufferSource); + } catch (Throwable var9) { + CrashReport crashReport = CrashReport.forThrowable(var9, "Rendering Block Entity"); + CrashReportCategory crashReportCategory = crashReport.addCategory("Block Entity Details"); + blockEntity.fillCrashReportCategory(crashReportCategory); + throw new ReportedException(crashReport); + } } } } @@ -92,30 +102,6 @@ public class BlockEntityRenderDispatcher implements ResourceManagerReloadListene renderer.render(blockEntity, partialTick, poseStack, bufferSource, i, OverlayTexture.NO_OVERLAY); } - /** - * @return {@code true} if no renderer was found; otherwise {@code false} if render completed - */ - public boolean renderItem(E blockEntity, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - BlockEntityRenderer blockEntityRenderer = this.getRenderer(blockEntity); - if (blockEntityRenderer == null) { - return true; - } else { - tryRender(blockEntity, () -> blockEntityRenderer.render(blockEntity, 0.0F, poseStack, bufferSource, packedLight, packedOverlay)); - return false; - } - } - - private static void tryRender(BlockEntity blockEntity, Runnable renderer) { - try { - renderer.run(); - } catch (Throwable var5) { - CrashReport crashReport = CrashReport.forThrowable(var5, "Rendering Block Entity"); - CrashReportCategory crashReportCategory = crashReport.addCategory("Block Entity Details"); - blockEntity.fillCrashReportCategory(crashReportCategory); - throw new ReportedException(crashReport); - } - } - public void setLevel(@Nullable Level level) { this.level = level; if (level == null) { @@ -125,13 +111,8 @@ public class BlockEntityRenderDispatcher implements ResourceManagerReloadListene @Override public void onResourceManagerReload(ResourceManager resourceManager) { - Context context = new Context( - this, - (BlockRenderDispatcher)this.blockRenderDispatcher.get(), - (ItemRenderer)this.itemRenderer.get(), - (EntityRenderDispatcher)this.entityRenderer.get(), - this.entityModelSet, - this.font + BlockEntityRendererProvider.Context context = new BlockEntityRendererProvider.Context( + this, this.blockRenderDispatcher, this.itemModelResolver, this.itemRenderer, this.entityRenderer, (EntityModelSet)this.entityModelSet.get(), this.font ); this.renderers = BlockEntityRenderers.createEntityRenderers(context); } diff --git a/net/minecraft/client/renderer/blockentity/BlockEntityRendererProvider.java b/net/minecraft/client/renderer/blockentity/BlockEntityRendererProvider.java index 578d3737..49ee168a 100644 --- a/net/minecraft/client/renderer/blockentity/BlockEntityRendererProvider.java +++ b/net/minecraft/client/renderer/blockentity/BlockEntityRendererProvider.java @@ -9,6 +9,7 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.item.ItemModelResolver; import net.minecraft.world.level.block.entity.BlockEntity; @FunctionalInterface @@ -20,6 +21,7 @@ public interface BlockEntityRendererProvider { public static class Context { private final BlockEntityRenderDispatcher blockEntityRenderDispatcher; private final BlockRenderDispatcher blockRenderDispatcher; + private final ItemModelResolver itemModelResolver; private final ItemRenderer itemRenderer; private final EntityRenderDispatcher entityRenderer; private final EntityModelSet modelSet; @@ -28,6 +30,7 @@ public interface BlockEntityRendererProvider { public Context( BlockEntityRenderDispatcher blockEntityRenderDispatcher, BlockRenderDispatcher blockRenderDispatcher, + ItemModelResolver itemModelResolver, ItemRenderer itemRenderer, EntityRenderDispatcher entityRenderer, EntityModelSet modelSet, @@ -35,6 +38,7 @@ public interface BlockEntityRendererProvider { ) { this.blockEntityRenderDispatcher = blockEntityRenderDispatcher; this.blockRenderDispatcher = blockRenderDispatcher; + this.itemModelResolver = itemModelResolver; this.itemRenderer = itemRenderer; this.entityRenderer = entityRenderer; this.modelSet = modelSet; @@ -53,6 +57,10 @@ public interface BlockEntityRendererProvider { return this.entityRenderer; } + public ItemModelResolver getItemModelResolver() { + return this.itemModelResolver; + } + public ItemRenderer getItemRenderer() { return this.itemRenderer; } diff --git a/net/minecraft/client/renderer/blockentity/BrightnessCombiner.java b/net/minecraft/client/renderer/blockentity/BrightnessCombiner.java index 6acad9ae..76f4a8d0 100644 --- a/net/minecraft/client/renderer/blockentity/BrightnessCombiner.java +++ b/net/minecraft/client/renderer/blockentity/BrightnessCombiner.java @@ -5,15 +5,15 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LightTexture; -import net.minecraft.world.level.block.DoubleBlockCombiner; +import net.minecraft.world.level.block.DoubleBlockCombiner.Combiner; import net.minecraft.world.level.block.entity.BlockEntity; @Environment(EnvType.CLIENT) -public class BrightnessCombiner implements DoubleBlockCombiner.Combiner { - public Int2IntFunction acceptDouble(S first, S second) { +public class BrightnessCombiner implements Combiner { + public Int2IntFunction acceptDouble(S blockEntity, S blockEntity2) { return i -> { - int j = LevelRenderer.getLightColor(first.getLevel(), first.getBlockPos()); - int k = LevelRenderer.getLightColor(second.getLevel(), second.getBlockPos()); + int j = LevelRenderer.getLightColor(blockEntity.getLevel(), blockEntity.getBlockPos()); + int k = LevelRenderer.getLightColor(blockEntity2.getLevel(), blockEntity2.getBlockPos()); int l = LightTexture.block(j); int m = LightTexture.block(k); int n = LightTexture.sky(j); @@ -22,7 +22,7 @@ public class BrightnessCombiner implements DoubleBlockCom }; } - public Int2IntFunction acceptSingle(S single) { + public Int2IntFunction acceptSingle(S blockEntity) { return i -> i; } diff --git a/net/minecraft/client/renderer/blockentity/BrushableBlockRenderer.java b/net/minecraft/client/renderer/blockentity/BrushableBlockRenderer.java index 64bdeddd..c2aaafbc 100644 --- a/net/minecraft/client/renderer/blockentity/BrushableBlockRenderer.java +++ b/net/minecraft/client/renderer/blockentity/BrushableBlockRenderer.java @@ -22,26 +22,27 @@ public class BrushableBlockRenderer implements BlockEntityRenderer 0) { - Direction direction = blockEntity.getHitDirection(); + public void render(BrushableBlockEntity brushableBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + if (brushableBlockEntity.getLevel() != null) { + int k = (Integer)brushableBlockEntity.getBlockState().getValue(BlockStateProperties.DUSTED); + if (k > 0) { + Direction direction = brushableBlockEntity.getHitDirection(); if (direction != null) { - ItemStack itemStack = blockEntity.getItem(); + ItemStack itemStack = brushableBlockEntity.getItem(); if (!itemStack.isEmpty()) { poseStack.pushPose(); poseStack.translate(0.0F, 0.5F, 0.0F); - float[] fs = this.translations(direction, i); + float[] fs = this.translations(direction, k); poseStack.translate(fs[0], fs[1], fs[2]); poseStack.mulPose(Axis.YP.rotationDegrees(75.0F)); boolean bl = direction == Direction.EAST || direction == Direction.WEST; poseStack.mulPose(Axis.YP.rotationDegrees((bl ? 90 : 0) + 11)); poseStack.scale(0.5F, 0.5F, 0.5F); - int j = LevelRenderer.getLightColor(blockEntity.getLevel(), blockEntity.getBlockState(), blockEntity.getBlockPos().relative(direction)); - this.itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, j, OverlayTexture.NO_OVERLAY, poseStack, bufferSource, blockEntity.getLevel(), 0); + int l = LevelRenderer.getLightColor( + brushableBlockEntity.getLevel(), brushableBlockEntity.getBlockState(), brushableBlockEntity.getBlockPos().relative(direction) + ); + this.itemRenderer + .renderStatic(itemStack, ItemDisplayContext.FIXED, l, OverlayTexture.NO_OVERLAY, poseStack, multiBufferSource, brushableBlockEntity.getLevel(), 0); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/blockentity/CampfireRenderer.java b/net/minecraft/client/renderer/blockentity/CampfireRenderer.java index f2b9ff94..5c5c9c72 100644 --- a/net/minecraft/client/renderer/blockentity/CampfireRenderer.java +++ b/net/minecraft/client/renderer/blockentity/CampfireRenderer.java @@ -5,7 +5,6 @@ import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; @@ -19,27 +18,27 @@ public class CampfireRenderer implements BlockEntityRenderer nonNullList = blockEntity.getItems(); - int i = (int)blockEntity.getBlockPos().asLong(); + public void render(CampfireBlockEntity campfireBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + Direction direction = campfireBlockEntity.getBlockState().getValue(CampfireBlock.FACING); + NonNullList nonNullList = campfireBlockEntity.getItems(); + int k = (int)campfireBlockEntity.getBlockPos().asLong(); - for (int j = 0; j < nonNullList.size(); j++) { - ItemStack itemStack = nonNullList.get(j); + for (int l = 0; l < nonNullList.size(); l++) { + ItemStack itemStack = nonNullList.get(l); if (itemStack != ItemStack.EMPTY) { poseStack.pushPose(); poseStack.translate(0.5F, 0.44921875F, 0.5F); - Direction direction2 = Direction.from2DDataValue((j + direction.get2DDataValue()) % 4); - float f = -direction2.toYRot(); - poseStack.mulPose(Axis.YP.rotationDegrees(f)); + Direction direction2 = Direction.from2DDataValue((l + direction.get2DDataValue()) % 4); + float g = -direction2.toYRot(); + poseStack.mulPose(Axis.YP.rotationDegrees(g)); poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); poseStack.translate(-0.3125F, -0.3125F, 0.0F); poseStack.scale(0.375F, 0.375F, 0.375F); - this.itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, packedLight, packedOverlay, poseStack, bufferSource, blockEntity.getLevel(), i + j); + this.itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, i, j, poseStack, multiBufferSource, campfireBlockEntity.getLevel(), k + l); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/blockentity/ChestRenderer.java b/net/minecraft/client/renderer/blockentity/ChestRenderer.java index dffdf99a..9f5a70f7 100644 --- a/net/minecraft/client/renderer/blockentity/ChestRenderer.java +++ b/net/minecraft/client/renderer/blockentity/ChestRenderer.java @@ -11,14 +11,14 @@ import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.resources.model.Material; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.AbstractChestBlock; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.ChestBlock; -import net.minecraft.world.level.block.DoubleBlockCombiner; +import net.minecraft.world.level.block.DoubleBlockCombiner.Combiner; +import net.minecraft.world.level.block.DoubleBlockCombiner.NeighborCombineResult; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.ChestBlockEntity; import net.minecraft.world.level.block.entity.LidBlockEntity; @@ -31,19 +31,19 @@ public class ChestRenderer implements Bl private final ChestModel singleModel; private final ChestModel doubleLeftModel; private final ChestModel doubleRightModel; - private boolean xmasTextures; - - public ChestRenderer(Context context) { - Calendar calendar = Calendar.getInstance(); - if (calendar.get(2) + 1 == 12 && calendar.get(5) >= 24 && calendar.get(5) <= 26) { - this.xmasTextures = true; - } + private final boolean xmasTextures = xmasTextures(); + public ChestRenderer(BlockEntityRendererProvider.Context context) { this.singleModel = new ChestModel(context.bakeLayer(ModelLayers.CHEST)); this.doubleLeftModel = new ChestModel(context.bakeLayer(ModelLayers.DOUBLE_CHEST_LEFT)); this.doubleRightModel = new ChestModel(context.bakeLayer(ModelLayers.DOUBLE_CHEST_RIGHT)); } + public static boolean xmasTextures() { + Calendar calendar = Calendar.getInstance(); + return calendar.get(2) + 1 == 12 && calendar.get(5) >= 24 && calendar.get(5) <= 26; + } + @Override public void render(T blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { Level level = blockEntity.getLevel(); @@ -57,11 +57,11 @@ public class ChestRenderer implements Bl poseStack.translate(0.5F, 0.5F, 0.5F); poseStack.mulPose(Axis.YP.rotationDegrees(-f)); poseStack.translate(-0.5F, -0.5F, -0.5F); - DoubleBlockCombiner.NeighborCombineResult neighborCombineResult; + NeighborCombineResult neighborCombineResult; if (bl) { neighborCombineResult = abstractChestBlock.combine(blockState, level, blockEntity.getBlockPos(), true); } else { - neighborCombineResult = DoubleBlockCombiner.Combiner::acceptNone; + neighborCombineResult = Combiner::acceptNone; } float g = neighborCombineResult.apply(ChestBlock.opennessCombiner(blockEntity)).get(partialTick); diff --git a/net/minecraft/client/renderer/blockentity/ConduitRenderer.java b/net/minecraft/client/renderer/blockentity/ConduitRenderer.java index 115420d3..408f0469 100644 --- a/net/minecraft/client/renderer/blockentity/ConduitRenderer.java +++ b/net/minecraft/client/renderer/blockentity/ConduitRenderer.java @@ -79,59 +79,54 @@ public class ConduitRenderer implements BlockEntityRenderer return LayerDefinition.create(meshDefinition, 32, 16); } - public void render(ConduitBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - float f = blockEntity.tickCount + partialTick; - if (!blockEntity.isActive()) { - float g = blockEntity.getActiveRotation(0.0F); - VertexConsumer vertexConsumer = SHELL_TEXTURE.buffer(bufferSource, RenderType::entitySolid); + public void render(ConduitBlockEntity conduitBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + float g = conduitBlockEntity.tickCount + f; + if (!conduitBlockEntity.isActive()) { + float h = conduitBlockEntity.getActiveRotation(0.0F); + VertexConsumer vertexConsumer = SHELL_TEXTURE.buffer(multiBufferSource, RenderType::entitySolid); poseStack.pushPose(); poseStack.translate(0.5F, 0.5F, 0.5F); - poseStack.mulPose(new Quaternionf().rotationY(g * (float) (Math.PI / 180.0))); - this.shell.render(poseStack, vertexConsumer, packedLight, packedOverlay); + poseStack.mulPose(new Quaternionf().rotationY(h * (float) (Math.PI / 180.0))); + this.shell.render(poseStack, vertexConsumer, i, j); poseStack.popPose(); } else { - float g = blockEntity.getActiveRotation(partialTick) * (180.0F / (float)Math.PI); - float h = Mth.sin(f * 0.1F) / 2.0F + 0.5F; - h = h * h + h; + float h = conduitBlockEntity.getActiveRotation(f) * (180.0F / (float)Math.PI); + float k = Mth.sin(g * 0.1F) / 2.0F + 0.5F; + k = k * k + k; poseStack.pushPose(); - poseStack.translate(0.5F, 0.3F + h * 0.2F, 0.5F); + poseStack.translate(0.5F, 0.3F + k * 0.2F, 0.5F); Vector3f vector3f = new Vector3f(0.5F, 1.0F, 0.5F).normalize(); - poseStack.mulPose(new Quaternionf().rotationAxis(g * (float) (Math.PI / 180.0), vector3f)); - this.cage.render(poseStack, ACTIVE_SHELL_TEXTURE.buffer(bufferSource, RenderType::entityCutoutNoCull), packedLight, packedOverlay); + poseStack.mulPose(new Quaternionf().rotationAxis(h * (float) (Math.PI / 180.0), vector3f)); + this.cage.render(poseStack, ACTIVE_SHELL_TEXTURE.buffer(multiBufferSource, RenderType::entityCutoutNoCull), i, j); poseStack.popPose(); - int i = blockEntity.tickCount / 66 % 3; + int l = conduitBlockEntity.tickCount / 66 % 3; poseStack.pushPose(); poseStack.translate(0.5F, 0.5F, 0.5F); - if (i == 1) { + if (l == 1) { poseStack.mulPose(new Quaternionf().rotationX((float) (Math.PI / 2))); - } else if (i == 2) { + } else if (l == 2) { poseStack.mulPose(new Quaternionf().rotationZ((float) (Math.PI / 2))); } - VertexConsumer vertexConsumer2 = (i == 1 ? VERTICAL_WIND_TEXTURE : WIND_TEXTURE).buffer(bufferSource, RenderType::entityCutoutNoCull); - this.wind.render(poseStack, vertexConsumer2, packedLight, packedOverlay); + VertexConsumer vertexConsumer2 = (l == 1 ? VERTICAL_WIND_TEXTURE : WIND_TEXTURE).buffer(multiBufferSource, RenderType::entityCutoutNoCull); + this.wind.render(poseStack, vertexConsumer2, i, j); poseStack.popPose(); poseStack.pushPose(); poseStack.translate(0.5F, 0.5F, 0.5F); poseStack.scale(0.875F, 0.875F, 0.875F); poseStack.mulPose(new Quaternionf().rotationXYZ((float) Math.PI, 0.0F, (float) Math.PI)); - this.wind.render(poseStack, vertexConsumer2, packedLight, packedOverlay); + this.wind.render(poseStack, vertexConsumer2, i, j); poseStack.popPose(); Camera camera = this.renderer.camera; poseStack.pushPose(); - poseStack.translate(0.5F, 0.3F + h * 0.2F, 0.5F); + poseStack.translate(0.5F, 0.3F + k * 0.2F, 0.5F); poseStack.scale(0.5F, 0.5F, 0.5F); - float j = -camera.getYRot(); - poseStack.mulPose(new Quaternionf().rotationYXZ(j * (float) (Math.PI / 180.0), camera.getXRot() * (float) (Math.PI / 180.0), (float) Math.PI)); - float k = 1.3333334F; + float m = -camera.getYRot(); + poseStack.mulPose(new Quaternionf().rotationYXZ(m * (float) (Math.PI / 180.0), camera.getXRot() * (float) (Math.PI / 180.0), (float) Math.PI)); + float n = 1.3333334F; poseStack.scale(1.3333334F, 1.3333334F, 1.3333334F); this.eye - .render( - poseStack, - (blockEntity.isHunting() ? OPEN_EYE_TEXTURE : CLOSED_EYE_TEXTURE).buffer(bufferSource, RenderType::entityCutoutNoCull), - packedLight, - packedOverlay - ); + .render(poseStack, (conduitBlockEntity.isHunting() ? OPEN_EYE_TEXTURE : CLOSED_EYE_TEXTURE).buffer(multiBufferSource, RenderType::entityCutoutNoCull), i, j); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/blockentity/DecoratedPotRenderer.java b/net/minecraft/client/renderer/blockentity/DecoratedPotRenderer.java index 3b39adcf..4bff4fd6 100644 --- a/net/minecraft/client/renderer/blockentity/DecoratedPotRenderer.java +++ b/net/minecraft/client/renderer/blockentity/DecoratedPotRenderer.java @@ -7,6 +7,7 @@ import java.util.EnumSet; import java.util.Optional; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; @@ -45,11 +46,15 @@ public class DecoratedPotRenderer implements BlockEntityRenderer= 0.0F && f <= 1.0F) { + DecoratedPotBlockEntity.WobbleStyle wobbleStyle = decoratedPotBlockEntity.lastWobbleStyle; + if (wobbleStyle != null && decoratedPotBlockEntity.getLevel() != null) { + float g = ((float)(decoratedPotBlockEntity.getLevel().getGameTime() - decoratedPotBlockEntity.wobbleStartedAtTick) + f) / wobbleStyle.duration; + if (g >= 0.0F && g <= 1.0F) { if (wobbleStyle == DecoratedPotBlockEntity.WobbleStyle.POSITIVE) { - float g = 0.015625F; - float h = f * (float) (Math.PI * 2); - float i = -1.5F * (Mth.cos(h) + 0.5F) * Mth.sin(h / 2.0F); - poseStack.rotateAround(Axis.XP.rotation(i * 0.015625F), 0.5F, 0.0F, 0.5F); - float j = Mth.sin(h); - poseStack.rotateAround(Axis.ZP.rotation(j * 0.015625F), 0.5F, 0.0F, 0.5F); + float h = 0.015625F; + float k = g * (float) (Math.PI * 2); + float l = -1.5F * (Mth.cos(k) + 0.5F) * Mth.sin(k / 2.0F); + poseStack.rotateAround(Axis.XP.rotation(l * 0.015625F), 0.5F, 0.0F, 0.5F); + float m = Mth.sin(k); + poseStack.rotateAround(Axis.ZP.rotation(m * 0.015625F), 0.5F, 0.0F, 0.5F); } else { - float g = Mth.sin(-f * 3.0F * (float) Math.PI) * 0.125F; - float h = 1.0F - f; - poseStack.rotateAround(Axis.YP.rotation(g * h), 0.5F, 0.0F, 0.5F); + float h = Mth.sin(-g * 3.0F * (float) Math.PI) * 0.125F; + float k = 1.0F - g; + poseStack.rotateAround(Axis.YP.rotation(h * k), 0.5F, 0.0F, 0.5F); } } } + this.render(poseStack, multiBufferSource, i, j, decoratedPotBlockEntity.getDecorations()); + poseStack.popPose(); + } + + public void renderInHand(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, PotDecorations decorations) { + this.render(poseStack, bufferSource, packedLight, packedOverlay, decorations); + } + + private void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, PotDecorations decorations) { VertexConsumer vertexConsumer = Sheets.DECORATED_POT_BASE.buffer(bufferSource, RenderType::entitySolid); this.neck.render(poseStack, vertexConsumer, packedLight, packedOverlay); this.top.render(poseStack, vertexConsumer, packedLight, packedOverlay); this.bottom.render(poseStack, vertexConsumer, packedLight, packedOverlay); - PotDecorations potDecorations = blockEntity.getDecorations(); - this.renderSide(this.frontSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(potDecorations.front())); - this.renderSide(this.backSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(potDecorations.back())); - this.renderSide(this.leftSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(potDecorations.left())); - this.renderSide(this.rightSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(potDecorations.right())); - poseStack.popPose(); + this.renderSide(this.frontSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(decorations.front())); + this.renderSide(this.backSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(decorations.back())); + this.renderSide(this.leftSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(decorations.left())); + this.renderSide(this.rightSide, poseStack, bufferSource, packedLight, packedOverlay, getSideMaterial(decorations.right())); } private void renderSide(ModelPart modelPart, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay, Material material) { diff --git a/net/minecraft/client/renderer/blockentity/EnchantTableRenderer.java b/net/minecraft/client/renderer/blockentity/EnchantTableRenderer.java index 8bd5521a..ab15533e 100644 --- a/net/minecraft/client/renderer/blockentity/EnchantTableRenderer.java +++ b/net/minecraft/client/renderer/blockentity/EnchantTableRenderer.java @@ -9,7 +9,6 @@ import net.minecraft.client.model.BookModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.resources.model.Material; import net.minecraft.resources.ResourceLocation; @@ -24,37 +23,35 @@ public class EnchantTableRenderer implements BlockEntityRenderer= (float) Math.PI) { - g -= (float) (Math.PI * 2); + while (h >= (float) Math.PI) { + h -= (float) (Math.PI * 2); } - while (g < (float) -Math.PI) { - g += (float) (Math.PI * 2); + while (h < (float) -Math.PI) { + h += (float) (Math.PI * 2); } - float h = blockEntity.oRot + g * partialTick; - poseStack.mulPose(Axis.YP.rotation(-h)); + float k = enchantingTableBlockEntity.oRot + h * f; + poseStack.mulPose(Axis.YP.rotation(-k)); poseStack.mulPose(Axis.ZP.rotationDegrees(80.0F)); - float i = Mth.lerp(partialTick, blockEntity.oFlip, blockEntity.flip); - float j = Mth.frac(i + 0.25F) * 1.6F - 0.3F; - float k = Mth.frac(i + 0.75F) * 1.6F - 0.3F; - float l = Mth.lerp(partialTick, blockEntity.oOpen, blockEntity.open); - this.bookModel.setupAnim(f, Mth.clamp(j, 0.0F, 1.0F), Mth.clamp(k, 0.0F, 1.0F), l); - VertexConsumer vertexConsumer = BOOK_LOCATION.buffer(bufferSource, RenderType::entitySolid); - this.bookModel.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + float l = Mth.lerp(f, enchantingTableBlockEntity.oFlip, enchantingTableBlockEntity.flip); + float m = Mth.frac(l + 0.25F) * 1.6F - 0.3F; + float n = Mth.frac(l + 0.75F) * 1.6F - 0.3F; + float o = Mth.lerp(f, enchantingTableBlockEntity.oOpen, enchantingTableBlockEntity.open); + this.bookModel.setupAnim(g, Mth.clamp(m, 0.0F, 1.0F), Mth.clamp(n, 0.0F, 1.0F), o); + VertexConsumer vertexConsumer = BOOK_LOCATION.buffer(multiBufferSource, RenderType::entitySolid); + this.bookModel.renderToBuffer(poseStack, vertexConsumer, i, j); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/blockentity/HangingSignRenderer.java b/net/minecraft/client/renderer/blockentity/HangingSignRenderer.java index 762e747d..7c76c58a 100644 --- a/net/minecraft/client/renderer/blockentity/HangingSignRenderer.java +++ b/net/minecraft/client/renderer/blockentity/HangingSignRenderer.java @@ -2,13 +2,17 @@ package net.minecraft.client.renderer.blockentity; import com.google.common.collect.ImmutableMap; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; +import java.util.Arrays; import java.util.Map; +import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.Model; +import net.minecraft.client.model.Model.Simple; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; -import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.LayerDefinition; @@ -17,18 +21,16 @@ import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.resources.model.Material; +import net.minecraft.util.StringRepresentable; import net.minecraft.world.level.block.CeilingHangingSignBlock; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.phys.Vec3; @Environment(EnvType.CLIENT) -public class HangingSignRenderer extends SignRenderer { +public class HangingSignRenderer extends AbstractSignRenderer { private static final String PLANK = "plank"; private static final String V_CHAINS = "vChains"; private static final String NORMAL_CHAINS = "normalChains"; @@ -40,108 +42,135 @@ public class HangingSignRenderer extends SignRenderer { private static final float MODEL_RENDER_SCALE = 1.0F; private static final float TEXT_RENDER_SCALE = 0.9F; private static final Vec3 TEXT_OFFSET = new Vec3(0.0, -0.32F, 0.073F); - private final Map hangingSignModels; + private final Map hangingSignModels; - public HangingSignRenderer(Context context) { + public HangingSignRenderer(BlockEntityRendererProvider.Context context) { super(context); - this.hangingSignModels = (Map)WoodType.values() - .collect( - ImmutableMap.toImmutableMap( - woodType -> woodType, woodType -> new HangingSignRenderer.HangingSignModel(context.bakeLayer(ModelLayers.createHangingSignModelName(woodType))) - ) + Stream stream = WoodType.values() + .flatMap( + woodType -> Arrays.stream(HangingSignRenderer.AttachmentType.values()).map(attachmentType -> new HangingSignRenderer.ModelKey(woodType, attachmentType)) ); + this.hangingSignModels = (Map)stream.collect( + ImmutableMap.toImmutableMap(modelKey -> modelKey, modelKey -> createSignModel(context.getModelSet(), modelKey.woodType, modelKey.attachmentType)) + ); + } + + public static Model createSignModel(EntityModelSet modelSet, WoodType woodType, HangingSignRenderer.AttachmentType attachmentType) { + return new Simple(modelSet.bakeLayer(ModelLayers.createHangingSignModelName(woodType, attachmentType)), RenderType::entityCutoutNoCull); } @Override - public float getSignModelRenderScale() { + protected float getSignModelRenderScale() { return 1.0F; } @Override - public float getSignTextRenderScale() { + protected float getSignTextRenderScale() { return 0.9F; } - @Override - public void render(SignBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - BlockState blockState = blockEntity.getBlockState(); - SignBlock signBlock = (SignBlock)blockState.getBlock(); - WoodType woodType = SignBlock.getWoodType(signBlock); - HangingSignRenderer.HangingSignModel hangingSignModel = (HangingSignRenderer.HangingSignModel)this.hangingSignModels.get(woodType); - hangingSignModel.evaluateVisibleParts(blockState); - this.renderSignWithText(blockEntity, poseStack, bufferSource, packedLight, packedOverlay, blockState, signBlock, woodType, hangingSignModel); - } - - @Override - void translateSign(PoseStack poseStack, float yRot, BlockState state) { + private static void translateBase(PoseStack poseStack, float yRot) { poseStack.translate(0.5, 0.9375, 0.5); poseStack.mulPose(Axis.YP.rotationDegrees(yRot)); poseStack.translate(0.0F, -0.3125F, 0.0F); } @Override - Material getSignMaterial(WoodType woodType) { + protected void translateSign(PoseStack poseStack, float yRot, BlockState state) { + translateBase(poseStack, yRot); + } + + @Override + protected Model getSignModel(BlockState state, WoodType woodType) { + HangingSignRenderer.AttachmentType attachmentType = HangingSignRenderer.AttachmentType.byBlockState(state); + return (Model)this.hangingSignModels.get(new HangingSignRenderer.ModelKey(woodType, attachmentType)); + } + + @Override + protected Material getSignMaterial(WoodType woodType) { return Sheets.getHangingSignMaterial(woodType); } @Override - Vec3 getTextOffset() { + protected Vec3 getTextOffset() { return TEXT_OFFSET; } - public static LayerDefinition createHangingSignLayer() { + public static void renderInHand(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, Model model, Material material) { + poseStack.pushPose(); + translateBase(poseStack, 0.0F); + poseStack.scale(1.0F, -1.0F, -1.0F); + VertexConsumer vertexConsumer = material.buffer(bufferSource, model::renderType); + model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + poseStack.popPose(); + } + + public static LayerDefinition createHangingSignLayer(HangingSignRenderer.AttachmentType attachmentType) { MeshDefinition meshDefinition = new MeshDefinition(); PartDefinition partDefinition = meshDefinition.getRoot(); partDefinition.addOrReplaceChild("board", CubeListBuilder.create().texOffs(0, 12).addBox(-7.0F, 0.0F, -1.0F, 14.0F, 10.0F, 2.0F), PartPose.ZERO); - partDefinition.addOrReplaceChild("plank", CubeListBuilder.create().texOffs(0, 0).addBox(-8.0F, -6.0F, -2.0F, 16.0F, 2.0F, 4.0F), PartPose.ZERO); - PartDefinition partDefinition2 = partDefinition.addOrReplaceChild("normalChains", CubeListBuilder.create(), PartPose.ZERO); - partDefinition2.addOrReplaceChild( - "chainL1", - CubeListBuilder.create().texOffs(0, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), - PartPose.offsetAndRotation(-5.0F, -6.0F, 0.0F, 0.0F, (float) (-Math.PI / 4), 0.0F) - ); - partDefinition2.addOrReplaceChild( - "chainL2", - CubeListBuilder.create().texOffs(6, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), - PartPose.offsetAndRotation(-5.0F, -6.0F, 0.0F, 0.0F, (float) (Math.PI / 4), 0.0F) - ); - partDefinition2.addOrReplaceChild( - "chainR1", - CubeListBuilder.create().texOffs(0, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), - PartPose.offsetAndRotation(5.0F, -6.0F, 0.0F, 0.0F, (float) (-Math.PI / 4), 0.0F) - ); - partDefinition2.addOrReplaceChild( - "chainR2", - CubeListBuilder.create().texOffs(6, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), - PartPose.offsetAndRotation(5.0F, -6.0F, 0.0F, 0.0F, (float) (Math.PI / 4), 0.0F) - ); - partDefinition.addOrReplaceChild("vChains", CubeListBuilder.create().texOffs(14, 6).addBox(-6.0F, -6.0F, 0.0F, 12.0F, 6.0F, 0.0F), PartPose.ZERO); + if (attachmentType == HangingSignRenderer.AttachmentType.WALL) { + partDefinition.addOrReplaceChild("plank", CubeListBuilder.create().texOffs(0, 0).addBox(-8.0F, -6.0F, -2.0F, 16.0F, 2.0F, 4.0F), PartPose.ZERO); + } + + if (attachmentType == HangingSignRenderer.AttachmentType.WALL || attachmentType == HangingSignRenderer.AttachmentType.CEILING) { + PartDefinition partDefinition2 = partDefinition.addOrReplaceChild("normalChains", CubeListBuilder.create(), PartPose.ZERO); + partDefinition2.addOrReplaceChild( + "chainL1", + CubeListBuilder.create().texOffs(0, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), + PartPose.offsetAndRotation(-5.0F, -6.0F, 0.0F, 0.0F, (float) (-Math.PI / 4), 0.0F) + ); + partDefinition2.addOrReplaceChild( + "chainL2", + CubeListBuilder.create().texOffs(6, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), + PartPose.offsetAndRotation(-5.0F, -6.0F, 0.0F, 0.0F, (float) (Math.PI / 4), 0.0F) + ); + partDefinition2.addOrReplaceChild( + "chainR1", + CubeListBuilder.create().texOffs(0, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), + PartPose.offsetAndRotation(5.0F, -6.0F, 0.0F, 0.0F, (float) (-Math.PI / 4), 0.0F) + ); + partDefinition2.addOrReplaceChild( + "chainR2", + CubeListBuilder.create().texOffs(6, 6).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 6.0F, 0.0F), + PartPose.offsetAndRotation(5.0F, -6.0F, 0.0F, 0.0F, (float) (Math.PI / 4), 0.0F) + ); + } + + if (attachmentType == HangingSignRenderer.AttachmentType.CEILING_MIDDLE) { + partDefinition.addOrReplaceChild("vChains", CubeListBuilder.create().texOffs(14, 6).addBox(-6.0F, -6.0F, 0.0F, 12.0F, 6.0F, 0.0F), PartPose.ZERO); + } + return LayerDefinition.create(meshDefinition, 64, 32); } @Environment(EnvType.CLIENT) - public static final class HangingSignModel extends Model { - public final ModelPart plank; - public final ModelPart vChains; - public final ModelPart normalChains; + public static enum AttachmentType implements StringRepresentable { + WALL("wall"), + CEILING("ceiling"), + CEILING_MIDDLE("ceiling_middle"); - public HangingSignModel(ModelPart root) { - super(root, RenderType::entityCutoutNoCull); - this.plank = root.getChild("plank"); - this.normalChains = root.getChild("normalChains"); - this.vChains = root.getChild("vChains"); + private final String name; + + private AttachmentType(final String name) { + this.name = name; } - public void evaluateVisibleParts(BlockState state) { - boolean bl = !(state.getBlock() instanceof CeilingHangingSignBlock); - this.plank.visible = bl; - this.vChains.visible = false; - this.normalChains.visible = true; - if (!bl) { - boolean bl2 = (Boolean)state.getValue(BlockStateProperties.ATTACHED); - this.normalChains.visible = !bl2; - this.vChains.visible = bl2; + public static HangingSignRenderer.AttachmentType byBlockState(BlockState blockState) { + if (blockState.getBlock() instanceof CeilingHangingSignBlock) { + return blockState.getValue(BlockStateProperties.ATTACHED) ? CEILING_MIDDLE : CEILING; + } else { + return WALL; } } + + @Override + public String getSerializedName() { + return this.name; + } + } + + @Environment(EnvType.CLIENT) + public record ModelKey(WoodType woodType, HangingSignRenderer.AttachmentType attachmentType) { } } diff --git a/net/minecraft/client/renderer/blockentity/LecternRenderer.java b/net/minecraft/client/renderer/blockentity/LecternRenderer.java index 337e27ab..7d6b7eb5 100644 --- a/net/minecraft/client/renderer/blockentity/LecternRenderer.java +++ b/net/minecraft/client/renderer/blockentity/LecternRenderer.java @@ -9,7 +9,6 @@ import net.minecraft.client.model.BookModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.world.level.block.LecternBlock; import net.minecraft.world.level.block.entity.LecternBlockEntity; @@ -19,22 +18,22 @@ import net.minecraft.world.level.block.state.BlockState; public class LecternRenderer implements BlockEntityRenderer { private final BookModel bookModel; - public LecternRenderer(Context context) { + public LecternRenderer(BlockEntityRendererProvider.Context context) { this.bookModel = new BookModel(context.bakeLayer(ModelLayers.BOOK)); } - public void render(LecternBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - BlockState blockState = blockEntity.getBlockState(); + public void render(LecternBlockEntity lecternBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + BlockState blockState = lecternBlockEntity.getBlockState(); if ((Boolean)blockState.getValue(LecternBlock.HAS_BOOK)) { poseStack.pushPose(); poseStack.translate(0.5F, 1.0625F, 0.5F); - float f = ((Direction)blockState.getValue(LecternBlock.FACING)).getClockWise().toYRot(); - poseStack.mulPose(Axis.YP.rotationDegrees(-f)); + float g = ((Direction)blockState.getValue(LecternBlock.FACING)).getClockWise().toYRot(); + poseStack.mulPose(Axis.YP.rotationDegrees(-g)); poseStack.mulPose(Axis.ZP.rotationDegrees(67.5F)); poseStack.translate(0.0F, -0.125F, 0.0F); this.bookModel.setupAnim(0.0F, 0.1F, 0.9F, 1.2F); - VertexConsumer vertexConsumer = EnchantTableRenderer.BOOK_LOCATION.buffer(bufferSource, RenderType::entitySolid); - this.bookModel.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + VertexConsumer vertexConsumer = EnchantTableRenderer.BOOK_LOCATION.buffer(multiBufferSource, RenderType::entitySolid); + this.bookModel.renderToBuffer(poseStack, vertexConsumer, i, j); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java b/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java index acb2cd52..5d8b142d 100644 --- a/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java +++ b/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java @@ -9,7 +9,6 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.block.ModelBlockRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -25,39 +24,37 @@ import net.minecraft.world.level.block.state.properties.PistonType; public class PistonHeadRenderer implements BlockEntityRenderer { private final BlockRenderDispatcher blockRenderer; - public PistonHeadRenderer(Context context) { + public PistonHeadRenderer(BlockEntityRendererProvider.Context context) { this.blockRenderer = context.getBlockRenderDispatcher(); } - public void render( - PistonMovingBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay - ) { - Level level = blockEntity.getLevel(); + public void render(PistonMovingBlockEntity pistonMovingBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + Level level = pistonMovingBlockEntity.getLevel(); if (level != null) { - BlockPos blockPos = blockEntity.getBlockPos().relative(blockEntity.getMovementDirection().getOpposite()); - BlockState blockState = blockEntity.getMovedState(); + BlockPos blockPos = pistonMovingBlockEntity.getBlockPos().relative(pistonMovingBlockEntity.getMovementDirection().getOpposite()); + BlockState blockState = pistonMovingBlockEntity.getMovedState(); if (!blockState.isAir()) { ModelBlockRenderer.enableCaching(); poseStack.pushPose(); - poseStack.translate(blockEntity.getXOff(partialTick), blockEntity.getYOff(partialTick), blockEntity.getZOff(partialTick)); - if (blockState.is(Blocks.PISTON_HEAD) && blockEntity.getProgress(partialTick) <= 4.0F) { - blockState = blockState.setValue(PistonHeadBlock.SHORT, blockEntity.getProgress(partialTick) <= 0.5F); - this.renderBlock(blockPos, blockState, poseStack, bufferSource, level, false, packedOverlay); - } else if (blockEntity.isSourcePiston() && !blockEntity.isExtending()) { + poseStack.translate(pistonMovingBlockEntity.getXOff(f), pistonMovingBlockEntity.getYOff(f), pistonMovingBlockEntity.getZOff(f)); + if (blockState.is(Blocks.PISTON_HEAD) && pistonMovingBlockEntity.getProgress(f) <= 4.0F) { + blockState = blockState.setValue(PistonHeadBlock.SHORT, pistonMovingBlockEntity.getProgress(f) <= 0.5F); + this.renderBlock(blockPos, blockState, poseStack, multiBufferSource, level, false, j); + } else if (pistonMovingBlockEntity.isSourcePiston() && !pistonMovingBlockEntity.isExtending()) { PistonType pistonType = blockState.is(Blocks.STICKY_PISTON) ? PistonType.STICKY : PistonType.DEFAULT; BlockState blockState2 = Blocks.PISTON_HEAD .defaultBlockState() .setValue(PistonHeadBlock.TYPE, pistonType) .setValue(PistonHeadBlock.FACING, (Direction)blockState.getValue(PistonBaseBlock.FACING)); - blockState2 = blockState2.setValue(PistonHeadBlock.SHORT, blockEntity.getProgress(partialTick) >= 0.5F); - this.renderBlock(blockPos, blockState2, poseStack, bufferSource, level, false, packedOverlay); - BlockPos blockPos2 = blockPos.relative(blockEntity.getMovementDirection()); + blockState2 = blockState2.setValue(PistonHeadBlock.SHORT, pistonMovingBlockEntity.getProgress(f) >= 0.5F); + this.renderBlock(blockPos, blockState2, poseStack, multiBufferSource, level, false, j); + BlockPos blockPos2 = blockPos.relative(pistonMovingBlockEntity.getMovementDirection()); poseStack.popPose(); poseStack.pushPose(); blockState = blockState.setValue(PistonBaseBlock.EXTENDED, true); - this.renderBlock(blockPos2, blockState, poseStack, bufferSource, level, true, packedOverlay); + this.renderBlock(blockPos2, blockState, poseStack, multiBufferSource, level, true, j); } else { - this.renderBlock(blockPos, blockState, poseStack, bufferSource, level, false, packedOverlay); + this.renderBlock(blockPos, blockState, poseStack, multiBufferSource, level, false, j); } poseStack.popPose(); diff --git a/net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer.java b/net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer.java index c68410b3..20513237 100644 --- a/net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer.java +++ b/net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer.java @@ -5,54 +5,55 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.resources.model.Material; import net.minecraft.core.Direction; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.ShulkerBoxBlock; import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity; -import net.minecraft.world.level.block.state.BlockState; @Environment(EnvType.CLIENT) public class ShulkerBoxRenderer implements BlockEntityRenderer { private final ShulkerBoxRenderer.ShulkerBoxModel model; - public ShulkerBoxRenderer(Context context) { - this.model = new ShulkerBoxRenderer.ShulkerBoxModel(context.bakeLayer(ModelLayers.SHULKER_BOX)); + public ShulkerBoxRenderer(BlockEntityRendererProvider.Context context) { + this(context.getModelSet()); } - public void render( - ShulkerBoxBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay - ) { - Direction direction = Direction.UP; - if (blockEntity.hasLevel()) { - BlockState blockState = blockEntity.getLevel().getBlockState(blockEntity.getBlockPos()); - if (blockState.getBlock() instanceof ShulkerBoxBlock) { - direction = blockState.getValue(ShulkerBoxBlock.FACING); - } - } + public ShulkerBoxRenderer(EntityModelSet modelSet) { + this.model = new ShulkerBoxRenderer.ShulkerBoxModel(modelSet.bakeLayer(ModelLayers.SHULKER_BOX)); + } - DyeColor dyeColor = blockEntity.getColor(); + public void render(ShulkerBoxBlockEntity shulkerBoxBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + Direction direction = shulkerBoxBlockEntity.getBlockState().getValueOrElse(ShulkerBoxBlock.FACING, Direction.UP); + DyeColor dyeColor = shulkerBoxBlockEntity.getColor(); Material material; if (dyeColor == null) { material = Sheets.DEFAULT_SHULKER_TEXTURE_LOCATION; } else { - material = (Material)Sheets.SHULKER_TEXTURE_LOCATION.get(dyeColor.getId()); + material = Sheets.getShulkerBoxMaterial(dyeColor); } + float g = shulkerBoxBlockEntity.getProgress(f); + this.render(poseStack, multiBufferSource, i, j, direction, g, material); + } + + public void render( + PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, Direction facing, float progress, Material material + ) { poseStack.pushPose(); poseStack.translate(0.5F, 0.5F, 0.5F); float f = 0.9995F; poseStack.scale(0.9995F, 0.9995F, 0.9995F); - poseStack.mulPose(direction.getRotation()); + poseStack.mulPose(facing.getRotation()); poseStack.scale(1.0F, -1.0F, -1.0F); poseStack.translate(0.0F, -1.0F, 0.0F); - this.model.animate(blockEntity, partialTick); + this.model.animate(progress); VertexConsumer vertexConsumer = material.buffer(bufferSource, this.model::renderType); this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); poseStack.popPose(); @@ -67,9 +68,9 @@ public class ShulkerBoxRenderer implements BlockEntityRenderer { - private static final int BLACK_TEXT_OUTLINE_COLOR = -988212; - private static final int OUTLINE_RENDER_DISTANCE = Mth.square(16); +public class SignRenderer extends AbstractSignRenderer { private static final float RENDER_SCALE = 0.6666667F; private static final Vec3 TEXT_OFFSET = new Vec3(0.0, 0.33333334F, 0.046666667F); private final Map signModels; - private final Font font; - public SignRenderer(Context context) { + public SignRenderer(BlockEntityRendererProvider.Context context) { + super(context); this.signModels = (Map)WoodType.values() .collect( ImmutableMap.toImmutableMap( @@ -56,154 +41,59 @@ public class SignRenderer implements BlockEntityRenderer { woodType -> new SignRenderer.Models(createSignModel(context.getModelSet(), woodType, true), createSignModel(context.getModelSet(), woodType, false)) ) ); - this.font = context.getFont(); } - public void render(SignBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - BlockState blockState = blockEntity.getBlockState(); - SignBlock signBlock = (SignBlock)blockState.getBlock(); - WoodType woodType = SignBlock.getWoodType(signBlock); + @Override + protected Model getSignModel(BlockState state, WoodType woodType) { SignRenderer.Models models = (SignRenderer.Models)this.signModels.get(woodType); - Model model = blockState.getBlock() instanceof StandingSignBlock ? models.standing() : models.wall(); - this.renderSignWithText(blockEntity, poseStack, bufferSource, packedLight, packedOverlay, blockState, signBlock, woodType, model); + return state.getBlock() instanceof StandingSignBlock ? models.standing() : models.wall(); } - public float getSignModelRenderScale() { + @Override + protected Material getSignMaterial(WoodType woodType) { + return Sheets.getSignMaterial(woodType); + } + + @Override + protected float getSignModelRenderScale() { return 0.6666667F; } - public float getSignTextRenderScale() { + @Override + protected float getSignTextRenderScale() { return 0.6666667F; } - void renderSignWithText( - SignBlockEntity signEntity, - PoseStack poseStack, - MultiBufferSource buffer, - int packedLight, - int packedOverlay, - BlockState state, - SignBlock signBlock, - WoodType woodType, - Model model - ) { - poseStack.pushPose(); - this.translateSign(poseStack, -signBlock.getYRotationDegrees(state), state); - this.renderSign(poseStack, buffer, packedLight, packedOverlay, woodType, model); - this.renderSignText( - signEntity.getBlockPos(), signEntity.getFrontText(), poseStack, buffer, packedLight, signEntity.getTextLineHeight(), signEntity.getMaxTextLineWidth(), true - ); - this.renderSignText( - signEntity.getBlockPos(), signEntity.getBackText(), poseStack, buffer, packedLight, signEntity.getTextLineHeight(), signEntity.getMaxTextLineWidth(), false - ); - poseStack.popPose(); - } - - void translateSign(PoseStack poseStack, float yRot, BlockState state) { - poseStack.translate(0.5F, 0.75F * this.getSignModelRenderScale(), 0.5F); + private static void translateBase(PoseStack poseStack, float yRot) { + poseStack.translate(0.5F, 0.5F, 0.5F); poseStack.mulPose(Axis.YP.rotationDegrees(yRot)); + } + + @Override + protected void translateSign(PoseStack poseStack, float yRot, BlockState state) { + translateBase(poseStack, yRot); if (!(state.getBlock() instanceof StandingSignBlock)) { poseStack.translate(0.0F, -0.3125F, -0.4375F); } } - void renderSign(PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay, WoodType woodType, Model model) { + @Override + protected Vec3 getTextOffset() { + return TEXT_OFFSET; + } + + public static void renderInHand(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, Model model, Material material) { poseStack.pushPose(); - float f = this.getSignModelRenderScale(); - poseStack.scale(f, -f, -f); - Material material = this.getSignMaterial(woodType); - VertexConsumer vertexConsumer = material.buffer(buffer, model::renderType); + translateBase(poseStack, 0.0F); + poseStack.scale(0.6666667F, -0.6666667F, -0.6666667F); + VertexConsumer vertexConsumer = material.buffer(bufferSource, model::renderType); model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); poseStack.popPose(); } - Material getSignMaterial(WoodType woodType) { - return Sheets.getSignMaterial(woodType); - } - - void renderSignText( - BlockPos pos, SignText text, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int lineHeight, int maxWidth, boolean isFrontText - ) { - poseStack.pushPose(); - this.translateSignText(poseStack, isFrontText, this.getTextOffset()); - int i = getDarkColor(text); - int j = 4 * lineHeight / 2; - FormattedCharSequence[] formattedCharSequences = text.getRenderMessages(Minecraft.getInstance().isTextFilteringEnabled(), component -> { - List list = this.font.split(component, maxWidth); - return list.isEmpty() ? FormattedCharSequence.EMPTY : (FormattedCharSequence)list.get(0); - }); - int k; - boolean bl; - int l; - if (text.hasGlowingText()) { - k = text.getColor().getTextColor(); - bl = isOutlineVisible(pos, k); - l = 15728880; - } else { - k = i; - bl = false; - l = packedLight; - } - - for (int m = 0; m < 4; m++) { - FormattedCharSequence formattedCharSequence = formattedCharSequences[m]; - float f = -this.font.width(formattedCharSequence) / 2; - if (bl) { - this.font.drawInBatch8xOutline(formattedCharSequence, f, m * lineHeight - j, k, i, poseStack.last().pose(), buffer, l); - } else { - this.font - .drawInBatch(formattedCharSequence, f, (float)(m * lineHeight - j), k, false, poseStack.last().pose(), buffer, Font.DisplayMode.POLYGON_OFFSET, 0, l); - } - } - - poseStack.popPose(); - } - - private void translateSignText(PoseStack poseStack, boolean isFrontText, Vec3 offset) { - if (!isFrontText) { - poseStack.mulPose(Axis.YP.rotationDegrees(180.0F)); - } - - float f = 0.015625F * this.getSignTextRenderScale(); - poseStack.translate(offset); - poseStack.scale(f, -f, f); - } - - Vec3 getTextOffset() { - return TEXT_OFFSET; - } - - static boolean isOutlineVisible(BlockPos pos, int textColor) { - if (textColor == DyeColor.BLACK.getTextColor()) { - return true; - } else { - Minecraft minecraft = Minecraft.getInstance(); - LocalPlayer localPlayer = minecraft.player; - if (localPlayer != null && minecraft.options.getCameraType().isFirstPerson() && localPlayer.isScoping()) { - return true; - } else { - Entity entity = minecraft.getCameraEntity(); - return entity != null && entity.distanceToSqr(Vec3.atCenterOf(pos)) < OUTLINE_RENDER_DISTANCE; - } - } - } - - public static int getDarkColor(SignText signText) { - int i = signText.getColor().getTextColor(); - if (i == DyeColor.BLACK.getTextColor() && signText.hasGlowingText()) { - return -988212; - } else { - double d = 0.4; - int j = (int)(ARGB.red(i) * 0.4); - int k = (int)(ARGB.green(i) * 0.4); - int l = (int)(ARGB.blue(i) * 0.4); - return ARGB.color(0, j, k, l); - } - } - public static Model createSignModel(EntityModelSet modelSet, WoodType woodType, boolean standingSign) { ModelLayerLocation modelLayerLocation = standingSign ? ModelLayers.createStandingSignModelName(woodType) : ModelLayers.createWallSignModelName(woodType); - return new Model.Simple(modelSet.bakeLayer(modelLayerLocation), RenderType::entityCutoutNoCull); + return new Simple(modelSet.bakeLayer(modelLayerLocation), RenderType::entityCutoutNoCull); } public static LayerDefinition createSignLayer(boolean standingSign) { diff --git a/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java b/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java index 5810e70d..ae1ad447 100644 --- a/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java +++ b/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java @@ -1,11 +1,10 @@ package net.minecraft.client.renderer.blockentity; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; -import com.google.common.collect.ImmutableMap.Builder; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import java.util.Map; +import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; @@ -18,16 +17,16 @@ import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.resources.DefaultPlayerSkin; -import net.minecraft.client.resources.SkinManager; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.component.ResolvableProfile; import net.minecraft.world.level.block.AbstractSkullBlock; import net.minecraft.world.level.block.SkullBlock; import net.minecraft.world.level.block.WallSkullBlock; +import net.minecraft.world.level.block.SkullBlock.Type; +import net.minecraft.world.level.block.SkullBlock.Types; import net.minecraft.world.level.block.entity.SkullBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.RotationSegment; @@ -35,44 +34,50 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class SkullBlockRenderer implements BlockEntityRenderer { - private final Map modelByType; - private static final Map SKIN_BY_TYPE = Util.make(Maps.newHashMap(), hashMap -> { - hashMap.put(SkullBlock.Types.SKELETON, ResourceLocation.withDefaultNamespace("textures/entity/skeleton/skeleton.png")); - hashMap.put(SkullBlock.Types.WITHER_SKELETON, ResourceLocation.withDefaultNamespace("textures/entity/skeleton/wither_skeleton.png")); - hashMap.put(SkullBlock.Types.ZOMBIE, ResourceLocation.withDefaultNamespace("textures/entity/zombie/zombie.png")); - hashMap.put(SkullBlock.Types.CREEPER, ResourceLocation.withDefaultNamespace("textures/entity/creeper/creeper.png")); - hashMap.put(SkullBlock.Types.DRAGON, ResourceLocation.withDefaultNamespace("textures/entity/enderdragon/dragon.png")); - hashMap.put(SkullBlock.Types.PIGLIN, ResourceLocation.withDefaultNamespace("textures/entity/piglin/piglin.png")); - hashMap.put(SkullBlock.Types.PLAYER, DefaultPlayerSkin.getDefaultTexture()); + private final Function modelByType; + private static final Map SKIN_BY_TYPE = Util.make(Maps.newHashMap(), hashMap -> { + hashMap.put(Types.SKELETON, ResourceLocation.withDefaultNamespace("textures/entity/skeleton/skeleton.png")); + hashMap.put(Types.WITHER_SKELETON, ResourceLocation.withDefaultNamespace("textures/entity/skeleton/wither_skeleton.png")); + hashMap.put(Types.ZOMBIE, ResourceLocation.withDefaultNamespace("textures/entity/zombie/zombie.png")); + hashMap.put(Types.CREEPER, ResourceLocation.withDefaultNamespace("textures/entity/creeper/creeper.png")); + hashMap.put(Types.DRAGON, ResourceLocation.withDefaultNamespace("textures/entity/enderdragon/dragon.png")); + hashMap.put(Types.PIGLIN, ResourceLocation.withDefaultNamespace("textures/entity/piglin/piglin.png")); + hashMap.put(Types.PLAYER, DefaultPlayerSkin.getDefaultTexture()); }); - public static Map createSkullRenderers(EntityModelSet entityModelSet) { - Builder builder = ImmutableMap.builder(); - builder.put(SkullBlock.Types.SKELETON, new SkullModel(entityModelSet.bakeLayer(ModelLayers.SKELETON_SKULL))); - builder.put(SkullBlock.Types.WITHER_SKELETON, new SkullModel(entityModelSet.bakeLayer(ModelLayers.WITHER_SKELETON_SKULL))); - builder.put(SkullBlock.Types.PLAYER, new SkullModel(entityModelSet.bakeLayer(ModelLayers.PLAYER_HEAD))); - builder.put(SkullBlock.Types.ZOMBIE, new SkullModel(entityModelSet.bakeLayer(ModelLayers.ZOMBIE_HEAD))); - builder.put(SkullBlock.Types.CREEPER, new SkullModel(entityModelSet.bakeLayer(ModelLayers.CREEPER_HEAD))); - builder.put(SkullBlock.Types.DRAGON, new DragonHeadModel(entityModelSet.bakeLayer(ModelLayers.DRAGON_SKULL))); - builder.put(SkullBlock.Types.PIGLIN, new PiglinHeadModel(entityModelSet.bakeLayer(ModelLayers.PIGLIN_HEAD))); - return builder.build(); + @Nullable + public static SkullModelBase createModel(EntityModelSet modelSet, Type type) { + if (type instanceof Types types) { + return (SkullModelBase)(switch (types) { + case SKELETON -> new SkullModel(modelSet.bakeLayer(ModelLayers.SKELETON_SKULL)); + case WITHER_SKELETON -> new SkullModel(modelSet.bakeLayer(ModelLayers.WITHER_SKELETON_SKULL)); + case PLAYER -> new SkullModel(modelSet.bakeLayer(ModelLayers.PLAYER_HEAD)); + case ZOMBIE -> new SkullModel(modelSet.bakeLayer(ModelLayers.ZOMBIE_HEAD)); + case CREEPER -> new SkullModel(modelSet.bakeLayer(ModelLayers.CREEPER_HEAD)); + case DRAGON -> new DragonHeadModel(modelSet.bakeLayer(ModelLayers.DRAGON_SKULL)); + case PIGLIN -> new PiglinHeadModel(modelSet.bakeLayer(ModelLayers.PIGLIN_HEAD)); + }); + } else { + return null; + } } - public SkullBlockRenderer(Context context) { - this.modelByType = createSkullRenderers(context.getModelSet()); + public SkullBlockRenderer(BlockEntityRendererProvider.Context context) { + EntityModelSet entityModelSet = context.getModelSet(); + this.modelByType = Util.memoize((Function)(type -> createModel(entityModelSet, type))); } - public void render(SkullBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - float f = blockEntity.getAnimation(partialTick); - BlockState blockState = blockEntity.getBlockState(); + public void render(SkullBlockEntity skullBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + float g = skullBlockEntity.getAnimation(f); + BlockState blockState = skullBlockEntity.getBlockState(); boolean bl = blockState.getBlock() instanceof WallSkullBlock; Direction direction = bl ? blockState.getValue(WallSkullBlock.FACING) : null; - int i = bl ? RotationSegment.convertToSegment(direction.getOpposite()) : (Integer)blockState.getValue(SkullBlock.ROTATION); - float g = RotationSegment.convertToDegrees(i); - SkullBlock.Type type = ((AbstractSkullBlock)blockState.getBlock()).getType(); - SkullModelBase skullModelBase = (SkullModelBase)this.modelByType.get(type); - RenderType renderType = getRenderType(type, blockEntity.getOwnerProfile()); - renderSkull(direction, g, f, poseStack, bufferSource, packedLight, skullModelBase, renderType); + int k = bl ? RotationSegment.convertToSegment(direction.getOpposite()) : (Integer)blockState.getValue(SkullBlock.ROTATION); + float h = RotationSegment.convertToDegrees(k); + Type type = ((AbstractSkullBlock)blockState.getBlock()).getType(); + SkullModelBase skullModelBase = (SkullModelBase)this.modelByType.apply(type); + RenderType renderType = getRenderType(type, skullBlockEntity.getOwnerProfile()); + renderSkull(direction, h, g, poseStack, multiBufferSource, i, skullModelBase, renderType); } public static void renderSkull( @@ -100,13 +105,15 @@ public class SkullBlockRenderer implements BlockEntityRenderer poseStack.popPose(); } - public static RenderType getRenderType(SkullBlock.Type type, @Nullable ResolvableProfile profile) { - ResourceLocation resourceLocation = (ResourceLocation)SKIN_BY_TYPE.get(type); - if (type == SkullBlock.Types.PLAYER && profile != null) { - SkinManager skinManager = Minecraft.getInstance().getSkinManager(); - return RenderType.entityTranslucent(skinManager.getInsecureSkin(profile.gameProfile()).texture()); - } else { - return RenderType.entityCutoutNoCullZOffset(resourceLocation); - } + public static RenderType getRenderType(Type type, @Nullable ResolvableProfile profile) { + return getRenderType(type, profile, null); + } + + public static RenderType getRenderType(Type type, @Nullable ResolvableProfile profile, @Nullable ResourceLocation textureOverride) { + return type == Types.PLAYER && profile != null + ? RenderType.entityTranslucent( + textureOverride != null ? textureOverride : Minecraft.getInstance().getSkinManager().getInsecureSkin(profile.gameProfile()).texture() + ) + : RenderType.entityCutoutNoCullZOffset(textureOverride != null ? textureOverride : (ResourceLocation)SKIN_BY_TYPE.get(type)); } } diff --git a/net/minecraft/client/renderer/blockentity/SpawnerRenderer.java b/net/minecraft/client/renderer/blockentity/SpawnerRenderer.java index 7aa9ddad..49633b63 100644 --- a/net/minecraft/client/renderer/blockentity/SpawnerRenderer.java +++ b/net/minecraft/client/renderer/blockentity/SpawnerRenderer.java @@ -5,7 +5,6 @@ import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -17,17 +16,17 @@ import net.minecraft.world.level.block.entity.SpawnerBlockEntity; public class SpawnerRenderer implements BlockEntityRenderer { private final EntityRenderDispatcher entityRenderer; - public SpawnerRenderer(Context context) { + public SpawnerRenderer(BlockEntityRendererProvider.Context context) { this.entityRenderer = context.getEntityRenderer(); } - public void render(SpawnerBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - Level level = blockEntity.getLevel(); + public void render(SpawnerBlockEntity spawnerBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + Level level = spawnerBlockEntity.getLevel(); if (level != null) { - BaseSpawner baseSpawner = blockEntity.getSpawner(); - Entity entity = baseSpawner.getOrCreateDisplayEntity(level, blockEntity.getBlockPos()); + BaseSpawner baseSpawner = spawnerBlockEntity.getSpawner(); + Entity entity = baseSpawner.getOrCreateDisplayEntity(level, spawnerBlockEntity.getBlockPos()); if (entity != null) { - renderEntityInSpawner(partialTick, poseStack, bufferSource, packedLight, entity, this.entityRenderer, baseSpawner.getoSpin(), baseSpawner.getSpin()); + renderEntityInSpawner(f, poseStack, multiBufferSource, i, entity, this.entityRenderer, baseSpawner.getoSpin(), baseSpawner.getSpin()); } } } diff --git a/net/minecraft/client/renderer/blockentity/StructureBlockRenderer.java b/net/minecraft/client/renderer/blockentity/StructureBlockRenderer.java index fc44e62d..06742e98 100644 --- a/net/minecraft/client/renderer/blockentity/StructureBlockRenderer.java +++ b/net/minecraft/client/renderer/blockentity/StructureBlockRenderer.java @@ -8,7 +8,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.ShapeRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; import net.minecraft.gametest.framework.StructureUtils; @@ -22,77 +21,75 @@ import net.minecraft.world.phys.shapes.DiscreteVoxelShape; @Environment(EnvType.CLIENT) public class StructureBlockRenderer implements BlockEntityRenderer { - public StructureBlockRenderer(Context context) { + public StructureBlockRenderer(BlockEntityRendererProvider.Context context) { } - public void render( - StructureBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay - ) { + public void render(StructureBlockEntity structureBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { if (Minecraft.getInstance().player.canUseGameMasterBlocks() || Minecraft.getInstance().player.isSpectator()) { - BlockPos blockPos = blockEntity.getStructurePos(); - Vec3i vec3i = blockEntity.getStructureSize(); + BlockPos blockPos = structureBlockEntity.getStructurePos(); + Vec3i vec3i = structureBlockEntity.getStructureSize(); if (vec3i.getX() >= 1 && vec3i.getY() >= 1 && vec3i.getZ() >= 1) { - if (blockEntity.getMode() == StructureMode.SAVE || blockEntity.getMode() == StructureMode.LOAD) { + if (structureBlockEntity.getMode() == StructureMode.SAVE || structureBlockEntity.getMode() == StructureMode.LOAD) { double d = blockPos.getX(); double e = blockPos.getZ(); - double f = blockPos.getY(); - double g = f + vec3i.getY(); - double h; - double i; - switch (blockEntity.getMirror()) { - case LEFT_RIGHT: - h = vec3i.getX(); - i = -vec3i.getZ(); - break; - case FRONT_BACK: - h = -vec3i.getX(); - i = vec3i.getZ(); - break; - default: - h = vec3i.getX(); - i = vec3i.getZ(); - } - - double j; + double g = blockPos.getY(); + double h = g + vec3i.getY(); double k; double l; - double m; - switch (blockEntity.getRotation()) { - case CLOCKWISE_90: - j = i < 0.0 ? d : d + 1.0; - k = h < 0.0 ? e + 1.0 : e; - l = j - i; - m = k + h; + switch (structureBlockEntity.getMirror()) { + case LEFT_RIGHT: + k = vec3i.getX(); + l = -vec3i.getZ(); break; - case CLOCKWISE_180: - j = h < 0.0 ? d : d + 1.0; - k = i < 0.0 ? e : e + 1.0; - l = j - h; - m = k - i; - break; - case COUNTERCLOCKWISE_90: - j = i < 0.0 ? d + 1.0 : d; - k = h < 0.0 ? e : e + 1.0; - l = j + i; - m = k - h; + case FRONT_BACK: + k = -vec3i.getX(); + l = vec3i.getZ(); break; default: - j = h < 0.0 ? d + 1.0 : d; - k = i < 0.0 ? e + 1.0 : e; - l = j + h; - m = k + i; + k = vec3i.getX(); + l = vec3i.getZ(); } - float n = 1.0F; - float o = 0.9F; - float p = 0.5F; - if (blockEntity.getMode() == StructureMode.SAVE || blockEntity.getShowBoundingBox()) { - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.lines()); - ShapeRenderer.renderLineBox(poseStack, vertexConsumer, j, f, k, l, g, m, 0.9F, 0.9F, 0.9F, 1.0F, 0.5F, 0.5F, 0.5F); + double m; + double n; + double o; + double p; + switch (structureBlockEntity.getRotation()) { + case CLOCKWISE_90: + m = l < 0.0 ? d : d + 1.0; + n = k < 0.0 ? e + 1.0 : e; + o = m - l; + p = n + k; + break; + case CLOCKWISE_180: + m = k < 0.0 ? d : d + 1.0; + n = l < 0.0 ? e : e + 1.0; + o = m - k; + p = n - l; + break; + case COUNTERCLOCKWISE_90: + m = l < 0.0 ? d + 1.0 : d; + n = k < 0.0 ? e : e + 1.0; + o = m + l; + p = n - k; + break; + default: + m = k < 0.0 ? d + 1.0 : d; + n = l < 0.0 ? e + 1.0 : e; + o = m + k; + p = n + l; } - if (blockEntity.getMode() == StructureMode.SAVE && blockEntity.getShowAir()) { - this.renderInvisibleBlocks(blockEntity, bufferSource, poseStack); + float q = 1.0F; + float r = 0.9F; + float s = 0.5F; + if (structureBlockEntity.getMode() == StructureMode.SAVE || structureBlockEntity.getShowBoundingBox()) { + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.lines()); + ShapeRenderer.renderLineBox(poseStack, vertexConsumer, m, g, n, o, h, p, 0.9F, 0.9F, 0.9F, 1.0F, 0.5F, 0.5F, 0.5F); + } + + if (structureBlockEntity.getMode() == StructureMode.SAVE && structureBlockEntity.getShowAir()) { + this.renderInvisibleBlocks(structureBlockEntity, multiBufferSource, poseStack); } } } @@ -160,7 +157,7 @@ public class StructureBlockRenderer implements BlockEntityRenderer { private static final ResourceLocation BEAM_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/end_gateway_beam.png"); - public TheEndGatewayRenderer(Context context) { + public TheEndGatewayRenderer(BlockEntityRendererProvider.Context context) { super(context); } diff --git a/net/minecraft/client/renderer/blockentity/TheEndPortalRenderer.java b/net/minecraft/client/renderer/blockentity/TheEndPortalRenderer.java index 6f8bcbc9..7056b236 100644 --- a/net/minecraft/client/renderer/blockentity/TheEndPortalRenderer.java +++ b/net/minecraft/client/renderer/blockentity/TheEndPortalRenderer.java @@ -19,9 +19,9 @@ public class TheEndPortalRenderer implements public TheEndPortalRenderer(BlockEntityRendererProvider.Context context) { } - public void render(T blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { + public void render(T theEndPortalBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { Matrix4f matrix4f = poseStack.last().pose(); - this.renderCube(blockEntity, matrix4f, bufferSource.getBuffer(this.renderType())); + this.renderCube(theEndPortalBlockEntity, matrix4f, multiBufferSource.getBuffer(this.renderType())); } private void renderCube(T blockEntity, Matrix4f pose, VertexConsumer consumer) { diff --git a/net/minecraft/client/renderer/blockentity/TrialSpawnerRenderer.java b/net/minecraft/client/renderer/blockentity/TrialSpawnerRenderer.java index f2f78304..6f018e94 100644 --- a/net/minecraft/client/renderer/blockentity/TrialSpawnerRenderer.java +++ b/net/minecraft/client/renderer/blockentity/TrialSpawnerRenderer.java @@ -19,17 +19,15 @@ public class TrialSpawnerRenderer implements BlockEntityRenderer { - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; private final RandomSource random = RandomSource.create(); + private final ItemClusterRenderState renderState = new ItemClusterRenderState(); public VaultRenderer(BlockEntityRendererProvider.Context context) { - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); } - public void render(VaultBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { - if (VaultBlockEntity.Client.shouldDisplayActiveEffects(blockEntity.getSharedData())) { - Level level = blockEntity.getLevel(); + public void render(VaultBlockEntity vaultBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { + if (VaultBlockEntity.Client.shouldDisplayActiveEffects(vaultBlockEntity.getSharedData())) { + Level level = vaultBlockEntity.getLevel(); if (level != null) { - ItemStack itemStack = blockEntity.getSharedData().getDisplayItem(); + ItemStack itemStack = vaultBlockEntity.getSharedData().getDisplayItem(); if (!itemStack.isEmpty()) { - this.random.setSeed(ItemEntityRenderer.getSeedForItemStack(itemStack)); - VaultClientData vaultClientData = blockEntity.getClientData(); - renderItemInside( - partialTick, - level, - poseStack, - bufferSource, - packedLight, - itemStack, - this.itemRenderer, - vaultClientData.previousSpin(), - vaultClientData.currentSpin(), - this.random - ); + this.itemModelResolver.updateForTopItem(this.renderState.item, itemStack, ItemDisplayContext.GROUND, false, level, null, 0); + this.renderState.count = ItemClusterRenderState.getRenderedAmount(itemStack.getCount()); + this.renderState.seed = ItemClusterRenderState.getSeedForItemStack(itemStack); + VaultClientData vaultClientData = vaultBlockEntity.getClientData(); + poseStack.pushPose(); + poseStack.translate(0.5F, 0.4F, 0.5F); + poseStack.mulPose(Axis.YP.rotationDegrees(Mth.rotLerp(f, vaultClientData.previousSpin(), vaultClientData.currentSpin()))); + ItemEntityRenderer.renderMultipleFromCount(poseStack, multiBufferSource, i, this.renderState, this.random); + poseStack.popPose(); } } } } - - public static void renderItemInside( - float partialTick, - Level level, - PoseStack poseStack, - MultiBufferSource buffer, - int packedLight, - ItemStack item, - ItemRenderer itemRenderer, - float previousSpin, - float currentSpin, - RandomSource random - ) { - poseStack.pushPose(); - poseStack.translate(0.5F, 0.4F, 0.5F); - poseStack.mulPose(Axis.YP.rotationDegrees(Mth.rotLerp(partialTick, previousSpin, currentSpin))); - ItemEntityRenderer.renderMultipleFromCount(itemRenderer, poseStack, buffer, packedLight, item, random, level); - poseStack.popPose(); - } } diff --git a/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java b/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java index bf4855bb..c6983820 100644 --- a/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java +++ b/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java @@ -47,6 +47,7 @@ import net.minecraft.util.profiling.Profiler; import net.minecraft.util.profiling.Zone; import net.minecraft.util.thread.ConsecutiveExecutor; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.status.ChunkStatus; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -265,7 +266,8 @@ public class SectionRenderDispatcher { } private boolean doesChunkExistAt(long pos) { - return SectionRenderDispatcher.this.level.getChunk(SectionPos.x(pos), SectionPos.z(pos), ChunkStatus.FULL, false) != null; + ChunkAccess chunkAccess = SectionRenderDispatcher.this.level.getChunk(SectionPos.x(pos), SectionPos.z(pos), ChunkStatus.FULL, false); + return chunkAccess != null && SectionRenderDispatcher.this.level.getLightEngine().lightOnInColumn(SectionPos.getZeroNode(pos)); } public boolean hasAllNeighbors() { @@ -275,7 +277,11 @@ public class SectionRenderDispatcher { : this.doesChunkExistAt(SectionPos.offset(this.sectionNode, Direction.WEST)) && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, Direction.NORTH)) && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, Direction.EAST)) - && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, Direction.SOUTH)); + && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, Direction.SOUTH)) + && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, -1, 0, -1)) + && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, -1, 0, 1)) + && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, 1, 0, -1)) + && this.doesChunkExistAt(SectionPos.offset(this.sectionNode, 1, 0, 1)); } public AABB getBoundingBox() { diff --git a/net/minecraft/client/renderer/entity/AbstractBoatRenderer.java b/net/minecraft/client/renderer/entity/AbstractBoatRenderer.java index 6dd44d53..737eb87d 100644 --- a/net/minecraft/client/renderer/entity/AbstractBoatRenderer.java +++ b/net/minecraft/client/renderer/entity/AbstractBoatRenderer.java @@ -21,28 +21,28 @@ public abstract class AbstractBoatRenderer extends EntityRenderer 0.0F) { - poseStack.mulPose(Axis.XP.rotationDegrees(Mth.sin(f) * f * renderState.damageTime / 10.0F * renderState.hurtDir)); + poseStack.mulPose(Axis.XP.rotationDegrees(Mth.sin(f) * f * boatRenderState.damageTime / 10.0F * boatRenderState.hurtDir)); } - if (!Mth.equal(renderState.bubbleAngle, 0.0F)) { - poseStack.mulPose(new Quaternionf().setAngleAxis(renderState.bubbleAngle * (float) (Math.PI / 180.0), 1.0F, 0.0F, 1.0F)); + if (!Mth.equal(boatRenderState.bubbleAngle, 0.0F)) { + poseStack.mulPose(new Quaternionf().setAngleAxis(boatRenderState.bubbleAngle * (float) (Math.PI / 180.0), 1.0F, 0.0F, 1.0F)); } poseStack.scale(-1.0F, -1.0F, 1.0F); poseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); EntityModel entityModel = this.model(); - entityModel.setupAnim(renderState); - VertexConsumer vertexConsumer = bufferSource.getBuffer(this.renderType()); - entityModel.renderToBuffer(poseStack, vertexConsumer, packedLight, OverlayTexture.NO_OVERLAY); - this.renderTypeAdditions(renderState, poseStack, bufferSource, packedLight); + entityModel.setupAnim(boatRenderState); + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(this.renderType()); + entityModel.renderToBuffer(poseStack, vertexConsumer, i, OverlayTexture.NO_OVERLAY); + this.renderTypeAdditions(boatRenderState, poseStack, multiBufferSource, i); poseStack.popPose(); - super.render(renderState, poseStack, bufferSource, packedLight); + super.render(boatRenderState, poseStack, multiBufferSource, i); } protected void renderTypeAdditions(BoatRenderState renderState, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { @@ -56,15 +56,15 @@ public abstract class AbstractBoatRenderer extends EntityRenderer extends return new HoglinRenderState(); } - public void extractRenderState(T entity, HoglinRenderState reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - reusedState.attackAnimationRemainingTicks = entity.getAttackAnimationRemainingTicks(); + public void extractRenderState(T mob, HoglinRenderState hoglinRenderState, float f) { + super.extractRenderState(mob, hoglinRenderState, f); + hoglinRenderState.attackAnimationRemainingTicks = mob.getAttackAnimationRemainingTicks(); } } diff --git a/net/minecraft/client/renderer/entity/AbstractHorseRenderer.java b/net/minecraft/client/renderer/entity/AbstractHorseRenderer.java index 84485420..c3b8953d 100644 --- a/net/minecraft/client/renderer/entity/AbstractHorseRenderer.java +++ b/net/minecraft/client/renderer/entity/AbstractHorseRenderer.java @@ -1,6 +1,5 @@ package net.minecraft.client.renderer.entity; -import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.EntityModel; @@ -10,16 +9,8 @@ import net.minecraft.world.entity.animal.horse.AbstractHorse; @Environment(EnvType.CLIENT) public abstract class AbstractHorseRenderer> extends AgeableMobRenderer { - private final float scale; - - public AbstractHorseRenderer(EntityRendererProvider.Context context, M entityModel, M entityModel2, float f) { - super(context, entityModel, entityModel2, 0.75F); - this.scale = f; - } - - protected void scale(S equineRenderState, PoseStack poseStack) { - poseStack.scale(this.scale, this.scale, this.scale); - super.scale(equineRenderState, poseStack); + public AbstractHorseRenderer(EntityRendererProvider.Context context, M adultModel, M babyModel) { + super(context, adultModel, babyModel, 0.75F); } public void extractRenderState(T abstractHorse, S equineRenderState, float f) { diff --git a/net/minecraft/client/renderer/entity/AbstractMinecartRenderer.java b/net/minecraft/client/renderer/entity/AbstractMinecartRenderer.java index 177b926d..975930f7 100644 --- a/net/minecraft/client/renderer/entity/AbstractMinecartRenderer.java +++ b/net/minecraft/client/renderer/entity/AbstractMinecartRenderer.java @@ -35,40 +35,40 @@ public abstract class AbstractMinecartRenderer> 16 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; float g = (((float)(l >> 20 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; float h = (((float)(l >> 24 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; poseStack.translate(f, g, h); - if (renderState.isNewRender) { - newRender(renderState, poseStack); + if (minecartRenderState.isNewRender) { + newRender(minecartRenderState, poseStack); } else { - oldRender(renderState, poseStack); + oldRender(minecartRenderState, poseStack); } - float i = renderState.hurtTime; - if (i > 0.0F) { - poseStack.mulPose(Axis.XP.rotationDegrees(Mth.sin(i) * i * renderState.damageTime / 10.0F * renderState.hurtDir)); + float j = minecartRenderState.hurtTime; + if (j > 0.0F) { + poseStack.mulPose(Axis.XP.rotationDegrees(Mth.sin(j) * j * minecartRenderState.damageTime / 10.0F * minecartRenderState.hurtDir)); } - BlockState blockState = renderState.displayBlockState; + BlockState blockState = minecartRenderState.displayBlockState; if (blockState.getRenderShape() != RenderShape.INVISIBLE) { poseStack.pushPose(); - float j = 0.75F; + float k = 0.75F; poseStack.scale(0.75F, 0.75F, 0.75F); - poseStack.translate(-0.5F, (renderState.displayOffset - 8) / 16.0F, 0.5F); + poseStack.translate(-0.5F, (minecartRenderState.displayOffset - 8) / 16.0F, 0.5F); poseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); - this.renderMinecartContents(renderState, blockState, poseStack, bufferSource, packedLight); + this.renderMinecartContents(minecartRenderState, blockState, poseStack, multiBufferSource, i); poseStack.popPose(); } poseStack.scale(-1.0F, -1.0F, 1.0F); - this.model.setupAnim(renderState); - VertexConsumer vertexConsumer = bufferSource.getBuffer(this.model.renderType(MINECART_LOCATION)); - this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, OverlayTexture.NO_OVERLAY); + this.model.setupAnim(minecartRenderState); + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(this.model.renderType(MINECART_LOCATION)); + this.model.renderToBuffer(poseStack, vertexConsumer, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } @@ -101,23 +101,23 @@ public abstract class AbstractMinecartRenderer void newExtractState( @@ -161,15 +161,19 @@ public abstract class AbstractMinecartRenderer extends HumanoidMobRenderer> { @@ -27,13 +30,20 @@ public abstract class AbstractSkeletonRenderer(this, innerModel, outerModel, innerModelBaby, outerModelBaby, context.getEquipmentRenderer())); } - public ResourceLocation getTextureLocation(S renderState) { + public ResourceLocation getTextureLocation(S zombieRenderState) { return ZOMBIE_LOCATION; } - public void extractRenderState(T entity, S reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - reusedState.isAggressive = entity.isAggressive(); - reusedState.isConverting = entity.isUnderWaterConverting(); + public void extractRenderState(T zombie, S zombieRenderState, float f) { + super.extractRenderState(zombie, zombieRenderState, f); + zombieRenderState.isAggressive = zombie.isAggressive(); + zombieRenderState.isConverting = zombie.isUnderWaterConverting(); } - protected boolean isShaking(S renderState) { - return super.isShaking(renderState) || renderState.isConverting; + protected boolean isShaking(S zombieRenderState) { + return super.isShaking(zombieRenderState) || zombieRenderState.isConverting; } } diff --git a/net/minecraft/client/renderer/entity/AgeableMobRenderer.java b/net/minecraft/client/renderer/entity/AgeableMobRenderer.java index 062f9491..743262af 100644 --- a/net/minecraft/client/renderer/entity/AgeableMobRenderer.java +++ b/net/minecraft/client/renderer/entity/AgeableMobRenderer.java @@ -21,8 +21,8 @@ public abstract class AgeableMobRenderer(this, context.getItemRenderer())); + this.addLayer(new ItemInHandLayer<>(this)); } public ResourceLocation getTextureLocation(AllayRenderState allayRenderState) { @@ -29,6 +30,7 @@ public class AllayRenderer extends MobRenderer(this, context.getItemRenderer())); + this.addLayer(new ItemInHandLayer<>(this)); this.addLayer(new WingsLayer<>(this, context.getModelSet(), context.getEquipmentRenderer())); - this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), context.getItemRenderer())); + this.addLayer(new CustomHeadLayer<>(this, context.getModelSet())); } - public ResourceLocation getTextureLocation(ArmorStandRenderState renderState) { + public ResourceLocation getTextureLocation(ArmorStandRenderState armorStandRenderState) { return DEFAULT_SKIN_LOCATION; } @@ -54,49 +54,49 @@ public class ArmorStandRenderer extends LivingEntityRenderer { - private static final Map TEXTURE_BY_TYPE = Util.make(Maps.newHashMap(), hashMap -> { - for (Axolotl.Variant variant : Axolotl.Variant.values()) { + private static final Map TEXTURE_BY_TYPE = Util.make(Maps.newHashMap(), hashMap -> { + for (Variant variant : Variant.values()) { hashMap.put(variant, ResourceLocation.withDefaultNamespace(String.format(Locale.ROOT, "textures/entity/axolotl/axolotl_%s.png", variant.getName()))); } }); diff --git a/net/minecraft/client/renderer/entity/BoatRenderer.java b/net/minecraft/client/renderer/entity/BoatRenderer.java index e5dee213..09d87415 100644 --- a/net/minecraft/client/renderer/entity/BoatRenderer.java +++ b/net/minecraft/client/renderer/entity/BoatRenderer.java @@ -7,6 +7,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.model.BoatModel; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.Model; +import net.minecraft.client.model.Model.Simple; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; @@ -24,7 +25,7 @@ public class BoatRenderer extends AbstractBoatRenderer { public BoatRenderer(EntityRendererProvider.Context context, ModelLayerLocation modelLayer) { super(context); this.texture = modelLayer.model().withPath((UnaryOperator)(string -> "textures/entity/" + string + ".png")); - this.waterPatchModel = new Model.Simple(context.bakeLayer(ModelLayers.BOAT_WATER_PATCH), resourceLocation -> RenderType.waterMask()); + this.waterPatchModel = new Simple(context.bakeLayer(ModelLayers.BOAT_WATER_PATCH), resourceLocation -> RenderType.waterMask()); this.model = new BoatModel(context.bakeLayer(modelLayer)); } diff --git a/net/minecraft/client/renderer/entity/BreezeRenderer.java b/net/minecraft/client/renderer/entity/BreezeRenderer.java index 2f3cef2c..a09ac26f 100644 --- a/net/minecraft/client/renderer/entity/BreezeRenderer.java +++ b/net/minecraft/client/renderer/entity/BreezeRenderer.java @@ -23,13 +23,13 @@ public class BreezeRenderer extends MobRenderer extends MobRenderer(this, EYES_TEXTURE_LOCATION, (creakingRenderState, f) -> 1.0F, CreakingModel::getHeadModelParts, RenderType::eyes) + new LivingEntityEmissiveLayer<>(this, EYES_TEXTURE_LOCATION, (creakingRenderState, f) -> 1.0F, CreakingModel::getHeadModelParts, RenderType::eyes, true) ); } @@ -34,7 +34,15 @@ public class CreakingRenderer extends MobRenderer { - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; protected ItemDisplayRenderer(EntityRendererProvider.Context context) { super(context); - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); } public ItemDisplayEntityRenderState createRenderState() { @@ -165,22 +171,16 @@ public abstract class DisplayRenderer 0.0F; - case RIGHT -> l - cachedLine.width(); - case CENTER -> l / 2.0F - cachedLine.width() / 2.0F; + case RIGHT -> m - cachedLine.width(); + case CENTER -> m / 2.0F - cachedLine.width() / 2.0F; default -> throw new MatchException(null, null); }; this.font .drawInBatch( cachedLine.contents(), + h, g, - f, c << 24 | 16777215, bl3, matrix4f, - bufferSource, + multiBufferSource, bl ? Font.DisplayMode.SEE_THROUGH : Font.DisplayMode.POLYGON_OFFSET, 0, - packedLight + i ); - f += k; + g += l; } } } diff --git a/net/minecraft/client/renderer/entity/DolphinRenderer.java b/net/minecraft/client/renderer/entity/DolphinRenderer.java index 13c803d6..24faa043 100644 --- a/net/minecraft/client/renderer/entity/DolphinRenderer.java +++ b/net/minecraft/client/renderer/entity/DolphinRenderer.java @@ -6,6 +6,7 @@ import net.minecraft.client.model.DolphinModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.entity.layers.DolphinCarryingItemLayer; import net.minecraft.client.renderer.entity.state.DolphinRenderState; +import net.minecraft.client.renderer.entity.state.HoldingEntityRenderState; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.animal.Dolphin; @@ -15,7 +16,7 @@ public class DolphinRenderer extends AgeableMobRenderer 1.0E-7; } } diff --git a/net/minecraft/client/renderer/entity/DonkeyRenderer.java b/net/minecraft/client/renderer/entity/DonkeyRenderer.java index f99e1123..896b29e6 100644 --- a/net/minecraft/client/renderer/entity/DonkeyRenderer.java +++ b/net/minecraft/client/renderer/entity/DonkeyRenderer.java @@ -14,12 +14,12 @@ public class DonkeyRenderer extends AbstractHors public static final ResourceLocation MULE_TEXTURE = ResourceLocation.withDefaultNamespace("textures/entity/horse/mule.png"); private final ResourceLocation texture; - public DonkeyRenderer(EntityRendererProvider.Context context, float scale, ModelLayerLocation adultModelLayer, ModelLayerLocation babyModelLayer, boolean mule) { - super(context, new DonkeyModel(context.bakeLayer(adultModelLayer)), new DonkeyModel(context.bakeLayer(babyModelLayer)), scale); - this.texture = mule ? MULE_TEXTURE : DONKEY_TEXTURE; + public DonkeyRenderer(EntityRendererProvider.Context context, ModelLayerLocation adultModel, ModelLayerLocation babyModel, boolean isMule) { + super(context, new DonkeyModel(context.bakeLayer(adultModel)), new DonkeyModel(context.bakeLayer(babyModel))); + this.texture = isMule ? MULE_TEXTURE : DONKEY_TEXTURE; } - public ResourceLocation getTextureLocation(DonkeyRenderState renderState) { + public ResourceLocation getTextureLocation(DonkeyRenderState donkeyRenderState) { return this.texture; } @@ -27,8 +27,8 @@ public class DonkeyRenderer extends AbstractHors return new DonkeyRenderState(); } - public void extractRenderState(T entity, DonkeyRenderState reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - reusedState.hasChest = entity.hasChest(); + public void extractRenderState(T abstractChestedHorse, DonkeyRenderState donkeyRenderState, float f) { + super.extractRenderState(abstractChestedHorse, donkeyRenderState, f); + donkeyRenderState.hasChest = abstractChestedHorse.hasChest(); } } diff --git a/net/minecraft/client/renderer/entity/DragonFireballRenderer.java b/net/minecraft/client/renderer/entity/DragonFireballRenderer.java index 0e7cd972..61a6bafd 100644 --- a/net/minecraft/client/renderer/entity/DragonFireballRenderer.java +++ b/net/minecraft/client/renderer/entity/DragonFireballRenderer.java @@ -2,6 +2,7 @@ package net.minecraft.client.renderer.entity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.MultiBufferSource; @@ -30,7 +31,7 @@ public class DragonFireballRenderer extends EntityRenderer { @@ -34,7 +38,7 @@ public class DrownedRenderer extends AbstractZombieRenderer 0.0F) { - float h = renderState.deathTime / 200.0F; - int i = ARGB.color(Mth.floor(h * 255.0F), -1); - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.dragonExplosionAlpha(DRAGON_EXPLODING_LOCATION)); - this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, OverlayTexture.NO_OVERLAY, i); - VertexConsumer vertexConsumer2 = bufferSource.getBuffer(DECAL); - this.model.renderToBuffer(poseStack, vertexConsumer2, packedLight, OverlayTexture.pack(0.0F, renderState.hasRedOverlay)); + this.model.setupAnim(enderDragonRenderState); + if (enderDragonRenderState.deathTime > 0.0F) { + float h = enderDragonRenderState.deathTime / 200.0F; + int j = ARGB.color(Mth.floor(h * 255.0F), -1); + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.dragonExplosionAlpha(DRAGON_EXPLODING_LOCATION)); + this.model.renderToBuffer(poseStack, vertexConsumer, i, OverlayTexture.NO_OVERLAY, j); + VertexConsumer vertexConsumer2 = multiBufferSource.getBuffer(DECAL); + this.model.renderToBuffer(poseStack, vertexConsumer2, i, OverlayTexture.pack(0.0F, enderDragonRenderState.hasRedOverlay)); } else { - VertexConsumer vertexConsumer3 = bufferSource.getBuffer(RENDER_TYPE); - this.model.renderToBuffer(poseStack, vertexConsumer3, packedLight, OverlayTexture.pack(0.0F, renderState.hasRedOverlay)); + VertexConsumer vertexConsumer3 = multiBufferSource.getBuffer(RENDER_TYPE); + this.model.renderToBuffer(poseStack, vertexConsumer3, i, OverlayTexture.pack(0.0F, enderDragonRenderState.hasRedOverlay)); } - VertexConsumer vertexConsumer3 = bufferSource.getBuffer(EYES); - this.model.renderToBuffer(poseStack, vertexConsumer3, packedLight, OverlayTexture.NO_OVERLAY); - if (renderState.deathTime > 0.0F) { - float j = renderState.deathTime / 200.0F; + VertexConsumer vertexConsumer3 = multiBufferSource.getBuffer(EYES); + this.model.renderToBuffer(poseStack, vertexConsumer3, i, OverlayTexture.NO_OVERLAY); + if (enderDragonRenderState.deathTime > 0.0F) { + float k = enderDragonRenderState.deathTime / 200.0F; poseStack.pushPose(); poseStack.translate(0.0F, -1.0F, -2.0F); - renderRays(poseStack, j, bufferSource.getBuffer(RenderType.dragonRays())); - renderRays(poseStack, j, bufferSource.getBuffer(RenderType.dragonRaysDepth())); + renderRays(poseStack, k, multiBufferSource.getBuffer(RenderType.dragonRays())); + renderRays(poseStack, k, multiBufferSource.getBuffer(RenderType.dragonRaysDepth())); poseStack.popPose(); } poseStack.popPose(); - if (renderState.beamOffset != null) { + if (enderDragonRenderState.beamOffset != null) { renderCrystalBeams( - (float)renderState.beamOffset.x, - (float)renderState.beamOffset.y, - (float)renderState.beamOffset.z, - renderState.ageInTicks, + (float)enderDragonRenderState.beamOffset.x, + (float)enderDragonRenderState.beamOffset.y, + (float)enderDragonRenderState.beamOffset.z, + enderDragonRenderState.ageInTicks, poseStack, - bufferSource, - packedLight + multiBufferSource, + i ); } - super.render(renderState, poseStack, bufferSource, packedLight); + super.render(enderDragonRenderState, poseStack, multiBufferSource, i); } private static void renderRays(PoseStack poseStack, float dragonDeathCompletion, VertexConsumer buffer) { @@ -122,7 +123,7 @@ public class EnderDragonRenderer extends EntityRenderer 0 ? entity.dragonDeathTime + partialTick : 0.0F; - reusedState.hasRedOverlay = entity.hurtTime > 0; - EndCrystal endCrystal = entity.nearestCrystal; + public void extractRenderState(EnderDragon enderDragon, EnderDragonRenderState enderDragonRenderState, float f) { + super.extractRenderState(enderDragon, enderDragonRenderState, f); + enderDragonRenderState.flapTime = Mth.lerp(f, enderDragon.oFlapTime, enderDragon.flapTime); + enderDragonRenderState.deathTime = enderDragon.dragonDeathTime > 0 ? enderDragon.dragonDeathTime + f : 0.0F; + enderDragonRenderState.hasRedOverlay = enderDragon.hurtTime > 0; + EndCrystal endCrystal = enderDragon.nearestCrystal; if (endCrystal != null) { - Vec3 vec3 = endCrystal.getPosition(partialTick).add(0.0, EndCrystalRenderer.getY(endCrystal.time + partialTick), 0.0); - reusedState.beamOffset = vec3.subtract(entity.getPosition(partialTick)); + Vec3 vec3 = endCrystal.getPosition(f).add(0.0, EndCrystalRenderer.getY(endCrystal.time + f), 0.0); + enderDragonRenderState.beamOffset = vec3.subtract(enderDragon.getPosition(f)); } else { - reusedState.beamOffset = null; + enderDragonRenderState.beamOffset = null; } - DragonPhaseInstance dragonPhaseInstance = entity.getPhaseManager().getCurrentPhase(); - reusedState.isLandingOrTakingOff = dragonPhaseInstance == EnderDragonPhase.LANDING || dragonPhaseInstance == EnderDragonPhase.TAKEOFF; - reusedState.isSitting = dragonPhaseInstance.isSitting(); - BlockPos blockPos = entity.level().getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EndPodiumFeature.getLocation(entity.getFightOrigin())); - reusedState.distanceToEgg = blockPos.distToCenterSqr(entity.position()); - reusedState.partialTicks = entity.isDeadOrDying() ? 0.0F : partialTick; - reusedState.flightHistory.copyFrom(entity.flightHistory); + DragonPhaseInstance dragonPhaseInstance = enderDragon.getPhaseManager().getCurrentPhase(); + enderDragonRenderState.isLandingOrTakingOff = dragonPhaseInstance == EnderDragonPhase.LANDING || dragonPhaseInstance == EnderDragonPhase.TAKEOFF; + enderDragonRenderState.isSitting = dragonPhaseInstance.isSitting(); + BlockPos blockPos = enderDragon.level().getHeightmapPos(Types.MOTION_BLOCKING_NO_LEAVES, EndPodiumFeature.getLocation(enderDragon.getFightOrigin())); + enderDragonRenderState.distanceToEgg = blockPos.distToCenterSqr(enderDragon.position()); + enderDragonRenderState.partialTicks = enderDragon.isDeadOrDying() ? 0.0F : f; + enderDragonRenderState.flightHistory.copyFrom(enderDragon.flightHistory); } - protected boolean affectedByCulling(EnderDragon display) { + protected boolean affectedByCulling(EnderDragon enderDragon) { return false; } } diff --git a/net/minecraft/client/renderer/entity/EndermanRenderer.java b/net/minecraft/client/renderer/entity/EndermanRenderer.java index b59a8dfd..aaab5c20 100644 --- a/net/minecraft/client/renderer/entity/EndermanRenderer.java +++ b/net/minecraft/client/renderer/entity/EndermanRenderer.java @@ -43,7 +43,7 @@ public class EndermanRenderer extends MobRenderer entityModels; + private final EquipmentAssetManager equipmentAssets; private boolean shouldRenderShadow = true; private boolean renderHitBoxes; @@ -91,23 +94,24 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { public EntityRenderDispatcher( Minecraft minecraft, TextureManager textureManager, + ItemModelResolver itemModelResolver, ItemRenderer itemRenderer, MapRenderer mapRenderer, BlockRenderDispatcher blockRenderDispatcher, Font font, Options options, - EntityModelSet entityModels, - EquipmentModelSet equipmentModels + Supplier entityModels, + EquipmentAssetManager equipmentModels ) { this.textureManager = textureManager; - this.itemRenderer = itemRenderer; + this.itemModelResolver = itemModelResolver; this.mapRenderer = mapRenderer; - this.itemInHandRenderer = new ItemInHandRenderer(minecraft, this, itemRenderer); + this.itemInHandRenderer = new ItemInHandRenderer(minecraft, this, itemRenderer, itemModelResolver); this.blockRenderDispatcher = blockRenderDispatcher; this.font = font; this.options = options; this.entityModels = entityModels; - this.equipmentModels = equipmentModels; + this.equipmentAssets = equipmentModels; } public EntityRenderer getRenderer(T entity) { @@ -187,7 +191,7 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { float g = renderer.getShadowRadius(entityRenderState); if (g > 0.0F) { double h = entityRenderState.distanceToCameraSq; - float i = (float)((1.0 - h / 256.0) * renderer.shadowStrength); + float i = (float)((1.0 - h / 256.0) * renderer.getShadowStrength(entityRenderState)); if (i > 0.0F) { renderShadow(poseStack, bufferSource, entityRenderState, i, partialTick, this.level, Math.min(g, 32.0F)); } @@ -302,7 +306,7 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { int l = 0; VertexConsumer vertexConsumer = bufferSource.getBuffer(Sheets.cutoutBlockSheet()); - for (PoseStack.Pose pose = poseStack.last(); i > 0.0F; l++) { + for (Pose pose = poseStack.last(); i > 0.0F; l++) { TextureAtlasSprite textureAtlasSprite3 = l % 2 == 0 ? textureAtlasSprite : textureAtlasSprite2; float m = textureAtlasSprite3.getU0(); float n = textureAtlasSprite3.getV0(); @@ -327,7 +331,7 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { poseStack.popPose(); } - private static void fireVertex(PoseStack.Pose matrixEntry, VertexConsumer buffer, float x, float y, float z, float texU, float texV) { + private static void fireVertex(Pose matrixEntry, VertexConsumer buffer, float x, float y, float z, float texU, float texV) { buffer.addVertex(matrixEntry, x, y, z).setColor(-1).setUv(texU, texV).setUv1(0, 10).setLight(240).setNormal(matrixEntry, 0.0F, 1.0F, 0.0F); } @@ -341,7 +345,7 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { int l = Mth.floor(renderState.y); int m = Mth.floor(renderState.z - size); int n = Mth.floor(renderState.z + size); - PoseStack.Pose pose = poseStack.last(); + Pose pose = poseStack.last(); VertexConsumer vertexConsumer = bufferSource.getBuffer(SHADOW_RENDER_TYPE); BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(); @@ -360,7 +364,7 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { } private static void renderBlockShadow( - PoseStack.Pose pose, VertexConsumer buffer, ChunkAccess chunk, LevelReader level, BlockPos pos, double x, double y, double z, float size, float weight + Pose pose, VertexConsumer buffer, ChunkAccess chunk, LevelReader level, BlockPos pos, double x, double y, double z, float size, float weight ) { BlockPos blockPos = pos.below(); BlockState blockState = chunk.getBlockState(blockPos); @@ -401,7 +405,7 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { } } - private static void shadowVertex(PoseStack.Pose pose, VertexConsumer consumer, int color, float offsetX, float offsetY, float offsetZ, float u, float v) { + private static void shadowVertex(Pose pose, VertexConsumer consumer, int color, float offsetX, float offsetY, float offsetZ, float u, float v) { Vector3f vector3f = pose.pose().transformPosition(offsetX, offsetY, offsetZ, new Vector3f()); consumer.addVertex(vector3f.x(), vector3f.y(), vector3f.z(), color, u, v, OverlayTexture.NO_OVERLAY, 15728880, 0.0F, 1.0F, 0.0F); } @@ -435,7 +439,14 @@ public class EntityRenderDispatcher implements ResourceManagerReloadListener { @Override public void onResourceManagerReload(ResourceManager resourceManager) { EntityRendererProvider.Context context = new EntityRendererProvider.Context( - this, this.itemRenderer, this.mapRenderer, this.blockRenderDispatcher, resourceManager, this.entityModels, this.equipmentModels, this.font + this, + this.itemModelResolver, + this.mapRenderer, + this.blockRenderDispatcher, + resourceManager, + (EntityModelSet)this.entityModels.get(), + this.equipmentAssets, + this.font ); this.renderers = EntityRenderers.createEntityRenderers(context); this.playerRenderers = EntityRenderers.createPlayerRenderers(context); diff --git a/net/minecraft/client/renderer/entity/EntityRenderer.java b/net/minecraft/client/renderer/entity/EntityRenderer.java index a5997ed4..0c4c06b9 100644 --- a/net/minecraft/client/renderer/entity/EntityRenderer.java +++ b/net/minecraft/client/renderer/entity/EntityRenderer.java @@ -244,6 +244,10 @@ public abstract class EntityRenderer { @Environment(EnvType.CLIENT) public static class Context { private final EntityRenderDispatcher entityRenderDispatcher; - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; private final MapRenderer mapRenderer; private final BlockRenderDispatcher blockRenderDispatcher; private final ResourceManager resourceManager; private final EntityModelSet modelSet; - private final EquipmentModelSet equipmentModels; + private final EquipmentAssetManager equipmentAssets; private final Font font; private final EquipmentLayerRenderer equipmentRenderer; public Context( EntityRenderDispatcher entityRenderDispatcher, - ItemRenderer itemRenderer, + ItemModelResolver itemModelResolver, MapRenderer mapRenderer, BlockRenderDispatcher blockRenderDispatcher, ResourceManager resourceManager, EntityModelSet modelSet, - EquipmentModelSet equipmentModels, + EquipmentAssetManager equipmentAssets, Font font ) { this.entityRenderDispatcher = entityRenderDispatcher; - this.itemRenderer = itemRenderer; + this.itemModelResolver = itemModelResolver; this.mapRenderer = mapRenderer; this.blockRenderDispatcher = blockRenderDispatcher; this.resourceManager = resourceManager; this.modelSet = modelSet; - this.equipmentModels = equipmentModels; + this.equipmentAssets = equipmentAssets; this.font = font; - this.equipmentRenderer = new EquipmentLayerRenderer(equipmentModels, this.getModelManager().getAtlas(Sheets.ARMOR_TRIMS_SHEET)); + this.equipmentRenderer = new EquipmentLayerRenderer(equipmentAssets, this.getModelManager().getAtlas(Sheets.ARMOR_TRIMS_SHEET)); } public EntityRenderDispatcher getEntityRenderDispatcher() { return this.entityRenderDispatcher; } - public ItemRenderer getItemRenderer() { - return this.itemRenderer; + public ItemModelResolver getItemModelResolver() { + return this.itemModelResolver; } public MapRenderer getMapRenderer() { @@ -77,8 +78,8 @@ public interface EntityRendererProvider { return this.modelSet; } - public EquipmentModelSet getEquipmentModels() { - return this.equipmentModels; + public EquipmentAssetManager getEquipmentAssets() { + return this.equipmentAssets; } public EquipmentLayerRenderer getEquipmentRenderer() { diff --git a/net/minecraft/client/renderer/entity/EntityRenderers.java b/net/minecraft/client/renderer/entity/EntityRenderers.java index cc87bd42..5ec91066 100644 --- a/net/minecraft/client/renderer/entity/EntityRenderers.java +++ b/net/minecraft/client/renderer/entity/EntityRenderers.java @@ -113,10 +113,9 @@ public class EntityRenderers { register(EntityType.COMMAND_BLOCK_MINECART, context -> new MinecartRenderer(context, ModelLayers.COMMAND_BLOCK_MINECART)); register(EntityType.COW, CowRenderer::new); register(EntityType.CREAKING, CreakingRenderer::new); - register(EntityType.CREAKING_TRANSIENT, CreakingRenderer::new); register(EntityType.CREEPER, CreeperRenderer::new); register(EntityType.DOLPHIN, DolphinRenderer::new); - register(EntityType.DONKEY, context -> new DonkeyRenderer<>(context, 0.87F, ModelLayers.DONKEY, ModelLayers.DONKEY_BABY, false)); + register(EntityType.DONKEY, context -> new DonkeyRenderer<>(context, ModelLayers.DONKEY, ModelLayers.DONKEY_BABY, false)); register(EntityType.DRAGON_FIREBALL, DragonFireballRenderer::new); register(EntityType.DROWNED, DrownedRenderer::new); register(EntityType.EGG, ThrownItemRenderer::new); @@ -168,7 +167,7 @@ public class EntityRenderers { register(EntityType.MARKER, NoopRenderer::new); register(EntityType.MINECART, context -> new MinecartRenderer(context, ModelLayers.MINECART)); register(EntityType.MOOSHROOM, MushroomCowRenderer::new); - register(EntityType.MULE, context -> new DonkeyRenderer<>(context, 0.92F, ModelLayers.MULE, ModelLayers.MULE_BABY, true)); + register(EntityType.MULE, context -> new DonkeyRenderer<>(context, ModelLayers.MULE, ModelLayers.MULE_BABY, true)); register(EntityType.OCELOT, OcelotRenderer::new); register(EntityType.PAINTING, PaintingRenderer::new); register(EntityType.PANDA, PandaRenderer::new); diff --git a/net/minecraft/client/renderer/entity/EvokerRenderer.java b/net/minecraft/client/renderer/entity/EvokerRenderer.java index 2bf306ba..11b3dfa4 100644 --- a/net/minecraft/client/renderer/entity/EvokerRenderer.java +++ b/net/minecraft/client/renderer/entity/EvokerRenderer.java @@ -17,7 +17,7 @@ public class EvokerRenderer extends IllagerRendere public EvokerRenderer(EntityRendererProvider.Context context) { super(context, new IllagerModel<>(context.bakeLayer(ModelLayers.EVOKER)), 0.5F); - this.addLayer(new ItemInHandLayer>(this, context.getItemRenderer()) { + this.addLayer(new ItemInHandLayer>(this) { public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, EvokerRenderState evokerRenderState, float f, float g) { if (evokerRenderState.isCastingSpell) { super.render(poseStack, multiBufferSource, i, evokerRenderState, f, g); diff --git a/net/minecraft/client/renderer/entity/ExperienceOrbRenderer.java b/net/minecraft/client/renderer/entity/ExperienceOrbRenderer.java index b25994d5..f7772c61 100644 --- a/net/minecraft/client/renderer/entity/ExperienceOrbRenderer.java +++ b/net/minecraft/client/renderer/entity/ExperienceOrbRenderer.java @@ -2,6 +2,7 @@ package net.minecraft.client.renderer.entity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.MultiBufferSource; @@ -28,36 +29,36 @@ public class ExperienceOrbRenderer extends EntityRenderer { - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; public FireworkEntityRenderer(EntityRendererProvider.Context context) { super(context); - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); } public void render(FireworkRocketRenderState fireworkRocketRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i) { @@ -29,17 +29,7 @@ public class FireworkEntityRenderer extends EntityRenderer(this, context.getItemRenderer())); + this.addLayer(new ItemInHandLayer<>(this)); this.addLayer( new HumanoidArmorLayer<>( this, @@ -28,7 +28,7 @@ public class GiantMobRenderer extends MobRenderer { } @Override - public ResourceLocation getTextureLocation(SquidRenderState renderState) { + public ResourceLocation getTextureLocation(SquidRenderState squidRenderState) { return GLOW_SQUID_LOCATION; } diff --git a/net/minecraft/client/renderer/entity/GuardianRenderer.java b/net/minecraft/client/renderer/entity/GuardianRenderer.java index df8616b5..9f9d33ad 100644 --- a/net/minecraft/client/renderer/entity/GuardianRenderer.java +++ b/net/minecraft/client/renderer/entity/GuardianRenderer.java @@ -2,6 +2,7 @@ package net.minecraft.client.renderer.entity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -61,14 +62,21 @@ public class GuardianRenderer extends MobRenderer> extends AgeableMobRenderer { @@ -26,17 +30,24 @@ public abstract class HumanoidMobRenderer(this, context.getModelSet(), transforms, context.getItemRenderer())); + this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), transforms)); this.addLayer(new WingsLayer<>(this, context.getModelSet(), context.getEquipmentRenderer())); - this.addLayer(new ItemInHandLayer<>(this, context.getItemRenderer())); + this.addLayer(new ItemInHandLayer<>(this)); } - public void extractRenderState(T entity, S reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - extractHumanoidRenderState(entity, reusedState, partialTick); + protected HumanoidModel.ArmPose getArmPose(T mob, HumanoidArm arm) { + return HumanoidModel.ArmPose.EMPTY; } - public static void extractHumanoidRenderState(LivingEntity entity, HumanoidRenderState reusedState, float partialTick) { + public void extractRenderState(T mob, S humanoidRenderState, float f) { + super.extractRenderState(mob, humanoidRenderState, f); + extractHumanoidRenderState(mob, humanoidRenderState, f, this.itemModelResolver); + humanoidRenderState.leftArmPose = this.getArmPose(mob, HumanoidArm.LEFT); + humanoidRenderState.rightArmPose = this.getArmPose(mob, HumanoidArm.RIGHT); + } + + public static void extractHumanoidRenderState(LivingEntity entity, HumanoidRenderState reusedState, float partialTick, ItemModelResolver itemModelResolver) { + ArmedEntityRenderState.extractArmedEntityRenderState(entity, reusedState, itemModelResolver); reusedState.isCrouching = entity.isCrouching(); reusedState.isFallFlying = entity.isFallFlying(); reusedState.isVisuallySwimming = entity.isVisuallySwimming(); @@ -62,9 +73,15 @@ public abstract class HumanoidMobRenderer extends MobRenderer> { protected IllagerRenderer(EntityRendererProvider.Context context, IllagerModel model, float shadowRadius) { super(context, model, shadowRadius); - this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), context.getItemRenderer())); + this.addLayer(new CustomHeadLayer<>(this, context.getModelSet())); } - public void extractRenderState(T entity, S reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - reusedState.isRiding = entity.isPassenger(); - reusedState.mainArm = entity.getMainArm(); - reusedState.armPose = entity.getArmPose(); - reusedState.maxCrossbowChargeDuration = reusedState.armPose == AbstractIllager.IllagerArmPose.CROSSBOW_CHARGE - ? CrossbowItem.getChargeDuration(entity.getUseItem(), entity) + public void extractRenderState(T abstractIllager, S illagerRenderState, float f) { + super.extractRenderState(abstractIllager, illagerRenderState, f); + ArmedEntityRenderState.extractArmedEntityRenderState(abstractIllager, illagerRenderState, this.itemModelResolver); + illagerRenderState.isRiding = abstractIllager.isPassenger(); + illagerRenderState.mainArm = abstractIllager.getMainArm(); + illagerRenderState.armPose = abstractIllager.getArmPose(); + illagerRenderState.maxCrossbowChargeDuration = illagerRenderState.armPose == AbstractIllager.IllagerArmPose.CROSSBOW_CHARGE + ? CrossbowItem.getChargeDuration(abstractIllager.getUseItem(), abstractIllager) : 0; - reusedState.ticksUsingItem = entity.getTicksUsingItem(); - reusedState.attackAnim = entity.getAttackAnim(partialTick); - reusedState.isAggressive = entity.isAggressive(); + illagerRenderState.ticksUsingItem = abstractIllager.getTicksUsingItem(); + illagerRenderState.attackAnim = abstractIllager.getAttackAnim(f); + illagerRenderState.isAggressive = abstractIllager.isAggressive(); } } diff --git a/net/minecraft/client/renderer/entity/IllusionerRenderer.java b/net/minecraft/client/renderer/entity/IllusionerRenderer.java index 7010c73a..0bb3a6e7 100644 --- a/net/minecraft/client/renderer/entity/IllusionerRenderer.java +++ b/net/minecraft/client/renderer/entity/IllusionerRenderer.java @@ -21,7 +21,7 @@ public class IllusionerRenderer extends IllagerRenderer(context.bakeLayer(ModelLayers.ILLUSIONER)), 0.5F); - this.addLayer(new ItemInHandLayer>(this, context.getItemRenderer()) { + this.addLayer(new ItemInHandLayer>(this) { public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, IllusionerRenderState illusionerRenderState, float f, float g) { if (illusionerRenderState.isCastingSpell || illusionerRenderState.isAggressive) { super.render(poseStack, multiBufferSource, i, illusionerRenderState, f, g); diff --git a/net/minecraft/client/renderer/entity/ItemEntityRenderer.java b/net/minecraft/client/renderer/entity/ItemEntityRenderer.java index 08d5a18b..4ef032b8 100644 --- a/net/minecraft/client/renderer/entity/ItemEntityRenderer.java +++ b/net/minecraft/client/renderer/entity/ItemEntityRenderer.java @@ -1,21 +1,18 @@ package net.minecraft.client.renderer.entity; -import com.google.common.annotations.VisibleForTesting; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.state.ItemClusterRenderState; import net.minecraft.client.renderer.entity.state.ItemEntityRenderState; +import net.minecraft.client.renderer.item.ItemModelResolver; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; @Environment(EnvType.CLIENT) public class ItemEntityRenderer extends EntityRenderer { @@ -23,12 +20,12 @@ public class ItemEntityRenderer extends EntityRenderer 0) { - if (isGui3d) { + if (bl) { float k = (random.nextFloat() * 2.0F - 1.0F) * 0.15F; float l = (random.nextFloat() * 2.0F - 1.0F) * 0.15F; float n = (random.nextFloat() * 2.0F - 1.0F) * 0.15F; @@ -125,9 +88,9 @@ public class ItemEntityRenderer extends EntityRenderer extends EntityRenderer { public static final int GLOW_FRAME_BRIGHTNESS = 5; public static final int BRIGHT_MAP_LIGHT_ADJUSTMENT = 30; - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; private final MapRenderer mapRenderer; private final BlockRenderDispatcher blockRenderer; public ItemFrameRenderer(EntityRendererProvider.Context context) { super(context); - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); this.mapRenderer = context.getMapRenderer(); this.blockRenderer = context.getBlockRenderDispatcher(); } - protected int getBlockLightLevel(T entity, BlockPos pos) { - return entity.getType() == EntityType.GLOW_ITEM_FRAME ? Math.max(5, super.getBlockLightLevel(entity, pos)) : super.getBlockLightLevel(entity, pos); + protected int getBlockLightLevel(T itemFrame, BlockPos blockPos) { + return itemFrame.getType() == EntityType.GLOW_ITEM_FRAME + ? Math.max(5, super.getBlockLightLevel(itemFrame, blockPos)) + : super.getBlockLightLevel(itemFrame, blockPos); } - public void render(ItemFrameRenderState renderState, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { - super.render(renderState, poseStack, bufferSource, packedLight); + public void render(ItemFrameRenderState itemFrameRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i) { + super.render(itemFrameRenderState, poseStack, multiBufferSource, i); poseStack.pushPose(); - Direction direction = renderState.direction; - Vec3 vec3 = this.getRenderOffset(renderState); + Direction direction = itemFrameRenderState.direction; + Vec3 vec3 = this.getRenderOffset(itemFrameRenderState); poseStack.translate(-vec3.x(), -vec3.y(), -vec3.z()); double d = 0.46875; poseStack.translate(direction.getStepX() * 0.46875, direction.getStepY() * 0.46875, direction.getStepZ() * 0.46875); @@ -66,106 +68,97 @@ public class ItemFrameRenderer extends EntityRenderer quads, ItemStack itemStack, int combinedLight, int combinedOverlay) { - boolean bl = !itemStack.isEmpty(); - PoseStack.Pose pose = poseStack.last(); - - for (BakedQuad bakedQuad : quads) { - int i = -1; - if (bl && bakedQuad.isTinted()) { - i = this.itemColors.getColor(itemStack, bakedQuad.getTintIndex()); - } - - float f = ARGB.alpha(i) / 255.0F; - float g = ARGB.red(i) / 255.0F; - float h = ARGB.green(i) / 255.0F; - float j = ARGB.blue(i) / 255.0F; - buffer.putBulkData(pose, bakedQuad, g, h, j, f, combinedLight, combinedOverlay); - } + private static int getLayerColorSafe(int[] tintLayers, int index) { + return index >= tintLayers.length ? -1 : tintLayers[index]; } - public BakedModel getModel(ItemStack stack, @Nullable Level level, @Nullable LivingEntity entity, int seed) { - BakedModel bakedModel = this.itemModelShaper.getItemModel(stack); - return this.resolveModelOverride(bakedModel, stack, level, entity, seed); + private static void renderQuadList(PoseStack poseStack, VertexConsumer buffer, List quads, int[] tintLayers, int packedLight, int packedOverlay) { + Pose pose = poseStack.last(); + + for (BakedQuad bakedQuad : quads) { + float f; + float g; + float h; + float j; + if (bakedQuad.isTinted()) { + int i = getLayerColorSafe(tintLayers, bakedQuad.getTintIndex()); + f = ARGB.alpha(i) / 255.0F; + g = ARGB.red(i) / 255.0F; + h = ARGB.green(i) / 255.0F; + j = ARGB.blue(i) / 255.0F; + } else { + f = 1.0F; + g = 1.0F; + h = 1.0F; + j = 1.0F; + } + + buffer.putBulkData(pose, bakedQuad, g, h, j, f, packedLight, packedOverlay); + } } public void renderStatic( @@ -270,25 +162,7 @@ public class ItemRenderer implements ResourceManagerReloadListener { int combinedOverlay, int seed ) { - if (!itemStack.isEmpty()) { - BakedModel bakedModel = this.getModel(itemStack, level, entity, seed); - this.render(itemStack, diplayContext, leftHand, poseStack, bufferSource, combinedLight, combinedOverlay, bakedModel); - } - } - - @Override - public void onResourceManagerReload(ResourceManager resourceManager) { - this.itemModelShaper.invalidateCache(); - } - - @Nullable - public BakedModel resolveItemModel(ItemStack stack, LivingEntity entity, ItemDisplayContext displayContext) { - return stack.isEmpty() ? null : this.getModel(stack, entity.level(), entity, entity.getId() + displayContext.ordinal()); - } - - private BakedModel resolveModelOverride(BakedModel model, ItemStack stack, @Nullable Level level, @Nullable LivingEntity entity, int seed) { - ClientLevel clientLevel = level instanceof ClientLevel ? (ClientLevel)level : null; - BakedModel bakedModel = model.overrides().findOverride(stack, clientLevel, entity, seed); - return bakedModel == null ? model : bakedModel; + this.resolver.updateForTopItem(this.scratchItemStackRenderState, itemStack, diplayContext, leftHand, level, entity, seed); + this.scratchItemStackRenderState.render(poseStack, bufferSource, combinedLight, combinedOverlay); } } diff --git a/net/minecraft/client/renderer/entity/LightningBoltRenderer.java b/net/minecraft/client/renderer/entity/LightningBoltRenderer.java index c64ad021..78714822 100644 --- a/net/minecraft/client/renderer/entity/LightningBoltRenderer.java +++ b/net/minecraft/client/renderer/entity/LightningBoltRenderer.java @@ -17,69 +17,69 @@ public class LightningBoltRenderer extends EntityRenderer= 0; i--) { - fs[i] = f; - gs[i] = g; + for (int j = 7; j >= 0; j--) { + fs[j] = f; + gs[j] = g; f += randomSource.nextInt(11) - 5; g += randomSource.nextInt(11) - 5; } - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.lightning()); + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.lightning()); Matrix4f matrix4f = poseStack.last().pose(); - for (int j = 0; j < 4; j++) { - RandomSource randomSource2 = RandomSource.create(renderState.seed); + for (int k = 0; k < 4; k++) { + RandomSource randomSource2 = RandomSource.create(lightningBoltRenderState.seed); - for (int k = 0; k < 3; k++) { - int l = 7; - int m = 0; - if (k > 0) { - l = 7 - k; + for (int l = 0; l < 3; l++) { + int m = 7; + int n = 0; + if (l > 0) { + m = 7 - l; } - if (k > 0) { - m = l - 2; + if (l > 0) { + n = m - 2; } - float h = fs[l] - f; - float n = gs[l] - g; + float h = fs[m] - f; + float o = gs[m] - g; - for (int o = l; o >= m; o--) { - float p = h; - float q = n; - if (k == 0) { + for (int p = m; p >= n; p--) { + float q = h; + float r = o; + if (l == 0) { h += randomSource2.nextInt(11) - 5; - n += randomSource2.nextInt(11) - 5; + o += randomSource2.nextInt(11) - 5; } else { h += randomSource2.nextInt(31) - 15; - n += randomSource2.nextInt(31) - 15; + o += randomSource2.nextInt(31) - 15; } - float r = 0.5F; - float s = 0.45F; + float s = 0.5F; float t = 0.45F; - float u = 0.5F; - float v = 0.1F + j * 0.2F; - if (k == 0) { - v *= o * 0.1F + 1.0F; + float u = 0.45F; + float v = 0.5F; + float w = 0.1F + k * 0.2F; + if (l == 0) { + w *= p * 0.1F + 1.0F; } - float w = 0.1F + j * 0.2F; - if (k == 0) { - w *= (o - 1.0F) * 0.1F + 1.0F; + float x = 0.1F + k * 0.2F; + if (l == 0) { + x *= (p - 1.0F) * 0.1F + 1.0F; } - quad(matrix4f, vertexConsumer, h, n, o, p, q, 0.45F, 0.45F, 0.5F, v, w, false, false, true, false); - quad(matrix4f, vertexConsumer, h, n, o, p, q, 0.45F, 0.45F, 0.5F, v, w, true, false, true, true); - quad(matrix4f, vertexConsumer, h, n, o, p, q, 0.45F, 0.45F, 0.5F, v, w, true, true, false, true); - quad(matrix4f, vertexConsumer, h, n, o, p, q, 0.45F, 0.45F, 0.5F, v, w, false, true, false, false); + quad(matrix4f, vertexConsumer, h, o, p, q, r, 0.45F, 0.45F, 0.5F, w, x, false, false, true, false); + quad(matrix4f, vertexConsumer, h, o, p, q, r, 0.45F, 0.45F, 0.5F, w, x, true, false, true, true); + quad(matrix4f, vertexConsumer, h, o, p, q, r, 0.45F, 0.45F, 0.5F, w, x, true, true, false, true); + quad(matrix4f, vertexConsumer, h, o, p, q, r, 0.45F, 0.45F, 0.5F, w, x, false, true, false, false); } } } @@ -137,12 +137,12 @@ public class LightningBoltRenderer extends EntityRenderer { private static final float EYE_BED_OFFSET = 0.1F; protected M model; - protected final ItemRenderer itemRenderer; + protected final ItemModelResolver itemModelResolver; protected final List> layers = Lists.>newArrayList(); public LivingEntityRenderer(EntityRendererProvider.Context context, M model, float shadowRadius) { super(context); - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); this.model = model; this.shadowRadius = shadowRadius; } @@ -59,9 +63,9 @@ public abstract class LivingEntityRenderer renderLayer : this.layers) { - renderLayer.render(poseStack, bufferSource, packedLight, renderState, renderState.yRot, renderState.xRot); + renderLayer.render(poseStack, multiBufferSource, i, livingEntityRenderState, livingEntityRenderState.yRot, livingEntityRenderState.xRot); } } poseStack.popPose(); - super.render(renderState, poseStack, bufferSource, packedLight); + super.render(livingEntityRenderState, poseStack, multiBufferSource, i); } protected boolean shouldRenderLayers(S renderState) { @@ -199,19 +203,19 @@ public abstract class LivingEntityRenderer= 1024.0) { + if (d >= 1024.0) { return false; } } Minecraft minecraft = Minecraft.getInstance(); LocalPlayer localPlayer = minecraft.player; - boolean bl = !entity.isInvisibleTo(localPlayer); - if (entity != localPlayer) { - Team team = entity.getTeam(); + boolean bl = !livingEntity.isInvisibleTo(localPlayer); + if (livingEntity != localPlayer) { + Team team = livingEntity.getTeam(); Team team2 = localPlayer.getTeam(); if (team != null) { Visibility visibility = team.getNameTagVisibility(); @@ -230,7 +234,7 @@ public abstract class LivingEntityRenderer 0 || entity.deathTime > 0; - ItemStack itemStack = entity.getItemBySlot(EquipmentSlot.HEAD); - reusedState.headItem = itemStack.copy(); - reusedState.headItemModel = this.itemRenderer.resolveItemModel(itemStack, entity, ItemDisplayContext.HEAD); - reusedState.mainArm = entity.getMainArm(); - ItemStack itemStack2 = entity.getItemHeldByArm(HumanoidArm.RIGHT); - ItemStack itemStack3 = entity.getItemHeldByArm(HumanoidArm.LEFT); - reusedState.rightHandItem = itemStack2.copy(); - reusedState.leftHandItem = itemStack3.copy(); - reusedState.rightHandItemModel = this.itemRenderer.resolveItemModel(itemStack2, entity, ItemDisplayContext.THIRD_PERSON_RIGHT_HAND); - reusedState.leftHandItemModel = this.itemRenderer.resolveItemModel(itemStack3, entity, ItemDisplayContext.THIRD_PERSON_LEFT_HAND); - reusedState.deathTime = entity.deathTime > 0 ? entity.deathTime + partialTick : 0.0F; + livingEntityRenderState.isFullyFrozen = livingEntity.isFullyFrozen(); + livingEntityRenderState.isBaby = livingEntity.isBaby(); + livingEntityRenderState.isInWater = livingEntity.isInWater(); + livingEntityRenderState.isAutoSpinAttack = livingEntity.isAutoSpinAttack(); + livingEntityRenderState.hasRedOverlay = livingEntity.hurtTime > 0 || livingEntity.deathTime > 0; + ItemStack itemStack = livingEntity.getItemBySlot(EquipmentSlot.HEAD); + if (itemStack.getItem() instanceof BlockItem blockItem && blockItem.getBlock() instanceof AbstractSkullBlock abstractSkullBlock) { + livingEntityRenderState.wornHeadType = abstractSkullBlock.getType(); + livingEntityRenderState.wornHeadProfile = itemStack.get(DataComponents.PROFILE); + livingEntityRenderState.headItem.clear(); + } else { + livingEntityRenderState.wornHeadType = null; + livingEntityRenderState.wornHeadProfile = null; + if (!HumanoidArmorLayer.shouldRender(itemStack, EquipmentSlot.HEAD)) { + this.itemModelResolver.updateForLiving(livingEntityRenderState.headItem, itemStack, ItemDisplayContext.HEAD, false, livingEntity); + } else { + livingEntityRenderState.headItem.clear(); + } + } + + livingEntityRenderState.deathTime = livingEntity.deathTime > 0 ? livingEntity.deathTime + f : 0.0F; Minecraft minecraft = Minecraft.getInstance(); - reusedState.isInvisibleToPlayer = reusedState.isInvisible && entity.isInvisibleTo(minecraft.player); - reusedState.appearsGlowing = minecraft.shouldEntityAppearGlowing(entity); + livingEntityRenderState.isInvisibleToPlayer = livingEntityRenderState.isInvisible && livingEntity.isInvisibleTo(minecraft.player); + livingEntityRenderState.appearsGlowing = minecraft.shouldEntityAppearGlowing(livingEntity); } private static float solveBodyRot(LivingEntity entity, float yHeadRot, float partialTick) { diff --git a/net/minecraft/client/renderer/entity/LlamaRenderer.java b/net/minecraft/client/renderer/entity/LlamaRenderer.java index 5ce5d645..cab1031b 100644 --- a/net/minecraft/client/renderer/entity/LlamaRenderer.java +++ b/net/minecraft/client/renderer/entity/LlamaRenderer.java @@ -21,8 +21,8 @@ public class LlamaRenderer extends AgeableMobRenderer CREAMY; case WHITE -> WHITE; case BROWN -> BROWN; @@ -34,11 +34,11 @@ public class LlamaRenderer extends AgeableMobRenderer { +public class OminousItemSpawnerRenderer extends EntityRenderer { private static final float ROTATION_SPEED = 40.0F; private static final int TICKS_SCALING = 50; - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; + private final RandomSource random = RandomSource.create(); protected OminousItemSpawnerRenderer(EntityRendererProvider.Context context) { super(context); - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); } - public OminousItemSpawnerRenderState createRenderState() { - return new OminousItemSpawnerRenderState(); + public ItemClusterRenderState createRenderState() { + return new ItemClusterRenderState(); } - public void extractRenderState(OminousItemSpawner ominousItemSpawner, OminousItemSpawnerRenderState ominousItemSpawnerRenderState, float f) { - super.extractRenderState(ominousItemSpawner, ominousItemSpawnerRenderState, f); + public void extractRenderState(OminousItemSpawner ominousItemSpawner, ItemClusterRenderState itemClusterRenderState, float f) { + super.extractRenderState(ominousItemSpawner, itemClusterRenderState, f); ItemStack itemStack = ominousItemSpawner.getItem(); - ominousItemSpawnerRenderState.item = itemStack.copy(); - ominousItemSpawnerRenderState.itemModel = !itemStack.isEmpty() ? this.itemRenderer.getModel(itemStack, ominousItemSpawner.level(), null, 0) : null; + itemClusterRenderState.extractItemGroupRenderState(ominousItemSpawner, itemStack, this.itemModelResolver); } - public void render(OminousItemSpawnerRenderState ominousItemSpawnerRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i) { - BakedModel bakedModel = ominousItemSpawnerRenderState.itemModel; - if (bakedModel != null) { + public void render(ItemClusterRenderState itemClusterRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i) { + if (!itemClusterRenderState.item.isEmpty()) { poseStack.pushPose(); - if (ominousItemSpawnerRenderState.ageInTicks <= 50.0F) { - float f = Math.min(ominousItemSpawnerRenderState.ageInTicks, 50.0F) / 50.0F; + if (itemClusterRenderState.ageInTicks <= 50.0F) { + float f = Math.min(itemClusterRenderState.ageInTicks, 50.0F) / 50.0F; poseStack.scale(f, f, f); } - float f = Mth.wrapDegrees(ominousItemSpawnerRenderState.ageInTicks * 40.0F); + float f = Mth.wrapDegrees(itemClusterRenderState.ageInTicks * 40.0F); poseStack.mulPose(Axis.YP.rotationDegrees(f)); - ItemEntityRenderer.renderMultipleFromCount( - this.itemRenderer, poseStack, multiBufferSource, 15728880, ominousItemSpawnerRenderState.item, bakedModel, bakedModel.isGui3d(), RandomSource.create() - ); + ItemEntityRenderer.renderMultipleFromCount(poseStack, multiBufferSource, 15728880, itemClusterRenderState, this.random); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/PaintingRenderer.java b/net/minecraft/client/renderer/entity/PaintingRenderer.java index 5f11e124..01810a08 100644 --- a/net/minecraft/client/renderer/entity/PaintingRenderer.java +++ b/net/minecraft/client/renderer/entity/PaintingRenderer.java @@ -2,6 +2,7 @@ package net.minecraft.client.renderer.entity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -26,25 +27,25 @@ public class PaintingRenderer extends EntityRenderer { - private static final Map TEXTURES = Util.make(Maps.newEnumMap(Panda.Gene.class), enumMap -> { - enumMap.put(Panda.Gene.NORMAL, ResourceLocation.withDefaultNamespace("textures/entity/panda/panda.png")); - enumMap.put(Panda.Gene.LAZY, ResourceLocation.withDefaultNamespace("textures/entity/panda/lazy_panda.png")); - enumMap.put(Panda.Gene.WORRIED, ResourceLocation.withDefaultNamespace("textures/entity/panda/worried_panda.png")); - enumMap.put(Panda.Gene.PLAYFUL, ResourceLocation.withDefaultNamespace("textures/entity/panda/playful_panda.png")); - enumMap.put(Panda.Gene.BROWN, ResourceLocation.withDefaultNamespace("textures/entity/panda/brown_panda.png")); - enumMap.put(Panda.Gene.WEAK, ResourceLocation.withDefaultNamespace("textures/entity/panda/weak_panda.png")); - enumMap.put(Panda.Gene.AGGRESSIVE, ResourceLocation.withDefaultNamespace("textures/entity/panda/aggressive_panda.png")); + private static final Map TEXTURES = Util.make(Maps.newEnumMap(Gene.class), enumMap -> { + enumMap.put(Gene.NORMAL, ResourceLocation.withDefaultNamespace("textures/entity/panda/panda.png")); + enumMap.put(Gene.LAZY, ResourceLocation.withDefaultNamespace("textures/entity/panda/lazy_panda.png")); + enumMap.put(Gene.WORRIED, ResourceLocation.withDefaultNamespace("textures/entity/panda/worried_panda.png")); + enumMap.put(Gene.PLAYFUL, ResourceLocation.withDefaultNamespace("textures/entity/panda/playful_panda.png")); + enumMap.put(Gene.BROWN, ResourceLocation.withDefaultNamespace("textures/entity/panda/brown_panda.png")); + enumMap.put(Gene.WEAK, ResourceLocation.withDefaultNamespace("textures/entity/panda/weak_panda.png")); + enumMap.put(Gene.AGGRESSIVE, ResourceLocation.withDefaultNamespace("textures/entity/panda/aggressive_panda.png")); }); public PandaRenderer(EntityRendererProvider.Context context) { super(context, new PandaModel(context.bakeLayer(ModelLayers.PANDA)), new PandaModel(context.bakeLayer(ModelLayers.PANDA_BABY)), 0.9F); - this.addLayer(new PandaHoldsItemLayer(this, context.getItemRenderer())); + this.addLayer(new PandaHoldsItemLayer(this)); } - public ResourceLocation getTextureLocation(PandaRenderState renderState) { - return (ResourceLocation)TEXTURES.getOrDefault(renderState.variant, (ResourceLocation)TEXTURES.get(Panda.Gene.NORMAL)); + public ResourceLocation getTextureLocation(PandaRenderState pandaRenderState) { + return (ResourceLocation)TEXTURES.getOrDefault(pandaRenderState.variant, (ResourceLocation)TEXTURES.get(Gene.NORMAL)); } public PandaRenderState createRenderState() { return new PandaRenderState(); } - public void extractRenderState(Panda entity, PandaRenderState reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - reusedState.variant = entity.getVariant(); - reusedState.isUnhappy = entity.getUnhappyCounter() > 0; - reusedState.isSneezing = entity.isSneezing(); - reusedState.sneezeTime = entity.getSneezeCounter(); - reusedState.isEating = entity.isEating(); - reusedState.isScared = entity.isScared(); - reusedState.isSitting = entity.isSitting(); - reusedState.sitAmount = entity.getSitAmount(partialTick); - reusedState.lieOnBackAmount = entity.getLieOnBackAmount(partialTick); - reusedState.rollAmount = entity.isBaby() ? 0.0F : entity.getRollAmount(partialTick); - reusedState.rollTime = entity.rollCounter > 0 ? entity.rollCounter + partialTick : 0.0F; + public void extractRenderState(Panda panda, PandaRenderState pandaRenderState, float f) { + super.extractRenderState(panda, pandaRenderState, f); + HoldingEntityRenderState.extractHoldingEntityRenderState(panda, pandaRenderState, this.itemModelResolver); + pandaRenderState.variant = panda.getVariant(); + pandaRenderState.isUnhappy = panda.getUnhappyCounter() > 0; + pandaRenderState.isSneezing = panda.isSneezing(); + pandaRenderState.sneezeTime = panda.getSneezeCounter(); + pandaRenderState.isEating = panda.isEating(); + pandaRenderState.isScared = panda.isScared(); + pandaRenderState.isSitting = panda.isSitting(); + pandaRenderState.sitAmount = panda.getSitAmount(f); + pandaRenderState.lieOnBackAmount = panda.getLieOnBackAmount(f); + pandaRenderState.rollAmount = panda.isBaby() ? 0.0F : panda.getRollAmount(f); + pandaRenderState.rollTime = panda.rollCounter > 0 ? panda.rollCounter + f : 0.0F; } - protected void setupRotations(PandaRenderState renderState, PoseStack poseStack, float bodyRot, float scale) { - super.setupRotations(renderState, poseStack, bodyRot, scale); - if (renderState.rollTime > 0.0F) { - float f = Mth.frac(renderState.rollTime); - int i = Mth.floor(renderState.rollTime); + protected void setupRotations(PandaRenderState pandaRenderState, PoseStack poseStack, float f, float g) { + super.setupRotations(pandaRenderState, poseStack, f, g); + if (pandaRenderState.rollTime > 0.0F) { + float h = Mth.frac(pandaRenderState.rollTime); + int i = Mth.floor(pandaRenderState.rollTime); int j = i + 1; - float g = 7.0F; - float h = renderState.isBaby ? 0.3F : 0.8F; + float k = 7.0F; + float l = pandaRenderState.isBaby ? 0.3F : 0.8F; if (i < 8.0F) { - float k = 90.0F * i / 7.0F; - float l = 90.0F * j / 7.0F; - float m = this.getAngle(k, l, j, f, 8.0F); - poseStack.translate(0.0F, (h + 0.2F) * (m / 90.0F), 0.0F); - poseStack.mulPose(Axis.XP.rotationDegrees(-m)); + float m = 90.0F * i / 7.0F; + float n = 90.0F * j / 7.0F; + float o = this.getAngle(m, n, j, h, 8.0F); + poseStack.translate(0.0F, (l + 0.2F) * (o / 90.0F), 0.0F); + poseStack.mulPose(Axis.XP.rotationDegrees(-o)); } else if (i < 16.0F) { - float k = (i - 8.0F) / 7.0F; - float l = 90.0F + 90.0F * k; - float n = 90.0F + 90.0F * (j - 8.0F) / 7.0F; - float m = this.getAngle(l, n, j, f, 16.0F); - poseStack.translate(0.0F, h + 0.2F + (h - 0.2F) * (m - 90.0F) / 90.0F, 0.0F); - poseStack.mulPose(Axis.XP.rotationDegrees(-m)); + float m = (i - 8.0F) / 7.0F; + float n = 90.0F + 90.0F * m; + float p = 90.0F + 90.0F * (j - 8.0F) / 7.0F; + float o = this.getAngle(n, p, j, h, 16.0F); + poseStack.translate(0.0F, l + 0.2F + (l - 0.2F) * (o - 90.0F) / 90.0F, 0.0F); + poseStack.mulPose(Axis.XP.rotationDegrees(-o)); } else if (i < 24.0F) { - float k = (i - 16.0F) / 7.0F; - float l = 180.0F + 90.0F * k; - float n = 180.0F + 90.0F * (j - 16.0F) / 7.0F; - float m = this.getAngle(l, n, j, f, 24.0F); - poseStack.translate(0.0F, h + h * (270.0F - m) / 90.0F, 0.0F); - poseStack.mulPose(Axis.XP.rotationDegrees(-m)); + float m = (i - 16.0F) / 7.0F; + float n = 180.0F + 90.0F * m; + float p = 180.0F + 90.0F * (j - 16.0F) / 7.0F; + float o = this.getAngle(n, p, j, h, 24.0F); + poseStack.translate(0.0F, l + l * (270.0F - o) / 90.0F, 0.0F); + poseStack.mulPose(Axis.XP.rotationDegrees(-o)); } else if (i < 32) { - float k = (i - 24.0F) / 7.0F; - float l = 270.0F + 90.0F * k; - float n = 270.0F + 90.0F * (j - 24.0F) / 7.0F; - float m = this.getAngle(l, n, j, f, 32.0F); - poseStack.translate(0.0F, h * ((360.0F - m) / 90.0F), 0.0F); - poseStack.mulPose(Axis.XP.rotationDegrees(-m)); + float m = (i - 24.0F) / 7.0F; + float n = 270.0F + 90.0F * m; + float p = 270.0F + 90.0F * (j - 24.0F) / 7.0F; + float o = this.getAngle(n, p, j, h, 32.0F); + poseStack.translate(0.0F, l * ((360.0F - o) / 90.0F), 0.0F); + poseStack.mulPose(Axis.XP.rotationDegrees(-o)); } } - float f = renderState.sitAmount; - if (f > 0.0F) { - poseStack.translate(0.0F, 0.8F * f, 0.0F); - poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(f, renderState.xRot, renderState.xRot + 90.0F))); - poseStack.translate(0.0F, -1.0F * f, 0.0F); - if (renderState.isScared) { - float o = (float)(Math.cos(renderState.ageInTicks * 1.25F) * Math.PI * 0.05F); - poseStack.mulPose(Axis.YP.rotationDegrees(o)); - if (renderState.isBaby) { + float h = pandaRenderState.sitAmount; + if (h > 0.0F) { + poseStack.translate(0.0F, 0.8F * h, 0.0F); + poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(h, pandaRenderState.xRot, pandaRenderState.xRot + 90.0F))); + poseStack.translate(0.0F, -1.0F * h, 0.0F); + if (pandaRenderState.isScared) { + float q = (float)(Math.cos(pandaRenderState.ageInTicks * 1.25F) * Math.PI * 0.05F); + poseStack.mulPose(Axis.YP.rotationDegrees(q)); + if (pandaRenderState.isBaby) { poseStack.translate(0.0F, 0.8F, 0.55F); } } } - float o = renderState.lieOnBackAmount; - if (o > 0.0F) { - float p = renderState.isBaby ? 0.5F : 1.3F; - poseStack.translate(0.0F, p * o, 0.0F); - poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(o, renderState.xRot, renderState.xRot + 180.0F))); + float q = pandaRenderState.lieOnBackAmount; + if (q > 0.0F) { + float r = pandaRenderState.isBaby ? 0.5F : 1.3F; + poseStack.translate(0.0F, r * q, 0.0F); + poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(q, pandaRenderState.xRot, pandaRenderState.xRot + 180.0F))); } } diff --git a/net/minecraft/client/renderer/entity/ParrotRenderer.java b/net/minecraft/client/renderer/entity/ParrotRenderer.java index 70286326..3a4f8c32 100644 --- a/net/minecraft/client/renderer/entity/ParrotRenderer.java +++ b/net/minecraft/client/renderer/entity/ParrotRenderer.java @@ -21,21 +21,21 @@ public class ParrotRenderer extends MobRenderer(context.bakeLayer(ModelLayers.PILLAGER)), 0.5F); - this.addLayer(new ItemInHandLayer<>(this, context.getItemRenderer())); + this.addLayer(new ItemInHandLayer<>(this)); } public ResourceLocation getTextureLocation(IllagerRenderState illagerRenderState) { diff --git a/net/minecraft/client/renderer/entity/PufferfishRenderer.java b/net/minecraft/client/renderer/entity/PufferfishRenderer.java index 4a8dc70e..0b9f056a 100644 --- a/net/minecraft/client/renderer/entity/PufferfishRenderer.java +++ b/net/minecraft/client/renderer/entity/PufferfishRenderer.java @@ -36,13 +36,16 @@ public class PufferfishRenderer extends MobRenderer this.small; case 1 -> this.mid; default -> this.big; }; - this.shadowRadius = 0.1F + 0.1F * pufferfishRenderState.puffState; super.render(pufferfishRenderState, poseStack, multiBufferSource, i); } diff --git a/net/minecraft/client/renderer/entity/ShulkerBulletRenderer.java b/net/minecraft/client/renderer/entity/ShulkerBulletRenderer.java index f063d122..5a3ca11d 100644 --- a/net/minecraft/client/renderer/entity/ShulkerBulletRenderer.java +++ b/net/minecraft/client/renderer/entity/ShulkerBulletRenderer.java @@ -31,31 +31,31 @@ public class ShulkerBulletRenderer extends EntityRenderer { +public class SnowGolemRenderer extends MobRenderer { private static final ResourceLocation SNOW_GOLEM_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/snow_golem.png"); public SnowGolemRenderer(EntityRendererProvider.Context context) { super(context, new SnowGolemModel(context.bakeLayer(ModelLayers.SNOW_GOLEM)), 0.5F); - this.addLayer(new SnowGolemHeadLayer(this, context.getBlockRenderDispatcher(), context.getItemRenderer())); + this.addLayer(new SnowGolemHeadLayer(this, context.getBlockRenderDispatcher())); } - @Override - public ResourceLocation getTextureLocation(LivingEntityRenderState renderState) { + public ResourceLocation getTextureLocation(SnowGolemRenderState snowGolemRenderState) { return SNOW_GOLEM_LOCATION; } - public LivingEntityRenderState createRenderState() { - return new LivingEntityRenderState(); + public SnowGolemRenderState createRenderState() { + return new SnowGolemRenderState(); } - public void extractRenderState(SnowGolem snowGolem, LivingEntityRenderState livingEntityRenderState, float f) { - super.extractRenderState(snowGolem, livingEntityRenderState, f); - livingEntityRenderState.headItem = snowGolem.hasPumpkin() ? new ItemStack(Items.CARVED_PUMPKIN) : ItemStack.EMPTY; - livingEntityRenderState.headItemModel = this.itemRenderer.resolveItemModel(livingEntityRenderState.headItem, snowGolem, ItemDisplayContext.HEAD); + public void extractRenderState(SnowGolem snowGolem, SnowGolemRenderState snowGolemRenderState, float f) { + super.extractRenderState(snowGolem, snowGolemRenderState, f); + snowGolemRenderState.hasPumpkin = snowGolem.hasPumpkin(); } } diff --git a/net/minecraft/client/renderer/entity/SpiderRenderer.java b/net/minecraft/client/renderer/entity/SpiderRenderer.java index e04a73a2..71f9c8d5 100644 --- a/net/minecraft/client/renderer/entity/SpiderRenderer.java +++ b/net/minecraft/client/renderer/entity/SpiderRenderer.java @@ -37,7 +37,7 @@ public class SpiderRenderer extends MobRenderer extends AgeableMobRenderer extends AgeableMobRenderer { +public class StriderRenderer extends AgeableMobRenderer { private static final ResourceLocation STRIDER_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/strider/strider.png"); private static final ResourceLocation COLD_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/strider/strider_cold.png"); private static final float SHADOW_RADIUS = 0.5F; public StriderRenderer(EntityRendererProvider.Context context) { - super(context, new StriderModel(context.bakeLayer(ModelLayers.STRIDER)), 0.5F); + super(context, new StriderModel(context.bakeLayer(ModelLayers.STRIDER)), new StriderModel(context.bakeLayer(ModelLayers.STRIDER_BABY)), 0.5F); this.addLayer( new SaddleLayer<>( - this, new StriderModel(context.bakeLayer(ModelLayers.STRIDER_SADDLE)), ResourceLocation.withDefaultNamespace("textures/entity/strider/strider_saddle.png") + this, + new StriderModel(context.bakeLayer(ModelLayers.STRIDER_SADDLE)), + new StriderModel(context.bakeLayer(ModelLayers.STRIDER_BABY_SADDLE)), + ResourceLocation.withDefaultNamespace("textures/entity/strider/strider_saddle.png") ) ); } @@ -45,11 +47,6 @@ public class StriderRenderer extends MobRenderer extends EntityRenderer { - private final ItemRenderer itemRenderer; + private final ItemModelResolver itemModelResolver; private final float scale; private final boolean fullBright; public ThrownItemRenderer(EntityRendererProvider.Context context, float scale, boolean fullBright) { super(context); - this.itemRenderer = context.getItemRenderer(); + this.itemModelResolver = context.getItemModelResolver(); this.scale = scale; this.fullBright = fullBright; } @@ -34,27 +34,21 @@ public class ThrownItemRenderer extends EntityR return this.fullBright ? 15 : super.getBlockLightLevel(entity, pos); } - public void render(ThrownItemRenderState renderState, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { + public void render(ThrownItemRenderState thrownItemRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i) { poseStack.pushPose(); poseStack.scale(this.scale, this.scale, this.scale); poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation()); - if (renderState.itemModel != null) { - this.itemRenderer - .render(renderState.item, ItemDisplayContext.GROUND, false, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, renderState.itemModel); - } - + thrownItemRenderState.item.render(poseStack, multiBufferSource, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); - super.render(renderState, poseStack, bufferSource, packedLight); + super.render(thrownItemRenderState, poseStack, multiBufferSource, i); } public ThrownItemRenderState createRenderState() { return new ThrownItemRenderState(); } - public void extractRenderState(T entity, ThrownItemRenderState reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - ItemStack itemStack = entity.getItem(); - reusedState.itemModel = !itemStack.isEmpty() ? this.itemRenderer.getModel(itemStack, entity.level(), null, entity.getId()) : null; - reusedState.item = itemStack.copy(); + public void extractRenderState(T entity, ThrownItemRenderState thrownItemRenderState, float f) { + super.extractRenderState(entity, thrownItemRenderState, f); + this.itemModelResolver.updateForNonLiving(thrownItemRenderState.item, entity.getItem(), ItemDisplayContext.GROUND, entity); } } diff --git a/net/minecraft/client/renderer/entity/TntMinecartRenderer.java b/net/minecraft/client/renderer/entity/TntMinecartRenderer.java index 572e48dc..8eccf01f 100644 --- a/net/minecraft/client/renderer/entity/TntMinecartRenderer.java +++ b/net/minecraft/client/renderer/entity/TntMinecartRenderer.java @@ -22,9 +22,9 @@ public class TntMinecartRenderer extends AbstractMinecartRenderer -1.0F && f < 10.0F) { float g = 1.0F - f / 10.0F; g = Mth.clamp(g, 0.0F, 1.0F); @@ -34,7 +34,7 @@ public class TntMinecartRenderer extends AbstractMinecartRenderer -1.0F && (int)f / 5 % 2 == 0); + renderWhiteSolidBlock(this.blockRenderer, blockState, poseStack, multiBufferSource, i, f > -1.0F && (int)f / 5 % 2 == 0); } public static void renderWhiteSolidBlock( @@ -54,8 +54,8 @@ public class TntMinecartRenderer extends AbstractMinecartRenderer -1 ? entity.getFuse() - partialTick + 1.0F : -1.0F; + public void extractRenderState(MinecartTNT minecartTNT, MinecartTntRenderState minecartTntRenderState, float f) { + super.extractRenderState(minecartTNT, minecartTntRenderState, f); + minecartTntRenderState.fuseRemainingInTicks = minecartTNT.getFuse() > -1 ? minecartTNT.getFuse() - f + 1.0F : -1.0F; } } diff --git a/net/minecraft/client/renderer/entity/TropicalFishRenderer.java b/net/minecraft/client/renderer/entity/TropicalFishRenderer.java index 3e6ad429..20945167 100644 --- a/net/minecraft/client/renderer/entity/TropicalFishRenderer.java +++ b/net/minecraft/client/renderer/entity/TropicalFishRenderer.java @@ -34,8 +34,8 @@ public class TropicalFishRenderer extends MobRenderer MODEL_A_TEXTURE; case LARGE -> MODEL_B_TEXTURE; }; @@ -45,30 +45,30 @@ public class TropicalFishRenderer extends MobRenderer this.modelA; case LARGE -> this.modelB; }; - super.render(renderState, poseStack, bufferSource, packedLight); + super.render(tropicalFishRenderState, poseStack, multiBufferSource, i); } - protected int getModelTint(TropicalFishRenderState renderState) { - return renderState.baseColor; + protected int getModelTint(TropicalFishRenderState tropicalFishRenderState) { + return tropicalFishRenderState.baseColor; } - protected void setupRotations(TropicalFishRenderState renderState, PoseStack poseStack, float bodyRot, float scale) { - super.setupRotations(renderState, poseStack, bodyRot, scale); - float f = 4.3F * Mth.sin(0.6F * renderState.ageInTicks); - poseStack.mulPose(Axis.YP.rotationDegrees(f)); - if (!renderState.isInWater) { + protected void setupRotations(TropicalFishRenderState tropicalFishRenderState, PoseStack poseStack, float f, float g) { + super.setupRotations(tropicalFishRenderState, poseStack, f, g); + float h = 4.3F * Mth.sin(0.6F * tropicalFishRenderState.ageInTicks); + poseStack.mulPose(Axis.YP.rotationDegrees(h)); + if (!tropicalFishRenderState.isInWater) { poseStack.translate(0.2F, 0.1F, 0.0F); poseStack.mulPose(Axis.ZP.rotationDegrees(90.0F)); } diff --git a/net/minecraft/client/renderer/entity/UndeadHorseRenderer.java b/net/minecraft/client/renderer/entity/UndeadHorseRenderer.java index 7aa0b164..1b9cdc92 100644 --- a/net/minecraft/client/renderer/entity/UndeadHorseRenderer.java +++ b/net/minecraft/client/renderer/entity/UndeadHorseRenderer.java @@ -18,11 +18,11 @@ public class UndeadHorseRenderer extends AbstractHorseRenderer { public VexRenderer(EntityRendererProvider.Context context) { super(context, new VexModel(context.bakeLayer(ModelLayers.VEX)), 0.3F); - this.addLayer(new ItemInHandLayer<>(this, context.getItemRenderer())); + this.addLayer(new ItemInHandLayer<>(this)); } protected int getBlockLightLevel(Vex entity, BlockPos pos) { return 15; } - public ResourceLocation getTextureLocation(VexRenderState renderState) { - return renderState.isCharging ? VEX_CHARGING_LOCATION : VEX_LOCATION; + public ResourceLocation getTextureLocation(VexRenderState vexRenderState) { + return vexRenderState.isCharging ? VEX_CHARGING_LOCATION : VEX_LOCATION; } public VexRenderState createRenderState() { return new VexRenderState(); } - public void extractRenderState(Vex entity, VexRenderState reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - reusedState.isCharging = entity.isCharging(); + public void extractRenderState(Vex vex, VexRenderState vexRenderState, float f) { + super.extractRenderState(vex, vexRenderState, f); + ArmedEntityRenderState.extractArmedEntityRenderState(vex, vexRenderState, this.itemModelResolver); + vexRenderState.isCharging = vex.isCharging(); } } diff --git a/net/minecraft/client/renderer/entity/VillagerRenderer.java b/net/minecraft/client/renderer/entity/VillagerRenderer.java index 3e67cc0b..cb101605 100644 --- a/net/minecraft/client/renderer/entity/VillagerRenderer.java +++ b/net/minecraft/client/renderer/entity/VillagerRenderer.java @@ -1,6 +1,5 @@ package net.minecraft.client.renderer.entity; -import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.VillagerModel; @@ -8,26 +7,21 @@ import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.entity.layers.CrossedArmsItemLayer; import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; import net.minecraft.client.renderer.entity.layers.VillagerProfessionLayer; +import net.minecraft.client.renderer.entity.state.HoldingEntityRenderState; import net.minecraft.client.renderer.entity.state.VillagerRenderState; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.npc.Villager; @Environment(EnvType.CLIENT) -public class VillagerRenderer extends MobRenderer { +public class VillagerRenderer extends AgeableMobRenderer { private static final ResourceLocation VILLAGER_BASE_SKIN = ResourceLocation.withDefaultNamespace("textures/entity/villager/villager.png"); public static final CustomHeadLayer.Transforms CUSTOM_HEAD_TRANSFORMS = new CustomHeadLayer.Transforms(-0.1171875F, -0.07421875F, 1.0F); public VillagerRenderer(EntityRendererProvider.Context context) { - super(context, new VillagerModel(context.bakeLayer(ModelLayers.VILLAGER)), 0.5F); - this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), CUSTOM_HEAD_TRANSFORMS, context.getItemRenderer())); + super(context, new VillagerModel(context.bakeLayer(ModelLayers.VILLAGER)), new VillagerModel(context.bakeLayer(ModelLayers.VILLAGER_BABY)), 0.5F); + this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), CUSTOM_HEAD_TRANSFORMS)); this.addLayer(new VillagerProfessionLayer<>(this, context.getResourceManager(), "villager")); - this.addLayer(new CrossedArmsItemLayer<>(this, context.getItemRenderer())); - } - - protected void scale(VillagerRenderState villagerRenderState, PoseStack poseStack) { - super.scale(villagerRenderState, poseStack); - float f = villagerRenderState.ageScale; - poseStack.scale(f, f, f); + this.addLayer(new CrossedArmsItemLayer<>(this)); } public ResourceLocation getTextureLocation(VillagerRenderState villagerRenderState) { @@ -45,6 +39,7 @@ public class VillagerRenderer extends MobRenderer 0; villagerRenderState.villagerData = villager.getVillagerData(); } diff --git a/net/minecraft/client/renderer/entity/VindicatorRenderer.java b/net/minecraft/client/renderer/entity/VindicatorRenderer.java index 9d390f64..9d093933 100644 --- a/net/minecraft/client/renderer/entity/VindicatorRenderer.java +++ b/net/minecraft/client/renderer/entity/VindicatorRenderer.java @@ -17,7 +17,7 @@ public class VindicatorRenderer extends IllagerRenderer(context.bakeLayer(ModelLayers.VINDICATOR)), 0.5F); - this.addLayer(new ItemInHandLayer>(this, context.getItemRenderer()) { + this.addLayer(new ItemInHandLayer>(this) { public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, IllagerRenderState illagerRenderState, float f, float g) { if (illagerRenderState.isAggressive) { super.render(poseStack, multiBufferSource, i, illagerRenderState, f, g); diff --git a/net/minecraft/client/renderer/entity/WanderingTraderRenderer.java b/net/minecraft/client/renderer/entity/WanderingTraderRenderer.java index 38798a20..3b28fe0a 100644 --- a/net/minecraft/client/renderer/entity/WanderingTraderRenderer.java +++ b/net/minecraft/client/renderer/entity/WanderingTraderRenderer.java @@ -6,6 +6,7 @@ import net.minecraft.client.model.VillagerModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.entity.layers.CrossedArmsItemLayer; import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; +import net.minecraft.client.renderer.entity.state.HoldingEntityRenderState; import net.minecraft.client.renderer.entity.state.VillagerRenderState; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.npc.WanderingTrader; @@ -16,8 +17,8 @@ public class WanderingTraderRenderer extends MobRenderer(this, context.getModelSet(), context.getItemRenderer())); - this.addLayer(new CrossedArmsItemLayer<>(this, context.getItemRenderer())); + this.addLayer(new CustomHeadLayer<>(this, context.getModelSet())); + this.addLayer(new CrossedArmsItemLayer<>(this)); } public ResourceLocation getTextureLocation(VillagerRenderState villagerRenderState) { @@ -30,6 +31,7 @@ public class WanderingTraderRenderer extends MobRenderer 0; } } diff --git a/net/minecraft/client/renderer/entity/WardenRenderer.java b/net/minecraft/client/renderer/entity/WardenRenderer.java index a3882ba1..af6ff2af 100644 --- a/net/minecraft/client/renderer/entity/WardenRenderer.java +++ b/net/minecraft/client/renderer/entity/WardenRenderer.java @@ -25,7 +25,12 @@ public class WardenRenderer extends MobRenderer( - this, BIOLUMINESCENT_LAYER_TEXTURE, (wardenRenderState, f) -> 1.0F, WardenModel::getBioluminescentLayerModelParts, RenderType::entityTranslucentEmissive + this, + BIOLUMINESCENT_LAYER_TEXTURE, + (wardenRenderState, f) -> 1.0F, + WardenModel::getBioluminescentLayerModelParts, + RenderType::entityTranslucentEmissive, + false ) ); this.addLayer( @@ -34,7 +39,8 @@ public class WardenRenderer extends MobRenderer Math.max(0.0F, Mth.cos(f * 0.045F) * 0.25F), WardenModel::getPulsatingSpotsLayerModelParts, - RenderType::entityTranslucentEmissive + RenderType::entityTranslucentEmissive, + false ) ); this.addLayer( @@ -43,12 +49,18 @@ public class WardenRenderer extends MobRenderer Math.max(0.0F, Mth.cos(f * 0.045F + (float) Math.PI) * 0.25F), WardenModel::getPulsatingSpotsLayerModelParts, - RenderType::entityTranslucentEmissive + RenderType::entityTranslucentEmissive, + false ) ); this.addLayer( new LivingEntityEmissiveLayer<>( - this, TEXTURE, (wardenRenderState, f) -> wardenRenderState.tendrilAnimation, WardenModel::getTendrilsLayerModelParts, RenderType::entityTranslucentEmissive + this, + TEXTURE, + (wardenRenderState, f) -> wardenRenderState.tendrilAnimation, + WardenModel::getTendrilsLayerModelParts, + RenderType::entityTranslucentEmissive, + false ) ); this.addLayer( @@ -57,12 +69,13 @@ public class WardenRenderer extends MobRenderer wardenRenderState.heartAnimation, WardenModel::getHeartLayerModelParts, - RenderType::entityTranslucentEmissive + RenderType::entityTranslucentEmissive, + false ) ); } - public ResourceLocation getTextureLocation(WardenRenderState renderState) { + public ResourceLocation getTextureLocation(WardenRenderState wardenRenderState) { return TEXTURE; } @@ -70,15 +83,15 @@ public class WardenRenderer extends MobRenderer { @@ -15,7 +18,7 @@ public class WitchRenderer extends MobRenderer 0 && (i > 80 || i / 5 % 2 != 1) ? WITHER_INVULNERABLE_LOCATION : WITHER_LOCATION; } @@ -35,21 +35,21 @@ public class WitherBossRenderer extends MobRenderer 0.0F) { - f -= renderState.invulnerableTicks / 220.0F * 0.5F; + if (witherRenderState.invulnerableTicks > 0.0F) { + f -= witherRenderState.invulnerableTicks / 220.0F * 0.5F; } poseStack.scale(f, f, f); } - public void extractRenderState(WitherBoss entity, WitherRenderState reusedState, float partialTick) { - super.extractRenderState(entity, reusedState, partialTick); - int i = entity.getInvulnerableTicks(); - reusedState.invulnerableTicks = i > 0 ? i - partialTick : 0.0F; - System.arraycopy(entity.getHeadXRots(), 0, reusedState.xHeadRots, 0, reusedState.xHeadRots.length); - System.arraycopy(entity.getHeadYRots(), 0, reusedState.yHeadRots, 0, reusedState.yHeadRots.length); - reusedState.isPowered = entity.isPowered(); + public void extractRenderState(WitherBoss witherBoss, WitherRenderState witherRenderState, float f) { + super.extractRenderState(witherBoss, witherRenderState, f); + int i = witherBoss.getInvulnerableTicks(); + witherRenderState.invulnerableTicks = i > 0 ? i - f : 0.0F; + System.arraycopy(witherBoss.getHeadXRots(), 0, witherRenderState.xHeadRots, 0, witherRenderState.xHeadRots.length); + System.arraycopy(witherBoss.getHeadYRots(), 0, witherRenderState.yHeadRots, 0, witherRenderState.yHeadRots.length); + witherRenderState.isPowered = witherBoss.isPowered(); } } diff --git a/net/minecraft/client/renderer/entity/WitherSkullRenderer.java b/net/minecraft/client/renderer/entity/WitherSkullRenderer.java index 9a7e71b2..b6463926 100644 --- a/net/minecraft/client/renderer/entity/WitherSkullRenderer.java +++ b/net/minecraft/client/renderer/entity/WitherSkullRenderer.java @@ -40,14 +40,14 @@ public class WitherSkullRenderer extends EntityRenderer this.model = new BreezeModel(context.bakeLayer(ModelLayers.BREEZE_WIND)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, BreezeRenderState renderState, float yRot, float xRot) { - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.breezeWind(TEXTURE_LOCATION, this.xOffset(renderState.ageInTicks) % 1.0F, 0.0F)); - this.model.setupAnim(renderState); - BreezeRenderer.enable(this.model, this.model.wind()).renderToBuffer(poseStack, vertexConsumer, packedLight, OverlayTexture.NO_OVERLAY); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, BreezeRenderState breezeRenderState, float f, float g) { + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.breezeWind(TEXTURE_LOCATION, this.xOffset(breezeRenderState.ageInTicks) % 1.0F, 0.0F)); + this.model.setupAnim(breezeRenderState); + BreezeRenderer.enable(this.model, this.model.wind()).renderToBuffer(poseStack, vertexConsumer, i, OverlayTexture.NO_OVERLAY); } private float xOffset(float tickCount) { diff --git a/net/minecraft/client/renderer/entity/layers/CapeLayer.java b/net/minecraft/client/renderer/entity/layers/CapeLayer.java index e68f747b..2616f563 100644 --- a/net/minecraft/client/renderer/entity/layers/CapeLayer.java +++ b/net/minecraft/client/renderer/entity/layers/CapeLayer.java @@ -15,48 +15,49 @@ import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.PlayerRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.resources.PlayerSkin; -import net.minecraft.client.resources.model.EquipmentModelSet; +import net.minecraft.client.resources.model.EquipmentAssetManager; +import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.equipment.EquipmentModel; +import net.minecraft.world.item.equipment.EquipmentAsset; import net.minecraft.world.item.equipment.Equippable; @Environment(EnvType.CLIENT) public class CapeLayer extends RenderLayer { private final HumanoidModel model; - private final EquipmentModelSet equipmentModels; + private final EquipmentAssetManager equipmentAssets; - public CapeLayer(RenderLayerParent renderer, EntityModelSet entityModels, EquipmentModelSet equipmentModels) { + public CapeLayer(RenderLayerParent renderer, EntityModelSet modelSet, EquipmentAssetManager equipmentAssets) { super(renderer); - this.model = new PlayerCapeModel<>(entityModels.bakeLayer(ModelLayers.PLAYER_CAPE)); - this.equipmentModels = equipmentModels; + this.model = new PlayerCapeModel<>(modelSet.bakeLayer(ModelLayers.PLAYER_CAPE)); + this.equipmentAssets = equipmentAssets; } - private boolean hasLayer(ItemStack stack, EquipmentModel.LayerType layerType) { + private boolean hasLayer(ItemStack stack, EquipmentClientInfo.LayerType layer) { Equippable equippable = stack.get(DataComponents.EQUIPPABLE); - if (equippable != null && !equippable.model().isEmpty()) { - EquipmentModel equipmentModel = this.equipmentModels.get((ResourceLocation)equippable.model().get()); - return !equipmentModel.getLayers(layerType).isEmpty(); + if (equippable != null && !equippable.assetId().isEmpty()) { + EquipmentClientInfo equipmentClientInfo = this.equipmentAssets.get((ResourceKey)equippable.assetId().get()); + return !equipmentClientInfo.getLayers(layer).isEmpty(); } else { return false; } } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, PlayerRenderState renderState, float yRot, float xRot) { - if (!renderState.isInvisible && renderState.showCape) { - PlayerSkin playerSkin = renderState.skin; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, PlayerRenderState playerRenderState, float f, float g) { + if (!playerRenderState.isInvisible && playerRenderState.showCape) { + PlayerSkin playerSkin = playerRenderState.skin; if (playerSkin.capeTexture() != null) { - if (!this.hasLayer(renderState.chestItem, EquipmentModel.LayerType.WINGS)) { + if (!this.hasLayer(playerRenderState.chestEquipment, EquipmentClientInfo.LayerType.WINGS)) { poseStack.pushPose(); - if (this.hasLayer(renderState.chestItem, EquipmentModel.LayerType.HUMANOID)) { + if (this.hasLayer(playerRenderState.chestEquipment, EquipmentClientInfo.LayerType.HUMANOID)) { poseStack.translate(0.0F, -0.053125F, 0.06875F); } - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.entitySolid(playerSkin.capeTexture())); + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.entitySolid(playerSkin.capeTexture())); this.getParentModel().copyPropertiesTo(this.model); - this.model.setupAnim(renderState); - this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, OverlayTexture.NO_OVERLAY); + this.model.setupAnim(playerRenderState); + this.model.renderToBuffer(poseStack, vertexConsumer, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/CarriedBlockLayer.java b/net/minecraft/client/renderer/entity/layers/CarriedBlockLayer.java index b1de564b..c475142a 100644 --- a/net/minecraft/client/renderer/entity/layers/CarriedBlockLayer.java +++ b/net/minecraft/client/renderer/entity/layers/CarriedBlockLayer.java @@ -21,18 +21,18 @@ public class CarriedBlockLayer extends RenderLayer { this.babyModel = new CatModel(modelSet.bakeLayer(ModelLayers.CAT_BABY_COLLAR)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, CatRenderState renderState, float yRot, float xRot) { - DyeColor dyeColor = renderState.collarColor; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CatRenderState catRenderState, float f, float g) { + DyeColor dyeColor = catRenderState.collarColor; if (dyeColor != null) { - int i = dyeColor.getTextureDiffuseColor(); - CatModel catModel = renderState.isBaby ? this.babyModel : this.adultModel; - coloredCutoutModelCopyLayerRender(catModel, CAT_COLLAR_LOCATION, poseStack, bufferSource, packedLight, renderState, i); + int j = dyeColor.getTextureDiffuseColor(); + CatModel catModel = catRenderState.isBaby ? this.babyModel : this.adultModel; + coloredCutoutModelCopyLayerRender(catModel, CAT_COLLAR_LOCATION, poseStack, multiBufferSource, i, catRenderState, j); } } } diff --git a/net/minecraft/client/renderer/entity/layers/CreeperPowerLayer.java b/net/minecraft/client/renderer/entity/layers/CreeperPowerLayer.java index 056e74e1..c9309c0a 100644 --- a/net/minecraft/client/renderer/entity/layers/CreeperPowerLayer.java +++ b/net/minecraft/client/renderer/entity/layers/CreeperPowerLayer.java @@ -19,8 +19,8 @@ public class CreeperPowerLayer extends EnergySwirlLayer> extends RenderLayer { - private final ItemRenderer itemRenderer; - - public CrossedArmsItemLayer(RenderLayerParent renderer, ItemRenderer itemRenderer) { - super(renderer); - this.itemRenderer = itemRenderer; +public class CrossedArmsItemLayer & VillagerLikeModel> extends RenderLayer { + public CrossedArmsItemLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, S renderState, float yRot, float xRot) { - BakedModel bakedModel = renderState.getMainHandItemModel(); - if (bakedModel != null) { + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, S holdingEntityRenderState, float f, float g) { + ItemStackRenderState itemStackRenderState = holdingEntityRenderState.heldItem; + if (!itemStackRenderState.isEmpty()) { poseStack.pushPose(); - poseStack.translate(0.0F, 0.4F, -0.4F); - poseStack.mulPose(Axis.XP.rotationDegrees(180.0F)); - ItemStack itemStack = renderState.getMainHandItem(); - this.itemRenderer.render(itemStack, ItemDisplayContext.GROUND, false, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, bakedModel); + this.applyTranslation(holdingEntityRenderState, poseStack); + itemStackRenderState.render(poseStack, multiBufferSource, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } } + + protected void applyTranslation(S renderState, PoseStack poseStack) { + this.getParentModel().translateToArms(poseStack); + poseStack.mulPose(Axis.XP.rotation(0.75F)); + poseStack.scale(1.07F, 1.07F, 1.07F); + poseStack.translate(0.0F, 0.13F, -0.34F); + poseStack.mulPose(Axis.XP.rotation((float) Math.PI)); + } } diff --git a/net/minecraft/client/renderer/entity/layers/CustomHeadLayer.java b/net/minecraft/client/renderer/entity/layers/CustomHeadLayer.java index d74a3153..1d78b8cf 100644 --- a/net/minecraft/client/renderer/entity/layers/CustomHeadLayer.java +++ b/net/minecraft/client/renderer/entity/layers/CustomHeadLayer.java @@ -2,9 +2,10 @@ package net.minecraft.client.renderer.entity.layers; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; -import java.util.Map; +import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.Util; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.HeadedModel; import net.minecraft.client.model.SkullModelBase; @@ -12,62 +13,46 @@ import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.SkullBlockRenderer; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.component.DataComponents; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.ResolvableProfile; -import net.minecraft.world.level.block.AbstractSkullBlock; -import net.minecraft.world.level.block.SkullBlock; +import net.minecraft.world.level.block.SkullBlock.Type; @Environment(EnvType.CLIENT) public class CustomHeadLayer & HeadedModel> extends RenderLayer { private static final float ITEM_SCALE = 0.625F; private static final float SKULL_SCALE = 1.1875F; private final CustomHeadLayer.Transforms transforms; - private final Map skullModels; - private final ItemRenderer itemRenderer; + private final Function skullModels; - public CustomHeadLayer(RenderLayerParent renderer, EntityModelSet modelSet, ItemRenderer itemRenderer) { - this(renderer, modelSet, CustomHeadLayer.Transforms.DEFAULT, itemRenderer); + public CustomHeadLayer(RenderLayerParent renderer, EntityModelSet modelSet) { + this(renderer, modelSet, CustomHeadLayer.Transforms.DEFAULT); } - public CustomHeadLayer(RenderLayerParent renderer, EntityModelSet modelSet, CustomHeadLayer.Transforms transforms, ItemRenderer itemRenderer) { + public CustomHeadLayer(RenderLayerParent renderer, EntityModelSet modelSet, CustomHeadLayer.Transforms transforms) { super(renderer); this.transforms = transforms; - this.skullModels = SkullBlockRenderer.createSkullRenderers(modelSet); - this.itemRenderer = itemRenderer; + this.skullModels = Util.memoize((Function)(type -> SkullBlockRenderer.createModel(modelSet, type))); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, S renderState, float yRot, float xRot) { - ItemStack itemStack = renderState.headItem; - BakedModel bakedModel = renderState.headItemModel; - if (!itemStack.isEmpty() && bakedModel != null) { - Item item = itemStack.getItem(); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, S livingEntityRenderState, float f, float g) { + if (!livingEntityRenderState.headItem.isEmpty() || livingEntityRenderState.wornHeadType != null) { poseStack.pushPose(); poseStack.scale(this.transforms.horizontalScale(), 1.0F, this.transforms.horizontalScale()); M entityModel = this.getParentModel(); entityModel.root().translateAndRotate(poseStack); entityModel.getHead().translateAndRotate(poseStack); - if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof AbstractSkullBlock abstractSkullBlock) { + if (livingEntityRenderState.wornHeadType != null) { poseStack.translate(0.0F, this.transforms.skullYOffset(), 0.0F); poseStack.scale(1.1875F, -1.1875F, -1.1875F); - ResolvableProfile resolvableProfile = itemStack.get(DataComponents.PROFILE); poseStack.translate(-0.5, 0.0, -0.5); - SkullBlock.Type type = abstractSkullBlock.getType(); - SkullModelBase skullModelBase = (SkullModelBase)this.skullModels.get(type); - RenderType renderType = SkullBlockRenderer.getRenderType(type, resolvableProfile); - SkullBlockRenderer.renderSkull(null, 180.0F, renderState.wornHeadAnimationPos, poseStack, bufferSource, packedLight, skullModelBase, renderType); - } else if (!HumanoidArmorLayer.shouldRender(itemStack, EquipmentSlot.HEAD)) { + Type type = livingEntityRenderState.wornHeadType; + SkullModelBase skullModelBase = (SkullModelBase)this.skullModels.apply(type); + RenderType renderType = SkullBlockRenderer.getRenderType(type, livingEntityRenderState.wornHeadProfile); + SkullBlockRenderer.renderSkull(null, 180.0F, livingEntityRenderState.wornHeadAnimationPos, poseStack, multiBufferSource, i, skullModelBase, renderType); + } else { translateToHead(poseStack, this.transforms); - this.itemRenderer.render(itemStack, ItemDisplayContext.HEAD, false, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, bakedModel); + livingEntityRenderState.headItem.render(poseStack, multiBufferSource, i, OverlayTexture.NO_OVERLAY); } poseStack.popPose(); diff --git a/net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer.java b/net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer.java index 6c9d0893..33bb0c29 100644 --- a/net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer.java +++ b/net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer.java @@ -24,13 +24,13 @@ public class Deadmau5EarsLayer extends RenderLayer { - private final ItemRenderer itemRenderer; - - public DolphinCarryingItemLayer(RenderLayerParent renderer, ItemRenderer itemRenderer) { - super(renderer); - this.itemRenderer = itemRenderer; + public DolphinCarryingItemLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, DolphinRenderState renderState, float yRot, float xRot) { - ItemStack itemStack = renderState.getMainHandItem(); - BakedModel bakedModel = renderState.getMainHandItemModel(); - if (bakedModel != null) { + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, DolphinRenderState dolphinRenderState, float f, float g) { + ItemStackRenderState itemStackRenderState = dolphinRenderState.heldItem; + if (!itemStackRenderState.isEmpty()) { poseStack.pushPose(); - float f = 1.0F; - float g = -1.0F; - float h = Mth.abs(renderState.xRot) / 60.0F; - if (renderState.xRot < 0.0F) { - poseStack.translate(0.0F, 1.0F - h * 0.5F, -1.0F + h * 0.5F); + float h = 1.0F; + float j = -1.0F; + float k = Mth.abs(dolphinRenderState.xRot) / 60.0F; + if (dolphinRenderState.xRot < 0.0F) { + poseStack.translate(0.0F, 1.0F - k * 0.5F, -1.0F + k * 0.5F); } else { - poseStack.translate(0.0F, 1.0F + h * 0.8F, -1.0F + h * 0.2F); + poseStack.translate(0.0F, 1.0F + k * 0.8F, -1.0F + k * 0.2F); } - this.itemRenderer.render(itemStack, ItemDisplayContext.GROUND, false, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, bakedModel); + itemStackRenderState.render(poseStack, multiBufferSource, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/DrownedOuterLayer.java b/net/minecraft/client/renderer/entity/layers/DrownedOuterLayer.java index 49fb06ba..e6f065e1 100644 --- a/net/minecraft/client/renderer/entity/layers/DrownedOuterLayer.java +++ b/net/minecraft/client/renderer/entity/layers/DrownedOuterLayer.java @@ -23,8 +23,8 @@ public class DrownedOuterLayer extends RenderLayer> extends RenderLayer { - public EnergySwirlLayer(RenderLayerParent renderer) { - super(renderer); + public EnergySwirlLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } @Override diff --git a/net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer.java b/net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer.java index b280229b..9df851ce 100644 --- a/net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer.java +++ b/net/minecraft/client/renderer/entity/layers/EquipmentLayerRenderer.java @@ -5,6 +5,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import java.util.List; import java.util.Optional; import java.util.function.Function; +import java.util.function.UnaryOperator; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; @@ -16,50 +17,53 @@ import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.EquipmentModelSet; +import net.minecraft.client.resources.model.EquipmentAssetManager; +import net.minecraft.client.resources.model.EquipmentClientInfo; +import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.util.ARGB; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.DyedItemColor; -import net.minecraft.world.item.equipment.EquipmentModel; +import net.minecraft.world.item.equipment.EquipmentAsset; import net.minecraft.world.item.equipment.trim.ArmorTrim; +import net.minecraft.world.item.equipment.trim.TrimMaterial; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class EquipmentLayerRenderer { private static final int NO_LAYER_COLOR = 0; - private final EquipmentModelSet equipmentModels; + private final EquipmentAssetManager equipmentAssets; private final Function layerTextureLookup; private final Function trimSpriteLookup; - public EquipmentLayerRenderer(EquipmentModelSet equipmentModels, TextureAtlas trimsAtlas) { - this.equipmentModels = equipmentModels; + public EquipmentLayerRenderer(EquipmentAssetManager equipmentAssets, TextureAtlas atlas) { + this.equipmentAssets = equipmentAssets; this.layerTextureLookup = Util.memoize( (Function)(layerTextureKey -> layerTextureKey.layer.getTextureLocation(layerTextureKey.layerType)) ); - this.trimSpriteLookup = Util.memoize((Function)(trimSpriteKey -> { - ResourceLocation resourceLocation = trimSpriteKey.trim.getTexture(trimSpriteKey.layerType, trimSpriteKey.equipmentModelId); - return trimsAtlas.getSprite(resourceLocation); - })); + this.trimSpriteLookup = Util.memoize( + (Function)(trimSpriteKey -> atlas.getSprite(trimSpriteKey.textureId())) + ); } public void renderLayers( - EquipmentModel.LayerType layerType, - ResourceLocation equipmentModel, + EquipmentClientInfo.LayerType layerType, + ResourceKey equipmentAsset, Model armorModel, ItemStack item, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight ) { - this.renderLayers(layerType, equipmentModel, armorModel, item, poseStack, bufferSource, packedLight, null); + this.renderLayers(layerType, equipmentAsset, armorModel, item, poseStack, bufferSource, packedLight, null); } public void renderLayers( - EquipmentModel.LayerType layerType, - ResourceLocation equipmentModel, + EquipmentClientInfo.LayerType layerType, + ResourceKey equipmentAsset, Model armorModel, ItemStack item, PoseStack poseStack, @@ -67,12 +71,12 @@ public class EquipmentLayerRenderer { int packedLight, @Nullable ResourceLocation playerTexture ) { - List list = this.equipmentModels.get(equipmentModel).getLayers(layerType); + List list = this.equipmentAssets.get(equipmentAsset).getLayers(layerType); if (!list.isEmpty()) { int i = item.is(ItemTags.DYEABLE) ? DyedItemColor.getOrDefault(item, 0) : 0; boolean bl = item.hasFoil(); - for (EquipmentModel.Layer layer : list) { + for (EquipmentClientInfo.Layer layer : list) { int j = getColorForLayer(layer, i); if (j != 0) { ResourceLocation resourceLocation = layer.usePlayerTexture() && playerTexture != null @@ -87,17 +91,17 @@ public class EquipmentLayerRenderer { ArmorTrim armorTrim = item.get(DataComponents.TRIM); if (armorTrim != null) { TextureAtlasSprite textureAtlasSprite = (TextureAtlasSprite)this.trimSpriteLookup - .apply(new EquipmentLayerRenderer.TrimSpriteKey(armorTrim, layerType, equipmentModel)); + .apply(new EquipmentLayerRenderer.TrimSpriteKey(armorTrim, layerType, equipmentAsset)); VertexConsumer vertexConsumer2 = textureAtlasSprite.wrap(bufferSource.getBuffer(Sheets.armorTrimsSheet(armorTrim.pattern().value().decal()))); armorModel.renderToBuffer(poseStack, vertexConsumer2, packedLight, OverlayTexture.NO_OVERLAY); } } } - private static int getColorForLayer(EquipmentModel.Layer layer, int color) { - Optional optional = layer.dyeable(); + private static int getColorForLayer(EquipmentClientInfo.Layer layer, int color) { + Optional optional = layer.dyeable(); if (optional.isPresent()) { - int i = (Integer)((EquipmentModel.Dyeable)optional.get()).colorWhenUndyed().map(ARGB::opaque).orElse(0); + int i = (Integer)((EquipmentClientInfo.Dyeable)optional.get()).colorWhenUndyed().map(ARGB::opaque).orElse(0); return color != 0 ? color : i; } else { return -1; @@ -105,10 +109,20 @@ public class EquipmentLayerRenderer { } @Environment(EnvType.CLIENT) - record LayerTextureKey(EquipmentModel.LayerType layerType, EquipmentModel.Layer layer) { + record LayerTextureKey(EquipmentClientInfo.LayerType layerType, EquipmentClientInfo.Layer layer) { } @Environment(EnvType.CLIENT) - record TrimSpriteKey(ArmorTrim trim, EquipmentModel.LayerType layerType, ResourceLocation equipmentModelId) { + record TrimSpriteKey(ArmorTrim trim, EquipmentClientInfo.LayerType layerType, ResourceKey equipmentAssetId) { + private static String getColorPaletteSuffix(Holder trimMaterial, ResourceKey equipmentAsset) { + String string = (String)trimMaterial.value().overrideArmorAssets().get(equipmentAsset); + return string != null ? string : trimMaterial.value().assetName(); + } + + public ResourceLocation textureId() { + ResourceLocation resourceLocation = this.trim.pattern().value().assetId(); + String string = getColorPaletteSuffix(this.trim.material(), this.equipmentAssetId); + return resourceLocation.withPath((UnaryOperator)(string2 -> "trims/entity/" + this.layerType.getSerializedName() + "/" + string2 + "_" + string)); + } } } diff --git a/net/minecraft/client/renderer/entity/layers/FoxHeldItemLayer.java b/net/minecraft/client/renderer/entity/layers/FoxHeldItemLayer.java index c794cd49..6685ecbe 100644 --- a/net/minecraft/client/renderer/entity/layers/FoxHeldItemLayer.java +++ b/net/minecraft/client/renderer/entity/layers/FoxHeldItemLayer.java @@ -6,40 +6,33 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.FoxModel; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.FoxRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; @Environment(EnvType.CLIENT) public class FoxHeldItemLayer extends RenderLayer { - private final ItemRenderer itemRenderer; - - public FoxHeldItemLayer(RenderLayerParent renderer, ItemRenderer itemRenderer) { - super(renderer); - this.itemRenderer = itemRenderer; + public FoxHeldItemLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, FoxRenderState renderState, float yRot, float xRot) { - BakedModel bakedModel = renderState.getMainHandItemModel(); - ItemStack itemStack = renderState.getMainHandItem(); - if (bakedModel != null && !itemStack.isEmpty()) { - boolean bl = renderState.isSleeping; - boolean bl2 = renderState.isBaby; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, FoxRenderState foxRenderState, float f, float g) { + ItemStackRenderState itemStackRenderState = foxRenderState.heldItem; + if (!itemStackRenderState.isEmpty()) { + boolean bl = foxRenderState.isSleeping; + boolean bl2 = foxRenderState.isBaby; poseStack.pushPose(); poseStack.translate(this.getParentModel().head.x / 16.0F, this.getParentModel().head.y / 16.0F, this.getParentModel().head.z / 16.0F); if (bl2) { - float f = 0.75F; + float h = 0.75F; poseStack.scale(0.75F, 0.75F, 0.75F); } - poseStack.mulPose(Axis.ZP.rotation(renderState.headRollAngle)); - poseStack.mulPose(Axis.YP.rotationDegrees(yRot)); - poseStack.mulPose(Axis.XP.rotationDegrees(xRot)); - if (renderState.isBaby) { + poseStack.mulPose(Axis.ZP.rotation(foxRenderState.headRollAngle)); + poseStack.mulPose(Axis.YP.rotationDegrees(f)); + poseStack.mulPose(Axis.XP.rotationDegrees(g)); + if (foxRenderState.isBaby) { if (bl) { poseStack.translate(0.4F, 0.26F, 0.15F); } else { @@ -56,7 +49,7 @@ public class FoxHeldItemLayer extends RenderLayer { poseStack.mulPose(Axis.ZP.rotationDegrees(90.0F)); } - this.itemRenderer.render(itemStack, ItemDisplayContext.GROUND, false, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, bakedModel); + itemStackRenderState.render(poseStack, multiBufferSource, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/HorseArmorLayer.java b/net/minecraft/client/renderer/entity/layers/HorseArmorLayer.java index bd7097ae..f88d7a3a 100644 --- a/net/minecraft/client/renderer/entity/layers/HorseArmorLayer.java +++ b/net/minecraft/client/renderer/entity/layers/HorseArmorLayer.java @@ -9,10 +9,11 @@ import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.HorseRenderState; +import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.equipment.EquipmentModel; +import net.minecraft.world.item.equipment.EquipmentAsset; import net.minecraft.world.item.equipment.Equippable; @Environment(EnvType.CLIENT) @@ -28,14 +29,16 @@ public class HorseArmorLayer extends RenderLayer { this.babyModel = new HorseModel(entityModels.bakeLayer(ModelLayers.HORSE_BABY_ARMOR)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, HorseRenderState renderState, float yRot, float xRot) { - ItemStack itemStack = renderState.bodyArmorItem; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, HorseRenderState horseRenderState, float f, float g) { + ItemStack itemStack = horseRenderState.bodyArmorItem; Equippable equippable = itemStack.get(DataComponents.EQUIPPABLE); - if (equippable != null && !equippable.model().isEmpty()) { - HorseModel horseModel = renderState.isBaby ? this.babyModel : this.adultModel; - ResourceLocation resourceLocation = (ResourceLocation)equippable.model().get(); - horseModel.setupAnim(renderState); - this.equipmentRenderer.renderLayers(EquipmentModel.LayerType.HORSE_BODY, resourceLocation, horseModel, itemStack, poseStack, bufferSource, packedLight); + if (equippable != null && !equippable.assetId().isEmpty()) { + HorseModel horseModel = horseRenderState.isBaby ? this.babyModel : this.adultModel; + horseModel.setupAnim(horseRenderState); + this.equipmentRenderer + .renderLayers( + EquipmentClientInfo.LayerType.HORSE_BODY, (ResourceKey)equippable.assetId().get(), horseModel, itemStack, poseStack, multiBufferSource, i + ); } } } diff --git a/net/minecraft/client/renderer/entity/layers/HorseMarkingLayer.java b/net/minecraft/client/renderer/entity/layers/HorseMarkingLayer.java index 54a4bc55..5eddf6f5 100644 --- a/net/minecraft/client/renderer/entity/layers/HorseMarkingLayer.java +++ b/net/minecraft/client/renderer/entity/layers/HorseMarkingLayer.java @@ -26,15 +26,15 @@ public class HorseMarkingLayer extends RenderLayer enumMap.put(Markings.BLACK_DOTS, ResourceLocation.withDefaultNamespace("textures/entity/horse/horse_markings_blackdots.png")); }); - public HorseMarkingLayer(RenderLayerParent renderer) { - super(renderer); + public HorseMarkingLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, HorseRenderState renderState, float yRot, float xRot) { - ResourceLocation resourceLocation = (ResourceLocation)LOCATION_BY_MARKINGS.get(renderState.markings); - if (resourceLocation != null && !renderState.isInvisible) { - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.entityTranslucent(resourceLocation)); - this.getParentModel().renderToBuffer(poseStack, vertexConsumer, packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0F)); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, HorseRenderState horseRenderState, float f, float g) { + ResourceLocation resourceLocation = (ResourceLocation)LOCATION_BY_MARKINGS.get(horseRenderState.markings); + if (resourceLocation != null && !horseRenderState.isInvisible) { + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.entityTranslucent(resourceLocation)); + this.getParentModel().renderToBuffer(poseStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(horseRenderState, 0.0F)); } } } diff --git a/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java b/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java index 45eba9e2..dade2643 100644 --- a/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java +++ b/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java @@ -7,11 +7,12 @@ import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.HumanoidRenderState; +import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.equipment.EquipmentModel; +import net.minecraft.world.item.equipment.EquipmentAsset; import net.minecraft.world.item.equipment.Equippable; @Environment(EnvType.CLIENT) @@ -43,14 +44,22 @@ public class HumanoidArmorLayer)equippable.assetId().orElseThrow(), model, armorItem, poseStack, bufferSource, packedLight); } } diff --git a/net/minecraft/client/renderer/entity/layers/IronGolemFlowerLayer.java b/net/minecraft/client/renderer/entity/layers/IronGolemFlowerLayer.java index 2991b2bc..827c9238 100644 --- a/net/minecraft/client/renderer/entity/layers/IronGolemFlowerLayer.java +++ b/net/minecraft/client/renderer/entity/layers/IronGolemFlowerLayer.java @@ -22,18 +22,18 @@ public class IronGolemFlowerLayer extends RenderLayer & ArmedModel> extends RenderLayer { - private final ItemRenderer itemRenderer; - - public ItemInHandLayer(RenderLayerParent renderer, ItemRenderer itemRenderer) { - super(renderer); - this.itemRenderer = itemRenderer; +public class ItemInHandLayer & ArmedModel> extends RenderLayer { + public ItemInHandLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, S renderState, float yRot, float xRot) { - this.renderArmWithItem( - renderState, - renderState.rightHandItemModel, - renderState.rightHandItem, - ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, - HumanoidArm.RIGHT, - poseStack, - bufferSource, - packedLight - ); - this.renderArmWithItem( - renderState, - renderState.leftHandItemModel, - renderState.leftHandItem, - ItemDisplayContext.THIRD_PERSON_LEFT_HAND, - HumanoidArm.LEFT, - poseStack, - bufferSource, - packedLight - ); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, S armedEntityRenderState, float f, float g) { + this.renderArmWithItem(armedEntityRenderState, armedEntityRenderState.rightHandItem, HumanoidArm.RIGHT, poseStack, multiBufferSource, i); + this.renderArmWithItem(armedEntityRenderState, armedEntityRenderState.leftHandItem, HumanoidArm.LEFT, poseStack, multiBufferSource, i); } protected void renderArmWithItem( - S renderState, - @Nullable BakedModel itemModel, - ItemStack item, - ItemDisplayContext displayContext, - HumanoidArm arm, - PoseStack poseStack, - MultiBufferSource bufferSource, - int packedLight + S renderState, ItemStackRenderState itemStackRenderState, HumanoidArm arm, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight ) { - if (itemModel != null && !item.isEmpty()) { + if (!itemStackRenderState.isEmpty()) { poseStack.pushPose(); this.getParentModel().translateToHand(arm, poseStack); poseStack.mulPose(Axis.XP.rotationDegrees(-90.0F)); poseStack.mulPose(Axis.YP.rotationDegrees(180.0F)); boolean bl = arm == HumanoidArm.LEFT; poseStack.translate((bl ? -1 : 1) / 16.0F, 0.125F, -0.625F); - this.itemRenderer.render(item, displayContext, bl, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, itemModel); + itemStackRenderState.render(poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/LivingEntityEmissiveLayer.java b/net/minecraft/client/renderer/entity/layers/LivingEntityEmissiveLayer.java index 118aff13..9190cd28 100644 --- a/net/minecraft/client/renderer/entity/layers/LivingEntityEmissiveLayer.java +++ b/net/minecraft/client/renderer/entity/layers/LivingEntityEmissiveLayer.java @@ -23,28 +23,31 @@ public class LivingEntityEmissiveLayer alphaFunction; private final LivingEntityEmissiveLayer.DrawSelector drawSelector; private final Function bufferProvider; + private final boolean alwaysVisible; public LivingEntityEmissiveLayer( RenderLayerParent renderer, ResourceLocation texture, LivingEntityEmissiveLayer.AlphaFunction alphaFunction, LivingEntityEmissiveLayer.DrawSelector drawSelector, - Function bufferProvider + Function bufferProvider, + boolean alwaysVisible ) { super(renderer); this.texture = texture; this.alphaFunction = alphaFunction; this.drawSelector = drawSelector; this.bufferProvider = bufferProvider; + this.alwaysVisible = alwaysVisible; } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, S renderState, float yRot, float xRot) { - if (!renderState.isInvisible) { - if (this.onlyDrawSelectedParts(renderState)) { - VertexConsumer vertexConsumer = bufferSource.getBuffer((RenderType)this.bufferProvider.apply(this.texture)); - float f = this.alphaFunction.apply(renderState, renderState.ageInTicks); - int i = ARGB.color(Mth.floor(f * 255.0F), 255, 255, 255); - this.getParentModel().renderToBuffer(poseStack, vertexConsumer, packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0F), i); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, S livingEntityRenderState, float f, float g) { + if (!livingEntityRenderState.isInvisible || this.alwaysVisible) { + if (this.onlyDrawSelectedParts(livingEntityRenderState)) { + VertexConsumer vertexConsumer = multiBufferSource.getBuffer((RenderType)this.bufferProvider.apply(this.texture)); + float h = this.alphaFunction.apply(livingEntityRenderState, livingEntityRenderState.ageInTicks); + int j = ARGB.color(Mth.floor(h * 255.0F), 255, 255, 255); + this.getParentModel().renderToBuffer(poseStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(livingEntityRenderState, 0.0F), j); this.resetDrawForAllParts(); } } diff --git a/net/minecraft/client/renderer/entity/layers/LlamaDecorLayer.java b/net/minecraft/client/renderer/entity/layers/LlamaDecorLayer.java index a6db5901..8a6f9a30 100644 --- a/net/minecraft/client/renderer/entity/layers/LlamaDecorLayer.java +++ b/net/minecraft/client/renderer/entity/layers/LlamaDecorLayer.java @@ -9,11 +9,12 @@ import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.LlamaRenderState; +import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.equipment.EquipmentModel; -import net.minecraft.world.item.equipment.EquipmentModels; +import net.minecraft.world.item.equipment.EquipmentAsset; +import net.minecraft.world.item.equipment.EquipmentAssets; import net.minecraft.world.item.equipment.Equippable; @Environment(EnvType.CLIENT) @@ -29,21 +30,26 @@ public class LlamaDecorLayer extends RenderLayer { this.babyModel = new LlamaModel(models.bakeLayer(ModelLayers.LLAMA_BABY_DECOR)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, LlamaRenderState renderState, float yRot, float xRot) { - ItemStack itemStack = renderState.bodyItem; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, LlamaRenderState llamaRenderState, float f, float g) { + ItemStack itemStack = llamaRenderState.bodyItem; Equippable equippable = itemStack.get(DataComponents.EQUIPPABLE); - if (equippable != null && equippable.model().isPresent()) { - this.renderEquipment(poseStack, bufferSource, renderState, itemStack, (ResourceLocation)equippable.model().get(), packedLight); - } else if (renderState.isTraderLlama) { - this.renderEquipment(poseStack, bufferSource, renderState, ItemStack.EMPTY, EquipmentModels.TRADER_LLAMA, packedLight); + if (equippable != null && equippable.assetId().isPresent()) { + this.renderEquipment(poseStack, multiBufferSource, llamaRenderState, itemStack, (ResourceKey)equippable.assetId().get(), i); + } else if (llamaRenderState.isTraderLlama) { + this.renderEquipment(poseStack, multiBufferSource, llamaRenderState, ItemStack.EMPTY, EquipmentAssets.TRADER_LLAMA, i); } } private void renderEquipment( - PoseStack poseStack, MultiBufferSource bufferSource, LlamaRenderState renderState, ItemStack item, ResourceLocation equipmentModel, int packedLight + PoseStack poseStack, + MultiBufferSource bufferSource, + LlamaRenderState renderState, + ItemStack stack, + ResourceKey equipmentAsset, + int packedLight ) { LlamaModel llamaModel = renderState.isBaby ? this.babyModel : this.adultModel; llamaModel.setupAnim(renderState); - this.equipmentRenderer.renderLayers(EquipmentModel.LayerType.LLAMA_BODY, equipmentModel, llamaModel, item, poseStack, bufferSource, packedLight); + this.equipmentRenderer.renderLayers(EquipmentClientInfo.LayerType.LLAMA_BODY, equipmentAsset, llamaModel, stack, poseStack, bufferSource, packedLight); } } diff --git a/net/minecraft/client/renderer/entity/layers/MushroomCowMushroomLayer.java b/net/minecraft/client/renderer/entity/layers/MushroomCowMushroomLayer.java index 1510b126..14be15b4 100644 --- a/net/minecraft/client/renderer/entity/layers/MushroomCowMushroomLayer.java +++ b/net/minecraft/client/renderer/entity/layers/MushroomCowMushroomLayer.java @@ -24,19 +24,19 @@ public class MushroomCowMushroomLayer extends RenderLayer { - private final ItemRenderer itemRenderer; - - public PandaHoldsItemLayer(RenderLayerParent renderer, ItemRenderer itemRenderer) { - super(renderer); - this.itemRenderer = itemRenderer; + public PandaHoldsItemLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, PandaRenderState renderState, float yRot, float xRot) { - BakedModel bakedModel = renderState.getMainHandItemModel(); - if (bakedModel != null && renderState.isSitting && !renderState.isScared) { - float f = -0.6F; - float g = 1.4F; - if (renderState.isEating) { - f -= 0.2F * Mth.sin(renderState.ageInTicks * 0.6F) + 0.2F; - g -= 0.09F * Mth.sin(renderState.ageInTicks * 0.6F); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, PandaRenderState pandaRenderState, float f, float g) { + ItemStackRenderState itemStackRenderState = pandaRenderState.heldItem; + if (!itemStackRenderState.isEmpty() && pandaRenderState.isSitting && !pandaRenderState.isScared) { + float h = -0.6F; + float j = 1.4F; + if (pandaRenderState.isEating) { + h -= 0.2F * Mth.sin(pandaRenderState.ageInTicks * 0.6F) + 0.2F; + j -= 0.09F * Mth.sin(pandaRenderState.ageInTicks * 0.6F); } poseStack.pushPose(); - poseStack.translate(0.1F, g, f); - ItemStack itemStack = renderState.getMainHandItem(); - this.itemRenderer.render(itemStack, ItemDisplayContext.GROUND, false, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY, bakedModel); + poseStack.translate(0.1F, j, h); + itemStackRenderState.render(poseStack, multiBufferSource, i, OverlayTexture.NO_OVERLAY); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer.java b/net/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer.java index 7ba63fcb..d102e011 100644 --- a/net/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer.java +++ b/net/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer.java @@ -26,15 +26,15 @@ public class ParrotOnShoulderLayer extends RenderLayer & ArmedModel & HeadedModel> extends ItemInHandLayer { - private final ItemRenderer itemRenderer; private static final float X_ROT_MIN = (float) (-Math.PI / 6); private static final float X_ROT_MAX = (float) (Math.PI / 2); - public PlayerItemInHandLayer(RenderLayerParent renderer, ItemRenderer itemRenderer) { - super(renderer, itemRenderer); - this.itemRenderer = itemRenderer; + public PlayerItemInHandLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } protected void renderArmWithItem( - S renderState, - @Nullable BakedModel itemModel, - ItemStack item, - ItemDisplayContext displayContext, - HumanoidArm arm, - PoseStack poseStack, - MultiBufferSource bufferSource, - int packedLight + S playerRenderState, ItemStackRenderState itemStackRenderState, HumanoidArm humanoidArm, PoseStack poseStack, MultiBufferSource multiBufferSource, int i ) { - if (itemModel != null) { - InteractionHand interactionHand = arm == renderState.mainArm ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; - if (renderState.isUsingItem && renderState.useItemHand == interactionHand && renderState.attackTime < 1.0E-5F && item.is(Items.SPYGLASS)) { - this.renderArmWithSpyglass(itemModel, item, arm, poseStack, bufferSource, packedLight); + if (!itemStackRenderState.isEmpty()) { + InteractionHand interactionHand = humanoidArm == playerRenderState.mainArm ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + if (playerRenderState.isUsingItem + && playerRenderState.useItemHand == interactionHand + && playerRenderState.attackTime < 1.0E-5F + && !playerRenderState.heldOnHead.isEmpty()) { + this.renderItemHeldToEye(playerRenderState.heldOnHead, humanoidArm, poseStack, multiBufferSource, i); } else { - super.renderArmWithItem(renderState, itemModel, item, displayContext, arm, poseStack, bufferSource, packedLight); + super.renderArmWithItem(playerRenderState, itemStackRenderState, humanoidArm, poseStack, multiBufferSource, i); } } } - private void renderArmWithSpyglass(BakedModel model, ItemStack item, HumanoidArm arm, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { + private void renderItemHeldToEye(ItemStackRenderState renderState, HumanoidArm arm, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { poseStack.pushPose(); this.getParentModel().root().translateAndRotate(poseStack); ModelPart modelPart = this.getParentModel().getHead(); @@ -63,7 +52,7 @@ public class PlayerItemInHandLayer { this.babyModel = new SheepFurModel(modelSet.bakeLayer(ModelLayers.SHEEP_BABY_WOOL)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, SheepRenderState renderState, float yRot, float xRot) { - if (!renderState.isSheared) { - EntityModel entityModel = renderState.isBaby ? this.babyModel : this.adultModel; - if (renderState.isInvisible) { - if (renderState.appearsGlowing) { - entityModel.setupAnim(renderState); - VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.outline(SHEEP_FUR_LOCATION)); - entityModel.renderToBuffer(poseStack, vertexConsumer, packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0F), -16777216); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, SheepRenderState sheepRenderState, float f, float g) { + if (!sheepRenderState.isSheared) { + EntityModel entityModel = sheepRenderState.isBaby ? this.babyModel : this.adultModel; + if (sheepRenderState.isInvisible) { + if (sheepRenderState.appearsGlowing) { + entityModel.setupAnim(sheepRenderState); + VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.outline(SHEEP_FUR_LOCATION)); + entityModel.renderToBuffer(poseStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(sheepRenderState, 0.0F), -16777216); } } else { - int q; - if (renderState.customName != null && "jeb_".equals(renderState.customName.getString())) { - int i = 25; - int j = Mth.floor(renderState.ageInTicks); - int k = j / 25 + renderState.id; - int l = DyeColor.values().length; - int m = k % l; - int n = (k + 1) % l; - float f = (j % 25 + Mth.frac(renderState.ageInTicks)) / 25.0F; - int o = Sheep.getColor(DyeColor.byId(m)); + int r; + if (sheepRenderState.customName != null && "jeb_".equals(sheepRenderState.customName.getString())) { + int j = 25; + int k = Mth.floor(sheepRenderState.ageInTicks); + int l = k / 25 + sheepRenderState.id; + int m = DyeColor.values().length; + int n = l % m; + int o = (l + 1) % m; + float h = (k % 25 + Mth.frac(sheepRenderState.ageInTicks)) / 25.0F; int p = Sheep.getColor(DyeColor.byId(n)); - q = ARGB.lerp(f, o, p); + int q = Sheep.getColor(DyeColor.byId(o)); + r = ARGB.lerp(h, p, q); } else { - q = Sheep.getColor(renderState.woolColor); + r = Sheep.getColor(sheepRenderState.woolColor); } - coloredCutoutModelCopyLayerRender(entityModel, SHEEP_FUR_LOCATION, poseStack, bufferSource, packedLight, renderState, q); + coloredCutoutModelCopyLayerRender(entityModel, SHEEP_FUR_LOCATION, poseStack, multiBufferSource, i, sheepRenderState, r); } } } diff --git a/net/minecraft/client/renderer/entity/layers/SkeletonClothingLayer.java b/net/minecraft/client/renderer/entity/layers/SkeletonClothingLayer.java index 5865bbbf..5334b36d 100644 --- a/net/minecraft/client/renderer/entity/layers/SkeletonClothingLayer.java +++ b/net/minecraft/client/renderer/entity/layers/SkeletonClothingLayer.java @@ -23,7 +23,7 @@ public class SkeletonClothingLayer(models.bakeLayer(modelLayerLocation)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, S renderState, float yRot, float xRot) { - coloredCutoutModelCopyLayerRender(this.layerModel, this.clothesLocation, poseStack, bufferSource, packedLight, renderState, -1); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, S skeletonRenderState, float f, float g) { + coloredCutoutModelCopyLayerRender(this.layerModel, this.clothesLocation, poseStack, multiBufferSource, i, skeletonRenderState, -1); } } diff --git a/net/minecraft/client/renderer/entity/layers/SlimeOuterLayer.java b/net/minecraft/client/renderer/entity/layers/SlimeOuterLayer.java index 19cb69be..5cef6861 100644 --- a/net/minecraft/client/renderer/entity/layers/SlimeOuterLayer.java +++ b/net/minecraft/client/renderer/entity/layers/SlimeOuterLayer.java @@ -23,18 +23,18 @@ public class SlimeOuterLayer extends RenderLayer { this.model = new SlimeModel(modelSet.bakeLayer(ModelLayers.SLIME_OUTER)); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, SlimeRenderState renderState, float yRot, float xRot) { - boolean bl = renderState.appearsGlowing && renderState.isInvisible; - if (!renderState.isInvisible || bl) { + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, SlimeRenderState slimeRenderState, float f, float g) { + boolean bl = slimeRenderState.appearsGlowing && slimeRenderState.isInvisible; + if (!slimeRenderState.isInvisible || bl) { VertexConsumer vertexConsumer; if (bl) { - vertexConsumer = bufferSource.getBuffer(RenderType.outline(SlimeRenderer.SLIME_LOCATION)); + vertexConsumer = multiBufferSource.getBuffer(RenderType.outline(SlimeRenderer.SLIME_LOCATION)); } else { - vertexConsumer = bufferSource.getBuffer(RenderType.entityTranslucent(SlimeRenderer.SLIME_LOCATION)); + vertexConsumer = multiBufferSource.getBuffer(RenderType.entityTranslucent(SlimeRenderer.SLIME_LOCATION)); } - this.model.setupAnim(renderState); - this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0F)); + this.model.setupAnim(slimeRenderState); + this.model.renderToBuffer(poseStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(slimeRenderState, 0.0F)); } } } diff --git a/net/minecraft/client/renderer/entity/layers/SnowGolemHeadLayer.java b/net/minecraft/client/renderer/entity/layers/SnowGolemHeadLayer.java index e0e68edf..db5b6bf4 100644 --- a/net/minecraft/client/renderer/entity/layers/SnowGolemHeadLayer.java +++ b/net/minecraft/client/renderer/entity/layers/SnowGolemHeadLayer.java @@ -1,64 +1,49 @@ package net.minecraft.client.renderer.entity.layers; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.SnowGolemModel; +import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.entity.state.SnowGolemRenderState; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @Environment(EnvType.CLIENT) -public class SnowGolemHeadLayer extends RenderLayer { +public class SnowGolemHeadLayer extends RenderLayer { private final BlockRenderDispatcher blockRenderer; - private final ItemRenderer itemRenderer; - public SnowGolemHeadLayer(RenderLayerParent renderer, BlockRenderDispatcher blockRenderer, ItemRenderer itemRenderer) { + public SnowGolemHeadLayer(RenderLayerParent renderer, BlockRenderDispatcher blockRenderer) { super(renderer); this.blockRenderer = blockRenderer; - this.itemRenderer = itemRenderer; } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, LivingEntityRenderState renderState, float yRot, float xRot) { - BakedModel bakedModel = renderState.headItemModel; - if (bakedModel != null) { - boolean bl = renderState.appearsGlowing && renderState.isInvisible; - if (!renderState.isInvisible || bl) { + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, SnowGolemRenderState snowGolemRenderState, float f, float g) { + if (snowGolemRenderState.hasPumpkin) { + if (!snowGolemRenderState.isInvisible || snowGolemRenderState.appearsGlowing) { poseStack.pushPose(); this.getParentModel().getHead().translateAndRotate(poseStack); - float f = 0.625F; + float h = 0.625F; poseStack.translate(0.0F, -0.34375F, 0.0F); poseStack.mulPose(Axis.YP.rotationDegrees(180.0F)); poseStack.scale(0.625F, -0.625F, -0.625F); - ItemStack itemStack = renderState.headItem; - if (bl && itemStack.getItem() instanceof BlockItem blockItem) { - BlockState blockState = blockItem.getBlock().defaultBlockState(); - BakedModel bakedModel2 = this.blockRenderer.getBlockModel(blockState); - int i = LivingEntityRenderer.getOverlayCoords(renderState, 0.0F); - poseStack.translate(-0.5F, -0.5F, -0.5F); - this.blockRenderer - .getModelRenderer() - .renderModel( - poseStack.last(), bufferSource.getBuffer(RenderType.outline(TextureAtlas.LOCATION_BLOCKS)), blockState, bakedModel2, 0.0F, 0.0F, 0.0F, packedLight, i - ); - } else { - this.itemRenderer - .render( - itemStack, ItemDisplayContext.HEAD, false, poseStack, bufferSource, packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0F), bakedModel - ); - } - + BlockState blockState = Blocks.CARVED_PUMPKIN.defaultBlockState(); + BakedModel bakedModel = this.blockRenderer.getBlockModel(blockState); + int j = LivingEntityRenderer.getOverlayCoords(snowGolemRenderState, 0.0F); + poseStack.translate(-0.5F, -0.5F, -0.5F); + VertexConsumer vertexConsumer = snowGolemRenderState.appearsGlowing && snowGolemRenderState.isInvisible + ? multiBufferSource.getBuffer(RenderType.outline(TextureAtlas.LOCATION_BLOCKS)) + : multiBufferSource.getBuffer(ItemBlockRenderTypes.getRenderType(blockState)); + this.blockRenderer.getModelRenderer().renderModel(poseStack.last(), vertexConsumer, blockState, bakedModel, 0.0F, 0.0F, 0.0F, i, j); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/SpinAttackEffectLayer.java b/net/minecraft/client/renderer/entity/layers/SpinAttackEffectLayer.java index 22c0eac2..da9108c6 100644 --- a/net/minecraft/client/renderer/entity/layers/SpinAttackEffectLayer.java +++ b/net/minecraft/client/renderer/entity/layers/SpinAttackEffectLayer.java @@ -24,11 +24,11 @@ public class SpinAttackEffectLayer extends RenderLayer extends RenderLaye this.model.renderToBuffer(poseStack, bufferSource.getBuffer(this.model.renderType(this.texture)), packedLight, OverlayTexture.NO_OVERLAY); } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, PlayerRenderState renderState, float yRot, float xRot) { - int i = this.numStuck(renderState); - if (i > 0) { - RandomSource randomSource = RandomSource.create(renderState.id); + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, PlayerRenderState playerRenderState, float f, float g) { + int j = this.numStuck(playerRenderState); + if (j > 0) { + RandomSource randomSource = RandomSource.create(playerRenderState.id); - for (int j = 0; j < i; j++) { + for (int k = 0; k < j; k++) { poseStack.pushPose(); ModelPart modelPart = this.getParentModel().getRandomBodyPart(randomSource); - ModelPart.Cube cube = modelPart.getRandomCube(randomSource); + Cube cube = modelPart.getRandomCube(randomSource); modelPart.translateAndRotate(poseStack); - float f = randomSource.nextFloat(); - float g = randomSource.nextFloat(); float h = randomSource.nextFloat(); + float l = randomSource.nextFloat(); + float m = randomSource.nextFloat(); if (this.placementStyle == StuckInBodyLayer.PlacementStyle.ON_SURFACE) { - int k = randomSource.nextInt(3); - switch (k) { + int n = randomSource.nextInt(3); + switch (n) { case 0: - f = snapToFace(f); + h = snapToFace(h); break; case 1: - g = snapToFace(g); + l = snapToFace(l); break; default: - h = snapToFace(h); + m = snapToFace(m); } } - poseStack.translate(Mth.lerp(f, cube.minX, cube.maxX) / 16.0F, Mth.lerp(g, cube.minY, cube.maxY) / 16.0F, Mth.lerp(h, cube.minZ, cube.maxZ) / 16.0F); - this.renderStuckItem(poseStack, bufferSource, packedLight, -(f * 2.0F - 1.0F), -(g * 2.0F - 1.0F), -(h * 2.0F - 1.0F)); + poseStack.translate(Mth.lerp(h, cube.minX, cube.maxX) / 16.0F, Mth.lerp(l, cube.minY, cube.maxY) / 16.0F, Mth.lerp(m, cube.minZ, cube.maxZ) / 16.0F); + this.renderStuckItem(poseStack, multiBufferSource, i, -(h * 2.0F - 1.0F), -(l * 2.0F - 1.0F), -(m * 2.0F - 1.0F)); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/TropicalFishPatternLayer.java b/net/minecraft/client/renderer/entity/layers/TropicalFishPatternLayer.java index c851903d..c0142b0f 100644 --- a/net/minecraft/client/renderer/entity/layers/TropicalFishPatternLayer.java +++ b/net/minecraft/client/renderer/entity/layers/TropicalFishPatternLayer.java @@ -37,8 +37,8 @@ public class TropicalFishPatternLayer extends RenderLayer entityModel = (EntityModel)(switch (pattern.base()) { case SMALL -> this.modelA; @@ -59,6 +59,8 @@ public class TropicalFishPatternLayer extends RenderLayer BETTY_TEXTURE; case CLAYFISH -> CLAYFISH_TEXTURE; }; - coloredCutoutModelCopyLayerRender(entityModel, resourceLocation, poseStack, bufferSource, packedLight, renderState, renderState.patternColor); + coloredCutoutModelCopyLayerRender( + entityModel, resourceLocation, poseStack, multiBufferSource, i, tropicalFishRenderState, tropicalFishRenderState.patternColor + ); } } diff --git a/net/minecraft/client/renderer/entity/layers/VillagerProfessionLayer.java b/net/minecraft/client/renderer/entity/layers/VillagerProfessionLayer.java index dc50a938..bfa125c0 100644 --- a/net/minecraft/client/renderer/entity/layers/VillagerProfessionLayer.java +++ b/net/minecraft/client/renderer/entity/layers/VillagerProfessionLayer.java @@ -12,13 +12,12 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.VillagerHeadModel; +import net.minecraft.client.model.VillagerLikeModel; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; import net.minecraft.client.renderer.entity.state.VillagerDataHolderRenderState; -import net.minecraft.client.resources.metadata.animation.VillagerMetaDataSection; -import net.minecraft.client.resources.metadata.animation.VillagerMetaDataSection.Hat; +import net.minecraft.client.resources.metadata.animation.VillagerMetadataSection; import net.minecraft.core.DefaultedRegistry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; @@ -29,7 +28,7 @@ import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; @Environment(EnvType.CLIENT) -public class VillagerProfessionLayer & VillagerHeadModel> +public class VillagerProfessionLayer & VillagerLikeModel> extends RenderLayer { private static final Int2ObjectMap LEVEL_LOCATIONS = Util.make(new Int2ObjectOpenHashMap<>(), int2ObjectOpenHashMap -> { int2ObjectOpenHashMap.put(1, ResourceLocation.withDefaultNamespace("stone")); @@ -38,8 +37,8 @@ public class VillagerProfessionLayer typeHatCache = new Object2ObjectOpenHashMap<>(); - private final Object2ObjectMap professionHatCache = new Object2ObjectOpenHashMap<>(); + private final Object2ObjectMap typeHatCache = new Object2ObjectOpenHashMap<>(); + private final Object2ObjectMap professionHatCache = new Object2ObjectOpenHashMap<>(); private final ResourceManager resourceManager; private final String path; @@ -49,26 +48,26 @@ public class VillagerProfessionLayer)(string2 -> "textures/entity/" + this.path + "/" + folder + "/" + string2 + ".png")); } - public Hat getHatData(Object2ObjectMap cache, String folder, DefaultedRegistry villagerTypeRegistry, K key) { + public VillagerMetadataSection.Hat getHatData(Object2ObjectMap cache, String folder, DefaultedRegistry registry, K key) { return cache.computeIfAbsent( - key, object2 -> (Hat)this.resourceManager.getResource(this.getResourceLocation(folder, villagerTypeRegistry.getKey(key))).flatMap(resource -> { + key, object2 -> (VillagerMetadataSection.Hat)this.resourceManager.getResource(this.getResourceLocation(folder, registry.getKey(key))).flatMap(resource -> { try { - return resource.metadata().getSection(VillagerMetaDataSection.SERIALIZER).map(VillagerMetaDataSection::getHat); + return resource.metadata().getSection(VillagerMetadataSection.TYPE).map(VillagerMetadataSection::hat); } catch (IOException var2) { return Optional.empty(); } - }).orElse(Hat.NONE) + }).orElse(VillagerMetadataSection.Hat.NONE) ); } } diff --git a/net/minecraft/client/renderer/entity/layers/WingsLayer.java b/net/minecraft/client/renderer/entity/layers/WingsLayer.java index f6e559ef..3dc4d430 100644 --- a/net/minecraft/client/renderer/entity/layers/WingsLayer.java +++ b/net/minecraft/client/renderer/entity/layers/WingsLayer.java @@ -12,10 +12,12 @@ import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.HumanoidRenderState; import net.minecraft.client.renderer.entity.state.PlayerRenderState; import net.minecraft.client.resources.PlayerSkin; +import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.equipment.EquipmentModel; +import net.minecraft.world.item.equipment.EquipmentAsset; import net.minecraft.world.item.equipment.Equippable; import org.jetbrains.annotations.Nullable; @@ -32,18 +34,26 @@ public class WingsLayer> this.equipmentRenderer = equipmentRenderer; } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, S renderState, float yRot, float xRot) { - ItemStack itemStack = renderState.chestItem; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, S humanoidRenderState, float f, float g) { + ItemStack itemStack = humanoidRenderState.chestEquipment; Equippable equippable = itemStack.get(DataComponents.EQUIPPABLE); - if (equippable != null && !equippable.model().isEmpty()) { - ResourceLocation resourceLocation = getPlayerElytraTexture(renderState); - ElytraModel elytraModel = renderState.isBaby ? this.elytraBabyModel : this.elytraModel; - ResourceLocation resourceLocation2 = (ResourceLocation)equippable.model().get(); + if (equippable != null && !equippable.assetId().isEmpty()) { + ResourceLocation resourceLocation = getPlayerElytraTexture(humanoidRenderState); + ElytraModel elytraModel = humanoidRenderState.isBaby ? this.elytraBabyModel : this.elytraModel; poseStack.pushPose(); poseStack.translate(0.0F, 0.0F, 0.125F); - elytraModel.setupAnim(renderState); + elytraModel.setupAnim(humanoidRenderState); this.equipmentRenderer - .renderLayers(EquipmentModel.LayerType.WINGS, resourceLocation2, elytraModel, itemStack, poseStack, bufferSource, packedLight, resourceLocation); + .renderLayers( + EquipmentClientInfo.LayerType.WINGS, + (ResourceKey)equippable.assetId().get(), + elytraModel, + itemStack, + poseStack, + multiBufferSource, + i, + resourceLocation + ); poseStack.popPose(); } } diff --git a/net/minecraft/client/renderer/entity/layers/WitchItemLayer.java b/net/minecraft/client/renderer/entity/layers/WitchItemLayer.java index eca956cc..3b174334 100644 --- a/net/minecraft/client/renderer/entity/layers/WitchItemLayer.java +++ b/net/minecraft/client/renderer/entity/layers/WitchItemLayer.java @@ -5,21 +5,17 @@ import com.mojang.math.Axis; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.WitchModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.state.WitchRenderState; -import net.minecraft.world.item.Items; @Environment(EnvType.CLIENT) public class WitchItemLayer extends CrossedArmsItemLayer { - public WitchItemLayer(RenderLayerParent renderLayerParent, ItemRenderer itemRenderer) { - super(renderLayerParent, itemRenderer); + public WitchItemLayer(RenderLayerParent renderLayerParent) { + super(renderLayerParent); } - public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, WitchRenderState witchRenderState, float f, float g) { - poseStack.pushPose(); - if (witchRenderState.rightHandItem.is(Items.POTION)) { + protected void applyTranslation(WitchRenderState witchRenderState, PoseStack poseStack) { + if (witchRenderState.isHoldingPotion) { this.getParentModel().root().translateAndRotate(poseStack); this.getParentModel().getHead().translateAndRotate(poseStack); this.getParentModel().getNose().translateAndRotate(poseStack); @@ -27,10 +23,9 @@ public class WitchItemLayer extends CrossedArmsItemLayer { this.equipmentRenderer = equipmentRenderer; } - public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, WolfRenderState renderState, float yRot, float xRot) { - ItemStack itemStack = renderState.bodyArmorItem; + public void render(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, WolfRenderState wolfRenderState, float f, float g) { + ItemStack itemStack = wolfRenderState.bodyArmorItem; Equippable equippable = itemStack.get(DataComponents.EQUIPPABLE); - if (equippable != null && !equippable.model().isEmpty()) { - WolfModel wolfModel = renderState.isBaby ? this.babyModel : this.adultModel; - ResourceLocation resourceLocation = (ResourceLocation)equippable.model().get(); - wolfModel.setupAnim(renderState); - this.equipmentRenderer.renderLayers(EquipmentModel.LayerType.WOLF_BODY, resourceLocation, wolfModel, itemStack, poseStack, bufferSource, packedLight); - this.maybeRenderCracks(poseStack, bufferSource, packedLight, itemStack, wolfModel); + if (equippable != null && !equippable.assetId().isEmpty()) { + WolfModel wolfModel = wolfRenderState.isBaby ? this.babyModel : this.adultModel; + wolfModel.setupAnim(wolfRenderState); + this.equipmentRenderer + .renderLayers( + EquipmentClientInfo.LayerType.WOLF_BODY, (ResourceKey)equippable.assetId().get(), wolfModel, itemStack, poseStack, multiBufferSource, i + ); + this.maybeRenderCracks(poseStack, multiBufferSource, i, itemStack, wolfModel); } } diff --git a/net/minecraft/client/renderer/entity/player/PlayerRenderer.java b/net/minecraft/client/renderer/entity/player/PlayerRenderer.java index ca521055..647e09a2 100644 --- a/net/minecraft/client/renderer/entity/player/PlayerRenderer.java +++ b/net/minecraft/client/renderer/entity/player/PlayerRenderer.java @@ -26,7 +26,6 @@ import net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer; import net.minecraft.client.renderer.entity.layers.SpinAttackEffectLayer; import net.minecraft.client.renderer.entity.layers.WingsLayer; import net.minecraft.client.renderer.entity.state.PlayerRenderState; -import net.minecraft.client.renderer.entity.state.PlayerRenderState.HandState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.CommonComponents; @@ -38,8 +37,10 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.animal.Parrot; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.PlayerModelPart; import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemUseAnimation; import net.minecraft.world.item.Items; @@ -62,42 +63,44 @@ public class PlayerRenderer extends LivingEntityRenderer(this, context.getItemRenderer())); + this.addLayer(new PlayerItemInHandLayer<>(this)); this.addLayer(new ArrowLayer<>(this, context)); this.addLayer(new Deadmau5EarsLayer(this, context.getModelSet())); - this.addLayer(new CapeLayer(this, context.getModelSet(), context.getEquipmentModels())); - this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), context.getItemRenderer())); + this.addLayer(new CapeLayer(this, context.getModelSet(), context.getEquipmentAssets())); + this.addLayer(new CustomHeadLayer<>(this, context.getModelSet())); this.addLayer(new WingsLayer<>(this, context.getModelSet(), context.getEquipmentRenderer())); this.addLayer(new ParrotOnShoulderLayer(this, context.getModelSet())); this.addLayer(new SpinAttackEffectLayer(this, context.getModelSet())); this.addLayer(new BeeStingerLayer<>(this, context)); } - protected boolean shouldRenderLayers(PlayerRenderState renderState) { - return !renderState.isSpectator; + protected boolean shouldRenderLayers(PlayerRenderState playerRenderState) { + return !playerRenderState.isSpectator; } - public Vec3 getRenderOffset(PlayerRenderState renderState) { - Vec3 vec3 = super.getRenderOffset(renderState); - return renderState.isCrouching ? vec3.add(0.0, renderState.scale * -2.0F / 16.0, 0.0) : vec3; + public Vec3 getRenderOffset(PlayerRenderState playerRenderState) { + Vec3 vec3 = super.getRenderOffset(playerRenderState); + return playerRenderState.isCrouching ? vec3.add(0.0, playerRenderState.scale * -2.0F / 16.0, 0.0) : vec3; } - public static HumanoidModel.ArmPose getArmPose(PlayerRenderState renderState, HumanoidArm arm) { - HumanoidModel.ArmPose armPose = getArmPose(renderState, renderState.mainHandState, InteractionHand.MAIN_HAND); - HumanoidModel.ArmPose armPose2 = getArmPose(renderState, renderState.offhandState, InteractionHand.OFF_HAND); + private static HumanoidModel.ArmPose getArmPose(AbstractClientPlayer player, HumanoidArm arm) { + ItemStack itemStack = player.getItemInHand(InteractionHand.MAIN_HAND); + ItemStack itemStack2 = player.getItemInHand(InteractionHand.OFF_HAND); + HumanoidModel.ArmPose armPose = getArmPose(player, itemStack, InteractionHand.MAIN_HAND); + HumanoidModel.ArmPose armPose2 = getArmPose(player, itemStack2, InteractionHand.OFF_HAND); if (armPose.isTwoHanded()) { - armPose2 = renderState.offhandState.isEmpty ? HumanoidModel.ArmPose.EMPTY : HumanoidModel.ArmPose.ITEM; + armPose2 = itemStack2.isEmpty() ? HumanoidModel.ArmPose.EMPTY : HumanoidModel.ArmPose.ITEM; } - return renderState.mainArm == arm ? armPose : armPose2; + return player.getMainArm() == arm ? armPose : armPose2; } - private static HumanoidModel.ArmPose getArmPose(PlayerRenderState renderState, HandState handState, InteractionHand hand) { - if (handState.isEmpty) { + private static HumanoidModel.ArmPose getArmPose(Player player, ItemStack stack, InteractionHand hand) { + if (stack.isEmpty()) { return HumanoidModel.ArmPose.EMPTY; } else { - if (renderState.useItemHand == hand && renderState.useItemRemainingTicks > 0) { - ItemUseAnimation itemUseAnimation = handState.useAnimation; + if (player.getUsedItemHand() == hand && player.getUseItemRemainingTicks() > 0) { + ItemUseAnimation itemUseAnimation = stack.getUseAnimation(); if (itemUseAnimation == ItemUseAnimation.BLOCK) { return HumanoidModel.ArmPose.BLOCK; } @@ -125,7 +128,7 @@ public class PlayerRenderer extends LivingEntityRenderer 0.0 && e > 0.0) { renderState.shouldApplyFlyingYRot = true; - double f = (vec32.x * vec3.x + vec32.z * vec3.z) / Math.sqrt(d * e); + double f = Math.min(1.0, (vec32.x * vec3.x + vec32.z * vec3.z) / Math.sqrt(d * e)); double g = vec32.x * vec3.z - vec32.z * vec3.x; renderState.flyingYRot = (float)(Math.signum(g) * Math.acos(f)); } else { @@ -214,13 +224,6 @@ public class PlayerRenderer extends LivingEntityRenderer 0.0F) { - super.setupRotations(renderState, poseStack, bodyRot, scale); - float hx = renderState.isInWater ? -90.0F - g : -90.0F; - float i = Mth.lerp(f, 0.0F, hx); - poseStack.mulPose(Axis.XP.rotationDegrees(i)); - if (renderState.isVisuallySwimming) { + } else if (h > 0.0F) { + super.setupRotations(playerRenderState, poseStack, f, g); + float jx = playerRenderState.isInWater ? -90.0F - i : -90.0F; + float k = Mth.lerp(h, 0.0F, jx); + poseStack.mulPose(Axis.XP.rotationDegrees(k)); + if (playerRenderState.isVisuallySwimming) { poseStack.translate(0.0F, -1.0F, 0.3F); } } else { - super.setupRotations(renderState, poseStack, bodyRot, scale); + super.setupRotations(playerRenderState, poseStack, f, g); } } } diff --git a/net/minecraft/client/renderer/entity/state/AllayRenderState.java b/net/minecraft/client/renderer/entity/state/AllayRenderState.java index 0a7e0085..23ed3f02 100644 --- a/net/minecraft/client/renderer/entity/state/AllayRenderState.java +++ b/net/minecraft/client/renderer/entity/state/AllayRenderState.java @@ -4,7 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) -public class AllayRenderState extends LivingEntityRenderState { +public class AllayRenderState extends ArmedEntityRenderState { public boolean isDancing; public boolean isSpinning; public float spinningProgress; diff --git a/net/minecraft/client/renderer/entity/state/ArmedEntityRenderState.java b/net/minecraft/client/renderer/entity/state/ArmedEntityRenderState.java new file mode 100644 index 00000000..837f2798 --- /dev/null +++ b/net/minecraft/client/renderer/entity/state/ArmedEntityRenderState.java @@ -0,0 +1,33 @@ +package net.minecraft.client.renderer.entity.state; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.item.ItemModelResolver; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class ArmedEntityRenderState extends LivingEntityRenderState { + public HumanoidArm mainArm = HumanoidArm.RIGHT; + public HumanoidModel.ArmPose rightArmPose = HumanoidModel.ArmPose.EMPTY; + public final ItemStackRenderState rightHandItem = new ItemStackRenderState(); + public HumanoidModel.ArmPose leftArmPose = HumanoidModel.ArmPose.EMPTY; + public final ItemStackRenderState leftHandItem = new ItemStackRenderState(); + + public ItemStackRenderState getMainHandItem() { + return this.mainArm == HumanoidArm.RIGHT ? this.rightHandItem : this.leftHandItem; + } + + public static void extractArmedEntityRenderState(LivingEntity entity, ArmedEntityRenderState reusedState, ItemModelResolver itemModelResolver) { + reusedState.mainArm = entity.getMainArm(); + itemModelResolver.updateForLiving( + reusedState.rightHandItem, entity.getItemHeldByArm(HumanoidArm.RIGHT), ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, false, entity + ); + itemModelResolver.updateForLiving( + reusedState.leftHandItem, entity.getItemHeldByArm(HumanoidArm.LEFT), ItemDisplayContext.THIRD_PERSON_LEFT_HAND, true, entity + ); + } +} diff --git a/net/minecraft/client/renderer/entity/state/AxolotlRenderState.java b/net/minecraft/client/renderer/entity/state/AxolotlRenderState.java index e6918f79..953af65b 100644 --- a/net/minecraft/client/renderer/entity/state/AxolotlRenderState.java +++ b/net/minecraft/client/renderer/entity/state/AxolotlRenderState.java @@ -2,11 +2,11 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.world.entity.animal.axolotl.Axolotl; +import net.minecraft.world.entity.animal.axolotl.Axolotl.Variant; @Environment(EnvType.CLIENT) public class AxolotlRenderState extends LivingEntityRenderState { - public Axolotl.Variant variant = Axolotl.Variant.LUCY; + public Variant variant = Variant.LUCY; public float playingDeadFactor; public float movingFactor; public float inWaterFactor = 1.0F; diff --git a/net/minecraft/client/renderer/entity/state/CreakingRenderState.java b/net/minecraft/client/renderer/entity/state/CreakingRenderState.java index 632802a0..4c6482e2 100644 --- a/net/minecraft/client/renderer/entity/state/CreakingRenderState.java +++ b/net/minecraft/client/renderer/entity/state/CreakingRenderState.java @@ -6,8 +6,9 @@ import net.minecraft.world.entity.AnimationState; @Environment(EnvType.CLIENT) public class CreakingRenderState extends LivingEntityRenderState { - public AnimationState invulnerabilityAnimationState = new AnimationState(); - public AnimationState attackAnimationState = new AnimationState(); - public boolean isActive; + public final AnimationState invulnerabilityAnimationState = new AnimationState(); + public final AnimationState attackAnimationState = new AnimationState(); + public final AnimationState deathAnimationState = new AnimationState(); + public boolean eyesGlowing; public boolean canMove; } diff --git a/net/minecraft/client/renderer/entity/state/DolphinRenderState.java b/net/minecraft/client/renderer/entity/state/DolphinRenderState.java index 98b14b65..430df31a 100644 --- a/net/minecraft/client/renderer/entity/state/DolphinRenderState.java +++ b/net/minecraft/client/renderer/entity/state/DolphinRenderState.java @@ -4,6 +4,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) -public class DolphinRenderState extends LivingEntityRenderState { +public class DolphinRenderState extends HoldingEntityRenderState { public boolean isMoving; } diff --git a/net/minecraft/client/renderer/entity/state/FireworkRocketRenderState.java b/net/minecraft/client/renderer/entity/state/FireworkRocketRenderState.java index 12334e2a..74a8defe 100644 --- a/net/minecraft/client/renderer/entity/state/FireworkRocketRenderState.java +++ b/net/minecraft/client/renderer/entity/state/FireworkRocketRenderState.java @@ -2,14 +2,10 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; +import net.minecraft.client.renderer.item.ItemStackRenderState; @Environment(EnvType.CLIENT) public class FireworkRocketRenderState extends EntityRenderState { public boolean isShotAtAngle; - @Nullable - public BakedModel itemModel; - public ItemStack item = ItemStack.EMPTY; + public final ItemStackRenderState item = new ItemStackRenderState(); } diff --git a/net/minecraft/client/renderer/entity/state/FoxRenderState.java b/net/minecraft/client/renderer/entity/state/FoxRenderState.java index 679e2d4e..21ba45f9 100644 --- a/net/minecraft/client/renderer/entity/state/FoxRenderState.java +++ b/net/minecraft/client/renderer/entity/state/FoxRenderState.java @@ -5,7 +5,7 @@ import net.fabricmc.api.Environment; import net.minecraft.world.entity.animal.Fox; @Environment(EnvType.CLIENT) -public class FoxRenderState extends LivingEntityRenderState { +public class FoxRenderState extends HoldingEntityRenderState { public float headRollAngle; public float crouchAmount; public boolean isCrouching; diff --git a/net/minecraft/client/renderer/entity/state/HoldingEntityRenderState.java b/net/minecraft/client/renderer/entity/state/HoldingEntityRenderState.java new file mode 100644 index 00000000..e57deee0 --- /dev/null +++ b/net/minecraft/client/renderer/entity/state/HoldingEntityRenderState.java @@ -0,0 +1,17 @@ +package net.minecraft.client.renderer.entity.state; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.item.ItemModelResolver; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class HoldingEntityRenderState extends LivingEntityRenderState { + public final ItemStackRenderState heldItem = new ItemStackRenderState(); + + public static void extractHoldingEntityRenderState(LivingEntity entity, HoldingEntityRenderState reusedState, ItemModelResolver resolver) { + resolver.updateForLiving(reusedState.heldItem, entity.getMainHandItem(), ItemDisplayContext.GROUND, false, entity); + } +} diff --git a/net/minecraft/client/renderer/entity/state/HumanoidRenderState.java b/net/minecraft/client/renderer/entity/state/HumanoidRenderState.java index 7ee311a2..1cb5becc 100644 --- a/net/minecraft/client/renderer/entity/state/HumanoidRenderState.java +++ b/net/minecraft/client/renderer/entity/state/HumanoidRenderState.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.ItemStack; @Environment(EnvType.CLIENT) -public class HumanoidRenderState extends LivingEntityRenderState { +public class HumanoidRenderState extends ArmedEntityRenderState { public float swimAmount; public float attackTime; public float speedValue = 1.0F; @@ -23,7 +23,8 @@ public class HumanoidRenderState extends LivingEntityRenderState { public float elytraRotX; public float elytraRotY; public float elytraRotZ; - public ItemStack chestItem = ItemStack.EMPTY; - public ItemStack legsItem = ItemStack.EMPTY; - public ItemStack feetItem = ItemStack.EMPTY; + public ItemStack headEquipment = ItemStack.EMPTY; + public ItemStack chestEquipment = ItemStack.EMPTY; + public ItemStack legsEquipment = ItemStack.EMPTY; + public ItemStack feetEquipment = ItemStack.EMPTY; } diff --git a/net/minecraft/client/renderer/entity/state/IllagerRenderState.java b/net/minecraft/client/renderer/entity/state/IllagerRenderState.java index bdc13880..e4cebfb1 100644 --- a/net/minecraft/client/renderer/entity/state/IllagerRenderState.java +++ b/net/minecraft/client/renderer/entity/state/IllagerRenderState.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.monster.AbstractIllager; @Environment(EnvType.CLIENT) -public class IllagerRenderState extends LivingEntityRenderState { +public class IllagerRenderState extends ArmedEntityRenderState { public boolean isRiding; public boolean isAggressive; public HumanoidArm mainArm = HumanoidArm.RIGHT; diff --git a/net/minecraft/client/renderer/entity/state/ItemClusterRenderState.java b/net/minecraft/client/renderer/entity/state/ItemClusterRenderState.java new file mode 100644 index 00000000..ed381152 --- /dev/null +++ b/net/minecraft/client/renderer/entity/state/ItemClusterRenderState.java @@ -0,0 +1,39 @@ +package net.minecraft.client.renderer.entity.state; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.item.ItemModelResolver; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; + +@Environment(EnvType.CLIENT) +public class ItemClusterRenderState extends EntityRenderState { + public final ItemStackRenderState item = new ItemStackRenderState(); + public int count; + public int seed; + + public void extractItemGroupRenderState(Entity entity, ItemStack stack, ItemModelResolver itemModelResolver) { + itemModelResolver.updateForNonLiving(this.item, stack, ItemDisplayContext.GROUND, entity); + this.count = getRenderedAmount(stack.getCount()); + this.seed = getSeedForItemStack(stack); + } + + public static int getSeedForItemStack(ItemStack stack) { + return stack.isEmpty() ? 187 : Item.getId(stack.getItem()) + stack.getDamageValue(); + } + + public static int getRenderedAmount(int count) { + if (count <= 1) { + return 1; + } else if (count <= 16) { + return 2; + } else if (count <= 32) { + return 3; + } else { + return count <= 48 ? 4 : 5; + } + } +} diff --git a/net/minecraft/client/renderer/entity/state/ItemDisplayEntityRenderState.java b/net/minecraft/client/renderer/entity/state/ItemDisplayEntityRenderState.java index b68b96a6..66859640 100644 --- a/net/minecraft/client/renderer/entity/state/ItemDisplayEntityRenderState.java +++ b/net/minecraft/client/renderer/entity/state/ItemDisplayEntityRenderState.java @@ -2,19 +2,14 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.entity.Display.ItemDisplay.ItemRenderState; -import org.jetbrains.annotations.Nullable; +import net.minecraft.client.renderer.item.ItemStackRenderState; @Environment(EnvType.CLIENT) public class ItemDisplayEntityRenderState extends DisplayEntityRenderState { - @Nullable - public ItemRenderState itemRenderState; - @Nullable - public BakedModel itemModel; + public final ItemStackRenderState item = new ItemStackRenderState(); @Override public boolean hasSubState() { - return this.itemRenderState != null && this.itemModel != null; + return !this.item.isEmpty(); } } diff --git a/net/minecraft/client/renderer/entity/state/ItemEntityRenderState.java b/net/minecraft/client/renderer/entity/state/ItemEntityRenderState.java index 9613cf20..aa13985d 100644 --- a/net/minecraft/client/renderer/entity/state/ItemEntityRenderState.java +++ b/net/minecraft/client/renderer/entity/state/ItemEntityRenderState.java @@ -2,14 +2,8 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public class ItemEntityRenderState extends EntityRenderState { +public class ItemEntityRenderState extends ItemClusterRenderState { public float bobOffset; - @Nullable - public BakedModel itemModel; - public ItemStack item = ItemStack.EMPTY; } diff --git a/net/minecraft/client/renderer/entity/state/ItemFrameRenderState.java b/net/minecraft/client/renderer/entity/state/ItemFrameRenderState.java index 93a93232..9891ffd3 100644 --- a/net/minecraft/client/renderer/entity/state/ItemFrameRenderState.java +++ b/net/minecraft/client/renderer/entity/state/ItemFrameRenderState.java @@ -2,22 +2,19 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.client.renderer.state.MapRenderState; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.saveddata.maps.MapId; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class ItemFrameRenderState extends EntityRenderState { public Direction direction = Direction.NORTH; - public ItemStack itemStack = ItemStack.EMPTY; + public final ItemStackRenderState item = new ItemStackRenderState(); public int rotation; public boolean isGlowFrame; @Nullable - public BakedModel itemModel; - @Nullable public MapId mapId; public final MapRenderState mapRenderState = new MapRenderState(); } diff --git a/net/minecraft/client/renderer/entity/state/LivingEntityRenderState.java b/net/minecraft/client/renderer/entity/state/LivingEntityRenderState.java index 0244a952..c5d408b0 100644 --- a/net/minecraft/client/renderer/entity/state/LivingEntityRenderState.java +++ b/net/minecraft/client/renderer/entity/state/LivingEntityRenderState.java @@ -2,12 +2,12 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.Pose; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ResolvableProfile; +import net.minecraft.world.level.block.SkullBlock.Type; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @@ -18,7 +18,6 @@ public class LivingEntityRenderState extends EntityRenderState { public float deathTime; public float walkAnimationPos; public float walkAnimationSpeed; - public float wornHeadAnimationPos; public float scale = 1.0F; public float ageScale = 1.0F; public boolean isUpsideDown; @@ -34,25 +33,12 @@ public class LivingEntityRenderState extends EntityRenderState { @Nullable public Component customName; public Pose pose = Pose.STANDING; + public final ItemStackRenderState headItem = new ItemStackRenderState(); + public float wornHeadAnimationPos; @Nullable - public BakedModel headItemModel; - public ItemStack headItem = ItemStack.EMPTY; - public HumanoidArm mainArm = HumanoidArm.RIGHT; + public Type wornHeadType; @Nullable - public BakedModel rightHandItemModel; - public ItemStack rightHandItem = ItemStack.EMPTY; - @Nullable - public BakedModel leftHandItemModel; - public ItemStack leftHandItem = ItemStack.EMPTY; - - public ItemStack getMainHandItem() { - return this.mainArm == HumanoidArm.RIGHT ? this.rightHandItem : this.leftHandItem; - } - - @Nullable - public BakedModel getMainHandItemModel() { - return this.mainArm == HumanoidArm.RIGHT ? this.rightHandItemModel : this.leftHandItemModel; - } + public ResolvableProfile wornHeadProfile; public boolean hasPose(Pose pose) { return this.pose == pose; diff --git a/net/minecraft/client/renderer/entity/state/OminousItemSpawnerRenderState.java b/net/minecraft/client/renderer/entity/state/OminousItemSpawnerRenderState.java deleted file mode 100644 index b50f1159..00000000 --- a/net/minecraft/client/renderer/entity/state/OminousItemSpawnerRenderState.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minecraft.client.renderer.entity.state; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class OminousItemSpawnerRenderState extends EntityRenderState { - @Nullable - public BakedModel itemModel; - public ItemStack item = ItemStack.EMPTY; -} diff --git a/net/minecraft/client/renderer/entity/state/PandaRenderState.java b/net/minecraft/client/renderer/entity/state/PandaRenderState.java index 9c9d49bb..e6e87899 100644 --- a/net/minecraft/client/renderer/entity/state/PandaRenderState.java +++ b/net/minecraft/client/renderer/entity/state/PandaRenderState.java @@ -2,11 +2,11 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.world.entity.animal.Panda; +import net.minecraft.world.entity.animal.Panda.Gene; @Environment(EnvType.CLIENT) -public class PandaRenderState extends LivingEntityRenderState { - public Panda.Gene variant = Panda.Gene.NORMAL; +public class PandaRenderState extends HoldingEntityRenderState { + public Gene variant = Gene.NORMAL; public boolean isUnhappy; public boolean isSneezing; public int sneezeTime; diff --git a/net/minecraft/client/renderer/entity/state/PlayerRenderState.java b/net/minecraft/client/renderer/entity/state/PlayerRenderState.java index e3e6e71b..05bf0e85 100644 --- a/net/minecraft/client/renderer/entity/state/PlayerRenderState.java +++ b/net/minecraft/client/renderer/entity/state/PlayerRenderState.java @@ -2,12 +2,12 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.client.resources.DefaultPlayerSkin; import net.minecraft.client.resources.PlayerSkin; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.entity.animal.Parrot; -import net.minecraft.world.item.ItemUseAnimation; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @@ -31,8 +31,6 @@ public class PlayerRenderState extends HumanoidRenderState { public boolean shouldApplyFlyingYRot; public float flyingYRot; public boolean swinging; - public PlayerRenderState.HandState mainHandState = new PlayerRenderState.HandState(); - public PlayerRenderState.HandState offhandState = new PlayerRenderState.HandState(); @Nullable public Component scoreText; @Nullable @@ -41,16 +39,9 @@ public class PlayerRenderState extends HumanoidRenderState { public Parrot.Variant parrotOnRightShoulder; public int id; public String name = "Steve"; + public final ItemStackRenderState heldOnHead = new ItemStackRenderState(); public float fallFlyingScale() { return Mth.clamp(this.fallFlyingTimeInTicks * this.fallFlyingTimeInTicks / 100.0F, 0.0F, 1.0F); } - - @Environment(EnvType.CLIENT) - public static class HandState { - public boolean isEmpty = true; - @Nullable - public ItemUseAnimation useAnimation; - public boolean holdsChargedCrossbow; - } } diff --git a/net/minecraft/client/renderer/entity/state/SkeletonRenderState.java b/net/minecraft/client/renderer/entity/state/SkeletonRenderState.java index b9c74e5a..18151bb1 100644 --- a/net/minecraft/client/renderer/entity/state/SkeletonRenderState.java +++ b/net/minecraft/client/renderer/entity/state/SkeletonRenderState.java @@ -7,4 +7,5 @@ import net.fabricmc.api.Environment; public class SkeletonRenderState extends HumanoidRenderState { public boolean isAggressive; public boolean isShaking; + public boolean isHoldingBow; } diff --git a/net/minecraft/client/renderer/entity/state/SnowGolemRenderState.java b/net/minecraft/client/renderer/entity/state/SnowGolemRenderState.java new file mode 100644 index 00000000..f4c9651a --- /dev/null +++ b/net/minecraft/client/renderer/entity/state/SnowGolemRenderState.java @@ -0,0 +1,9 @@ +package net.minecraft.client.renderer.entity.state; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class SnowGolemRenderState extends LivingEntityRenderState { + public boolean hasPumpkin; +} diff --git a/net/minecraft/client/renderer/entity/state/ThrownItemRenderState.java b/net/minecraft/client/renderer/entity/state/ThrownItemRenderState.java index 8dc2116c..323be9ca 100644 --- a/net/minecraft/client/renderer/entity/state/ThrownItemRenderState.java +++ b/net/minecraft/client/renderer/entity/state/ThrownItemRenderState.java @@ -2,13 +2,9 @@ package net.minecraft.client.renderer.entity.state; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; +import net.minecraft.client.renderer.item.ItemStackRenderState; @Environment(EnvType.CLIENT) public class ThrownItemRenderState extends EntityRenderState { - @Nullable - public BakedModel itemModel; - public ItemStack item = ItemStack.EMPTY; + public final ItemStackRenderState item = new ItemStackRenderState(); } diff --git a/net/minecraft/client/renderer/entity/state/VexRenderState.java b/net/minecraft/client/renderer/entity/state/VexRenderState.java index 3ec23cb5..5885b6c0 100644 --- a/net/minecraft/client/renderer/entity/state/VexRenderState.java +++ b/net/minecraft/client/renderer/entity/state/VexRenderState.java @@ -4,6 +4,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) -public class VexRenderState extends LivingEntityRenderState { +public class VexRenderState extends ArmedEntityRenderState { public boolean isCharging; } diff --git a/net/minecraft/client/renderer/entity/state/VillagerRenderState.java b/net/minecraft/client/renderer/entity/state/VillagerRenderState.java index a00b2751..a99bec2d 100644 --- a/net/minecraft/client/renderer/entity/state/VillagerRenderState.java +++ b/net/minecraft/client/renderer/entity/state/VillagerRenderState.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; @Environment(EnvType.CLIENT) -public class VillagerRenderState extends LivingEntityRenderState implements VillagerDataHolderRenderState { +public class VillagerRenderState extends HoldingEntityRenderState implements VillagerDataHolderRenderState { public boolean isUnhappy; public VillagerData villagerData = new VillagerData(VillagerType.PLAINS, VillagerProfession.NONE, 1); diff --git a/net/minecraft/client/renderer/entity/state/WitchRenderState.java b/net/minecraft/client/renderer/entity/state/WitchRenderState.java index c278d7f2..098e438c 100644 --- a/net/minecraft/client/renderer/entity/state/WitchRenderState.java +++ b/net/minecraft/client/renderer/entity/state/WitchRenderState.java @@ -4,7 +4,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @Environment(EnvType.CLIENT) -public class WitchRenderState extends LivingEntityRenderState { +public class WitchRenderState extends HoldingEntityRenderState { public int entityId; public boolean isHoldingItem; + public boolean isHoldingPotion; } diff --git a/net/minecraft/client/renderer/item/BlockModelWrapper.java b/net/minecraft/client/renderer/item/BlockModelWrapper.java new file mode 100644 index 00000000..9e5115eb --- /dev/null +++ b/net/minecraft/client/renderer/item/BlockModelWrapper.java @@ -0,0 +1,89 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.List; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.color.item.ItemTintSource; +import net.minecraft.client.color.item.ItemTintSources; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class BlockModelWrapper implements ItemModel { + private final BakedModel model; + private final List tints; + + BlockModelWrapper(BakedModel model, List tints) { + this.model = model; + this.tints = tints; + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + ItemStackRenderState.LayerRenderState layerRenderState = renderState.newLayer(); + if (stack.hasFoil()) { + layerRenderState.setFoilType(hasSpecialAnimatedTexture(stack) ? ItemStackRenderState.FoilType.SPECIAL : ItemStackRenderState.FoilType.STANDARD); + } + + int i = this.tints.size(); + int[] is = layerRenderState.prepareTintLayers(i); + + for (int j = 0; j < i; j++) { + is[j] = ((ItemTintSource)this.tints.get(j)).calculate(stack, level, entity); + } + + RenderType renderType = ItemBlockRenderTypes.getRenderType(stack); + layerRenderState.setupBlockModel(this.model, renderType); + } + + private static boolean hasSpecialAnimatedTexture(ItemStack stack) { + return stack.is(ItemTags.COMPASSES) || stack.is(Items.CLOCK); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(ResourceLocation model, List tints) implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ResourceLocation.CODEC.fieldOf("model").forGetter(BlockModelWrapper.Unbaked::model), + ItemTintSources.CODEC.listOf().optionalFieldOf("tints", List.of()).forGetter(BlockModelWrapper.Unbaked::tints) + ) + .apply(instance, BlockModelWrapper.Unbaked::new) + ); + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + resolver.resolve(this.model); + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + BakedModel bakedModel = context.bake(this.model); + return new BlockModelWrapper(bakedModel, this.tints); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + } +} diff --git a/net/minecraft/client/renderer/item/BundleSelectedItemSpecialRenderer.java b/net/minecraft/client/renderer/item/BundleSelectedItemSpecialRenderer.java new file mode 100644 index 00000000..9ba00f22 --- /dev/null +++ b/net/minecraft/client/renderer/item/BundleSelectedItemSpecialRenderer.java @@ -0,0 +1,52 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.BundleItem; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class BundleSelectedItemSpecialRenderer implements ItemModel { + static final ItemModel INSTANCE = new BundleSelectedItemSpecialRenderer(); + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + ItemStack itemStack = BundleItem.getSelectedItemStack(stack); + if (!itemStack.isEmpty()) { + itemModelResolver.appendItemLayers(renderState, itemStack, displayContext, level, entity, seed); + } + } + + @Environment(EnvType.CLIENT) + public record Unbaked() implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = MapCodec.unit(new BundleSelectedItemSpecialRenderer.Unbaked()); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + return BundleSelectedItemSpecialRenderer.INSTANCE; + } + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + } + } +} diff --git a/net/minecraft/client/renderer/item/ClampedItemPropertyFunction.java b/net/minecraft/client/renderer/item/ClampedItemPropertyFunction.java deleted file mode 100644 index cd6b2162..00000000 --- a/net/minecraft/client/renderer/item/ClampedItemPropertyFunction.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.client.renderer.item; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public interface ClampedItemPropertyFunction extends ItemPropertyFunction { - @Deprecated - @Override - default float call(ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i) { - return Mth.clamp(this.unclampedCall(itemStack, clientLevel, livingEntity, i), 0.0F, 1.0F); - } - - float unclampedCall(ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i); -} diff --git a/net/minecraft/client/renderer/item/ClientItem.java b/net/minecraft/client/renderer/item/ClientItem.java new file mode 100644 index 00000000..815e6cc6 --- /dev/null +++ b/net/minecraft/client/renderer/item/ClientItem.java @@ -0,0 +1,24 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public record ClientItem(ItemModel.Unbaked model, ClientItem.Properties properties) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group(ItemModels.CODEC.fieldOf("model").forGetter(ClientItem::model), ClientItem.Properties.MAP_CODEC.forGetter(ClientItem::properties)) + .apply(instance, ClientItem::new) + ); + + @Environment(EnvType.CLIENT) + public record Properties(boolean handAnimationOnSwap) { + public static final ClientItem.Properties DEFAULT = new ClientItem.Properties(true); + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(Codec.BOOL.optionalFieldOf("hand_animation_on_swap", true).forGetter(ClientItem.Properties::handAnimationOnSwap)) + .apply(instance, ClientItem.Properties::new) + ); + } +} diff --git a/net/minecraft/client/renderer/item/CompassItemPropertyFunction.java b/net/minecraft/client/renderer/item/CompassItemPropertyFunction.java deleted file mode 100644 index ca541e46..00000000 --- a/net/minecraft/client/renderer/item/CompassItemPropertyFunction.java +++ /dev/null @@ -1,119 +0,0 @@ -package net.minecraft.client.renderer.item; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.GlobalPos; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.phys.Vec3; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class CompassItemPropertyFunction implements ClampedItemPropertyFunction { - public static final int DEFAULT_ROTATION = 0; - private final CompassItemPropertyFunction.CompassWobble wobble = new CompassItemPropertyFunction.CompassWobble(); - private final CompassItemPropertyFunction.CompassWobble wobbleRandom = new CompassItemPropertyFunction.CompassWobble(); - public final CompassItemPropertyFunction.CompassTarget compassTarget; - - public CompassItemPropertyFunction(CompassItemPropertyFunction.CompassTarget compassTarget) { - this.compassTarget = compassTarget; - } - - @Override - public float unclampedCall(ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i) { - Entity entity = (Entity)(livingEntity != null ? livingEntity : itemStack.getEntityRepresentation()); - if (entity == null) { - return 0.0F; - } else { - clientLevel = this.tryFetchLevelIfMissing(entity, clientLevel); - return clientLevel == null ? 0.0F : this.getCompassRotation(itemStack, clientLevel, i, entity); - } - } - - private float getCompassRotation(ItemStack stack, ClientLevel level, int seed, Entity entity) { - GlobalPos globalPos = this.compassTarget.getPos(level, stack, entity); - long l = level.getGameTime(); - return !this.isValidCompassTargetPos(entity, globalPos) - ? this.getRandomlySpinningRotation(seed, l) - : this.getRotationTowardsCompassTarget(entity, l, globalPos.pos()); - } - - private float getRandomlySpinningRotation(int seed, long ticks) { - if (this.wobbleRandom.shouldUpdate(ticks)) { - this.wobbleRandom.update(ticks, Math.random()); - } - - double d = this.wobbleRandom.rotation + this.hash(seed) / 2.1474836E9F; - return Mth.positiveModulo((float)d, 1.0F); - } - - private float getRotationTowardsCompassTarget(Entity entity, long ticks, BlockPos pos) { - double d = this.getAngleFromEntityToPos(entity, pos); - double e = this.getWrappedVisualRotationY(entity); - double f; - if (entity instanceof Player player && player.isLocalPlayer() && player.level().tickRateManager().runsNormally()) { - if (this.wobble.shouldUpdate(ticks)) { - this.wobble.update(ticks, 0.5 - (e - 0.25)); - } - - f = d + this.wobble.rotation; - } else { - f = 0.5 - (e - 0.25 - d); - } - - return Mth.positiveModulo((float)f, 1.0F); - } - - @Nullable - private ClientLevel tryFetchLevelIfMissing(Entity entity, @Nullable ClientLevel level) { - return level == null && entity.level() instanceof ClientLevel ? (ClientLevel)entity.level() : level; - } - - private boolean isValidCompassTargetPos(Entity entity, @Nullable GlobalPos pos) { - return pos != null && pos.dimension() == entity.level().dimension() && !(pos.pos().distToCenterSqr(entity.position()) < 1.0E-5F); - } - - private double getAngleFromEntityToPos(Entity entity, BlockPos pos) { - Vec3 vec3 = Vec3.atCenterOf(pos); - return Math.atan2(vec3.z() - entity.getZ(), vec3.x() - entity.getX()) / (float) (Math.PI * 2); - } - - private double getWrappedVisualRotationY(Entity entity) { - return Mth.positiveModulo((double)(entity.getVisualRotationYInDegrees() / 360.0F), 1.0); - } - - private int hash(int value) { - return value * 1327217883; - } - - @Environment(EnvType.CLIENT) - public interface CompassTarget { - @Nullable - GlobalPos getPos(ClientLevel clientLevel, ItemStack itemStack, Entity entity); - } - - @Environment(EnvType.CLIENT) - static class CompassWobble { - double rotation; - private double deltaRotation; - private long lastUpdateTick; - - boolean shouldUpdate(long ticks) { - return this.lastUpdateTick != ticks; - } - - void update(long ticks, double rotation) { - this.lastUpdateTick = ticks; - double d = rotation - this.rotation; - d = Mth.positiveModulo(d + 0.5, 1.0) - 0.5; - this.deltaRotation += d * 0.1; - this.deltaRotation *= 0.8; - this.rotation = Mth.positiveModulo(this.rotation + this.deltaRotation, 1.0); - } - } -} diff --git a/net/minecraft/client/renderer/item/CompositeModel.java b/net/minecraft/client/renderer/item/CompositeModel.java new file mode 100644 index 00000000..8e6c68c3 --- /dev/null +++ b/net/minecraft/client/renderer/item/CompositeModel.java @@ -0,0 +1,64 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.List; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class CompositeModel implements ItemModel { + private final List models; + + public CompositeModel(List models) { + this.models = models; + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + renderState.ensureCapacity(this.models.size()); + + for (ItemModel itemModel : this.models) { + itemModel.update(renderState, stack, itemModelResolver, displayContext, level, entity, seed); + } + } + + @Environment(EnvType.CLIENT) + public record Unbaked(List models) implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ItemModels.CODEC.listOf().fieldOf("models").forGetter(CompositeModel.Unbaked::models)) + .apply(instance, CompositeModel.Unbaked::new) + ); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + for (ItemModel.Unbaked unbaked : this.models) { + unbaked.resolveDependencies(resolver); + } + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + return new CompositeModel(this.models.stream().map(unbaked -> unbaked.bake(context)).toList()); + } + } +} diff --git a/net/minecraft/client/renderer/item/ConditionalItemModel.java b/net/minecraft/client/renderer/item/ConditionalItemModel.java new file mode 100644 index 00000000..be5cbb97 --- /dev/null +++ b/net/minecraft/client/renderer/item/ConditionalItemModel.java @@ -0,0 +1,69 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperties; +import net.minecraft.client.renderer.item.properties.conditional.ConditionalItemModelProperty; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class ConditionalItemModel implements ItemModel { + private final ConditionalItemModelProperty property; + private final ItemModel onTrue; + private final ItemModel onFalse; + + public ConditionalItemModel(ConditionalItemModelProperty property, ItemModel onTrue, ItemModel onFalse) { + this.property = property; + this.onTrue = onTrue; + this.onFalse = onFalse; + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + (this.property.get(stack, level, entity, seed, displayContext) ? this.onTrue : this.onFalse) + .update(renderState, stack, itemModelResolver, displayContext, level, entity, seed); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(ConditionalItemModelProperty property, ItemModel.Unbaked onTrue, ItemModel.Unbaked onFalse) implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ConditionalItemModelProperties.MAP_CODEC.forGetter(ConditionalItemModel.Unbaked::property), + ItemModels.CODEC.fieldOf("on_true").forGetter(ConditionalItemModel.Unbaked::onTrue), + ItemModels.CODEC.fieldOf("on_false").forGetter(ConditionalItemModel.Unbaked::onFalse) + ) + .apply(instance, ConditionalItemModel.Unbaked::new) + ); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + return new ConditionalItemModel(this.property, this.onTrue.bake(context), this.onFalse.bake(context)); + } + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + this.onTrue.resolveDependencies(resolver); + this.onFalse.resolveDependencies(resolver); + } + } +} diff --git a/net/minecraft/client/renderer/item/EmptyModel.java b/net/minecraft/client/renderer/item/EmptyModel.java new file mode 100644 index 00000000..7fc9b500 --- /dev/null +++ b/net/minecraft/client/renderer/item/EmptyModel.java @@ -0,0 +1,47 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class EmptyModel implements ItemModel { + public static final ItemModel INSTANCE = new EmptyModel(); + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + } + + @Environment(EnvType.CLIENT) + public record Unbaked() implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = MapCodec.unit(EmptyModel.Unbaked::new); + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + return EmptyModel.INSTANCE; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + } +} diff --git a/net/minecraft/client/renderer/item/ItemModel.java b/net/minecraft/client/renderer/item/ItemModel.java new file mode 100644 index 00000000..9a1af017 --- /dev/null +++ b/net/minecraft/client/renderer/item/ItemModel.java @@ -0,0 +1,43 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.BlockModelRotation; +import net.minecraft.client.resources.model.ModelBaker; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public interface ItemModel { + void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ); + + @Environment(EnvType.CLIENT) + public record BakingContext(ModelBaker blockModelBaker, EntityModelSet entityModelSet, ItemModel missingItemModel) { + public BakedModel bake(ResourceLocation location) { + return this.blockModelBaker().bake(location, BlockModelRotation.X0_Y0); + } + } + + @Environment(EnvType.CLIENT) + public interface Unbaked extends ResolvableModel { + MapCodec type(); + + ItemModel bake(ItemModel.BakingContext context); + } +} diff --git a/net/minecraft/client/renderer/item/ItemModelResolver.java b/net/minecraft/client/renderer/item/ItemModelResolver.java new file mode 100644 index 00000000..2f53d92f --- /dev/null +++ b/net/minecraft/client/renderer/item/ItemModelResolver.java @@ -0,0 +1,81 @@ +package net.minecraft.client.renderer.item; + +import java.util.function.Function; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.resources.model.ModelManager; +import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ResolvableProfile; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractSkullBlock; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class ItemModelResolver { + private final Function modelGetter; + private final Function clientProperties; + + public ItemModelResolver(ModelManager modelManager) { + this.modelGetter = modelManager::getItemModel; + this.clientProperties = modelManager::getItemProperties; + } + + public void updateForLiving(ItemStackRenderState renderState, ItemStack stack, ItemDisplayContext displayContext, boolean leftHand, LivingEntity entity) { + this.updateForTopItem(renderState, stack, displayContext, leftHand, entity.level(), entity, entity.getId() + displayContext.ordinal()); + } + + public void updateForNonLiving(ItemStackRenderState renderState, ItemStack stack, ItemDisplayContext displayContext, Entity entity) { + this.updateForTopItem(renderState, stack, displayContext, false, entity.level(), null, entity.getId()); + } + + public void updateForTopItem( + ItemStackRenderState renderState, + ItemStack stack, + ItemDisplayContext displayContext, + boolean leftHand, + @Nullable Level level, + @Nullable LivingEntity entity, + int seed + ) { + renderState.clear(); + if (!stack.isEmpty()) { + renderState.displayContext = displayContext; + renderState.isLeftHand = leftHand; + this.appendItemLayers(renderState, stack, displayContext, level, entity, seed); + } + } + + private static void fixupSkullProfile(ItemStack stack) { + if (stack.getItem() instanceof BlockItem blockItem && blockItem.getBlock() instanceof AbstractSkullBlock) { + ResolvableProfile resolvableProfile = stack.get(DataComponents.PROFILE); + if (resolvableProfile != null && !resolvableProfile.isResolved()) { + stack.remove(DataComponents.PROFILE); + resolvableProfile.resolve().thenAcceptAsync(resolvableProfilex -> stack.set(DataComponents.PROFILE, resolvableProfilex), Minecraft.getInstance()); + } + } + } + + public void appendItemLayers( + ItemStackRenderState renderState, ItemStack stack, ItemDisplayContext displayContext, @Nullable Level level, @Nullable LivingEntity entity, int seed + ) { + fixupSkullProfile(stack); + ResourceLocation resourceLocation = stack.get(DataComponents.ITEM_MODEL); + if (resourceLocation != null) { + ((ItemModel)this.modelGetter.apply(resourceLocation)) + .update(renderState, stack, this, displayContext, level instanceof ClientLevel clientLevel ? clientLevel : null, entity, seed); + } + } + + public boolean shouldPlaySwapAnimation(ItemStack stack) { + ResourceLocation resourceLocation = stack.get(DataComponents.ITEM_MODEL); + return resourceLocation == null ? true : ((ClientItem.Properties)this.clientProperties.apply(resourceLocation)).handAnimationOnSwap(); + } +} diff --git a/net/minecraft/client/renderer/item/ItemModels.java b/net/minecraft/client/renderer/item/ItemModels.java new file mode 100644 index 00000000..976c65c9 --- /dev/null +++ b/net/minecraft/client/renderer/item/ItemModels.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; + +@Environment(EnvType.CLIENT) +public class ItemModels { + private static final ExtraCodecs.LateBoundIdMapper> ID_MAPPER = new ExtraCodecs.LateBoundIdMapper<>(); + public static final Codec CODEC = ID_MAPPER.codec(ResourceLocation.CODEC).dispatch(ItemModel.Unbaked::type, mapCodec -> mapCodec); + + public static void bootstrap() { + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("empty"), EmptyModel.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("model"), BlockModelWrapper.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("range_dispatch"), RangeSelectItemModel.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("special"), SpecialModelWrapper.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("composite"), CompositeModel.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("bundle/selected_item"), BundleSelectedItemSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("select"), SelectItemModel.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("condition"), ConditionalItemModel.Unbaked.MAP_CODEC); + } +} diff --git a/net/minecraft/client/renderer/item/ItemProperties.java b/net/minecraft/client/renderer/item/ItemProperties.java deleted file mode 100644 index 27378755..00000000 --- a/net/minecraft/client/renderer/item/ItemProperties.java +++ /dev/null @@ -1,254 +0,0 @@ -package net.minecraft.client.renderer.item; - -import com.google.common.collect.Maps; -import java.util.Map; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.GlobalPos; -import net.minecraft.core.component.DataComponents; -import net.minecraft.data.models.ItemModelGenerators; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.BundleItem; -import net.minecraft.world.item.CompassItem; -import net.minecraft.world.item.CrossbowItem; -import net.minecraft.world.item.FishingRodItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.component.BlockItemStateProperties; -import net.minecraft.world.item.component.ChargedProjectiles; -import net.minecraft.world.item.component.CustomModelData; -import net.minecraft.world.item.component.LodestoneTracker; -import net.minecraft.world.item.equipment.trim.ArmorTrim; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.BeehiveBlock; -import net.minecraft.world.level.block.LightBlock; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class ItemProperties { - private static final Map GENERIC_PROPERTIES = Maps.newHashMap(); - private static final ResourceLocation DAMAGED = ResourceLocation.withDefaultNamespace("damaged"); - private static final ResourceLocation DAMAGE = ResourceLocation.withDefaultNamespace("damage"); - private static final ClampedItemPropertyFunction PROPERTY_DAMAGED = (itemStack, clientLevel, livingEntity, i) -> itemStack.isDamaged() ? 1.0F : 0.0F; - private static final ClampedItemPropertyFunction PROPERTY_DAMAGE = (itemStack, clientLevel, livingEntity, i) -> Mth.clamp( - (float)itemStack.getDamageValue() / itemStack.getMaxDamage(), 0.0F, 1.0F - ); - private static final Map> PROPERTIES = Maps.>newHashMap(); - - private static ClampedItemPropertyFunction registerGeneric(ResourceLocation name, ClampedItemPropertyFunction property) { - GENERIC_PROPERTIES.put(name, property); - return property; - } - - private static void registerCustomModelData(ItemPropertyFunction property) { - GENERIC_PROPERTIES.put(ResourceLocation.withDefaultNamespace("custom_model_data"), property); - } - - private static void register(Item item, ResourceLocation name, ClampedItemPropertyFunction property) { - ((Map)PROPERTIES.computeIfAbsent(item, itemx -> Maps.newHashMap())).put(name, property); - } - - private static int honeyLevelProperty(ItemStack stack) { - BlockItemStateProperties blockItemStateProperties = stack.getOrDefault(DataComponents.BLOCK_STATE, BlockItemStateProperties.EMPTY); - Integer integer = blockItemStateProperties.get(BeehiveBlock.HONEY_LEVEL); - return integer != null && integer == 5 ? 1 : 0; - } - - @Nullable - public static ItemPropertyFunction getProperty(ItemStack stack, ResourceLocation location) { - if (stack.getMaxDamage() > 0) { - if (DAMAGE.equals(location)) { - return PROPERTY_DAMAGE; - } - - if (DAMAGED.equals(location)) { - return PROPERTY_DAMAGED; - } - } - - ItemPropertyFunction itemPropertyFunction = (ItemPropertyFunction)GENERIC_PROPERTIES.get(location); - if (itemPropertyFunction != null) { - return itemPropertyFunction; - } else { - Map map = (Map)PROPERTIES.get(stack.getItem()); - return map == null ? null : (ItemPropertyFunction)map.get(location); - } - } - - static { - registerGeneric( - ResourceLocation.withDefaultNamespace("lefthanded"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null && livingEntity.getMainArm() != HumanoidArm.RIGHT ? 1.0F : 0.0F - ); - registerGeneric( - ResourceLocation.withDefaultNamespace("cooldown"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity instanceof Player - ? ((Player)livingEntity).getCooldowns().getCooldownPercent(itemStack, 0.0F) - : 0.0F - ); - ClampedItemPropertyFunction clampedItemPropertyFunction = (itemStack, clientLevel, livingEntity, i) -> { - ArmorTrim armorTrim = itemStack.get(DataComponents.TRIM); - return armorTrim != null ? armorTrim.material().value().itemModelIndex() : Float.NEGATIVE_INFINITY; - }; - registerGeneric(ItemModelGenerators.TRIM_TYPE_PREDICATE_ID, clampedItemPropertyFunction); - registerGeneric(ResourceLocation.withDefaultNamespace("broken"), (itemStack, clientLevel, livingEntity, i) -> itemStack.nextDamageWillBreak() ? 1.0F : 0.0F); - registerCustomModelData( - (itemStack, clientLevel, livingEntity, i) -> itemStack.getOrDefault(DataComponents.CUSTOM_MODEL_DATA, CustomModelData.DEFAULT).value() - ); - register(Items.BOW, ResourceLocation.withDefaultNamespace("pull"), (itemStack, clientLevel, livingEntity, i) -> { - if (livingEntity == null) { - return 0.0F; - } else { - return livingEntity.getUseItem() != itemStack ? 0.0F : (itemStack.getUseDuration(livingEntity) - livingEntity.getUseItemRemainingTicks()) / 20.0F; - } - }); - register( - Items.BRUSH, - ResourceLocation.withDefaultNamespace("brushing"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null && livingEntity.getUseItem() == itemStack - ? livingEntity.getUseItemRemainingTicks() % 10 / 10.0F - : 0.0F - ); - register( - Items.BOW, - ResourceLocation.withDefaultNamespace("pulling"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null && livingEntity.isUsingItem() && livingEntity.getUseItem() == itemStack ? 1.0F : 0.0F - ); - - for (BundleItem bundleItem : BundleItem.getAllBundleItemColors()) { - register( - bundleItem.asItem(), ResourceLocation.withDefaultNamespace("filled"), (itemStack, clientLevel, livingEntity, i) -> BundleItem.getFullnessDisplay(itemStack) - ); - } - - register(Items.CLOCK, ResourceLocation.withDefaultNamespace("time"), new ClampedItemPropertyFunction() { - private double rotation; - private double rota; - private long lastUpdateTick; - - @Override - public float unclampedCall(ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i) { - Entity entity = (Entity)(livingEntity != null ? livingEntity : itemStack.getEntityRepresentation()); - if (entity == null) { - return 0.0F; - } else { - if (clientLevel == null && entity.level() instanceof ClientLevel) { - clientLevel = (ClientLevel)entity.level(); - } - - if (clientLevel == null) { - return 0.0F; - } else { - double d; - if (clientLevel.dimensionType().natural()) { - d = clientLevel.getTimeOfDay(1.0F); - } else { - d = Math.random(); - } - - d = this.wobble(clientLevel, d); - return (float)d; - } - } - } - - private double wobble(Level level, double rotation) { - if (level.getGameTime() != this.lastUpdateTick) { - this.lastUpdateTick = level.getGameTime(); - double d = rotation - this.rotation; - d = Mth.positiveModulo(d + 0.5, 1.0) - 0.5; - this.rota += d * 0.1; - this.rota *= 0.9; - this.rotation = Mth.positiveModulo(this.rotation + this.rota, 1.0); - } - - return this.rotation; - } - }); - register(Items.COMPASS, ResourceLocation.withDefaultNamespace("angle"), new CompassItemPropertyFunction((clientLevel, itemStack, entity) -> { - LodestoneTracker lodestoneTracker = itemStack.get(DataComponents.LODESTONE_TRACKER); - return lodestoneTracker != null ? (GlobalPos)lodestoneTracker.target().orElse(null) : CompassItem.getSpawnPosition(clientLevel); - })); - register( - Items.RECOVERY_COMPASS, - ResourceLocation.withDefaultNamespace("angle"), - new CompassItemPropertyFunction( - (clientLevel, itemStack, entity) -> entity instanceof Player player ? (GlobalPos)player.getLastDeathLocation().orElse(null) : null - ) - ); - register( - Items.CROSSBOW, - ResourceLocation.withDefaultNamespace("pull"), - (itemStack, clientLevel, livingEntity, i) -> { - if (livingEntity == null) { - return 0.0F; - } else { - return CrossbowItem.isCharged(itemStack) - ? 0.0F - : (float)(itemStack.getUseDuration(livingEntity) - livingEntity.getUseItemRemainingTicks()) / CrossbowItem.getChargeDuration(itemStack, livingEntity); - } - } - ); - register( - Items.CROSSBOW, - ResourceLocation.withDefaultNamespace("pulling"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null - && livingEntity.isUsingItem() - && livingEntity.getUseItem() == itemStack - && !CrossbowItem.isCharged(itemStack) - ? 1.0F - : 0.0F - ); - register( - Items.CROSSBOW, - ResourceLocation.withDefaultNamespace("charged"), - (itemStack, clientLevel, livingEntity, i) -> CrossbowItem.isCharged(itemStack) ? 1.0F : 0.0F - ); - register(Items.CROSSBOW, ResourceLocation.withDefaultNamespace("firework"), (itemStack, clientLevel, livingEntity, i) -> { - ChargedProjectiles chargedProjectiles = itemStack.get(DataComponents.CHARGED_PROJECTILES); - return chargedProjectiles != null && chargedProjectiles.contains(Items.FIREWORK_ROCKET) ? 1.0F : 0.0F; - }); - register(Items.FISHING_ROD, ResourceLocation.withDefaultNamespace("cast"), (itemStack, clientLevel, livingEntity, i) -> { - if (livingEntity == null) { - return 0.0F; - } else { - boolean bl = livingEntity.getMainHandItem() == itemStack; - boolean bl2 = livingEntity.getOffhandItem() == itemStack; - if (livingEntity.getMainHandItem().getItem() instanceof FishingRodItem) { - bl2 = false; - } - - return (bl || bl2) && livingEntity instanceof Player && ((Player)livingEntity).fishing != null ? 1.0F : 0.0F; - } - }); - register( - Items.SHIELD, - ResourceLocation.withDefaultNamespace("blocking"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null && livingEntity.isUsingItem() && livingEntity.getUseItem() == itemStack ? 1.0F : 0.0F - ); - register( - Items.TRIDENT, - ResourceLocation.withDefaultNamespace("throwing"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null && livingEntity.isUsingItem() && livingEntity.getUseItem() == itemStack ? 1.0F : 0.0F - ); - register(Items.LIGHT, ResourceLocation.withDefaultNamespace("level"), (itemStack, clientLevel, livingEntity, i) -> { - BlockItemStateProperties blockItemStateProperties = itemStack.getOrDefault(DataComponents.BLOCK_STATE, BlockItemStateProperties.EMPTY); - Integer integer = blockItemStateProperties.get(LightBlock.LEVEL); - return integer != null ? integer.intValue() / 16.0F : 1.0F; - }); - register( - Items.GOAT_HORN, - ResourceLocation.withDefaultNamespace("tooting"), - (itemStack, clientLevel, livingEntity, i) -> livingEntity != null && livingEntity.isUsingItem() && livingEntity.getUseItem() == itemStack ? 1.0F : 0.0F - ); - register(Items.BEE_NEST, ResourceLocation.withDefaultNamespace("honey_level"), (itemStack, clientLevel, livingEntity, i) -> honeyLevelProperty(itemStack)); - register(Items.BEEHIVE, ResourceLocation.withDefaultNamespace("honey_level"), (itemStack, clientLevel, livingEntity, i) -> honeyLevelProperty(itemStack)); - } -} diff --git a/net/minecraft/client/renderer/item/ItemPropertyFunction.java b/net/minecraft/client/renderer/item/ItemPropertyFunction.java deleted file mode 100644 index ee759583..00000000 --- a/net/minecraft/client/renderer/item/ItemPropertyFunction.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minecraft.client.renderer.item; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -@Deprecated -@Environment(EnvType.CLIENT) -public interface ItemPropertyFunction { - float call(ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i); -} diff --git a/net/minecraft/client/renderer/item/ItemStackRenderState.java b/net/minecraft/client/renderer/item/ItemStackRenderState.java new file mode 100644 index 00000000..df1c161a --- /dev/null +++ b/net/minecraft/client/renderer/item/ItemStackRenderState.java @@ -0,0 +1,182 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.Arrays; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.ItemTransform; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.special.SpecialModelRenderer; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class ItemStackRenderState { + ItemDisplayContext displayContext = ItemDisplayContext.NONE; + boolean isLeftHand; + private int activeLayerCount; + private ItemStackRenderState.LayerRenderState[] layers = new ItemStackRenderState.LayerRenderState[]{new ItemStackRenderState.LayerRenderState()}; + + public void ensureCapacity(int expectedSize) { + int i = this.layers.length; + int j = this.activeLayerCount + expectedSize; + if (j > i) { + this.layers = (ItemStackRenderState.LayerRenderState[])Arrays.copyOf(this.layers, j); + + for (int k = i; k < j; k++) { + this.layers[k] = new ItemStackRenderState.LayerRenderState(); + } + } + } + + public ItemStackRenderState.LayerRenderState newLayer() { + this.ensureCapacity(1); + return this.layers[this.activeLayerCount++]; + } + + public void clear() { + this.displayContext = ItemDisplayContext.NONE; + this.isLeftHand = false; + + for (int i = 0; i < this.activeLayerCount; i++) { + this.layers[i].clear(); + } + + this.activeLayerCount = 0; + } + + private ItemStackRenderState.LayerRenderState firstLayer() { + return this.layers[0]; + } + + public boolean isEmpty() { + return this.activeLayerCount == 0; + } + + public boolean isGui3d() { + return this.firstLayer().isGui3d(); + } + + public boolean usesBlockLight() { + return this.firstLayer().usesBlockLight(); + } + + @Nullable + public TextureAtlasSprite pickParticleIcon(RandomSource random) { + if (this.activeLayerCount == 0) { + return null; + } else { + BakedModel bakedModel = this.layers[random.nextInt(this.activeLayerCount)].model; + return bakedModel == null ? null : bakedModel.getParticleIcon(); + } + } + + public ItemTransform transform() { + return this.firstLayer().transform(); + } + + public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { + for (int i = 0; i < this.activeLayerCount; i++) { + this.layers[i].render(poseStack, bufferSource, packedLight, packedOverlay); + } + } + + @Environment(EnvType.CLIENT) + public static enum FoilType { + NONE, + STANDARD, + SPECIAL; + } + + @Environment(EnvType.CLIENT) + public class LayerRenderState { + @Nullable + BakedModel model; + @Nullable + private RenderType renderType; + private ItemStackRenderState.FoilType foilType = ItemStackRenderState.FoilType.NONE; + private int[] tintLayers = new int[0]; + @Nullable + private SpecialModelRenderer specialRenderer; + @Nullable + private Object argumentForSpecialRendering; + + public void clear() { + this.model = null; + this.renderType = null; + this.foilType = ItemStackRenderState.FoilType.NONE; + this.specialRenderer = null; + this.argumentForSpecialRendering = null; + Arrays.fill(this.tintLayers, -1); + } + + public void setupBlockModel(BakedModel model, RenderType renderType) { + this.model = model; + this.renderType = renderType; + } + + public void setupSpecialModel(SpecialModelRenderer specialRenderer, @Nullable T argumentForSpecialRendering, BakedModel model) { + this.model = model; + this.specialRenderer = eraseSpecialRenderer(specialRenderer); + this.argumentForSpecialRendering = argumentForSpecialRendering; + } + + private static SpecialModelRenderer eraseSpecialRenderer(SpecialModelRenderer specialRenderer) { + return (SpecialModelRenderer)specialRenderer; + } + + public void setFoilType(ItemStackRenderState.FoilType foilType) { + this.foilType = foilType; + } + + public int[] prepareTintLayers(int count) { + if (count > this.tintLayers.length) { + this.tintLayers = new int[count]; + Arrays.fill(this.tintLayers, -1); + } + + return this.tintLayers; + } + + ItemTransform transform() { + return this.model != null ? this.model.getTransforms().getTransform(ItemStackRenderState.this.displayContext) : ItemTransform.NO_TRANSFORM; + } + + void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { + poseStack.pushPose(); + this.transform().apply(ItemStackRenderState.this.isLeftHand, poseStack); + poseStack.translate(-0.5F, -0.5F, -0.5F); + if (this.specialRenderer != null) { + this.specialRenderer + .render( + this.argumentForSpecialRendering, + ItemStackRenderState.this.displayContext, + poseStack, + bufferSource, + packedLight, + packedOverlay, + this.foilType != ItemStackRenderState.FoilType.NONE + ); + } else if (this.model != null) { + ItemRenderer.renderItem( + ItemStackRenderState.this.displayContext, poseStack, bufferSource, packedLight, packedOverlay, this.tintLayers, this.model, this.renderType, this.foilType + ); + } + + poseStack.popPose(); + } + + boolean isGui3d() { + return this.model != null && this.model.isGui3d(); + } + + boolean usesBlockLight() { + return this.model != null && this.model.usesBlockLight(); + } + } +} diff --git a/net/minecraft/client/renderer/item/MissingItemModel.java b/net/minecraft/client/renderer/item/MissingItemModel.java new file mode 100644 index 00000000..aa0a97e8 --- /dev/null +++ b/net/minecraft/client/renderer/item/MissingItemModel.java @@ -0,0 +1,33 @@ +package net.minecraft.client.renderer.item; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class MissingItemModel implements ItemModel { + private final BakedModel model; + + public MissingItemModel(BakedModel model) { + this.model = model; + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + renderState.newLayer().setupBlockModel(this.model, Sheets.cutoutBlockSheet()); + } +} diff --git a/net/minecraft/client/renderer/item/RangeSelectItemModel.java b/net/minecraft/client/renderer/item/RangeSelectItemModel.java new file mode 100644 index 00000000..6a4c6c44 --- /dev/null +++ b/net/minecraft/client/renderer/item/RangeSelectItemModel.java @@ -0,0 +1,134 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.item.properties.numeric.RangeSelectItemModelProperties; +import net.minecraft.client.renderer.item.properties.numeric.RangeSelectItemModelProperty; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class RangeSelectItemModel implements ItemModel { + private static final int LINEAR_SEARCH_THRESHOLD = 16; + private final RangeSelectItemModelProperty property; + private final float scale; + private final float[] thresholds; + private final ItemModel[] models; + private final ItemModel fallback; + + RangeSelectItemModel(RangeSelectItemModelProperty property, float scale, float[] thresholds, ItemModel[] models, ItemModel fallback) { + this.property = property; + this.thresholds = thresholds; + this.models = models; + this.fallback = fallback; + this.scale = scale; + } + + private static int lastIndexLessOrEqual(float[] thresholds, float value) { + if (thresholds.length < 16) { + for (int i = 0; i < thresholds.length; i++) { + if (thresholds[i] > value) { + return i - 1; + } + } + + return thresholds.length - 1; + } else { + int ix = Arrays.binarySearch(thresholds, value); + if (ix < 0) { + int j = ~ix; + return j - 1; + } else { + return ix; + } + } + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + float f = this.property.get(stack, level, entity, seed) * this.scale; + ItemModel itemModel; + if (Float.isNaN(f)) { + itemModel = this.fallback; + } else { + int i = lastIndexLessOrEqual(this.thresholds, f); + itemModel = i == -1 ? this.fallback : this.models[i]; + } + + itemModel.update(renderState, stack, itemModelResolver, displayContext, level, entity, seed); + } + + @Environment(EnvType.CLIENT) + public record Entry(float threshold, ItemModel.Unbaked model) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + Codec.FLOAT.fieldOf("threshold").forGetter(RangeSelectItemModel.Entry::threshold), + ItemModels.CODEC.fieldOf("model").forGetter(RangeSelectItemModel.Entry::model) + ) + .apply(instance, RangeSelectItemModel.Entry::new) + ); + public static final Comparator BY_THRESHOLD = Comparator.comparingDouble(RangeSelectItemModel.Entry::threshold); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(RangeSelectItemModelProperty property, float scale, List entries, Optional fallback) + implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + RangeSelectItemModelProperties.MAP_CODEC.forGetter(RangeSelectItemModel.Unbaked::property), + Codec.FLOAT.optionalFieldOf("scale", 1.0F).forGetter(RangeSelectItemModel.Unbaked::scale), + RangeSelectItemModel.Entry.CODEC.listOf().fieldOf("entries").forGetter(RangeSelectItemModel.Unbaked::entries), + ItemModels.CODEC.optionalFieldOf("fallback").forGetter(RangeSelectItemModel.Unbaked::fallback) + ) + .apply(instance, RangeSelectItemModel.Unbaked::new) + ); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + float[] fs = new float[this.entries.size()]; + ItemModel[] itemModels = new ItemModel[this.entries.size()]; + List list = new ArrayList(this.entries); + list.sort(RangeSelectItemModel.Entry.BY_THRESHOLD); + + for (int i = 0; i < list.size(); i++) { + RangeSelectItemModel.Entry entry = (RangeSelectItemModel.Entry)list.get(i); + fs[i] = entry.threshold; + itemModels[i] = entry.model.bake(context); + } + + ItemModel itemModel = (ItemModel)this.fallback.map(unbaked -> unbaked.bake(context)).orElse(context.missingItemModel()); + return new RangeSelectItemModel(this.property, this.scale, fs, itemModels, itemModel); + } + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + this.fallback.ifPresent(unbaked -> unbaked.resolveDependencies(resolver)); + this.entries.forEach(entry -> entry.model.resolveDependencies(resolver)); + } + } +} diff --git a/net/minecraft/client/renderer/item/SelectItemModel.java b/net/minecraft/client/renderer/item/SelectItemModel.java new file mode 100644 index 00000000..d0d303e3 --- /dev/null +++ b/net/minecraft/client/renderer/item/SelectItemModel.java @@ -0,0 +1,118 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import java.util.List; +import java.util.Optional; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperties; +import net.minecraft.client.renderer.item.properties.select.SelectItemModelProperty; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class SelectItemModel implements ItemModel { + private final SelectItemModelProperty property; + private final Object2ObjectMap models; + + public SelectItemModel(SelectItemModelProperty property, Object2ObjectMap models) { + this.property = property; + this.models = models; + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + T object = this.property.get(stack, level, entity, seed, displayContext); + ItemModel itemModel = this.models.get(object); + if (itemModel != null) { + itemModel.update(renderState, stack, itemModelResolver, displayContext, level, entity, seed); + } + } + + @Environment(EnvType.CLIENT) + public record SwitchCase(List values, ItemModel.Unbaked model) { + + public static Codec> codec(Codec codec) { + return RecordCodecBuilder.create( + instance -> instance.group( + ExtraCodecs.nonEmptyList(ExtraCodecs.compactListCodec(codec)).fieldOf("when").forGetter(SelectItemModel.SwitchCase::values), + ItemModels.CODEC.fieldOf("model").forGetter(SelectItemModel.SwitchCase::model) + ) + .apply(instance, SelectItemModel.SwitchCase::new) + ); + } + } + + @Environment(EnvType.CLIENT) + public record Unbaked(SelectItemModel.UnbakedSwitch unbakedSwitch, Optional fallback) implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + SelectItemModel.UnbakedSwitch.MAP_CODEC.forGetter(SelectItemModel.Unbaked::unbakedSwitch), + ItemModels.CODEC.optionalFieldOf("fallback").forGetter(SelectItemModel.Unbaked::fallback) + ) + .apply(instance, SelectItemModel.Unbaked::new) + ); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + ItemModel itemModel = (ItemModel)this.fallback.map(unbaked -> unbaked.bake(context)).orElse(context.missingItemModel()); + return this.unbakedSwitch.bake(context, itemModel); + } + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + this.unbakedSwitch.resolveDependencies(resolver); + this.fallback.ifPresent(unbaked -> unbaked.resolveDependencies(resolver)); + } + } + + @Environment(EnvType.CLIENT) + public record UnbakedSwitch

, T>(P property, List> cases) { + public static final MapCodec> MAP_CODEC = SelectItemModelProperties.CODEC + .dispatchMap("property", unbakedSwitch -> unbakedSwitch.property().type(), SelectItemModelProperty.Type::switchCodec); + + public ItemModel bake(ItemModel.BakingContext bakingContext, ItemModel model) { + Object2ObjectMap object2ObjectMap = new Object2ObjectOpenHashMap<>(); + + for (SelectItemModel.SwitchCase switchCase : this.cases) { + ItemModel.Unbaked unbaked = switchCase.model; + ItemModel itemModel = unbaked.bake(bakingContext); + + for (T object : switchCase.values) { + object2ObjectMap.put(object, itemModel); + } + } + + object2ObjectMap.defaultReturnValue(model); + return new SelectItemModel<>(this.property, object2ObjectMap); + } + + public void resolveDependencies(ResolvableModel.Resolver resolver) { + for (SelectItemModel.SwitchCase switchCase : this.cases) { + switchCase.model.resolveDependencies(resolver); + } + } + } +} diff --git a/net/minecraft/client/renderer/item/SpecialModelWrapper.java b/net/minecraft/client/renderer/item/SpecialModelWrapper.java new file mode 100644 index 00000000..76bab76b --- /dev/null +++ b/net/minecraft/client/renderer/item/SpecialModelWrapper.java @@ -0,0 +1,73 @@ +package net.minecraft.client.renderer.item; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.special.SpecialModelRenderer; +import net.minecraft.client.renderer.special.SpecialModelRenderers; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ResolvableModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class SpecialModelWrapper implements ItemModel { + private final SpecialModelRenderer specialRenderer; + private final BakedModel baseModel; + + public SpecialModelWrapper(SpecialModelRenderer specialRenderer, BakedModel baseModel) { + this.specialRenderer = specialRenderer; + this.baseModel = baseModel; + } + + @Override + public void update( + ItemStackRenderState renderState, + ItemStack stack, + ItemModelResolver itemModelResolver, + ItemDisplayContext displayContext, + @Nullable ClientLevel level, + @Nullable LivingEntity entity, + int seed + ) { + ItemStackRenderState.LayerRenderState layerRenderState = renderState.newLayer(); + if (stack.hasFoil()) { + layerRenderState.setFoilType(ItemStackRenderState.FoilType.STANDARD); + } + + layerRenderState.setupSpecialModel(this.specialRenderer, this.specialRenderer.extractArgument(stack), this.baseModel); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(ResourceLocation base, SpecialModelRenderer.Unbaked specialModel) implements ItemModel.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ResourceLocation.CODEC.fieldOf("base").forGetter(SpecialModelWrapper.Unbaked::base), + SpecialModelRenderers.CODEC.fieldOf("model").forGetter(SpecialModelWrapper.Unbaked::specialModel) + ) + .apply(instance, SpecialModelWrapper.Unbaked::new) + ); + + @Override + public void resolveDependencies(ResolvableModel.Resolver resolver) { + resolver.resolve(this.base); + } + + @Override + public ItemModel bake(ItemModel.BakingContext context) { + BakedModel bakedModel = context.bake(this.base); + SpecialModelRenderer specialModelRenderer = this.specialModel.bake(context.entityModelSet()); + return (ItemModel)(specialModelRenderer == null ? context.missingItemModel() : new SpecialModelWrapper<>(specialModelRenderer, bakedModel)); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/Broken.java b/net/minecraft/client/renderer/item/properties/conditional/Broken.java new file mode 100644 index 00000000..2432d172 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/Broken.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Broken() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new Broken()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return stack.nextDamageWillBreak(); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/BundleHasSelectedItem.java b/net/minecraft/client/renderer/item/properties/conditional/BundleHasSelectedItem.java new file mode 100644 index 00000000..2dbcba9b --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/BundleHasSelectedItem.java @@ -0,0 +1,26 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.BundleItem; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record BundleHasSelectedItem() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new BundleHasSelectedItem()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return BundleItem.hasSelectedItem(stack); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperties.java b/net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperties.java new file mode 100644 index 00000000..dd3ec237 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperties.java @@ -0,0 +1,29 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; + +@Environment(EnvType.CLIENT) +public class ConditionalItemModelProperties { + private static final ExtraCodecs.LateBoundIdMapper> ID_MAPPER = new ExtraCodecs.LateBoundIdMapper<>(); + public static final MapCodec MAP_CODEC = ID_MAPPER.codec(ResourceLocation.CODEC) + .dispatchMap("property", ConditionalItemModelProperty::type, mapCodec -> mapCodec); + + public static void bootstrap() { + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("custom_model_data"), CustomModelDataProperty.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("using_item"), IsUsingItem.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("broken"), Broken.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("damaged"), Damaged.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("fishing_rod/cast"), FishingRodCast.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("has_component"), HasComponent.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("bundle/has_selected_item"), BundleHasSelectedItem.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("selected"), IsSelected.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("carried"), IsCarried.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("extended_view"), ExtendedView.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("keybind_down"), IsKeybindDown.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("view_entity"), IsViewEntity.MAP_CODEC); + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperty.java b/net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperty.java new file mode 100644 index 00000000..5c32b27b --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperty.java @@ -0,0 +1,17 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public interface ConditionalItemModelProperty { + boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext); + + MapCodec type(); +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/CustomModelDataProperty.java b/net/minecraft/client/renderer/item/properties/conditional/CustomModelDataProperty.java new file mode 100644 index 00000000..9108233e --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/CustomModelDataProperty.java @@ -0,0 +1,33 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.CustomModelData; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record CustomModelDataProperty(int index) implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.NON_NEGATIVE_INT.optionalFieldOf("index", 0).forGetter(CustomModelDataProperty::index)) + .apply(instance, CustomModelDataProperty::new) + ); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + CustomModelData customModelData = stack.get(DataComponents.CUSTOM_MODEL_DATA); + return customModelData != null ? customModelData.getBoolean(this.index) == Boolean.TRUE : false; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/Damaged.java b/net/minecraft/client/renderer/item/properties/conditional/Damaged.java new file mode 100644 index 00000000..9a5606d4 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/Damaged.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Damaged() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new Damaged()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return stack.isDamaged(); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/ExtendedView.java b/net/minecraft/client/renderer/item/properties/conditional/ExtendedView.java new file mode 100644 index 00000000..37ee0dd2 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/ExtendedView.java @@ -0,0 +1,26 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record ExtendedView() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new ExtendedView()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return displayContext == ItemDisplayContext.GUI && Screen.hasShiftDown(); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/FishingRodCast.java b/net/minecraft/client/renderer/item/properties/conditional/FishingRodCast.java new file mode 100644 index 00000000..1c0dc322 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/FishingRodCast.java @@ -0,0 +1,33 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.entity.FishingHookRenderer; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record FishingRodCast() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new FishingRodCast()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + if (entity instanceof Player player && player.fishing != null) { + HumanoidArm humanoidArm = FishingHookRenderer.getHoldingArm(player); + return entity.getItemHeldByArm(humanoidArm) == stack; + } else { + return false; + } + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/HasComponent.java b/net/minecraft/client/renderer/item/properties/conditional/HasComponent.java new file mode 100644 index 00000000..df2474ba --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/HasComponent.java @@ -0,0 +1,35 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record HasComponent(DataComponentType componentType, boolean ignoreDefault) implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + BuiltInRegistries.DATA_COMPONENT_TYPE.byNameCodec().fieldOf("component").forGetter(HasComponent::componentType), + Codec.BOOL.optionalFieldOf("ignore_default", false).forGetter(HasComponent::ignoreDefault) + ) + .apply(instance, HasComponent::new) + ); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return this.ignoreDefault ? stack.hasNonDefault(this.componentType) : stack.has(this.componentType); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/IsCarried.java b/net/minecraft/client/renderer/item/properties/conditional/IsCarried.java new file mode 100644 index 00000000..1b60ac1c --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/IsCarried.java @@ -0,0 +1,26 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record IsCarried() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new IsCarried()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return entity instanceof LocalPlayer localPlayer && localPlayer.containerMenu.getCarried() == stack; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/IsKeybindDown.java b/net/minecraft/client/renderer/item/properties/conditional/IsKeybindDown.java new file mode 100644 index 00000000..30674319 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/IsKeybindDown.java @@ -0,0 +1,35 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record IsKeybindDown(KeyMapping keybind) implements ConditionalItemModelProperty { + private static final Codec KEYBIND_CODEC = Codec.STRING.comapFlatMap(string -> { + KeyMapping keyMapping = KeyMapping.get(string); + return keyMapping != null ? DataResult.success(keyMapping) : DataResult.error(() -> "Invalid keybind: " + string); + }, KeyMapping::getName); + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(KEYBIND_CODEC.fieldOf("keybind").forGetter(IsKeybindDown::keybind)).apply(instance, IsKeybindDown::new) + ); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return this.keybind.isDown(); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/IsSelected.java b/net/minecraft/client/renderer/item/properties/conditional/IsSelected.java new file mode 100644 index 00000000..18064c57 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/IsSelected.java @@ -0,0 +1,26 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record IsSelected() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new IsSelected()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return entity instanceof LocalPlayer localPlayer && localPlayer.getInventory().getSelected() == stack; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/IsUsingItem.java b/net/minecraft/client/renderer/item/properties/conditional/IsUsingItem.java new file mode 100644 index 00000000..711f34c5 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/IsUsingItem.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record IsUsingItem() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new IsUsingItem()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + return entity == null ? false : entity.isUsingItem() && entity.getUseItem() == stack; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/IsViewEntity.java b/net/minecraft/client/renderer/item/properties/conditional/IsViewEntity.java new file mode 100644 index 00000000..6682a2a4 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/IsViewEntity.java @@ -0,0 +1,29 @@ +package net.minecraft.client.renderer.item.properties.conditional; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record IsViewEntity() implements ConditionalItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new IsViewEntity()); + + @Override + public boolean get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed, ItemDisplayContext displayContext) { + Minecraft minecraft = Minecraft.getInstance(); + Entity entity2 = minecraft.getCameraEntity(); + return entity2 != null ? entity == entity2 : entity == minecraft.player; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/conditional/package-info.java b/net/minecraft/client/renderer/item/properties/conditional/package-info.java new file mode 100644 index 00000000..eac3f291 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/conditional/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.renderer.item.properties.conditional; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/renderer/item/properties/numeric/BundleFullness.java b/net/minecraft/client/renderer/item/properties/numeric/BundleFullness.java new file mode 100644 index 00000000..0f35c04e --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/BundleFullness.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.BundleItem; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record BundleFullness() implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new BundleFullness()); + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + return BundleItem.getFullnessDisplay(stack); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/CompassAngle.java b/net/minecraft/client/renderer/item/properties/numeric/CompassAngle.java new file mode 100644 index 00000000..f725dc6b --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/CompassAngle.java @@ -0,0 +1,33 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class CompassAngle implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = CompassAngleState.MAP_CODEC.xmap(CompassAngle::new, compassAngle -> compassAngle.state); + private final CompassAngleState state; + + public CompassAngle(boolean wobble, CompassAngleState.CompassTarget compassTarget) { + this(new CompassAngleState(wobble, compassTarget)); + } + + private CompassAngle(CompassAngleState state) { + this.state = state; + } + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + return this.state.get(stack, level, entity, seed); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/CompassAngleState.java b/net/minecraft/client/renderer/item/properties/numeric/CompassAngleState.java new file mode 100644 index 00000000..d7605131 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/CompassAngleState.java @@ -0,0 +1,119 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.GlobalPos; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class CompassAngleState extends NeedleDirectionHelper { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + Codec.BOOL.optionalFieldOf("wobble", true).forGetter(NeedleDirectionHelper::wobble), + CompassAngleState.CompassTarget.CODEC.fieldOf("target").forGetter(CompassAngleState::target) + ) + .apply(instance, CompassAngleState::new) + ); + private final NeedleDirectionHelper.Wobbler wobbler; + private final NeedleDirectionHelper.Wobbler noTargetWobbler; + private final CompassAngleState.CompassTarget compassTarget; + private final RandomSource random = RandomSource.create(); + + public CompassAngleState(boolean wobble, CompassAngleState.CompassTarget compassTarget) { + super(wobble); + this.wobbler = this.newWobbler(0.8F); + this.noTargetWobbler = this.newWobbler(0.8F); + this.compassTarget = compassTarget; + } + + @Override + protected float calculate(ItemStack stack, ClientLevel level, int seed, Entity entity) { + GlobalPos globalPos = this.compassTarget.get(level, stack, entity); + long l = level.getGameTime(); + return !isValidCompassTargetPos(entity, globalPos) + ? this.getRandomlySpinningRotation(seed, l) + : this.getRotationTowardsCompassTarget(entity, l, globalPos.pos()); + } + + private float getRandomlySpinningRotation(int seed, long gameTime) { + if (this.noTargetWobbler.shouldUpdate(gameTime)) { + this.noTargetWobbler.update(gameTime, this.random.nextFloat()); + } + + float f = this.noTargetWobbler.rotation() + hash(seed) / 2.1474836E9F; + return Mth.positiveModulo(f, 1.0F); + } + + private float getRotationTowardsCompassTarget(Entity entity, long gameTime, BlockPos targetPos) { + float f = (float)getAngleFromEntityToPos(entity, targetPos); + float g = getWrappedVisualRotationY(entity); + float h; + if (entity instanceof Player player && player.isLocalPlayer() && player.level().tickRateManager().runsNormally()) { + if (this.wobbler.shouldUpdate(gameTime)) { + this.wobbler.update(gameTime, 0.5F - (g - 0.25F)); + } + + h = f + this.wobbler.rotation(); + } else { + h = 0.5F - (g - 0.25F - f); + } + + return Mth.positiveModulo(h, 1.0F); + } + + private static boolean isValidCompassTargetPos(Entity entity, @Nullable GlobalPos pos) { + return pos != null && pos.dimension() == entity.level().dimension() && !(pos.pos().distToCenterSqr(entity.position()) < 1.0E-5F); + } + + private static double getAngleFromEntityToPos(Entity entity, BlockPos pos) { + Vec3 vec3 = Vec3.atCenterOf(pos); + return Math.atan2(vec3.z() - entity.getZ(), vec3.x() - entity.getX()) / (float) (Math.PI * 2); + } + + private static float getWrappedVisualRotationY(Entity entity) { + return Mth.positiveModulo(entity.getVisualRotationYInDegrees() / 360.0F, 1.0F); + } + + private static int hash(int seed) { + return seed * 1327217883; + } + + protected CompassAngleState.CompassTarget target() { + return this.compassTarget; + } + + @Environment(EnvType.CLIENT) + public static enum CompassTarget implements StringRepresentable { + NONE("NONE", 0, "none"), + LODESTONE("LODESTONE", 1, "lodestone"), + SPAWN("SPAWN", 2, "spawn"), + RECOVERY("RECOVERY", 3, "recovery"); + + public static final Codec CODEC = StringRepresentable.fromEnum(CompassAngleState.CompassTarget::values); + private final String name; + + CompassTarget(final String name) { + this.name = name; + } + + @Override + public String getSerializedName() { + return this.name; + } + + @Nullable + abstract GlobalPos get(ClientLevel level, ItemStack stack, Entity entity); + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/Cooldown.java b/net/minecraft/client/renderer/item/properties/numeric/Cooldown.java new file mode 100644 index 00000000..f68ae74b --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/Cooldown.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Cooldown() implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new Cooldown()); + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + return entity instanceof Player player ? player.getCooldowns().getCooldownPercent(stack, 0.0F) : 0.0F; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/Count.java b/net/minecraft/client/renderer/item/properties/numeric/Count.java new file mode 100644 index 00000000..04241953 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/Count.java @@ -0,0 +1,31 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Count(boolean normalize) implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(Codec.BOOL.optionalFieldOf("normalize", true).forGetter(Count::normalize)).apply(instance, Count::new) + ); + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + float f = stack.getCount(); + float g = stack.getMaxStackSize(); + return this.normalize ? Mth.clamp(f / g, 0.0F, 1.0F) : Mth.clamp(f, 0.0F, g); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/CrossbowPull.java b/net/minecraft/client/renderer/item/properties/numeric/CrossbowPull.java new file mode 100644 index 00000000..2e84ea72 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/CrossbowPull.java @@ -0,0 +1,32 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class CrossbowPull implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = MapCodec.unit(new CrossbowPull()); + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + if (entity == null) { + return 0.0F; + } else if (CrossbowItem.isCharged(stack)) { + return 0.0F; + } else { + int i = CrossbowItem.getChargeDuration(stack, entity); + return (float)UseDuration.useDuration(stack, entity) / i; + } + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/CustomModelDataProperty.java b/net/minecraft/client/renderer/item/properties/numeric/CustomModelDataProperty.java new file mode 100644 index 00000000..e45df71a --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/CustomModelDataProperty.java @@ -0,0 +1,39 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.CustomModelData; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record CustomModelDataProperty(int index) implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ExtraCodecs.NON_NEGATIVE_INT.optionalFieldOf("index", 0).forGetter(CustomModelDataProperty::index)) + .apply(instance, CustomModelDataProperty::new) + ); + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + CustomModelData customModelData = stack.get(DataComponents.CUSTOM_MODEL_DATA); + if (customModelData != null) { + Float float_ = customModelData.getFloat(this.index); + if (float_ != null) { + return float_; + } + } + + return 0.0F; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/Damage.java b/net/minecraft/client/renderer/item/properties/numeric/Damage.java new file mode 100644 index 00000000..7ff6f8f2 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/Damage.java @@ -0,0 +1,31 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record Damage(boolean normalize) implements RangeSelectItemModelProperty { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(Codec.BOOL.optionalFieldOf("normalize", true).forGetter(Damage::normalize)).apply(instance, Damage::new) + ); + + @Override + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + float f = stack.getDamageValue(); + float g = stack.getMaxDamage(); + return this.normalize ? Mth.clamp(f / g, 0.0F, 1.0F) : Mth.clamp(f, 0.0F, g); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/NeedleDirectionHelper.java b/net/minecraft/client/renderer/item/properties/numeric/NeedleDirectionHelper.java new file mode 100644 index 00000000..13e39292 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/NeedleDirectionHelper.java @@ -0,0 +1,99 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public abstract class NeedleDirectionHelper { + private final boolean wobble; + + protected NeedleDirectionHelper(boolean wobble) { + this.wobble = wobble; + } + + public float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) { + Entity entity2 = (Entity)(entity != null ? entity : stack.getEntityRepresentation()); + if (entity2 == null) { + return 0.0F; + } else { + if (level == null && entity2.level() instanceof ClientLevel clientLevel) { + level = clientLevel; + } + + return level == null ? 0.0F : this.calculate(stack, level, seed, entity2); + } + } + + protected abstract float calculate(ItemStack stack, ClientLevel level, int seed, Entity entity); + + protected boolean wobble() { + return this.wobble; + } + + protected NeedleDirectionHelper.Wobbler newWobbler(float scale) { + return this.wobble ? standardWobbler(scale) : nonWobbler(); + } + + public static NeedleDirectionHelper.Wobbler standardWobbler(float scale) { + return new NeedleDirectionHelper.Wobbler() { + private float rotation; + private float deltaRotation; + private long lastUpdateTick; + + @Override + public float rotation() { + return this.rotation; + } + + @Override + public boolean shouldUpdate(long gameTime) { + return this.lastUpdateTick != gameTime; + } + + @Override + public void update(long gameTime, float targetValue) { + this.lastUpdateTick = gameTime; + float f = Mth.positiveModulo(targetValue - this.rotation + 0.5F, 1.0F) - 0.5F; + this.deltaRotation += f * 0.1F; + this.deltaRotation = this.deltaRotation * scale; + this.rotation = Mth.positiveModulo(this.rotation + this.deltaRotation, 1.0F); + } + }; + } + + public static NeedleDirectionHelper.Wobbler nonWobbler() { + return new NeedleDirectionHelper.Wobbler() { + private float targetValue; + + @Override + public float rotation() { + return this.targetValue; + } + + @Override + public boolean shouldUpdate(long gameTime) { + return true; + } + + @Override + public void update(long gameTime, float targetValue) { + this.targetValue = targetValue; + } + }; + } + + @Environment(EnvType.CLIENT) + public interface Wobbler { + float rotation(); + + boolean shouldUpdate(long gameTime); + + void update(long gameTime, float targetValue); + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties.java b/net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties.java new file mode 100644 index 00000000..79034716 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperties.java @@ -0,0 +1,27 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; + +@Environment(EnvType.CLIENT) +public class RangeSelectItemModelProperties { + private static final ExtraCodecs.LateBoundIdMapper> ID_MAPPER = new ExtraCodecs.LateBoundIdMapper<>(); + public static final MapCodec MAP_CODEC = ID_MAPPER.codec(ResourceLocation.CODEC) + .dispatchMap("property", RangeSelectItemModelProperty::type, mapCodec -> mapCodec); + + public static void bootstrap() { + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("custom_model_data"), CustomModelDataProperty.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("bundle/fullness"), BundleFullness.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("damage"), Damage.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("cooldown"), Cooldown.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("time"), Time.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("compass"), CompassAngle.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("crossbow/pull"), CrossbowPull.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("use_cycle"), UseCycle.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("use_duration"), UseDuration.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("count"), Count.MAP_CODEC); + } +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperty.java b/net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperty.java new file mode 100644 index 00000000..0dae06ac --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/RangeSelectItemModelProperty.java @@ -0,0 +1,16 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public interface RangeSelectItemModelProperty { + float get(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed); + + MapCodec type(); +} diff --git a/net/minecraft/client/renderer/item/properties/numeric/Time.java b/net/minecraft/client/renderer/item/properties/numeric/Time.java new file mode 100644 index 00000000..263a6872 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/numeric/Time.java @@ -0,0 +1,68 @@ +package net.minecraft.client.renderer.item.properties.numeric; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; + +@Environment(EnvType.CLIENT) +public class Time extends NeedleDirectionHelper implements RangeSelectItemModelProperty { + public static final MapCodec

, T>(MapCodec> switchCodec) { + public static

, T> SelectItemModelProperty.Type create(MapCodec

mapCodec, Codec codec) { + Codec>> codec2 = SelectItemModel.SwitchCase.codec(codec) + .listOf() + .validate( + list -> { + if (list.isEmpty()) { + return DataResult.error(() -> "Empty case list"); + } else { + Multiset multiset = HashMultiset.create(); + + for (SelectItemModel.SwitchCase switchCase : list) { + multiset.addAll(switchCase.values()); + } + + return multiset.size() != multiset.entrySet().size() + ? DataResult.error( + () -> "Duplicate case conditions: " + + (String)multiset.entrySet() + .stream() + .filter(entry -> entry.getCount() > 1) + .map(entry -> entry.getElement().toString()) + .collect(Collectors.joining(", ")) + ) + : DataResult.success(list); + } + } + ); + MapCodec> mapCodec2 = RecordCodecBuilder.mapCodec( + instance -> instance.group( + mapCodec.forGetter(SelectItemModel.UnbakedSwitch::property), codec2.fieldOf("cases").forGetter(SelectItemModel.UnbakedSwitch::cases) + ) + .apply(instance, SelectItemModel.UnbakedSwitch::new) + ); + return new SelectItemModelProperty.Type<>(mapCodec2); + } + } +} diff --git a/net/minecraft/client/renderer/item/properties/select/TrimMaterialProperty.java b/net/minecraft/client/renderer/item/properties/select/TrimMaterialProperty.java new file mode 100644 index 00000000..3a958275 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/select/TrimMaterialProperty.java @@ -0,0 +1,35 @@ +package net.minecraft.client.renderer.item.properties.select; + +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.equipment.trim.ArmorTrim; +import net.minecraft.world.item.equipment.trim.TrimMaterial; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record TrimMaterialProperty() implements SelectItemModelProperty> { + public static final SelectItemModelProperty.Type> TYPE = SelectItemModelProperty.Type.create( + MapCodec.unit(new TrimMaterialProperty()), ResourceKey.codec(Registries.TRIM_MATERIAL) + ); + + @Nullable + public ResourceKey get( + ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i, ItemDisplayContext itemDisplayContext + ) { + ArmorTrim armorTrim = itemStack.get(DataComponents.TRIM); + return armorTrim == null ? null : (ResourceKey)armorTrim.material().unwrapKey().orElse(null); + } + + @Override + public SelectItemModelProperty.Type> type() { + return TYPE; + } +} diff --git a/net/minecraft/client/renderer/item/properties/select/package-info.java b/net/minecraft/client/renderer/item/properties/select/package-info.java new file mode 100644 index 00000000..489b2565 --- /dev/null +++ b/net/minecraft/client/renderer/item/properties/select/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.renderer.item.properties.select; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/renderer/special/BannerSpecialRenderer.java b/net/minecraft/client/renderer/special/BannerSpecialRenderer.java new file mode 100644 index 00000000..14b8ae25 --- /dev/null +++ b/net/minecraft/client/renderer/special/BannerSpecialRenderer.java @@ -0,0 +1,66 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.Objects; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BannerRenderer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BannerPatternLayers; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class BannerSpecialRenderer implements SpecialModelRenderer { + private final BannerRenderer bannerRenderer; + private final DyeColor baseColor; + + public BannerSpecialRenderer(DyeColor baseColor, BannerRenderer bannerRenderer) { + this.bannerRenderer = bannerRenderer; + this.baseColor = baseColor; + } + + @Nullable + public BannerPatternLayers extractArgument(ItemStack itemStack) { + return itemStack.get(DataComponents.BANNER_PATTERNS); + } + + public void render( + @Nullable BannerPatternLayers bannerPatternLayers, + ItemDisplayContext itemDisplayContext, + PoseStack poseStack, + MultiBufferSource multiBufferSource, + int i, + int j, + boolean bl + ) { + this.bannerRenderer + .renderInHand( + poseStack, multiBufferSource, i, j, this.baseColor, (BannerPatternLayers)Objects.requireNonNullElse(bannerPatternLayers, BannerPatternLayers.EMPTY) + ); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(DyeColor baseColor) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(DyeColor.CODEC.fieldOf("color").forGetter(BannerSpecialRenderer.Unbaked::baseColor)) + .apply(instance, BannerSpecialRenderer.Unbaked::new) + ); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new BannerSpecialRenderer(this.baseColor, new BannerRenderer(modelSet)); + } + } +} diff --git a/net/minecraft/client/renderer/special/BedSpecialRenderer.java b/net/minecraft/client/renderer/special/BedSpecialRenderer.java new file mode 100644 index 00000000..f2b3e5b1 --- /dev/null +++ b/net/minecraft/client/renderer/special/BedSpecialRenderer.java @@ -0,0 +1,55 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.renderer.blockentity.BedRenderer; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class BedSpecialRenderer implements NoDataSpecialModelRenderer { + private final BedRenderer bedRenderer; + private final Material material; + + public BedSpecialRenderer(BedRenderer bedRenderer, Material material) { + this.bedRenderer = bedRenderer; + this.material = material; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + this.bedRenderer.renderInHand(poseStack, bufferSource, packedLight, packedOverlay, this.material); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(ResourceLocation texture) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(ResourceLocation.CODEC.fieldOf("texture").forGetter(BedSpecialRenderer.Unbaked::texture)) + .apply(instance, BedSpecialRenderer.Unbaked::new) + ); + + public Unbaked(DyeColor color) { + this(Sheets.colorToResourceMaterial(color)); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new BedSpecialRenderer(new BedRenderer(modelSet), Sheets.createBedMaterial(this.texture)); + } + } +} diff --git a/net/minecraft/client/renderer/special/ChestSpecialRenderer.java b/net/minecraft/client/renderer/special/ChestSpecialRenderer.java new file mode 100644 index 00000000..88b87630 --- /dev/null +++ b/net/minecraft/client/renderer/special/ChestSpecialRenderer.java @@ -0,0 +1,71 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.ChestModel; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class ChestSpecialRenderer implements NoDataSpecialModelRenderer { + public static final ResourceLocation GIFT_CHEST_TEXTURE = ResourceLocation.withDefaultNamespace("christmas"); + public static final ResourceLocation NORMAL_CHEST_TEXTURE = ResourceLocation.withDefaultNamespace("normal"); + public static final ResourceLocation TRAPPED_CHEST_TEXTURE = ResourceLocation.withDefaultNamespace("trapped"); + public static final ResourceLocation ENDER_CHEST_TEXTURE = ResourceLocation.withDefaultNamespace("ender"); + private final ChestModel model; + private final Material material; + private final float openness; + + public ChestSpecialRenderer(ChestModel model, Material material, float openness) { + this.model = model; + this.material = material; + this.openness = openness; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + VertexConsumer vertexConsumer = this.material.buffer(bufferSource, RenderType::entitySolid); + this.model.setupAnim(this.openness); + this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(ResourceLocation texture, float openness) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ResourceLocation.CODEC.fieldOf("texture").forGetter(ChestSpecialRenderer.Unbaked::texture), + Codec.FLOAT.optionalFieldOf("openness", 0.0F).forGetter(ChestSpecialRenderer.Unbaked::openness) + ) + .apply(instance, ChestSpecialRenderer.Unbaked::new) + ); + + public Unbaked(ResourceLocation texture) { + this(texture, 0.0F); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + ChestModel chestModel = new ChestModel(modelSet.bakeLayer(ModelLayers.CHEST)); + Material material = Sheets.chestMaterial(this.texture); + return new ChestSpecialRenderer(chestModel, material, this.openness); + } + } +} diff --git a/net/minecraft/client/renderer/special/ConduitSpecialRenderer.java b/net/minecraft/client/renderer/special/ConduitSpecialRenderer.java new file mode 100644 index 00000000..a8304d4a --- /dev/null +++ b/net/minecraft/client/renderer/special/ConduitSpecialRenderer.java @@ -0,0 +1,49 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.ConduitRenderer; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class ConduitSpecialRenderer implements NoDataSpecialModelRenderer { + private final ModelPart model; + + public ConduitSpecialRenderer(ModelPart model) { + this.model = model; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + VertexConsumer vertexConsumer = ConduitRenderer.SHELL_TEXTURE.buffer(bufferSource, RenderType::entitySolid); + poseStack.pushPose(); + poseStack.translate(0.5F, 0.5F, 0.5F); + this.model.render(poseStack, vertexConsumer, packedLight, packedOverlay); + poseStack.popPose(); + } + + @Environment(EnvType.CLIENT) + public record Unbaked() implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = MapCodec.unit(new ConduitSpecialRenderer.Unbaked()); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new ConduitSpecialRenderer(modelSet.bakeLayer(ModelLayers.CONDUIT_SHELL)); + } + } +} diff --git a/net/minecraft/client/renderer/special/DecoratedPotSpecialRenderer.java b/net/minecraft/client/renderer/special/DecoratedPotSpecialRenderer.java new file mode 100644 index 00000000..16072d8d --- /dev/null +++ b/net/minecraft/client/renderer/special/DecoratedPotSpecialRenderer.java @@ -0,0 +1,56 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.MapCodec; +import java.util.Objects; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.DecoratedPotRenderer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.PotDecorations; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class DecoratedPotSpecialRenderer implements SpecialModelRenderer { + private final DecoratedPotRenderer decoratedPotRenderer; + + public DecoratedPotSpecialRenderer(DecoratedPotRenderer decoratedPotRenderer) { + this.decoratedPotRenderer = decoratedPotRenderer; + } + + @Nullable + public PotDecorations extractArgument(ItemStack itemStack) { + return itemStack.get(DataComponents.POT_DECORATIONS); + } + + public void render( + @Nullable PotDecorations potDecorations, + ItemDisplayContext itemDisplayContext, + PoseStack poseStack, + MultiBufferSource multiBufferSource, + int i, + int j, + boolean bl + ) { + this.decoratedPotRenderer.renderInHand(poseStack, multiBufferSource, i, j, (PotDecorations)Objects.requireNonNullElse(potDecorations, PotDecorations.EMPTY)); + } + + @Environment(EnvType.CLIENT) + public record Unbaked() implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = MapCodec.unit(new DecoratedPotSpecialRenderer.Unbaked()); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new DecoratedPotSpecialRenderer(new DecoratedPotRenderer(modelSet)); + } + } +} diff --git a/net/minecraft/client/renderer/special/HangingSignSpecialRenderer.java b/net/minecraft/client/renderer/special/HangingSignSpecialRenderer.java new file mode 100644 index 00000000..07387814 --- /dev/null +++ b/net/minecraft/client/renderer/special/HangingSignSpecialRenderer.java @@ -0,0 +1,62 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.Optional; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.renderer.blockentity.HangingSignRenderer; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.level.block.state.properties.WoodType; + +@Environment(EnvType.CLIENT) +public class HangingSignSpecialRenderer implements NoDataSpecialModelRenderer { + private final Model model; + private final Material material; + + public HangingSignSpecialRenderer(Model model, Material material) { + this.model = model; + this.material = material; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + HangingSignRenderer.renderInHand(poseStack, bufferSource, packedLight, packedOverlay, this.model, this.material); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(WoodType woodType, Optional texture) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + WoodType.CODEC.fieldOf("wood_type").forGetter(HangingSignSpecialRenderer.Unbaked::woodType), + ResourceLocation.CODEC.optionalFieldOf("texture").forGetter(HangingSignSpecialRenderer.Unbaked::texture) + ) + .apply(instance, HangingSignSpecialRenderer.Unbaked::new) + ); + + public Unbaked(WoodType woodType) { + this(woodType, Optional.empty()); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + Model model = HangingSignRenderer.createSignModel(modelSet, this.woodType, HangingSignRenderer.AttachmentType.CEILING_MIDDLE); + Material material = (Material)this.texture.map(Sheets::createHangingSignMaterial).orElseGet(() -> Sheets.getHangingSignMaterial(this.woodType)); + return new HangingSignSpecialRenderer(model, material); + } + } +} diff --git a/net/minecraft/client/renderer/special/NoDataSpecialModelRenderer.java b/net/minecraft/client/renderer/special/NoDataSpecialModelRenderer.java new file mode 100644 index 00000000..cf7a512b --- /dev/null +++ b/net/minecraft/client/renderer/special/NoDataSpecialModelRenderer.java @@ -0,0 +1,25 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public interface NoDataSpecialModelRenderer extends SpecialModelRenderer { + @Nullable + default Void extractArgument(ItemStack itemStack) { + return null; + } + + default void render( + @Nullable Void void_, ItemDisplayContext itemDisplayContext, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j, boolean bl + ) { + this.render(itemDisplayContext, poseStack, multiBufferSource, i, j, bl); + } + + void render(ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType); +} diff --git a/net/minecraft/client/renderer/special/ShieldSpecialRenderer.java b/net/minecraft/client/renderer/special/ShieldSpecialRenderer.java new file mode 100644 index 00000000..102586cb --- /dev/null +++ b/net/minecraft/client/renderer/special/ShieldSpecialRenderer.java @@ -0,0 +1,94 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.MapCodec; +import java.util.Objects; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.ShieldModel; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BannerRenderer; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.core.component.DataComponentMap; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BannerPatternLayers; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class ShieldSpecialRenderer implements SpecialModelRenderer { + private final ShieldModel model; + + public ShieldSpecialRenderer(ShieldModel model) { + this.model = model; + } + + @Nullable + public DataComponentMap extractArgument(ItemStack itemStack) { + return itemStack.immutableComponents(); + } + + public void render( + @Nullable DataComponentMap dataComponentMap, + ItemDisplayContext itemDisplayContext, + PoseStack poseStack, + MultiBufferSource multiBufferSource, + int i, + int j, + boolean bl + ) { + BannerPatternLayers bannerPatternLayers = dataComponentMap != null + ? dataComponentMap.getOrDefault(DataComponents.BANNER_PATTERNS, BannerPatternLayers.EMPTY) + : BannerPatternLayers.EMPTY; + DyeColor dyeColor = dataComponentMap != null ? dataComponentMap.get(DataComponents.BASE_COLOR) : null; + boolean bl2 = !bannerPatternLayers.layers().isEmpty() || dyeColor != null; + poseStack.pushPose(); + poseStack.scale(1.0F, -1.0F, -1.0F); + Material material = bl2 ? ModelBakery.SHIELD_BASE : ModelBakery.NO_PATTERN_SHIELD; + VertexConsumer vertexConsumer = material.sprite() + .wrap(ItemRenderer.getFoilBuffer(multiBufferSource, this.model.renderType(material.atlasLocation()), itemDisplayContext == ItemDisplayContext.GUI, bl)); + this.model.handle().render(poseStack, vertexConsumer, i, j); + if (bl2) { + BannerRenderer.renderPatterns( + poseStack, + multiBufferSource, + i, + j, + this.model.plate(), + material, + false, + (DyeColor)Objects.requireNonNullElse(dyeColor, DyeColor.WHITE), + bannerPatternLayers, + bl, + false + ); + } else { + this.model.plate().render(poseStack, vertexConsumer, i, j); + } + + poseStack.popPose(); + } + + @Environment(EnvType.CLIENT) + public record Unbaked() implements SpecialModelRenderer.Unbaked { + public static final ShieldSpecialRenderer.Unbaked INSTANCE = new ShieldSpecialRenderer.Unbaked(); + public static final MapCodec MAP_CODEC = MapCodec.unit(INSTANCE); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new ShieldSpecialRenderer(new ShieldModel(modelSet.bakeLayer(ModelLayers.SHIELD))); + } + } +} diff --git a/net/minecraft/client/renderer/special/ShulkerBoxSpecialRenderer.java b/net/minecraft/client/renderer/special/ShulkerBoxSpecialRenderer.java new file mode 100644 index 00000000..8730e52b --- /dev/null +++ b/net/minecraft/client/renderer/special/ShulkerBoxSpecialRenderer.java @@ -0,0 +1,69 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.renderer.blockentity.ShulkerBoxRenderer; +import net.minecraft.client.resources.model.Material; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class ShulkerBoxSpecialRenderer implements NoDataSpecialModelRenderer { + private final ShulkerBoxRenderer shulkerBoxRenderer; + private final float openness; + private final Direction orientation; + private final Material material; + + public ShulkerBoxSpecialRenderer(ShulkerBoxRenderer shulkerBoxRenderer, float openness, Direction orientation, Material material) { + this.shulkerBoxRenderer = shulkerBoxRenderer; + this.openness = openness; + this.orientation = orientation; + this.material = material; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + this.shulkerBoxRenderer.render(poseStack, bufferSource, packedLight, packedOverlay, this.orientation, this.openness, this.material); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(ResourceLocation texture, float openness, Direction orientation) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + ResourceLocation.CODEC.fieldOf("texture").forGetter(ShulkerBoxSpecialRenderer.Unbaked::texture), + Codec.FLOAT.optionalFieldOf("openness", 0.0F).forGetter(ShulkerBoxSpecialRenderer.Unbaked::openness), + Direction.CODEC.optionalFieldOf("orientation", Direction.UP).forGetter(ShulkerBoxSpecialRenderer.Unbaked::orientation) + ) + .apply(instance, ShulkerBoxSpecialRenderer.Unbaked::new) + ); + + public Unbaked() { + this(ResourceLocation.withDefaultNamespace("shulker"), 0.0F, Direction.UP); + } + + public Unbaked(DyeColor color) { + this(Sheets.colorToShulkerMaterial(color), 0.0F, Direction.UP); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new ShulkerBoxSpecialRenderer(new ShulkerBoxRenderer(modelSet), this.openness, this.orientation, Sheets.createShulkerMaterial(this.texture)); + } + } +} diff --git a/net/minecraft/client/renderer/special/SkullSpecialRenderer.java b/net/minecraft/client/renderer/special/SkullSpecialRenderer.java new file mode 100644 index 00000000..5cb56610 --- /dev/null +++ b/net/minecraft/client/renderer/special/SkullSpecialRenderer.java @@ -0,0 +1,87 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.Optional; +import java.util.function.UnaryOperator; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.SkullModelBase; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.SkullBlockRenderer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ResolvableProfile; +import net.minecraft.world.level.block.SkullBlock.Type; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public class SkullSpecialRenderer implements SpecialModelRenderer { + private final Type skullType; + private final SkullModelBase model; + @Nullable + private final ResourceLocation textureOverride; + private final float animation; + + public SkullSpecialRenderer(Type skullType, SkullModelBase model, @Nullable ResourceLocation textureOverride, float animation) { + this.skullType = skullType; + this.model = model; + this.textureOverride = textureOverride; + this.animation = animation; + } + + @Nullable + public ResolvableProfile extractArgument(ItemStack itemStack) { + return itemStack.get(DataComponents.PROFILE); + } + + public void render( + @Nullable ResolvableProfile resolvableProfile, + ItemDisplayContext itemDisplayContext, + PoseStack poseStack, + MultiBufferSource multiBufferSource, + int i, + int j, + boolean bl + ) { + RenderType renderType = SkullBlockRenderer.getRenderType(this.skullType, resolvableProfile, this.textureOverride); + SkullBlockRenderer.renderSkull(null, 180.0F, this.animation, poseStack, multiBufferSource, i, this.model, renderType); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(Type kind, Optional textureOverride, float animation) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + Type.CODEC.fieldOf("kind").forGetter(SkullSpecialRenderer.Unbaked::kind), + ResourceLocation.CODEC.optionalFieldOf("texture").forGetter(SkullSpecialRenderer.Unbaked::textureOverride), + Codec.FLOAT.optionalFieldOf("animation", 0.0F).forGetter(SkullSpecialRenderer.Unbaked::animation) + ) + .apply(instance, SkullSpecialRenderer.Unbaked::new) + ); + + public Unbaked(Type type) { + this(type, Optional.empty(), 0.0F); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Nullable + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + SkullModelBase skullModelBase = SkullBlockRenderer.createModel(modelSet, this.kind); + ResourceLocation resourceLocation = (ResourceLocation)this.textureOverride + .map(resourceLocationx -> resourceLocationx.withPath((UnaryOperator)(string -> "textures/entity/" + string + ".png"))) + .orElse(null); + return skullModelBase != null ? new SkullSpecialRenderer(this.kind, skullModelBase, resourceLocation, this.animation) : null; + } + } +} diff --git a/net/minecraft/client/renderer/special/SpecialModelRenderer.java b/net/minecraft/client/renderer/special/SpecialModelRenderer.java new file mode 100644 index 00000000..85374323 --- /dev/null +++ b/net/minecraft/client/renderer/special/SpecialModelRenderer.java @@ -0,0 +1,35 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public interface SpecialModelRenderer { + void render( + @Nullable T patterns, + ItemDisplayContext displayContext, + PoseStack poseStack, + MultiBufferSource bufferSource, + int packedLight, + int packedOverlay, + boolean hasFoilType + ); + + @Nullable + T extractArgument(ItemStack stack); + + @Environment(EnvType.CLIENT) + public interface Unbaked { + @Nullable + SpecialModelRenderer bake(EntityModelSet modelSet); + + MapCodec type(); + } +} diff --git a/net/minecraft/client/renderer/special/SpecialModelRenderers.java b/net/minecraft/client/renderer/special/SpecialModelRenderers.java new file mode 100644 index 00000000..66809d13 --- /dev/null +++ b/net/minecraft/client/renderer/special/SpecialModelRenderers.java @@ -0,0 +1,192 @@ +package net.minecraft.client.renderer.special; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMap.Builder; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import java.util.HashMap; +import java.util.Map; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.blockentity.ChestRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SkullBlock.Types; +import net.minecraft.world.level.block.state.properties.WoodType; + +@Environment(EnvType.CLIENT) +public class SpecialModelRenderers { + private static final ExtraCodecs.LateBoundIdMapper> ID_MAPPER = new ExtraCodecs.LateBoundIdMapper<>(); + public static final Codec CODEC = ID_MAPPER.codec(ResourceLocation.CODEC) + .dispatch(SpecialModelRenderer.Unbaked::type, mapCodec -> mapCodec); + private static final Map STATIC_BLOCK_MAPPING = ImmutableMap.builder() + .put(Blocks.SKELETON_SKULL, new SkullSpecialRenderer.Unbaked(Types.SKELETON)) + .put(Blocks.ZOMBIE_HEAD, new SkullSpecialRenderer.Unbaked(Types.ZOMBIE)) + .put(Blocks.CREEPER_HEAD, new SkullSpecialRenderer.Unbaked(Types.CREEPER)) + .put(Blocks.DRAGON_HEAD, new SkullSpecialRenderer.Unbaked(Types.DRAGON)) + .put(Blocks.PIGLIN_HEAD, new SkullSpecialRenderer.Unbaked(Types.PIGLIN)) + .put(Blocks.PLAYER_HEAD, new SkullSpecialRenderer.Unbaked(Types.PLAYER)) + .put(Blocks.WITHER_SKELETON_SKULL, new SkullSpecialRenderer.Unbaked(Types.WITHER_SKELETON)) + .put(Blocks.SKELETON_WALL_SKULL, new SkullSpecialRenderer.Unbaked(Types.SKELETON)) + .put(Blocks.ZOMBIE_WALL_HEAD, new SkullSpecialRenderer.Unbaked(Types.ZOMBIE)) + .put(Blocks.CREEPER_WALL_HEAD, new SkullSpecialRenderer.Unbaked(Types.CREEPER)) + .put(Blocks.DRAGON_WALL_HEAD, new SkullSpecialRenderer.Unbaked(Types.DRAGON)) + .put(Blocks.PIGLIN_WALL_HEAD, new SkullSpecialRenderer.Unbaked(Types.PIGLIN)) + .put(Blocks.PLAYER_WALL_HEAD, new SkullSpecialRenderer.Unbaked(Types.PLAYER)) + .put(Blocks.WITHER_SKELETON_WALL_SKULL, new SkullSpecialRenderer.Unbaked(Types.WITHER_SKELETON)) + .put(Blocks.WHITE_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.WHITE)) + .put(Blocks.ORANGE_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.ORANGE)) + .put(Blocks.MAGENTA_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.MAGENTA)) + .put(Blocks.LIGHT_BLUE_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.LIGHT_BLUE)) + .put(Blocks.YELLOW_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.YELLOW)) + .put(Blocks.LIME_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.LIME)) + .put(Blocks.PINK_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.PINK)) + .put(Blocks.GRAY_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.GRAY)) + .put(Blocks.LIGHT_GRAY_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.LIGHT_GRAY)) + .put(Blocks.CYAN_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.CYAN)) + .put(Blocks.PURPLE_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.PURPLE)) + .put(Blocks.BLUE_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.BLUE)) + .put(Blocks.BROWN_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.BROWN)) + .put(Blocks.GREEN_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.GREEN)) + .put(Blocks.RED_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.RED)) + .put(Blocks.BLACK_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.BLACK)) + .put(Blocks.WHITE_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.WHITE)) + .put(Blocks.ORANGE_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.ORANGE)) + .put(Blocks.MAGENTA_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.MAGENTA)) + .put(Blocks.LIGHT_BLUE_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.LIGHT_BLUE)) + .put(Blocks.YELLOW_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.YELLOW)) + .put(Blocks.LIME_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.LIME)) + .put(Blocks.PINK_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.PINK)) + .put(Blocks.GRAY_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.GRAY)) + .put(Blocks.LIGHT_GRAY_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.LIGHT_GRAY)) + .put(Blocks.CYAN_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.CYAN)) + .put(Blocks.PURPLE_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.PURPLE)) + .put(Blocks.BLUE_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.BLUE)) + .put(Blocks.BROWN_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.BROWN)) + .put(Blocks.GREEN_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.GREEN)) + .put(Blocks.RED_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.RED)) + .put(Blocks.BLACK_WALL_BANNER, new BannerSpecialRenderer.Unbaked(DyeColor.BLACK)) + .put(Blocks.WHITE_BED, new BedSpecialRenderer.Unbaked(DyeColor.WHITE)) + .put(Blocks.ORANGE_BED, new BedSpecialRenderer.Unbaked(DyeColor.ORANGE)) + .put(Blocks.MAGENTA_BED, new BedSpecialRenderer.Unbaked(DyeColor.MAGENTA)) + .put(Blocks.LIGHT_BLUE_BED, new BedSpecialRenderer.Unbaked(DyeColor.LIGHT_BLUE)) + .put(Blocks.YELLOW_BED, new BedSpecialRenderer.Unbaked(DyeColor.YELLOW)) + .put(Blocks.LIME_BED, new BedSpecialRenderer.Unbaked(DyeColor.LIME)) + .put(Blocks.PINK_BED, new BedSpecialRenderer.Unbaked(DyeColor.PINK)) + .put(Blocks.GRAY_BED, new BedSpecialRenderer.Unbaked(DyeColor.GRAY)) + .put(Blocks.LIGHT_GRAY_BED, new BedSpecialRenderer.Unbaked(DyeColor.LIGHT_GRAY)) + .put(Blocks.CYAN_BED, new BedSpecialRenderer.Unbaked(DyeColor.CYAN)) + .put(Blocks.PURPLE_BED, new BedSpecialRenderer.Unbaked(DyeColor.PURPLE)) + .put(Blocks.BLUE_BED, new BedSpecialRenderer.Unbaked(DyeColor.BLUE)) + .put(Blocks.BROWN_BED, new BedSpecialRenderer.Unbaked(DyeColor.BROWN)) + .put(Blocks.GREEN_BED, new BedSpecialRenderer.Unbaked(DyeColor.GREEN)) + .put(Blocks.RED_BED, new BedSpecialRenderer.Unbaked(DyeColor.RED)) + .put(Blocks.BLACK_BED, new BedSpecialRenderer.Unbaked(DyeColor.BLACK)) + .put(Blocks.SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked()) + .put(Blocks.WHITE_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.WHITE)) + .put(Blocks.ORANGE_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.ORANGE)) + .put(Blocks.MAGENTA_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.MAGENTA)) + .put(Blocks.LIGHT_BLUE_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.LIGHT_BLUE)) + .put(Blocks.YELLOW_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.YELLOW)) + .put(Blocks.LIME_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.LIME)) + .put(Blocks.PINK_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.PINK)) + .put(Blocks.GRAY_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.GRAY)) + .put(Blocks.LIGHT_GRAY_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.LIGHT_GRAY)) + .put(Blocks.CYAN_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.CYAN)) + .put(Blocks.PURPLE_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.PURPLE)) + .put(Blocks.BLUE_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.BLUE)) + .put(Blocks.BROWN_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.BROWN)) + .put(Blocks.GREEN_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.GREEN)) + .put(Blocks.RED_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.RED)) + .put(Blocks.BLACK_SHULKER_BOX, new ShulkerBoxSpecialRenderer.Unbaked(DyeColor.BLACK)) + .put(Blocks.OAK_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.OAK)) + .put(Blocks.SPRUCE_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.SPRUCE)) + .put(Blocks.BIRCH_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.BIRCH)) + .put(Blocks.ACACIA_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.ACACIA)) + .put(Blocks.CHERRY_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.CHERRY)) + .put(Blocks.JUNGLE_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.JUNGLE)) + .put(Blocks.DARK_OAK_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.DARK_OAK)) + .put(Blocks.PALE_OAK_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.PALE_OAK)) + .put(Blocks.MANGROVE_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.MANGROVE)) + .put(Blocks.BAMBOO_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.BAMBOO)) + .put(Blocks.CRIMSON_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.CRIMSON)) + .put(Blocks.WARPED_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.WARPED)) + .put(Blocks.OAK_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.OAK)) + .put(Blocks.SPRUCE_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.SPRUCE)) + .put(Blocks.BIRCH_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.BIRCH)) + .put(Blocks.ACACIA_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.ACACIA)) + .put(Blocks.CHERRY_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.CHERRY)) + .put(Blocks.JUNGLE_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.JUNGLE)) + .put(Blocks.DARK_OAK_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.DARK_OAK)) + .put(Blocks.PALE_OAK_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.PALE_OAK)) + .put(Blocks.MANGROVE_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.MANGROVE)) + .put(Blocks.BAMBOO_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.BAMBOO)) + .put(Blocks.CRIMSON_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.CRIMSON)) + .put(Blocks.WARPED_WALL_SIGN, new StandingSignSpecialRenderer.Unbaked(WoodType.WARPED)) + .put(Blocks.OAK_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.OAK)) + .put(Blocks.SPRUCE_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.SPRUCE)) + .put(Blocks.BIRCH_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.BIRCH)) + .put(Blocks.ACACIA_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.ACACIA)) + .put(Blocks.CHERRY_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.CHERRY)) + .put(Blocks.JUNGLE_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.JUNGLE)) + .put(Blocks.DARK_OAK_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.DARK_OAK)) + .put(Blocks.PALE_OAK_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.PALE_OAK)) + .put(Blocks.MANGROVE_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.MANGROVE)) + .put(Blocks.BAMBOO_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.BAMBOO)) + .put(Blocks.CRIMSON_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.CRIMSON)) + .put(Blocks.WARPED_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.WARPED)) + .put(Blocks.OAK_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.OAK)) + .put(Blocks.SPRUCE_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.SPRUCE)) + .put(Blocks.BIRCH_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.BIRCH)) + .put(Blocks.ACACIA_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.ACACIA)) + .put(Blocks.CHERRY_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.CHERRY)) + .put(Blocks.JUNGLE_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.JUNGLE)) + .put(Blocks.DARK_OAK_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.DARK_OAK)) + .put(Blocks.PALE_OAK_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.PALE_OAK)) + .put(Blocks.MANGROVE_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.MANGROVE)) + .put(Blocks.BAMBOO_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.BAMBOO)) + .put(Blocks.CRIMSON_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.CRIMSON)) + .put(Blocks.WARPED_WALL_HANGING_SIGN, new HangingSignSpecialRenderer.Unbaked(WoodType.WARPED)) + .put(Blocks.CONDUIT, new ConduitSpecialRenderer.Unbaked()) + .put(Blocks.CHEST, new ChestSpecialRenderer.Unbaked(ChestSpecialRenderer.NORMAL_CHEST_TEXTURE)) + .put(Blocks.TRAPPED_CHEST, new ChestSpecialRenderer.Unbaked(ChestSpecialRenderer.TRAPPED_CHEST_TEXTURE)) + .put(Blocks.ENDER_CHEST, new ChestSpecialRenderer.Unbaked(ChestSpecialRenderer.ENDER_CHEST_TEXTURE)) + .put(Blocks.DECORATED_POT, new DecoratedPotSpecialRenderer.Unbaked()) + .build(); + private static final ChestSpecialRenderer.Unbaked GIFT_CHEST = new ChestSpecialRenderer.Unbaked(ChestSpecialRenderer.GIFT_CHEST_TEXTURE); + + public static void bootstrap() { + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("bed"), BedSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("banner"), BannerSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("conduit"), ConduitSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("chest"), ChestSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("head"), SkullSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("shulker_box"), ShulkerBoxSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("shield"), ShieldSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("trident"), TridentSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("decorated_pot"), DecoratedPotSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("standing_sign"), StandingSignSpecialRenderer.Unbaked.MAP_CODEC); + ID_MAPPER.put(ResourceLocation.withDefaultNamespace("hanging_sign"), HangingSignSpecialRenderer.Unbaked.MAP_CODEC); + } + + public static Map> createBlockRenderers(EntityModelSet modelSet) { + Map map = new HashMap(STATIC_BLOCK_MAPPING); + if (ChestRenderer.xmasTextures()) { + map.put(Blocks.CHEST, GIFT_CHEST); + map.put(Blocks.TRAPPED_CHEST, GIFT_CHEST); + } + + Builder> builder = ImmutableMap.builder(); + map.forEach((block, unbaked) -> { + SpecialModelRenderer specialModelRenderer = unbaked.bake(modelSet); + if (specialModelRenderer != null) { + builder.put(block, specialModelRenderer); + } + }); + return builder.build(); + } +} diff --git a/net/minecraft/client/renderer/special/StandingSignSpecialRenderer.java b/net/minecraft/client/renderer/special/StandingSignSpecialRenderer.java new file mode 100644 index 00000000..d8b83a88 --- /dev/null +++ b/net/minecraft/client/renderer/special/StandingSignSpecialRenderer.java @@ -0,0 +1,62 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.Optional; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.renderer.blockentity.SignRenderer; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.level.block.state.properties.WoodType; + +@Environment(EnvType.CLIENT) +public class StandingSignSpecialRenderer implements NoDataSpecialModelRenderer { + private final Model model; + private final Material material; + + public StandingSignSpecialRenderer(Model model, Material material) { + this.model = model; + this.material = material; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + SignRenderer.renderInHand(poseStack, bufferSource, packedLight, packedOverlay, this.model, this.material); + } + + @Environment(EnvType.CLIENT) + public record Unbaked(WoodType woodType, Optional texture) implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + WoodType.CODEC.fieldOf("wood_type").forGetter(StandingSignSpecialRenderer.Unbaked::woodType), + ResourceLocation.CODEC.optionalFieldOf("texture").forGetter(StandingSignSpecialRenderer.Unbaked::texture) + ) + .apply(instance, StandingSignSpecialRenderer.Unbaked::new) + ); + + public Unbaked(WoodType woodType) { + this(woodType, Optional.empty()); + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + Model model = SignRenderer.createSignModel(modelSet, this.woodType, true); + Material material = (Material)this.texture.map(Sheets::createSignMaterial).orElseGet(() -> Sheets.getSignMaterial(this.woodType)); + return new StandingSignSpecialRenderer(model, material); + } + } +} diff --git a/net/minecraft/client/renderer/special/TridentSpecialRenderer.java b/net/minecraft/client/renderer/special/TridentSpecialRenderer.java new file mode 100644 index 00000000..0a9a634c --- /dev/null +++ b/net/minecraft/client/renderer/special/TridentSpecialRenderer.java @@ -0,0 +1,48 @@ +package net.minecraft.client.renderer.special; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.MapCodec; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.model.TridentModel; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.world.item.ItemDisplayContext; + +@Environment(EnvType.CLIENT) +public class TridentSpecialRenderer implements NoDataSpecialModelRenderer { + private final TridentModel model; + + public TridentSpecialRenderer(TridentModel model) { + this.model = model; + } + + @Override + public void render( + ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, boolean hasFoilType + ) { + poseStack.pushPose(); + poseStack.scale(1.0F, -1.0F, -1.0F); + VertexConsumer vertexConsumer = ItemRenderer.getFoilBuffer(bufferSource, this.model.renderType(TridentModel.TEXTURE), false, hasFoilType); + this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, packedOverlay); + poseStack.popPose(); + } + + @Environment(EnvType.CLIENT) + public record Unbaked() implements SpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = MapCodec.unit(new TridentSpecialRenderer.Unbaked()); + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public SpecialModelRenderer bake(EntityModelSet modelSet) { + return new TridentSpecialRenderer(new TridentModel(modelSet.bakeLayer(ModelLayers.TRIDENT))); + } + } +} diff --git a/net/minecraft/client/renderer/special/package-info.java b/net/minecraft/client/renderer/special/package-info.java new file mode 100644 index 00000000..3916c62d --- /dev/null +++ b/net/minecraft/client/renderer/special/package-info.java @@ -0,0 +1,11 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Environment(EnvType.CLIENT) +package net.minecraft.client.renderer.special; + +import javax.annotation.ParametersAreNonnullByDefault; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/client/renderer/texture/AbstractTexture.java b/net/minecraft/client/renderer/texture/AbstractTexture.java index 7758ade6..ad09105f 100644 --- a/net/minecraft/client/renderer/texture/AbstractTexture.java +++ b/net/minecraft/client/renderer/texture/AbstractTexture.java @@ -3,18 +3,51 @@ package net.minecraft.client.renderer.texture; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.TextureUtil; import com.mojang.blaze3d.systems.RenderSystem; -import java.io.IOException; -import java.util.concurrent.Executor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.util.TriState; @Environment(EnvType.CLIENT) public abstract class AbstractTexture implements AutoCloseable { public static final int NOT_ASSIGNED = -1; protected int id = -1; protected boolean defaultBlur; + private int wrapS = 10497; + private int wrapT = 10497; + private int minFilter = 9986; + private int magFilter = 9729; + + public void setClamp(boolean clamp) { + RenderSystem.assertOnRenderThreadOrInit(); + int i; + int j; + if (clamp) { + i = 33071; + j = 33071; + } else { + i = 10497; + j = 10497; + } + + boolean bl = this.wrapS != i; + boolean bl2 = this.wrapT != j; + if (bl || bl2) { + this.bind(); + if (bl) { + GlStateManager._texParameter(3553, 10242, i); + this.wrapS = i; + } + + if (bl2) { + GlStateManager._texParameter(3553, 10243, j); + this.wrapT = j; + } + } + } + + public void setFilter(TriState blur, boolean mipmap) { + this.setFilter(blur.toBoolean(this.defaultBlur), mipmap); + } /** * @param mipmap {@code true} if a mipmap is being used (mip level is greater than 0) @@ -31,9 +64,20 @@ public abstract class AbstractTexture implements AutoCloseable { j = 9728; } - this.bind(); - GlStateManager._texParameter(3553, 10241, i); - GlStateManager._texParameter(3553, 10240, j); + boolean bl = this.minFilter != i; + boolean bl2 = this.magFilter != j; + if (bl2 || bl) { + this.bind(); + if (bl) { + GlStateManager._texParameter(3553, 10241, i); + this.minFilter = i; + } + + if (bl2) { + GlStateManager._texParameter(3553, 10240, j); + this.magFilter = j; + } + } } public int getId() { @@ -59,12 +103,6 @@ public abstract class AbstractTexture implements AutoCloseable { } } - public boolean getDefaultBlur() { - return this.defaultBlur; - } - - public abstract void load(ResourceManager resourceManager) throws IOException; - public void bind() { if (!RenderSystem.isOnRenderThreadOrInit()) { RenderSystem.recordRenderCall(() -> GlStateManager._bindTexture(this.getId())); @@ -73,10 +111,6 @@ public abstract class AbstractTexture implements AutoCloseable { } } - public void reset(TextureManager textureManager, ResourceManager resourceManager, ResourceLocation path, Executor executor) { - textureManager.register(path, this); - } - public void close() { } } diff --git a/net/minecraft/client/renderer/texture/DynamicTexture.java b/net/minecraft/client/renderer/texture/DynamicTexture.java index f8fb10a4..ea707eb9 100644 --- a/net/minecraft/client/renderer/texture/DynamicTexture.java +++ b/net/minecraft/client/renderer/texture/DynamicTexture.java @@ -9,7 +9,6 @@ import java.nio.file.Path; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -37,10 +36,6 @@ public class DynamicTexture extends AbstractTexture implements Dumpable { TextureUtil.prepareImage(this.getId(), this.pixels.getWidth(), this.pixels.getHeight()); } - @Override - public void load(ResourceManager resourceManager) { - } - public void upload() { if (this.pixels != null) { this.bind(); diff --git a/net/minecraft/client/renderer/texture/HttpTexture.java b/net/minecraft/client/renderer/texture/HttpTexture.java deleted file mode 100644 index 1d4a5e44..00000000 --- a/net/minecraft/client/renderer/texture/HttpTexture.java +++ /dev/null @@ -1,215 +0,0 @@ -package net.minecraft.client.renderer.texture; - -import com.mojang.blaze3d.platform.NativeImage; -import com.mojang.blaze3d.platform.TextureUtil; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.logging.LogUtils; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.concurrent.CompletableFuture; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.util.ARGB; -import org.apache.commons.io.FileUtils; -import org.jetbrains.annotations.Nullable; -import org.slf4j.Logger; - -@Environment(EnvType.CLIENT) -public class HttpTexture extends SimpleTexture { - private static final Logger LOGGER = LogUtils.getLogger(); - private static final int SKIN_WIDTH = 64; - private static final int SKIN_HEIGHT = 64; - private static final int LEGACY_SKIN_HEIGHT = 32; - @Nullable - private final File file; - private final String urlString; - private final boolean processLegacySkin; - @Nullable - private final Runnable onDownloaded; - @Nullable - private CompletableFuture future; - private boolean uploaded; - - public HttpTexture(@Nullable File file, String urlString, ResourceLocation location, boolean processLegacySkin, @Nullable Runnable onDownloaded) { - super(location); - this.file = file; - this.urlString = urlString; - this.processLegacySkin = processLegacySkin; - this.onDownloaded = onDownloaded; - } - - private void loadCallback(NativeImage image) { - if (this.onDownloaded != null) { - this.onDownloaded.run(); - } - - Minecraft.getInstance().execute(() -> { - this.uploaded = true; - if (!RenderSystem.isOnRenderThread()) { - RenderSystem.recordRenderCall(() -> this.upload(image)); - } else { - this.upload(image); - } - }); - } - - private void upload(NativeImage image) { - TextureUtil.prepareImage(this.getId(), image.getWidth(), image.getHeight()); - image.upload(0, 0, 0, true); - } - - @Override - public void load(ResourceManager resourceManager) throws IOException { - Minecraft.getInstance().execute(() -> { - if (!this.uploaded) { - try { - super.load(resourceManager); - } catch (IOException var3x) { - LOGGER.warn("Failed to load texture: {}", this.location, var3x); - } - - this.uploaded = true; - } - }); - if (this.future == null) { - NativeImage nativeImage; - if (this.file != null && this.file.isFile()) { - LOGGER.debug("Loading http texture from local cache ({})", this.file); - FileInputStream fileInputStream = new FileInputStream(this.file); - nativeImage = this.load(fileInputStream); - } else { - nativeImage = null; - } - - if (nativeImage != null) { - this.loadCallback(nativeImage); - } else { - this.future = CompletableFuture.runAsync(() -> { - HttpURLConnection httpURLConnection = null; - LOGGER.debug("Downloading http texture from {} to {}", this.urlString, this.file); - - try { - httpURLConnection = (HttpURLConnection)new URL(this.urlString).openConnection(Minecraft.getInstance().getProxy()); - httpURLConnection.setDoInput(true); - httpURLConnection.setDoOutput(false); - httpURLConnection.connect(); - if (httpURLConnection.getResponseCode() / 100 == 2) { - InputStream inputStream; - if (this.file != null) { - FileUtils.copyInputStreamToFile(httpURLConnection.getInputStream(), this.file); - inputStream = new FileInputStream(this.file); - } else { - inputStream = httpURLConnection.getInputStream(); - } - - Minecraft.getInstance().execute(() -> { - NativeImage nativeImagex = this.load(inputStream); - if (nativeImagex != null) { - this.loadCallback(nativeImagex); - } - }); - return; - } - } catch (Exception var6) { - LOGGER.error("Couldn't download http texture", (Throwable)var6); - return; - } finally { - if (httpURLConnection != null) { - httpURLConnection.disconnect(); - } - } - }, Util.backgroundExecutor().forName("downloadTexture")); - } - } - } - - @Nullable - private NativeImage load(InputStream stream) { - NativeImage nativeImage = null; - - try { - nativeImage = NativeImage.read(stream); - if (this.processLegacySkin) { - nativeImage = this.processLegacySkin(nativeImage); - } - } catch (Exception var4) { - LOGGER.warn("Error while loading the skin texture", (Throwable)var4); - } - - return nativeImage; - } - - @Nullable - private NativeImage processLegacySkin(NativeImage image) { - int i = image.getHeight(); - int j = image.getWidth(); - if (j == 64 && (i == 32 || i == 64)) { - boolean bl = i == 32; - if (bl) { - NativeImage nativeImage = new NativeImage(64, 64, true); - nativeImage.copyFrom(image); - image.close(); - image = nativeImage; - nativeImage.fillRect(0, 32, 64, 32, 0); - nativeImage.copyRect(4, 16, 16, 32, 4, 4, true, false); - nativeImage.copyRect(8, 16, 16, 32, 4, 4, true, false); - nativeImage.copyRect(0, 20, 24, 32, 4, 12, true, false); - nativeImage.copyRect(4, 20, 16, 32, 4, 12, true, false); - nativeImage.copyRect(8, 20, 8, 32, 4, 12, true, false); - nativeImage.copyRect(12, 20, 16, 32, 4, 12, true, false); - nativeImage.copyRect(44, 16, -8, 32, 4, 4, true, false); - nativeImage.copyRect(48, 16, -8, 32, 4, 4, true, false); - nativeImage.copyRect(40, 20, 0, 32, 4, 12, true, false); - nativeImage.copyRect(44, 20, -8, 32, 4, 12, true, false); - nativeImage.copyRect(48, 20, -16, 32, 4, 12, true, false); - nativeImage.copyRect(52, 20, -8, 32, 4, 12, true, false); - } - - setNoAlpha(image, 0, 0, 32, 16); - if (bl) { - doNotchTransparencyHack(image, 32, 0, 64, 32); - } - - setNoAlpha(image, 0, 16, 64, 32); - setNoAlpha(image, 16, 48, 48, 64); - return image; - } else { - image.close(); - LOGGER.warn("Discarding incorrectly sized ({}x{}) skin texture from {}", j, i, this.urlString); - return null; - } - } - - private static void doNotchTransparencyHack(NativeImage image, int x, int y, int width, int height) { - for (int i = x; i < width; i++) { - for (int j = y; j < height; j++) { - int k = image.getPixel(i, j); - if (ARGB.alpha(k) < 128) { - return; - } - } - } - - for (int i = x; i < width; i++) { - for (int jx = y; jx < height; jx++) { - image.setPixel(i, jx, image.getPixel(i, jx) & 16777215); - } - } - } - - private static void setNoAlpha(NativeImage image, int x, int y, int width, int height) { - for (int i = x; i < width; i++) { - for (int j = y; j < height; j++) { - image.setPixel(i, j, ARGB.opaque(image.getPixel(i, j))); - } - } - } -} diff --git a/net/minecraft/client/renderer/texture/MissingTextureAtlasSprite.java b/net/minecraft/client/renderer/texture/MissingTextureAtlasSprite.java index 6cf9e43d..ea64a3f0 100644 --- a/net/minecraft/client/renderer/texture/MissingTextureAtlasSprite.java +++ b/net/minecraft/client/renderer/texture/MissingTextureAtlasSprite.java @@ -1,17 +1,11 @@ package net.minecraft.client.renderer.texture; -import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.platform.NativeImage; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.metadata.animation.AnimationFrame; -import net.minecraft.client.resources.metadata.animation.AnimationMetadataSection; import net.minecraft.client.resources.metadata.animation.FrameSize; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceMetadata; -import net.minecraft.server.packs.resources.ResourceMetadata.Builder; -import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public final class MissingTextureAtlasSprite { @@ -19,13 +13,12 @@ public final class MissingTextureAtlasSprite { private static final int MISSING_IMAGE_HEIGHT = 16; private static final String MISSING_TEXTURE_NAME = "missingno"; private static final ResourceLocation MISSING_TEXTURE_LOCATION = ResourceLocation.withDefaultNamespace("missingno"); - private static final ResourceMetadata SPRITE_METADATA = new Builder() - .put(AnimationMetadataSection.SERIALIZER, new AnimationMetadataSection(ImmutableList.of(new AnimationFrame(0, -1)), 16, 16, 1, false)) - .build(); - @Nullable - private static DynamicTexture missingTexture; - private static NativeImage generateMissingImage(int width, int height) { + public static NativeImage generateMissingImage() { + return generateMissingImage(16, 16); + } + + public static NativeImage generateMissingImage(int width, int height) { NativeImage nativeImage = new NativeImage(width, height, false); int i = -524040; @@ -44,21 +37,10 @@ public final class MissingTextureAtlasSprite { public static SpriteContents create() { NativeImage nativeImage = generateMissingImage(16, 16); - return new SpriteContents(MISSING_TEXTURE_LOCATION, new FrameSize(16, 16), nativeImage, SPRITE_METADATA); + return new SpriteContents(MISSING_TEXTURE_LOCATION, new FrameSize(16, 16), nativeImage, ResourceMetadata.EMPTY); } public static ResourceLocation getLocation() { return MISSING_TEXTURE_LOCATION; } - - public static DynamicTexture getTexture() { - if (missingTexture == null) { - NativeImage nativeImage = generateMissingImage(16, 16); - nativeImage.untrack(); - missingTexture = new DynamicTexture(nativeImage); - Minecraft.getInstance().getTextureManager().register(MISSING_TEXTURE_LOCATION, missingTexture); - } - - return missingTexture; - } } diff --git a/net/minecraft/client/renderer/texture/OverlayTexture.java b/net/minecraft/client/renderer/texture/OverlayTexture.java index 8369268b..2f06cf76 100644 --- a/net/minecraft/client/renderer/texture/OverlayTexture.java +++ b/net/minecraft/client/renderer/texture/OverlayTexture.java @@ -31,7 +31,9 @@ public class OverlayTexture implements AutoCloseable { RenderSystem.activeTexture(33985); this.texture.bind(); - nativeImage.upload(0, 0, 0, 0, 0, nativeImage.getWidth(), nativeImage.getHeight(), false, true, false, false); + this.texture.setFilter(false, false); + this.texture.setClamp(true); + nativeImage.upload(0, 0, 0, 0, 0, nativeImage.getWidth(), nativeImage.getHeight(), false); RenderSystem.activeTexture(33984); } diff --git a/net/minecraft/client/renderer/texture/PreloadedTexture.java b/net/minecraft/client/renderer/texture/PreloadedTexture.java deleted file mode 100644 index cfa832de..00000000 --- a/net/minecraft/client/renderer/texture/PreloadedTexture.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minecraft.client.renderer.texture; - -import com.mojang.blaze3d.systems.RenderSystem; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.Util; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class PreloadedTexture extends SimpleTexture { - @Nullable - private CompletableFuture future; - - public PreloadedTexture(ResourceManager resourceManager, ResourceLocation location, Executor backgroundExecutor) { - super(location); - this.future = CompletableFuture.supplyAsync(() -> SimpleTexture.TextureImage.load(resourceManager, location), backgroundExecutor); - } - - @Override - protected SimpleTexture.TextureImage getTextureImage(ResourceManager resourceManager) { - if (this.future != null) { - SimpleTexture.TextureImage textureImage = (SimpleTexture.TextureImage)this.future.join(); - this.future = null; - return textureImage; - } else { - return SimpleTexture.TextureImage.load(resourceManager, this.location); - } - } - - public CompletableFuture getFuture() { - return this.future == null ? CompletableFuture.completedFuture(null) : this.future.thenApply(textureImage -> null); - } - - @Override - public void reset(TextureManager textureManager, ResourceManager resourceManager, ResourceLocation path, Executor executor) { - this.future = CompletableFuture.supplyAsync(() -> SimpleTexture.TextureImage.load(resourceManager, this.location), Util.backgroundExecutor()); - this.future.thenRunAsync(() -> textureManager.register(this.location, this), executor(executor)); - } - - private static Executor executor(Executor executor) { - return runnable -> executor.execute(() -> RenderSystem.recordRenderCall(runnable::run)); - } -} diff --git a/net/minecraft/client/renderer/texture/ReloadableTexture.java b/net/minecraft/client/renderer/texture/ReloadableTexture.java new file mode 100644 index 00000000..4aa6169d --- /dev/null +++ b/net/minecraft/client/renderer/texture/ReloadableTexture.java @@ -0,0 +1,44 @@ +package net.minecraft.client.renderer.texture; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.platform.TextureUtil; +import com.mojang.blaze3d.systems.RenderSystem; +import java.io.IOException; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; + +@Environment(EnvType.CLIENT) +public abstract class ReloadableTexture extends AbstractTexture { + private final ResourceLocation resourceId; + + public ReloadableTexture(ResourceLocation resourceId) { + this.resourceId = resourceId; + } + + public ResourceLocation resourceId() { + return this.resourceId; + } + + public void apply(TextureContents textureContents) { + boolean bl = textureContents.clamp(); + boolean bl2 = textureContents.blur(); + this.defaultBlur = bl2; + NativeImage nativeImage = textureContents.image(); + if (!RenderSystem.isOnRenderThreadOrInit()) { + RenderSystem.recordRenderCall(() -> this.doLoad(nativeImage, bl2, bl)); + } else { + this.doLoad(nativeImage, bl2, bl); + } + } + + private void doLoad(NativeImage image, boolean blur, boolean clamp) { + TextureUtil.prepareImage(this.getId(), 0, image.getWidth(), image.getHeight()); + this.setFilter(blur, false); + this.setClamp(clamp); + image.upload(0, 0, 0, 0, 0, image.getWidth(), image.getHeight(), true); + } + + public abstract TextureContents loadContents(ResourceManager resourceManager) throws IOException; +} diff --git a/net/minecraft/client/renderer/texture/SimpleTexture.java b/net/minecraft/client/renderer/texture/SimpleTexture.java index b0207f9d..e765b602 100644 --- a/net/minecraft/client/renderer/texture/SimpleTexture.java +++ b/net/minecraft/client/renderer/texture/SimpleTexture.java @@ -1,143 +1,19 @@ package net.minecraft.client.renderer.texture; -import com.mojang.blaze3d.platform.NativeImage; -import com.mojang.blaze3d.platform.TextureUtil; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.logging.LogUtils; -import java.io.Closeable; import java.io.IOException; -import java.io.InputStream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.resources.metadata.texture.TextureMetadataSection; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; -import org.jetbrains.annotations.Nullable; -import org.slf4j.Logger; @Environment(EnvType.CLIENT) -public class SimpleTexture extends AbstractTexture { - static final Logger LOGGER = LogUtils.getLogger(); - protected final ResourceLocation location; - +public class SimpleTexture extends ReloadableTexture { public SimpleTexture(ResourceLocation location) { - this.location = location; + super(location); } @Override - public void load(ResourceManager resourceManager) throws IOException { - SimpleTexture.TextureImage textureImage = this.getTextureImage(resourceManager); - textureImage.throwIfError(); - TextureMetadataSection textureMetadataSection = textureImage.getTextureMetadata(); - boolean bl; - if (textureMetadataSection != null) { - this.defaultBlur = textureMetadataSection.isBlur(); - bl = textureMetadataSection.isClamp(); - } else { - this.defaultBlur = false; - bl = false; - } - - NativeImage nativeImage = textureImage.getImage(); - if (!RenderSystem.isOnRenderThreadOrInit()) { - RenderSystem.recordRenderCall(() -> this.doLoad(nativeImage, this.defaultBlur, bl)); - } else { - this.doLoad(nativeImage, this.defaultBlur, bl); - } - } - - private void doLoad(NativeImage image, boolean blur, boolean clamp) { - TextureUtil.prepareImage(this.getId(), 0, image.getWidth(), image.getHeight()); - image.upload(0, 0, 0, 0, 0, image.getWidth(), image.getHeight(), blur, clamp, false, true); - } - - protected SimpleTexture.TextureImage getTextureImage(ResourceManager resourceManager) { - return SimpleTexture.TextureImage.load(resourceManager, this.location); - } - - @Environment(EnvType.CLIENT) - protected static class TextureImage implements Closeable { - @Nullable - private final TextureMetadataSection metadata; - @Nullable - private final NativeImage image; - @Nullable - private final IOException exception; - - public TextureImage(IOException exception) { - this.exception = exception; - this.metadata = null; - this.image = null; - } - - public TextureImage(@Nullable TextureMetadataSection metadata, NativeImage image) { - this.exception = null; - this.metadata = metadata; - this.image = image; - } - - public static SimpleTexture.TextureImage load(ResourceManager resourceManager, ResourceLocation location) { - try { - Resource resource = resourceManager.getResourceOrThrow(location); - InputStream inputStream = resource.open(); - - NativeImage nativeImage; - try { - nativeImage = NativeImage.read(inputStream); - } catch (Throwable var9) { - if (inputStream != null) { - try { - inputStream.close(); - } catch (Throwable var7) { - var9.addSuppressed(var7); - } - } - - throw var9; - } - - if (inputStream != null) { - inputStream.close(); - } - - TextureMetadataSection textureMetadataSection = null; - - try { - textureMetadataSection = (TextureMetadataSection)resource.metadata().getSection(TextureMetadataSection.SERIALIZER).orElse(null); - } catch (RuntimeException var8) { - SimpleTexture.LOGGER.warn("Failed reading metadata of: {}", location, var8); - } - - return new SimpleTexture.TextureImage(textureMetadataSection, nativeImage); - } catch (IOException var10) { - return new SimpleTexture.TextureImage(var10); - } - } - - @Nullable - public TextureMetadataSection getTextureMetadata() { - return this.metadata; - } - - public NativeImage getImage() throws IOException { - if (this.exception != null) { - throw this.exception; - } else { - return this.image; - } - } - - public void close() { - if (this.image != null) { - this.image.close(); - } - } - - public void throwIfError() throws IOException { - if (this.exception != null) { - throw this.exception; - } - } + public TextureContents loadContents(ResourceManager resourceManager) throws IOException { + return TextureContents.load(resourceManager, this.resourceId()); } } diff --git a/net/minecraft/client/renderer/texture/SkinTextureDownloader.java b/net/minecraft/client/renderer/texture/SkinTextureDownloader.java new file mode 100644 index 00000000..030a749d --- /dev/null +++ b/net/minecraft/client/renderer/texture/SkinTextureDownloader.java @@ -0,0 +1,176 @@ +package net.minecraft.client.renderer.texture; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.logging.LogUtils; +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; +import java.net.HttpURLConnection; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.OpenOption; +import java.nio.file.Path; +import java.util.concurrent.CompletableFuture; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.FileUtil; +import net.minecraft.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ARGB; +import org.slf4j.Logger; + +@Environment(EnvType.CLIENT) +public class SkinTextureDownloader { + private static final Logger LOGGER = LogUtils.getLogger(); + private static final int SKIN_WIDTH = 64; + private static final int SKIN_HEIGHT = 64; + private static final int LEGACY_SKIN_HEIGHT = 32; + + public static CompletableFuture downloadAndRegisterSkin(ResourceLocation textureLocation, Path path, String url, boolean isLegacySkin) { + return CompletableFuture.supplyAsync(() -> { + NativeImage nativeImage; + try { + nativeImage = downloadSkin(path, url); + } catch (IOException var5) { + throw new UncheckedIOException(var5); + } + + return isLegacySkin ? processLegacySkin(nativeImage, url) : nativeImage; + }, Util.nonCriticalIoPool().forName("downloadTexture")).thenCompose(nativeImage -> registerTextureInManager(textureLocation, nativeImage)); + } + + private static NativeImage downloadSkin(Path path, String url) throws IOException { + if (Files.isRegularFile(path, new LinkOption[0])) { + LOGGER.debug("Loading HTTP texture from local cache ({})", path); + InputStream inputStream = Files.newInputStream(path); + + NativeImage var17; + try { + var17 = NativeImage.read(inputStream); + } catch (Throwable var14) { + if (inputStream != null) { + try { + inputStream.close(); + } catch (Throwable var12) { + var14.addSuppressed(var12); + } + } + + throw var14; + } + + if (inputStream != null) { + inputStream.close(); + } + + return var17; + } else { + HttpURLConnection httpURLConnection = null; + LOGGER.debug("Downloading HTTP texture from {} to {}", url, path); + URI uRI = URI.create(url); + + NativeImage iOException; + try { + httpURLConnection = (HttpURLConnection)uRI.toURL().openConnection(Minecraft.getInstance().getProxy()); + httpURLConnection.setDoInput(true); + httpURLConnection.setDoOutput(false); + httpURLConnection.connect(); + int i = httpURLConnection.getResponseCode(); + if (i / 100 != 2) { + throw new IOException("Failed to open " + uRI + ", HTTP error code: " + i); + } + + byte[] bs = httpURLConnection.getInputStream().readAllBytes(); + + try { + FileUtil.createDirectoriesSafe(path.getParent()); + Files.write(path, bs, new OpenOption[0]); + } catch (IOException var13) { + LOGGER.warn("Failed to cache texture {} in {}", url, path); + } + + iOException = NativeImage.read(bs); + } finally { + if (httpURLConnection != null) { + httpURLConnection.disconnect(); + } + } + + return iOException; + } + } + + private static CompletableFuture registerTextureInManager(ResourceLocation location, NativeImage image) { + Minecraft minecraft = Minecraft.getInstance(); + return CompletableFuture.supplyAsync(() -> { + minecraft.getTextureManager().register(location, new DynamicTexture(image)); + return location; + }, minecraft); + } + + private static NativeImage processLegacySkin(NativeImage image, String url) { + int i = image.getHeight(); + int j = image.getWidth(); + if (j == 64 && (i == 32 || i == 64)) { + boolean bl = i == 32; + if (bl) { + NativeImage nativeImage = new NativeImage(64, 64, true); + nativeImage.copyFrom(image); + image.close(); + image = nativeImage; + nativeImage.fillRect(0, 32, 64, 32, 0); + nativeImage.copyRect(4, 16, 16, 32, 4, 4, true, false); + nativeImage.copyRect(8, 16, 16, 32, 4, 4, true, false); + nativeImage.copyRect(0, 20, 24, 32, 4, 12, true, false); + nativeImage.copyRect(4, 20, 16, 32, 4, 12, true, false); + nativeImage.copyRect(8, 20, 8, 32, 4, 12, true, false); + nativeImage.copyRect(12, 20, 16, 32, 4, 12, true, false); + nativeImage.copyRect(44, 16, -8, 32, 4, 4, true, false); + nativeImage.copyRect(48, 16, -8, 32, 4, 4, true, false); + nativeImage.copyRect(40, 20, 0, 32, 4, 12, true, false); + nativeImage.copyRect(44, 20, -8, 32, 4, 12, true, false); + nativeImage.copyRect(48, 20, -16, 32, 4, 12, true, false); + nativeImage.copyRect(52, 20, -8, 32, 4, 12, true, false); + } + + setNoAlpha(image, 0, 0, 32, 16); + if (bl) { + doNotchTransparencyHack(image, 32, 0, 64, 32); + } + + setNoAlpha(image, 0, 16, 64, 32); + setNoAlpha(image, 16, 48, 48, 64); + return image; + } else { + image.close(); + throw new IllegalStateException("Discarding incorrectly sized (" + j + "x" + i + ") skin texture from " + url); + } + } + + private static void doNotchTransparencyHack(NativeImage image, int minX, int minY, int maxX, int maxY) { + for (int i = minX; i < maxX; i++) { + for (int j = minY; j < maxY; j++) { + int k = image.getPixel(i, j); + if (ARGB.alpha(k) < 128) { + return; + } + } + } + + for (int i = minX; i < maxX; i++) { + for (int jx = minY; jx < maxY; jx++) { + image.setPixel(i, jx, image.getPixel(i, jx) & 16777215); + } + } + } + + private static void setNoAlpha(NativeImage image, int minX, int minY, int maxX, int maxY) { + for (int i = minX; i < maxX; i++) { + for (int j = minY; j < maxY; j++) { + image.setPixel(i, j, ARGB.opaque(image.getPixel(i, j))); + } + } + } +} diff --git a/net/minecraft/client/renderer/texture/SpriteContents.java b/net/minecraft/client/renderer/texture/SpriteContents.java index 99bda1d5..4d431bd0 100644 --- a/net/minecraft/client/renderer/texture/SpriteContents.java +++ b/net/minecraft/client/renderer/texture/SpriteContents.java @@ -1,6 +1,5 @@ package net.minecraft.client.renderer.texture; -import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.platform.NativeImage; import com.mojang.logging.LogUtils; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; @@ -17,6 +16,7 @@ import net.minecraft.CrashReportCategory; import net.minecraft.CrashReportDetail; import net.minecraft.ReportedException; import net.minecraft.client.renderer.texture.Stitcher.Entry; +import net.minecraft.client.resources.metadata.animation.AnimationFrame; import net.minecraft.client.resources.metadata.animation.AnimationMetadataSection; import net.minecraft.client.resources.metadata.animation.FrameSize; import net.minecraft.resources.ResourceLocation; @@ -42,9 +42,9 @@ public class SpriteContents implements Entry, AutoCloseable { this.width = frameSize.width(); this.height = frameSize.height(); this.metadata = metadata; - AnimationMetadataSection animationMetadataSection = (AnimationMetadataSection)metadata.getSection(AnimationMetadataSection.SERIALIZER) - .orElse(AnimationMetadataSection.EMPTY); - this.animatedTexture = this.createAnimatedTexture(frameSize, originalImage.getWidth(), originalImage.getHeight(), animationMetadataSection); + this.animatedTexture = (SpriteContents.AnimatedTexture)metadata.getSection(AnimationMetadataSection.TYPE) + .map(animationMetadataSection -> this.createAnimatedTexture(frameSize, originalImage.getWidth(), originalImage.getHeight(), animationMetadataSection)) + .orElse(null); this.originalImage = originalImage; this.byMipLevel = new NativeImage[]{this.originalImage}; } @@ -82,26 +82,35 @@ public class SpriteContents implements Entry, AutoCloseable { int i = width / frameSize.width(); int j = height / frameSize.height(); int k = i * j; - List list = new ArrayList(); - metadata.forEachFrame((ix, jx) -> list.add(new SpriteContents.FrameInfo(ix, jx))); - if (list.isEmpty()) { - for (int l = 0; l < k; l++) { - list.add(new SpriteContents.FrameInfo(l, metadata.getDefaultFrameTime())); + int l = metadata.defaultFrameTime(); + List list; + if (metadata.frames().isEmpty()) { + list = new ArrayList(k); + + for (int m = 0; m < k; m++) { + list.add(new SpriteContents.FrameInfo(m, l)); } } else { - int l = 0; + List list2 = (List)metadata.frames().get(); + list = new ArrayList(list2.size()); + + for (AnimationFrame animationFrame : list2) { + list.add(new SpriteContents.FrameInfo(animationFrame.index(), animationFrame.timeOr(l))); + } + + int n = 0; IntSet intSet = new IntOpenHashSet(); - for (Iterator iterator = list.iterator(); iterator.hasNext(); l++) { + for (Iterator iterator = list.iterator(); iterator.hasNext(); n++) { SpriteContents.FrameInfo frameInfo = (SpriteContents.FrameInfo)iterator.next(); boolean bl = true; if (frameInfo.time <= 0) { - LOGGER.warn("Invalid frame duration on sprite {} frame {}: {}", this.name, l, frameInfo.time); + LOGGER.warn("Invalid frame duration on sprite {} frame {}: {}", this.name, n, frameInfo.time); bl = false; } if (frameInfo.index < 0 || frameInfo.index >= k) { - LOGGER.warn("Invalid frame index on sprite {} frame {}: {}", this.name, l, frameInfo.index); + LOGGER.warn("Invalid frame index on sprite {} frame {}: {}", this.name, n, frameInfo.index); bl = false; } @@ -118,12 +127,12 @@ public class SpriteContents implements Entry, AutoCloseable { } } - return list.size() <= 1 ? null : new SpriteContents.AnimatedTexture(ImmutableList.copyOf(list), i, metadata.isInterpolatedFrames()); + return list.size() <= 1 ? null : new SpriteContents.AnimatedTexture(List.copyOf(list), i, metadata.interpolatedFrames()); } void upload(int x, int y, int frameX, int frameY, NativeImage[] atlasData) { for (int i = 0; i < this.byMipLevel.length; i++) { - atlasData[i].upload(i, x >> i, y >> i, frameX >> i, frameY >> i, this.width >> i, this.height >> i, this.byMipLevel.length > 1, false); + atlasData[i].upload(i, x >> i, y >> i, frameX >> i, frameY >> i, this.width >> i, this.height >> i, false); } } @@ -224,14 +233,7 @@ public class SpriteContents implements Entry, AutoCloseable { } @Environment(EnvType.CLIENT) - static class FrameInfo { - final int index; - final int time; - - FrameInfo(int index, int time) { - this.index = index; - this.time = time; - } + record FrameInfo(int index, int time) { } @Environment(EnvType.CLIENT) diff --git a/net/minecraft/client/renderer/texture/SpriteLoader.java b/net/minecraft/client/renderer/texture/SpriteLoader.java index 686534f7..5ec62042 100644 --- a/net/minecraft/client/renderer/texture/SpriteLoader.java +++ b/net/minecraft/client/renderer/texture/SpriteLoader.java @@ -22,14 +22,14 @@ import net.minecraft.client.renderer.texture.atlas.SpriteResourceLoader; import net.minecraft.client.renderer.texture.atlas.SpriteSourceList; import net.minecraft.client.resources.metadata.animation.AnimationMetadataSection; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; +import net.minecraft.server.packs.metadata.MetadataSectionType; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.Mth; import org.slf4j.Logger; @Environment(EnvType.CLIENT) public class SpriteLoader { - public static final Set> DEFAULT_METADATA_SECTIONS = Set.of(AnimationMetadataSection.SERIALIZER); + public static final Set> DEFAULT_METADATA_SECTIONS = Set.of(AnimationMetadataSection.TYPE); private static final Logger LOGGER = LogUtils.getLogger(); private final ResourceLocation location; private final int maxSupportedTextureSize; @@ -127,7 +127,7 @@ public class SpriteLoader { } public CompletableFuture loadAndStitch( - ResourceManager resourceManager, ResourceLocation location, int mipLevel, Executor executor, Collection> sectionSerializers + ResourceManager resourceManager, ResourceLocation location, int mipLevel, Executor executor, Collection> sectionSerializers ) { SpriteResourceLoader spriteResourceLoader = SpriteResourceLoader.create(sectionSerializers); return CompletableFuture.supplyAsync(() -> SpriteSourceList.load(resourceManager, location).list(resourceManager), executor) diff --git a/net/minecraft/client/renderer/texture/TextureAtlas.java b/net/minecraft/client/renderer/texture/TextureAtlas.java index defeada5..8d7bbfb5 100644 --- a/net/minecraft/client/renderer/texture/TextureAtlas.java +++ b/net/minecraft/client/renderer/texture/TextureAtlas.java @@ -17,11 +17,8 @@ import net.fabricmc.api.Environment; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; import net.minecraft.ReportedException; -import net.minecraft.client.renderer.texture.SpriteLoader.Preparations; import net.minecraft.client.renderer.texture.TextureAtlasSprite.Ticker; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.world.inventory.InventoryMenu; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -29,7 +26,7 @@ import org.slf4j.Logger; public class TextureAtlas extends AbstractTexture implements Dumpable, Tickable { private static final Logger LOGGER = LogUtils.getLogger(); @Deprecated - public static final ResourceLocation LOCATION_BLOCKS = InventoryMenu.BLOCK_ATLAS; + public static final ResourceLocation LOCATION_BLOCKS = ResourceLocation.withDefaultNamespace("textures/atlas/blocks.png"); @Deprecated public static final ResourceLocation LOCATION_PARTICLES = ResourceLocation.withDefaultNamespace("textures/atlas/particles.png"); private List sprites = List.of(); @@ -48,17 +45,14 @@ public class TextureAtlas extends AbstractTexture implements Dumpable, Tickable this.maxSupportedTextureSize = RenderSystem.maxSupportedTextureSize(); } - @Override - public void load(ResourceManager resourceManager) { - } - - public void upload(Preparations preparations) { + public void upload(SpriteLoader.Preparations preparations) { LOGGER.info("Created: {}x{}x{} {}-atlas", preparations.width(), preparations.height(), preparations.mipLevel(), this.location); TextureUtil.prepareImage(this.getId(), preparations.mipLevel(), preparations.width(), preparations.height()); this.width = preparations.width(); this.height = preparations.height(); this.mipLevel = preparations.mipLevel(); this.clearTextureData(); + this.setFilter(false, this.mipLevel > 1); this.texturesByName = Map.copyOf(preparations.regions()); this.missingSprite = (TextureAtlasSprite)this.texturesByName.get(MissingTextureAtlasSprite.getLocation()); if (this.missingSprite == null) { @@ -185,8 +179,4 @@ public class TextureAtlas extends AbstractTexture implements Dumpable, Tickable int getHeight() { return this.height; } - - public void updateFilter(Preparations preparations) { - this.setFilter(false, preparations.mipLevel() > 0); - } } diff --git a/net/minecraft/client/renderer/texture/TextureContents.java b/net/minecraft/client/renderer/texture/TextureContents.java new file mode 100644 index 00000000..9b545327 --- /dev/null +++ b/net/minecraft/client/renderer/texture/TextureContents.java @@ -0,0 +1,59 @@ +package net.minecraft.client.renderer.texture; + +import com.mojang.blaze3d.platform.NativeImage; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.resources.metadata.texture.TextureMetadataSection; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record TextureContents(NativeImage image, @Nullable TextureMetadataSection metadata) implements Closeable { + public static TextureContents load(ResourceManager resourceManager, ResourceLocation textureId) throws IOException { + Resource resource = resourceManager.getResourceOrThrow(textureId); + InputStream inputStream = resource.open(); + + NativeImage nativeImage; + try { + nativeImage = NativeImage.read(inputStream); + } catch (Throwable var8) { + if (inputStream != null) { + try { + inputStream.close(); + } catch (Throwable var7) { + var8.addSuppressed(var7); + } + } + + throw var8; + } + + if (inputStream != null) { + inputStream.close(); + } + + TextureMetadataSection textureMetadataSection = (TextureMetadataSection)resource.metadata().getSection(TextureMetadataSection.TYPE).orElse(null); + return new TextureContents(nativeImage, textureMetadataSection); + } + + public static TextureContents createMissing() { + return new TextureContents(MissingTextureAtlasSprite.generateMissingImage(), null); + } + + public boolean blur() { + return this.metadata != null ? this.metadata.blur() : false; + } + + public boolean clamp() { + return this.metadata != null ? this.metadata.clamp() : false; + } + + public void close() { + this.image.close(); + } +} diff --git a/net/minecraft/client/renderer/texture/TextureManager.java b/net/minecraft/client/renderer/texture/TextureManager.java index c6de4d96..8e75813a 100644 --- a/net/minecraft/client/renderer/texture/TextureManager.java +++ b/net/minecraft/client/renderer/texture/TextureManager.java @@ -1,133 +1,108 @@ package net.minecraft.client.renderer.texture; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; +import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.logging.LogUtils; import com.mojang.realmsclient.gui.screens.AddRealmPopupScreen; +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Iterator; -import java.util.Locale; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Map.Entry; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; -import net.minecraft.CrashReportDetail; import net.minecraft.ReportedException; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.PreparableReloadListener.PreparationBarrier; import org.slf4j.Logger; @Environment(EnvType.CLIENT) public class TextureManager implements PreparableReloadListener, Tickable, AutoCloseable { private static final Logger LOGGER = LogUtils.getLogger(); public static final ResourceLocation INTENTIONAL_MISSING_TEXTURE = ResourceLocation.withDefaultNamespace(""); - private final Map byPath = Maps.newHashMap(); - private final Set tickableTextures = Sets.newHashSet(); - private final Map prefixRegister = Maps.newHashMap(); + private final Map byPath = new HashMap(); + private final Set tickableTextures = new HashSet(); private final ResourceManager resourceManager; public TextureManager(ResourceManager resourceManager) { this.resourceManager = resourceManager; + NativeImage nativeImage = MissingTextureAtlasSprite.generateMissingImage(); + this.register(MissingTextureAtlasSprite.getLocation(), new DynamicTexture(nativeImage)); + } + + public void registerAndLoad(ResourceLocation textureId, ReloadableTexture texture) { + try { + texture.apply(this.loadContentsSafe(textureId, texture)); + } catch (Throwable var6) { + CrashReport crashReport = CrashReport.forThrowable(var6, "Uploading texture"); + CrashReportCategory crashReportCategory = crashReport.addCategory("Uploaded texture"); + crashReportCategory.setDetail("Resource location", texture.resourceId()); + crashReportCategory.setDetail("Texture id", textureId); + throw new ReportedException(crashReport); + } + + this.register(textureId, texture); + } + + private TextureContents loadContentsSafe(ResourceLocation textureId, ReloadableTexture texture) { + try { + return loadContents(this.resourceManager, textureId, texture); + } catch (Exception var4) { + LOGGER.error("Failed to load texture {} into slot {}", texture.resourceId(), textureId, var4); + return TextureContents.createMissing(); + } + } + + public void registerForNextReload(ResourceLocation textureId) { + this.register(textureId, new SimpleTexture(textureId)); } public void register(ResourceLocation path, AbstractTexture texture) { - texture = this.loadTexture(path, texture); AbstractTexture abstractTexture = (AbstractTexture)this.byPath.put(path, texture); if (abstractTexture != texture) { - if (abstractTexture != null && abstractTexture != MissingTextureAtlasSprite.getTexture()) { + if (abstractTexture != null) { this.safeClose(path, abstractTexture); } - if (texture instanceof Tickable) { - this.tickableTextures.add((Tickable)texture); + if (texture instanceof Tickable tickable) { + this.tickableTextures.add(tickable); } } } private void safeClose(ResourceLocation path, AbstractTexture texture) { - if (texture != MissingTextureAtlasSprite.getTexture()) { - this.tickableTextures.remove(texture); + this.tickableTextures.remove(texture); - try { - texture.close(); - } catch (Exception var4) { - LOGGER.warn("Failed to close texture {}", path, var4); - } + try { + texture.close(); + } catch (Exception var4) { + LOGGER.warn("Failed to close texture {}", path, var4); } texture.releaseId(); } - private AbstractTexture loadTexture(ResourceLocation path, AbstractTexture texture) { - try { - texture.load(this.resourceManager); - return texture; - } catch (IOException var6) { - if (path != INTENTIONAL_MISSING_TEXTURE) { - LOGGER.warn("Failed to load texture: {}", path, var6); - } - - return MissingTextureAtlasSprite.getTexture(); - } catch (Throwable var7) { - CrashReport crashReport = CrashReport.forThrowable(var7, "Registering texture"); - CrashReportCategory crashReportCategory = crashReport.addCategory("Resource location being registered"); - crashReportCategory.setDetail("Resource location", path); - crashReportCategory.setDetail("Texture object class", (CrashReportDetail)(() -> texture.getClass().getName())); - throw new ReportedException(crashReport); - } - } - public AbstractTexture getTexture(ResourceLocation path) { AbstractTexture abstractTexture = (AbstractTexture)this.byPath.get(path); - if (abstractTexture == null) { - abstractTexture = new SimpleTexture(path); - this.register(path, abstractTexture); - } - - return abstractTexture; - } - - public AbstractTexture getTexture(ResourceLocation path, AbstractTexture defaultTexture) { - return (AbstractTexture)this.byPath.getOrDefault(path, defaultTexture); - } - - public ResourceLocation register(String name, DynamicTexture texture) { - Integer integer = (Integer)this.prefixRegister.get(name); - if (integer == null) { - integer = 1; + if (abstractTexture != null) { + return abstractTexture; } else { - integer = integer + 1; + SimpleTexture simpleTexture = new SimpleTexture(path); + this.registerAndLoad(path, simpleTexture); + return simpleTexture; } - - this.prefixRegister.put(name, integer); - ResourceLocation resourceLocation = ResourceLocation.withDefaultNamespace(String.format(Locale.ROOT, "dynamic/%s_%d", name, integer)); - this.register(resourceLocation, texture); - return resourceLocation; - } - - public CompletableFuture preload(ResourceLocation path, Executor backgroundExecutor) { - if (!this.byPath.containsKey(path)) { - PreloadedTexture preloadedTexture = new PreloadedTexture(this.resourceManager, path, backgroundExecutor); - this.byPath.put(path, preloadedTexture); - return preloadedTexture.getFuture().thenRunAsync(() -> this.register(path, preloadedTexture), TextureManager::execute); - } else { - return CompletableFuture.completedFuture(null); - } - } - - private static void execute(Runnable runnable) { - Minecraft.getInstance().execute(() -> RenderSystem.recordRenderCall(runnable::run)); } @Override @@ -148,33 +123,25 @@ public class TextureManager implements PreparableReloadListener, Tickable, AutoC this.byPath.forEach(this::safeClose); this.byPath.clear(); this.tickableTextures.clear(); - this.prefixRegister.clear(); } @Override - public CompletableFuture reload( - PreparableReloadListener.PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor - ) { - CompletableFuture completableFuture = new CompletableFuture(); - TitleScreen.preloadResources(this, backgroundExecutor).thenCompose(barrier::wait).thenAcceptAsync(void_ -> { - MissingTextureAtlasSprite.getTexture(); - AddRealmPopupScreen.updateCarouselImages(this.resourceManager); - Iterator> iterator = this.byPath.entrySet().iterator(); - - while (iterator.hasNext()) { - Entry entry = (Entry)iterator.next(); - ResourceLocation resourceLocation = (ResourceLocation)entry.getKey(); - AbstractTexture abstractTexture = (AbstractTexture)entry.getValue(); - if (abstractTexture == MissingTextureAtlasSprite.getTexture() && !resourceLocation.equals(MissingTextureAtlasSprite.getLocation())) { - iterator.remove(); - } else { - abstractTexture.reset(this, manager, resourceLocation, gameExecutor); - } + public CompletableFuture reload(PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor) { + List list = new ArrayList(); + this.byPath.forEach((resourceLocation, abstractTexture) -> { + if (abstractTexture instanceof ReloadableTexture reloadableTexture) { + list.add(scheduleLoad(manager, resourceLocation, reloadableTexture, backgroundExecutor)); } + }); + return CompletableFuture.allOf((CompletableFuture[])list.stream().map(TextureManager.PendingReload::newContents).toArray(CompletableFuture[]::new)) + .thenCompose(barrier::wait) + .thenAcceptAsync(void_ -> { + AddRealmPopupScreen.updateCarouselImages(this.resourceManager); - Minecraft.getInstance().schedule(() -> completableFuture.complete(null)); - }, runnable -> RenderSystem.recordRenderCall(runnable::run)); - return completableFuture; + for (TextureManager.PendingReload pendingReload : list) { + pendingReload.texture.apply((TextureContents)pendingReload.newContents.join()); + } + }, gameExecutor); } public void dumpAllSheets(Path path) { @@ -203,4 +170,32 @@ public class TextureManager implements PreparableReloadListener, Tickable, AutoC } }); } + + private static TextureContents loadContents(ResourceManager resourceManager, ResourceLocation textureId, ReloadableTexture texture) throws IOException { + try { + return texture.loadContents(resourceManager); + } catch (FileNotFoundException var4) { + if (textureId != INTENTIONAL_MISSING_TEXTURE) { + LOGGER.warn("Missing resource {} referenced from {}", texture.resourceId(), textureId); + } + + return TextureContents.createMissing(); + } + } + + private static TextureManager.PendingReload scheduleLoad( + ResourceManager resourceManager, ResourceLocation textureId, ReloadableTexture texture, Executor executor + ) { + return new TextureManager.PendingReload(texture, CompletableFuture.supplyAsync(() -> { + try { + return loadContents(resourceManager, textureId, texture); + } catch (IOException var4) { + throw new UncheckedIOException(var4); + } + }, executor)); + } + + @Environment(EnvType.CLIENT) + record PendingReload(ReloadableTexture texture, CompletableFuture newContents) { + } } diff --git a/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java b/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java index d4457ed8..9f05580d 100644 --- a/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java +++ b/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java @@ -5,13 +5,14 @@ import com.mojang.logging.LogUtils; import java.io.IOException; import java.io.InputStream; import java.util.Collection; +import java.util.Optional; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.texture.SpriteContents; import net.minecraft.client.resources.metadata.animation.AnimationMetadataSection; import net.minecraft.client.resources.metadata.animation.FrameSize; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; +import net.minecraft.server.packs.metadata.MetadataSectionType; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceMetadata; import net.minecraft.util.Mth; @@ -23,7 +24,7 @@ import org.slf4j.Logger; public interface SpriteResourceLoader { Logger LOGGER = LogUtils.getLogger(); - static SpriteResourceLoader create(Collection> collection) { + static SpriteResourceLoader create(Collection> collection) { return (resourceLocation, resource) -> { ResourceMetadata resourceMetadata; try { @@ -59,23 +60,27 @@ public interface SpriteResourceLoader { return null; } - AnimationMetadataSection animationMetadataSection = (AnimationMetadataSection)resourceMetadata.getSection(AnimationMetadataSection.SERIALIZER) - .orElse(AnimationMetadataSection.EMPTY); - FrameSize frameSize = animationMetadataSection.calculateFrameSize(nativeImage.getWidth(), nativeImage.getHeight()); - if (Mth.isMultipleOf(nativeImage.getWidth(), frameSize.width()) && Mth.isMultipleOf(nativeImage.getHeight(), frameSize.height())) { - return new SpriteContents(resourceLocation, frameSize, nativeImage, resourceMetadata); + Optional optional = resourceMetadata.getSection(AnimationMetadataSection.TYPE); + FrameSize frameSize; + if (optional.isPresent()) { + frameSize = ((AnimationMetadataSection)optional.get()).calculateFrameSize(nativeImage.getWidth(), nativeImage.getHeight()); + if (!Mth.isMultipleOf(nativeImage.getWidth(), frameSize.width()) || !Mth.isMultipleOf(nativeImage.getHeight(), frameSize.height())) { + LOGGER.error( + "Image {} size {},{} is not multiple of frame size {},{}", + resourceLocation, + nativeImage.getWidth(), + nativeImage.getHeight(), + frameSize.width(), + frameSize.height() + ); + nativeImage.close(); + return null; + } } else { - LOGGER.error( - "Image {} size {},{} is not multiple of frame size {},{}", - resourceLocation, - nativeImage.getWidth(), - nativeImage.getHeight(), - frameSize.width(), - frameSize.height() - ); - nativeImage.close(); - return null; + frameSize = new FrameSize(nativeImage.getWidth(), nativeImage.getHeight()); } + + return new SpriteContents(resourceLocation, frameSize, nativeImage, resourceMetadata); }; } diff --git a/net/minecraft/client/resources/MapTextureManager.java b/net/minecraft/client/resources/MapTextureManager.java index 15c42d7b..d30a73db 100644 --- a/net/minecraft/client/resources/MapTextureManager.java +++ b/net/minecraft/client/resources/MapTextureManager.java @@ -64,7 +64,8 @@ public class MapTextureManager implements AutoCloseable { MapInstance(final int id, final MapItemSavedData data) { this.data = data; this.texture = new DynamicTexture(128, 128, true); - this.location = MapTextureManager.this.textureManager.register("map/" + id, this.texture); + this.location = ResourceLocation.withDefaultNamespace("map/" + id); + MapTextureManager.this.textureManager.register(this.location, this.texture); } void replaceMapData(MapItemSavedData data) { diff --git a/net/minecraft/client/resources/SkinManager.java b/net/minecraft/client/resources/SkinManager.java index 86674ec1..0501883a 100644 --- a/net/minecraft/client/resources/SkinManager.java +++ b/net/minecraft/client/resources/SkinManager.java @@ -16,6 +16,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import java.nio.file.Path; import java.time.Duration; import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -24,8 +25,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Optionull; import net.minecraft.Util; -import net.minecraft.client.renderer.texture.HttpTexture; -import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.renderer.texture.SkinTextureDownloader; import net.minecraft.client.resources.PlayerSkin.Model; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; @@ -35,21 +35,21 @@ import org.slf4j.Logger; public class SkinManager { static final Logger LOGGER = LogUtils.getLogger(); private final MinecraftSessionService sessionService; - private final LoadingCache> skinCache; + private final LoadingCache>> skinCache; private final SkinManager.TextureCache skinTextures; private final SkinManager.TextureCache capeTextures; private final SkinManager.TextureCache elytraTextures; - public SkinManager(TextureManager textureManager, Path root, MinecraftSessionService sessionService, Executor executor) { + public SkinManager(Path skinDirectory, MinecraftSessionService sessionService, Executor executor) { this.sessionService = sessionService; - this.skinTextures = new SkinManager.TextureCache(textureManager, root, Type.SKIN); - this.capeTextures = new SkinManager.TextureCache(textureManager, root, Type.CAPE); - this.elytraTextures = new SkinManager.TextureCache(textureManager, root, Type.ELYTRA); + this.skinTextures = new SkinManager.TextureCache(skinDirectory, Type.SKIN); + this.capeTextures = new SkinManager.TextureCache(skinDirectory, Type.CAPE); + this.elytraTextures = new SkinManager.TextureCache(skinDirectory, Type.ELYTRA); this.skinCache = CacheBuilder.newBuilder() .expireAfterAccess(Duration.ofSeconds(15L)) .build( - new CacheLoader>() { - public CompletableFuture load(SkinManager.CacheKey cacheKey) { + new CacheLoader>>() { + public CompletableFuture> load(SkinManager.CacheKey cacheKey) { return CompletableFuture.supplyAsync(() -> { Property property = cacheKey.packedTextures(); if (property == null) { @@ -63,24 +63,31 @@ public class SkinManager { return minecraftProfileTextures; } }, Util.backgroundExecutor().forName("unpackSkinTextures")) - .thenComposeAsync(minecraftProfileTextures -> SkinManager.this.registerTextures(cacheKey.profileId(), minecraftProfileTextures), executor); + .thenComposeAsync(minecraftProfileTextures -> SkinManager.this.registerTextures(cacheKey.profileId(), minecraftProfileTextures), executor) + .handle((playerSkin, throwable) -> { + if (throwable != null) { + SkinManager.LOGGER.warn("Failed to load texture for profile {}", cacheKey.profileId, throwable); + } + + return Optional.ofNullable(playerSkin); + }); } } ); } public Supplier lookupInsecure(GameProfile profile) { - CompletableFuture completableFuture = this.getOrLoad(profile); + CompletableFuture> completableFuture = this.getOrLoad(profile); PlayerSkin playerSkin = DefaultPlayerSkin.get(profile); - return () -> (PlayerSkin)completableFuture.getNow(playerSkin); + return () -> (PlayerSkin)((Optional)completableFuture.getNow(Optional.empty())).orElse(playerSkin); } public PlayerSkin getInsecureSkin(GameProfile profile) { - PlayerSkin playerSkin = (PlayerSkin)this.getOrLoad(profile).getNow(null); + PlayerSkin playerSkin = (PlayerSkin)((Optional)this.getOrLoad(profile).getNow(Optional.empty())).orElse(null); return playerSkin != null ? playerSkin : DefaultPlayerSkin.get(profile); } - public CompletableFuture getOrLoad(GameProfile profile) { + public CompletableFuture> getOrLoad(GameProfile profile) { Property property = this.sessionService.getPackedTextures(profile); return this.skinCache.getUnchecked(new SkinManager.CacheKey(profile.getId(), property)); } @@ -126,13 +133,11 @@ public class SkinManager { @Environment(EnvType.CLIENT) static class TextureCache { - private final TextureManager textureManager; private final Path root; private final Type type; private final Map> textures = new Object2ObjectOpenHashMap<>(); - TextureCache(TextureManager textureManager, Path root, Type type) { - this.textureManager = textureManager; + TextureCache(Path root, Type type) { this.root = root; this.type = type; } @@ -152,12 +157,7 @@ public class SkinManager { String string = Hashing.sha1().hashUnencodedChars(texture.getHash()).toString(); ResourceLocation resourceLocation = this.getTextureLocation(string); Path path = this.root.resolve(string.length() > 2 ? string.substring(0, 2) : "xx").resolve(string); - CompletableFuture completableFuture = new CompletableFuture(); - HttpTexture httpTexture = new HttpTexture( - path.toFile(), texture.getUrl(), DefaultPlayerSkin.getDefaultTexture(), this.type == Type.SKIN, () -> completableFuture.complete(resourceLocation) - ); - this.textureManager.register(resourceLocation, httpTexture); - return completableFuture; + return SkinTextureDownloader.downloadAndRegisterSkin(resourceLocation, path, texture.getUrl(), this.type == Type.SKIN); } private ResourceLocation getTextureLocation(String name) { diff --git a/net/minecraft/client/resources/TextureAtlasHolder.java b/net/minecraft/client/resources/TextureAtlasHolder.java index c068aa7d..40228ec2 100644 --- a/net/minecraft/client/resources/TextureAtlasHolder.java +++ b/net/minecraft/client/resources/TextureAtlasHolder.java @@ -9,11 +9,11 @@ import net.minecraft.client.renderer.texture.SpriteLoader; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.texture.SpriteLoader.Preparations; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; +import net.minecraft.server.packs.metadata.MetadataSectionType; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.PreparableReloadListener.PreparationBarrier; import net.minecraft.util.profiling.Profiler; import net.minecraft.util.profiling.Zone; @@ -21,14 +21,14 @@ import net.minecraft.util.profiling.Zone; public abstract class TextureAtlasHolder implements PreparableReloadListener, AutoCloseable { private final TextureAtlas textureAtlas; private final ResourceLocation atlasInfoLocation; - private final Set> metadataSections; + private final Set> metadataSections; public TextureAtlasHolder(TextureManager textureManager, ResourceLocation textureAtlasLocation, ResourceLocation atlasInfoLocation) { this(textureManager, textureAtlasLocation, atlasInfoLocation, SpriteLoader.DEFAULT_METADATA_SECTIONS); } public TextureAtlasHolder( - TextureManager textureManager, ResourceLocation textureAtlasLocation, ResourceLocation atlasInfoLocation, Set> metadataSections + TextureManager textureManager, ResourceLocation textureAtlasLocation, ResourceLocation atlasInfoLocation, Set> metadataSections ) { this.atlasInfoLocation = atlasInfoLocation; this.textureAtlas = new TextureAtlas(textureAtlasLocation); @@ -44,19 +44,17 @@ public abstract class TextureAtlasHolder implements PreparableReloadListener, Au } @Override - public final CompletableFuture reload( - PreparableReloadListener.PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor - ) { + public final CompletableFuture reload(PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor) { return SpriteLoader.create(this.textureAtlas) .loadAndStitch(manager, this.atlasInfoLocation, 0, backgroundExecutor, this.metadataSections) - .thenCompose(Preparations::waitForUpload) + .thenCompose(SpriteLoader.Preparations::waitForUpload) .thenCompose(barrier::wait) .thenAcceptAsync(this::apply, gameExecutor); } - private void apply(Preparations preperations) { + private void apply(SpriteLoader.Preparations preparations) { try (Zone zone = Profiler.get().zone("upload")) { - this.textureAtlas.upload(preperations); + this.textureAtlas.upload(preparations); } } diff --git a/net/minecraft/client/resources/metadata/animation/AnimationFrame.java b/net/minecraft/client/resources/metadata/animation/AnimationFrame.java index 3c93d6c9..3eb91d75 100644 --- a/net/minecraft/client/resources/metadata/animation/AnimationFrame.java +++ b/net/minecraft/client/resources/metadata/animation/AnimationFrame.java @@ -1,28 +1,33 @@ package net.minecraft.client.resources.metadata.animation; +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.Optional; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.util.ExtraCodecs; @Environment(EnvType.CLIENT) -public class AnimationFrame { - public static final int UNKNOWN_FRAME_TIME = -1; - private final int index; - private final int time; +public record AnimationFrame(int index, Optional time) { + public static final Codec FULL_CODEC = RecordCodecBuilder.create( + instance -> instance.group( + ExtraCodecs.NON_NEGATIVE_INT.fieldOf("index").forGetter(AnimationFrame::index), + ExtraCodecs.POSITIVE_INT.optionalFieldOf("time").forGetter(AnimationFrame::time) + ) + .apply(instance, AnimationFrame::new) + ); + public static final Codec CODEC = Codec.either(ExtraCodecs.NON_NEGATIVE_INT, FULL_CODEC) + .xmap( + either -> either.map(AnimationFrame::new, animationFrame -> animationFrame), + animationFrame -> animationFrame.time.isPresent() ? Either.right(animationFrame) : Either.left(animationFrame.index) + ); public AnimationFrame(int index) { - this(index, -1); + this(index, Optional.empty()); } - public AnimationFrame(int index, int time) { - this.index = index; - this.time = time; - } - - public int getTime(int defaultValue) { - return this.time == -1 ? defaultValue : this.time; - } - - public int getIndex() { - return this.index; + public int timeOr(int defaultValue) { + return (Integer)this.time.orElse(defaultValue); } } diff --git a/net/minecraft/client/resources/metadata/animation/AnimationMetadataSection.java b/net/minecraft/client/resources/metadata/animation/AnimationMetadataSection.java index 8ca49b2f..e39176a7 100644 --- a/net/minecraft/client/resources/metadata/animation/AnimationMetadataSection.java +++ b/net/minecraft/client/resources/metadata/animation/AnimationMetadataSection.java @@ -1,64 +1,40 @@ package net.minecraft.client.resources.metadata.animation; -import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.List; +import java.util.Optional; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.server.packs.metadata.MetadataSectionType; +import net.minecraft.util.ExtraCodecs; @Environment(EnvType.CLIENT) -public class AnimationMetadataSection { - public static final AnimationMetadataSectionSerializer SERIALIZER = new AnimationMetadataSectionSerializer(); - public static final String SECTION_NAME = "animation"; - public static final int DEFAULT_FRAME_TIME = 1; - public static final int UNKNOWN_SIZE = -1; - public static final AnimationMetadataSection EMPTY = new AnimationMetadataSection(Lists.newArrayList(), -1, -1, 1, false) { - @Override - public FrameSize calculateFrameSize(int width, int height) { - return new FrameSize(width, height); - } - }; - private final List frames; - private final int frameWidth; - private final int frameHeight; - private final int defaultFrameTime; - private final boolean interpolatedFrames; - - public AnimationMetadataSection(List frames, int frameWidth, int frameHeight, int defaultFrameTime, boolean interpolatedFrames) { - this.frames = frames; - this.frameWidth = frameWidth; - this.frameHeight = frameHeight; - this.defaultFrameTime = defaultFrameTime; - this.interpolatedFrames = interpolatedFrames; - } +public record AnimationMetadataSection( + Optional> frames, Optional frameWidth, Optional frameHeight, int defaultFrameTime, boolean interpolatedFrames +) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + AnimationFrame.CODEC.listOf().optionalFieldOf("frames").forGetter(AnimationMetadataSection::frames), + ExtraCodecs.POSITIVE_INT.optionalFieldOf("width").forGetter(AnimationMetadataSection::frameWidth), + ExtraCodecs.POSITIVE_INT.optionalFieldOf("height").forGetter(AnimationMetadataSection::frameHeight), + ExtraCodecs.POSITIVE_INT.optionalFieldOf("frametime", 1).forGetter(AnimationMetadataSection::defaultFrameTime), + Codec.BOOL.optionalFieldOf("interpolate", false).forGetter(AnimationMetadataSection::interpolatedFrames) + ) + .apply(instance, AnimationMetadataSection::new) + ); + public static final MetadataSectionType TYPE = new MetadataSectionType<>("animation", CODEC); public FrameSize calculateFrameSize(int width, int height) { - if (this.frameWidth != -1) { - return this.frameHeight != -1 ? new FrameSize(this.frameWidth, this.frameHeight) : new FrameSize(this.frameWidth, height); - } else if (this.frameHeight != -1) { - return new FrameSize(width, this.frameHeight); + if (this.frameWidth.isPresent()) { + return this.frameHeight.isPresent() + ? new FrameSize((Integer)this.frameWidth.get(), (Integer)this.frameHeight.get()) + : new FrameSize((Integer)this.frameWidth.get(), height); + } else if (this.frameHeight.isPresent()) { + return new FrameSize(width, (Integer)this.frameHeight.get()); } else { int i = Math.min(width, height); return new FrameSize(i, i); } } - - public int getDefaultFrameTime() { - return this.defaultFrameTime; - } - - public boolean isInterpolatedFrames() { - return this.interpolatedFrames; - } - - public void forEachFrame(AnimationMetadataSection.FrameOutput output) { - for (AnimationFrame animationFrame : this.frames) { - output.accept(animationFrame.getIndex(), animationFrame.getTime(this.defaultFrameTime)); - } - } - - @FunctionalInterface - @Environment(EnvType.CLIENT) - public interface FrameOutput { - void accept(int i, int j); - } } diff --git a/net/minecraft/client/resources/metadata/animation/AnimationMetadataSectionSerializer.java b/net/minecraft/client/resources/metadata/animation/AnimationMetadataSectionSerializer.java deleted file mode 100644 index e4b9a657..00000000 --- a/net/minecraft/client/resources/metadata/animation/AnimationMetadataSectionSerializer.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.minecraft.client.resources.metadata.animation; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableList.Builder; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; -import net.minecraft.util.GsonHelper; -import org.apache.commons.lang3.Validate; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class AnimationMetadataSectionSerializer implements MetadataSectionSerializer { - public AnimationMetadataSection fromJson(JsonObject json) { - Builder builder = ImmutableList.builder(); - int i = GsonHelper.getAsInt(json, "frametime", 1); - if (i != 1) { - Validate.inclusiveBetween(1L, 2147483647L, (long)i, "Invalid default frame time"); - } - - if (json.has("frames")) { - try { - JsonArray jsonArray = GsonHelper.getAsJsonArray(json, "frames"); - - for (int j = 0; j < jsonArray.size(); j++) { - JsonElement jsonElement = jsonArray.get(j); - AnimationFrame animationFrame = this.getFrame(j, jsonElement); - if (animationFrame != null) { - builder.add(animationFrame); - } - } - } catch (ClassCastException var8) { - throw new JsonParseException("Invalid animation->frames: expected array, was " + json.get("frames"), var8); - } - } - - int k = GsonHelper.getAsInt(json, "width", -1); - int jx = GsonHelper.getAsInt(json, "height", -1); - if (k != -1) { - Validate.inclusiveBetween(1L, 2147483647L, (long)k, "Invalid width"); - } - - if (jx != -1) { - Validate.inclusiveBetween(1L, 2147483647L, (long)jx, "Invalid height"); - } - - boolean bl = GsonHelper.getAsBoolean(json, "interpolate", false); - return new AnimationMetadataSection(builder.build(), k, jx, i, bl); - } - - @Nullable - private AnimationFrame getFrame(int frame, JsonElement element) { - if (element.isJsonPrimitive()) { - return new AnimationFrame(GsonHelper.convertToInt(element, "frames[" + frame + "]")); - } else if (element.isJsonObject()) { - JsonObject jsonObject = GsonHelper.convertToJsonObject(element, "frames[" + frame + "]"); - int i = GsonHelper.getAsInt(jsonObject, "time", -1); - if (jsonObject.has("time")) { - Validate.inclusiveBetween(1L, 2147483647L, (long)i, "Invalid frame time"); - } - - int j = GsonHelper.getAsInt(jsonObject, "index"); - Validate.inclusiveBetween(0L, 2147483647L, (long)j, "Invalid frame index"); - return new AnimationFrame(j, i); - } else { - return null; - } - } - - @Override - public String getMetadataSectionName() { - return "animation"; - } -} diff --git a/net/minecraft/client/resources/metadata/animation/VillagerMetaDataSection.java b/net/minecraft/client/resources/metadata/animation/VillagerMetaDataSection.java index 1632938c..a745740e 100644 --- a/net/minecraft/client/resources/metadata/animation/VillagerMetaDataSection.java +++ b/net/minecraft/client/resources/metadata/animation/VillagerMetaDataSection.java @@ -1,45 +1,36 @@ package net.minecraft.client.resources.metadata.animation; -import java.util.Arrays; -import java.util.Map; -import java.util.stream.Collectors; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.server.packs.metadata.MetadataSectionType; +import net.minecraft.util.StringRepresentable; @Environment(EnvType.CLIENT) -public class VillagerMetaDataSection { - public static final VillagerMetadataSectionSerializer SERIALIZER = new VillagerMetadataSectionSerializer(); - public static final String SECTION_NAME = "villager"; - private final VillagerMetaDataSection.Hat hat; - - public VillagerMetaDataSection(VillagerMetaDataSection.Hat hat) { - this.hat = hat; - } - - public VillagerMetaDataSection.Hat getHat() { - return this.hat; - } +public record VillagerMetadataSection(VillagerMetadataSection.Hat hat) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group(VillagerMetadataSection.Hat.CODEC.optionalFieldOf("hat", VillagerMetadataSection.Hat.NONE).forGetter(VillagerMetadataSection::hat)) + .apply(instance, VillagerMetadataSection::new) + ); + public static final MetadataSectionType TYPE = new MetadataSectionType<>("villager", CODEC); @Environment(EnvType.CLIENT) - public static enum Hat { + public static enum Hat implements StringRepresentable { NONE("none"), PARTIAL("partial"), FULL("full"); - private static final Map BY_NAME = (Map)Arrays.stream(values()) - .collect(Collectors.toMap(VillagerMetaDataSection.Hat::getName, hat -> hat)); + public static final Codec CODEC = StringRepresentable.fromEnum(VillagerMetadataSection.Hat::values); private final String name; private Hat(final String name) { this.name = name; } - public String getName() { + @Override + public String getSerializedName() { return this.name; } - - public static VillagerMetaDataSection.Hat getByName(String name) { - return (VillagerMetaDataSection.Hat)BY_NAME.getOrDefault(name, NONE); - } } } diff --git a/net/minecraft/client/resources/metadata/animation/VillagerMetadataSectionSerializer.java b/net/minecraft/client/resources/metadata/animation/VillagerMetadataSectionSerializer.java deleted file mode 100644 index 71442482..00000000 --- a/net/minecraft/client/resources/metadata/animation/VillagerMetadataSectionSerializer.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.client.resources.metadata.animation; - -import com.google.gson.JsonObject; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; -import net.minecraft.util.GsonHelper; - -@Environment(EnvType.CLIENT) -public class VillagerMetadataSectionSerializer implements MetadataSectionSerializer { - public VillagerMetaDataSection fromJson(JsonObject json) { - return new VillagerMetaDataSection(VillagerMetaDataSection.Hat.getByName(GsonHelper.getAsString(json, "hat", "none"))); - } - - @Override - public String getMetadataSectionName() { - return "villager"; - } -} diff --git a/net/minecraft/client/resources/metadata/gui/GuiMetadataSection.java b/net/minecraft/client/resources/metadata/gui/GuiMetadataSection.java index cb7073aa..b8e67828 100644 --- a/net/minecraft/client/resources/metadata/gui/GuiMetadataSection.java +++ b/net/minecraft/client/resources/metadata/gui/GuiMetadataSection.java @@ -13,5 +13,5 @@ public record GuiMetadataSection(GuiSpriteScaling scaling) { instance -> instance.group(GuiSpriteScaling.CODEC.optionalFieldOf("scaling", GuiSpriteScaling.DEFAULT).forGetter(GuiMetadataSection::scaling)) .apply(instance, GuiMetadataSection::new) ); - public static final MetadataSectionType TYPE = MetadataSectionType.fromCodec("gui", CODEC); + public static final MetadataSectionType TYPE = new MetadataSectionType<>("gui", CODEC); } diff --git a/net/minecraft/client/resources/metadata/language/LanguageMetadataSection.java b/net/minecraft/client/resources/metadata/language/LanguageMetadataSection.java index bf2ff82a..15d492af 100644 --- a/net/minecraft/client/resources/metadata/language/LanguageMetadataSection.java +++ b/net/minecraft/client/resources/metadata/language/LanguageMetadataSection.java @@ -12,5 +12,5 @@ public record LanguageMetadataSection(Map languages) { public static final Codec LANGUAGE_CODE_CODEC = Codec.string(1, 16); public static final Codec CODEC = Codec.unboundedMap(LANGUAGE_CODE_CODEC, LanguageInfo.CODEC) .xmap(LanguageMetadataSection::new, LanguageMetadataSection::languages); - public static final MetadataSectionType TYPE = MetadataSectionType.fromCodec("language", CODEC); + public static final MetadataSectionType TYPE = new MetadataSectionType<>("language", CODEC); } diff --git a/net/minecraft/client/resources/metadata/texture/TextureMetadataSection.java b/net/minecraft/client/resources/metadata/texture/TextureMetadataSection.java index daf4dbe7..33c35df4 100644 --- a/net/minecraft/client/resources/metadata/texture/TextureMetadataSection.java +++ b/net/minecraft/client/resources/metadata/texture/TextureMetadataSection.java @@ -1,26 +1,21 @@ package net.minecraft.client.resources.metadata.texture; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.server.packs.metadata.MetadataSectionType; @Environment(EnvType.CLIENT) -public class TextureMetadataSection { - public static final TextureMetadataSectionSerializer SERIALIZER = new TextureMetadataSectionSerializer(); +public record TextureMetadataSection(boolean blur, boolean clamp) { public static final boolean DEFAULT_BLUR = false; public static final boolean DEFAULT_CLAMP = false; - private final boolean blur; - private final boolean clamp; - - public TextureMetadataSection(boolean blur, boolean clamp) { - this.blur = blur; - this.clamp = clamp; - } - - public boolean isBlur() { - return this.blur; - } - - public boolean isClamp() { - return this.clamp; - } + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + Codec.BOOL.optionalFieldOf("blur", false).forGetter(TextureMetadataSection::blur), + Codec.BOOL.optionalFieldOf("clamp", false).forGetter(TextureMetadataSection::clamp) + ) + .apply(instance, TextureMetadataSection::new) + ); + public static final MetadataSectionType TYPE = new MetadataSectionType<>("texture", CODEC); } diff --git a/net/minecraft/client/resources/metadata/texture/TextureMetadataSectionSerializer.java b/net/minecraft/client/resources/metadata/texture/TextureMetadataSectionSerializer.java deleted file mode 100644 index 426254a7..00000000 --- a/net/minecraft/client/resources/metadata/texture/TextureMetadataSectionSerializer.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minecraft.client.resources.metadata.texture; - -import com.google.gson.JsonObject; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; -import net.minecraft.util.GsonHelper; - -@Environment(EnvType.CLIENT) -public class TextureMetadataSectionSerializer implements MetadataSectionSerializer { - public TextureMetadataSection fromJson(JsonObject json) { - boolean bl = GsonHelper.getAsBoolean(json, "blur", false); - boolean bl2 = GsonHelper.getAsBoolean(json, "clamp", false); - return new TextureMetadataSection(bl, bl2); - } - - @Override - public String getMetadataSectionName() { - return "texture"; - } -} diff --git a/net/minecraft/client/resources/model/BakedModel.java b/net/minecraft/client/resources/model/BakedModel.java index bc5daffd..162a6f48 100644 --- a/net/minecraft/client/resources/model/BakedModel.java +++ b/net/minecraft/client/resources/model/BakedModel.java @@ -3,7 +3,6 @@ package net.minecraft.client.resources.model; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.block.model.BakedOverrides; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -22,13 +21,7 @@ public interface BakedModel { boolean usesBlockLight(); - boolean isCustomRenderer(); - TextureAtlasSprite getParticleIcon(); ItemTransforms getTransforms(); - - default BakedOverrides overrides() { - return BakedOverrides.EMPTY; - } } diff --git a/net/minecraft/client/resources/model/BlockStateModelLoader.java b/net/minecraft/client/resources/model/BlockStateModelLoader.java index 24b77de3..0a7b1051 100644 --- a/net/minecraft/client/resources/model/BlockStateModelLoader.java +++ b/net/minecraft/client/resources/model/BlockStateModelLoader.java @@ -1,17 +1,30 @@ package net.minecraft.client.resources.model; +import com.google.common.collect.Maps; +import com.google.gson.JsonObject; import com.mojang.logging.LogUtils; +import java.io.Reader; +import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; import java.util.function.Function; +import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.Util; import net.minecraft.client.renderer.block.BlockModelShaper; import net.minecraft.client.renderer.block.model.BlockModelDefinition; +import net.minecraft.client.renderer.block.model.UnbakedBlockStateModel; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.FileToIdConverter; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.util.GsonHelper; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -23,6 +36,7 @@ import org.slf4j.Logger; @Environment(EnvType.CLIENT) public class BlockStateModelLoader { private static final Logger LOGGER = LogUtils.getLogger(); + private static final FileToIdConverter BLOCKSTATE_LISTER = FileToIdConverter.json("blockstates"); private static final String FRAME_MAP_PROPERTY = "map"; private static final String FRAME_MAP_PROPERTY_TRUE = "map=true"; private static final String FRAME_MAP_PROPERTY_FALSE = "map=false"; @@ -38,13 +52,8 @@ public class BlockStateModelLoader { public static final ModelResourceLocation GLOW_FRAME_LOCATION = new ModelResourceLocation(GLOW_ITEM_FRAME_LOCATION, "map=false"); public static final ModelResourceLocation MAP_FRAME_LOCATION = new ModelResourceLocation(ITEM_FRAME_LOCATION, "map=true"); public static final ModelResourceLocation FRAME_LOCATION = new ModelResourceLocation(ITEM_FRAME_LOCATION, "map=false"); - private final UnbakedModel missingModel; - public BlockStateModelLoader(UnbakedModel missingModel) { - this.missingModel = missingModel; - } - - public static Function> definitionLocationToBlockMapper() { + private static Function> definitionLocationToBlockMapper() { Map> map = new HashMap(STATIC_DEFINITIONS); for (Block block : BuiltInRegistries.BLOCK) { @@ -54,51 +63,110 @@ public class BlockStateModelLoader { return map::get; } - public BlockStateModelLoader.LoadedModels loadBlockStateDefinitionStack( - ResourceLocation blockStateId, StateDefinition stateDefinition, List modelDefinitions - ) { - List list = stateDefinition.getPossibleStates(); - Map map = new HashMap(); - Map map2 = new HashMap(); + public static CompletableFuture loadBlockStates(UnbakedModel model, ResourceManager resourceManager, Executor executor) { + Function> function = definitionLocationToBlockMapper(); + return CompletableFuture.supplyAsync(() -> BLOCKSTATE_LISTER.listMatchingResourceStacks(resourceManager), executor).thenCompose(map -> { + List> list = new ArrayList(map.size()); - try { - for (BlockStateModelLoader.LoadedBlockModelDefinition loadedBlockModelDefinition : modelDefinitions) { - loadedBlockModelDefinition.contents - .instantiate(stateDefinition, blockStateId + "/" + loadedBlockModelDefinition.source) - .forEach((blockStatex, unbakedBlockStateModel) -> map.put(blockStatex, new BlockStateModelLoader.LoadedModel(blockStatex, unbakedBlockStateModel))); - } - } finally { - Iterator var12 = list.iterator(); + for (Entry> entry : map.entrySet()) { + list.add(CompletableFuture.supplyAsync(() -> { + ResourceLocation resourceLocation = BLOCKSTATE_LISTER.fileToId((ResourceLocation)entry.getKey()); + StateDefinition stateDefinition = (StateDefinition)function.apply(resourceLocation); + if (stateDefinition == null) { + LOGGER.debug("Discovered unknown block state definition {}, ignoring", resourceLocation); + return null; + } else { + List listx = (List)entry.getValue(); + List list2 = new ArrayList(listx.size()); - while (true) { - if (!var12.hasNext()) { - ; - } else { - BlockState blockState2 = (BlockState)var12.next(); - ModelResourceLocation modelResourceLocation2 = BlockModelShaper.stateToModelLocation(blockStateId, blockState2); - BlockStateModelLoader.LoadedModel loadedModel2 = (BlockStateModelLoader.LoadedModel)map.get(blockState2); - if (loadedModel2 == null) { - LOGGER.warn("Missing blockstate definition: '{}' missing model for variant: '{}'", blockStateId, modelResourceLocation2); - loadedModel2 = new BlockStateModelLoader.LoadedModel(blockState2, this.missingModel); + for (Resource resource : listx) { + try { + Reader reader = resource.openAsReader(); + + try { + JsonObject jsonObject = GsonHelper.parse(reader); + BlockModelDefinition blockModelDefinition = BlockModelDefinition.fromJsonElement(jsonObject); + list2.add(new BlockStateModelLoader.LoadedBlockModelDefinition(resource.sourcePackId(), blockModelDefinition)); + } catch (Throwable var14) { + if (reader != null) { + try { + reader.close(); + } catch (Throwable var13) { + var14.addSuppressed(var13); + } + } + + throw var14; + } + + if (reader != null) { + reader.close(); + } + } catch (Exception var15) { + LOGGER.error("Failed to load blockstate definition {} from pack {}", resourceLocation, resource.sourcePackId(), var15); + } + } + + try { + return loadBlockStateDefinitionStack(resourceLocation, stateDefinition, list2, model); + } catch (Exception var12) { + LOGGER.error("Failed to load blockstate definition {}", resourceLocation, var12); + return null; + } } - - map2.put(modelResourceLocation2, loadedModel2); - } + }, executor)); } + + return Util.sequence(list).thenApply(listx -> { + Map mapx = new HashMap(); + + for (BlockStateModelLoader.LoadedModels loadedModels : listx) { + if (loadedModels != null) { + mapx.putAll(loadedModels.models()); + } + } + + return new BlockStateModelLoader.LoadedModels(mapx); + }); + }); + } + + private static BlockStateModelLoader.LoadedModels loadBlockStateDefinitionStack( + ResourceLocation id, + StateDefinition stateDefinition, + List modelDefinitions, + UnbakedModel model + ) { + Map map = new HashMap(); + + for (BlockStateModelLoader.LoadedBlockModelDefinition loadedBlockModelDefinition : modelDefinitions) { + loadedBlockModelDefinition.contents + .instantiate(stateDefinition, id + "/" + loadedBlockModelDefinition.source) + .forEach((blockState, unbakedBlockStateModel) -> { + ModelResourceLocation modelResourceLocation = BlockModelShaper.stateToModelLocation(id, blockState); + map.put(modelResourceLocation, new BlockStateModelLoader.LoadedModel(blockState, unbakedBlockStateModel)); + }); } - return new BlockStateModelLoader.LoadedModels(map2); + return new BlockStateModelLoader.LoadedModels(map); } @Environment(EnvType.CLIENT) - public record LoadedBlockModelDefinition(String source, BlockModelDefinition contents) { + record LoadedBlockModelDefinition(String source, BlockModelDefinition contents) { } @Environment(EnvType.CLIENT) - public record LoadedModel(BlockState state, UnbakedModel model) { + public record LoadedModel(BlockState state, UnbakedBlockStateModel model) { } @Environment(EnvType.CLIENT) public record LoadedModels(Map models) { + public Stream forResolving() { + return this.models.values().stream().map(BlockStateModelLoader.LoadedModel::model); + } + + public Map plainModels() { + return Maps.transformValues(this.models, BlockStateModelLoader.LoadedModel::model); + } } } diff --git a/net/minecraft/client/resources/model/BuiltInModel.java b/net/minecraft/client/resources/model/BuiltInModel.java deleted file mode 100644 index 71d28227..00000000 --- a/net/minecraft/client/resources/model/BuiltInModel.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.minecraft.client.resources.model; - -import java.util.Collections; -import java.util.List; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.block.state.BlockState; -import org.jetbrains.annotations.Nullable; - -@Environment(EnvType.CLIENT) -public class BuiltInModel implements BakedModel { - private final ItemTransforms itemTransforms; - private final TextureAtlasSprite particleTexture; - private final boolean usesBlockLight; - - public BuiltInModel(ItemTransforms itemTransforms, TextureAtlasSprite particleTexture, boolean usesBlockLight) { - this.itemTransforms = itemTransforms; - this.particleTexture = particleTexture; - this.usesBlockLight = usesBlockLight; - } - - @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction direction, RandomSource random) { - return Collections.emptyList(); - } - - @Override - public boolean useAmbientOcclusion() { - return false; - } - - @Override - public boolean isGui3d() { - return true; - } - - @Override - public boolean usesBlockLight() { - return this.usesBlockLight; - } - - @Override - public boolean isCustomRenderer() { - return true; - } - - @Override - public TextureAtlasSprite getParticleIcon() { - return this.particleTexture; - } - - @Override - public ItemTransforms getTransforms() { - return this.itemTransforms; - } -} diff --git a/net/minecraft/client/resources/model/ClientItemInfoLoader.java b/net/minecraft/client/resources/model/ClientItemInfoLoader.java new file mode 100644 index 00000000..52ab3760 --- /dev/null +++ b/net/minecraft/client/resources/model/ClientItemInfoLoader.java @@ -0,0 +1,98 @@ +package net.minecraft.client.resources.model; + +import com.google.gson.JsonParser; +import com.mojang.logging.LogUtils; +import com.mojang.serialization.JsonOps; +import java.io.Reader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.Util; +import net.minecraft.client.renderer.item.ClientItem; +import net.minecraft.resources.FileToIdConverter; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; + +@Environment(EnvType.CLIENT) +public class ClientItemInfoLoader { + private static final Logger LOGGER = LogUtils.getLogger(); + private static final FileToIdConverter LISTER = FileToIdConverter.json("items"); + + public static CompletableFuture scheduleLoad(ResourceManager resourceManager, Executor executor) { + return CompletableFuture.supplyAsync(() -> LISTER.listMatchingResources(resourceManager), executor) + .thenCompose( + map -> { + List> list = new ArrayList(map.size()); + map.forEach( + (resourceLocation, resource) -> list.add( + CompletableFuture.supplyAsync( + () -> { + ResourceLocation resourceLocation2 = LISTER.fileToId(resourceLocation); + + try { + Reader reader = resource.openAsReader(); + + ClientItemInfoLoader.PendingLoad var5; + try { + ClientItem clientItem = (ClientItem)ClientItem.CODEC + .parse(JsonOps.INSTANCE, JsonParser.parseReader(reader)) + .ifError(error -> LOGGER.error("Couldn't parse item model '{}' from pack '{}': {}", resourceLocation2, resource.sourcePackId(), error.message())) + .result() + .orElse(null); + var5 = new ClientItemInfoLoader.PendingLoad(resourceLocation2, clientItem); + } catch (Throwable var7) { + if (reader != null) { + try { + reader.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); + } + } + + throw var7; + } + + if (reader != null) { + reader.close(); + } + + return var5; + } catch (Exception var8) { + LOGGER.error("Failed to open item model {} from pack '{}'", resourceLocation, resource.sourcePackId(), var8); + return new ClientItemInfoLoader.PendingLoad(resourceLocation2, null); + } + }, + executor + ) + ) + ); + return Util.sequence(list).thenApply(listx -> { + Map mapx = new HashMap(); + + for (ClientItemInfoLoader.PendingLoad pendingLoad : listx) { + if (pendingLoad.clientItemInfo != null) { + mapx.put(pendingLoad.id, pendingLoad.clientItemInfo); + } + } + + return new ClientItemInfoLoader.LoadedClientInfos(mapx); + }); + } + ); + } + + @Environment(EnvType.CLIENT) + public record LoadedClientInfos(Map contents) { + } + + @Environment(EnvType.CLIENT) + record PendingLoad(ResourceLocation id, @Nullable ClientItem clientItemInfo) { + } +} diff --git a/net/minecraft/client/resources/model/DelegateBakedModel.java b/net/minecraft/client/resources/model/DelegateBakedModel.java index 3b20942a..21bee1fb 100644 --- a/net/minecraft/client/resources/model/DelegateBakedModel.java +++ b/net/minecraft/client/resources/model/DelegateBakedModel.java @@ -39,11 +39,6 @@ public abstract class DelegateBakedModel implements BakedModel { return this.parent.usesBlockLight(); } - @Override - public boolean isCustomRenderer() { - return this.parent.isCustomRenderer(); - } - @Override public TextureAtlasSprite getParticleIcon() { return this.parent.getParticleIcon(); diff --git a/net/minecraft/client/resources/model/EquipmentAssetManager.java b/net/minecraft/client/resources/model/EquipmentAssetManager.java new file mode 100644 index 00000000..ff945a41 --- /dev/null +++ b/net/minecraft/client/resources/model/EquipmentAssetManager.java @@ -0,0 +1,36 @@ +package net.minecraft.client.resources.model; + +import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.FileToIdConverter; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.item.equipment.EquipmentAsset; +import net.minecraft.world.item.equipment.EquipmentAssets; + +@Environment(EnvType.CLIENT) +public class EquipmentAssetManager extends SimpleJsonResourceReloadListener { + public static final EquipmentClientInfo MISSING = new EquipmentClientInfo(Map.of()); + private static final FileToIdConverter ASSET_LISTER = FileToIdConverter.json("equipment"); + private Map, EquipmentClientInfo> equipmentAssets = Map.of(); + + public EquipmentAssetManager() { + super(EquipmentClientInfo.CODEC, ASSET_LISTER); + } + + protected void apply(Map map, ResourceManager resourceManager, ProfilerFiller profilerFiller) { + this.equipmentAssets = (Map, EquipmentClientInfo>)map.entrySet() + .stream() + .collect(Collectors.toUnmodifiableMap(entry -> ResourceKey.create(EquipmentAssets.ROOT_ID, (ResourceLocation)entry.getKey()), Entry::getValue)); + } + + public EquipmentClientInfo get(ResourceKey key) { + return (EquipmentClientInfo)this.equipmentAssets.getOrDefault(key, MISSING); + } +} diff --git a/net/minecraft/client/resources/model/EquipmentClientInfo.java b/net/minecraft/client/resources/model/EquipmentClientInfo.java new file mode 100644 index 00000000..011dbf7f --- /dev/null +++ b/net/minecraft/client/resources/model/EquipmentClientInfo.java @@ -0,0 +1,132 @@ +package net.minecraft.client.resources.model; + +import com.google.common.collect.ImmutableMap; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Map.Entry; +import java.util.function.UnaryOperator; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.StringRepresentable; + +@Environment(EnvType.CLIENT) +public record EquipmentClientInfo(Map> layers) { + private static final Codec> LAYER_LIST_CODEC = ExtraCodecs.nonEmptyList(EquipmentClientInfo.Layer.CODEC.listOf()); + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + ExtraCodecs.nonEmptyMap(Codec.unboundedMap(EquipmentClientInfo.LayerType.CODEC, LAYER_LIST_CODEC)).fieldOf("layers").forGetter(EquipmentClientInfo::layers) + ) + .apply(instance, EquipmentClientInfo::new) + ); + + public static EquipmentClientInfo.Builder builder() { + return new EquipmentClientInfo.Builder(); + } + + public List getLayers(EquipmentClientInfo.LayerType type) { + return (List)this.layers.getOrDefault(type, List.of()); + } + + @Environment(EnvType.CLIENT) + public static class Builder { + private final Map> layersByType = new EnumMap(EquipmentClientInfo.LayerType.class); + + Builder() { + } + + public EquipmentClientInfo.Builder addHumanoidLayers(ResourceLocation textureId) { + return this.addHumanoidLayers(textureId, false); + } + + public EquipmentClientInfo.Builder addHumanoidLayers(ResourceLocation textureId, boolean dyeable) { + this.addLayers(EquipmentClientInfo.LayerType.HUMANOID_LEGGINGS, EquipmentClientInfo.Layer.leatherDyeable(textureId, dyeable)); + this.addMainHumanoidLayer(textureId, dyeable); + return this; + } + + public EquipmentClientInfo.Builder addMainHumanoidLayer(ResourceLocation textureId, boolean dyeable) { + return this.addLayers(EquipmentClientInfo.LayerType.HUMANOID, EquipmentClientInfo.Layer.leatherDyeable(textureId, dyeable)); + } + + public EquipmentClientInfo.Builder addLayers(EquipmentClientInfo.LayerType type, EquipmentClientInfo.Layer... layers) { + Collections.addAll((Collection)this.layersByType.computeIfAbsent(type, layerType -> new ArrayList()), layers); + return this; + } + + public EquipmentClientInfo build() { + return new EquipmentClientInfo( + (Map>)this.layersByType + .entrySet() + .stream() + .collect(ImmutableMap.toImmutableMap(Entry::getKey, entry -> List.copyOf((Collection)entry.getValue()))) + ); + } + } + + @Environment(EnvType.CLIENT) + public record Dyeable(Optional colorWhenUndyed) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group(ExtraCodecs.RGB_COLOR_CODEC.optionalFieldOf("color_when_undyed").forGetter(EquipmentClientInfo.Dyeable::colorWhenUndyed)) + .apply(instance, EquipmentClientInfo.Dyeable::new) + ); + } + + @Environment(EnvType.CLIENT) + public record Layer(ResourceLocation textureId, Optional dyeable, boolean usePlayerTexture) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + ResourceLocation.CODEC.fieldOf("texture").forGetter(EquipmentClientInfo.Layer::textureId), + EquipmentClientInfo.Dyeable.CODEC.optionalFieldOf("dyeable").forGetter(EquipmentClientInfo.Layer::dyeable), + Codec.BOOL.optionalFieldOf("use_player_texture", false).forGetter(EquipmentClientInfo.Layer::usePlayerTexture) + ) + .apply(instance, EquipmentClientInfo.Layer::new) + ); + + public Layer(ResourceLocation textureId) { + this(textureId, Optional.empty(), false); + } + + public static EquipmentClientInfo.Layer leatherDyeable(ResourceLocation textureId, boolean dyeable) { + return new EquipmentClientInfo.Layer(textureId, dyeable ? Optional.of(new EquipmentClientInfo.Dyeable(Optional.of(-6265536))) : Optional.empty(), false); + } + + public static EquipmentClientInfo.Layer onlyIfDyed(ResourceLocation textureId, boolean dyeable) { + return new EquipmentClientInfo.Layer(textureId, dyeable ? Optional.of(new EquipmentClientInfo.Dyeable(Optional.empty())) : Optional.empty(), false); + } + + public ResourceLocation getTextureLocation(EquipmentClientInfo.LayerType type) { + return this.textureId.withPath((UnaryOperator)(string -> "textures/entity/equipment/" + type.getSerializedName() + "/" + string + ".png")); + } + } + + @Environment(EnvType.CLIENT) + public static enum LayerType implements StringRepresentable { + HUMANOID("humanoid"), + HUMANOID_LEGGINGS("humanoid_leggings"), + WINGS("wings"), + WOLF_BODY("wolf_body"), + HORSE_BODY("horse_body"), + LLAMA_BODY("llama_body"); + + public static final Codec CODEC = StringRepresentable.fromEnum(EquipmentClientInfo.LayerType::values); + private final String id; + + private LayerType(final String id) { + this.id = id; + } + + @Override + public String getSerializedName() { + return this.id; + } + } +} diff --git a/net/minecraft/client/resources/model/EquipmentModelSet.java b/net/minecraft/client/resources/model/EquipmentModelSet.java deleted file mode 100644 index 9246cc28..00000000 --- a/net/minecraft/client/resources/model/EquipmentModelSet.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.client.resources.model; - -import java.util.Map; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener; -import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.item.equipment.EquipmentModel; - -@Environment(EnvType.CLIENT) -public class EquipmentModelSet extends SimpleJsonResourceReloadListener { - public static final EquipmentModel MISSING_MODEL = new EquipmentModel(Map.of()); - private Map models = Map.of(); - - public EquipmentModelSet() { - super(EquipmentModel.CODEC, "models/equipment"); - } - - protected void apply(Map object, ResourceManager resourceManager, ProfilerFiller profiler) { - this.models = Map.copyOf(object); - } - - public EquipmentModel get(ResourceLocation name) { - return (EquipmentModel)this.models.getOrDefault(name, MISSING_MODEL); - } -} diff --git a/net/minecraft/client/resources/model/ItemModel.java b/net/minecraft/client/resources/model/ItemModel.java deleted file mode 100644 index a66a8da6..00000000 --- a/net/minecraft/client/resources/model/ItemModel.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.minecraft.client.resources.model; - -import java.util.List; -import java.util.function.Function; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.block.model.BakedOverrides; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.ItemOverride; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; - -@Environment(EnvType.CLIENT) -public class ItemModel implements UnbakedModel { - private final ResourceLocation id; - private List overrides = List.of(); - - public ItemModel(ResourceLocation id) { - this.id = id; - } - - @Override - public void resolveDependencies(UnbakedModel.Resolver resolver) { - if (resolver.resolve(this.id) instanceof BlockModel blockModel) { - this.overrides = blockModel.getOverrides(); - this.overrides.forEach(itemOverride -> resolver.resolve(itemOverride.model())); - } - } - - @Override - public BakedModel bake(ModelBaker baker, Function spriteGetter, ModelState state) { - BakedModel bakedModel = baker.bake(this.id, state); - if (this.overrides.isEmpty()) { - return bakedModel; - } else { - BakedOverrides bakedOverrides = new BakedOverrides(baker, this.overrides); - return new ItemModel.BakedModelWithOverrides(bakedModel, bakedOverrides); - } - } - - @Environment(EnvType.CLIENT) - static class BakedModelWithOverrides extends DelegateBakedModel { - private final BakedOverrides overrides; - - public BakedModelWithOverrides(BakedModel parent, BakedOverrides overrides) { - super(parent); - this.overrides = overrides; - } - - @Override - public BakedOverrides overrides() { - return this.overrides; - } - } -} diff --git a/net/minecraft/client/resources/model/MissingBlockModel.java b/net/minecraft/client/resources/model/MissingBlockModel.java index 08d2cc68..15b67bea 100644 --- a/net/minecraft/client/resources/model/MissingBlockModel.java +++ b/net/minecraft/client/resources/model/MissingBlockModel.java @@ -1,6 +1,5 @@ package net.minecraft.client.resources.model; -import com.mojang.datafixers.util.Either; import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -11,15 +10,18 @@ import net.minecraft.client.renderer.block.model.BlockElementFace; import net.minecraft.client.renderer.block.model.BlockFaceUV; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.block.model.TextureSlots.Data.Builder; import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import org.joml.Vector3f; @Environment(EnvType.CLIENT) public class MissingBlockModel { - public static final String NAME = "missing"; - public static final ResourceLocation LOCATION = SpecialModels.builtinModelId("missing"); + private static final String NAME = "missing"; + private static final String TEXTURE_SLOT = "missingno"; + public static final ResourceLocation LOCATION = ResourceLocation.withDefaultNamespace("builtin/missing"); public static final ModelResourceLocation VARIANT = new ModelResourceLocation(LOCATION, "missing"); public static UnbakedModel missingModel() { @@ -27,14 +29,20 @@ public class MissingBlockModel { Map map = new EnumMap(Direction.class); for (Direction direction : Direction.values()) { - map.put(direction, new BlockElementFace(direction, 0, MissingTextureAtlasSprite.getLocation().getPath(), blockFaceUV)); + map.put(direction, new BlockElementFace(direction, -1, "missingno", blockFaceUV)); } BlockElement blockElement = new BlockElement(new Vector3f(0.0F, 0.0F, 0.0F), new Vector3f(16.0F, 16.0F, 16.0F), map); - BlockModel blockModel = new BlockModel( - null, List.of(blockElement), Map.of("particle", Either.left(BlockModel.MISSING_MATERIAL)), null, null, ItemTransforms.NO_TRANSFORMS, List.of() + return new BlockModel( + null, + List.of(blockElement), + new Builder() + .addReference("particle", "missingno") + .addTexture("missingno", new Material(TextureAtlas.LOCATION_BLOCKS, MissingTextureAtlasSprite.getLocation())) + .build(), + null, + null, + ItemTransforms.NO_TRANSFORMS ); - blockModel.name = "missingno"; - return blockModel; } } diff --git a/net/minecraft/client/resources/model/ModelBaker.java b/net/minecraft/client/resources/model/ModelBaker.java index f9bfb7e7..f9f6e3a5 100644 --- a/net/minecraft/client/resources/model/ModelBaker.java +++ b/net/minecraft/client/resources/model/ModelBaker.java @@ -3,8 +3,14 @@ package net.minecraft.client.resources.model; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.VisibleForDebug; @Environment(EnvType.CLIENT) public interface ModelBaker { BakedModel bake(ResourceLocation location, ModelState transform); + + SpriteGetter sprites(); + + @VisibleForDebug + ModelDebugName rootName(); } diff --git a/net/minecraft/client/resources/model/ModelBakery.java b/net/minecraft/client/resources/model/ModelBakery.java index 74f5c797..f30961fb 100644 --- a/net/minecraft/client/resources/model/ModelBakery.java +++ b/net/minecraft/client/resources/model/ModelBakery.java @@ -5,18 +5,21 @@ import com.mojang.math.Transformation; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.function.UnaryOperator; import java.util.stream.Collectors; import java.util.stream.IntStream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.ItemModelGenerator; +import net.minecraft.client.renderer.block.model.UnbakedBlockStateModel; +import net.minecraft.client.renderer.item.ClientItem; +import net.minecraft.client.renderer.item.ItemModel; +import net.minecraft.client.renderer.item.MissingItemModel; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.ModelBakery.TextureGetter.1; import net.minecraft.resources.ResourceLocation; import org.slf4j.Logger; @@ -39,37 +42,59 @@ public class ModelBakery { .collect(Collectors.toList()); public static final List DESTROY_TYPES = (List)BREAKING_LOCATIONS.stream().map(RenderType::crumbling).collect(Collectors.toList()); static final Logger LOGGER = LogUtils.getLogger(); - static final ItemModelGenerator ITEM_MODEL_GENERATOR = new ItemModelGenerator(); + private final EntityModelSet entityModelSet; final Map bakedCache = new HashMap(); - private final Map bakedTopLevelModels = new HashMap(); - private final Map topModels; - final Map unbakedModels; + private final Map unbakedBlockStateModels; + private final Map clientInfos; + final Map unbakedPlainModels; final UnbakedModel missingModel; - public ModelBakery(Map topModels, Map unbackedModels, UnbakedModel missingModel) { - this.topModels = topModels; - this.unbakedModels = unbackedModels; + public ModelBakery( + EntityModelSet entityModelSet, + Map unbakedBlockStateModels, + Map unbakedItemStackModels, + Map unbakedPlainModels, + UnbakedModel missingModel + ) { + this.entityModelSet = entityModelSet; + this.unbakedBlockStateModels = unbakedBlockStateModels; + this.clientInfos = unbakedItemStackModels; + this.unbakedPlainModels = unbakedPlainModels; this.missingModel = missingModel; } - public void bakeModels(ModelBakery.TextureGetter textureGetter) { - this.topModels.forEach((modelResourceLocation, unbakedModel) -> { - BakedModel bakedModel = null; - + public ModelBakery.BakingResult bakeModels(ModelBakery.TextureGetter textureGetter) { + BakedModel bakedModel = UnbakedModel.bakeWithTopModelValues( + this.missingModel, new ModelBakery.ModelBakerImpl(textureGetter, () -> "missing"), BlockModelRotation.X0_Y0 + ); + Map map = new HashMap(this.unbakedBlockStateModels.size()); + this.unbakedBlockStateModels.forEach((modelResourceLocation, unbakedBlockStateModel) -> { try { - bakedModel = new ModelBakery.ModelBakerImpl(textureGetter, modelResourceLocation).bakeUncached(unbakedModel, BlockModelRotation.X0_Y0); - } catch (Exception var6) { - LOGGER.warn("Unable to bake model: '{}': {}", modelResourceLocation, var6); - } - - if (bakedModel != null) { - this.bakedTopLevelModels.put(modelResourceLocation, bakedModel); + BakedModel bakedModelx = unbakedBlockStateModel.bake(new ModelBakery.ModelBakerImpl(textureGetter, modelResourceLocation::toString)); + map.put(modelResourceLocation, bakedModelx); + } catch (Exception var6x) { + LOGGER.warn("Unable to bake model: '{}': {}", modelResourceLocation, var6x); } }); - } + ItemModel itemModel = new MissingItemModel(bakedModel); + Map map2 = new HashMap(this.clientInfos.size()); + Map map3 = new HashMap(this.clientInfos.size()); + this.clientInfos.forEach((resourceLocation, clientItem) -> { + ModelDebugName modelDebugName = () -> resourceLocation + "#inventory"; + ModelBakery.ModelBakerImpl modelBakerImpl = new ModelBakery.ModelBakerImpl(textureGetter, modelDebugName); + ItemModel.BakingContext bakingContext = new ItemModel.BakingContext(modelBakerImpl, this.entityModelSet, itemModel); - public Map getBakedTopLevelModels() { - return this.bakedTopLevelModels; + try { + ItemModel itemModel2 = clientItem.model().bake(bakingContext); + map2.put(resourceLocation, itemModel2); + if (!clientItem.properties().equals(ClientItem.Properties.DEFAULT)) { + map3.put(resourceLocation, clientItem.properties()); + } + } catch (Exception var11) { + LOGGER.warn("Unable to bake item model: '{}'", resourceLocation, var11); + } + }); + return new ModelBakery.BakingResult(bakedModel, map, itemModel, map2, map3); } @Environment(EnvType.CLIENT) @@ -77,15 +102,32 @@ public class ModelBakery { } @Environment(EnvType.CLIENT) - class ModelBakerImpl implements ModelBaker { - private final Function modelTextureGetter; + public record BakingResult( + BakedModel missingModel, + Map blockStateModels, + ItemModel missingItemModel, + Map itemStackModels, + Map itemProperties + ) { + } - ModelBakerImpl(final ModelBakery.TextureGetter textureGetter, final ModelResourceLocation modelLocation) { - this.modelTextureGetter = material -> textureGetter.get(modelLocation, material); + @Environment(EnvType.CLIENT) + class ModelBakerImpl implements ModelBaker { + private final ModelDebugName rootName; + private final SpriteGetter modelTextureGetter; + + ModelBakerImpl(final ModelBakery.TextureGetter textureGetter, final ModelDebugName rootName) { + this.modelTextureGetter = textureGetter.bind(rootName); + this.rootName = rootName; + } + + @Override + public SpriteGetter sprites() { + return this.modelTextureGetter; } private UnbakedModel getModel(ResourceLocation name) { - UnbakedModel unbakedModel = (UnbakedModel)ModelBakery.this.unbakedModels.get(name); + UnbakedModel unbakedModel = (UnbakedModel)ModelBakery.this.unbakedPlainModels.get(name); if (unbakedModel == null) { ModelBakery.LOGGER.warn("Requested a model that was not discovered previously: {}", name); return ModelBakery.this.missingModel; @@ -102,22 +144,26 @@ public class ModelBakery { return bakedModel; } else { UnbakedModel unbakedModel = this.getModel(location); - BakedModel bakedModel2 = this.bakeUncached(unbakedModel, transform); + BakedModel bakedModel2 = UnbakedModel.bakeWithTopModelValues(unbakedModel, this, transform); ModelBakery.this.bakedCache.put(bakedCacheKey, bakedModel2); return bakedModel2; } } - BakedModel bakeUncached(UnbakedModel model, ModelState state) { - return model instanceof BlockModel blockModel && blockModel.getRootModel() == SpecialModels.GENERATED_MARKER - ? ModelBakery.ITEM_MODEL_GENERATOR.generateBlockModel(this.modelTextureGetter, blockModel).bake(this.modelTextureGetter, state, false) - : model.bake(this, this.modelTextureGetter, state); + @Override + public ModelDebugName rootName() { + return this.rootName; } } - @FunctionalInterface @Environment(EnvType.CLIENT) public interface TextureGetter { - TextureAtlasSprite get(ModelResourceLocation modelResourceLocation, Material material); + TextureAtlasSprite get(ModelDebugName name, Material material); + + TextureAtlasSprite reportMissingReference(ModelDebugName name, String reference); + + default SpriteGetter bind(ModelDebugName name) { + return new 1(this, name); + } } } diff --git a/net/minecraft/client/resources/model/ModelDebugName.java b/net/minecraft/client/resources/model/ModelDebugName.java new file mode 100644 index 00000000..8d134e08 --- /dev/null +++ b/net/minecraft/client/resources/model/ModelDebugName.java @@ -0,0 +1,10 @@ +package net.minecraft.client.resources.model; + +import java.util.function.Supplier; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@FunctionalInterface +@Environment(EnvType.CLIENT) +public interface ModelDebugName extends Supplier { +} diff --git a/net/minecraft/client/resources/model/ModelDiscovery.java b/net/minecraft/client/resources/model/ModelDiscovery.java index 8a54e4cd..5e2a5b14 100644 --- a/net/minecraft/client/resources/model/ModelDiscovery.java +++ b/net/minecraft/client/resources/model/ModelDiscovery.java @@ -1,5 +1,6 @@ package net.minecraft.client.resources.model; +import com.google.common.collect.Sets; import com.mojang.logging.LogUtils; import java.util.ArrayList; import java.util.HashMap; @@ -7,94 +8,47 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.UnaryOperator; import java.util.stream.Collectors; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.core.component.DataComponents; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.client.renderer.block.model.ItemModelGenerator; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.BundleItem; -import net.minecraft.world.item.Item; import org.slf4j.Logger; @Environment(EnvType.CLIENT) public class ModelDiscovery { static final Logger LOGGER = LogUtils.getLogger(); - public static final String INVENTORY_MODEL_PREFIX = "item/"; private final Map inputModels; final UnbakedModel missingModel; - private final Map topModels = new HashMap(); + private final List topModels = new ArrayList(); private final Map referencedModels = new HashMap(); public ModelDiscovery(Map inputModels, UnbakedModel missingModel) { this.inputModels = inputModels; this.missingModel = missingModel; - this.registerTopModel(MissingBlockModel.VARIANT, missingModel); this.referencedModels.put(MissingBlockModel.LOCATION, missingModel); } - private static Set listMandatoryModels() { - Set set = new HashSet(); - BuiltInRegistries.ITEM.listElements().forEach(reference -> { - ResourceLocation resourceLocation = ((Item)reference.value()).components().get(DataComponents.ITEM_MODEL); - if (resourceLocation != null) { - set.add(ModelResourceLocation.inventory(resourceLocation)); - } - - if (reference.value() instanceof BundleItem bundleItem) { - set.add(ModelResourceLocation.inventory(bundleItem.openFrontModel())); - set.add(ModelResourceLocation.inventory(bundleItem.openBackModel())); - } - }); - set.add(ItemRenderer.TRIDENT_MODEL); - set.add(ItemRenderer.SPYGLASS_MODEL); - return set; + public void registerSpecialModels() { + this.referencedModels.put(ItemModelGenerator.GENERATED_ITEM_MODEL_ID, new ItemModelGenerator()); } - private void registerTopModel(ModelResourceLocation id, UnbakedModel model) { - this.topModels.put(id, model); - } - - public void registerStandardModels(BlockStateModelLoader.LoadedModels loadedModels) { - this.referencedModels.put(SpecialModels.BUILTIN_GENERATED, SpecialModels.GENERATED_MARKER); - this.referencedModels.put(SpecialModels.BUILTIN_BLOCK_ENTITY, SpecialModels.BLOCK_ENTITY_MARKER); - Set set = listMandatoryModels(); - loadedModels.models().forEach((modelResourceLocation, loadedModel) -> { - this.registerTopModel(modelResourceLocation, loadedModel.model()); - set.remove(modelResourceLocation); - }); - this.inputModels - .keySet() - .forEach( - resourceLocation -> { - if (resourceLocation.getPath().startsWith("item/")) { - ModelResourceLocation modelResourceLocation = ModelResourceLocation.inventory( - resourceLocation.withPath((UnaryOperator)(string -> string.substring("item/".length()))) - ); - this.registerTopModel(modelResourceLocation, new ItemModel(resourceLocation)); - set.remove(modelResourceLocation); - } - } - ); - if (!set.isEmpty()) { - LOGGER.warn("Missing mandatory models: {}", set.stream().map(modelResourceLocation -> "\n\t" + modelResourceLocation).collect(Collectors.joining())); - } + public void addRoot(ResolvableModel model) { + this.topModels.add(model); } public void discoverDependencies() { - this.topModels.values().forEach(unbakedModel -> unbakedModel.resolveDependencies(new ModelDiscovery.ResolverImpl())); - } - - public Map getTopModels() { - return this.topModels; + this.topModels.forEach(resolvableModel -> resolvableModel.resolveDependencies(new ModelDiscovery.ResolverImpl())); } public Map getReferencedModels() { return this.referencedModels; } + public Set getUnreferencedModels() { + return Sets.difference(this.inputModels.keySet(), this.referencedModels.keySet()); + } + UnbakedModel getBlockModel(ResourceLocation modelLocation) { return (UnbakedModel)this.referencedModels.computeIfAbsent(modelLocation, this::loadBlockModel); } @@ -110,21 +64,21 @@ public class ModelDiscovery { } @Environment(EnvType.CLIENT) - class ResolverImpl implements UnbakedModel.Resolver { + class ResolverImpl implements ResolvableModel.Resolver { private final List stack = new ArrayList(); private final Set resolvedModels = new HashSet(); @Override - public UnbakedModel resolve(ResourceLocation modelLocation) { - if (this.stack.contains(modelLocation)) { - ModelDiscovery.LOGGER.warn("Detected model loading loop: {}->{}", this.stacktraceToString(), modelLocation); + public UnbakedModel resolve(ResourceLocation model) { + if (this.stack.contains(model)) { + ModelDiscovery.LOGGER.warn("Detected model loading loop: {}->{}", this.stacktraceToString(), model); return ModelDiscovery.this.missingModel; } else { - UnbakedModel unbakedModel = ModelDiscovery.this.getBlockModel(modelLocation); - if (this.resolvedModels.add(modelLocation)) { - this.stack.add(modelLocation); + UnbakedModel unbakedModel = ModelDiscovery.this.getBlockModel(model); + if (this.resolvedModels.add(model)) { + this.stack.add(model); unbakedModel.resolveDependencies(this); - this.stack.remove(modelLocation); + this.stack.remove(model); } return unbakedModel; diff --git a/net/minecraft/client/resources/model/ModelGroupCollector.java b/net/minecraft/client/resources/model/ModelGroupCollector.java index ab196c8a..4cf8829c 100644 --- a/net/minecraft/client/resources/model/ModelGroupCollector.java +++ b/net/minecraft/client/resources/model/ModelGroupCollector.java @@ -61,9 +61,9 @@ public class ModelGroupCollector { @Environment(EnvType.CLIENT) record GroupKey(Object equalityGroup, List coloringValues) { - public static ModelGroupCollector.GroupKey create(BlockState state, UnbakedModel model, List> properties) { + public static ModelGroupCollector.GroupKey create(BlockState state, UnbakedBlockStateModel model, List> properties) { List list = getColoringValues(state, properties); - Object object = model instanceof UnbakedBlockStateModel unbakedBlockStateModel ? unbakedBlockStateModel.visualEqualityGroup(state) : model; + Object object = model.visualEqualityGroup(state); return new ModelGroupCollector.GroupKey(object, list); } diff --git a/net/minecraft/client/resources/model/ModelManager.java b/net/minecraft/client/resources/model/ModelManager.java index ce9a33f5..01f0899a 100644 --- a/net/minecraft/client/resources/model/ModelManager.java +++ b/net/minecraft/client/resources/model/ModelManager.java @@ -2,31 +2,34 @@ package net.minecraft.client.resources.model; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.google.gson.JsonObject; import com.mojang.datafixers.util.Pair; import com.mojang.logging.LogUtils; import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; import java.io.Reader; import java.util.ArrayList; -import java.util.HashMap; import java.util.IdentityHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.Map.Entry; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; -import java.util.function.Function; +import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.renderer.SpecialBlockModelRenderer; import net.minecraft.client.renderer.block.BlockModelShaper; import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.BlockModelDefinition; +import net.minecraft.client.renderer.item.ClientItem; +import net.minecraft.client.renderer.item.ItemModel; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; @@ -37,19 +40,17 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.util.GsonHelper; +import net.minecraft.server.packs.resources.PreparableReloadListener.PreparationBarrier; import net.minecraft.util.profiling.Profiler; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.material.FluidState; import org.slf4j.Logger; @Environment(EnvType.CLIENT) public class ModelManager implements PreparableReloadListener, AutoCloseable { private static final Logger LOGGER = LogUtils.getLogger(); - private static final FileToIdConverter BLOCKSTATE_LISTER = FileToIdConverter.json("blockstates"); private static final FileToIdConverter MODEL_LISTER = FileToIdConverter.json("models"); private static final Map VANILLA_ATLASES = Map.of( Sheets.BANNER_SHEET, @@ -71,13 +72,18 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { TextureAtlas.LOCATION_BLOCKS, ResourceLocation.withDefaultNamespace("blocks") ); - private Map bakedRegistry; + private Map bakedBlockStateModels = Map.of(); + private Map bakedItemStackModels = Map.of(); + private Map itemProperties = Map.of(); private final AtlasSet atlases; private final BlockModelShaper blockModelShaper; private final BlockColors blockColors; + private EntityModelSet entityModelSet = EntityModelSet.EMPTY; + private SpecialBlockModelRenderer specialBlockModelRenderer = SpecialBlockModelRenderer.EMPTY; private int maxMipmapLevels; private BakedModel missingModel; - private Object2IntMap modelGroups; + private ItemModel missingItemModel; + private Object2IntMap modelGroups = Object2IntMaps.emptyMap(); public ModelManager(TextureManager textureManager, BlockColors blockColors, int maxMipmapLevels) { this.blockColors = blockColors; @@ -87,44 +93,74 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { } public BakedModel getModel(ModelResourceLocation modelLocation) { - return (BakedModel)this.bakedRegistry.getOrDefault(modelLocation, this.missingModel); + return (BakedModel)this.bakedBlockStateModels.getOrDefault(modelLocation, this.missingModel); } public BakedModel getMissingModel() { return this.missingModel; } + public ItemModel getItemModel(ResourceLocation modelLocation) { + return (ItemModel)this.bakedItemStackModels.getOrDefault(modelLocation, this.missingItemModel); + } + + public ClientItem.Properties getItemProperties(ResourceLocation itemId) { + return (ClientItem.Properties)this.itemProperties.getOrDefault(itemId, ClientItem.Properties.DEFAULT); + } + public BlockModelShaper getBlockModelShaper() { return this.blockModelShaper; } @Override - public final CompletableFuture reload( - PreparableReloadListener.PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor - ) { + public final CompletableFuture reload(PreparationBarrier barrier, ResourceManager manager, Executor backgroundExecutor, Executor gameExecutor) { UnbakedModel unbakedModel = MissingBlockModel.missingModel(); - BlockStateModelLoader blockStateModelLoader = new BlockStateModelLoader(unbakedModel); - CompletableFuture> completableFuture = loadBlockModels(manager, backgroundExecutor); - CompletableFuture completableFuture2 = loadBlockStates(blockStateModelLoader, manager, backgroundExecutor); - CompletableFuture completableFuture3 = completableFuture2.thenCombineAsync( - completableFuture, (loadedModels, mapx) -> this.discoverModelDependencies(unbakedModel, mapx, loadedModels), backgroundExecutor - ); - CompletableFuture> completableFuture4 = completableFuture2.thenApplyAsync( + CompletableFuture completableFuture = CompletableFuture.supplyAsync(EntityModelSet::vanilla, backgroundExecutor); + CompletableFuture completableFuture2 = completableFuture.thenApplyAsync(SpecialBlockModelRenderer::vanilla, backgroundExecutor); + CompletableFuture> completableFuture3 = loadBlockModels(manager, backgroundExecutor); + CompletableFuture completableFuture4 = BlockStateModelLoader.loadBlockStates(unbakedModel, manager, backgroundExecutor); + CompletableFuture completableFuture5 = ClientItemInfoLoader.scheduleLoad(manager, backgroundExecutor); + CompletableFuture completableFuture6 = CompletableFuture.allOf(completableFuture3, completableFuture4, completableFuture5) + .thenApplyAsync( + void_ -> discoverModelDependencies( + unbakedModel, + (Map)completableFuture3.join(), + (BlockStateModelLoader.LoadedModels)completableFuture4.join(), + (ClientItemInfoLoader.LoadedClientInfos)completableFuture5.join() + ), + backgroundExecutor + ); + CompletableFuture> completableFuture7 = completableFuture4.thenApplyAsync( loadedModels -> buildModelGroups(this.blockColors, loadedModels), backgroundExecutor ); Map> map = this.atlases.scheduleLoad(manager, this.maxMipmapLevels, backgroundExecutor); return CompletableFuture.allOf( - (CompletableFuture[])Stream.concat(map.values().stream(), Stream.of(completableFuture3, completableFuture4)).toArray(CompletableFuture[]::new) + (CompletableFuture[])Stream.concat( + map.values().stream(), Stream.of(completableFuture6, completableFuture7, completableFuture4, completableFuture5, completableFuture, completableFuture2) + ) + .toArray(CompletableFuture[]::new) ) .thenApplyAsync( void_ -> { Map map2 = (Map)map.entrySet() .stream() .collect(Collectors.toMap(Entry::getKey, entry -> (StitchResult)((CompletableFuture)entry.getValue()).join())); - ModelDiscovery modelDiscovery = (ModelDiscovery)completableFuture3.join(); - Object2IntMap object2IntMap = (Object2IntMap)completableFuture4.join(); - return this.loadModels( - Profiler.get(), map2, new ModelBakery(modelDiscovery.getTopModels(), modelDiscovery.getReferencedModels(), unbakedModel), object2IntMap + ModelDiscovery modelDiscovery = (ModelDiscovery)completableFuture6.join(); + Object2IntMap object2IntMap = (Object2IntMap)completableFuture7.join(); + Set set = modelDiscovery.getUnreferencedModels(); + if (!set.isEmpty()) { + LOGGER.debug("Unreferenced models: \n{}", set.stream().sorted().map(resourceLocation -> "\t" + resourceLocation + "\n").collect(Collectors.joining())); + } + + ModelBakery modelBakery = new ModelBakery( + (EntityModelSet)completableFuture.join(), + ((BlockStateModelLoader.LoadedModels)completableFuture4.join()).plainModels(), + ((ClientItemInfoLoader.LoadedClientInfos)completableFuture5.join()).contents(), + modelDiscovery.getReferencedModels(), + unbakedModel + ); + return loadModels( + Profiler.get(), map2, modelBakery, object2IntMap, (EntityModelSet)completableFuture.join(), (SpecialBlockModelRenderer)completableFuture2.join() ); }, backgroundExecutor @@ -147,11 +183,9 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { try { Reader reader = ((Resource)entry.getValue()).openAsReader(); - Pair var4x; + Pair var3; try { - BlockModel blockModel = BlockModel.fromStream(reader); - blockModel.name = resourceLocation.toString(); - var4x = Pair.of(resourceLocation, blockModel); + var3 = Pair.of(resourceLocation, BlockModel.fromStream(reader)); } catch (Throwable var6) { if (reader != null) { try { @@ -168,7 +202,7 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { reader.close(); } - return var4x; + return var3; } catch (Exception var7) { LOGGER.error("Failed to load model {}", entry.getKey(), var7); return null; @@ -182,129 +216,95 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { ); } - private ModelDiscovery discoverModelDependencies( - UnbakedModel missingModel, Map inputModels, BlockStateModelLoader.LoadedModels loadedModels + private static ModelDiscovery discoverModelDependencies( + UnbakedModel missingModel, + Map inputModels, + BlockStateModelLoader.LoadedModels loadedModels, + ClientItemInfoLoader.LoadedClientInfos loadedClientInfos ) { ModelDiscovery modelDiscovery = new ModelDiscovery(inputModels, missingModel); - modelDiscovery.registerStandardModels(loadedModels); + loadedModels.forResolving().forEach(modelDiscovery::addRoot); + loadedClientInfos.contents().values().forEach(clientItem -> modelDiscovery.addRoot(clientItem.model())); + modelDiscovery.registerSpecialModels(); modelDiscovery.discoverDependencies(); return modelDiscovery; } - private static CompletableFuture loadBlockStates( - BlockStateModelLoader modelLoader, ResourceManager resourceManager, Executor backgroundExecutor - ) { - Function> function = BlockStateModelLoader.definitionLocationToBlockMapper(); - return CompletableFuture.supplyAsync(() -> BLOCKSTATE_LISTER.listMatchingResourceStacks(resourceManager), backgroundExecutor).thenCompose(map -> { - List> list = new ArrayList(map.size()); - - for (Entry> entry : map.entrySet()) { - list.add(CompletableFuture.supplyAsync(() -> { - ResourceLocation resourceLocation = BLOCKSTATE_LISTER.fileToId((ResourceLocation)entry.getKey()); - StateDefinition stateDefinition = (StateDefinition)function.apply(resourceLocation); - if (stateDefinition == null) { - LOGGER.debug("Discovered unknown block state definition {}, ignoring", resourceLocation); - return null; - } else { - List listx = (List)entry.getValue(); - List list2 = new ArrayList(listx.size()); - - for (Resource resource : listx) { - try { - Reader reader = resource.openAsReader(); - - try { - JsonObject jsonObject = GsonHelper.parse(reader); - BlockModelDefinition blockModelDefinition = BlockModelDefinition.fromJsonElement(jsonObject); - list2.add(new BlockStateModelLoader.LoadedBlockModelDefinition(resource.sourcePackId(), blockModelDefinition)); - } catch (Throwable var14) { - if (reader != null) { - try { - reader.close(); - } catch (Throwable var13) { - var14.addSuppressed(var13); - } - } - - throw var14; - } - - if (reader != null) { - reader.close(); - } - } catch (Exception var15) { - LOGGER.error("Failed to load blockstate definition {} from pack {}", resourceLocation, resource.sourcePackId(), var15); - } - } - - try { - return modelLoader.loadBlockStateDefinitionStack(resourceLocation, stateDefinition, list2); - } catch (Exception var12) { - LOGGER.error("Failed to load blockstate definition {}", resourceLocation, var12); - return null; - } - } - }, backgroundExecutor)); - } - - return Util.sequence(list).thenApply(listx -> { - Map mapx = new HashMap(); - - for (BlockStateModelLoader.LoadedModels loadedModels : listx) { - if (loadedModels != null) { - mapx.putAll(loadedModels.models()); - } - } - - return new BlockStateModelLoader.LoadedModels(mapx); - }); - }); - } - - private ModelManager.ReloadState loadModels( - ProfilerFiller profiler, Map stitchResults, ModelBakery modelBakery, Object2IntMap modelGroups + private static ModelManager.ReloadState loadModels( + ProfilerFiller profiler, + Map atlasPreperations, + ModelBakery modelBakery, + Object2IntMap modelGroups, + EntityModelSet entityModelSet, + SpecialBlockModelRenderer specialBlockModelRenderer ) { profiler.push("baking"); - Multimap multimap = HashMultimap.create(); - modelBakery.bakeModels((modelResourceLocation, material) -> { - StitchResult stitchResult = (StitchResult)stitchResults.get(material.atlasLocation()); - TextureAtlasSprite textureAtlasSprite = stitchResult.getSprite(material.texture()); - if (textureAtlasSprite != null) { + final Multimap multimap = HashMultimap.create(); + final Multimap multimap2 = HashMultimap.create(); + final TextureAtlasSprite textureAtlasSprite = ((StitchResult)atlasPreperations.get(TextureAtlas.LOCATION_BLOCKS)).missing(); + ModelBakery.BakingResult bakingResult = modelBakery.bakeModels(new ModelBakery.TextureGetter() { + @Override + public TextureAtlasSprite get(ModelDebugName name, Material material) { + StitchResult stitchResult = (StitchResult)atlasPreperations.get(material.atlasLocation()); + TextureAtlasSprite textureAtlasSpritex = stitchResult.getSprite(material.texture()); + if (textureAtlasSpritex != null) { + return textureAtlasSpritex; + } else { + multimap.put((String)name.get(), material); + return stitchResult.missing(); + } + } + + @Override + public TextureAtlasSprite reportMissingReference(ModelDebugName name, String reference) { + multimap2.put((String)name.get(), reference); return textureAtlasSprite; - } else { - multimap.put(modelResourceLocation, material); - return stitchResult.missing(); } }); multimap.asMap() .forEach( - (modelResourceLocation, collection) -> LOGGER.warn( + (string, collection) -> LOGGER.warn( "Missing textures in model {}:\n{}", - modelResourceLocation, + string, collection.stream() .sorted(Material.COMPARATOR) .map(material -> " " + material.atlasLocation() + ":" + material.texture()) .collect(Collectors.joining("\n")) ) ); + multimap2.asMap() + .forEach( + (string, collection) -> LOGGER.warn( + "Missing texture references in model {}:\n{}", string, collection.stream().sorted().map(stringx -> " " + stringx).collect(Collectors.joining("\n")) + ) + ); profiler.popPush("dispatch"); - Map map = modelBakery.getBakedTopLevelModels(); - BakedModel bakedModel = (BakedModel)map.get(MissingBlockModel.VARIANT); - Map map2 = new IdentityHashMap(); + Map map = createBlockStateToModelDispatch(bakingResult.blockStateModels(), bakingResult.missingModel()); + CompletableFuture completableFuture = CompletableFuture.allOf( + (CompletableFuture[])atlasPreperations.values().stream().map(StitchResult::readyForUpload).toArray(CompletableFuture[]::new) + ); + profiler.pop(); + return new ModelManager.ReloadState(bakingResult, modelGroups, map, atlasPreperations, entityModelSet, specialBlockModelRenderer, completableFuture); + } + + private static Map createBlockStateToModelDispatch(Map blockStateModels, BakedModel missingModel) { + Map map = new IdentityHashMap(); for (Block block : BuiltInRegistries.BLOCK) { block.getStateDefinition().getPossibleStates().forEach(blockState -> { ResourceLocation resourceLocation = blockState.getBlock().builtInRegistryHolder().key().location(); - BakedModel bakedModel2 = (BakedModel)map.getOrDefault(BlockModelShaper.stateToModelLocation(resourceLocation, blockState), bakedModel); - map2.put(blockState, bakedModel2); + ModelResourceLocation modelResourceLocation = BlockModelShaper.stateToModelLocation(resourceLocation, blockState); + BakedModel bakedModel2 = (BakedModel)blockStateModels.get(modelResourceLocation); + if (bakedModel2 == null) { + LOGGER.warn("Missing model for variant: '{}'", modelResourceLocation); + map.putIfAbsent(blockState, missingModel); + } else { + map.put(blockState, bakedModel2); + } }); } - CompletableFuture completableFuture = CompletableFuture.allOf( - (CompletableFuture[])stitchResults.values().stream().map(StitchResult::readyForUpload).toArray(CompletableFuture[]::new) - ); - profiler.pop(); - return new ModelManager.ReloadState(modelBakery, modelGroups, bakedModel, map2, stitchResults, completableFuture); + return map; } private static Object2IntMap buildModelGroups(BlockColors blockColors, BlockStateModelLoader.LoadedModels loadedModels) { @@ -314,12 +314,17 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { private void apply(ModelManager.ReloadState reloadState, ProfilerFiller profiler) { profiler.push("upload"); reloadState.atlasPreparations.values().forEach(StitchResult::upload); - ModelBakery modelBakery = reloadState.modelBakery; - this.bakedRegistry = modelBakery.getBakedTopLevelModels(); + ModelBakery.BakingResult bakingResult = reloadState.bakedModels; + this.bakedBlockStateModels = bakingResult.blockStateModels(); + this.bakedItemStackModels = bakingResult.itemStackModels(); + this.itemProperties = bakingResult.itemProperties(); this.modelGroups = reloadState.modelGroups; - this.missingModel = reloadState.missingModel; + this.missingModel = bakingResult.missingModel(); + this.missingItemModel = bakingResult.missingItemModel(); profiler.popPush("cache"); this.blockModelShaper.replaceCache(reloadState.modelCache); + this.specialBlockModelRenderer = reloadState.specialBlockModelRenderer; + this.entityModelSet = reloadState.entityModelSet; profiler.pop(); } @@ -353,13 +358,22 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { this.maxMipmapLevels = level; } + public Supplier specialBlockModelRenderer() { + return () -> this.specialBlockModelRenderer; + } + + public Supplier entityModels() { + return () -> this.entityModelSet; + } + @Environment(EnvType.CLIENT) record ReloadState( - ModelBakery modelBakery, + ModelBakery.BakingResult bakedModels, Object2IntMap modelGroups, - BakedModel missingModel, Map modelCache, Map atlasPreparations, + EntityModelSet entityModelSet, + SpecialBlockModelRenderer specialBlockModelRenderer, CompletableFuture readyForUpload ) { } diff --git a/net/minecraft/client/resources/model/ModelResourceLocation.java b/net/minecraft/client/resources/model/ModelResourceLocation.java index 205611e6..35862ecb 100644 --- a/net/minecraft/client/resources/model/ModelResourceLocation.java +++ b/net/minecraft/client/resources/model/ModelResourceLocation.java @@ -7,18 +7,12 @@ import net.minecraft.resources.ResourceLocation; @Environment(EnvType.CLIENT) public record ModelResourceLocation(ResourceLocation id, String variant) { - public static final String INVENTORY_VARIANT = "inventory"; - public ModelResourceLocation(ResourceLocation id, String variant) { variant = lowercaseVariant(variant); this.id = id; this.variant = variant; } - public static ModelResourceLocation inventory(ResourceLocation id) { - return new ModelResourceLocation(id, "inventory"); - } - private static String lowercaseVariant(String variant) { return variant.toLowerCase(Locale.ROOT); } diff --git a/net/minecraft/client/resources/model/ResolvableModel.java b/net/minecraft/client/resources/model/ResolvableModel.java new file mode 100644 index 00000000..4e6f60dd --- /dev/null +++ b/net/minecraft/client/resources/model/ResolvableModel.java @@ -0,0 +1,15 @@ +package net.minecraft.client.resources.model; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.resources.ResourceLocation; + +@Environment(EnvType.CLIENT) +public interface ResolvableModel { + void resolveDependencies(ResolvableModel.Resolver resolver); + + @Environment(EnvType.CLIENT) + public interface Resolver { + UnbakedModel resolve(ResourceLocation model); + } +} diff --git a/net/minecraft/client/resources/model/SimpleBakedModel.java b/net/minecraft/client/resources/model/SimpleBakedModel.java index c3b4adfa..389c5c5e 100644 --- a/net/minecraft/client/resources/model/SimpleBakedModel.java +++ b/net/minecraft/client/resources/model/SimpleBakedModel.java @@ -8,8 +8,11 @@ import java.util.Map; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.BlockElement; +import net.minecraft.client.renderer.block.model.BlockElementFace; +import net.minecraft.client.renderer.block.model.FaceBakery; import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.block.model.TextureSlots; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -18,13 +21,14 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class SimpleBakedModel implements BakedModel { - protected final List unculledFaces; - protected final Map> culledFaces; - protected final boolean hasAmbientOcclusion; - protected final boolean isGui3d; - protected final boolean usesBlockLight; - protected final TextureAtlasSprite particleIcon; - protected final ItemTransforms transforms; + public static final String PARTICLE_TEXTURE_REFERENCE = "particle"; + private final List unculledFaces; + private final Map> culledFaces; + private final boolean hasAmbientOcclusion; + private final boolean isGui3d; + private final boolean usesBlockLight; + private final TextureAtlasSprite particleIcon; + private final ItemTransforms transforms; public SimpleBakedModel( List unculledFaces, @@ -44,6 +48,46 @@ public class SimpleBakedModel implements BakedModel { this.transforms = transforms; } + public static BakedModel bakeElements( + List elements, + TextureSlots textureSlots, + SpriteGetter spriteGetter, + ModelState modelState, + boolean hasAmbientOcclusion, + boolean useBlockLight, + boolean isGui3d, + ItemTransforms transforms + ) { + TextureAtlasSprite textureAtlasSprite = findSprite(spriteGetter, textureSlots, "particle"); + SimpleBakedModel.Builder builder = new SimpleBakedModel.Builder(hasAmbientOcclusion, useBlockLight, isGui3d, transforms).particle(textureAtlasSprite); + + for (BlockElement blockElement : elements) { + for (Direction direction : blockElement.faces.keySet()) { + BlockElementFace blockElementFace = (BlockElementFace)blockElement.faces.get(direction); + TextureAtlasSprite textureAtlasSprite2 = findSprite(spriteGetter, textureSlots, blockElementFace.texture()); + if (blockElementFace.cullForDirection() == null) { + builder.addUnculledFace(bakeFace(blockElement, blockElementFace, textureAtlasSprite2, direction, modelState)); + } else { + builder.addCulledFace( + Direction.rotate(modelState.getRotation().getMatrix(), blockElementFace.cullForDirection()), + bakeFace(blockElement, blockElementFace, textureAtlasSprite2, direction, modelState) + ); + } + } + } + + return builder.build(); + } + + private static BakedQuad bakeFace(BlockElement element, BlockElementFace face, TextureAtlasSprite sprite, Direction facing, ModelState transform) { + return FaceBakery.bakeQuad(element.from, element.to, face, sprite, facing, transform, element.rotation, element.shade, element.lightEmission); + } + + private static TextureAtlasSprite findSprite(SpriteGetter spriteGetter, TextureSlots textureSlots, String material) { + Material material2 = textureSlots.getMaterial(material); + return material2 != null ? spriteGetter.get(material2) : spriteGetter.reportMissingReference(material); + } + @Override public List getQuads(@Nullable BlockState state, @Nullable Direction direction, RandomSource random) { return direction == null ? this.unculledFaces : (List)this.culledFaces.get(direction); @@ -64,11 +108,6 @@ public class SimpleBakedModel implements BakedModel { return this.usesBlockLight; } - @Override - public boolean isCustomRenderer() { - return false; - } - @Override public TextureAtlasSprite getParticleIcon() { return this.particleIcon; @@ -90,15 +129,11 @@ public class SimpleBakedModel implements BakedModel { private final boolean isGui3d; private final ItemTransforms transforms; - public Builder(BlockModel model, boolean isGui3d) { - this(model.hasAmbientOcclusion(), model.getGuiLight().lightLikeBlock(), isGui3d, model.getTransforms()); - } - - private Builder(boolean hasAmbientOcclusion, boolean useBlockLight, boolean isGui3d, ItemTransforms trnsforms) { + public Builder(boolean hasAmbientOcclusion, boolean useBlockLight, boolean isGui3d, ItemTransforms transforms) { this.hasAmbientOcclusion = hasAmbientOcclusion; this.usesBlockLight = useBlockLight; this.isGui3d = isGui3d; - this.transforms = trnsforms; + this.transforms = transforms; for (Direction direction : Direction.values()) { this.culledFaces.put(direction, ImmutableList.builder()); diff --git a/net/minecraft/client/resources/model/SpecialModels.java b/net/minecraft/client/resources/model/SpecialModels.java deleted file mode 100644 index 426084f7..00000000 --- a/net/minecraft/client/resources/model/SpecialModels.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.minecraft.client.resources.model; - -import java.util.List; -import java.util.Map; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.resources.ResourceLocation; - -@Environment(EnvType.CLIENT) -public class SpecialModels { - public static final ResourceLocation BUILTIN_GENERATED = builtinModelId("generated"); - public static final ResourceLocation BUILTIN_BLOCK_ENTITY = builtinModelId("entity"); - public static final UnbakedModel GENERATED_MARKER = createMarker("generation marker", BlockModel.GuiLight.FRONT); - public static final UnbakedModel BLOCK_ENTITY_MARKER = createMarker("block entity marker", BlockModel.GuiLight.SIDE); - - public static ResourceLocation builtinModelId(String name) { - return ResourceLocation.withDefaultNamespace("builtin/" + name); - } - - private static UnbakedModel createMarker(String name, BlockModel.GuiLight guiLight) { - BlockModel blockModel = new BlockModel(null, List.of(), Map.of(), null, guiLight, ItemTransforms.NO_TRANSFORMS, List.of()); - blockModel.name = name; - return blockModel; - } -} diff --git a/net/minecraft/client/resources/model/SpriteGetter.java b/net/minecraft/client/resources/model/SpriteGetter.java new file mode 100644 index 00000000..fff29a4d --- /dev/null +++ b/net/minecraft/client/resources/model/SpriteGetter.java @@ -0,0 +1,12 @@ +package net.minecraft.client.resources.model; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; + +@Environment(EnvType.CLIENT) +public interface SpriteGetter { + TextureAtlasSprite get(Material material); + + TextureAtlasSprite reportMissingReference(String reference); +} diff --git a/net/minecraft/client/resources/model/UnbakedModel.java b/net/minecraft/client/resources/model/UnbakedModel.java index c68106ed..e1e1174c 100644 --- a/net/minecraft/client/resources/model/UnbakedModel.java +++ b/net/minecraft/client/resources/model/UnbakedModel.java @@ -1,19 +1,142 @@ package net.minecraft.client.resources.model; -import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.block.model.ItemTransform; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.block.model.TextureSlots; +import net.minecraft.world.item.ItemDisplayContext; +import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public interface UnbakedModel { - void resolveDependencies(UnbakedModel.Resolver resolver); +public interface UnbakedModel extends ResolvableModel { + boolean DEFAULT_AMBIENT_OCCLUSION = true; + UnbakedModel.GuiLight DEFAULT_GUI_LIGHT = UnbakedModel.GuiLight.SIDE; - BakedModel bake(ModelBaker baker, Function spriteGetter, ModelState state); + BakedModel bake( + TextureSlots textureSlots, ModelBaker baker, ModelState modelState, boolean hasAmbientOcclusion, boolean useBlockLight, ItemTransforms transforms + ); + + @Nullable + default Boolean getAmbientOcclusion() { + return null; + } + + @Nullable + default UnbakedModel.GuiLight getGuiLight() { + return null; + } + + @Nullable + default ItemTransforms getTransforms() { + return null; + } + + default TextureSlots.Data getTextureSlots() { + return TextureSlots.Data.EMPTY; + } + + @Nullable + default UnbakedModel getParent() { + return null; + } + + static BakedModel bakeWithTopModelValues(UnbakedModel model, ModelBaker baker, ModelState modelState) { + TextureSlots textureSlots = getTopTextureSlots(model, baker.rootName()); + boolean bl = getTopAmbientOcclusion(model); + boolean bl2 = getTopGuiLight(model).lightLikeBlock(); + ItemTransforms itemTransforms = getTopTransforms(model); + return model.bake(textureSlots, baker, modelState, bl, bl2, itemTransforms); + } + + static TextureSlots getTopTextureSlots(UnbakedModel model, ModelDebugName name) { + TextureSlots.Resolver resolver = new TextureSlots.Resolver(); + + while (model != null) { + resolver.addLast(model.getTextureSlots()); + model = model.getParent(); + } + + return resolver.resolve(name); + } + + static boolean getTopAmbientOcclusion(UnbakedModel model) { + while (model != null) { + Boolean boolean_ = model.getAmbientOcclusion(); + if (boolean_ != null) { + return boolean_; + } + + model = model.getParent(); + } + + return true; + } + + static UnbakedModel.GuiLight getTopGuiLight(UnbakedModel model) { + while (model != null) { + UnbakedModel.GuiLight guiLight = model.getGuiLight(); + if (guiLight != null) { + return guiLight; + } + + model = model.getParent(); + } + + return DEFAULT_GUI_LIGHT; + } + + static ItemTransform getTopTransform(UnbakedModel model, ItemDisplayContext displayContext) { + while (model != null) { + ItemTransforms itemTransforms = model.getTransforms(); + if (itemTransforms != null) { + ItemTransform itemTransform = itemTransforms.getTransform(displayContext); + if (itemTransform != ItemTransform.NO_TRANSFORM) { + return itemTransform; + } + } + + model = model.getParent(); + } + + return ItemTransform.NO_TRANSFORM; + } + + static ItemTransforms getTopTransforms(UnbakedModel unbakedModel) { + ItemTransform itemTransform = getTopTransform(unbakedModel, ItemDisplayContext.THIRD_PERSON_LEFT_HAND); + ItemTransform itemTransform2 = getTopTransform(unbakedModel, ItemDisplayContext.THIRD_PERSON_RIGHT_HAND); + ItemTransform itemTransform3 = getTopTransform(unbakedModel, ItemDisplayContext.FIRST_PERSON_LEFT_HAND); + ItemTransform itemTransform4 = getTopTransform(unbakedModel, ItemDisplayContext.FIRST_PERSON_RIGHT_HAND); + ItemTransform itemTransform5 = getTopTransform(unbakedModel, ItemDisplayContext.HEAD); + ItemTransform itemTransform6 = getTopTransform(unbakedModel, ItemDisplayContext.GUI); + ItemTransform itemTransform7 = getTopTransform(unbakedModel, ItemDisplayContext.GROUND); + ItemTransform itemTransform8 = getTopTransform(unbakedModel, ItemDisplayContext.FIXED); + return new ItemTransforms(itemTransform, itemTransform2, itemTransform3, itemTransform4, itemTransform5, itemTransform6, itemTransform7, itemTransform8); + } @Environment(EnvType.CLIENT) - public interface Resolver { - UnbakedModel resolve(ResourceLocation modelLocation); + public static enum GuiLight { + FRONT("front"), + SIDE("side"); + + private final String name; + + private GuiLight(final String name) { + this.name = name; + } + + public static UnbakedModel.GuiLight getByName(String name) { + for (UnbakedModel.GuiLight guiLight : values()) { + if (guiLight.name.equals(name)) { + return guiLight; + } + } + + throw new IllegalArgumentException("Invalid gui light: " + name); + } + + public boolean lightLikeBlock() { + return this == SIDE; + } } } diff --git a/net/minecraft/client/resources/server/DownloadedPackSource.java b/net/minecraft/client/resources/server/DownloadedPackSource.java index a704deb8..d2cabb0e 100644 --- a/net/minecraft/client/resources/server/DownloadedPackSource.java +++ b/net/minecraft/client/resources/server/DownloadedPackSource.java @@ -30,7 +30,7 @@ import net.minecraft.WorldVersion; import net.minecraft.client.Minecraft; import net.minecraft.client.User; import net.minecraft.client.gui.components.toasts.SystemToast; -import net.minecraft.client.main.GameConfig; +import net.minecraft.client.main.GameConfig.UserData; import net.minecraft.client.resources.server.PackLoadFeedback.FinalResult; import net.minecraft.client.resources.server.PackLoadFeedback.Update; import net.minecraft.client.resources.server.PackReloadConfig.Callbacks; @@ -39,18 +39,17 @@ import net.minecraft.client.resources.server.ServerPackManager.PackPromptStatus; import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.common.ServerboundResourcePackPacket; -import net.minecraft.network.protocol.common.ServerboundResourcePackPacket.Action; import net.minecraft.server.packs.DownloadQueue; +import net.minecraft.server.packs.FilePackResources; import net.minecraft.server.packs.PackLocationInfo; import net.minecraft.server.packs.PackSelectionConfig; import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.FilePackResources.FileResourcesSupplier; +import net.minecraft.server.packs.DownloadQueue.BatchConfig; +import net.minecraft.server.packs.DownloadQueue.BatchResult; +import net.minecraft.server.packs.DownloadQueue.DownloadRequest; import net.minecraft.server.packs.repository.Pack; import net.minecraft.server.packs.repository.PackSource; import net.minecraft.server.packs.repository.RepositorySource; -import net.minecraft.server.packs.repository.Pack.Metadata; -import net.minecraft.server.packs.repository.Pack.Position; -import net.minecraft.server.packs.repository.Pack.ResourcesSupplier; import net.minecraft.util.HttpUtil.DownloadProgressListener; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -61,7 +60,7 @@ public class DownloadedPackSource implements AutoCloseable { private static final Pattern SHA1 = Pattern.compile("^[a-fA-F0-9]{40}$"); static final Logger LOGGER = LogUtils.getLogger(); private static final RepositorySource EMPTY_SOURCE = consumer -> {}; - private static final PackSelectionConfig DOWNLOADED_PACK_SELECTION = new PackSelectionConfig(true, Position.TOP, true); + private static final PackSelectionConfig DOWNLOADED_PACK_SELECTION = new PackSelectionConfig(true, Pack.Position.TOP, true); private static final PackLoadFeedback LOG_ONLY_FEEDBACK = new PackLoadFeedback() { @Override public void reportUpdate(UUID id, Update update) { @@ -83,7 +82,7 @@ public class DownloadedPackSource implements AutoCloseable { PackLoadFeedback packFeedback = LOG_ONLY_FEEDBACK; private int packIdSerialNumber; - public DownloadedPackSource(Minecraft minecraft, Path directory, GameConfig.UserData userData) { + public DownloadedPackSource(Minecraft minecraft, Path directory, UserData userData) { this.minecraft = minecraft; try { @@ -117,7 +116,8 @@ public class DownloadedPackSource implements AutoCloseable { private OptionalLong totalBytes = OptionalLong.empty(); private void updateToast() { - SystemToast.addOrUpdate(DownloadedPackSource.this.minecraft.getToastManager(), this.toastId, this.title, this.message); + DownloadedPackSource.this.minecraft + .execute(() -> SystemToast.addOrUpdate(DownloadedPackSource.this.minecraft.getToastManager(), this.toastId, this.title, this.message)); } private void updateProgress(long progress) { @@ -197,11 +197,9 @@ public class DownloadedPackSource implements AutoCloseable { } @Override - public void download(Map packs, Consumer resultConsumer) { + public void download(Map packs, Consumer resultConsumer) { downloadQueue.downloadBatch( - new DownloadQueue.BatchConfig( - CACHE_HASHING_FUNCTION, 262144000, this.createDownloadHeaders(), proxy, DownloadedPackSource.this.createDownloadNotifier(packs.size()) - ), + new BatchConfig(CACHE_HASHING_FUNCTION, 262144000, this.createDownloadHeaders(), proxy, DownloadedPackSource.this.createDownloadNotifier(packs.size())), packs ) .thenAcceptAsync(resultConsumer, executor); @@ -245,9 +243,9 @@ public class DownloadedPackSource implements AutoCloseable { String string = String.format(Locale.ROOT, "server/%08X/%s", this.packIdSerialNumber++, idAndPath.id()); Path path = idAndPath.path(); PackLocationInfo packLocationInfo = new PackLocationInfo(string, SERVER_NAME, this.packType, Optional.empty()); - ResourcesSupplier resourcesSupplier = new FileResourcesSupplier(path); + Pack.ResourcesSupplier resourcesSupplier = new FilePackResources.FileResourcesSupplier(path); int i = SharedConstants.getCurrentVersion().getPackVersion(PackType.CLIENT_RESOURCES); - Metadata metadata = Pack.readPackMetadata(packLocationInfo, resourcesSupplier, i); + Pack.Metadata metadata = Pack.readPackMetadata(packLocationInfo, resourcesSupplier, i); if (metadata == null) { LOGGER.warn("Invalid pack metadata in {}, ignoring all", path); return null; @@ -341,9 +339,9 @@ public class DownloadedPackSource implements AutoCloseable { public void reportUpdate(UUID id, Update update) { DownloadedPackSource.LOGGER.debug("Pack {} changed status to {}", id, update); - Action action = switch (update) { - case ACCEPTED -> Action.ACCEPTED; - case DOWNLOADED -> Action.DOWNLOADED; + ServerboundResourcePackPacket.Action action = switch (update) { + case ACCEPTED -> ServerboundResourcePackPacket.Action.ACCEPTED; + case DOWNLOADED -> ServerboundResourcePackPacket.Action.DOWNLOADED; }; connection.send(new ServerboundResourcePackPacket(id, action)); } @@ -352,12 +350,12 @@ public class DownloadedPackSource implements AutoCloseable { public void reportFinalResult(UUID id, FinalResult result) { DownloadedPackSource.LOGGER.debug("Pack {} changed status to {}", id, result); - Action action = switch (result) { - case APPLIED -> Action.SUCCESSFULLY_LOADED; - case DOWNLOAD_FAILED -> Action.FAILED_DOWNLOAD; - case DECLINED -> Action.DECLINED; - case DISCARDED -> Action.DISCARDED; - case ACTIVATION_FAILED -> Action.FAILED_RELOAD; + ServerboundResourcePackPacket.Action action = switch (result) { + case APPLIED -> ServerboundResourcePackPacket.Action.SUCCESSFULLY_LOADED; + case DOWNLOAD_FAILED -> ServerboundResourcePackPacket.Action.FAILED_DOWNLOAD; + case DECLINED -> ServerboundResourcePackPacket.Action.DECLINED; + case DISCARDED -> ServerboundResourcePackPacket.Action.DISCARDED; + case ACTIVATION_FAILED -> ServerboundResourcePackPacket.Action.FAILED_RELOAD; }; connection.send(new ServerboundResourcePackPacket(id, action)); } diff --git a/net/minecraft/client/server/IntegratedServer.java b/net/minecraft/client/server/IntegratedServer.java index 72d26963..42e00d4d 100644 --- a/net/minecraft/client/server/IntegratedServer.java +++ b/net/minecraft/client/server/IntegratedServer.java @@ -30,7 +30,7 @@ import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.GameType; import net.minecraft.world.level.chunk.storage.RegionStorageInfo; -import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -52,7 +52,7 @@ public class IntegratedServer extends MinecraftServer { public IntegratedServer( Thread serverThread, Minecraft minecraft, - LevelStorageSource.LevelStorageAccess storageSource, + LevelStorageAccess storageSource, PackRepository packRepository, WorldStem worldStem, Services services, diff --git a/net/minecraft/client/sounds/MusicInfo.java b/net/minecraft/client/sounds/MusicInfo.java new file mode 100644 index 00000000..9bf25e40 --- /dev/null +++ b/net/minecraft/client/sounds/MusicInfo.java @@ -0,0 +1,18 @@ +package net.minecraft.client.sounds; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.sounds.Music; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public record MusicInfo(@Nullable Music music, float volume) { + public MusicInfo(Music music) { + this(music, 1.0F); + } + + public boolean canReplace(SoundInstance soundInstance) { + return this.music == null ? false : this.music.replaceCurrentMusic() && !this.music.getEvent().value().location().equals(soundInstance.getLocation()); + } +} diff --git a/net/minecraft/client/sounds/MusicManager.java b/net/minecraft/client/sounds/MusicManager.java index 7da2a7a4..9379587c 100644 --- a/net/minecraft/client/sounds/MusicManager.java +++ b/net/minecraft/client/sounds/MusicManager.java @@ -23,6 +23,7 @@ public class MusicManager { private final Minecraft minecraft; @Nullable private SoundInstance currentMusic; + private float currentGain = 1.0F; /** * The delay until the next song starts. */ @@ -36,37 +37,47 @@ public class MusicManager { * Called every tick to manage the playing of music. */ public void tick() { - Music music = this.minecraft.getSituationalMusic(); - if (this.currentMusic != null) { - if (!music.getEvent().value().location().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) { - this.minecraft.getSoundManager().stop(this.currentMusic); - this.nextSongDelay = Mth.nextInt(this.random, 0, music.getMinDelay() / 2); - } - - if (!this.minecraft.getSoundManager().isActive(this.currentMusic)) { - this.currentMusic = null; - this.nextSongDelay = Math.min(this.nextSongDelay, Mth.nextInt(this.random, music.getMinDelay(), music.getMaxDelay())); + MusicInfo musicInfo = this.minecraft.getSituationalMusic(); + float f = musicInfo.volume(); + if (this.currentMusic != null && this.currentGain != f) { + boolean bl = this.fadePlaying(f); + if (!bl) { + return; } } - this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay()); - if (this.currentMusic == null && this.nextSongDelay-- <= 0) { - this.startPlaying(music); + Music music = musicInfo.music(); + if (music == null) { + this.nextSongDelay = Math.max(this.nextSongDelay, 100); + } else { + if (this.currentMusic != null) { + if (musicInfo.canReplace(this.currentMusic)) { + this.minecraft.getSoundManager().stop(this.currentMusic); + this.nextSongDelay = Mth.nextInt(this.random, 0, music.getMinDelay() / 2); + } + + if (!this.minecraft.getSoundManager().isActive(this.currentMusic)) { + this.currentMusic = null; + this.nextSongDelay = Math.min(this.nextSongDelay, Mth.nextInt(this.random, music.getMinDelay(), music.getMaxDelay())); + } + } + + this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay()); + if (this.currentMusic == null && this.nextSongDelay-- <= 0) { + this.startPlaying(musicInfo); + } } } - /** - * Starts playing the specified {@linkplain Music} selector. - * - * @param selector the {@linkplain Music} selector to play - */ - public void startPlaying(Music selector) { - this.currentMusic = SimpleSoundInstance.forMusic(selector.getEvent().value()); + public void startPlaying(MusicInfo music) { + this.currentMusic = SimpleSoundInstance.forMusic(music.music().getEvent().value()); if (this.currentMusic.getSound() != SoundManager.EMPTY_SOUND) { this.minecraft.getSoundManager().play(this.currentMusic); + this.minecraft.getSoundManager().setVolume(this.currentMusic, music.volume()); } this.nextSongDelay = Integer.MAX_VALUE; + this.currentGain = music.volume(); } /** @@ -92,6 +103,35 @@ public class MusicManager { this.nextSongDelay += 100; } + private boolean fadePlaying(float volume) { + if (this.currentMusic == null) { + return false; + } else if (this.currentGain == volume) { + return true; + } else { + if (this.currentGain < volume) { + this.currentGain = this.currentGain + Mth.clamp(this.currentGain, 5.0E-4F, 0.005F); + if (this.currentGain > volume) { + this.currentGain = volume; + } + } else { + this.currentGain = 0.03F * volume + 0.97F * this.currentGain; + if (Math.abs(this.currentGain - volume) < 1.0E-4F || this.currentGain < volume) { + this.currentGain = volume; + } + } + + this.currentGain = Mth.clamp(this.currentGain, 0.0F, 1.0F); + if (this.currentGain <= 1.0E-4F) { + this.stopPlaying(); + return false; + } else { + this.minecraft.getSoundManager().setVolume(this.currentMusic, this.currentGain); + return true; + } + } + } + /** * {@return {@code true} if the {@linkplain Music} selector is currently playing, {@code false} otherwise} * diff --git a/net/minecraft/client/sounds/SoundEngine.java b/net/minecraft/client/sounds/SoundEngine.java index 351a7ddc..f714b64f 100644 --- a/net/minecraft/client/sounds/SoundEngine.java +++ b/net/minecraft/client/sounds/SoundEngine.java @@ -231,6 +231,15 @@ public class SoundEngine { } } + public void setVolume(SoundInstance soundInstance, float volume) { + if (this.loaded) { + ChannelHandle channelHandle = (ChannelHandle)this.instanceToChannel.get(soundInstance); + if (channelHandle != null) { + channelHandle.execute(channel -> channel.setVolume(volume * this.calculateVolume(soundInstance))); + } + } + } + /** * Stops all currently playing sounds */ diff --git a/net/minecraft/client/sounds/SoundManager.java b/net/minecraft/client/sounds/SoundManager.java index ac6def1d..e8712cff 100644 --- a/net/minecraft/client/sounds/SoundManager.java +++ b/net/minecraft/client/sounds/SoundManager.java @@ -29,6 +29,7 @@ import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; +import net.minecraft.network.chat.Component.SerializerAdapter; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; @@ -58,7 +59,7 @@ public class SoundManager extends SimplePreparableReloadListener> SOUND_EVENT_REGISTRATION_TYPE = new TypeToken>() {}; @@ -287,6 +288,10 @@ public class SoundManager extends SimplePreparableReloadListener= 1200 && this.toast == null) { - this.toast = new TutorialToast(TutorialToast.Icons.WOODEN_PLANKS, CRAFT_TITLE, CRAFT_DESCRIPTION, false); - this.tutorial.getMinecraft().getToastManager().addToast(this.toast); + this.toast = new TutorialToast(minecraft.font, TutorialToast.Icons.WOODEN_PLANKS, CRAFT_TITLE, CRAFT_DESCRIPTION, false); + minecraft.getToastManager().addToast(this.toast); } } } diff --git a/net/minecraft/client/tutorial/FindTreeTutorialStepInstance.java b/net/minecraft/client/tutorial/FindTreeTutorialStepInstance.java index 0d29a73a..936db5a7 100644 --- a/net/minecraft/client/tutorial/FindTreeTutorialStepInstance.java +++ b/net/minecraft/client/tutorial/FindTreeTutorialStepInstance.java @@ -2,6 +2,7 @@ package net.minecraft.client.tutorial; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.toasts.TutorialToast; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; @@ -39,8 +40,9 @@ public class FindTreeTutorialStepInstance implements TutorialStepInstance { if (!this.tutorial.isSurvival()) { this.tutorial.setStep(TutorialSteps.NONE); } else { + Minecraft minecraft = this.tutorial.getMinecraft(); if (this.timeWaiting == 1) { - LocalPlayer localPlayer = this.tutorial.getMinecraft().player; + LocalPlayer localPlayer = minecraft.player; if (localPlayer != null && (hasCollectedTreeItems(localPlayer) || hasPunchedTreesPreviously(localPlayer))) { this.tutorial.setStep(TutorialSteps.CRAFT_PLANKS); return; @@ -48,8 +50,8 @@ public class FindTreeTutorialStepInstance implements TutorialStepInstance { } if (this.timeWaiting >= 6000 && this.toast == null) { - this.toast = new TutorialToast(TutorialToast.Icons.TREE, TITLE, DESCRIPTION, false); - this.tutorial.getMinecraft().getToastManager().addToast(this.toast); + this.toast = new TutorialToast(minecraft.font, TutorialToast.Icons.TREE, TITLE, DESCRIPTION, false); + minecraft.getToastManager().addToast(this.toast); } } } diff --git a/net/minecraft/client/tutorial/MovementTutorialStepInstance.java b/net/minecraft/client/tutorial/MovementTutorialStepInstance.java index 0dabaff3..cf0d656b 100644 --- a/net/minecraft/client/tutorial/MovementTutorialStepInstance.java +++ b/net/minecraft/client/tutorial/MovementTutorialStepInstance.java @@ -2,6 +2,7 @@ package net.minecraft.client.tutorial; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.toasts.TutorialToast; import net.minecraft.client.player.ClientInput; import net.minecraft.network.chat.Component; @@ -85,12 +86,13 @@ public class MovementTutorialStepInstance implements TutorialStepInstance { } if (this.timeWaiting >= 100) { + Minecraft minecraft = this.tutorial.getMinecraft(); if (this.moveCompleted == -1 && this.moveToast == null) { - this.moveToast = new TutorialToast(TutorialToast.Icons.MOVEMENT_KEYS, MOVE_TITLE, MOVE_DESCRIPTION, true); - this.tutorial.getMinecraft().getToastManager().addToast(this.moveToast); + this.moveToast = new TutorialToast(minecraft.font, TutorialToast.Icons.MOVEMENT_KEYS, MOVE_TITLE, MOVE_DESCRIPTION, true); + minecraft.getToastManager().addToast(this.moveToast); } else if (this.moveCompleted != -1 && this.timeWaiting - this.moveCompleted >= 20 && this.lookCompleted == -1 && this.lookToast == null) { - this.lookToast = new TutorialToast(TutorialToast.Icons.MOUSE, LOOK_TITLE, LOOK_DESCRIPTION, true); - this.tutorial.getMinecraft().getToastManager().addToast(this.lookToast); + this.lookToast = new TutorialToast(minecraft.font, TutorialToast.Icons.MOUSE, LOOK_TITLE, LOOK_DESCRIPTION, true); + minecraft.getToastManager().addToast(this.lookToast); } } } diff --git a/net/minecraft/client/tutorial/OpenInventoryTutorialStep.java b/net/minecraft/client/tutorial/OpenInventoryTutorialStep.java index ba4ddffe..5be1688d 100644 --- a/net/minecraft/client/tutorial/OpenInventoryTutorialStep.java +++ b/net/minecraft/client/tutorial/OpenInventoryTutorialStep.java @@ -2,6 +2,7 @@ package net.minecraft.client.tutorial; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.toasts.TutorialToast; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; @@ -27,8 +28,9 @@ public class OpenInventoryTutorialStep implements TutorialStepInstance { this.tutorial.setStep(TutorialSteps.NONE); } else { if (this.timeWaiting >= 600 && this.toast == null) { - this.toast = new TutorialToast(TutorialToast.Icons.RECIPE_BOOK, TITLE, DESCRIPTION, false); - this.tutorial.getMinecraft().getToastManager().addToast(this.toast); + Minecraft minecraft = this.tutorial.getMinecraft(); + this.toast = new TutorialToast(minecraft.font, TutorialToast.Icons.RECIPE_BOOK, TITLE, DESCRIPTION, false); + minecraft.getToastManager().addToast(this.toast); } } } diff --git a/net/minecraft/client/tutorial/PunchTreeTutorialStepInstance.java b/net/minecraft/client/tutorial/PunchTreeTutorialStepInstance.java index bf164e58..b64e9829 100644 --- a/net/minecraft/client/tutorial/PunchTreeTutorialStepInstance.java +++ b/net/minecraft/client/tutorial/PunchTreeTutorialStepInstance.java @@ -2,6 +2,7 @@ package net.minecraft.client.tutorial; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.toasts.TutorialToast; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; @@ -34,8 +35,9 @@ public class PunchTreeTutorialStepInstance implements TutorialStepInstance { if (!this.tutorial.isSurvival()) { this.tutorial.setStep(TutorialSteps.NONE); } else { + Minecraft minecraft = this.tutorial.getMinecraft(); if (this.timeWaiting == 1) { - LocalPlayer localPlayer = this.tutorial.getMinecraft().player; + LocalPlayer localPlayer = minecraft.player; if (localPlayer != null) { if (localPlayer.getInventory().contains(ItemTags.LOGS)) { this.tutorial.setStep(TutorialSteps.CRAFT_PLANKS); @@ -50,8 +52,8 @@ public class PunchTreeTutorialStepInstance implements TutorialStepInstance { } if ((this.timeWaiting >= 600 || this.resetCount > 3) && this.toast == null) { - this.toast = new TutorialToast(TutorialToast.Icons.TREE, TITLE, DESCRIPTION, true); - this.tutorial.getMinecraft().getToastManager().addToast(this.toast); + this.toast = new TutorialToast(minecraft.font, TutorialToast.Icons.TREE, TITLE, DESCRIPTION, true); + minecraft.getToastManager().addToast(this.toast); } } } diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java index 87b4a53e..f2c5f2a0 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java @@ -24,10 +24,10 @@ import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.OutgoingChatMessage; +import net.minecraft.network.chat.ChatType.Bound; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -209,8 +209,8 @@ public class CommandSourceStack implements ExecutionCommandSource getOnlinePlayerNames(); default Collection getCustomTabSugggestions() { @@ -252,18 +255,15 @@ public interface SharedSuggestionProvider { } static boolean matchesSubStr(String input, String substring) { - for (int i = 0; !substring.startsWith(input, i); i++) { - int j = substring.indexOf(46, i); - int k = substring.indexOf(95, i); - if (Math.max(j, k) < 0) { + int i = 0; + + while (!substring.startsWith(input, i)) { + int j = MATCH_SPLITTER.indexIn(substring, i); + if (j < 0) { return false; } - if (j >= 0 && k >= 0) { - i = Math.min(k, j); - } else { - i = j >= 0 ? j : k; - } + i = j + 1; } return true; diff --git a/net/minecraft/commands/arguments/EntityArgument.java b/net/minecraft/commands/arguments/EntityArgument.java index ab19829c..925c57d2 100644 --- a/net/minecraft/commands/arguments/EntityArgument.java +++ b/net/minecraft/commands/arguments/EntityArgument.java @@ -13,7 +13,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.concurrent.CompletableFuture; -import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.arguments.selector.EntitySelector; @@ -152,11 +151,11 @@ public class EntityArgument implements ArgumentType { return EXAMPLES; } - public static class Info implements ArgumentTypeInfo { + public static class Info implements ArgumentTypeInfo { private static final byte FLAG_SINGLE = 1; private static final byte FLAG_PLAYERS_ONLY = 2; - public void serializeToNetwork(EntityArgument.Info.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(net.minecraft.commands.arguments.EntityArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { int i = 0; if (template.single) { i |= 1; @@ -166,40 +165,21 @@ public class EntityArgument implements ArgumentType { i |= 2; } - buffer.writeByte(i); + friendlyByteBuf.writeByte(i); } - public EntityArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - byte b = buffer.readByte(); - return new EntityArgument.Info.Template((b & 1) != 0, (b & 2) != 0); + public net.minecraft.commands.arguments.EntityArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + byte b = friendlyByteBuf.readByte(); + return new net.minecraft.commands.arguments.EntityArgument.Info.Template(this, (b & 1) != 0, (b & 2) != 0); } - public void serializeToJson(EntityArgument.Info.Template template, JsonObject json) { - json.addProperty("amount", template.single ? "single" : "multiple"); - json.addProperty("type", template.playersOnly ? "players" : "entities"); + public void serializeToJson(net.minecraft.commands.arguments.EntityArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("amount", template.single ? "single" : "multiple"); + jsonObject.addProperty("type", template.playersOnly ? "players" : "entities"); } - public EntityArgument.Info.Template unpack(EntityArgument argument) { - return new EntityArgument.Info.Template(argument.single, argument.playersOnly); - } - - public final class Template implements ArgumentTypeInfo.Template { - final boolean single; - final boolean playersOnly; - - Template(final boolean single, final boolean playersOnly) { - this.single = single; - this.playersOnly = playersOnly; - } - - public EntityArgument instantiate(CommandBuildContext context) { - return new EntityArgument(this.single, this.playersOnly); - } - - @Override - public ArgumentTypeInfo type() { - return Info.this; - } + public net.minecraft.commands.arguments.EntityArgument.Info.Template unpack(EntityArgument entityArgument) { + return new net.minecraft.commands.arguments.EntityArgument.Info.Template(this, entityArgument.single, entityArgument.playersOnly); } } } diff --git a/net/minecraft/commands/arguments/ResourceArgument.java b/net/minecraft/commands/arguments/ResourceArgument.java index 5914b034..1f4ee32f 100644 --- a/net/minecraft/commands/arguments/ResourceArgument.java +++ b/net/minecraft/commands/arguments/ResourceArgument.java @@ -17,9 +17,9 @@ import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.synchronization.ArgumentTypeInfo; -import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; +import net.minecraft.core.Holder.Reference; import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -32,7 +32,7 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.structure.Structure; -public class ResourceArgument implements ArgumentType> { +public class ResourceArgument implements ArgumentType> { private static final Collection EXAMPLES = Arrays.asList("foo", "foo:bar", "012"); private static final DynamicCommandExceptionType ERROR_NOT_SUMMONABLE_ENTITY = new DynamicCommandExceptionType( object -> Component.translatableEscape("entity.not_summonable", object) @@ -55,8 +55,8 @@ public class ResourceArgument implements ArgumentType> { return new ResourceArgument<>(context, registryKey); } - public static Holder.Reference getResource(CommandContext context, String argument, ResourceKey> registryKey) throws CommandSyntaxException { - Holder.Reference reference = context.getArgument(argument, Holder.Reference.class); + public static Reference getResource(CommandContext context, String argument, ResourceKey> registryKey) throws CommandSyntaxException { + Reference reference = context.getArgument(argument, Reference.class); ResourceKey resourceKey = reference.key(); if (resourceKey.isFor(registryKey)) { return reference; @@ -65,24 +65,24 @@ public class ResourceArgument implements ArgumentType> { } } - public static Holder.Reference getAttribute(CommandContext context, String argument) throws CommandSyntaxException { + public static Reference getAttribute(CommandContext context, String argument) throws CommandSyntaxException { return getResource(context, argument, Registries.ATTRIBUTE); } - public static Holder.Reference> getConfiguredFeature(CommandContext context, String argument) throws CommandSyntaxException { + public static Reference> getConfiguredFeature(CommandContext context, String argument) throws CommandSyntaxException { return getResource(context, argument, Registries.CONFIGURED_FEATURE); } - public static Holder.Reference getStructure(CommandContext context, String argument) throws CommandSyntaxException { + public static Reference getStructure(CommandContext context, String argument) throws CommandSyntaxException { return getResource(context, argument, Registries.STRUCTURE); } - public static Holder.Reference> getEntityType(CommandContext context, String argument) throws CommandSyntaxException { + public static Reference> getEntityType(CommandContext context, String argument) throws CommandSyntaxException { return getResource(context, argument, Registries.ENTITY_TYPE); } - public static Holder.Reference> getSummonableEntityType(CommandContext context, String argument) throws CommandSyntaxException { - Holder.Reference> reference = getResource(context, argument, Registries.ENTITY_TYPE); + public static Reference> getSummonableEntityType(CommandContext context, String argument) throws CommandSyntaxException { + Reference> reference = getResource(context, argument, Registries.ENTITY_TYPE); if (!reference.value().canSummon()) { throw ERROR_NOT_SUMMONABLE_ENTITY.create(reference.key().location().toString()); } else { @@ -90,18 +90,18 @@ public class ResourceArgument implements ArgumentType> { } } - public static Holder.Reference getMobEffect(CommandContext context, String argument) throws CommandSyntaxException { + public static Reference getMobEffect(CommandContext context, String argument) throws CommandSyntaxException { return getResource(context, argument, Registries.MOB_EFFECT); } - public static Holder.Reference getEnchantment(CommandContext context, String argument) throws CommandSyntaxException { + public static Reference getEnchantment(CommandContext context, String argument) throws CommandSyntaxException { return getResource(context, argument, Registries.ENCHANTMENT); } - public Holder.Reference parse(StringReader builder) throws CommandSyntaxException { + public Reference parse(StringReader builder) throws CommandSyntaxException { ResourceLocation resourceLocation = ResourceLocation.read(builder); ResourceKey resourceKey = ResourceKey.create(this.registryKey, resourceLocation); - return (Holder.Reference)this.registryLookup + return (Reference)this.registryLookup .get(resourceKey) .orElseThrow(() -> ERROR_UNKNOWN_RESOURCE.createWithContext(builder, resourceLocation, this.registryKey.location())); } @@ -117,37 +117,20 @@ public class ResourceArgument implements ArgumentType> { } public static class Info implements ArgumentTypeInfo, ResourceArgument.Info.Template> { - public void serializeToNetwork(ResourceArgument.Info.Template template, FriendlyByteBuf buffer) { - buffer.writeResourceKey(template.registryKey); + public void serializeToNetwork(ResourceArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { + friendlyByteBuf.writeResourceKey(template.registryKey); } - public ResourceArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - return new ResourceArgument.Info.Template(buffer.readRegistryKey()); + public ResourceArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + return new net.minecraft.commands.arguments.ResourceArgument.Info.Template(this, friendlyByteBuf.readRegistryKey()); } - public void serializeToJson(ResourceArgument.Info.Template template, JsonObject json) { - json.addProperty("registry", template.registryKey.location().toString()); + public void serializeToJson(ResourceArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("registry", template.registryKey.location().toString()); } - public ResourceArgument.Info.Template unpack(ResourceArgument argument) { - return new ResourceArgument.Info.Template(argument.registryKey); - } - - public final class Template implements ArgumentTypeInfo.Template> { - final ResourceKey> registryKey; - - Template(final ResourceKey> registryKey) { - this.registryKey = registryKey; - } - - public ResourceArgument instantiate(CommandBuildContext context) { - return new ResourceArgument<>(context, this.registryKey); - } - - @Override - public ArgumentTypeInfo, ?> type() { - return Info.this; - } + public ResourceArgument.Info.Template unpack(ResourceArgument resourceArgument) { + return new net.minecraft.commands.arguments.ResourceArgument.Info.Template(this, resourceArgument.registryKey); } } } diff --git a/net/minecraft/commands/arguments/ResourceKeyArgument.java b/net/minecraft/commands/arguments/ResourceKeyArgument.java index aa2a6328..83e3dc81 100644 --- a/net/minecraft/commands/arguments/ResourceKeyArgument.java +++ b/net/minecraft/commands/arguments/ResourceKeyArgument.java @@ -16,7 +16,6 @@ import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.SharedSuggestionProvider; -import net.minecraft.commands.SharedSuggestionProvider.ElementSuggestionType; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.core.Registry; import net.minecraft.core.Holder.Reference; @@ -114,7 +113,9 @@ public class ResourceKeyArgument implements ArgumentType> { @Override public CompletableFuture listSuggestions(CommandContext commandContext, SuggestionsBuilder suggestionsBuilder) { return commandContext.getSource() instanceof SharedSuggestionProvider sharedSuggestionProvider - ? sharedSuggestionProvider.suggestRegistryElements(this.registryKey, ElementSuggestionType.ELEMENTS, suggestionsBuilder, commandContext) + ? sharedSuggestionProvider.suggestRegistryElements( + this.registryKey, SharedSuggestionProvider.ElementSuggestionType.ELEMENTS, suggestionsBuilder, commandContext + ) : suggestionsBuilder.buildFuture(); } @@ -124,20 +125,20 @@ public class ResourceKeyArgument implements ArgumentType> { } public static class Info implements ArgumentTypeInfo, ResourceKeyArgument.Info.Template> { - public void serializeToNetwork(ResourceKeyArgument.Info.Template template, FriendlyByteBuf buffer) { - buffer.writeResourceKey(template.registryKey); + public void serializeToNetwork(ResourceKeyArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { + friendlyByteBuf.writeResourceKey(template.registryKey); } - public ResourceKeyArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - return new net.minecraft.commands.arguments.ResourceKeyArgument.Info.Template(this, buffer.readRegistryKey()); + public ResourceKeyArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + return new net.minecraft.commands.arguments.ResourceKeyArgument.Info.Template(this, friendlyByteBuf.readRegistryKey()); } - public void serializeToJson(ResourceKeyArgument.Info.Template template, JsonObject json) { - json.addProperty("registry", template.registryKey.location().toString()); + public void serializeToJson(ResourceKeyArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("registry", template.registryKey.location().toString()); } - public ResourceKeyArgument.Info.Template unpack(ResourceKeyArgument argument) { - return new net.minecraft.commands.arguments.ResourceKeyArgument.Info.Template(this, argument.registryKey); + public ResourceKeyArgument.Info.Template unpack(ResourceKeyArgument resourceKeyArgument) { + return new net.minecraft.commands.arguments.ResourceKeyArgument.Info.Template(this, resourceKeyArgument.registryKey); } } } diff --git a/net/minecraft/commands/arguments/ResourceOrTagArgument.java b/net/minecraft/commands/arguments/ResourceOrTagArgument.java index 902f3a84..4cdffd3e 100644 --- a/net/minecraft/commands/arguments/ResourceOrTagArgument.java +++ b/net/minecraft/commands/arguments/ResourceOrTagArgument.java @@ -21,8 +21,9 @@ import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; -import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; +import net.minecraft.core.Holder.Reference; +import net.minecraft.core.HolderSet.Named; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; @@ -71,7 +72,7 @@ public class ResourceOrTagArgument implements ArgumentType tagKey = TagKey.create(this.registryKey, resourceLocation); - HolderSet.Named named = (HolderSet.Named)this.registryLookup + Named named = (Named)this.registryLookup .get(tagKey) .orElseThrow(() -> ERROR_UNKNOWN_TAG.createWithContext(reader, resourceLocation, this.registryKey.location())); return new ResourceOrTagArgument.TagResult<>(named); @@ -82,7 +83,7 @@ public class ResourceOrTagArgument implements ArgumentType resourceKey = ResourceKey.create(this.registryKey, resourceLocation2); - Holder.Reference reference = (Holder.Reference)this.registryLookup + Reference reference = (Reference)this.registryLookup .get(resourceKey) .orElseThrow(() -> ResourceArgument.ERROR_UNKNOWN_RESOURCE.createWithContext(reader, resourceLocation2, this.registryKey.location())); return new ResourceOrTagArgument.ResourceResult<>(reference); @@ -101,43 +102,26 @@ public class ResourceOrTagArgument implements ArgumentType implements ArgumentTypeInfo, ResourceOrTagArgument.Info.Template> { - public void serializeToNetwork(ResourceOrTagArgument.Info.Template template, FriendlyByteBuf buffer) { - buffer.writeResourceKey(template.registryKey); + public void serializeToNetwork(ResourceOrTagArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { + friendlyByteBuf.writeResourceKey(template.registryKey); } - public ResourceOrTagArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - return new ResourceOrTagArgument.Info.Template(buffer.readRegistryKey()); + public ResourceOrTagArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + return new net.minecraft.commands.arguments.ResourceOrTagArgument.Info.Template(this, friendlyByteBuf.readRegistryKey()); } - public void serializeToJson(ResourceOrTagArgument.Info.Template template, JsonObject json) { - json.addProperty("registry", template.registryKey.location().toString()); + public void serializeToJson(ResourceOrTagArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("registry", template.registryKey.location().toString()); } - public ResourceOrTagArgument.Info.Template unpack(ResourceOrTagArgument argument) { - return new ResourceOrTagArgument.Info.Template(argument.registryKey); - } - - public final class Template implements ArgumentTypeInfo.Template> { - final ResourceKey> registryKey; - - Template(final ResourceKey> registryKey) { - this.registryKey = registryKey; - } - - public ResourceOrTagArgument instantiate(CommandBuildContext context) { - return new ResourceOrTagArgument<>(context, this.registryKey); - } - - @Override - public ArgumentTypeInfo, ?> type() { - return Info.this; - } + public ResourceOrTagArgument.Info.Template unpack(ResourceOrTagArgument resourceOrTagArgument) { + return new net.minecraft.commands.arguments.ResourceOrTagArgument.Info.Template(this, resourceOrTagArgument.registryKey); } } - record ResourceResult(Holder.Reference value) implements ResourceOrTagArgument.Result { + record ResourceResult(Reference value) implements ResourceOrTagArgument.Result { @Override - public Either, HolderSet.Named> unwrap() { + public Either, Named> unwrap() { return Either.left(this.value); } @@ -157,16 +141,16 @@ public class ResourceOrTagArgument implements ArgumentType extends Predicate> { - Either, HolderSet.Named> unwrap(); + Either, Named> unwrap(); Optional> cast(ResourceKey> registryKey); String asPrintable(); } - record TagResult(HolderSet.Named tag) implements ResourceOrTagArgument.Result { + record TagResult(Named tag) implements ResourceOrTagArgument.Result { @Override - public Either, HolderSet.Named> unwrap() { + public Either, Named> unwrap() { return Either.right(this.tag); } diff --git a/net/minecraft/commands/arguments/ResourceOrTagKeyArgument.java b/net/minecraft/commands/arguments/ResourceOrTagKeyArgument.java index 652219c8..ccade863 100644 --- a/net/minecraft/commands/arguments/ResourceOrTagKeyArgument.java +++ b/net/minecraft/commands/arguments/ResourceOrTagKeyArgument.java @@ -14,7 +14,6 @@ import java.util.Collection; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Predicate; -import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.synchronization.ArgumentTypeInfo; @@ -76,37 +75,20 @@ public class ResourceOrTagKeyArgument implements ArgumentType implements ArgumentTypeInfo, ResourceOrTagKeyArgument.Info.Template> { - public void serializeToNetwork(ResourceOrTagKeyArgument.Info.Template template, FriendlyByteBuf buffer) { - buffer.writeResourceKey(template.registryKey); + public void serializeToNetwork(ResourceOrTagKeyArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { + friendlyByteBuf.writeResourceKey(template.registryKey); } - public ResourceOrTagKeyArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - return new ResourceOrTagKeyArgument.Info.Template(buffer.readRegistryKey()); + public ResourceOrTagKeyArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + return new net.minecraft.commands.arguments.ResourceOrTagKeyArgument.Info.Template(this, friendlyByteBuf.readRegistryKey()); } - public void serializeToJson(ResourceOrTagKeyArgument.Info.Template template, JsonObject json) { - json.addProperty("registry", template.registryKey.location().toString()); + public void serializeToJson(ResourceOrTagKeyArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("registry", template.registryKey.location().toString()); } - public ResourceOrTagKeyArgument.Info.Template unpack(ResourceOrTagKeyArgument argument) { - return new ResourceOrTagKeyArgument.Info.Template(argument.registryKey); - } - - public final class Template implements ArgumentTypeInfo.Template> { - final ResourceKey> registryKey; - - Template(final ResourceKey> registryKey) { - this.registryKey = registryKey; - } - - public ResourceOrTagKeyArgument instantiate(CommandBuildContext context) { - return new ResourceOrTagKeyArgument<>(this.registryKey); - } - - @Override - public ArgumentTypeInfo, ?> type() { - return Info.this; - } + public ResourceOrTagKeyArgument.Info.Template unpack(ResourceOrTagKeyArgument resourceOrTagKeyArgument) { + return new net.minecraft.commands.arguments.ResourceOrTagKeyArgument.Info.Template(this, resourceOrTagKeyArgument.registryKey); } } diff --git a/net/minecraft/commands/arguments/ScoreHolderArgument.java b/net/minecraft/commands/arguments/ScoreHolderArgument.java index 1c964618..43325405 100644 --- a/net/minecraft/commands/arguments/ScoreHolderArgument.java +++ b/net/minecraft/commands/arguments/ScoreHolderArgument.java @@ -177,27 +177,27 @@ public class ScoreHolderArgument implements ArgumentType { private static final byte FLAG_MULTIPLE = 1; - public void serializeToNetwork(net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { int i = 0; if (template.multiple) { i |= 1; } - buffer.writeByte(i); + friendlyByteBuf.writeByte(i); } - public net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - byte b = buffer.readByte(); + public net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + byte b = friendlyByteBuf.readByte(); boolean bl = (b & 1) != 0; return new net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template(this, bl); } - public void serializeToJson(net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template template, JsonObject json) { - json.addProperty("amount", template.multiple ? "multiple" : "single"); + public void serializeToJson(net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("amount", template.multiple ? "multiple" : "single"); } - public net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template unpack(ScoreHolderArgument argument) { - return new net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template(this, argument.multiple); + public net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template unpack(ScoreHolderArgument scoreHolderArgument) { + return new net.minecraft.commands.arguments.ScoreHolderArgument.Info.Template(this, scoreHolderArgument.multiple); } } diff --git a/net/minecraft/commands/arguments/TimeArgument.java b/net/minecraft/commands/arguments/TimeArgument.java index b802b5c3..1e95404e 100644 --- a/net/minecraft/commands/arguments/TimeArgument.java +++ b/net/minecraft/commands/arguments/TimeArgument.java @@ -14,7 +14,6 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import java.util.Arrays; import java.util.Collection; import java.util.concurrent.CompletableFuture; -import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.network.FriendlyByteBuf; @@ -82,39 +81,22 @@ public class TimeArgument implements ArgumentType { UNITS.put("", 1); } - public static class Info implements ArgumentTypeInfo { - public void serializeToNetwork(TimeArgument.Info.Template template, FriendlyByteBuf buffer) { - buffer.writeInt(template.min); + public static class Info implements ArgumentTypeInfo { + public void serializeToNetwork(net.minecraft.commands.arguments.TimeArgument.Info.Template template, FriendlyByteBuf friendlyByteBuf) { + friendlyByteBuf.writeInt(template.min); } - public TimeArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - int i = buffer.readInt(); - return new TimeArgument.Info.Template(i); + public net.minecraft.commands.arguments.TimeArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + int i = friendlyByteBuf.readInt(); + return new net.minecraft.commands.arguments.TimeArgument.Info.Template(this, i); } - public void serializeToJson(TimeArgument.Info.Template template, JsonObject json) { - json.addProperty("min", template.min); + public void serializeToJson(net.minecraft.commands.arguments.TimeArgument.Info.Template template, JsonObject jsonObject) { + jsonObject.addProperty("min", template.min); } - public TimeArgument.Info.Template unpack(TimeArgument argument) { - return new TimeArgument.Info.Template(argument.minimum); - } - - public final class Template implements ArgumentTypeInfo.Template { - final int min; - - Template(final int min) { - this.min = min; - } - - public TimeArgument instantiate(CommandBuildContext context) { - return TimeArgument.time(this.min); - } - - @Override - public ArgumentTypeInfo type() { - return Info.this; - } + public net.minecraft.commands.arguments.TimeArgument.Info.Template unpack(TimeArgument timeArgument) { + return new net.minecraft.commands.arguments.TimeArgument.Info.Template(this, timeArgument.minimum); } } } diff --git a/net/minecraft/commands/arguments/blocks/BlockInput.java b/net/minecraft/commands/arguments/blocks/BlockInput.java index 138e007a..272c8a32 100644 --- a/net/minecraft/commands/arguments/blocks/BlockInput.java +++ b/net/minecraft/commands/arguments/blocks/BlockInput.java @@ -63,6 +63,7 @@ public class BlockInput implements Predicate { blockState = this.state; } + blockState = this.overwriteWithDefinedProperties(blockState); if (!level.setBlock(pos, blockState, flags)) { return false; } else { @@ -76,4 +77,20 @@ public class BlockInput implements Predicate { return true; } } + + private BlockState overwriteWithDefinedProperties(BlockState state) { + if (state == this.state) { + return state; + } else { + for (Property property : this.properties) { + state = copyProperty(state, this.state, property); + } + + return state; + } + } + + private static > BlockState copyProperty(BlockState source, BlockState target, Property property) { + return source.setValue(property, target.getValue(property)); + } } diff --git a/net/minecraft/commands/arguments/item/ItemPredicateArgument.java b/net/minecraft/commands/arguments/item/ItemPredicateArgument.java index d8b9ee6e..71f8508c 100644 --- a/net/minecraft/commands/arguments/item/ItemPredicateArgument.java +++ b/net/minecraft/commands/arguments/item/ItemPredicateArgument.java @@ -22,13 +22,15 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; import net.minecraft.Util; -import net.minecraft.advancements.critereon.ItemSubPredicate; -import net.minecraft.advancements.critereon.MinMaxBounds; +import net.minecraft.advancements.critereon.ItemSubPredicate.Type; +import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.Holder; -import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderSet; +import net.minecraft.core.Holder.Reference; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.component.DataComponentType; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.NbtOps; @@ -64,11 +66,11 @@ public class ItemPredicateArgument implements ArgumentType PSEUDO_COMPONENTS = (Map)Stream.of( - new ItemPredicateArgument.ComponentWrapper(COUNT_ID, itemStack -> true, MinMaxBounds.Ints.CODEC.map(ints -> itemStack -> ints.matches(itemStack.getCount()))) + new ItemPredicateArgument.ComponentWrapper(COUNT_ID, itemStack -> true, Ints.CODEC.map(ints -> itemStack -> ints.matches(itemStack.getCount()))) ) .collect(Collectors.toUnmodifiableMap(ItemPredicateArgument.ComponentWrapper::id, componentWrapper -> componentWrapper)); static final Map PSEUDO_PREDICATES = (Map)Stream.of( - new ItemPredicateArgument.PredicateWrapper(COUNT_ID, MinMaxBounds.Ints.CODEC.map(ints -> itemStack -> ints.matches(itemStack.getCount()))) + new ItemPredicateArgument.PredicateWrapper(COUNT_ID, Ints.CODEC.map(ints -> itemStack -> ints.matches(itemStack.getCount()))) ) .collect(Collectors.toUnmodifiableMap(ItemPredicateArgument.PredicateWrapper::id, predicateWrapper -> predicateWrapper)); private final Grammar>> grammarWithContext; @@ -124,65 +126,67 @@ public class ItemPredicateArgument implements ArgumentType, ItemPredicateArgument.ComponentWrapper, ItemPredicateArgument.PredicateWrapper> { - private final HolderLookup.RegistryLookup items; - private final HolderLookup.RegistryLookup> components; - private final HolderLookup.RegistryLookup> predicates; + private final RegistryLookup items; + private final RegistryLookup> components; + private final RegistryLookup> predicates; private final RegistryOps registryOps; - Context(HolderLookup.Provider registries) { + Context(Provider registries) { this.items = registries.lookupOrThrow(Registries.ITEM); this.components = registries.lookupOrThrow(Registries.DATA_COMPONENT_TYPE); this.predicates = registries.lookupOrThrow(Registries.ITEM_SUB_PREDICATE_TYPE); this.registryOps = registries.createSerializationContext(NbtOps.INSTANCE); } - public Predicate forElementType(ImmutableStringReader reader, ResourceLocation elementType) throws CommandSyntaxException { - Holder.Reference reference = (Holder.Reference)this.items - .get(ResourceKey.create(Registries.ITEM, elementType)) - .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_ITEM.createWithContext(reader, elementType)); + public Predicate forElementType(ImmutableStringReader immutableStringReader, ResourceLocation resourceLocation) throws CommandSyntaxException { + Reference reference = (Reference)this.items + .get(ResourceKey.create(Registries.ITEM, resourceLocation)) + .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_ITEM.createWithContext(immutableStringReader, resourceLocation)); return itemStack -> itemStack.is(reference); } - public Predicate forTagType(ImmutableStringReader reader, ResourceLocation tagType) throws CommandSyntaxException { + public Predicate forTagType(ImmutableStringReader immutableStringReader, ResourceLocation resourceLocation) throws CommandSyntaxException { HolderSet holderSet = (HolderSet)this.items - .get(TagKey.create(Registries.ITEM, tagType)) - .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_TAG.createWithContext(reader, tagType)); + .get(TagKey.create(Registries.ITEM, resourceLocation)) + .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_TAG.createWithContext(immutableStringReader, resourceLocation)); return itemStack -> itemStack.is(holderSet); } - public ItemPredicateArgument.ComponentWrapper lookupComponentType(ImmutableStringReader reader, ResourceLocation componentType) throws CommandSyntaxException { - ItemPredicateArgument.ComponentWrapper componentWrapper = (ItemPredicateArgument.ComponentWrapper)ItemPredicateArgument.PSEUDO_COMPONENTS.get(componentType); + public ItemPredicateArgument.ComponentWrapper lookupComponentType(ImmutableStringReader immutableStringReader, ResourceLocation resourceLocation) throws CommandSyntaxException { + ItemPredicateArgument.ComponentWrapper componentWrapper = (ItemPredicateArgument.ComponentWrapper)ItemPredicateArgument.PSEUDO_COMPONENTS + .get(resourceLocation); if (componentWrapper != null) { return componentWrapper; } else { DataComponentType dataComponentType = (DataComponentType)this.components - .get(ResourceKey.create(Registries.DATA_COMPONENT_TYPE, componentType)) + .get(ResourceKey.create(Registries.DATA_COMPONENT_TYPE, resourceLocation)) .map(Holder::value) - .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_COMPONENT.createWithContext(reader, componentType)); - return ItemPredicateArgument.ComponentWrapper.create(reader, componentType, dataComponentType); + .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_COMPONENT.createWithContext(immutableStringReader, resourceLocation)); + return ItemPredicateArgument.ComponentWrapper.create(immutableStringReader, resourceLocation, dataComponentType); } } - public Predicate createComponentTest(ImmutableStringReader reader, ItemPredicateArgument.ComponentWrapper context, Tag value) throws CommandSyntaxException { - return context.decode(reader, this.registryOps, value); + public Predicate createComponentTest(ImmutableStringReader immutableStringReader, ItemPredicateArgument.ComponentWrapper componentWrapper, Tag tag) throws CommandSyntaxException { + return componentWrapper.decode(immutableStringReader, this.registryOps, tag); } - public Predicate createComponentTest(ImmutableStringReader reader, ItemPredicateArgument.ComponentWrapper context) { - return context.presenceChecker; + public Predicate createComponentTest(ImmutableStringReader immutableStringReader, ItemPredicateArgument.ComponentWrapper componentWrapper) { + return componentWrapper.presenceChecker; } - public ItemPredicateArgument.PredicateWrapper lookupPredicateType(ImmutableStringReader reader, ResourceLocation predicateType) throws CommandSyntaxException { - ItemPredicateArgument.PredicateWrapper predicateWrapper = (ItemPredicateArgument.PredicateWrapper)ItemPredicateArgument.PSEUDO_PREDICATES.get(predicateType); + public ItemPredicateArgument.PredicateWrapper lookupPredicateType(ImmutableStringReader immutableStringReader, ResourceLocation resourceLocation) throws CommandSyntaxException { + ItemPredicateArgument.PredicateWrapper predicateWrapper = (ItemPredicateArgument.PredicateWrapper)ItemPredicateArgument.PSEUDO_PREDICATES + .get(resourceLocation); return predicateWrapper != null ? predicateWrapper : (ItemPredicateArgument.PredicateWrapper)this.predicates - .get(ResourceKey.create(Registries.ITEM_SUB_PREDICATE_TYPE, predicateType)) + .get(ResourceKey.create(Registries.ITEM_SUB_PREDICATE_TYPE, resourceLocation)) .map(ItemPredicateArgument.PredicateWrapper::new) - .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_PREDICATE.createWithContext(reader, predicateType)); + .orElseThrow(() -> ItemPredicateArgument.ERROR_UNKNOWN_PREDICATE.createWithContext(immutableStringReader, resourceLocation)); } - public Predicate createPredicateTest(ImmutableStringReader reader, ItemPredicateArgument.PredicateWrapper predicate, Tag value) throws CommandSyntaxException { - return predicate.decode(reader, this.registryOps, value); + public Predicate createPredicateTest(ImmutableStringReader immutableStringReader, ItemPredicateArgument.PredicateWrapper predicateWrapper, Tag tag) throws CommandSyntaxException { + return predicateWrapper.decode(immutableStringReader, this.registryOps, tag); } @Override @@ -208,17 +212,17 @@ public class ItemPredicateArgument implements ArgumentType negate(Predicate value) { - return value.negate(); + public Predicate negate(Predicate predicate) { + return predicate.negate(); } - public Predicate anyOf(List> values) { - return Util.anyOf(values); + public Predicate anyOf(List> list) { + return Util.anyOf(list); } } record PredicateWrapper(ResourceLocation id, Decoder> type) { - public PredicateWrapper(Holder.Reference> predicate) { + public PredicateWrapper(Reference> predicate) { this(predicate.key().location(), predicate.value().codec().map(itemSubPredicate -> itemSubPredicate::matches)); } diff --git a/net/minecraft/commands/execution/CustomCommandExecutor.java b/net/minecraft/commands/execution/CustomCommandExecutor.java index 6e77af8b..5a751e50 100644 --- a/net/minecraft/commands/execution/CustomCommandExecutor.java +++ b/net/minecraft/commands/execution/CustomCommandExecutor.java @@ -18,12 +18,12 @@ public interface CustomCommandExecutor { } public abstract static class WithErrorHandling> implements CustomCommandExecutor { - public final void run(T source, ContextChain contextChain, ChainModifiers chainModifiers, ExecutionControl executionControl) { + public final void run(T executionCommandSource, ContextChain contextChain, ChainModifiers chainModifiers, ExecutionControl executionControl) { try { - this.runGuarded(source, contextChain, chainModifiers, executionControl); + this.runGuarded(executionCommandSource, contextChain, chainModifiers, executionControl); } catch (CommandSyntaxException var6) { - this.onError(var6, source, chainModifiers, executionControl.tracer()); - source.callback().onFailure(); + this.onError(var6, executionCommandSource, chainModifiers, executionControl.tracer()); + executionCommandSource.callback().onFailure(); } } diff --git a/net/minecraft/commands/execution/tasks/CallFunction.java b/net/minecraft/commands/execution/tasks/CallFunction.java index f030b1ca..dbb5bb68 100644 --- a/net/minecraft/commands/execution/tasks/CallFunction.java +++ b/net/minecraft/commands/execution/tasks/CallFunction.java @@ -8,6 +8,7 @@ import net.minecraft.commands.execution.ExecutionContext; import net.minecraft.commands.execution.Frame; import net.minecraft.commands.execution.TraceCallbacks; import net.minecraft.commands.execution.UnboundEntryAction; +import net.minecraft.commands.execution.Frame.FrameControl; import net.minecraft.commands.functions.InstantiatedFunction; public class CallFunction> implements UnboundEntryAction { @@ -21,7 +22,7 @@ public class CallFunction> implements Unboun this.returnParentFrame = returnParentFrame; } - public void execute(T source, ExecutionContext executionContext, Frame frame) { + public void execute(T executionCommandSource, ExecutionContext executionContext, Frame frame) { executionContext.incrementCost(); List> list = this.function.entries(); TraceCallbacks traceCallbacks = executionContext.tracer(); @@ -30,8 +31,10 @@ public class CallFunction> implements Unboun } int i = frame.depth() + 1; - Frame.FrameControl frameControl = this.returnParentFrame ? frame.frameControl() : executionContext.frameControlForDepth(i); + FrameControl frameControl = this.returnParentFrame ? frame.frameControl() : executionContext.frameControlForDepth(i); Frame frame2 = new Frame(i, this.resultCallback, frameControl); - ContinuationTask.schedule(executionContext, frame2, list, (framex, unboundEntryAction) -> new CommandQueueEntry<>(framex, unboundEntryAction.bind(source))); + ContinuationTask.schedule( + executionContext, frame2, list, (framex, unboundEntryAction) -> new CommandQueueEntry<>(framex, unboundEntryAction.bind(executionCommandSource)) + ); } } diff --git a/net/minecraft/commands/execution/tasks/ExecuteCommand.java b/net/minecraft/commands/execution/tasks/ExecuteCommand.java index 98e7de03..03dc77a9 100644 --- a/net/minecraft/commands/execution/tasks/ExecuteCommand.java +++ b/net/minecraft/commands/execution/tasks/ExecuteCommand.java @@ -22,18 +22,18 @@ public class ExecuteCommand> implements Unbo this.executionContext = executionContext; } - public void execute(T source, ExecutionContext executionContext, Frame frame) { + public void execute(T executionCommandSource, ExecutionContext executionContext, Frame frame) { executionContext.profiler().push((Supplier)(() -> "execute " + this.commandInput)); try { executionContext.incrementCost(); - int i = ContextChain.runExecutable(this.executionContext, source, ExecutionCommandSource.resultConsumer(), this.modifiers.isForked()); + int i = ContextChain.runExecutable(this.executionContext, executionCommandSource, ExecutionCommandSource.resultConsumer(), this.modifiers.isForked()); TraceCallbacks traceCallbacks = executionContext.tracer(); if (traceCallbacks != null) { traceCallbacks.onReturn(frame.depth(), this.commandInput, i); } } catch (CommandSyntaxException var9) { - source.handleError(var9, this.modifiers.isForked(), executionContext.tracer()); + executionCommandSource.handleError(var9, this.modifiers.isForked(), executionContext.tracer()); } finally { executionContext.profiler().pop(); } diff --git a/net/minecraft/commands/synchronization/SingletonArgumentInfo.java b/net/minecraft/commands/synchronization/SingletonArgumentInfo.java index 987f7c5b..0857989b 100644 --- a/net/minecraft/commands/synchronization/SingletonArgumentInfo.java +++ b/net/minecraft/commands/synchronization/SingletonArgumentInfo.java @@ -22,21 +22,21 @@ public class SingletonArgumentInfo> implements Argumen return new SingletonArgumentInfo<>(argumentType); } - public void serializeToNetwork(SingletonArgumentInfo.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(SingletonArgumentInfo.Template template, FriendlyByteBuf friendlyByteBuf) { } - public void serializeToJson(SingletonArgumentInfo.Template template, JsonObject json) { + public void serializeToJson(SingletonArgumentInfo.Template template, JsonObject jsonObject) { } - public SingletonArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf buffer) { + public SingletonArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { return this.template; } - public SingletonArgumentInfo.Template unpack(A argument) { + public SingletonArgumentInfo.Template unpack(A argumentType) { return this.template; } - public final class Template implements ArgumentTypeInfo.Template { + public final class Template implements net.minecraft.commands.synchronization.ArgumentTypeInfo.Template { private final Function constructor; public Template(final Function constructor) { diff --git a/net/minecraft/commands/synchronization/brigadier/DoubleArgumentInfo.java b/net/minecraft/commands/synchronization/brigadier/DoubleArgumentInfo.java index 633086e3..8a2a8394 100644 --- a/net/minecraft/commands/synchronization/brigadier/DoubleArgumentInfo.java +++ b/net/minecraft/commands/synchronization/brigadier/DoubleArgumentInfo.java @@ -8,41 +8,41 @@ import net.minecraft.commands.synchronization.ArgumentUtils; import net.minecraft.network.FriendlyByteBuf; public class DoubleArgumentInfo implements ArgumentTypeInfo { - public void serializeToNetwork(DoubleArgumentInfo.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(DoubleArgumentInfo.Template template, FriendlyByteBuf friendlyByteBuf) { boolean bl = template.min != -Double.MAX_VALUE; boolean bl2 = template.max != Double.MAX_VALUE; - buffer.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); + friendlyByteBuf.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); if (bl) { - buffer.writeDouble(template.min); + friendlyByteBuf.writeDouble(template.min); } if (bl2) { - buffer.writeDouble(template.max); + friendlyByteBuf.writeDouble(template.max); } } - public DoubleArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - byte b = buffer.readByte(); - double d = ArgumentUtils.numberHasMin(b) ? buffer.readDouble() : -Double.MAX_VALUE; - double e = ArgumentUtils.numberHasMax(b) ? buffer.readDouble() : Double.MAX_VALUE; + public DoubleArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + byte b = friendlyByteBuf.readByte(); + double d = ArgumentUtils.numberHasMin(b) ? friendlyByteBuf.readDouble() : -Double.MAX_VALUE; + double e = ArgumentUtils.numberHasMax(b) ? friendlyByteBuf.readDouble() : Double.MAX_VALUE; return new DoubleArgumentInfo.Template(d, e); } - public void serializeToJson(DoubleArgumentInfo.Template template, JsonObject json) { + public void serializeToJson(DoubleArgumentInfo.Template template, JsonObject jsonObject) { if (template.min != -Double.MAX_VALUE) { - json.addProperty("min", template.min); + jsonObject.addProperty("min", template.min); } if (template.max != Double.MAX_VALUE) { - json.addProperty("max", template.max); + jsonObject.addProperty("max", template.max); } } - public DoubleArgumentInfo.Template unpack(DoubleArgumentType argument) { - return new DoubleArgumentInfo.Template(argument.getMinimum(), argument.getMaximum()); + public DoubleArgumentInfo.Template unpack(DoubleArgumentType doubleArgumentType) { + return new DoubleArgumentInfo.Template(doubleArgumentType.getMinimum(), doubleArgumentType.getMaximum()); } - public final class Template implements ArgumentTypeInfo.Template { + public final class Template implements net.minecraft.commands.synchronization.ArgumentTypeInfo.Template { final double min; final double max; @@ -51,7 +51,7 @@ public class DoubleArgumentInfo implements ArgumentTypeInfo { - public void serializeToNetwork(FloatArgumentInfo.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(FloatArgumentInfo.Template template, FriendlyByteBuf friendlyByteBuf) { boolean bl = template.min != -Float.MAX_VALUE; boolean bl2 = template.max != Float.MAX_VALUE; - buffer.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); + friendlyByteBuf.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); if (bl) { - buffer.writeFloat(template.min); + friendlyByteBuf.writeFloat(template.min); } if (bl2) { - buffer.writeFloat(template.max); + friendlyByteBuf.writeFloat(template.max); } } - public FloatArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - byte b = buffer.readByte(); - float f = ArgumentUtils.numberHasMin(b) ? buffer.readFloat() : -Float.MAX_VALUE; - float g = ArgumentUtils.numberHasMax(b) ? buffer.readFloat() : Float.MAX_VALUE; + public FloatArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + byte b = friendlyByteBuf.readByte(); + float f = ArgumentUtils.numberHasMin(b) ? friendlyByteBuf.readFloat() : -Float.MAX_VALUE; + float g = ArgumentUtils.numberHasMax(b) ? friendlyByteBuf.readFloat() : Float.MAX_VALUE; return new FloatArgumentInfo.Template(f, g); } - public void serializeToJson(FloatArgumentInfo.Template template, JsonObject json) { + public void serializeToJson(FloatArgumentInfo.Template template, JsonObject jsonObject) { if (template.min != -Float.MAX_VALUE) { - json.addProperty("min", template.min); + jsonObject.addProperty("min", template.min); } if (template.max != Float.MAX_VALUE) { - json.addProperty("max", template.max); + jsonObject.addProperty("max", template.max); } } - public FloatArgumentInfo.Template unpack(FloatArgumentType argument) { - return new FloatArgumentInfo.Template(argument.getMinimum(), argument.getMaximum()); + public FloatArgumentInfo.Template unpack(FloatArgumentType floatArgumentType) { + return new FloatArgumentInfo.Template(floatArgumentType.getMinimum(), floatArgumentType.getMaximum()); } - public final class Template implements ArgumentTypeInfo.Template { + public final class Template implements net.minecraft.commands.synchronization.ArgumentTypeInfo.Template { final float min; final float max; @@ -51,7 +51,7 @@ public class FloatArgumentInfo implements ArgumentTypeInfo { - public void serializeToNetwork(IntegerArgumentInfo.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(IntegerArgumentInfo.Template template, FriendlyByteBuf friendlyByteBuf) { boolean bl = template.min != Integer.MIN_VALUE; boolean bl2 = template.max != Integer.MAX_VALUE; - buffer.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); + friendlyByteBuf.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); if (bl) { - buffer.writeInt(template.min); + friendlyByteBuf.writeInt(template.min); } if (bl2) { - buffer.writeInt(template.max); + friendlyByteBuf.writeInt(template.max); } } - public IntegerArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - byte b = buffer.readByte(); - int i = ArgumentUtils.numberHasMin(b) ? buffer.readInt() : Integer.MIN_VALUE; - int j = ArgumentUtils.numberHasMax(b) ? buffer.readInt() : Integer.MAX_VALUE; + public IntegerArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + byte b = friendlyByteBuf.readByte(); + int i = ArgumentUtils.numberHasMin(b) ? friendlyByteBuf.readInt() : Integer.MIN_VALUE; + int j = ArgumentUtils.numberHasMax(b) ? friendlyByteBuf.readInt() : Integer.MAX_VALUE; return new IntegerArgumentInfo.Template(i, j); } - public void serializeToJson(IntegerArgumentInfo.Template template, JsonObject json) { + public void serializeToJson(IntegerArgumentInfo.Template template, JsonObject jsonObject) { if (template.min != Integer.MIN_VALUE) { - json.addProperty("min", template.min); + jsonObject.addProperty("min", template.min); } if (template.max != Integer.MAX_VALUE) { - json.addProperty("max", template.max); + jsonObject.addProperty("max", template.max); } } - public IntegerArgumentInfo.Template unpack(IntegerArgumentType argument) { - return new IntegerArgumentInfo.Template(argument.getMinimum(), argument.getMaximum()); + public IntegerArgumentInfo.Template unpack(IntegerArgumentType integerArgumentType) { + return new IntegerArgumentInfo.Template(integerArgumentType.getMinimum(), integerArgumentType.getMaximum()); } - public final class Template implements ArgumentTypeInfo.Template { + public final class Template implements net.minecraft.commands.synchronization.ArgumentTypeInfo.Template { final int min; final int max; @@ -51,7 +51,7 @@ public class IntegerArgumentInfo implements ArgumentTypeInfo { - public void serializeToNetwork(LongArgumentInfo.Template template, FriendlyByteBuf buffer) { + public void serializeToNetwork(LongArgumentInfo.Template template, FriendlyByteBuf friendlyByteBuf) { boolean bl = template.min != Long.MIN_VALUE; boolean bl2 = template.max != Long.MAX_VALUE; - buffer.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); + friendlyByteBuf.writeByte(ArgumentUtils.createNumberFlags(bl, bl2)); if (bl) { - buffer.writeLong(template.min); + friendlyByteBuf.writeLong(template.min); } if (bl2) { - buffer.writeLong(template.max); + friendlyByteBuf.writeLong(template.max); } } - public LongArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - byte b = buffer.readByte(); - long l = ArgumentUtils.numberHasMin(b) ? buffer.readLong() : Long.MIN_VALUE; - long m = ArgumentUtils.numberHasMax(b) ? buffer.readLong() : Long.MAX_VALUE; + public LongArgumentInfo.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + byte b = friendlyByteBuf.readByte(); + long l = ArgumentUtils.numberHasMin(b) ? friendlyByteBuf.readLong() : Long.MIN_VALUE; + long m = ArgumentUtils.numberHasMax(b) ? friendlyByteBuf.readLong() : Long.MAX_VALUE; return new LongArgumentInfo.Template(l, m); } - public void serializeToJson(LongArgumentInfo.Template template, JsonObject json) { + public void serializeToJson(LongArgumentInfo.Template template, JsonObject jsonObject) { if (template.min != Long.MIN_VALUE) { - json.addProperty("min", template.min); + jsonObject.addProperty("min", template.min); } if (template.max != Long.MAX_VALUE) { - json.addProperty("max", template.max); + jsonObject.addProperty("max", template.max); } } - public LongArgumentInfo.Template unpack(LongArgumentType argument) { - return new LongArgumentInfo.Template(argument.getMinimum(), argument.getMaximum()); + public LongArgumentInfo.Template unpack(LongArgumentType longArgumentType) { + return new LongArgumentInfo.Template(longArgumentType.getMinimum(), longArgumentType.getMaximum()); } - public final class Template implements ArgumentTypeInfo.Template { + public final class Template implements net.minecraft.commands.synchronization.ArgumentTypeInfo.Template { final long min; final long max; @@ -51,7 +51,7 @@ public class LongArgumentInfo implements ArgumentTypeInfo { - public void serializeToNetwork(StringArgumentSerializer.Template template, FriendlyByteBuf buffer) { - buffer.writeEnum(template.type); + public void serializeToNetwork(StringArgumentSerializer.Template template, FriendlyByteBuf friendlyByteBuf) { + friendlyByteBuf.writeEnum(template.type); } - public StringArgumentSerializer.Template deserializeFromNetwork(FriendlyByteBuf buffer) { - StringType stringType = buffer.readEnum(StringType.class); + public StringArgumentSerializer.Template deserializeFromNetwork(FriendlyByteBuf friendlyByteBuf) { + StringType stringType = friendlyByteBuf.readEnum(StringType.class); return new StringArgumentSerializer.Template(stringType); } - public void serializeToJson(StringArgumentSerializer.Template template, JsonObject json) { - json.addProperty("type", switch (template.type) { + public void serializeToJson(StringArgumentSerializer.Template template, JsonObject jsonObject) { + jsonObject.addProperty("type", switch (template.type) { case SINGLE_WORD -> "word"; case QUOTABLE_PHRASE -> "phrase"; case GREEDY_PHRASE -> "greedy"; }); } - public StringArgumentSerializer.Template unpack(StringArgumentType argument) { - return new StringArgumentSerializer.Template(argument.getType()); + public StringArgumentSerializer.Template unpack(StringArgumentType stringArgumentType) { + return new StringArgumentSerializer.Template(stringArgumentType.getType()); } - public final class Template implements ArgumentTypeInfo.Template { + public final class Template implements net.minecraft.commands.synchronization.ArgumentTypeInfo.Template { final StringType type; public Template(final StringType type) { this.type = type; } - public StringArgumentType instantiate(CommandBuildContext context) { + public StringArgumentType instantiate(CommandBuildContext commandBuildContext) { return switch (this.type) { case SINGLE_WORD -> StringArgumentType.word(); case QUOTABLE_PHRASE -> StringArgumentType.string(); diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java index 6c5ba92f..ba1d939a 100644 --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java @@ -11,11 +11,13 @@ import java.util.Optional; import java.util.Queue; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.IntStream; import java.util.stream.Stream; import java.util.stream.StreamSupport; import net.minecraft.Util; +import net.minecraft.core.Direction.Axis; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.Mth; @@ -124,8 +126,8 @@ public class BlockPos extends Vec3i { return packedPos & -16L; } - public BlockPos offset(int dx, int dy, int dz) { - return dx == 0 && dy == 0 && dz == 0 ? this : new BlockPos(this.getX() + dx, this.getY() + dy, this.getZ() + dz); + public BlockPos offset(int i, int j, int k) { + return i == 0 && j == 0 && k == 0 ? this : new BlockPos(this.getX() + i, this.getY() + j, this.getZ() + k); } public Vec3 getCenter() { @@ -136,56 +138,44 @@ public class BlockPos extends Vec3i { return Vec3.atBottomCenterOf(this); } - public BlockPos offset(Vec3i vector) { - return this.offset(vector.getX(), vector.getY(), vector.getZ()); + public BlockPos offset(Vec3i vec3i) { + return this.offset(vec3i.getX(), vec3i.getY(), vec3i.getZ()); } public BlockPos subtract(Vec3i vector) { return this.offset(-vector.getX(), -vector.getY(), -vector.getZ()); } - public BlockPos multiply(int scalar) { - if (scalar == 1) { + public BlockPos multiply(int i) { + if (i == 1) { return this; } else { - return scalar == 0 ? ZERO : new BlockPos(this.getX() * scalar, this.getY() * scalar, this.getZ() * scalar); + return i == 0 ? ZERO : new BlockPos(this.getX() * i, this.getY() * i, this.getZ() * i); } } - /** - * Offset this vector 1 unit up - */ public BlockPos above() { return this.relative(Direction.UP); } - /** - * Offset this vector upwards by the given distance. - */ - public BlockPos above(int distance) { - return this.relative(Direction.UP, distance); + public BlockPos above(int i) { + return this.relative(Direction.UP, i); } - /** - * Offset this vector 1 unit down - */ public BlockPos below() { return this.relative(Direction.DOWN); } - /** - * Offset this vector downwards by the given distance. - */ - public BlockPos below(int distance) { - return this.relative(Direction.DOWN, distance); + public BlockPos below(int i) { + return this.relative(Direction.DOWN, i); } public BlockPos north() { return this.relative(Direction.NORTH); } - public BlockPos north(int distance) { - return this.relative(Direction.NORTH, distance); + public BlockPos north(int i) { + return this.relative(Direction.NORTH, i); } public BlockPos south() { @@ -200,39 +190,34 @@ public class BlockPos extends Vec3i { return this.relative(Direction.WEST); } - public BlockPos west(int distance) { - return this.relative(Direction.WEST, distance); + public BlockPos west(int i) { + return this.relative(Direction.WEST, i); } public BlockPos east() { return this.relative(Direction.EAST); } - public BlockPos east(int distance) { - return this.relative(Direction.EAST, distance); + public BlockPos east(int i) { + return this.relative(Direction.EAST, i); } public BlockPos relative(Direction direction) { return new BlockPos(this.getX() + direction.getStepX(), this.getY() + direction.getStepY(), this.getZ() + direction.getStepZ()); } - /** - * Offsets this Vector by the given distance in the specified direction. - */ - public BlockPos relative(Direction direction, int distance) { - return distance == 0 - ? this - : new BlockPos(this.getX() + direction.getStepX() * distance, this.getY() + direction.getStepY() * distance, this.getZ() + direction.getStepZ() * distance); + public BlockPos relative(Direction direction, int i) { + return i == 0 ? this : new BlockPos(this.getX() + direction.getStepX() * i, this.getY() + direction.getStepY() * i, this.getZ() + direction.getStepZ() * i); } - public BlockPos relative(Direction.Axis axis, int amount) { - if (amount == 0) { + public BlockPos relative(Axis axis, int i) { + if (i == 0) { return this; } else { - int i = axis == Direction.Axis.X ? amount : 0; - int j = axis == Direction.Axis.Y ? amount : 0; - int k = axis == Direction.Axis.Z ? amount : 0; - return new BlockPos(this.getX() + i, this.getY() + j, this.getZ() + k); + int j = axis == Axis.X ? i : 0; + int k = axis == Axis.Y ? i : 0; + int l = axis == Axis.Z ? i : 0; + return new BlockPos(this.getX() + j, this.getY() + k, this.getZ() + l); } } @@ -250,9 +235,6 @@ public class BlockPos extends Vec3i { } } - /** - * Calculate the cross product of this and the given Vector - */ public BlockPos cross(Vec3i vector) { return new BlockPos( this.getY() * vector.getZ() - this.getZ() * vector.getY(), @@ -504,7 +486,11 @@ public class BlockPos extends Vec3i { } public static int breadthFirstTraversal( - BlockPos startPos, int depth, int visitLimit, BiConsumer> action, Predicate predicate + BlockPos startPos, + int radius, + int maxBlocks, + BiConsumer> childrenGetter, + Function action ) { Queue> queue = new ArrayDeque(); LongSet longSet = new LongOpenHashSet(); @@ -516,13 +502,20 @@ public class BlockPos extends Vec3i { BlockPos blockPos = pair.getLeft(); int j = pair.getRight(); long l = blockPos.asLong(); - if (longSet.add(l) && predicate.test(blockPos)) { - if (++i >= visitLimit) { - return i; - } + if (longSet.add(l)) { + BlockPos.TraversalNodeStatus traversalNodeStatus = (BlockPos.TraversalNodeStatus)action.apply(blockPos); + if (traversalNodeStatus != BlockPos.TraversalNodeStatus.SKIP) { + if (traversalNodeStatus == BlockPos.TraversalNodeStatus.STOP) { + break; + } - if (j < depth) { - action.accept(blockPos, (Consumer)blockPosx -> queue.add(Pair.of(blockPosx, j + 1))); + if (++i >= maxBlocks) { + return i; + } + + if (j < radius) { + childrenGetter.accept(blockPos, (Consumer)blockPosx -> queue.add(Pair.of(blockPosx, j + 1))); + } } } } @@ -535,8 +528,8 @@ public class BlockPos extends Vec3i { this(0, 0, 0); } - public MutableBlockPos(int x, int y, int z) { - super(x, y, z); + public MutableBlockPos(int i, int j, int k) { + super(i, j, k); } public MutableBlockPos(double x, double y, double z) { @@ -544,23 +537,23 @@ public class BlockPos extends Vec3i { } @Override - public BlockPos offset(int dx, int dy, int dz) { - return super.offset(dx, dy, dz).immutable(); + public BlockPos offset(int i, int j, int k) { + return super.offset(i, j, k).immutable(); } @Override - public BlockPos multiply(int scalar) { - return super.multiply(scalar).immutable(); + public BlockPos multiply(int i) { + return super.multiply(i).immutable(); } @Override - public BlockPos relative(Direction direction, int distance) { - return super.relative(direction, distance).immutable(); + public BlockPos relative(Direction direction, int i) { + return super.relative(direction, i).immutable(); } @Override - public BlockPos relative(Direction.Axis axis, int amount) { - return super.relative(axis, amount).immutable(); + public BlockPos relative(Axis axis, int i) { + return super.relative(axis, i).immutable(); } @Override @@ -588,7 +581,7 @@ public class BlockPos extends Vec3i { } public BlockPos.MutableBlockPos set(AxisCycle cycle, int x, int y, int z) { - return this.set(cycle.cycle(x, y, z, Direction.Axis.X), cycle.cycle(x, y, z, Direction.Axis.Y), cycle.cycle(x, y, z, Direction.Axis.Z)); + return this.set(cycle.cycle(x, y, z, Axis.X), cycle.cycle(x, y, z, Axis.Y), cycle.cycle(x, y, z, Axis.Z)); } public BlockPos.MutableBlockPos setWithOffset(Vec3i pos, Direction direction) { @@ -619,7 +612,7 @@ public class BlockPos extends Vec3i { return this.set(this.getX() + offset.getX(), this.getY() + offset.getY(), this.getZ() + offset.getZ()); } - public BlockPos.MutableBlockPos clamp(Direction.Axis axis, int min, int max) { + public BlockPos.MutableBlockPos clamp(Axis axis, int min, int max) { switch (axis) { case X: return this.set(Mth.clamp(this.getX(), min, max), this.getY(), this.getZ()); @@ -632,18 +625,18 @@ public class BlockPos extends Vec3i { } } - public BlockPos.MutableBlockPos setX(int x) { - super.setX(x); + public BlockPos.MutableBlockPos setX(int i) { + super.setX(i); return this; } - public BlockPos.MutableBlockPos setY(int y) { - super.setY(y); + public BlockPos.MutableBlockPos setY(int i) { + super.setY(i); return this; } - public BlockPos.MutableBlockPos setZ(int z) { - super.setZ(z); + public BlockPos.MutableBlockPos setZ(int i) { + super.setZ(i); return this; } @@ -652,4 +645,10 @@ public class BlockPos extends Vec3i { return new BlockPos(this); } } + + public static enum TraversalNodeStatus { + ACCEPT, + SKIP, + STOP; + } } diff --git a/net/minecraft/core/MappedRegistry.java b/net/minecraft/core/MappedRegistry.java index 9eef02b1..9653a037 100644 --- a/net/minecraft/core/MappedRegistry.java +++ b/net/minecraft/core/MappedRegistry.java @@ -24,6 +24,7 @@ import java.util.function.BiConsumer; import java.util.stream.Stream; import net.minecraft.Util; import net.minecraft.core.Holder.Reference; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.HolderLookup.RegistryLookup.Delegate; import net.minecraft.core.HolderSet.Named; import net.minecraft.core.MappedRegistry.TagSet.1; @@ -31,7 +32,7 @@ import net.minecraft.core.MappedRegistry.TagSet.2; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.tags.TagLoader; +import net.minecraft.tags.TagLoader.LoadResult; import net.minecraft.util.RandomSource; import org.jetbrains.annotations.Nullable; @@ -396,7 +397,7 @@ public class MappedRegistry implements WritableRegistry { } @Override - public Registry.PendingTags prepareTagReload(TagLoader.LoadResult loadResult) { + public Registry.PendingTags prepareTagReload(LoadResult loadResult) { if (!this.frozen) { throw new IllegalStateException("Invalid method used for tag loading"); } else { @@ -412,8 +413,8 @@ public class MappedRegistry implements WritableRegistry { map.put(tagKey, List.copyOf(list)); }); final ImmutableMap, Named> immutableMap = builder.build(); - final HolderLookup.RegistryLookup registryLookup = new Delegate() { - public HolderLookup.RegistryLookup parent() { + final RegistryLookup registryLookup = new Delegate() { + public RegistryLookup parent() { return MappedRegistry.this; } @@ -437,7 +438,7 @@ public class MappedRegistry implements WritableRegistry { } @Override - public HolderLookup.RegistryLookup lookup() { + public RegistryLookup lookup() { return registryLookup; } diff --git a/net/minecraft/core/Registry.java b/net/minecraft/core/Registry.java index 418dded3..dfec27d5 100644 --- a/net/minecraft/core/Registry.java +++ b/net/minecraft/core/Registry.java @@ -14,16 +14,17 @@ import java.util.Map.Entry; import java.util.stream.Stream; import java.util.stream.StreamSupport; import net.minecraft.core.Holder.Reference; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.HolderSet.Named; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.tags.TagLoader; +import net.minecraft.tags.TagLoader.LoadResult; import net.minecraft.util.ExtraCodecs; import net.minecraft.util.RandomSource; import org.jetbrains.annotations.Nullable; -public interface Registry extends Keyable, HolderLookup.RegistryLookup, IdMap { +public interface Registry extends Keyable, RegistryLookup, IdMap { @Override ResourceKey> key(); @@ -159,16 +160,13 @@ public interface Registry extends Keyable, HolderLookup.RegistryLookup, Id default IdMap> asHolderIdMap() { return new IdMap>() { - /** - * @return the integer ID used to identify the given object - */ - public int getId(Holder value) { - return Registry.this.getId(value.value()); + public int getId(Holder holder) { + return Registry.this.getId(holder.value()); } @Nullable - public Holder byId(int id) { - return (Holder)Registry.this.get(id).orElse(null); + public Holder byId(int i) { + return (Holder)Registry.this.get(i).orElse(null); } @Override @@ -182,12 +180,12 @@ public interface Registry extends Keyable, HolderLookup.RegistryLookup, Id }; } - Registry.PendingTags prepareTagReload(TagLoader.LoadResult loadResult); + Registry.PendingTags prepareTagReload(LoadResult loadResult); public interface PendingTags { ResourceKey> key(); - HolderLookup.RegistryLookup lookup(); + RegistryLookup lookup(); void apply(); diff --git a/net/minecraft/core/RegistryAccess.java b/net/minecraft/core/RegistryAccess.java index 5259acbb..4ae4fb15 100644 --- a/net/minecraft/core/RegistryAccess.java +++ b/net/minecraft/core/RegistryAccess.java @@ -21,8 +21,8 @@ public interface RegistryAccess extends HolderLookup.Provider { @Override Optional> lookup(ResourceKey> registryKey); - default Registry lookupOrThrow(ResourceKey> registryKey) { - return (Registry)this.lookup(registryKey).orElseThrow(() -> new IllegalStateException("Missing registry: " + registryKey)); + default Registry lookupOrThrow(ResourceKey> resourceKey) { + return (Registry)this.lookup(resourceKey).orElseThrow(() -> new IllegalStateException("Missing registry: " + resourceKey)); } Stream> registries(); diff --git a/net/minecraft/core/RegistrySetBuilder.java b/net/minecraft/core/RegistrySetBuilder.java index c757fc62..abd74571 100644 --- a/net/minecraft/core/RegistrySetBuilder.java +++ b/net/minecraft/core/RegistrySetBuilder.java @@ -17,6 +17,8 @@ import java.util.stream.Stream; import net.minecraft.core.Cloner.Factory; import net.minecraft.core.Holder.Reference; import net.minecraft.core.Holder.Reference.Type; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.HolderLookup.RegistryLookup.Delegate; import net.minecraft.core.HolderSet.Named; import net.minecraft.core.RegistrySetBuilder.3.1; @@ -32,7 +34,7 @@ import org.jetbrains.annotations.Nullable; public class RegistrySetBuilder { private final List> entries = new ArrayList(); - static HolderGetter wrapContextLookup(HolderLookup.RegistryLookup owner) { + static HolderGetter wrapContextLookup(RegistryLookup owner) { return new RegistrySetBuilder.EmptyTagLookup(owner) { @Override public Optional> get(ResourceKey resourceKey) { @@ -41,7 +43,7 @@ public class RegistrySetBuilder { }; } - static HolderLookup.RegistryLookup lookupFromMap( + static RegistryLookup lookupFromMap( ResourceKey> registryKey, Lifecycle registryLifecycle, HolderOwner owner, Map, Reference> elements ) { return new RegistrySetBuilder.EmptyTagRegistryLookup(owner) { @@ -84,15 +86,13 @@ public class RegistrySetBuilder { return buildState; } - private static HolderLookup.Provider buildProviderWithContext( - RegistrySetBuilder.UniversalOwner owner, RegistryAccess registryAccess, Stream> lookups - ) { - record Entry(HolderLookup.RegistryLookup lookup, RegistryInfo opsInfo) { - public static Entry createForContextRegistry(HolderLookup.RegistryLookup lookup) { + private static Provider buildProviderWithContext(RegistrySetBuilder.UniversalOwner owner, RegistryAccess registryAccess, Stream> lookups) { + record Entry(RegistryLookup lookup, RegistryInfo opsInfo) { + public static Entry createForContextRegistry(RegistryLookup lookup) { return new Entry<>(new RegistrySetBuilder.EmptyTagLookupWrapper<>(lookup, lookup), RegistryInfo.fromRegistryLookup(lookup)); } - public static Entry createForNewRegistry(RegistrySetBuilder.UniversalOwner owner, HolderLookup.RegistryLookup lookup) { + public static Entry createForNewRegistry(RegistrySetBuilder.UniversalOwner owner, RegistryLookup lookup) { return new Entry<>( new RegistrySetBuilder.EmptyTagLookupWrapper<>(owner.cast(), lookup), new RegistryInfo<>(owner.cast(), lookup, lookup.registryLifecycle()) ); @@ -102,7 +102,7 @@ public class RegistrySetBuilder { final Map>, Entry> map = new HashMap(); registryAccess.registries().forEach(registryEntry -> map.put(registryEntry.key(), Entry.createForContextRegistry(registryEntry.value()))); lookups.forEach(registryLookup -> map.put(registryLookup.key(), Entry.createForNewRegistry(owner, registryLookup))); - return new HolderLookup.Provider() { + return new Provider() { @Override public Stream>> listRegistryKeys() { return map.keySet().stream(); @@ -113,7 +113,7 @@ public class RegistrySetBuilder { } @Override - public Optional> lookup(ResourceKey> registryKey) { + public Optional> lookup(ResourceKey> registryKey) { return this.getEntry(registryKey).map(Entry::lookup); } @@ -124,57 +124,57 @@ public class RegistrySetBuilder { }; } - public HolderLookup.Provider build(RegistryAccess registryAccess) { + public Provider build(RegistryAccess registryAccess) { RegistrySetBuilder.BuildState buildState = this.createState(registryAccess); - Stream> stream = this.entries + Stream> stream = this.entries .stream() .map(registryStub -> registryStub.collectRegisteredValues(buildState).buildAsLookup(buildState.owner)); - HolderLookup.Provider provider = buildProviderWithContext(buildState.owner, registryAccess, stream); + Provider provider = buildProviderWithContext(buildState.owner, registryAccess, stream); buildState.reportNotCollectedHolders(); buildState.reportUnclaimedRegisteredValues(); buildState.throwOnError(); return provider; } - private HolderLookup.Provider createLazyFullPatchedRegistries( + private Provider createLazyFullPatchedRegistries( RegistryAccess registry, - HolderLookup.Provider lookupProvider, + Provider lookupProvider, Factory clonerFactory, Map>, RegistrySetBuilder.RegistryContents> registries, - HolderLookup.Provider registryLookupProvider + Provider registryLookupProvider ) { RegistrySetBuilder.UniversalOwner universalOwner = new RegistrySetBuilder.UniversalOwner(); - MutableObject mutableObject = new MutableObject<>(); - List> list = (List>)registries.keySet() + MutableObject mutableObject = new MutableObject<>(); + List> list = (List>)registries.keySet() .stream() .map(resourceKey -> this.createLazyFullPatchedRegistries(universalOwner, clonerFactory, resourceKey, registryLookupProvider, lookupProvider, mutableObject)) .collect(Collectors.toUnmodifiableList()); - HolderLookup.Provider provider = buildProviderWithContext(universalOwner, registry, list.stream()); + Provider provider = buildProviderWithContext(universalOwner, registry, list.stream()); mutableObject.setValue(provider); return provider; } - private HolderLookup.RegistryLookup createLazyFullPatchedRegistries( + private RegistryLookup createLazyFullPatchedRegistries( HolderOwner owner, Factory clonerFactory, ResourceKey> registryKey, - HolderLookup.Provider registryLookupProvider, - HolderLookup.Provider lookupProvider, - MutableObject object + Provider registryLookupProvider, + Provider lookupProvider, + MutableObject object ) { Cloner cloner = clonerFactory.cloner(registryKey); if (cloner == null) { throw new NullPointerException("No cloner for " + registryKey.location()); } else { Map, Reference> map = new HashMap(); - HolderLookup.RegistryLookup registryLookup = registryLookupProvider.lookupOrThrow(registryKey); + RegistryLookup registryLookup = registryLookupProvider.lookupOrThrow(registryKey); registryLookup.listElements().forEach(reference -> { ResourceKey resourceKey = reference.key(); RegistrySetBuilder.LazyHolder lazyHolder = new RegistrySetBuilder.LazyHolder<>(owner, resourceKey); lazyHolder.supplier = () -> cloner.clone((T)reference.value(), registryLookupProvider, object.getValue()); map.put(resourceKey, lazyHolder); }); - HolderLookup.RegistryLookup registryLookup2 = lookupProvider.lookupOrThrow(registryKey); + RegistryLookup registryLookup2 = lookupProvider.lookupOrThrow(registryKey); registryLookup2.listElements().forEach(reference -> { ResourceKey resourceKey = reference.key(); map.computeIfAbsent(resourceKey, resourceKey2 -> { @@ -188,7 +188,7 @@ public class RegistrySetBuilder { } } - public RegistrySetBuilder.PatchedRegistries buildPatch(RegistryAccess registryAccess, HolderLookup.Provider lookupProvider, Factory clonerFactory) { + public RegistrySetBuilder.PatchedRegistries buildPatch(RegistryAccess registryAccess, Provider lookupProvider, Factory clonerFactory) { RegistrySetBuilder.BuildState buildState = this.createState(registryAccess); Map>, RegistrySetBuilder.RegistryContents> map = new HashMap(); this.entries @@ -200,11 +200,11 @@ public class RegistrySetBuilder { lookupProvider.listRegistryKeys() .filter(resourceKey -> !set.contains(resourceKey)) .forEach(resourceKey -> map.putIfAbsent(resourceKey, new RegistrySetBuilder.RegistryContents(resourceKey, Lifecycle.stable(), Map.of()))); - Stream> stream = map.values().stream().map(registryContents -> registryContents.buildAsLookup(buildState.owner)); - HolderLookup.Provider provider = buildProviderWithContext(buildState.owner, registryAccess, stream); + Stream> stream = map.values().stream().map(registryContents -> registryContents.buildAsLookup(buildState.owner)); + Provider provider = buildProviderWithContext(buildState.owner, registryAccess, stream); buildState.reportUnclaimedRegisteredValues(); buildState.throwOnError(); - HolderLookup.Provider provider2 = this.createLazyFullPatchedRegistries(registryAccess, lookupProvider, clonerFactory, map, provider); + Provider provider2 = this.createLazyFullPatchedRegistries(registryAccess, lookupProvider, clonerFactory, map, provider); return new RegistrySetBuilder.PatchedRegistries(provider2, provider); } @@ -269,19 +269,19 @@ public class RegistrySetBuilder { } static class EmptyTagLookupWrapper extends RegistrySetBuilder.EmptyTagRegistryLookup implements Delegate { - private final HolderLookup.RegistryLookup parent; + private final RegistryLookup parent; - EmptyTagLookupWrapper(HolderOwner owner, HolderLookup.RegistryLookup parent) { + EmptyTagLookupWrapper(HolderOwner owner, RegistryLookup parent) { super(owner); this.parent = parent; } - public HolderLookup.RegistryLookup parent() { + public RegistryLookup parent() { return this.parent; } } - abstract static class EmptyTagRegistryLookup extends RegistrySetBuilder.EmptyTagLookup implements HolderLookup.RegistryLookup { + abstract static class EmptyTagRegistryLookup extends RegistrySetBuilder.EmptyTagLookup implements RegistryLookup { protected EmptyTagRegistryLookup(HolderOwner holderOwner) { super(holderOwner); } @@ -316,7 +316,7 @@ public class RegistrySetBuilder { } } - public record PatchedRegistries(HolderLookup.Provider full, HolderLookup.Provider patches) { + public record PatchedRegistries(Provider full, Provider patches) { } record RegisteredValue(T value, Lifecycle lifecycle) { @@ -331,7 +331,7 @@ public class RegistrySetBuilder { ResourceKey> key, Lifecycle lifecycle, Map, RegistrySetBuilder.ValueAndHolder> values ) { - public HolderLookup.RegistryLookup buildAsLookup(RegistrySetBuilder.UniversalOwner owner) { + public RegistryLookup buildAsLookup(RegistrySetBuilder.UniversalOwner owner) { Map, Reference> map = (Map, Reference>)this.values .entrySet() .stream() @@ -372,8 +372,8 @@ public class RegistrySetBuilder { static class UniversalLookup extends RegistrySetBuilder.EmptyTagLookup { final Map, Reference> holders = new HashMap(); - public UniversalLookup(HolderOwner owner) { - super(owner); + public UniversalLookup(HolderOwner holderOwner) { + super(holderOwner); } @Override diff --git a/net/minecraft/core/SectionPos.java b/net/minecraft/core/SectionPos.java index 1d696ef1..8bf21fdb 100644 --- a/net/minecraft/core/SectionPos.java +++ b/net/minecraft/core/SectionPos.java @@ -29,8 +29,8 @@ public class SectionPos extends Vec3i { private static final int RELATIVE_Y_SHIFT = 0; private static final int RELATIVE_Z_SHIFT = 4; - SectionPos(int x, int y, int z) { - super(x, y, z); + SectionPos(int i, int j, int k) { + super(i, j, k); } public static SectionPos of(int chunkX, int chunkY, int chunkZ) { @@ -216,8 +216,8 @@ public class SectionPos extends Vec3i { return asLong(this.x(), this.y(), this.z()); } - public SectionPos offset(int dx, int dy, int dz) { - return dx == 0 && dy == 0 && dz == 0 ? this : new SectionPos(this.x() + dx, this.y() + dy, this.z() + dz); + public SectionPos offset(int i, int j, int k) { + return i == 0 && j == 0 && k == 0 ? this : new SectionPos(this.x() + i, this.y() + j, this.z() + k); } public Stream blocksInside() { diff --git a/net/minecraft/core/cauldron/CauldronInteraction.java b/net/minecraft/core/cauldron/CauldronInteraction.java index 49f5b50c..17152995 100644 --- a/net/minecraft/core/cauldron/CauldronInteraction.java +++ b/net/minecraft/core/cauldron/CauldronInteraction.java @@ -220,11 +220,11 @@ public interface CauldronInteraction { } static InteractionResult emptyBucket( - Level level, BlockPos pos, Player player, InteractionHand hand, ItemStack filledStackl, BlockState state, SoundEvent emptySound + Level level, BlockPos pos, Player player, InteractionHand hand, ItemStack filledStack, BlockState state, SoundEvent emptySound ) { if (!level.isClientSide) { - Item item = filledStackl.getItem(); - player.setItemInHand(hand, ItemUtils.createFilledResult(filledStackl, player, new ItemStack(Items.BUCKET))); + Item item = filledStack.getItem(); + player.setItemInHand(hand, ItemUtils.createFilledResult(filledStack, player, new ItemStack(Items.BUCKET))); player.awardStat(Stats.FILL_CAULDRON); player.awardStat(Stats.ITEM_USED.get(item)); level.setBlockAndUpdate(pos, state); diff --git a/net/minecraft/core/component/DataComponentPatch.java b/net/minecraft/core/component/DataComponentPatch.java index 8f116c6e..e3711bf3 100644 --- a/net/minecraft/core/component/DataComponentPatch.java +++ b/net/minecraft/core/component/DataComponentPatch.java @@ -55,9 +55,9 @@ public final class DataComponentPatch { return reference2ObjectMap; }); public static final StreamCodec STREAM_CODEC = new StreamCodec() { - public DataComponentPatch decode(RegistryFriendlyByteBuf buffer) { - int i = buffer.readVarInt(); - int j = buffer.readVarInt(); + public DataComponentPatch decode(RegistryFriendlyByteBuf registryFriendlyByteBuf) { + int i = registryFriendlyByteBuf.readVarInt(); + int j = registryFriendlyByteBuf.readVarInt(); if (i == 0 && j == 0) { return DataComponentPatch.EMPTY; } else { @@ -65,13 +65,13 @@ public final class DataComponentPatch { Reference2ObjectMap, Optional> reference2ObjectMap = new Reference2ObjectArrayMap<>(Math.min(k, 65536)); for (int l = 0; l < i; l++) { - DataComponentType dataComponentType = DataComponentType.STREAM_CODEC.decode(buffer); - Object object = dataComponentType.streamCodec().decode(buffer); + DataComponentType dataComponentType = DataComponentType.STREAM_CODEC.decode(registryFriendlyByteBuf); + Object object = dataComponentType.streamCodec().decode(registryFriendlyByteBuf); reference2ObjectMap.put(dataComponentType, Optional.of(object)); } for (int l = 0; l < j; l++) { - DataComponentType dataComponentType = DataComponentType.STREAM_CODEC.decode(buffer); + DataComponentType dataComponentType = DataComponentType.STREAM_CODEC.decode(registryFriendlyByteBuf); reference2ObjectMap.put(dataComponentType, Optional.empty()); } @@ -79,15 +79,17 @@ public final class DataComponentPatch { } } - public void encode(RegistryFriendlyByteBuf buffer, DataComponentPatch value) { - if (value.isEmpty()) { - buffer.writeVarInt(0); - buffer.writeVarInt(0); + public void encode(RegistryFriendlyByteBuf registryFriendlyByteBuf, DataComponentPatch dataComponentPatch) { + if (dataComponentPatch.isEmpty()) { + registryFriendlyByteBuf.writeVarInt(0); + registryFriendlyByteBuf.writeVarInt(0); } else { int i = 0; int j = 0; - for (it.unimi.dsi.fastutil.objects.Reference2ObjectMap.Entry, Optional> entry : Reference2ObjectMaps.fastIterable(value.map)) { + for (it.unimi.dsi.fastutil.objects.Reference2ObjectMap.Entry, Optional> entry : Reference2ObjectMaps.fastIterable( + dataComponentPatch.map + )) { if (((Optional)entry.getValue()).isPresent()) { i++; } else { @@ -95,22 +97,26 @@ public final class DataComponentPatch { } } - buffer.writeVarInt(i); - buffer.writeVarInt(j); + registryFriendlyByteBuf.writeVarInt(i); + registryFriendlyByteBuf.writeVarInt(j); - for (it.unimi.dsi.fastutil.objects.Reference2ObjectMap.Entry, Optional> entryx : Reference2ObjectMaps.fastIterable(value.map)) { + for (it.unimi.dsi.fastutil.objects.Reference2ObjectMap.Entry, Optional> entryx : Reference2ObjectMaps.fastIterable( + dataComponentPatch.map + )) { Optional optional = (Optional)entryx.getValue(); if (optional.isPresent()) { DataComponentType dataComponentType = (DataComponentType)entryx.getKey(); - DataComponentType.STREAM_CODEC.encode(buffer, dataComponentType); - encodeComponent(buffer, dataComponentType, optional.get()); + DataComponentType.STREAM_CODEC.encode(registryFriendlyByteBuf, dataComponentType); + encodeComponent(registryFriendlyByteBuf, dataComponentType, optional.get()); } } - for (it.unimi.dsi.fastutil.objects.Reference2ObjectMap.Entry, Optional> entryxx : Reference2ObjectMaps.fastIterable(value.map)) { + for (it.unimi.dsi.fastutil.objects.Reference2ObjectMap.Entry, Optional> entryxx : Reference2ObjectMaps.fastIterable( + dataComponentPatch.map + )) { if (((Optional)entryxx.getValue()).isEmpty()) { DataComponentType dataComponentType2 = (DataComponentType)entryxx.getKey(); - DataComponentType.STREAM_CODEC.encode(buffer, dataComponentType2); + DataComponentType.STREAM_CODEC.encode(registryFriendlyByteBuf, dataComponentType2); } } } diff --git a/net/minecraft/core/component/PatchedDataComponentMap.java b/net/minecraft/core/component/PatchedDataComponentMap.java index 716d688a..8632d02f 100644 --- a/net/minecraft/core/component/PatchedDataComponentMap.java +++ b/net/minecraft/core/component/PatchedDataComponentMap.java @@ -62,6 +62,10 @@ public final class PatchedDataComponentMap implements DataComponentMap { return (T)(optional != null ? optional.orElse(null) : this.prototype.get(component)); } + public boolean hasNonDefault(DataComponentType component) { + return this.patch.containsKey(component); + } + @Nullable public T set(DataComponentType component, @Nullable T value) { this.ensureMapOwnership(); @@ -209,6 +213,10 @@ public final class PatchedDataComponentMap implements DataComponentMap { return new PatchedDataComponentMap(this.prototype, this.patch, true); } + public DataComponentMap toImmutableMap() { + return (DataComponentMap)(this.patch.isEmpty() ? this.prototype : this.copy()); + } + public boolean equals(Object object) { return this == object ? true diff --git a/net/minecraft/core/component/TypedDataComponent.java b/net/minecraft/core/component/TypedDataComponent.java index cbc0c66b..81f8f20a 100644 --- a/net/minecraft/core/component/TypedDataComponent.java +++ b/net/minecraft/core/component/TypedDataComponent.java @@ -9,17 +9,17 @@ import net.minecraft.network.codec.StreamCodec; public record TypedDataComponent(DataComponentType type, T value) { public static final StreamCodec> STREAM_CODEC = new StreamCodec>() { - public TypedDataComponent decode(RegistryFriendlyByteBuf buffer) { - DataComponentType dataComponentType = DataComponentType.STREAM_CODEC.decode(buffer); - return decodeTyped(buffer, (DataComponentType)dataComponentType); + public TypedDataComponent decode(RegistryFriendlyByteBuf registryFriendlyByteBuf) { + DataComponentType dataComponentType = DataComponentType.STREAM_CODEC.decode(registryFriendlyByteBuf); + return decodeTyped(registryFriendlyByteBuf, (DataComponentType)dataComponentType); } private static TypedDataComponent decodeTyped(RegistryFriendlyByteBuf buffer, DataComponentType component) { return new TypedDataComponent<>(component, component.streamCodec().decode(buffer)); } - public void encode(RegistryFriendlyByteBuf buffer, TypedDataComponent value) { - encodeCap(buffer, (TypedDataComponent)value); + public void encode(RegistryFriendlyByteBuf registryFriendlyByteBuf, TypedDataComponent typedDataComponent) { + encodeCap(registryFriendlyByteBuf, (TypedDataComponent)typedDataComponent); } private static void encodeCap(RegistryFriendlyByteBuf buffer, TypedDataComponent component) { diff --git a/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java b/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java index 8ae9fce2..e64446e5 100644 --- a/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java @@ -2,6 +2,7 @@ package net.minecraft.core.dispenser; import net.minecraft.core.Direction; import net.minecraft.core.Position; +import net.minecraft.core.Direction.Axis; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -30,7 +31,7 @@ public class DefaultDispenseItemBehavior implements DispenseItemBehavior { double d = position.x(); double e = position.y(); double f = position.z(); - if (facing.getAxis() == Direction.Axis.Y) { + if (facing.getAxis() == Axis.Y) { e -= 0.125; } else { e -= 0.15625; diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java index b664cc75..904202c1 100644 --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java @@ -80,7 +80,7 @@ public interface DispenseItemBehavior { @Override public ItemStack execute(BlockSource blockSource, ItemStack item) { Direction direction = blockSource.state().getValue(DispenserBlock.FACING); - EntityType entityType = ((SpawnEggItem)item.getItem()).getType(item); + EntityType entityType = ((SpawnEggItem)item.getItem()).getType(blockSource.level().registryAccess(), item); try { entityType.spawn(blockSource.level(), item, null, blockSource.pos().relative(direction), EntitySpawnReason.DISPENSER, direction != Direction.UP, false); diff --git a/net/minecraft/core/particles/ParticleTypes.java b/net/minecraft/core/particles/ParticleTypes.java index 48acbc88..5270318f 100644 --- a/net/minecraft/core/particles/ParticleTypes.java +++ b/net/minecraft/core/particles/ParticleTypes.java @@ -55,6 +55,7 @@ public class ParticleTypes { public static final SimpleParticleType FLAME = register("flame", false); public static final SimpleParticleType INFESTED = register("infested", false); public static final SimpleParticleType CHERRY_LEAVES = register("cherry_leaves", false); + public static final SimpleParticleType PALE_OAK_LEAVES = register("pale_oak_leaves", false); public static final SimpleParticleType SCULK_SOUL = register("sculk_soul", false); public static final ParticleType SCULK_CHARGE = register( "sculk_charge", true, particleType -> SculkChargeParticleOptions.CODEC, particleType -> SculkChargeParticleOptions.STREAM_CODEC @@ -71,8 +72,8 @@ public class ParticleTypes { public static final ParticleType VIBRATION = register( "vibration", true, particleType -> VibrationParticleOption.CODEC, particleType -> VibrationParticleOption.STREAM_CODEC ); - public static final ParticleType TRAIL = register( - "trail", false, particleType -> TargetColorParticleOption.CODEC, particleType -> TargetColorParticleOption.STREAM_CODEC + public static final ParticleType TRAIL = register( + "trail", false, particleType -> TrailParticleOption.CODEC, particleType -> TrailParticleOption.STREAM_CODEC ); public static final SimpleParticleType ITEM_SLIME = register("item_slime", false); public static final SimpleParticleType ITEM_COBWEB = register("item_cobweb", false); diff --git a/net/minecraft/core/particles/TargetColorParticleOption.java b/net/minecraft/core/particles/TargetColorParticleOption.java deleted file mode 100644 index d51fc235..00000000 --- a/net/minecraft/core/particles/TargetColorParticleOption.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.minecraft.core.particles; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.ByteBufCodecs; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.util.ExtraCodecs; -import net.minecraft.world.phys.Vec3; - -public record TargetColorParticleOption(Vec3 target, int color) implements ParticleOptions { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( - instance -> instance.group( - Vec3.CODEC.fieldOf("target").forGetter(TargetColorParticleOption::target), - ExtraCodecs.RGB_COLOR_CODEC.fieldOf("color").forGetter(TargetColorParticleOption::color) - ) - .apply(instance, TargetColorParticleOption::new) - ); - public static final StreamCodec STREAM_CODEC = StreamCodec.composite( - Vec3.STREAM_CODEC, TargetColorParticleOption::target, ByteBufCodecs.INT, TargetColorParticleOption::color, TargetColorParticleOption::new - ); - - @Override - public ParticleType getType() { - return ParticleTypes.TRAIL; - } -} diff --git a/net/minecraft/core/particles/TrailParticleOption.java b/net/minecraft/core/particles/TrailParticleOption.java new file mode 100644 index 00000000..d2fe0c40 --- /dev/null +++ b/net/minecraft/core/particles/TrailParticleOption.java @@ -0,0 +1,34 @@ +package net.minecraft.core.particles; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.phys.Vec3; + +public record TrailParticleOption(Vec3 target, int color, int duration) implements ParticleOptions { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group( + Vec3.CODEC.fieldOf("target").forGetter(TrailParticleOption::target), + ExtraCodecs.RGB_COLOR_CODEC.fieldOf("color").forGetter(TrailParticleOption::color), + ExtraCodecs.POSITIVE_INT.fieldOf("duration").forGetter(TrailParticleOption::duration) + ) + .apply(instance, TrailParticleOption::new) + ); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + Vec3.STREAM_CODEC, + TrailParticleOption::target, + ByteBufCodecs.INT, + TrailParticleOption::color, + ByteBufCodecs.VAR_INT, + TrailParticleOption::duration, + TrailParticleOption::new + ); + + @Override + public ParticleType getType() { + return ParticleTypes.TRAIL; + } +} diff --git a/net/minecraft/data/BlockFamilies.java b/net/minecraft/data/BlockFamilies.java index 6e2f43c6..9bdc2047 100644 --- a/net/minecraft/data/BlockFamilies.java +++ b/net/minecraft/data/BlockFamilies.java @@ -345,6 +345,12 @@ public class BlockFamilies { .slab(Blocks.TUFF_BRICK_SLAB) .chiseled(Blocks.CHISELED_TUFF_BRICKS) .getFamily(); + public static final BlockFamily RESIN_BRICKS = familyBuilder(Blocks.RESIN_BRICKS) + .wall(Blocks.RESIN_BRICK_WALL) + .stairs(Blocks.RESIN_BRICK_STAIRS) + .slab(Blocks.RESIN_BRICK_SLAB) + .chiseled(Blocks.CHISELED_RESIN_BRICKS) + .getFamily(); public static final BlockFamily NETHER_BRICKS = familyBuilder(Blocks.NETHER_BRICKS) .fence(Blocks.NETHER_BRICK_FENCE) .wall(Blocks.NETHER_BRICK_WALL) diff --git a/net/minecraft/data/DataProvider.java b/net/minecraft/data/DataProvider.java index fa788ef9..b9318dc9 100644 --- a/net/minecraft/data/DataProvider.java +++ b/net/minecraft/data/DataProvider.java @@ -17,10 +17,10 @@ import java.nio.file.Path; import java.util.Comparator; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.function.Function; import java.util.function.ToIntFunction; import net.minecraft.Util; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput.PathProvider; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; @@ -42,16 +42,23 @@ public interface DataProvider { */ String getName(); - static CompletableFuture saveAll(CachedOutput output, Codec codec, PathProvider pathProvider, Map entries) { - return CompletableFuture.allOf( - (CompletableFuture[])entries.entrySet() - .stream() - .map(entry -> saveStable(output, codec, (T)entry.getValue(), pathProvider.json((ResourceLocation)entry.getKey()))) - .toArray(CompletableFuture[]::new) - ); + static CompletableFuture saveAll(CachedOutput output, Codec codec, PackOutput.PathProvider pathProvider, Map entries) { + return saveAll(output, codec, pathProvider::json, (Map)entries); } - static CompletableFuture saveStable(CachedOutput output, HolderLookup.Provider registries, Codec codec, T value, Path path) { + static CompletableFuture saveAll(CachedOutput output, Codec codec, Function pathGetter, Map entries) { + return saveAll(output, object -> codec.encodeStart(JsonOps.INSTANCE, (E)object).getOrThrow(), pathGetter, entries); + } + + static CompletableFuture saveAll(CachedOutput output, Function serializer, Function pathGetter, Map entries) { + return CompletableFuture.allOf((CompletableFuture[])entries.entrySet().stream().map(entry -> { + Path path = (Path)pathGetter.apply(entry.getKey()); + JsonElement jsonElement = (JsonElement)serializer.apply(entry.getValue()); + return saveStable(output, jsonElement, path); + }).toArray(CompletableFuture[]::new)); + } + + static CompletableFuture saveStable(CachedOutput output, Provider registries, Codec codec, T value, Path path) { RegistryOps registryOps = registries.createSerializationContext(JsonOps.INSTANCE); return saveStable(output, registryOps, codec, value, path); } diff --git a/net/minecraft/data/HashCache.java b/net/minecraft/data/HashCache.java index f1d4939c..f7c34dc3 100644 --- a/net/minecraft/data/HashCache.java +++ b/net/minecraft/data/HashCache.java @@ -150,14 +150,14 @@ public class HashCache { ); } - class CacheUpdater implements CachedOutput { + static class CacheUpdater implements CachedOutput { private final String provider; private final HashCache.ProviderCache oldCache; private final HashCache.ProviderCacheBuilder newCache; private final AtomicInteger writes = new AtomicInteger(); private volatile boolean closed; - CacheUpdater(final String provider, final String version, final HashCache.ProviderCache oldCache) { + CacheUpdater(String provider, String version, HashCache.ProviderCache oldCache) { this.provider = provider; this.oldCache = oldCache; this.newCache = new HashCache.ProviderCacheBuilder(version); diff --git a/net/minecraft/data/Main.java b/net/minecraft/data/Main.java index 3f9b207a..0aa7814e 100644 --- a/net/minecraft/data/Main.java +++ b/net/minecraft/data/Main.java @@ -6,18 +6,16 @@ import java.nio.file.Paths; import java.util.Collection; import java.util.concurrent.CompletableFuture; import java.util.function.BiFunction; -import java.util.stream.Collectors; import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.OptionSpec; import net.minecraft.SharedConstants; +import net.minecraft.SuppressForbidden; import net.minecraft.Util; -import net.minecraft.WorldVersion; -import net.minecraft.core.HolderLookup; import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.DataGenerator.PackGenerator; import net.minecraft.data.advancements.packs.VanillaAdvancementProvider; -import net.minecraft.data.advancements.packs.WinterDropAdvancementProvider; import net.minecraft.data.info.BiomeParametersDumpReport; import net.minecraft.data.info.BlockListReport; import net.minecraft.data.info.CommandsReport; @@ -27,16 +25,11 @@ import net.minecraft.data.info.PacketReport; import net.minecraft.data.info.RegistryDumpReport; import net.minecraft.data.loot.packs.TradeRebalanceLootTableProvider; import net.minecraft.data.loot.packs.VanillaLootTableProvider; -import net.minecraft.data.loot.packs.WinterDropLootTableProvider; import net.minecraft.data.metadata.PackMetadataGenerator; -import net.minecraft.data.models.EquipmentModelProvider; -import net.minecraft.data.models.ModelProvider; import net.minecraft.data.recipes.packs.VanillaRecipeProvider; -import net.minecraft.data.recipes.packs.WinterDropRecipeProvider; import net.minecraft.data.registries.RegistriesDatapackGenerator; import net.minecraft.data.registries.TradeRebalanceRegistries; import net.minecraft.data.registries.VanillaRegistries; -import net.minecraft.data.registries.WinterDropRegistries; import net.minecraft.data.structures.NbtToSnbt; import net.minecraft.data.structures.SnbtToNbt; import net.minecraft.data.structures.StructureUpdater; @@ -58,10 +51,6 @@ import net.minecraft.data.tags.TradeRebalanceStructureTagsProvider; import net.minecraft.data.tags.VanillaBlockTagsProvider; import net.minecraft.data.tags.VanillaEnchantmentTagsProvider; import net.minecraft.data.tags.VanillaItemTagsProvider; -import net.minecraft.data.tags.WinterDropBiomeTagsProvider; -import net.minecraft.data.tags.WinterDropBlockTagsProvider; -import net.minecraft.data.tags.WinterDropEntityTypeTagsProvider; -import net.minecraft.data.tags.WinterDropItemTagsProvider; import net.minecraft.data.tags.WorldPresetTagsProvider; import net.minecraft.network.chat.Component; import net.minecraft.obfuscate.DontObfuscate; @@ -74,39 +63,31 @@ import net.minecraft.world.level.block.entity.BannerPattern; import net.minecraft.world.level.levelgen.structure.Structure; public class Main { + @SuppressForbidden( + reason = "System.out needed before bootstrap" + ) @DontObfuscate public static void main(String[] strings) throws IOException { SharedConstants.tryDetectVersion(); OptionParser optionParser = new OptionParser(); OptionSpec optionSpec = optionParser.accepts("help", "Show the help menu").forHelp(); OptionSpec optionSpec2 = optionParser.accepts("server", "Include server generators"); - OptionSpec optionSpec3 = optionParser.accepts("client", "Include client generators"); - OptionSpec optionSpec4 = optionParser.accepts("dev", "Include development tools"); - OptionSpec optionSpec5 = optionParser.accepts("reports", "Include data reports"); - OptionSpec optionSpec6 = optionParser.accepts("validate", "Validate inputs"); - OptionSpec optionSpec7 = optionParser.accepts("all", "Include all generators"); - OptionSpec optionSpec8 = optionParser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated"); - OptionSpec optionSpec9 = optionParser.accepts("input", "Input folder").withRequiredArg(); + OptionSpec optionSpec3 = optionParser.accepts("dev", "Include development tools"); + OptionSpec optionSpec4 = optionParser.accepts("reports", "Include data reports"); + optionParser.accepts("validate", "Validate inputs"); + OptionSpec optionSpec5 = optionParser.accepts("all", "Include all generators"); + OptionSpec optionSpec6 = optionParser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated"); + OptionSpec optionSpec7 = optionParser.accepts("input", "Input folder").withRequiredArg(); OptionSet optionSet = optionParser.parse(strings); if (!optionSet.has(optionSpec) && optionSet.hasOptions()) { - Path path = Paths.get(optionSpec8.value(optionSet)); - boolean bl = optionSet.has(optionSpec7); - boolean bl2 = bl || optionSet.has(optionSpec3); - boolean bl3 = bl || optionSet.has(optionSpec2); + Path path = Paths.get(optionSpec6.value(optionSet)); + boolean bl = optionSet.has(optionSpec5); + boolean bl2 = bl || optionSet.has(optionSpec2); + boolean bl3 = bl || optionSet.has(optionSpec3); boolean bl4 = bl || optionSet.has(optionSpec4); - boolean bl5 = bl || optionSet.has(optionSpec5); - boolean bl6 = bl || optionSet.has(optionSpec6); - DataGenerator dataGenerator = createStandardGenerator( - path, - (Collection)optionSet.valuesOf(optionSpec9).stream().map(string -> Paths.get(string)).collect(Collectors.toList()), - bl2, - bl3, - bl4, - bl5, - bl6, - SharedConstants.getCurrentVersion(), - true - ); + Collection collection = optionSet.valuesOf(optionSpec7).stream().map(string -> Paths.get(string)).toList(); + DataGenerator dataGenerator = new DataGenerator(path, SharedConstants.getCurrentVersion(), true); + addServerProviders(dataGenerator, collection, bl2, bl3, bl4); dataGenerator.run(); } else { optionParser.printHelpOn(System.out); @@ -114,106 +95,71 @@ public class Main { } private static DataProvider.Factory bindRegistries( - BiFunction, T> tagProviderFactory, CompletableFuture lookupProvider + BiFunction, T> tagProviderFactory, CompletableFuture lookupProvider ) { return packOutput -> (T)tagProviderFactory.apply(packOutput, lookupProvider); } - public static DataGenerator createStandardGenerator( - Path outputFolder, - Collection inputFolders, - boolean client, - boolean server, - boolean dev, - boolean reports, - boolean validate, - WorldVersion version, - boolean alwaysGenerate - ) { - DataGenerator dataGenerator = new DataGenerator(outputFolder, version, alwaysGenerate); - PackGenerator packGenerator = dataGenerator.getVanillaPack(client || server); - packGenerator.addProvider(packOutput -> new SnbtToNbt(packOutput, inputFolders).addFilter(new StructureUpdater())); - CompletableFuture completableFuture = CompletableFuture.supplyAsync(VanillaRegistries::createLookup, Util.backgroundExecutor()); - PackGenerator packGenerator2 = dataGenerator.getVanillaPack(client); - packGenerator2.addProvider(ModelProvider::new); - packGenerator2.addProvider(EquipmentModelProvider::new); - PackGenerator packGenerator3 = dataGenerator.getVanillaPack(server); - packGenerator3.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(VanillaAdvancementProvider::create, completableFuture)); - packGenerator3.addProvider(bindRegistries(VanillaLootTableProvider::create, completableFuture)); - packGenerator3.addProvider(bindRegistries(VanillaRecipeProvider.Runner::new, completableFuture)); - TagsProvider tagsProvider = packGenerator3.addProvider(bindRegistries(VanillaBlockTagsProvider::new, completableFuture)); - TagsProvider tagsProvider2 = packGenerator3.addProvider( + public static void addServerProviders(DataGenerator dataGenerator, Collection paths, boolean server, boolean dev, boolean reports) { + PackGenerator packGenerator = dataGenerator.getVanillaPack(server); + packGenerator.addProvider(packOutput -> new SnbtToNbt(packOutput, paths).addFilter(new StructureUpdater())); + CompletableFuture completableFuture = CompletableFuture.supplyAsync(VanillaRegistries::createLookup, Util.backgroundExecutor()); + PackGenerator packGenerator2 = dataGenerator.getVanillaPack(server); + packGenerator2.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(VanillaAdvancementProvider::create, completableFuture)); + packGenerator2.addProvider(bindRegistries(VanillaLootTableProvider::create, completableFuture)); + packGenerator2.addProvider(bindRegistries(VanillaRecipeProvider.Runner::new, completableFuture)); + TagsProvider tagsProvider = packGenerator2.addProvider(bindRegistries(VanillaBlockTagsProvider::new, completableFuture)); + TagsProvider tagsProvider2 = packGenerator2.addProvider( packOutput -> new VanillaItemTagsProvider(packOutput, completableFuture, tagsProvider.contentsGetter()) ); - TagsProvider tagsProvider3 = packGenerator3.addProvider(bindRegistries(BiomeTagsProvider::new, completableFuture)); - TagsProvider tagsProvider4 = packGenerator3.addProvider(bindRegistries(BannerPatternTagsProvider::new, completableFuture)); - TagsProvider tagsProvider5 = packGenerator3.addProvider(bindRegistries(StructureTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(CatVariantTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(DamageTypeTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(EntityTypeTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(FlatLevelGeneratorPresetTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(FluidTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(GameEventTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(InstrumentTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(PaintingVariantTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(PoiTypeTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(WorldPresetTagsProvider::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(VanillaEnchantmentTagsProvider::new, completableFuture)); - packGenerator3 = dataGenerator.getVanillaPack(dev); - packGenerator3.addProvider(packOutput -> new NbtToSnbt(packOutput, inputFolders)); - packGenerator3 = dataGenerator.getVanillaPack(reports); - packGenerator3.addProvider(bindRegistries(BiomeParametersDumpReport::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(ItemListReport::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(BlockListReport::new, completableFuture)); - packGenerator3.addProvider(bindRegistries(CommandsReport::new, completableFuture)); - packGenerator3.addProvider(RegistryDumpReport::new); - packGenerator3.addProvider(PacketReport::new); - packGenerator3.addProvider(DatapackStructureReport::new); + TagsProvider tagsProvider3 = packGenerator2.addProvider(bindRegistries(BiomeTagsProvider::new, completableFuture)); + TagsProvider tagsProvider4 = packGenerator2.addProvider(bindRegistries(BannerPatternTagsProvider::new, completableFuture)); + TagsProvider tagsProvider5 = packGenerator2.addProvider(bindRegistries(StructureTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(CatVariantTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(DamageTypeTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(EntityTypeTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(FlatLevelGeneratorPresetTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(FluidTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(GameEventTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(InstrumentTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(PaintingVariantTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(PoiTypeTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(WorldPresetTagsProvider::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(VanillaEnchantmentTagsProvider::new, completableFuture)); + packGenerator2 = dataGenerator.getVanillaPack(dev); + packGenerator2.addProvider(packOutput -> new NbtToSnbt(packOutput, paths)); + packGenerator2 = dataGenerator.getVanillaPack(reports); + packGenerator2.addProvider(bindRegistries(BiomeParametersDumpReport::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(ItemListReport::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(BlockListReport::new, completableFuture)); + packGenerator2.addProvider(bindRegistries(CommandsReport::new, completableFuture)); + packGenerator2.addProvider(RegistryDumpReport::new); + packGenerator2.addProvider(PacketReport::new); + packGenerator2.addProvider(DatapackStructureReport::new); CompletableFuture completableFuture2 = TradeRebalanceRegistries.createLookup(completableFuture); - CompletableFuture completableFuture3 = completableFuture2.thenApply(RegistrySetBuilder.PatchedRegistries::patches); - PackGenerator packGenerator4 = dataGenerator.getBuiltinDatapack(server, "trade_rebalance"); - packGenerator4.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completableFuture3)); - packGenerator4.addProvider( + CompletableFuture completableFuture3 = completableFuture2.thenApply(RegistrySetBuilder.PatchedRegistries::patches); + PackGenerator packGenerator3 = dataGenerator.getBuiltinDatapack(server, "trade_rebalance"); + packGenerator3.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completableFuture3)); + packGenerator3.addProvider( packOutput -> PackMetadataGenerator.forFeaturePack( packOutput, Component.translatable("dataPack.trade_rebalance.description"), FeatureFlagSet.of(FeatureFlags.TRADE_REBALANCE) ) ); - packGenerator4.addProvider(bindRegistries(TradeRebalanceLootTableProvider::create, completableFuture)); - packGenerator4.addProvider(bindRegistries(TradeRebalanceStructureTagsProvider::new, completableFuture)); - packGenerator4.addProvider(bindRegistries(TradeRebalanceEnchantmentTagsProvider::new, completableFuture)); - packGenerator3 = dataGenerator.getBuiltinDatapack(server, "redstone_experiments"); - packGenerator3.addProvider( + packGenerator3.addProvider(bindRegistries(TradeRebalanceLootTableProvider::create, completableFuture)); + packGenerator3.addProvider(bindRegistries(TradeRebalanceStructureTagsProvider::new, completableFuture)); + packGenerator3.addProvider(bindRegistries(TradeRebalanceEnchantmentTagsProvider::new, completableFuture)); + packGenerator2 = dataGenerator.getBuiltinDatapack(server, "redstone_experiments"); + packGenerator2.addProvider( packOutput -> PackMetadataGenerator.forFeaturePack( packOutput, Component.translatable("dataPack.redstone_experiments.description"), FeatureFlagSet.of(FeatureFlags.REDSTONE_EXPERIMENTS) ) ); - packGenerator3 = dataGenerator.getBuiltinDatapack(server, "minecart_improvements"); - packGenerator3.addProvider( + packGenerator2 = dataGenerator.getBuiltinDatapack(server, "minecart_improvements"); + packGenerator2.addProvider( packOutput -> PackMetadataGenerator.forFeaturePack( packOutput, Component.translatable("dataPack.minecart_improvements.description"), FeatureFlagSet.of(FeatureFlags.MINECART_IMPROVEMENTS) ) ); - CompletableFuture completableFuture2x = WinterDropRegistries.createLookup(completableFuture); - completableFuture3 = completableFuture2x.thenApply(RegistrySetBuilder.PatchedRegistries::full); - packGenerator4 = dataGenerator.getBuiltinDatapack(server, "winter_drop"); - packGenerator4.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completableFuture2x.thenApply(RegistrySetBuilder.PatchedRegistries::patches))); - packGenerator4.addProvider(bindRegistries(WinterDropRecipeProvider.Runner::new, completableFuture3)); - TagsProvider tagsProvider6 = packGenerator4.addProvider( - packOutput -> new WinterDropBlockTagsProvider(packOutput, completableFuture3, tagsProvider.contentsGetter()) - ); - packGenerator4.addProvider( - packOutput -> new WinterDropItemTagsProvider(packOutput, completableFuture3, tagsProvider2.contentsGetter(), tagsProvider6.contentsGetter()) - ); - packGenerator4.addProvider(packOutput -> new WinterDropBiomeTagsProvider(packOutput, completableFuture3, tagsProvider3.contentsGetter())); - packGenerator4.addProvider(bindRegistries(WinterDropLootTableProvider::create, completableFuture3)); - packGenerator4.addProvider( - packOutput -> PackMetadataGenerator.forFeaturePack( - packOutput, Component.translatable("dataPack.winter_drop.description"), FeatureFlagSet.of(FeatureFlags.WINTER_DROP) - ) - ); - packGenerator4.addProvider(bindRegistries(WinterDropEntityTypeTagsProvider::new, completableFuture3)); - packGenerator4.addProvider(bindRegistries(WinterDropAdvancementProvider::create, completableFuture3)); - return dataGenerator; } } diff --git a/net/minecraft/data/PackOutput.java b/net/minecraft/data/PackOutput.java index 07e7a8ba..4d9bc5d0 100644 --- a/net/minecraft/data/PackOutput.java +++ b/net/minecraft/data/PackOutput.java @@ -49,6 +49,10 @@ public class PackOutput { public Path json(ResourceLocation location) { return this.root.resolve(location.getNamespace()).resolve(this.kind).resolve(location.getPath() + ".json"); } + + public Path json(ResourceKey key) { + return this.root.resolve(key.location().getNamespace()).resolve(this.kind).resolve(key.location().getPath() + ".json"); + } } public static enum Target { diff --git a/net/minecraft/data/advancements/AdvancementProvider.java b/net/minecraft/data/advancements/AdvancementProvider.java index 9e6b3a41..c68ea30c 100644 --- a/net/minecraft/data/advancements/AdvancementProvider.java +++ b/net/minecraft/data/advancements/AdvancementProvider.java @@ -9,20 +9,19 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.resources.ResourceLocation; public class AdvancementProvider implements DataProvider { - private final PathProvider pathProvider; + private final PackOutput.PathProvider pathProvider; private final List subProviders; - private final CompletableFuture registries; + private final CompletableFuture registries; - public AdvancementProvider(PackOutput output, CompletableFuture registries, List subProviders) { + public AdvancementProvider(PackOutput output, CompletableFuture registries, List subProviders) { this.pathProvider = output.createRegistryElementsPathProvider(Registries.ADVANCEMENT); this.subProviders = subProviders; this.registries = registries; diff --git a/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java b/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java index ba59350d..ac40bbca 100644 --- a/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java +++ b/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java @@ -8,33 +8,25 @@ import java.util.Set; import java.util.function.Consumer; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementRequirements; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.AdvancementType; import net.minecraft.advancements.Criterion; -import net.minecraft.advancements.Advancement.Builder; import net.minecraft.advancements.AdvancementRequirements.Strategy; -import net.minecraft.advancements.critereon.BlockPredicate; import net.minecraft.advancements.critereon.DistancePredicate; import net.minecraft.advancements.critereon.EntityEquipmentPredicate; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.ItemJukeboxPlayablePredicate; -import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.ItemSubPredicates; -import net.minecraft.advancements.critereon.KilledByArrowTrigger; import net.minecraft.advancements.critereon.LightningBoltPredicate; -import net.minecraft.advancements.critereon.PlayerPredicate; -import net.minecraft.advancements.critereon.PlayerTrigger; -import net.minecraft.advancements.critereon.RecipeCraftedTrigger; -import net.minecraft.advancements.critereon.ShotCrossbowTrigger; import net.minecraft.advancements.critereon.TagPredicate; -import net.minecraft.advancements.critereon.UsedTotemTrigger; +import net.minecraft.advancements.critereon.EntityPredicate.Builder; import net.minecraft.advancements.critereon.LootTableTrigger.TriggerInstance; import net.minecraft.advancements.critereon.MinMaxBounds.Doubles; import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderGetter; -import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderSet; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.data.advancements.AdvancementSubProvider; @@ -52,7 +44,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biomes; -import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList.Preset; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.ComparatorBlock; @@ -78,6 +70,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { EntityType.BOGGED, EntityType.BREEZE, EntityType.CAVE_SPIDER, + EntityType.CREAKING, EntityType.CREEPER, EntityType.DROWNED, EntityType.ELDER_GUARDIAN, @@ -117,29 +110,26 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) { return net.minecraft.advancements.critereon.LightningStrikeTrigger.TriggerInstance.lightningStrike( Optional.of( - EntityPredicate.Builder.entity() - .distance(DistancePredicate.absolute(Doubles.atMost(30.0))) - .subPredicate(LightningBoltPredicate.blockSetOnFire(fireCount)) - .build() + Builder.entity().distance(DistancePredicate.absolute(Doubles.atMost(30.0))).subPredicate(LightningBoltPredicate.blockSetOnFire(fireCount)).build() ), bystander ); } private static Criterion lookAtThroughItem( - EntityPredicate.Builder builder, ItemPredicate.Builder item + Builder builder, net.minecraft.advancements.critereon.ItemPredicate.Builder item ) { return net.minecraft.advancements.critereon.UsingItemTrigger.TriggerInstance.lookingAt( - EntityPredicate.Builder.entity().subPredicate(PlayerPredicate.Builder.player().setLookingAt(builder).build()), item + Builder.entity().subPredicate(net.minecraft.advancements.critereon.PlayerPredicate.Builder.player().setLookingAt(builder).build()), item ); } @Override - public void generate(HolderLookup.Provider registries, Consumer writer) { + public void generate(Provider registries, Consumer writer) { HolderGetter> holderGetter = registries.lookupOrThrow(Registries.ENTITY_TYPE); HolderGetter holderGetter2 = registries.lookupOrThrow(Registries.ITEM); HolderGetter holderGetter3 = registries.lookupOrThrow(Registries.BLOCK); - AdvancementHolder advancementHolder = Builder.advancement() + AdvancementHolder advancementHolder = net.minecraft.advancements.Advancement.Builder.advancement() .display( Items.MAP, Component.translatable("advancements.adventure.root.title"), @@ -154,7 +144,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion("killed_something", net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity()) .addCriterion("killed_by_something", net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.entityKilledPlayer()) .save(writer, "adventure/root"); - AdvancementHolder advancementHolder2 = Builder.advancement() + AdvancementHolder advancementHolder2 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Blocks.RED_BED, @@ -166,10 +156,10 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .addCriterion("slept_in_bed", PlayerTrigger.TriggerInstance.sleptInBed()) + .addCriterion("slept_in_bed", net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.sleptInBed()) .save(writer, "adventure/sleep_in_bed"); - createAdventuringTime(registries, writer, advancementHolder2, MultiNoiseBiomeSourceParameterList.Preset.OVERWORLD); - AdvancementHolder advancementHolder3 = Builder.advancement() + createAdventuringTime(registries, writer, advancementHolder2, Preset.OVERWORLD); + AdvancementHolder advancementHolder3 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.EMERALD, @@ -183,7 +173,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion("traded", net.minecraft.advancements.critereon.TradeTrigger.TriggerInstance.tradedWithVillager()) .save(writer, "adventure/trade"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder3) .display( Items.EMERALD, @@ -198,12 +188,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion( "trade_at_world_height", net.minecraft.advancements.critereon.TradeTrigger.TriggerInstance.tradedWithVillager( - EntityPredicate.Builder.entity().located(net.minecraft.advancements.critereon.LocationPredicate.Builder.atYLocation(Doubles.atLeast(319.0))) + Builder.entity().located(net.minecraft.advancements.critereon.LocationPredicate.Builder.atYLocation(Doubles.atLeast(319.0))) ) ) .save(writer, "adventure/trade_at_world_height"); AdvancementHolder advancementHolder4 = createMonsterHunterAdvancement(advancementHolder, writer, holderGetter, MOBS_TO_KILL); - AdvancementHolder advancementHolder5 = Builder.advancement() + AdvancementHolder advancementHolder5 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder4) .display( Items.BOW, @@ -222,12 +212,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .type( net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType() .tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE)) - .direct(EntityPredicate.Builder.entity().of(holderGetter, EntityTypeTags.ARROWS)) + .direct(Builder.entity().of(holderGetter, EntityTypeTags.ARROWS)) ) ) ) .save(writer, "adventure/shoot_arrow"); - AdvancementHolder advancementHolder6 = Builder.advancement() + AdvancementHolder advancementHolder6 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder4) .display( Items.TRIDENT, @@ -246,12 +236,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .type( net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType() .tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE)) - .direct(EntityPredicate.Builder.entity().of(holderGetter, EntityType.TRIDENT)) + .direct(Builder.entity().of(holderGetter, EntityType.TRIDENT)) ) ) ) .save(writer, "adventure/throw_trident"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder6) .display( Items.TRIDENT, @@ -265,12 +255,10 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "struck_villager", - net.minecraft.advancements.critereon.ChanneledLightningTrigger.TriggerInstance.channeledLightning( - EntityPredicate.Builder.entity().of(holderGetter, EntityType.VILLAGER) - ) + net.minecraft.advancements.critereon.ChanneledLightningTrigger.TriggerInstance.channeledLightning(Builder.entity().of(holderGetter, EntityType.VILLAGER)) ) .save(writer, "adventure/very_very_frightening"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder3) .display( Blocks.CARVED_PUMPKIN, @@ -284,12 +272,10 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "summoned_golem", - net.minecraft.advancements.critereon.SummonedEntityTrigger.TriggerInstance.summonedEntity( - EntityPredicate.Builder.entity().of(holderGetter, EntityType.IRON_GOLEM) - ) + net.minecraft.advancements.critereon.SummonedEntityTrigger.TriggerInstance.summonedEntity(Builder.entity().of(holderGetter, EntityType.IRON_GOLEM)) ) .save(writer, "adventure/summon_iron_golem"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder5) .display( Items.ARROW, @@ -301,16 +287,16 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(50)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(50)) .addCriterion( "killed_skeleton", net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity( - EntityPredicate.Builder.entity().of(holderGetter, EntityType.SKELETON).distance(DistancePredicate.horizontal(Doubles.atLeast(50.0))), + Builder.entity().of(holderGetter, EntityType.SKELETON).distance(DistancePredicate.horizontal(Doubles.atLeast(50.0))), net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType().tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE)) ) ) .save(writer, "adventure/sniper_duel"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder4) .display( Items.TOTEM_OF_UNDYING, @@ -322,9 +308,9 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .addCriterion("used_totem", UsedTotemTrigger.TriggerInstance.usedTotem(holderGetter2, Items.TOTEM_OF_UNDYING)) + .addCriterion("used_totem", net.minecraft.advancements.critereon.UsedTotemTrigger.TriggerInstance.usedTotem(holderGetter2, Items.TOTEM_OF_UNDYING)) .save(writer, "adventure/totem_of_undying"); - AdvancementHolder advancementHolder7 = Builder.advancement() + AdvancementHolder advancementHolder7 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.CROSSBOW, @@ -336,9 +322,9 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .addCriterion("shot_crossbow", ShotCrossbowTrigger.TriggerInstance.shotCrossbow(holderGetter2, Items.CROSSBOW)) + .addCriterion("shot_crossbow", net.minecraft.advancements.critereon.ShotCrossbowTrigger.TriggerInstance.shotCrossbow(holderGetter2, Items.CROSSBOW)) .save(writer, "adventure/ol_betsy"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder7) .display( Items.CROSSBOW, @@ -351,10 +337,13 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { false ) .addCriterion( - "kill_pillager", KilledByArrowTrigger.TriggerInstance.crossbowKilled(holderGetter2, EntityPredicate.Builder.entity().of(holderGetter, EntityType.PILLAGER)) + "kill_pillager", + net.minecraft.advancements.critereon.KilledByArrowTrigger.TriggerInstance.crossbowKilled( + holderGetter2, Builder.entity().of(holderGetter, EntityType.PILLAGER) + ) ) .save(writer, "adventure/whos_the_pillager_now"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder7) .display( Items.CROSSBOW, @@ -366,17 +355,15 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(65)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(65)) .addCriterion( "two_birds", - KilledByArrowTrigger.TriggerInstance.crossbowKilled( - holderGetter2, - EntityPredicate.Builder.entity().of(holderGetter, EntityType.PHANTOM), - EntityPredicate.Builder.entity().of(holderGetter, EntityType.PHANTOM) + net.minecraft.advancements.critereon.KilledByArrowTrigger.TriggerInstance.crossbowKilled( + holderGetter2, Builder.entity().of(holderGetter, EntityType.PHANTOM), Builder.entity().of(holderGetter, EntityType.PHANTOM) ) ) .save(writer, "adventure/two_birds_one_arrow"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder7) .display( Items.CROSSBOW, @@ -388,11 +375,11 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, true ) - .rewards(AdvancementRewards.Builder.experience(85)) - .addCriterion("arbalistic", KilledByArrowTrigger.TriggerInstance.crossbowKilled(holderGetter2, Ints.exactly(5))) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(85)) + .addCriterion("arbalistic", net.minecraft.advancements.critereon.KilledByArrowTrigger.TriggerInstance.crossbowKilled(holderGetter2, Ints.exactly(5))) .save(writer, "adventure/arbalistic"); - HolderLookup.RegistryLookup registryLookup = registries.lookupOrThrow(Registries.BANNER_PATTERN); - AdvancementHolder advancementHolder8 = Builder.advancement() + RegistryLookup registryLookup = registries.lookupOrThrow(Registries.BANNER_PATTERN); + AdvancementHolder advancementHolder8 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Raid.getOminousBannerInstance(registryLookup), @@ -407,13 +394,11 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion( "voluntary_exile", net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity( - EntityPredicate.Builder.entity() - .of(holderGetter, EntityTypeTags.RAIDERS) - .equipment(EntityEquipmentPredicate.captainPredicate(holderGetter2, registryLookup)) + Builder.entity().of(holderGetter, EntityTypeTags.RAIDERS).equipment(EntityEquipmentPredicate.captainPredicate(holderGetter2, registryLookup)) ) ) .save(writer, "adventure/voluntary_exile"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder8) .display( Raid.getOminousBannerInstance(registryLookup), @@ -425,10 +410,10 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, true ) - .rewards(AdvancementRewards.Builder.experience(100)) - .addCriterion("hero_of_the_village", PlayerTrigger.TriggerInstance.raidWon()) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(100)) + .addCriterion("hero_of_the_village", net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.raidWon()) .save(writer, "adventure/hero_of_the_village"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Blocks.HONEY_BLOCK.asItem(), @@ -442,7 +427,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion("honey_block_slide", net.minecraft.advancements.critereon.SlideDownBlockTrigger.TriggerInstance.slidesDownBlock(Blocks.HONEY_BLOCK)) .save(writer, "adventure/honey_block_slide"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder5) .display( Blocks.TARGET.asItem(), @@ -454,15 +439,15 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(50)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(50)) .addCriterion( "bullseye", net.minecraft.advancements.critereon.TargetBlockTrigger.TriggerInstance.targetHit( - Ints.exactly(15), Optional.of(EntityPredicate.wrap(EntityPredicate.Builder.entity().distance(DistancePredicate.horizontal(Doubles.atLeast(30.0))))) + Ints.exactly(15), Optional.of(EntityPredicate.wrap(Builder.entity().distance(DistancePredicate.horizontal(Doubles.atLeast(30.0))))) ) ) .save(writer, "adventure/bullseye"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder2) .display( Items.LEATHER_BOOTS, @@ -476,10 +461,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "walk_on_powder_snow_with_leather_boots", - PlayerTrigger.TriggerInstance.walkOnBlockWithEquipment(holderGetter3, holderGetter2, Blocks.POWDER_SNOW, Items.LEATHER_BOOTS) + net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.walkOnBlockWithEquipment( + holderGetter3, holderGetter2, Blocks.POWDER_SNOW, Items.LEATHER_BOOTS + ) ) .save(writer, "adventure/walk_on_powder_snow_with_leather_boots"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.LIGHTNING_ROD, @@ -492,11 +479,10 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { false ) .addCriterion( - "lightning_rod_with_villager_no_fire", - fireCountAndBystander(Ints.exactly(0), Optional.of(EntityPredicate.Builder.entity().of(holderGetter, EntityType.VILLAGER).build())) + "lightning_rod_with_villager_no_fire", fireCountAndBystander(Ints.exactly(0), Optional.of(Builder.entity().of(holderGetter, EntityType.VILLAGER).build())) ) .save(writer, "adventure/lightning_rod_with_villager_no_fire"); - AdvancementHolder advancementHolder9 = Builder.advancement() + AdvancementHolder advancementHolder9 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.SPYGLASS, @@ -510,10 +496,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "spyglass_at_parrot", - lookAtThroughItem(EntityPredicate.Builder.entity().of(holderGetter, EntityType.PARROT), ItemPredicate.Builder.item().of(holderGetter2, Items.SPYGLASS)) + lookAtThroughItem( + Builder.entity().of(holderGetter, EntityType.PARROT), net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.SPYGLASS) + ) ) .save(writer, "adventure/spyglass_at_parrot"); - AdvancementHolder advancementHolder10 = Builder.advancement() + AdvancementHolder advancementHolder10 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder9) .display( Items.SPYGLASS, @@ -527,10 +515,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "spyglass_at_ghast", - lookAtThroughItem(EntityPredicate.Builder.entity().of(holderGetter, EntityType.GHAST), ItemPredicate.Builder.item().of(holderGetter2, Items.SPYGLASS)) + lookAtThroughItem( + Builder.entity().of(holderGetter, EntityType.GHAST), net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.SPYGLASS) + ) ) .save(writer, "adventure/spyglass_at_ghast"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder2) .display( Items.JUKEBOX, @@ -547,12 +537,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock( net.minecraft.advancements.critereon.LocationPredicate.Builder.location() .setBiomes(HolderSet.direct(registries.lookupOrThrow(Registries.BIOME).getOrThrow(Biomes.MEADOW))) - .setBlock(BlockPredicate.Builder.block().of(holderGetter3, Blocks.JUKEBOX)), - ItemPredicate.Builder.item().withSubPredicate(ItemSubPredicates.JUKEBOX_PLAYABLE, ItemJukeboxPlayablePredicate.any()) + .setBlock(net.minecraft.advancements.critereon.BlockPredicate.Builder.block().of(holderGetter3, Blocks.JUKEBOX)), + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().withSubPredicate(ItemSubPredicates.JUKEBOX_PLAYABLE, ItemJukeboxPlayablePredicate.any()) ) ) .save(writer, "adventure/play_jukebox_in_meadows"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder10) .display( Items.SPYGLASS, @@ -567,11 +557,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion( "spyglass_at_dragon", lookAtThroughItem( - EntityPredicate.Builder.entity().of(holderGetter, EntityType.ENDER_DRAGON), ItemPredicate.Builder.item().of(holderGetter2, Items.SPYGLASS) + Builder.entity().of(holderGetter, EntityType.ENDER_DRAGON), + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.SPYGLASS) ) ) .save(writer, "adventure/spyglass_at_dragon"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.WATER_BUCKET, @@ -586,13 +577,13 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion( "fall_from_world_height", net.minecraft.advancements.critereon.DistanceTrigger.TriggerInstance.fallFromHeight( - EntityPredicate.Builder.entity().located(net.minecraft.advancements.critereon.LocationPredicate.Builder.atYLocation(Doubles.atMost(-59.0))), + Builder.entity().located(net.minecraft.advancements.critereon.LocationPredicate.Builder.atYLocation(Doubles.atMost(-59.0))), DistancePredicate.vertical(Doubles.atLeast(379.0)), net.minecraft.advancements.critereon.LocationPredicate.Builder.atYLocation(Doubles.atLeast(319.0)) ) ) .save(writer, "adventure/fall_from_world_height"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder4) .display( Blocks.SCULK_CATALYST, @@ -606,7 +597,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion("kill_mob_near_sculk_catalyst", net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntityNearSculkCatalyst()) .save(writer, "adventure/kill_mob_near_sculk_catalyst"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Blocks.SCULK_SENSOR, @@ -618,9 +609,9 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .addCriterion("avoid_vibration", PlayerTrigger.TriggerInstance.avoidVibration()) + .addCriterion("avoid_vibration", net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.avoidVibration()) .save(writer, "adventure/avoid_vibration"); - AdvancementHolder advancementHolder11 = respectingTheRemnantsCriterions(holderGetter2, Builder.advancement()) + AdvancementHolder advancementHolder11 = respectingTheRemnantsCriterions(holderGetter2, net.minecraft.advancements.Advancement.Builder.advancement()) .parent(advancementHolder) .display( Items.BRUSH, @@ -633,7 +624,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { false ) .save(writer, "adventure/salvage_sherd"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder11) .display( DecoratedPotBlockEntity.createDecoratedPotItem( @@ -649,18 +640,18 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "pot_crafted_using_only_sherds", - RecipeCraftedTrigger.TriggerInstance.craftedItem( + net.minecraft.advancements.critereon.RecipeCraftedTrigger.TriggerInstance.craftedItem( ResourceKey.create(Registries.RECIPE, ResourceLocation.withDefaultNamespace("decorated_pot")), List.of( - ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS), - ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS), - ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS), - ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS) + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS), + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS), + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS), + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, ItemTags.DECORATED_POT_SHERDS) ) ) ) .save(writer, "adventure/craft_decorated_pot_using_only_sherds"); - AdvancementHolder advancementHolder12 = craftingANewLook(Builder.advancement()) + AdvancementHolder advancementHolder12 = craftingANewLook(net.minecraft.advancements.Advancement.Builder.advancement()) .parent(advancementHolder) .display( new ItemStack(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE), @@ -673,7 +664,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { false ) .save(writer, "adventure/trim_with_any_armor_pattern"); - smithingWithStyle(Builder.advancement()) + smithingWithStyle(net.minecraft.advancements.Advancement.Builder.advancement()) .parent(advancementHolder12) .display( new ItemStack(Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE), @@ -685,9 +676,9 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(150)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(150)) .save(writer, "adventure/trim_with_all_exclusive_armor_patterns"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.CHISELED_BOOKSHELF, @@ -703,7 +694,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion("chiseled_bookshelf", placedBlockReadByComparator(holderGetter3, Blocks.CHISELED_BOOKSHELF)) .addCriterion("comparator", placedComparatorReadingBlock(holderGetter3, Blocks.CHISELED_BOOKSHELF)) .save(writer, "adventure/read_power_of_chiseled_bookshelf"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.ARMADILLO_SCUTE, @@ -718,12 +709,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion( "brush_armadillo", net.minecraft.advancements.critereon.PlayerInteractTrigger.TriggerInstance.itemUsedOnEntity( - ItemPredicate.Builder.item().of(holderGetter2, Items.BRUSH), - Optional.of(EntityPredicate.wrap(EntityPredicate.Builder.entity().of(holderGetter, EntityType.ARMADILLO))) + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.BRUSH), + Optional.of(EntityPredicate.wrap(Builder.entity().of(holderGetter, EntityType.ARMADILLO))) ) ) .save(writer, "adventure/brush_armadillo"); - AdvancementHolder advancementHolder13 = Builder.advancement() + AdvancementHolder advancementHolder13 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Blocks.CHISELED_TUFF, @@ -737,14 +728,14 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "minecraft_trials_edition", - PlayerTrigger.TriggerInstance.located( + net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.located( net.minecraft.advancements.critereon.LocationPredicate.Builder.inStructure( registries.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.TRIAL_CHAMBERS) ) ) ) .save(writer, "adventure/minecraft_trials_edition"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder13) .display( Items.COPPER_BULB, @@ -761,7 +752,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock( net.minecraft.advancements.critereon.LocationPredicate.Builder.location() .setBlock( - BlockPredicate.Builder.block() + net.minecraft.advancements.critereon.BlockPredicate.Builder.block() .of( holderGetter3, Blocks.OXIDIZED_COPPER_BULB, @@ -773,11 +764,11 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .setProperties(net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties().hasProperty(CopperBulbBlock.LIT, true)) ), - ItemPredicate.Builder.item().of(holderGetter2, VanillaHusbandryAdvancements.WAX_SCRAPING_TOOLS) + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, VanillaHusbandryAdvancements.WAX_SCRAPING_TOOLS) ) ) .save(writer, "adventure/lighten_up"); - AdvancementHolder advancementHolder14 = Builder.advancement() + AdvancementHolder advancementHolder14 = net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder13) .display( Items.TRIAL_KEY, @@ -794,15 +785,15 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock( net.minecraft.advancements.critereon.LocationPredicate.Builder.location() .setBlock( - BlockPredicate.Builder.block() + net.minecraft.advancements.critereon.BlockPredicate.Builder.block() .of(holderGetter3, Blocks.VAULT) .setProperties(net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties().hasProperty(VaultBlock.OMINOUS, false)) ), - ItemPredicate.Builder.item().of(holderGetter2, Items.TRIAL_KEY) + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.TRIAL_KEY) ) ) .save(writer, "adventure/under_lock_and_key"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder14) .display( Items.OMINOUS_TRIAL_KEY, @@ -819,15 +810,15 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock( net.minecraft.advancements.critereon.LocationPredicate.Builder.location() .setBlock( - BlockPredicate.Builder.block() + net.minecraft.advancements.critereon.BlockPredicate.Builder.block() .of(holderGetter3, Blocks.VAULT) .setProperties(net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties().hasProperty(VaultBlock.OMINOUS, true)) ), - ItemPredicate.Builder.item().of(holderGetter2, Items.OMINOUS_TRIAL_KEY) + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.OMINOUS_TRIAL_KEY) ) ) .save(writer, "adventure/revaulting"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder13) .display( Items.WIND_CHARGE, @@ -839,18 +830,18 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(40)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(40)) .addCriterion( "blowback", net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity( - EntityPredicate.Builder.entity().of(holderGetter, EntityType.BREEZE), + Builder.entity().of(holderGetter, EntityType.BREEZE), net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType() .tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE)) - .direct(EntityPredicate.Builder.entity().of(holderGetter, EntityType.BREEZE_WIND_CHARGE)) + .direct(Builder.entity().of(holderGetter, EntityType.BREEZE_WIND_CHARGE)) ) ) .save(writer, "adventure/blowback"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder) .display( Items.CRAFTER, @@ -864,10 +855,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .addCriterion( "crafter_crafted_crafter", - RecipeCraftedTrigger.TriggerInstance.crafterCraftedItem(ResourceKey.create(Registries.RECIPE, ResourceLocation.withDefaultNamespace("crafter"))) + net.minecraft.advancements.critereon.RecipeCraftedTrigger.TriggerInstance.crafterCraftedItem( + ResourceKey.create(Registries.RECIPE, ResourceLocation.withDefaultNamespace("crafter")) + ) ) .save(writer, "adventure/crafters_crafting_crafters"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder13) .display( Items.WIND_CHARGE, @@ -882,11 +875,11 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { .addCriterion( "who_needs_rockets", net.minecraft.advancements.critereon.FallAfterExplosionTrigger.TriggerInstance.fallAfterExplosion( - DistancePredicate.vertical(Doubles.atLeast(7.0)), EntityPredicate.Builder.entity().of(holderGetter, EntityType.WIND_CHARGE) + DistancePredicate.vertical(Doubles.atLeast(7.0)), Builder.entity().of(holderGetter, EntityType.WIND_CHARGE) ) ) .save(writer, "adventure/who_needs_rockets"); - Builder.advancement() + net.minecraft.advancements.Advancement.Builder.advancement() .parent(advancementHolder13) .display( Items.MACE, @@ -898,7 +891,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(50)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(50)) .addCriterion( "overoverkill", net.minecraft.advancements.critereon.PlayerHurtEntityTrigger.TriggerInstance.playerHurtEntityWithDamage( @@ -908,9 +901,12 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType() .tag(TagPredicate.is(DamageTypeTags.IS_MACE_SMASH)) .direct( - EntityPredicate.Builder.entity() + Builder.entity() .of(holderGetter, EntityType.PLAYER) - .equipment(EntityEquipmentPredicate.Builder.equipment().mainhand(ItemPredicate.Builder.item().of(holderGetter2, Items.MACE))) + .equipment( + net.minecraft.advancements.critereon.EntityEquipmentPredicate.Builder.equipment() + .mainhand(net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(holderGetter2, Items.MACE)) + ) ) ) ) @@ -921,7 +917,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { public static AdvancementHolder createMonsterHunterAdvancement( AdvancementHolder parent, Consumer output, HolderGetter> entityTypeRegistry, List> typesRequired ) { - AdvancementHolder advancementHolder = addMobsToKill(Builder.advancement(), entityTypeRegistry, typesRequired) + AdvancementHolder advancementHolder = addMobsToKill(net.minecraft.advancements.Advancement.Builder.advancement(), entityTypeRegistry, typesRequired) .parent(parent) .display( Items.IRON_SWORD, @@ -935,7 +931,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .requirements(Strategy.OR) .save(output, "adventure/kill_a_mob"); - addMobsToKill(Builder.advancement(), entityTypeRegistry, typesRequired) + addMobsToKill(net.minecraft.advancements.Advancement.Builder.advancement(), entityTypeRegistry, typesRequired) .parent(advancementHolder) .display( Items.DIAMOND_SWORD, @@ -947,7 +943,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(100)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(100)) .save(output, "adventure/kill_all_mobs"); return advancementHolder; } @@ -962,7 +958,9 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { direction -> { net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder builder = net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties() .hasProperty(ComparatorBlock.FACING, direction); - BlockPredicate.Builder builder2 = BlockPredicate.Builder.block().of(blockRegistry, Blocks.COMPARATOR).setProperties(builder); + net.minecraft.advancements.critereon.BlockPredicate.Builder builder2 = net.minecraft.advancements.critereon.BlockPredicate.Builder.block() + .of(blockRegistry, Blocks.COMPARATOR) + .setProperties(builder); return LocationCheck.checkLocation( net.minecraft.advancements.critereon.LocationPredicate.Builder.location().setBlock(builder2), new BlockPos(direction.getOpposite().getUnitVec3i()) ); @@ -989,7 +987,8 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { ) .setProperties(builder); net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder builder3 = LocationCheck.checkLocation( - net.minecraft.advancements.critereon.LocationPredicate.Builder.location().setBlock(BlockPredicate.Builder.block().of(blockRegistry, block)), + net.minecraft.advancements.critereon.LocationPredicate.Builder.location() + .setBlock(net.minecraft.advancements.critereon.BlockPredicate.Builder.block().of(blockRegistry, block)), new BlockPos(direction.getUnitVec3i()) ); return AllOfCondition.allOf(builder2, builder3); @@ -999,7 +998,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { return net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger.TriggerInstance.placedBlock(AnyOfCondition.anyOf(builders)); } - private static Builder smithingWithStyle(Builder builder) { + private static net.minecraft.advancements.Advancement.Builder smithingWithStyle(net.minecraft.advancements.Advancement.Builder builder) { builder.requirements(Strategy.AND); Set set = Set.of( Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE, @@ -1014,20 +1013,28 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { VanillaRecipeProvider.smithingTrims() .filter(trimTemplate -> set.contains(trimTemplate.template())) .forEach( - trimTemplate -> builder.addCriterion("armor_trimmed_" + trimTemplate.id().location(), RecipeCraftedTrigger.TriggerInstance.craftedItem(trimTemplate.id())) + trimTemplate -> builder.addCriterion( + "armor_trimmed_" + trimTemplate.id().location(), net.minecraft.advancements.critereon.RecipeCraftedTrigger.TriggerInstance.craftedItem(trimTemplate.id()) + ) ); return builder; } - private static Builder craftingANewLook(Builder builder) { + private static net.minecraft.advancements.Advancement.Builder craftingANewLook(net.minecraft.advancements.Advancement.Builder builder) { builder.requirements(Strategy.OR); VanillaRecipeProvider.smithingTrims() .map(VanillaRecipeProvider.TrimTemplate::id) - .forEach(resourceKey -> builder.addCriterion("armor_trimmed_" + resourceKey.location(), RecipeCraftedTrigger.TriggerInstance.craftedItem(resourceKey))); + .forEach( + resourceKey -> builder.addCriterion( + "armor_trimmed_" + resourceKey.location(), net.minecraft.advancements.critereon.RecipeCraftedTrigger.TriggerInstance.craftedItem(resourceKey) + ) + ); return builder; } - private static Builder respectingTheRemnantsCriterions(HolderGetter itemRegistry, Builder builder) { + private static net.minecraft.advancements.Advancement.Builder respectingTheRemnantsCriterions( + HolderGetter itemRegistry, net.minecraft.advancements.Advancement.Builder builder + ) { List>> list = List.of( Pair.of("desert_pyramid", TriggerInstance.lootTableUsed(BuiltInLootTables.DESERT_PYRAMID_ARCHAEOLOGY)), Pair.of("desert_well", TriggerInstance.lootTableUsed(BuiltInLootTables.DESERT_WELL_ARCHAEOLOGY)), @@ -1041,17 +1048,15 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { builder.addCriterion( "has_sherd", net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.hasItems( - ItemPredicate.Builder.item().of(itemRegistry, ItemTags.DECORATED_POT_SHERDS) + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(itemRegistry, ItemTags.DECORATED_POT_SHERDS) ) ); builder.requirements(new AdvancementRequirements(List.of(list.stream().map(Pair::getFirst).toList(), List.of("has_sherd")))); return builder; } - protected static void createAdventuringTime( - HolderLookup.Provider levelRegistry, Consumer writer, AdvancementHolder parent, MultiNoiseBiomeSourceParameterList.Preset preset - ) { - addBiomes(Builder.advancement(), levelRegistry, preset.usedBiomes().toList()) + protected static void createAdventuringTime(Provider levelRegistry, Consumer writer, AdvancementHolder parent, Preset preset) { + addBiomes(net.minecraft.advancements.Advancement.Builder.advancement(), levelRegistry, preset.usedBiomes().toList()) .parent(parent) .display( Items.DIAMOND_BOOTS, @@ -1063,27 +1068,33 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { true, false ) - .rewards(AdvancementRewards.Builder.experience(500)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.experience(500)) .save(writer, "adventure/adventuring_time"); } - private static Builder addMobsToKill(Builder builder, HolderGetter> entityTypeRegistry, List> mobsToKill) { + private static net.minecraft.advancements.Advancement.Builder addMobsToKill( + net.minecraft.advancements.Advancement.Builder builder, HolderGetter> entityTypeRegistry, List> mobsToKill + ) { mobsToKill.forEach( entityType -> builder.addCriterion( BuiltInRegistries.ENTITY_TYPE.getKey(entityType).toString(), - net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity(EntityPredicate.Builder.entity().of(entityTypeRegistry, entityType)) + net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity(Builder.entity().of(entityTypeRegistry, entityType)) ) ); return builder; } - protected static Builder addBiomes(Builder builder, HolderLookup.Provider levelRegistry, List> biomes) { + protected static net.minecraft.advancements.Advancement.Builder addBiomes( + net.minecraft.advancements.Advancement.Builder builder, Provider levelRegistry, List> biomes + ) { HolderGetter holderGetter = levelRegistry.lookupOrThrow(Registries.BIOME); for (ResourceKey resourceKey : biomes) { builder.addCriterion( resourceKey.location().toString(), - PlayerTrigger.TriggerInstance.located(net.minecraft.advancements.critereon.LocationPredicate.Builder.inBiome(holderGetter.getOrThrow(resourceKey))) + net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.located( + net.minecraft.advancements.critereon.LocationPredicate.Builder.inBiome(holderGetter.getOrThrow(resourceKey)) + ) ); } diff --git a/net/minecraft/data/advancements/packs/WinterDropAdvancementProvider.java b/net/minecraft/data/advancements/packs/WinterDropAdvancementProvider.java deleted file mode 100644 index dcbff284..00000000 --- a/net/minecraft/data/advancements/packs/WinterDropAdvancementProvider.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.data.advancements.packs; - -import java.util.List; -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.data.advancements.AdvancementProvider; - -public class WinterDropAdvancementProvider { - public static AdvancementProvider create(PackOutput packOutput, CompletableFuture registries) { - return new AdvancementProvider(packOutput, registries, List.of(new WinterDropAdventureAdvancements())); - } -} diff --git a/net/minecraft/data/advancements/packs/WinterDropAdventureAdvancements.java b/net/minecraft/data/advancements/packs/WinterDropAdventureAdvancements.java deleted file mode 100644 index 88d90981..00000000 --- a/net/minecraft/data/advancements/packs/WinterDropAdventureAdvancements.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.data.advancements.packs; - -import java.util.List; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import net.minecraft.advancements.AdvancementHolder; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.advancements.AdvancementSubProvider; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; - -public class WinterDropAdventureAdvancements implements AdvancementSubProvider { - @Override - public void generate(HolderLookup.Provider registries, Consumer writer) { - AdvancementHolder advancementHolder = AdvancementSubProvider.createPlaceholder("adventure/root"); - VanillaAdventureAdvancements.createMonsterHunterAdvancement( - advancementHolder, - writer, - registries.lookupOrThrow(Registries.ENTITY_TYPE), - (List>)Stream.concat(VanillaAdventureAdvancements.MOBS_TO_KILL.stream(), Stream.of(EntityType.CREAKING_TRANSIENT)) - .collect(Collectors.toList()) - ); - AdvancementHolder advancementHolder2 = AdvancementSubProvider.createPlaceholder("adventure/sleep_in_bed"); - VanillaAdventureAdvancements.createAdventuringTime(registries, writer, advancementHolder2, MultiNoiseBiomeSourceParameterList.Preset.OVERWORLD_WINTER_DROP); - } -} diff --git a/net/minecraft/data/info/BiomeParametersDumpReport.java b/net/minecraft/data/info/BiomeParametersDumpReport.java index 5177cc2d..ea6ee451 100644 --- a/net/minecraft/data/info/BiomeParametersDumpReport.java +++ b/net/minecraft/data/info/BiomeParametersDumpReport.java @@ -12,12 +12,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; @@ -28,12 +27,12 @@ import org.slf4j.Logger; public class BiomeParametersDumpReport implements DataProvider { private static final Logger LOGGER = LogUtils.getLogger(); private final Path topPath; - private final CompletableFuture registries; + private final CompletableFuture registries; private static final MapCodec> ENTRY_CODEC = ResourceKey.codec(Registries.BIOME).fieldOf("biome"); private static final Codec>> CODEC = ParameterList.codec(ENTRY_CODEC).fieldOf("biomes").codec(); - public BiomeParametersDumpReport(PackOutput output, CompletableFuture registries) { - this.topPath = output.getOutputFolder(Target.REPORTS).resolve("biome_parameters"); + public BiomeParametersDumpReport(PackOutput output, CompletableFuture registries) { + this.topPath = output.getOutputFolder(PackOutput.Target.REPORTS).resolve("biome_parameters"); this.registries = registries; } diff --git a/net/minecraft/data/info/BlockListReport.java b/net/minecraft/data/info/BlockListReport.java index 080539e6..725c1b0c 100644 --- a/net/minecraft/data/info/BlockListReport.java +++ b/net/minecraft/data/info/BlockListReport.java @@ -7,12 +7,11 @@ import com.mojang.serialization.JsonOps; import java.nio.file.Path; import java.util.concurrent.CompletableFuture; import net.minecraft.Util; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; import net.minecraft.resources.RegistryOps; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.BlockTypes; @@ -22,16 +21,16 @@ import net.minecraft.world.level.block.state.properties.Property; public class BlockListReport implements DataProvider { private final PackOutput output; - private final CompletableFuture registries; + private final CompletableFuture registries; - public BlockListReport(PackOutput output, CompletableFuture registries) { + public BlockListReport(PackOutput output, CompletableFuture registries) { this.output = output; this.registries = registries; } @Override public CompletableFuture run(CachedOutput output) { - Path path = this.output.getOutputFolder(Target.REPORTS).resolve("blocks.json"); + Path path = this.output.getOutputFolder(PackOutput.Target.REPORTS).resolve("blocks.json"); return this.registries .thenCompose( provider -> { diff --git a/net/minecraft/data/info/CommandsReport.java b/net/minecraft/data/info/CommandsReport.java index 165c9b26..696600de 100644 --- a/net/minecraft/data/info/CommandsReport.java +++ b/net/minecraft/data/info/CommandsReport.java @@ -7,24 +7,23 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.Commands.CommandSelection; import net.minecraft.commands.synchronization.ArgumentUtils; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; public class CommandsReport implements DataProvider { private final PackOutput output; - private final CompletableFuture registries; + private final CompletableFuture registries; - public CommandsReport(PackOutput output, CompletableFuture registries) { + public CommandsReport(PackOutput output, CompletableFuture registries) { this.output = output; this.registries = registries; } @Override public CompletableFuture run(CachedOutput output) { - Path path = this.output.getOutputFolder(Target.REPORTS).resolve("commands.json"); + Path path = this.output.getOutputFolder(PackOutput.Target.REPORTS).resolve("commands.json"); return this.registries.thenCompose(provider -> { CommandDispatcher commandDispatcher = new Commands(CommandSelection.ALL, Commands.createValidationContext(provider)).getDispatcher(); return DataProvider.saveStable(output, ArgumentUtils.serializeNodeToJson(commandDispatcher, commandDispatcher.getRoot()), path); diff --git a/net/minecraft/data/info/DatapackStructureReport.java b/net/minecraft/data/info/DatapackStructureReport.java index 255f5b08..fdad361c 100644 --- a/net/minecraft/data/info/DatapackStructureReport.java +++ b/net/minecraft/data/info/DatapackStructureReport.java @@ -14,7 +14,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; import net.minecraft.resources.RegistryDataLoader; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -53,7 +52,7 @@ public class DatapackStructureReport implements DataProvider { @Override public CompletableFuture run(CachedOutput output) { DatapackStructureReport.Report report = new DatapackStructureReport.Report(this.listRegistries(), NON_REGISTRY_ENTRIES); - Path path = this.output.getOutputFolder(Target.REPORTS).resolve("datapack.json"); + Path path = this.output.getOutputFolder(PackOutput.Target.REPORTS).resolve("datapack.json"); return DataProvider.saveStable(output, DatapackStructureReport.Report.CODEC.encodeStart(JsonOps.INSTANCE, report).getOrThrow(), path); } diff --git a/net/minecraft/data/info/ItemListReport.java b/net/minecraft/data/info/ItemListReport.java index d3b6bc00..30280261 100644 --- a/net/minecraft/data/info/ItemListReport.java +++ b/net/minecraft/data/info/ItemListReport.java @@ -5,28 +5,27 @@ import com.google.gson.JsonObject; import com.mojang.serialization.JsonOps; import java.nio.file.Path; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.component.DataComponentMap; import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; import net.minecraft.resources.RegistryOps; import net.minecraft.world.item.Item; public class ItemListReport implements DataProvider { private final PackOutput output; - private final CompletableFuture registries; + private final CompletableFuture registries; - public ItemListReport(PackOutput output, CompletableFuture registries) { + public ItemListReport(PackOutput output, CompletableFuture registries) { this.output = output; this.registries = registries; } @Override public CompletableFuture run(CachedOutput output) { - Path path = this.output.getOutputFolder(Target.REPORTS).resolve("items.json"); + Path path = this.output.getOutputFolder(PackOutput.Target.REPORTS).resolve("items.json"); return this.registries .thenCompose( provider -> { diff --git a/net/minecraft/data/info/PacketReport.java b/net/minecraft/data/info/PacketReport.java index abd7b18f..b85b02c5 100644 --- a/net/minecraft/data/info/PacketReport.java +++ b/net/minecraft/data/info/PacketReport.java @@ -10,7 +10,6 @@ import java.util.stream.Stream; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; import net.minecraft.network.ProtocolInfo.Unbound; import net.minecraft.network.protocol.configuration.ConfigurationProtocols; import net.minecraft.network.protocol.game.GameProtocols; @@ -27,7 +26,7 @@ public class PacketReport implements DataProvider { @Override public CompletableFuture run(CachedOutput output) { - Path path = this.output.getOutputFolder(Target.REPORTS).resolve("packets.json"); + Path path = this.output.getOutputFolder(PackOutput.Target.REPORTS).resolve("packets.json"); return DataProvider.saveStable(output, this.serializePackets(), path); } diff --git a/net/minecraft/data/info/RegistryDumpReport.java b/net/minecraft/data/info/RegistryDumpReport.java index 7cd88d74..290f33e8 100644 --- a/net/minecraft/data/info/RegistryDumpReport.java +++ b/net/minecraft/data/info/RegistryDumpReport.java @@ -10,7 +10,6 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.Target; import net.minecraft.resources.ResourceLocation; public class RegistryDumpReport implements DataProvider { @@ -26,7 +25,7 @@ public class RegistryDumpReport implements DataProvider { BuiltInRegistries.REGISTRY .listElements() .forEach(reference -> jsonObject.add(reference.key().location().toString(), dumpRegistry((Registry)reference.value()))); - Path path = this.output.getOutputFolder(Target.REPORTS).resolve("registries.json"); + Path path = this.output.getOutputFolder(PackOutput.Target.REPORTS).resolve("registries.json"); return DataProvider.saveStable(output, jsonObject, path); } diff --git a/net/minecraft/data/loot/BlockLootSubProvider.java b/net/minecraft/data/loot/BlockLootSubProvider.java index 134d5248..308e97ea 100644 --- a/net/minecraft/data/loot/BlockLootSubProvider.java +++ b/net/minecraft/data/loot/BlockLootSubProvider.java @@ -9,15 +9,14 @@ import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.stream.IntStream; -import net.minecraft.advancements.critereon.BlockPredicate; import net.minecraft.advancements.critereon.EnchantmentPredicate; import net.minecraft.advancements.critereon.ItemEnchantmentsPredicate; -import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.ItemSubPredicates; import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; @@ -49,7 +48,8 @@ import net.minecraft.world.level.storage.loot.IntRange; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder; +import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; +import net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer; import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; import net.minecraft.world.level.storage.loot.functions.ApplyExplosionDecay; import net.minecraft.world.level.storage.loot.functions.CopyBlockState; @@ -57,6 +57,7 @@ import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction; import net.minecraft.world.level.storage.loot.functions.FunctionUserBuilder; import net.minecraft.world.level.storage.loot.functions.LimitCount; import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction.Source; import net.minecraft.world.level.storage.loot.predicates.BonusLevelTableCondition; import net.minecraft.world.level.storage.loot.predicates.ConditionUserBuilder; import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition; @@ -64,23 +65,24 @@ import net.minecraft.world.level.storage.loot.predicates.LocationCheck; import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; import net.minecraft.world.level.storage.loot.predicates.MatchTool; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder; import net.minecraft.world.level.storage.loot.providers.number.BinomialDistributionGenerator; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; public abstract class BlockLootSubProvider implements LootTableSubProvider { - protected final HolderLookup.Provider registries; + protected final Provider registries; protected final Set explosionResistant; protected final FeatureFlagSet enabledFeatures; protected final Map, LootTable.Builder> map; protected static final float[] NORMAL_LEAVES_SAPLING_CHANCES = new float[]{0.05F, 0.0625F, 0.083333336F, 0.1F}; private static final float[] NORMAL_LEAVES_STICK_CHANCES = new float[]{0.02F, 0.022222223F, 0.025F, 0.033333335F, 0.1F}; - protected net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder hasSilkTouch() { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + protected Builder hasSilkTouch() { + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return MatchTool.toolMatches( - ItemPredicate.Builder.item() + net.minecraft.advancements.critereon.ItemPredicate.Builder.item() .withSubPredicate( ItemSubPredicates.ENCHANTMENTS, ItemEnchantmentsPredicate.enchantments(List.of(new EnchantmentPredicate(registryLookup.getOrThrow(Enchantments.SILK_TOUCH), Ints.atLeast(1)))) @@ -88,28 +90,30 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { ); } - protected net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder doesNotHaveSilkTouch() { + protected Builder doesNotHaveSilkTouch() { return this.hasSilkTouch().invert(); } - protected net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder hasShears() { - return MatchTool.toolMatches(ItemPredicate.Builder.item().of(this.registries.lookupOrThrow(Registries.ITEM), Items.SHEARS)); + protected Builder hasShears() { + return MatchTool.toolMatches( + net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(this.registries.lookupOrThrow(Registries.ITEM), Items.SHEARS) + ); } - private net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder hasShearsOrSilkTouch() { + private Builder hasShearsOrSilkTouch() { return this.hasShears().or(this.hasSilkTouch()); } - private net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder doesNotHaveShearsOrSilkTouch() { + private Builder doesNotHaveShearsOrSilkTouch() { return this.hasShearsOrSilkTouch().invert(); } - protected BlockLootSubProvider(Set explosionResistant, FeatureFlagSet enabledFeatures, HolderLookup.Provider registries) { + protected BlockLootSubProvider(Set explosionResistant, FeatureFlagSet enabledFeatures, Provider registries) { this(explosionResistant, enabledFeatures, new HashMap(), registries); } protected BlockLootSubProvider( - Set explosionResistant, FeatureFlagSet enabledFeatures, Map, LootTable.Builder> map, HolderLookup.Provider registries + Set explosionResistant, FeatureFlagSet enabledFeatures, Map, LootTable.Builder> map, Provider registries ) { this.explosionResistant = explosionResistant; this.enabledFeatures = enabledFeatures; @@ -134,9 +138,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * If the condition from {@code conditionBuilder} succeeds, drops 1 {@code block}. * Otherwise, drops loot specified by {@code alternativeBuilder}. */ - private static LootTable.Builder createSelfDropDispatchTable( - Block block, net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder conditionBuilder, Builder alternativeBuilder - ) { + private static LootTable.Builder createSelfDropDispatchTable(Block block, Builder conditionBuilder, LootPoolEntryContainer.Builder alternativeBuilder) { return LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)).add(LootItem.lootTableItem(block).when(conditionBuilder).otherwise(alternativeBuilder))); } @@ -145,7 +147,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * If the block is mined with Silk Touch, drops 1 {@code block}. * Otherwise, drops loot specified by {@code builder}. */ - protected LootTable.Builder createSilkTouchDispatchTable(Block block, Builder builder) { + protected LootTable.Builder createSilkTouchDispatchTable(Block block, LootPoolEntryContainer.Builder builder) { return createSelfDropDispatchTable(block, this.hasSilkTouch(), builder); } @@ -153,7 +155,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * If the block is mined with Shears, drops 1 {@code block}. * Otherwise, drops loot specified by {@code builder}. */ - protected LootTable.Builder createShearsDispatchTable(Block block, Builder builder) { + protected LootTable.Builder createShearsDispatchTable(Block block, LootPoolEntryContainer.Builder builder) { return createSelfDropDispatchTable(block, this.hasShears(), builder); } @@ -161,12 +163,12 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * If the block is mined either with Silk Touch or Shears, drops 1 {@code block}. * Otherwise, drops loot specified by {@code builder}. */ - protected LootTable.Builder createSilkTouchOrShearsDispatchTable(Block block, Builder builder) { + protected LootTable.Builder createSilkTouchOrShearsDispatchTable(Block block, LootPoolEntryContainer.Builder builder) { return createSelfDropDispatchTable(block, this.hasShearsOrSilkTouch(), builder); } protected LootTable.Builder createSingleItemTableWithSilkTouch(Block block, ItemLike item) { - return this.createSilkTouchDispatchTable(block, (Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(item))); + return this.createSilkTouchDispatchTable(block, (LootPoolEntryContainer.Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(item))); } protected LootTable.Builder createSingleItemTable(ItemLike item, NumberProvider count) { @@ -174,13 +176,13 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .withPool( LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) - .add((Builder)this.applyExplosionDecay(item, LootItem.lootTableItem(item).apply(SetItemCountFunction.setCount(count)))) + .add((LootPoolEntryContainer.Builder)this.applyExplosionDecay(item, LootItem.lootTableItem(item).apply(SetItemCountFunction.setCount(count)))) ); } protected LootTable.Builder createSingleItemTableWithSilkTouch(Block block, ItemLike item, NumberProvider count) { return this.createSilkTouchDispatchTable( - block, (Builder)this.applyExplosionDecay(block, LootItem.lootTableItem(item).apply(SetItemCountFunction.setCount(count))) + block, (LootPoolEntryContainer.Builder)this.applyExplosionDecay(block, LootItem.lootTableItem(item).apply(SetItemCountFunction.setCount(count))) ); } @@ -202,7 +204,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add( - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(block) .apply( @@ -242,10 +244,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { block, LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) - .add( - LootItem.lootTableItem(block) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY).include(DataComponents.CUSTOM_NAME)) - ) + .add(LootItem.lootTableItem(block).apply(CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY).include(DataComponents.CUSTOM_NAME))) ) ); } @@ -260,7 +259,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .add( LootItem.lootTableItem(block) .apply( - CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) + CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY) .include(DataComponents.CUSTOM_NAME) .include(DataComponents.CONTAINER) .include(DataComponents.LOCK) @@ -272,10 +271,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createCopperOreDrops(Block block) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createSilkTouchDispatchTable( block, - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.RAW_COPPER) .apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 5.0F))) @@ -285,10 +284,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createLapisOreDrops(Block block) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createSilkTouchDispatchTable( block, - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.LAPIS_LAZULI) .apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 9.0F))) @@ -298,10 +297,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createRedstoneOreDrops(Block block) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createSilkTouchDispatchTable( block, - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.REDSTONE) .apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 5.0F))) @@ -320,7 +319,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .add( LootItem.lootTableItem(block) .apply( - CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) + CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY) .include(DataComponents.CUSTOM_NAME) .include(DataComponents.ITEM_NAME) .include(DataComponents.HIDE_ADDITIONAL_TOOLTIP) @@ -340,7 +339,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .setRolls(ConstantValue.exactly(1.0F)) .add( LootItem.lootTableItem(block) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY).include(DataComponents.BEES)) + .apply(CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY).include(DataComponents.BEES)) .apply(CopyBlockState.copyState(block).copy(BeehiveBlock.HONEY_LEVEL)) ) ); @@ -354,7 +353,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .add( LootItem.lootTableItem(block) .when(this.hasSilkTouch()) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY).include(DataComponents.BEES)) + .apply(CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY).include(DataComponents.BEES)) .apply(CopyBlockState.copyState(block).copy(BeehiveBlock.HONEY_LEVEL)) .otherwise(LootItem.lootTableItem(block)) ) @@ -374,10 +373,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createOreDrop(Block block, Item item) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createSilkTouchDispatchTable( block, - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(item).apply(ApplyBonusCount.addOreBonusCount(registryLookup.getOrThrow(Enchantments.FORTUNE))) ) ); @@ -386,7 +385,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { protected LootTable.Builder createMushroomBlockDrop(Block block, ItemLike item) { return this.createSilkTouchDispatchTable( block, - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(item) .apply(SetItemCountFunction.setCount(UniformGenerator.between(-6.0F, 2.0F))) @@ -396,10 +395,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createGrassDrops(Block block) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createShearsDispatchTable( block, - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.WHEAT_SEEDS) .when(LootItemRandomChanceCondition.randomChance(0.125F)) @@ -454,12 +453,12 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)).when(this.hasShearsOrSilkTouch()).add(LootItem.lootTableItem(item))); } - protected LootTable.Builder createMultifaceBlockDrops(Block block, net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder builder) { + protected LootTable.Builder createMultifaceBlockDrops(Block block, Builder builder) { return LootTable.lootTable() .withPool( LootPool.lootPool() .add( - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(block) .when(builder) @@ -479,12 +478,36 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { ); } + protected LootTable.Builder createMultifaceBlockDrops(Block block) { + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .add( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( + block, + LootItem.lootTableItem(block) + .apply( + Direction.values(), + direction -> SetItemCountFunction.setCount(ConstantValue.exactly(1.0F), true) + .when( + LootItemBlockStatePropertyCondition.hasBlockStateProperties(block) + .setProperties( + net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties().hasProperty(MultifaceBlock.getFaceProperty(direction), true) + ) + ) + ) + .apply(SetItemCountFunction.setCount(ConstantValue.exactly(-1.0F), true)) + ) + ) + ); + } + protected LootTable.Builder createMossyCarpetBlockDrops(Block block) { return LootTable.lootTable() .withPool( LootPool.lootPool() .add( - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(block) .when( @@ -500,12 +523,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * Used for all leaves, drops self with silk touch, otherwise drops the second Block param with the passed chances for fortune levels, adding in sticks. */ protected LootTable.Builder createLeavesDrops(Block leavesBlock, Block saplingBlock, float... chances) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createSilkTouchOrShearsDispatchTable( leavesBlock, - ((net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer.Builder)this.applyExplosionCondition( - leavesBlock, LootItem.lootTableItem(saplingBlock) - )) + ((LootPoolSingletonContainer.Builder)this.applyExplosionCondition(leavesBlock, LootItem.lootTableItem(saplingBlock))) .when(BonusLevelTableCondition.bonusLevelFlatChance(registryLookup.getOrThrow(Enchantments.FORTUNE), chances)) ) .withPool( @@ -513,7 +534,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { .setRolls(ConstantValue.exactly(1.0F)) .when(this.doesNotHaveShearsOrSilkTouch()) .add( - ((net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer.Builder)this.applyExplosionDecay( + ((LootPoolSingletonContainer.Builder)this.applyExplosionDecay( leavesBlock, LootItem.lootTableItem(Items.STICK).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))) )) .when(BonusLevelTableCondition.bonusLevelFlatChance(registryLookup.getOrThrow(Enchantments.FORTUNE), NORMAL_LEAVES_STICK_CHANCES)) @@ -525,16 +546,14 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * Used for oak and dark oak, same as droppingWithChancesAndSticks but adding in apples. */ protected LootTable.Builder createOakLeavesDrops(Block oakLeavesBlock, Block saplingBlock, float... chances) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createLeavesDrops(oakLeavesBlock, saplingBlock, chances) .withPool( LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .when(this.doesNotHaveShearsOrSilkTouch()) .add( - ((net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer.Builder)this.applyExplosionCondition( - oakLeavesBlock, LootItem.lootTableItem(Items.APPLE) - )) + ((LootPoolSingletonContainer.Builder)this.applyExplosionCondition(oakLeavesBlock, LootItem.lootTableItem(Items.APPLE))) .when( BonusLevelTableCondition.bonusLevelFlatChance(registryLookup.getOrThrow(Enchantments.FORTUNE), 0.005F, 0.0055555557F, 0.00625F, 0.008333334F, 0.025F) ) @@ -543,10 +562,10 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createMangroveLeavesDrops(Block block) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.createSilkTouchOrShearsDispatchTable( block, - ((net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer.Builder)this.applyExplosionDecay( + ((LootPoolSingletonContainer.Builder)this.applyExplosionDecay( Blocks.MANGROVE_LEAVES, LootItem.lootTableItem(Items.STICK).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))) )) .when(BonusLevelTableCondition.bonusLevelFlatChance(registryLookup.getOrThrow(Enchantments.FORTUNE), NORMAL_LEAVES_STICK_CHANCES)) @@ -557,10 +576,8 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { * If {@code dropGrownCropCondition} fails (i.e. crop is not ready), drops 1 {@code seedsItem}. * If {@code dropGrownCropCondition} succeeds (i.e. crop is ready), drops 1 {@code grownCropItem}, and 0-3 {@code seedsItem} with fortune applied. */ - protected LootTable.Builder createCropDrops( - Block cropBlock, Item grownCropItem, Item seedsItem, net.minecraft.world.level.storage.loot.predicates.LootItemCondition.Builder dropGrownCropCondition - ) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + protected LootTable.Builder createCropDrops(Block cropBlock, Item grownCropItem, Item seedsItem, Builder dropGrownCropCondition) { + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return this.applyExplosionDecay( cropBlock, LootTable.lootTable() @@ -582,14 +599,12 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected LootTable.Builder createDoublePlantWithSeedDrops(Block block, Block sheared) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.BLOCK); - Builder builder = LootItem.lootTableItem(sheared) + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.BLOCK); + LootPoolEntryContainer.Builder builder = LootItem.lootTableItem(sheared) .apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))) .when(this.hasShears()) .otherwise( - ((net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer.Builder)this.applyExplosionCondition( - block, LootItem.lootTableItem(Items.WHEAT_SEEDS) - )) + ((LootPoolSingletonContainer.Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(Items.WHEAT_SEEDS))) .when(LootItemRandomChanceCondition.randomChance(0.125F)) ); return LootTable.lootTable() @@ -606,7 +621,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { LocationCheck.checkLocation( net.minecraft.advancements.critereon.LocationPredicate.Builder.location() .setBlock( - BlockPredicate.Builder.block() + net.minecraft.advancements.critereon.BlockPredicate.Builder.block() .of(registryLookup, block) .setProperties( net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties().hasProperty(DoublePlantBlock.HALF, DoubleBlockHalf.UPPER) @@ -629,7 +644,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { LocationCheck.checkLocation( net.minecraft.advancements.critereon.LocationPredicate.Builder.location() .setBlock( - BlockPredicate.Builder.block() + net.minecraft.advancements.critereon.BlockPredicate.Builder.block() .of(registryLookup, block) .setProperties( net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder.properties().hasProperty(DoublePlantBlock.HALF, DoubleBlockHalf.LOWER) @@ -647,7 +662,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add( - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( candleBlock, LootItem.lootTableItem(candleBlock) .apply( @@ -669,7 +684,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add( - (Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( petalBlock, LootItem.lootTableItem(petalBlock) .apply( @@ -726,7 +741,7 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { } protected void addNetherVinesDropTable(Block vines, Block plant) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); LootTable.Builder builder = this.createSilkTouchOrShearsDispatchTable( vines, LootItem.lootTableItem(vines) diff --git a/net/minecraft/data/loot/LootTableProvider.java b/net/minecraft/data/loot/LootTableProvider.java index 657b4e9b..abd8b1ab 100644 --- a/net/minecraft/data/loot/LootTableProvider.java +++ b/net/minecraft/data/loot/LootTableProvider.java @@ -12,17 +12,15 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import net.minecraft.Util; -import net.minecraft.core.HolderGetter; -import net.minecraft.core.HolderLookup; import net.minecraft.core.MappedRegistry; import net.minecraft.core.RegistrationInfo; -import net.minecraft.core.RegistryAccess; import net.minecraft.core.WritableRegistry; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.RegistryAccess.ImmutableRegistryAccess; import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ProblemReporter.Collector; @@ -36,16 +34,13 @@ import org.slf4j.Logger; public class LootTableProvider implements DataProvider { private static final Logger LOGGER = LogUtils.getLogger(); - private final PathProvider pathProvider; + private final PackOutput.PathProvider pathProvider; private final Set> requiredTables; private final List subProviders; - private final CompletableFuture registries; + private final CompletableFuture registries; public LootTableProvider( - PackOutput output, - Set> requiredTables, - List subProviders, - CompletableFuture registries + PackOutput output, Set> requiredTables, List subProviders, CompletableFuture registries ) { this.pathProvider = output.createRegistryElementsPathProvider(Registries.LOOT_TABLE); this.subProviders = subProviders; @@ -58,7 +53,7 @@ public class LootTableProvider implements DataProvider { return this.registries.thenCompose(provider -> this.run(output, provider)); } - private CompletableFuture run(CachedOutput output, HolderLookup.Provider provider) { + private CompletableFuture run(CachedOutput output, Provider provider) { WritableRegistry writableRegistry = new MappedRegistry<>(Registries.LOOT_TABLE, Lifecycle.experimental()); Map map = new Object2ObjectOpenHashMap<>(); this.subProviders.forEach(subProviderEntry -> ((LootTableSubProvider)subProviderEntry.provider().apply(provider)).generate((resourceKeyx, builder) -> { @@ -74,7 +69,7 @@ public class LootTableProvider implements DataProvider { })); writableRegistry.freeze(); Collector collector = new Collector(); - HolderGetter.Provider provider2 = new RegistryAccess.ImmutableRegistryAccess(List.of(writableRegistry)).freeze(); + net.minecraft.core.HolderGetter.Provider provider2 = new ImmutableRegistryAccess(List.of(writableRegistry)).freeze(); ValidationContext validationContext = new ValidationContext(collector, LootContextParamSets.ALL_PARAMS, provider2); for (ResourceKey resourceKey : Sets.difference(this.requiredTables, writableRegistry.registryKeySet())) { @@ -111,6 +106,6 @@ public class LootTableProvider implements DataProvider { return "Loot Tables"; } - public record SubProviderEntry(Function provider, ContextKeySet paramSet) { + public record SubProviderEntry(Function provider, ContextKeySet paramSet) { } } diff --git a/net/minecraft/data/loot/packs/VanillaBlockLoot.java b/net/minecraft/data/loot/packs/VanillaBlockLoot.java index 7ea31f0b..f7958f82 100644 --- a/net/minecraft/data/loot/packs/VanillaBlockLoot.java +++ b/net/minecraft/data/loot/packs/VanillaBlockLoot.java @@ -4,9 +4,9 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.StatePropertiesPredicate.Builder; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.Registries; import net.minecraft.data.loot.BlockLootSubProvider; @@ -38,16 +38,19 @@ import net.minecraft.world.level.block.TntBlock; import net.minecraft.world.level.block.state.properties.BedPart; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; import net.minecraft.world.level.storage.loot.IntRange; -import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.LootContext.EntityTarget; import net.minecraft.world.level.storage.loot.entries.AlternativesEntry; import net.minecraft.world.level.storage.loot.entries.DynamicLoot; import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; +import net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer; import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction; import net.minecraft.world.level.storage.loot.functions.LimitCount; import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction.Source; import net.minecraft.world.level.storage.loot.predicates.BonusLevelTableCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemEntityPropertyCondition; @@ -90,14 +93,14 @@ public class VanillaBlockLoot extends BlockLootSubProvider { .map(ItemLike::asItem) .collect(Collectors.toSet()); - public VanillaBlockLoot(HolderLookup.Provider registries) { + public VanillaBlockLoot(Provider registries) { super(EXPLOSION_RESISTANT, FeatureFlags.REGISTRY.allFlags(), registries); } @Override protected void generate() { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); - HolderLookup.RegistryLookup registryLookup2 = this.registries.lookupOrThrow(Registries.ITEM); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup2 = this.registries.lookupOrThrow(Registries.ITEM); this.dropSelf(Blocks.GRANITE); this.dropSelf(Blocks.POLISHED_GRANITE); this.dropSelf(Blocks.DIORITE); @@ -113,7 +116,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_PLANKS); this.dropSelf(Blocks.ACACIA_PLANKS); this.dropSelf(Blocks.DARK_OAK_PLANKS); - this.add(Blocks.PALE_OAK_PLANKS, noDrop()); + this.dropSelf(Blocks.PALE_OAK_PLANKS); this.dropSelf(Blocks.MANGROVE_PLANKS); this.dropSelf(Blocks.CHERRY_PLANKS); this.dropSelf(Blocks.BAMBOO_PLANKS); @@ -125,7 +128,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_SAPLING); this.dropSelf(Blocks.ACACIA_SAPLING); this.dropSelf(Blocks.DARK_OAK_SAPLING); - this.add(Blocks.PALE_OAK_SAPLING, noDrop()); + this.dropSelf(Blocks.PALE_OAK_SAPLING); this.dropSelf(Blocks.CHERRY_SAPLING); this.dropSelf(Blocks.SAND); this.add(Blocks.SUSPICIOUS_SAND, noDrop()); @@ -137,7 +140,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_LOG); this.dropSelf(Blocks.ACACIA_LOG); this.dropSelf(Blocks.DARK_OAK_LOG); - this.add(Blocks.PALE_OAK_LOG, noDrop()); + this.dropSelf(Blocks.PALE_OAK_LOG); this.dropSelf(Blocks.CHERRY_LOG); this.dropSelf(Blocks.BAMBOO_BLOCK); this.dropSelf(Blocks.STRIPPED_OAK_LOG); @@ -146,7 +149,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.STRIPPED_JUNGLE_LOG); this.dropSelf(Blocks.STRIPPED_ACACIA_LOG); this.dropSelf(Blocks.STRIPPED_DARK_OAK_LOG); - this.add(Blocks.STRIPPED_PALE_OAK_LOG, noDrop()); + this.dropSelf(Blocks.STRIPPED_PALE_OAK_LOG); this.dropSelf(Blocks.STRIPPED_MANGROVE_LOG); this.dropSelf(Blocks.STRIPPED_CHERRY_LOG); this.dropSelf(Blocks.STRIPPED_BAMBOO_BLOCK); @@ -158,7 +161,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_WOOD); this.dropSelf(Blocks.ACACIA_WOOD); this.dropSelf(Blocks.DARK_OAK_WOOD); - this.add(Blocks.PALE_OAK_WOOD, noDrop()); + this.dropSelf(Blocks.PALE_OAK_WOOD); this.dropSelf(Blocks.MANGROVE_WOOD); this.dropSelf(Blocks.CHERRY_WOOD); this.dropSelf(Blocks.STRIPPED_OAK_WOOD); @@ -167,7 +170,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.STRIPPED_JUNGLE_WOOD); this.dropSelf(Blocks.STRIPPED_ACACIA_WOOD); this.dropSelf(Blocks.STRIPPED_DARK_OAK_WOOD); - this.add(Blocks.STRIPPED_PALE_OAK_WOOD, noDrop()); + this.dropSelf(Blocks.STRIPPED_PALE_OAK_WOOD); this.dropSelf(Blocks.STRIPPED_MANGROVE_WOOD); this.dropSelf(Blocks.STRIPPED_CHERRY_WOOD); this.dropSelf(Blocks.STRIPPED_CRIMSON_HYPHAE); @@ -175,6 +178,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.SPONGE); this.dropSelf(Blocks.WET_SPONGE); this.dropSelf(Blocks.LAPIS_BLOCK); + this.dropSelf(Blocks.RESIN_BLOCK); this.dropSelf(Blocks.SANDSTONE); this.dropSelf(Blocks.CHISELED_SANDSTONE); this.dropSelf(Blocks.CUT_SANDSTONE); @@ -200,6 +204,8 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.RED_WOOL); this.dropSelf(Blocks.BLACK_WOOL); this.dropSelf(Blocks.DANDELION); + this.dropSelf(Blocks.OPEN_EYEBLOSSOM); + this.dropSelf(Blocks.CLOSED_EYEBLOSSOM); this.dropSelf(Blocks.POPPY); this.dropSelf(Blocks.TORCHFLOWER); this.dropSelf(Blocks.BLUE_ORCHID); @@ -235,7 +241,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.ACACIA_SIGN); this.dropSelf(Blocks.JUNGLE_SIGN); this.dropSelf(Blocks.DARK_OAK_SIGN); - this.add(Blocks.PALE_OAK_SIGN, noDrop()); + this.dropSelf(Blocks.PALE_OAK_SIGN); this.dropSelf(Blocks.MANGROVE_SIGN); this.dropSelf(Blocks.CHERRY_SIGN); this.dropSelf(Blocks.BAMBOO_SIGN); @@ -246,7 +252,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.CHERRY_HANGING_SIGN); this.dropSelf(Blocks.JUNGLE_HANGING_SIGN); this.dropSelf(Blocks.DARK_OAK_HANGING_SIGN); - this.add(Blocks.PALE_OAK_HANGING_SIGN, noDrop()); + this.dropSelf(Blocks.PALE_OAK_HANGING_SIGN); this.dropSelf(Blocks.MANGROVE_HANGING_SIGN); this.dropSelf(Blocks.CRIMSON_HANGING_SIGN); this.dropSelf(Blocks.WARPED_HANGING_SIGN); @@ -262,7 +268,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_PRESSURE_PLATE); this.dropSelf(Blocks.ACACIA_PRESSURE_PLATE); this.dropSelf(Blocks.DARK_OAK_PRESSURE_PLATE); - this.add(Blocks.PALE_OAK_PRESSURE_PLATE, noDrop()); + this.dropSelf(Blocks.PALE_OAK_PRESSURE_PLATE); this.dropSelf(Blocks.MANGROVE_PRESSURE_PLATE); this.dropSelf(Blocks.CHERRY_PRESSURE_PLATE); this.dropSelf(Blocks.BAMBOO_PRESSURE_PLATE); @@ -291,7 +297,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_TRAPDOOR); this.dropSelf(Blocks.ACACIA_TRAPDOOR); this.dropSelf(Blocks.DARK_OAK_TRAPDOOR); - this.add(Blocks.PALE_OAK_TRAPDOOR, noDrop()); + this.dropSelf(Blocks.PALE_OAK_TRAPDOOR); this.dropSelf(Blocks.MANGROVE_TRAPDOOR); this.dropSelf(Blocks.CHERRY_TRAPDOOR); this.dropSelf(Blocks.BAMBOO_TRAPDOOR); @@ -314,6 +320,11 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.BRICK_STAIRS); this.dropSelf(Blocks.STONE_BRICK_STAIRS); this.dropSelf(Blocks.LILY_PAD); + this.dropSelf(Blocks.RESIN_BRICKS); + this.dropSelf(Blocks.RESIN_BRICK_WALL); + this.dropSelf(Blocks.RESIN_BRICK_SLAB); + this.dropSelf(Blocks.RESIN_BRICK_STAIRS); + this.dropSelf(Blocks.CHISELED_RESIN_BRICKS); this.dropSelf(Blocks.NETHER_BRICKS); this.dropSelf(Blocks.NETHER_BRICK_FENCE); this.dropSelf(Blocks.NETHER_BRICK_STAIRS); @@ -335,7 +346,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_BUTTON); this.dropSelf(Blocks.ACACIA_BUTTON); this.dropSelf(Blocks.DARK_OAK_BUTTON); - this.add(Blocks.PALE_OAK_BUTTON, noDrop()); + this.dropSelf(Blocks.PALE_OAK_BUTTON); this.dropSelf(Blocks.MANGROVE_BUTTON); this.dropSelf(Blocks.CHERRY_BUTTON); this.dropSelf(Blocks.BAMBOO_BUTTON); @@ -376,7 +387,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.BLACK_TERRACOTTA); this.dropSelf(Blocks.ACACIA_STAIRS); this.dropSelf(Blocks.DARK_OAK_STAIRS); - this.add(Blocks.PALE_OAK_STAIRS, noDrop()); + this.dropSelf(Blocks.PALE_OAK_STAIRS); this.dropSelf(Blocks.CHERRY_STAIRS); this.dropSelf(Blocks.SLIME_BLOCK); this.dropSelf(Blocks.IRON_TRAPDOOR); @@ -418,14 +429,14 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropSelf(Blocks.JUNGLE_FENCE_GATE); this.dropSelf(Blocks.ACACIA_FENCE_GATE); this.dropSelf(Blocks.DARK_OAK_FENCE_GATE); - this.add(Blocks.PALE_OAK_FENCE_GATE, noDrop()); + this.dropSelf(Blocks.PALE_OAK_FENCE_GATE); this.dropSelf(Blocks.CHERRY_FENCE_GATE); this.dropSelf(Blocks.SPRUCE_FENCE); this.dropSelf(Blocks.BIRCH_FENCE); this.dropSelf(Blocks.JUNGLE_FENCE); this.dropSelf(Blocks.ACACIA_FENCE); this.dropSelf(Blocks.DARK_OAK_FENCE); - this.add(Blocks.PALE_OAK_FENCE, noDrop()); + this.dropSelf(Blocks.PALE_OAK_FENCE); this.dropSelf(Blocks.CHERRY_FENCE); this.dropSelf(Blocks.END_ROD); this.dropSelf(Blocks.PURPUR_BLOCK); @@ -622,9 +633,9 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add(Blocks.PINK_PETALS, this.createPetalsDrops(Blocks.PINK_PETALS)); this.dropSelf(Blocks.BIG_DRIPLEAF); this.dropSelf(Blocks.MOSS_BLOCK); - this.add(Blocks.PALE_MOSS_CARPET, noDrop()); - this.add(Blocks.PALE_HANGING_MOSS, noDrop()); - this.add(Blocks.PALE_MOSS_BLOCK, noDrop()); + this.add(Blocks.PALE_MOSS_CARPET, block -> this.createMossyCarpetBlockDrops(block)); + this.add(Blocks.PALE_HANGING_MOSS, itemLike -> this.createShearsOrSilkTouchOnlyDrop(itemLike)); + this.dropSelf(Blocks.PALE_MOSS_BLOCK); this.dropSelf(Blocks.ROOTED_DIRT); this.dropSelf(Blocks.COBBLED_DEEPSLATE); this.dropSelf(Blocks.COBBLED_DEEPSLATE_STAIRS); @@ -722,12 +733,14 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropPottedContents(Blocks.POTTED_JUNGLE_SAPLING); this.dropPottedContents(Blocks.POTTED_ACACIA_SAPLING); this.dropPottedContents(Blocks.POTTED_DARK_OAK_SAPLING); - this.add(Blocks.POTTED_PALE_OAK_SAPLING, noDrop()); + this.dropPottedContents(Blocks.POTTED_PALE_OAK_SAPLING); this.dropPottedContents(Blocks.POTTED_MANGROVE_PROPAGULE); this.dropPottedContents(Blocks.POTTED_CHERRY_SAPLING); this.dropPottedContents(Blocks.POTTED_FERN); this.dropPottedContents(Blocks.POTTED_DANDELION); this.dropPottedContents(Blocks.POTTED_POPPY); + this.dropPottedContents(Blocks.POTTED_OPEN_EYEBLOSSOM); + this.dropPottedContents(Blocks.POTTED_CLOSED_EYEBLOSSOM); this.dropPottedContents(Blocks.POTTED_BLUE_ORCHID); this.dropPottedContents(Blocks.POTTED_ALLIUM); this.dropPottedContents(Blocks.POTTED_AZURE_BLUET); @@ -758,7 +771,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add(Blocks.JUNGLE_SLAB, block -> this.createSlabItemTable(block)); this.add(Blocks.ACACIA_SLAB, block -> this.createSlabItemTable(block)); this.add(Blocks.DARK_OAK_SLAB, block -> this.createSlabItemTable(block)); - this.add(Blocks.PALE_OAK_SLAB, noDrop()); + this.add(Blocks.PALE_OAK_SLAB, block -> this.createSlabItemTable(block)); this.add(Blocks.MANGROVE_SLAB, block -> this.createSlabItemTable(block)); this.add(Blocks.CHERRY_SLAB, block -> this.createSlabItemTable(block)); this.add(Blocks.BAMBOO_SLAB, block -> this.createSlabItemTable(block)); @@ -815,7 +828,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add(Blocks.JUNGLE_DOOR, block -> this.createDoorTable(block)); this.add(Blocks.ACACIA_DOOR, block -> this.createDoorTable(block)); this.add(Blocks.DARK_OAK_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.PALE_OAK_DOOR, noDrop()); + this.add(Blocks.PALE_OAK_DOOR, block -> this.createDoorTable(block)); this.add(Blocks.MANGROVE_DOOR, block -> this.createDoorTable(block)); this.add(Blocks.CHERRY_DOOR, block -> this.createDoorTable(block)); this.add(Blocks.BAMBOO_DOOR, block -> this.createDoorTable(block)); @@ -874,7 +887,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add( - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.COCOA_BEANS) .apply( @@ -892,7 +905,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add( - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( Blocks.SEA_PICKLE, LootItem.lootTableItem(block) .apply( @@ -909,14 +922,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add( Blocks.COMPOSTER, block -> LootTable.lootTable() - .withPool( - LootPool.lootPool() - .add( - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( - block, LootItem.lootTableItem(Items.COMPOSTER) - ) - ) - ) + .withPool(LootPool.lootPool().add((LootPoolEntryContainer.Builder)this.applyExplosionDecay(block, LootItem.lootTableItem(Items.COMPOSTER)))) .withPool( LootPool.lootPool() .add(LootItem.lootTableItem(Items.BONE_MEAL)) @@ -1007,7 +1013,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { .add( LootItem.lootTableItem(block) .apply( - CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) + CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY) .include(DataComponents.PROFILE) .include(DataComponents.NOTE_BLOCK_SOUND) .include(DataComponents.CUSTOM_NAME) @@ -1024,7 +1030,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add(Blocks.JUNGLE_LEAVES, block -> this.createLeavesDrops(block, Blocks.JUNGLE_SAPLING, JUNGLE_LEAVES_SAPLING_CHANGES)); this.add(Blocks.ACACIA_LEAVES, block -> this.createLeavesDrops(block, Blocks.ACACIA_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); this.add(Blocks.DARK_OAK_LEAVES, block -> this.createOakLeavesDrops(block, Blocks.DARK_OAK_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); - this.add(Blocks.PALE_OAK_LEAVES, noDrop()); + this.add(Blocks.PALE_OAK_LEAVES, block -> this.createLeavesDrops(block, Blocks.PALE_OAK_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); this.add(Blocks.CHERRY_LEAVES, block -> this.createLeavesDrops(block, Blocks.CHERRY_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); this.add(Blocks.AZALEA_LEAVES, block -> this.createLeavesDrops(block, Blocks.AZALEA, NORMAL_LEAVES_SAPLING_CHANCES)); this.add(Blocks.FLOWERING_AZALEA_LEAVES, block -> this.createLeavesDrops(block, Blocks.FLOWERING_AZALEA, NORMAL_LEAVES_SAPLING_CHANCES)); @@ -1159,7 +1165,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { Blocks.NETHER_GOLD_ORE, block -> this.createSilkTouchDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.GOLD_NUGGET) .apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))) @@ -1172,15 +1178,14 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add( Blocks.COBWEB, block -> this.createSilkTouchOrShearsDispatchTable( - block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(Items.STRING)) + block, (LootPoolEntryContainer.Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(Items.STRING)) ) ); this.add( Blocks.DEAD_BUSH, block -> this.createShearsDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.STICK).apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 2.0F))) ) ) @@ -1189,6 +1194,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.add(Blocks.SEAGRASS, itemLike -> this.createShearsOnlyDrop(itemLike)); this.add(Blocks.VINE, itemLike -> this.createShearsOnlyDrop(itemLike)); this.add(Blocks.GLOW_LICHEN, block -> this.createMultifaceBlockDrops(block, this.hasShears())); + this.add(Blocks.RESIN_CLUMP, block -> this.createMultifaceBlockDrops(block)); this.add(Blocks.HANGING_ROOTS, itemLike -> this.createShearsOnlyDrop(itemLike)); this.add(Blocks.SMALL_DRIPLEAF, itemLike -> this.createShearsOnlyDrop(itemLike)); this.add(Blocks.MANGROVE_LEAVES, block -> this.createMangroveLeavesDrops(block)); @@ -1206,8 +1212,8 @@ public class VanillaBlockLoot extends BlockLootSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add( - ((net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer.Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(block))) - .when(LootItemEntityPropertyCondition.entityPresent(LootContext.EntityTarget.THIS)) + ((LootPoolSingletonContainer.Builder)this.applyExplosionCondition(block, LootItem.lootTableItem(block))) + .when(LootItemEntityPropertyCondition.entityPresent(EntityTarget.THIS)) ) ) ); @@ -1217,7 +1223,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { Blocks.GLOWSTONE, block -> this.createSilkTouchDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.GLOWSTONE_DUST) .apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F))) @@ -1230,7 +1236,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { Blocks.MELON, block -> this.createSilkTouchDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.MELON_SLICE) .apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 7.0F))) @@ -1245,7 +1251,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { Blocks.SEA_LANTERN, block -> this.createSilkTouchDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.PRISMARINE_CRYSTALS) .apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F))) @@ -1254,6 +1260,19 @@ public class VanillaBlockLoot extends BlockLootSubProvider { ) ) ); + this.add( + Blocks.CREAKING_HEART, + block -> this.createSilkTouchDispatchTable( + block, + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( + block, + LootItem.lootTableItem(Items.RESIN_CLUMP) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F))) + .apply(ApplyBonusCount.addUniformBonusCount(registryLookup.getOrThrow(Enchantments.FORTUNE))) + .apply(LimitCount.limitCount(IntRange.upperBound(9))) + ) + ) + ); this.add( Blocks.NETHER_WART, block -> LootTable.lootTable() @@ -1281,7 +1300,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { block -> LootTable.lootTable() .withPool( LootPool.lootPool() - .when(LootItemEntityPropertyCondition.entityPresent(LootContext.EntityTarget.THIS)) + .when(LootItemEntityPropertyCondition.entityPresent(EntityTarget.THIS)) .add( AlternativesEntry.alternatives( AlternativesEntry.alternatives( @@ -1323,7 +1342,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { Blocks.CAMPFIRE, block -> this.createSilkTouchDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionCondition( + (LootPoolEntryContainer.Builder)this.applyExplosionCondition( block, LootItem.lootTableItem(Items.CHARCOAL).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))) ) ) @@ -1345,7 +1364,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { Blocks.SOUL_CAMPFIRE, block -> this.createSilkTouchDispatchTable( block, - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionCondition( + (LootPoolEntryContainer.Builder)this.applyExplosionCondition( block, LootItem.lootTableItem(Items.SOUL_SOIL).apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F))) ) ) @@ -1357,9 +1376,9 @@ public class VanillaBlockLoot extends BlockLootSubProvider { LootItem.lootTableItem(Items.AMETHYST_SHARD) .apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))) .apply(ApplyBonusCount.addOreBonusCount(registryLookup.getOrThrow(Enchantments.FORTUNE))) - .when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(registryLookup2, ItemTags.CLUSTER_MAX_HARVESTABLES))) + .when(MatchTool.toolMatches(net.minecraft.advancements.critereon.ItemPredicate.Builder.item().of(registryLookup2, ItemTags.CLUSTER_MAX_HARVESTABLES))) .otherwise( - (net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer.Builder)this.applyExplosionDecay( + (LootPoolEntryContainer.Builder)this.applyExplosionDecay( block, LootItem.lootTableItem(Items.AMETHYST_SHARD).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))) ) ) @@ -1406,7 +1425,6 @@ public class VanillaBlockLoot extends BlockLootSubProvider { this.dropWhenSilkTouch(Blocks.PACKED_ICE); this.dropWhenSilkTouch(Blocks.BLUE_ICE); this.dropWhenSilkTouch(Blocks.TURTLE_EGG); - this.add(Blocks.CREAKING_HEART, noDrop()); this.dropWhenSilkTouch(Blocks.MUSHROOM_STEM); this.dropWhenSilkTouch(Blocks.DEAD_TUBE_CORAL); this.dropWhenSilkTouch(Blocks.DEAD_BRAIN_CORAL); @@ -1480,10 +1498,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { .when( LootItemBlockStatePropertyCondition.hasBlockStateProperties(block).setProperties(Builder.properties().hasProperty(DecoratedPotBlock.CRACKED, true)) ) - .otherwise( - LootItem.lootTableItem(block) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY).include(DataComponents.POT_DECORATIONS)) - ) + .otherwise(LootItem.lootTableItem(block).apply(CopyComponentsFunction.copyComponents(Source.BLOCK_ENTITY).include(DataComponents.POT_DECORATIONS))) ) ); } diff --git a/net/minecraft/data/loot/packs/VanillaChestLoot.java b/net/minecraft/data/loot/packs/VanillaChestLoot.java index 2a8c17ca..a30484aa 100644 --- a/net/minecraft/data/loot/packs/VanillaChestLoot.java +++ b/net/minecraft/data/loot/packs/VanillaChestLoot.java @@ -1,8 +1,9 @@ package net.minecraft.data.loot.packs; import java.util.function.BiConsumer; -import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderSet; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.registries.Registries; import net.minecraft.data.loot.LootTableSubProvider; import net.minecraft.network.chat.Component; @@ -25,7 +26,6 @@ import net.minecraft.world.level.storage.loot.entries.NestedLootTable; import net.minecraft.world.level.storage.loot.functions.EnchantRandomlyFunction; import net.minecraft.world.level.storage.loot.functions.EnchantWithLevelsFunction; import net.minecraft.world.level.storage.loot.functions.ExplorationMapFunction; -import net.minecraft.world.level.storage.loot.functions.SetEnchantmentsFunction; import net.minecraft.world.level.storage.loot.functions.SetInstrumentFunction; import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; import net.minecraft.world.level.storage.loot.functions.SetItemDamageFunction; @@ -33,14 +33,16 @@ import net.minecraft.world.level.storage.loot.functions.SetNameFunction; import net.minecraft.world.level.storage.loot.functions.SetOminousBottleAmplifierFunction; import net.minecraft.world.level.storage.loot.functions.SetPotionFunction; import net.minecraft.world.level.storage.loot.functions.SetStewEffectFunction; +import net.minecraft.world.level.storage.loot.functions.EnchantRandomlyFunction.Builder; +import net.minecraft.world.level.storage.loot.functions.SetNameFunction.Target; import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; -public record VanillaChestLoot(HolderLookup.Provider registries) implements LootTableSubProvider { +public record VanillaChestLoot(Provider registries) implements LootTableSubProvider { @Override public void generate(BiConsumer, LootTable.Builder> biConsumer) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); biConsumer.accept( BuiltInLootTables.ABANDONED_MINESHAFT, LootTable.lootTable() @@ -300,7 +302,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .setZoom((byte)1) .setSkipKnownStructures(false) ) - .apply(SetNameFunction.setName(Component.translatable("filled_map.buried_treasure"), SetNameFunction.Target.ITEM_NAME)) + .apply(SetNameFunction.setName(Component.translatable("filled_map.buried_treasure"), Target.ITEM_NAME)) ) ) ); @@ -332,7 +334,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .setZoom((byte)1) .setSkipKnownStructures(false) ) - .apply(SetNameFunction.setName(Component.translatable("filled_map.buried_treasure"), SetNameFunction.Target.ITEM_NAME)) + .apply(SetNameFunction.setName(Component.translatable("filled_map.buried_treasure"), Target.ITEM_NAME)) ) ) ); @@ -914,7 +916,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot LootItem.lootTableItem(Items.BOOK) .setWeight(2) .apply( - new EnchantRandomlyFunction.Builder() + new Builder() .withOneOf( HolderSet.direct( registryLookup.getOrThrow(Enchantments.SHARPNESS), @@ -931,7 +933,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot LootItem.lootTableItem(Items.BOOK) .setWeight(2) .apply( - new EnchantRandomlyFunction.Builder() + new Builder() .withOneOf( HolderSet.direct( registryLookup.getOrThrow(Enchantments.RIPTIDE), @@ -1042,7 +1044,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot LootItem.lootTableItem(Items.BOOK) .setWeight(2) .apply( - new EnchantRandomlyFunction.Builder() + new Builder() .withOneOf( HolderSet.direct( registryLookup.getOrThrow(Enchantments.KNOCKBACK), @@ -1057,15 +1059,15 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .add( LootItem.lootTableItem(Items.BOOK) .setWeight(2) - .apply( - new EnchantRandomlyFunction.Builder() - .withOneOf(HolderSet.direct(registryLookup.getOrThrow(Enchantments.BREACH), registryLookup.getOrThrow(Enchantments.DENSITY))) - ) + .apply(new Builder().withOneOf(HolderSet.direct(registryLookup.getOrThrow(Enchantments.BREACH), registryLookup.getOrThrow(Enchantments.DENSITY)))) ) .add( LootItem.lootTableItem(Items.BOOK) .setWeight(2) - .apply(new SetEnchantmentsFunction.Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.WIND_BURST), ConstantValue.exactly(1.0F))) + .apply( + new net.minecraft.world.level.storage.loot.functions.SetEnchantmentsFunction.Builder() + .withEnchantment(registryLookup.getOrThrow(Enchantments.WIND_BURST), ConstantValue.exactly(1.0F)) + ) ) .add(LootItem.lootTableItem(Items.DIAMOND_BLOCK).setWeight(1)) ) @@ -1131,7 +1133,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot } public void spawnerLootTables(BiConsumer, LootTable.Builder> output) { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); output.accept( BuiltInLootTables.SPAWNER_TRIAL_CHAMBER_KEY, LootTable.lootTable().withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)).add(LootItem.lootTableItem(Items.TRIAL_KEY))) @@ -1299,7 +1301,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .setZoom((byte)1) .setSkipKnownStructures(false) ) - .apply(SetNameFunction.setName(Component.translatable("filled_map.buried_treasure"), SetNameFunction.Target.ITEM_NAME)) + .apply(SetNameFunction.setName(Component.translatable("filled_map.buried_treasure"), Target.ITEM_NAME)) ) ) .withPool( @@ -1642,7 +1644,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot } public LootTable.Builder bastionOtherLootTable() { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return LootTable.lootTable() .withPool( LootPool.lootPool() @@ -1667,11 +1669,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .add(LootItem.lootTableItem(Items.MUSIC_DISC_PIGSTEP).setWeight(5).apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F)))) .add(LootItem.lootTableItem(Items.GOLDEN_CARROT).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(6.0F, 17.0F)))) .add(LootItem.lootTableItem(Items.GOLDEN_APPLE).setWeight(9).apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F)))) - .add( - LootItem.lootTableItem(Items.BOOK) - .setWeight(10) - .apply(new EnchantRandomlyFunction.Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.SOUL_SPEED))) - ) + .add(LootItem.lootTableItem(Items.BOOK).setWeight(10).apply(new Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.SOUL_SPEED)))) ) .withPool( LootPool.lootPool() @@ -1687,7 +1685,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .add( LootItem.lootTableItem(Items.GOLDEN_BOOTS) .apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F))) - .apply(new EnchantRandomlyFunction.Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.SOUL_SPEED))) + .apply(new Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.SOUL_SPEED))) ) .add( LootItem.lootTableItem(Items.GOLDEN_AXE) @@ -1762,6 +1760,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .add(LootItem.lootTableItem(Items.MELON_SEEDS).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) .add(LootItem.lootTableItem(Items.PUMPKIN_SEEDS).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) .add(LootItem.lootTableItem(Items.BEETROOT_SEEDS).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(Items.RESIN_CLUMP).setWeight(50).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) ) .withPool( LootPool.lootPool() @@ -1828,7 +1827,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot } public LootTable.Builder ancientCityLootTable() { - HolderLookup.RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + RegistryLookup registryLookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); return LootTable.lootTable() .withPool( LootPool.lootPool() @@ -1855,11 +1854,7 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot .setWeight(2) .apply(EnchantWithLevelsFunction.enchantWithLevels(this.registries, UniformGenerator.between(30.0F, 50.0F))) ) - .add( - LootItem.lootTableItem(Items.BOOK) - .setWeight(3) - .apply(new EnchantRandomlyFunction.Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.SWIFT_SNEAK))) - ) + .add(LootItem.lootTableItem(Items.BOOK).setWeight(3).apply(new Builder().withEnchantment(registryLookup.getOrThrow(Enchantments.SWIFT_SNEAK)))) .add(LootItem.lootTableItem(Items.SCULK).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 10.0F)))) .add(LootItem.lootTableItem(Items.SCULK_SENSOR).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) .add(LootItem.lootTableItem(Items.CANDLE).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 4.0F)))) diff --git a/net/minecraft/data/loot/packs/VanillaEntityLoot.java b/net/minecraft/data/loot/packs/VanillaEntityLoot.java index 34055800..13f41d3d 100644 --- a/net/minecraft/data/loot/packs/VanillaEntityLoot.java +++ b/net/minecraft/data/loot/packs/VanillaEntityLoot.java @@ -1,13 +1,12 @@ package net.minecraft.data.loot.packs; -import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.RaiderPredicate; import net.minecraft.advancements.critereon.SlimePredicate; import net.minecraft.advancements.critereon.TagPredicate; -import net.minecraft.advancements.critereon.DamageSourcePredicate.Builder; +import net.minecraft.advancements.critereon.EntityPredicate.Builder; import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.core.HolderGetter; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.loot.EntityLootSubProvider; import net.minecraft.resources.ResourceKey; @@ -21,9 +20,9 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.Potions; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.storage.loot.BuiltInLootTables; -import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.LootContext.EntityTarget; import net.minecraft.world.level.storage.loot.entries.EmptyLootItem; import net.minecraft.world.level.storage.loot.entries.LootItem; import net.minecraft.world.level.storage.loot.entries.NestedLootTable; @@ -42,7 +41,7 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; public class VanillaEntityLoot extends EntityLootSubProvider { - public VanillaEntityLoot(HolderLookup.Provider registries) { + public VanillaEntityLoot(Provider registries) { super(FeatureFlags.REGISTRY.allFlags(), registries); } @@ -210,11 +209,7 @@ public class VanillaEntityLoot extends EntityLootSubProvider { .withPool( LootPool.lootPool() .add(TagEntry.expandTag(ItemTags.CREEPER_DROP_MUSIC_DISCS)) - .when( - LootItemEntityPropertyCondition.hasProperties( - LootContext.EntityTarget.ATTACKER, EntityPredicate.Builder.entity().of(holderGetter, EntityTypeTags.SKELETONS) - ) - ) + .when(LootItemEntityPropertyCondition.hasProperties(EntityTarget.ATTACKER, Builder.entity().of(holderGetter, EntityTypeTags.SKELETONS))) ) ); this.add( @@ -467,11 +462,7 @@ public class VanillaEntityLoot extends EntityLootSubProvider { .apply(SetItemCountFunction.setCount(UniformGenerator.between(-2.0F, 1.0F))) .apply(EnchantedCountIncreaseFunction.lootingMultiplier(this.registries, UniformGenerator.between(0.0F, 1.0F))) .when(this.killedByFrog(holderGetter).invert()) - .when( - LootItemEntityPropertyCondition.hasProperties( - LootContext.EntityTarget.THIS, EntityPredicate.Builder.entity().subPredicate(SlimePredicate.sized(Ints.atLeast(2))) - ) - ) + .when(LootItemEntityPropertyCondition.hasProperties(EntityTarget.THIS, Builder.entity().subPredicate(SlimePredicate.sized(Ints.atLeast(2))))) ) .add( LootItem.lootTableItem(Items.PEARLESCENT_FROGLIGHT) @@ -588,11 +579,7 @@ public class VanillaEntityLoot extends EntityLootSubProvider { .apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F))) .apply(SetOminousBottleAmplifierFunction.setAmplifier(UniformGenerator.between(0.0F, 4.0F))) ) - .when( - LootItemEntityPropertyCondition.hasProperties( - LootContext.EntityTarget.THIS, EntityPredicate.Builder.entity().subPredicate(RaiderPredicate.CAPTAIN_WITHOUT_RAID) - ) - ) + .when(LootItemEntityPropertyCondition.hasProperties(EntityTarget.THIS, Builder.entity().subPredicate(RaiderPredicate.CAPTAIN_WITHOUT_RAID))) ) ); this.add(EntityType.PLAYER, LootTable.lootTable()); @@ -759,11 +746,7 @@ public class VanillaEntityLoot extends EntityLootSubProvider { .when(this.killedByFrog(holderGetter).invert()) ) .add(LootItem.lootTableItem(Items.SLIME_BALL).apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F))).when(this.killedByFrog(holderGetter))) - .when( - LootItemEntityPropertyCondition.hasProperties( - LootContext.EntityTarget.THIS, EntityPredicate.Builder.entity().subPredicate(SlimePredicate.sized(Ints.exactly(1))) - ) - ) + .when(LootItemEntityPropertyCondition.hasProperties(EntityTarget.THIS, Builder.entity().subPredicate(SlimePredicate.sized(Ints.exactly(1))))) ) ); this.add(EntityType.SNIFFER, LootTable.lootTable()); @@ -904,7 +887,11 @@ public class VanillaEntityLoot extends EntityLootSubProvider { LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) .add(LootItem.lootTableItem(Items.BOWL)) - .when(DamageSourceCondition.hasDamageSource(Builder.damageType().tag(TagPredicate.is(DamageTypeTags.IS_LIGHTNING)))) + .when( + DamageSourceCondition.hasDamageSource( + net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType().tag(TagPredicate.is(DamageTypeTags.IS_LIGHTNING)) + ) + ) ) ); this.add(EntityType.VEX, LootTable.lootTable()); @@ -1021,7 +1008,6 @@ public class VanillaEntityLoot extends EntityLootSubProvider { ) ); this.add(EntityType.CREAKING, LootTable.lootTable()); - this.add(EntityType.CREAKING_TRANSIENT, LootTable.lootTable()); this.add( EntityType.ZOMBIE, LootTable.lootTable() diff --git a/net/minecraft/data/loot/packs/WinterDropBlockLoot.java b/net/minecraft/data/loot/packs/WinterDropBlockLoot.java deleted file mode 100644 index aad7615f..00000000 --- a/net/minecraft/data/loot/packs/WinterDropBlockLoot.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.minecraft.data.loot.packs; - -import java.util.Set; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.loot.BlockLootSubProvider; -import net.minecraft.world.flag.FeatureFlagSet; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.world.level.block.Blocks; - -public class WinterDropBlockLoot extends BlockLootSubProvider { - public WinterDropBlockLoot(HolderLookup.Provider registries) { - super(Set.of(), FeatureFlagSet.of(FeatureFlags.WINTER_DROP), registries); - } - - @Override - protected void generate() { - this.dropSelf(Blocks.PALE_OAK_PLANKS); - this.dropSelf(Blocks.PALE_OAK_SAPLING); - this.dropSelf(Blocks.PALE_OAK_LOG); - this.dropSelf(Blocks.STRIPPED_PALE_OAK_LOG); - this.dropSelf(Blocks.PALE_OAK_WOOD); - this.dropSelf(Blocks.STRIPPED_PALE_OAK_WOOD); - this.dropSelf(Blocks.PALE_OAK_SIGN); - this.dropSelf(Blocks.PALE_OAK_HANGING_SIGN); - this.dropSelf(Blocks.PALE_OAK_PRESSURE_PLATE); - this.dropSelf(Blocks.PALE_OAK_TRAPDOOR); - this.dropSelf(Blocks.PALE_OAK_BUTTON); - this.dropSelf(Blocks.PALE_OAK_STAIRS); - this.dropSelf(Blocks.PALE_OAK_FENCE_GATE); - this.dropSelf(Blocks.PALE_OAK_FENCE); - this.add(Blocks.PALE_MOSS_CARPET, block -> this.createMossyCarpetBlockDrops(block)); - this.add(Blocks.PALE_HANGING_MOSS, itemLike -> this.createShearsOrSilkTouchOnlyDrop(itemLike)); - this.dropSelf(Blocks.PALE_MOSS_BLOCK); - this.dropPottedContents(Blocks.POTTED_PALE_OAK_SAPLING); - this.add(Blocks.PALE_OAK_SLAB, block -> this.createSlabItemTable(block)); - this.add(Blocks.PALE_OAK_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.PALE_OAK_LEAVES, block -> this.createLeavesDrops(block, Blocks.PALE_OAK_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); - this.dropWhenSilkTouch(Blocks.CREAKING_HEART); - } -} diff --git a/net/minecraft/data/loot/packs/WinterDropLootTableProvider.java b/net/minecraft/data/loot/packs/WinterDropLootTableProvider.java deleted file mode 100644 index 5f9dcf12..00000000 --- a/net/minecraft/data/loot/packs/WinterDropLootTableProvider.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.data.loot.packs; - -import java.util.List; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; - -public class WinterDropLootTableProvider { - public static LootTableProvider create(PackOutput output, CompletableFuture registries) { - return new LootTableProvider( - output, Set.of(), List.of(new LootTableProvider.SubProviderEntry(WinterDropBlockLoot::new, LootContextParamSets.BLOCK)), registries - ); - } -} diff --git a/net/minecraft/data/metadata/PackMetadataGenerator.java b/net/minecraft/data/metadata/PackMetadataGenerator.java index a212da06..b3f2c43f 100644 --- a/net/minecraft/data/metadata/PackMetadataGenerator.java +++ b/net/minecraft/data/metadata/PackMetadataGenerator.java @@ -2,6 +2,7 @@ package net.minecraft.data.metadata; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.mojang.serialization.JsonOps; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -27,7 +28,7 @@ public class PackMetadataGenerator implements DataProvider { } public PackMetadataGenerator add(MetadataSectionType type, T value) { - this.elements.put(type.getMetadataSectionName(), (Supplier)() -> type.toJson(value)); + this.elements.put(type.name(), (Supplier)() -> type.codec().encodeStart(JsonOps.INSTANCE, value).getOrThrow(IllegalArgumentException::new).getAsJsonObject()); return this; } diff --git a/net/minecraft/data/models/BlockModelGenerators.java b/net/minecraft/data/models/BlockModelGenerators.java deleted file mode 100644 index 5ec5891d..00000000 --- a/net/minecraft/data/models/BlockModelGenerators.java +++ /dev/null @@ -1,5065 +0,0 @@ -package net.minecraft.data.models; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import com.google.gson.JsonElement; -import com.mojang.datafixers.util.Pair; -import it.unimi.dsi.fastutil.ints.Int2ObjectFunction; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.function.UnaryOperator; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import net.minecraft.Util; -import net.minecraft.core.Direction; -import net.minecraft.core.FrontAndTop; -import net.minecraft.data.BlockFamilies; -import net.minecraft.data.BlockFamily; -import net.minecraft.data.models.blockstates.BlockStateGenerator; -import net.minecraft.data.models.blockstates.Condition; -import net.minecraft.data.models.blockstates.MultiPartGenerator; -import net.minecraft.data.models.blockstates.MultiVariantGenerator; -import net.minecraft.data.models.blockstates.PropertyDispatch; -import net.minecraft.data.models.blockstates.Variant; -import net.minecraft.data.models.blockstates.VariantProperties; -import net.minecraft.data.models.blockstates.Condition.TerminalCondition; -import net.minecraft.data.models.blockstates.VariantProperties.Rotation; -import net.minecraft.data.models.model.DelegatedModel; -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.data.models.model.TexturedModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.SpawnEggItem; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.CrafterBlock; -import net.minecraft.world.level.block.CreakingHeartBlock; -import net.minecraft.world.level.block.HangingMossBlock; -import net.minecraft.world.level.block.LayeredCauldronBlock; -import net.minecraft.world.level.block.MangrovePropaguleBlock; -import net.minecraft.world.level.block.MossyCarpetBlock; -import net.minecraft.world.level.block.MultifaceBlock; -import net.minecraft.world.level.block.PitcherCropBlock; -import net.minecraft.world.level.block.SnifferEggBlock; -import net.minecraft.world.level.block.VaultBlock; -import net.minecraft.world.level.block.state.properties.AttachFace; -import net.minecraft.world.level.block.state.properties.BambooLeaves; -import net.minecraft.world.level.block.state.properties.BellAttachType; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.ComparatorMode; -import net.minecraft.world.level.block.state.properties.DoorHingeSide; -import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; -import net.minecraft.world.level.block.state.properties.DripstoneThickness; -import net.minecraft.world.level.block.state.properties.EnumProperty; -import net.minecraft.world.level.block.state.properties.Half; -import net.minecraft.world.level.block.state.properties.PistonType; -import net.minecraft.world.level.block.state.properties.Property; -import net.minecraft.world.level.block.state.properties.RailShape; -import net.minecraft.world.level.block.state.properties.RedstoneSide; -import net.minecraft.world.level.block.state.properties.SculkSensorPhase; -import net.minecraft.world.level.block.state.properties.SlabType; -import net.minecraft.world.level.block.state.properties.StairsShape; -import net.minecraft.world.level.block.state.properties.Tilt; -import net.minecraft.world.level.block.state.properties.WallSide; -import org.jetbrains.annotations.Nullable; - -public class BlockModelGenerators { - final Consumer blockStateOutput; - final BiConsumer> modelOutput; - private final Consumer skippedAutoModelsOutput; - final List nonOrientableTrapdoor = ImmutableList.of(Blocks.OAK_TRAPDOOR, Blocks.DARK_OAK_TRAPDOOR, Blocks.IRON_TRAPDOOR); - final Map fullBlockModelCustomGenerators = ImmutableMap.builder() - .put(Blocks.STONE, BlockModelGenerators::createMirroredCubeGenerator) - .put(Blocks.DEEPSLATE, BlockModelGenerators::createMirroredColumnGenerator) - .put(Blocks.MUD_BRICKS, BlockModelGenerators::createNorthWestMirroredCubeGenerator) - .build(); - final Map texturedModels = ImmutableMap.builder() - .put(Blocks.SANDSTONE, TexturedModel.TOP_BOTTOM_WITH_WALL.get(Blocks.SANDSTONE)) - .put(Blocks.RED_SANDSTONE, TexturedModel.TOP_BOTTOM_WITH_WALL.get(Blocks.RED_SANDSTONE)) - .put(Blocks.SMOOTH_SANDSTONE, TexturedModel.createAllSame(TextureMapping.getBlockTexture(Blocks.SANDSTONE, "_top"))) - .put(Blocks.SMOOTH_RED_SANDSTONE, TexturedModel.createAllSame(TextureMapping.getBlockTexture(Blocks.RED_SANDSTONE, "_top"))) - .put( - Blocks.CUT_SANDSTONE, - TexturedModel.COLUMN - .get(Blocks.SANDSTONE) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CUT_SANDSTONE))) - ) - .put( - Blocks.CUT_RED_SANDSTONE, - TexturedModel.COLUMN - .get(Blocks.RED_SANDSTONE) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CUT_RED_SANDSTONE))) - ) - .put(Blocks.QUARTZ_BLOCK, TexturedModel.COLUMN.get(Blocks.QUARTZ_BLOCK)) - .put(Blocks.SMOOTH_QUARTZ, TexturedModel.createAllSame(TextureMapping.getBlockTexture(Blocks.QUARTZ_BLOCK, "_bottom"))) - .put(Blocks.BLACKSTONE, TexturedModel.COLUMN_WITH_WALL.get(Blocks.BLACKSTONE)) - .put(Blocks.DEEPSLATE, TexturedModel.COLUMN_WITH_WALL.get(Blocks.DEEPSLATE)) - .put( - Blocks.CHISELED_QUARTZ_BLOCK, - TexturedModel.COLUMN - .get(Blocks.CHISELED_QUARTZ_BLOCK) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CHISELED_QUARTZ_BLOCK))) - ) - .put(Blocks.CHISELED_SANDSTONE, TexturedModel.COLUMN.get(Blocks.CHISELED_SANDSTONE).updateTextures(textureMapping -> { - textureMapping.put(TextureSlot.END, TextureMapping.getBlockTexture(Blocks.SANDSTONE, "_top")); - textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CHISELED_SANDSTONE)); - })) - .put(Blocks.CHISELED_RED_SANDSTONE, TexturedModel.COLUMN.get(Blocks.CHISELED_RED_SANDSTONE).updateTextures(textureMapping -> { - textureMapping.put(TextureSlot.END, TextureMapping.getBlockTexture(Blocks.RED_SANDSTONE, "_top")); - textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.CHISELED_RED_SANDSTONE)); - })) - .put(Blocks.CHISELED_TUFF_BRICKS, TexturedModel.COLUMN_WITH_WALL.get(Blocks.CHISELED_TUFF_BRICKS)) - .put(Blocks.CHISELED_TUFF, TexturedModel.COLUMN_WITH_WALL.get(Blocks.CHISELED_TUFF)) - .build(); - static final Map> SHAPE_CONSUMERS = ImmutableMap.>builder() - .put(net.minecraft.data.BlockFamily.Variant.BUTTON, BlockModelGenerators.BlockFamilyProvider::button) - .put(net.minecraft.data.BlockFamily.Variant.DOOR, BlockModelGenerators.BlockFamilyProvider::door) - .put(net.minecraft.data.BlockFamily.Variant.CHISELED, BlockModelGenerators.BlockFamilyProvider::fullBlockVariant) - .put(net.minecraft.data.BlockFamily.Variant.CRACKED, BlockModelGenerators.BlockFamilyProvider::fullBlockVariant) - .put(net.minecraft.data.BlockFamily.Variant.CUSTOM_FENCE, BlockModelGenerators.BlockFamilyProvider::customFence) - .put(net.minecraft.data.BlockFamily.Variant.FENCE, BlockModelGenerators.BlockFamilyProvider::fence) - .put(net.minecraft.data.BlockFamily.Variant.CUSTOM_FENCE_GATE, BlockModelGenerators.BlockFamilyProvider::customFenceGate) - .put(net.minecraft.data.BlockFamily.Variant.FENCE_GATE, BlockModelGenerators.BlockFamilyProvider::fenceGate) - .put(net.minecraft.data.BlockFamily.Variant.SIGN, BlockModelGenerators.BlockFamilyProvider::sign) - .put(net.minecraft.data.BlockFamily.Variant.SLAB, BlockModelGenerators.BlockFamilyProvider::slab) - .put(net.minecraft.data.BlockFamily.Variant.STAIRS, BlockModelGenerators.BlockFamilyProvider::stairs) - .put(net.minecraft.data.BlockFamily.Variant.PRESSURE_PLATE, BlockModelGenerators.BlockFamilyProvider::pressurePlate) - .put(net.minecraft.data.BlockFamily.Variant.TRAPDOOR, BlockModelGenerators.BlockFamilyProvider::trapdoor) - .put(net.minecraft.data.BlockFamily.Variant.WALL, BlockModelGenerators.BlockFamilyProvider::wall) - .build(); - public static final List>> MULTIFACE_GENERATOR = List.of( - Pair.of(Direction.NORTH, resourceLocation -> Variant.variant().with(VariantProperties.MODEL, resourceLocation)), - Pair.of( - Direction.EAST, - resourceLocation -> Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ), - Pair.of( - Direction.SOUTH, - resourceLocation -> Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true) - ), - Pair.of( - Direction.WEST, - resourceLocation -> Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ), - Pair.of( - Direction.UP, - resourceLocation -> Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.X_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ), - Pair.of( - Direction.DOWN, - resourceLocation -> Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.X_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - ); - private static final Map CHISELED_BOOKSHELF_SLOT_MODEL_CACHE = new HashMap(); - - private static BlockStateGenerator createMirroredCubeGenerator( - Block cubeBlock, ResourceLocation location, TextureMapping textureMapping, BiConsumer> modelOutput - ) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_MIRRORED_ALL.create(cubeBlock, textureMapping, modelOutput); - return createRotatedVariant(cubeBlock, location, resourceLocation); - } - - private static BlockStateGenerator createNorthWestMirroredCubeGenerator( - Block cubeBlock, ResourceLocation location, TextureMapping textureMapping, BiConsumer> modelOutput - ) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_NORTH_WEST_MIRRORED_ALL.create(cubeBlock, textureMapping, modelOutput); - return createSimpleBlock(cubeBlock, resourceLocation); - } - - private static BlockStateGenerator createMirroredColumnGenerator( - Block columnBlock, ResourceLocation location, TextureMapping textureMapping, BiConsumer> modelOutput - ) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN_MIRRORED.create(columnBlock, textureMapping, modelOutput); - return createRotatedVariant(columnBlock, location, resourceLocation).with(createRotatedPillar()); - } - - public BlockModelGenerators( - Consumer blockStateOutput, BiConsumer> modelOutput, Consumer skippedAutoModelsOutput - ) { - this.blockStateOutput = blockStateOutput; - this.modelOutput = modelOutput; - this.skippedAutoModelsOutput = skippedAutoModelsOutput; - } - - void skipAutoItemBlock(Block block) { - this.skippedAutoModelsOutput.accept(block.asItem()); - } - - void delegateItemModel(Block block, ResourceLocation delegateModelLocation) { - this.modelOutput.accept(ModelLocationUtils.getModelLocation(block.asItem()), new DelegatedModel(delegateModelLocation)); - } - - private void delegateItemModel(Item item, ResourceLocation delegateModelLocation) { - this.modelOutput.accept(ModelLocationUtils.getModelLocation(item), new DelegatedModel(delegateModelLocation)); - } - - void createSimpleFlatItemModel(Item flatItem) { - ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(flatItem), TextureMapping.layer0(flatItem), this.modelOutput); - } - - private void createSimpleFlatItemModel(Block flatBlock) { - Item item = flatBlock.asItem(); - if (item != Items.AIR) { - ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(flatBlock), this.modelOutput); - } - } - - private void createSimpleFlatItemModel(Block flatBlock, String layerZeroTextureSuffix) { - Item item = flatBlock.asItem(); - ModelTemplates.FLAT_ITEM - .create( - ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(TextureMapping.getBlockTexture(flatBlock, layerZeroTextureSuffix)), this.modelOutput - ); - } - - private static PropertyDispatch createHorizontalFacingDispatch() { - return PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) - .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)) - .select(Direction.NORTH, Variant.variant()); - } - - private static PropertyDispatch createHorizontalFacingDispatchAlt() { - return PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) - .select(Direction.SOUTH, Variant.variant()) - .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)); - } - - private static PropertyDispatch createTorchHorizontalDispatch() { - return PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) - .select(Direction.EAST, Variant.variant()) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)); - } - - private static PropertyDispatch createFacingDispatch() { - return PropertyDispatch.property(BlockStateProperties.FACING) - .select(Direction.DOWN, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90)) - .select(Direction.UP, Variant.variant().with(VariantProperties.X_ROT, Rotation.R270)) - .select(Direction.NORTH, Variant.variant()) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)) - .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)); - } - - private static MultiVariantGenerator createRotatedVariant(Block block, ResourceLocation modelLocation) { - return MultiVariantGenerator.multiVariant(block, createRotatedVariants(modelLocation)); - } - - private static Variant[] createRotatedVariants(ResourceLocation modelLocation) { - return new Variant[]{ - Variant.variant().with(VariantProperties.MODEL, modelLocation), - Variant.variant().with(VariantProperties.MODEL, modelLocation).with(VariantProperties.Y_ROT, Rotation.R90), - Variant.variant().with(VariantProperties.MODEL, modelLocation).with(VariantProperties.Y_ROT, Rotation.R180), - Variant.variant().with(VariantProperties.MODEL, modelLocation).with(VariantProperties.Y_ROT, Rotation.R270) - }; - } - - private static MultiVariantGenerator createRotatedVariant(Block block, ResourceLocation normalModelLocation, ResourceLocation mirroredModelLocation) { - return MultiVariantGenerator.multiVariant( - block, - Variant.variant().with(VariantProperties.MODEL, normalModelLocation), - Variant.variant().with(VariantProperties.MODEL, mirroredModelLocation), - Variant.variant().with(VariantProperties.MODEL, normalModelLocation).with(VariantProperties.Y_ROT, Rotation.R180), - Variant.variant().with(VariantProperties.MODEL, mirroredModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ); - } - - private static PropertyDispatch createBooleanModelDispatch(BooleanProperty property, ResourceLocation trueModelLocation, ResourceLocation falseModelLocation) { - return PropertyDispatch.property(property) - .select(true, Variant.variant().with(VariantProperties.MODEL, trueModelLocation)) - .select(false, Variant.variant().with(VariantProperties.MODEL, falseModelLocation)); - } - - private void createRotatedMirroredVariantBlock(Block block) { - ResourceLocation resourceLocation = TexturedModel.CUBE.create(block, this.modelOutput); - ResourceLocation resourceLocation2 = TexturedModel.CUBE_MIRRORED.create(block, this.modelOutput); - this.blockStateOutput.accept(createRotatedVariant(block, resourceLocation, resourceLocation2)); - } - - private void createRotatedVariantBlock(Block block) { - ResourceLocation resourceLocation = TexturedModel.CUBE.create(block, this.modelOutput); - this.blockStateOutput.accept(createRotatedVariant(block, resourceLocation)); - } - - private void createBrushableBlock(Block block) { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block) - .with( - PropertyDispatch.property(BlockStateProperties.DUSTED) - .generate( - integer -> { - String string = "_" + integer; - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(block, string); - return Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CUBE_ALL.createWithSuffix(block, string, new TextureMapping().put(TextureSlot.ALL, resourceLocation), this.modelOutput) - ); - } - ) - ) - ); - this.delegateItemModel(block, TextureMapping.getBlockTexture(block, "_0")); - } - - static BlockStateGenerator createButton(Block buttonBlock, ResourceLocation unpoweredModelLocation, ResourceLocation poweredModelLocation) { - return MultiVariantGenerator.multiVariant(buttonBlock) - .with( - PropertyDispatch.property(BlockStateProperties.POWERED) - .select(false, Variant.variant().with(VariantProperties.MODEL, unpoweredModelLocation)) - .select(true, Variant.variant().with(VariantProperties.MODEL, poweredModelLocation)) - ) - .with( - PropertyDispatch.properties(BlockStateProperties.ATTACH_FACE, BlockStateProperties.HORIZONTAL_FACING) - .select(AttachFace.FLOOR, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.FLOOR, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)) - .select(AttachFace.FLOOR, Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.FLOOR, Direction.NORTH, Variant.variant()) - .select( - AttachFace.WALL, - Direction.EAST, - Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select( - AttachFace.WALL, - Direction.WEST, - Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select( - AttachFace.WALL, - Direction.SOUTH, - Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select(AttachFace.WALL, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true)) - .select(AttachFace.CEILING, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.X_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.X_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.X_ROT, Rotation.R180)) - ); - } - - private static PropertyDispatch.C4 configureDoorHalf( - PropertyDispatch.C4 properties, - DoubleBlockHalf half, - ResourceLocation leftModelLocation, - ResourceLocation leftOpenModelLocation, - ResourceLocation rightModelLocation, - ResourceLocation rightOpenModelLocation - ) { - return properties.select(Direction.EAST, half, DoorHingeSide.LEFT, false, Variant.variant().with(VariantProperties.MODEL, leftModelLocation)) - .select( - Direction.SOUTH, - half, - DoorHingeSide.LEFT, - false, - Variant.variant().with(VariantProperties.MODEL, leftModelLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.WEST, - half, - DoorHingeSide.LEFT, - false, - Variant.variant().with(VariantProperties.MODEL, leftModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.NORTH, - half, - DoorHingeSide.LEFT, - false, - Variant.variant().with(VariantProperties.MODEL, leftModelLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(Direction.EAST, half, DoorHingeSide.RIGHT, false, Variant.variant().with(VariantProperties.MODEL, rightModelLocation)) - .select( - Direction.SOUTH, - half, - DoorHingeSide.RIGHT, - false, - Variant.variant().with(VariantProperties.MODEL, rightModelLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.WEST, - half, - DoorHingeSide.RIGHT, - false, - Variant.variant().with(VariantProperties.MODEL, rightModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.NORTH, - half, - DoorHingeSide.RIGHT, - false, - Variant.variant().with(VariantProperties.MODEL, rightModelLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - Direction.EAST, - half, - DoorHingeSide.LEFT, - true, - Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.SOUTH, - half, - DoorHingeSide.LEFT, - true, - Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.WEST, - half, - DoorHingeSide.LEFT, - true, - Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(Direction.NORTH, half, DoorHingeSide.LEFT, true, Variant.variant().with(VariantProperties.MODEL, leftOpenModelLocation)) - .select( - Direction.EAST, - half, - DoorHingeSide.RIGHT, - true, - Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(Direction.SOUTH, half, DoorHingeSide.RIGHT, true, Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation)) - .select( - Direction.WEST, - half, - DoorHingeSide.RIGHT, - true, - Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.NORTH, - half, - DoorHingeSide.RIGHT, - true, - Variant.variant().with(VariantProperties.MODEL, rightOpenModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ); - } - - private static BlockStateGenerator createDoor( - Block doorBlock, - ResourceLocation topLeftModelLocation, - ResourceLocation topLeftOpenModelLocation, - ResourceLocation topRightModelLocation, - ResourceLocation topRightOpenModelLocation, - ResourceLocation bottomLeftModelLocation, - ResourceLocation bottomLeftOpenModelLocation, - ResourceLocation bottomRightModelLocation, - ResourceLocation bottomRightOpenModelLocation - ) { - return MultiVariantGenerator.multiVariant(doorBlock) - .with( - configureDoorHalf( - configureDoorHalf( - PropertyDispatch.properties( - BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.DOUBLE_BLOCK_HALF, BlockStateProperties.DOOR_HINGE, BlockStateProperties.OPEN - ), - DoubleBlockHalf.LOWER, - topLeftModelLocation, - topLeftOpenModelLocation, - topRightModelLocation, - topRightOpenModelLocation - ), - DoubleBlockHalf.UPPER, - bottomLeftModelLocation, - bottomLeftOpenModelLocation, - bottomRightModelLocation, - bottomRightOpenModelLocation - ) - ); - } - - static BlockStateGenerator createCustomFence( - Block customFenceBlock, - ResourceLocation postModelId, - ResourceLocation northModelId, - ResourceLocation eastModelId, - ResourceLocation southModelId, - ResourceLocation westModelId - ) { - return MultiPartGenerator.multiPart(customFenceBlock) - .with(Variant.variant().with(VariantProperties.MODEL, postModelId)) - .with( - Condition.condition().term(BlockStateProperties.NORTH, true), - Variant.variant().with(VariantProperties.MODEL, northModelId).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST, true), - Variant.variant().with(VariantProperties.MODEL, eastModelId).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, true), - Variant.variant().with(VariantProperties.MODEL, southModelId).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, westModelId).with(VariantProperties.UV_LOCK, false) - ); - } - - static BlockStateGenerator createFence(Block fenceBlock, ResourceLocation fencePostModelLocation, ResourceLocation fenceSideModelLocation) { - return MultiPartGenerator.multiPart(fenceBlock) - .with(Variant.variant().with(VariantProperties.MODEL, fencePostModelLocation)) - .with( - Condition.condition().term(BlockStateProperties.NORTH, true), - Variant.variant().with(VariantProperties.MODEL, fenceSideModelLocation).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST, true), - Variant.variant().with(VariantProperties.MODEL, fenceSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, true), - Variant.variant().with(VariantProperties.MODEL, fenceSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, fenceSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ); - } - - static BlockStateGenerator createWall( - Block wallBlock, ResourceLocation postModelLocation, ResourceLocation lowSideModelLocation, ResourceLocation tallSideModelLocation - ) { - return MultiPartGenerator.multiPart(wallBlock) - .with(Condition.condition().term(BlockStateProperties.UP, true), Variant.variant().with(VariantProperties.MODEL, postModelLocation)) - .with( - Condition.condition().term(BlockStateProperties.NORTH_WALL, WallSide.LOW), - Variant.variant().with(VariantProperties.MODEL, lowSideModelLocation).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST_WALL, WallSide.LOW), - Variant.variant().with(VariantProperties.MODEL, lowSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH_WALL, WallSide.LOW), - Variant.variant().with(VariantProperties.MODEL, lowSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST_WALL, WallSide.LOW), - Variant.variant().with(VariantProperties.MODEL, lowSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.NORTH_WALL, WallSide.TALL), - Variant.variant().with(VariantProperties.MODEL, tallSideModelLocation).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST_WALL, WallSide.TALL), - Variant.variant().with(VariantProperties.MODEL, tallSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH_WALL, WallSide.TALL), - Variant.variant().with(VariantProperties.MODEL, tallSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST_WALL, WallSide.TALL), - Variant.variant().with(VariantProperties.MODEL, tallSideModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ); - } - - static BlockStateGenerator createFenceGate( - Block fenceGateBlock, - ResourceLocation openModelLocation, - ResourceLocation closedModelLocation, - ResourceLocation wallOpenModelLocation, - ResourceLocation wallClosedModelLocation, - boolean uvLock - ) { - return MultiVariantGenerator.multiVariant(fenceGateBlock, Variant.variant().with(VariantProperties.UV_LOCK, uvLock)) - .with(createHorizontalFacingDispatchAlt()) - .with( - PropertyDispatch.properties(BlockStateProperties.IN_WALL, BlockStateProperties.OPEN) - .select(false, false, Variant.variant().with(VariantProperties.MODEL, closedModelLocation)) - .select(true, false, Variant.variant().with(VariantProperties.MODEL, wallClosedModelLocation)) - .select(false, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) - .select(true, true, Variant.variant().with(VariantProperties.MODEL, wallOpenModelLocation)) - ); - } - - static BlockStateGenerator createStairs( - Block stairsBlock, ResourceLocation innerModelLocation, ResourceLocation straightModelLocation, ResourceLocation outerModelLocation - ) { - return MultiVariantGenerator.multiVariant(stairsBlock) - .with( - PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.HALF, BlockStateProperties.STAIRS_SHAPE) - .select(Direction.EAST, Half.BOTTOM, StairsShape.STRAIGHT, Variant.variant().with(VariantProperties.MODEL, straightModelLocation)) - .select( - Direction.WEST, - Half.BOTTOM, - StairsShape.STRAIGHT, - Variant.variant().with(VariantProperties.MODEL, straightModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.BOTTOM, - StairsShape.STRAIGHT, - Variant.variant().with(VariantProperties.MODEL, straightModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.BOTTOM, - StairsShape.STRAIGHT, - Variant.variant().with(VariantProperties.MODEL, straightModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .select(Direction.EAST, Half.BOTTOM, StairsShape.OUTER_RIGHT, Variant.variant().with(VariantProperties.MODEL, outerModelLocation)) - .select( - Direction.WEST, - Half.BOTTOM, - StairsShape.OUTER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.BOTTOM, - StairsShape.OUTER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.BOTTOM, - StairsShape.OUTER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.BOTTOM, - StairsShape.OUTER_LEFT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.BOTTOM, - StairsShape.OUTER_LEFT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select(Direction.SOUTH, Half.BOTTOM, StairsShape.OUTER_LEFT, Variant.variant().with(VariantProperties.MODEL, outerModelLocation)) - .select( - Direction.NORTH, - Half.BOTTOM, - StairsShape.OUTER_LEFT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select(Direction.EAST, Half.BOTTOM, StairsShape.INNER_RIGHT, Variant.variant().with(VariantProperties.MODEL, innerModelLocation)) - .select( - Direction.WEST, - Half.BOTTOM, - StairsShape.INNER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.BOTTOM, - StairsShape.INNER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.BOTTOM, - StairsShape.INNER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.BOTTOM, - StairsShape.INNER_LEFT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.BOTTOM, - StairsShape.INNER_LEFT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .select(Direction.SOUTH, Half.BOTTOM, StairsShape.INNER_LEFT, Variant.variant().with(VariantProperties.MODEL, innerModelLocation)) - .select( - Direction.NORTH, - Half.BOTTOM, - StairsShape.INNER_LEFT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.TOP, - StairsShape.STRAIGHT, - Variant.variant().with(VariantProperties.MODEL, straightModelLocation).with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.TOP, - StairsShape.STRAIGHT, - Variant.variant() - .with(VariantProperties.MODEL, straightModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.TOP, - StairsShape.STRAIGHT, - Variant.variant() - .with(VariantProperties.MODEL, straightModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.TOP, - StairsShape.STRAIGHT, - Variant.variant() - .with(VariantProperties.MODEL, straightModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.TOP, - StairsShape.OUTER_RIGHT, - Variant.variant() - .with(VariantProperties.MODEL, outerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.TOP, - StairsShape.OUTER_RIGHT, - Variant.variant() - .with(VariantProperties.MODEL, outerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.TOP, - StairsShape.OUTER_RIGHT, - Variant.variant() - .with(VariantProperties.MODEL, outerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.TOP, - StairsShape.OUTER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.TOP, - StairsShape.OUTER_LEFT, - Variant.variant().with(VariantProperties.MODEL, outerModelLocation).with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.TOP, - StairsShape.OUTER_LEFT, - Variant.variant() - .with(VariantProperties.MODEL, outerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.TOP, - StairsShape.OUTER_LEFT, - Variant.variant() - .with(VariantProperties.MODEL, outerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.TOP, - StairsShape.OUTER_LEFT, - Variant.variant() - .with(VariantProperties.MODEL, outerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.TOP, - StairsShape.INNER_RIGHT, - Variant.variant() - .with(VariantProperties.MODEL, innerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.TOP, - StairsShape.INNER_RIGHT, - Variant.variant() - .with(VariantProperties.MODEL, innerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.TOP, - StairsShape.INNER_RIGHT, - Variant.variant() - .with(VariantProperties.MODEL, innerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.TOP, - StairsShape.INNER_RIGHT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.EAST, - Half.TOP, - StairsShape.INNER_LEFT, - Variant.variant().with(VariantProperties.MODEL, innerModelLocation).with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.WEST, - Half.TOP, - StairsShape.INNER_LEFT, - Variant.variant() - .with(VariantProperties.MODEL, innerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.SOUTH, - Half.TOP, - StairsShape.INNER_LEFT, - Variant.variant() - .with(VariantProperties.MODEL, innerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - .select( - Direction.NORTH, - Half.TOP, - StairsShape.INNER_LEFT, - Variant.variant() - .with(VariantProperties.MODEL, innerModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true) - ) - ); - } - - private static BlockStateGenerator createOrientableTrapdoor( - Block orientableTrapdoorBlock, ResourceLocation topModelLocation, ResourceLocation bottomModelLocation, ResourceLocation openModelLocation - ) { - return MultiVariantGenerator.multiVariant(orientableTrapdoorBlock) - .with( - PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.HALF, BlockStateProperties.OPEN) - .select(Direction.NORTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) - .select( - Direction.SOUTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.EAST, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.WEST, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(Direction.NORTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) - .select(Direction.SOUTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.EAST, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.WEST, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation).with(VariantProperties.Y_ROT, Rotation.R270)) - .select(Direction.NORTH, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) - .select( - Direction.SOUTH, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select(Direction.EAST, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.WEST, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R270)) - .select( - Direction.NORTH, - Half.TOP, - true, - Variant.variant() - .with(VariantProperties.MODEL, openModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.SOUTH, - Half.TOP, - true, - Variant.variant() - .with(VariantProperties.MODEL, openModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R0) - ) - .select( - Direction.EAST, - Half.TOP, - true, - Variant.variant() - .with(VariantProperties.MODEL, openModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - Direction.WEST, - Half.TOP, - true, - Variant.variant() - .with(VariantProperties.MODEL, openModelLocation) - .with(VariantProperties.X_ROT, Rotation.R180) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - ); - } - - private static BlockStateGenerator createTrapdoor( - Block trapdoorBlock, ResourceLocation topModelLocation, ResourceLocation bottomModelLocation, ResourceLocation openModelLocation - ) { - return MultiVariantGenerator.multiVariant(trapdoorBlock) - .with( - PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.HALF, BlockStateProperties.OPEN) - .select(Direction.NORTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) - .select(Direction.SOUTH, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) - .select(Direction.EAST, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) - .select(Direction.WEST, Half.BOTTOM, false, Variant.variant().with(VariantProperties.MODEL, bottomModelLocation)) - .select(Direction.NORTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) - .select(Direction.SOUTH, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) - .select(Direction.EAST, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) - .select(Direction.WEST, Half.TOP, false, Variant.variant().with(VariantProperties.MODEL, topModelLocation)) - .select(Direction.NORTH, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) - .select( - Direction.SOUTH, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select(Direction.EAST, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.WEST, Half.BOTTOM, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R270)) - .select(Direction.NORTH, Half.TOP, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation)) - .select(Direction.SOUTH, Half.TOP, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.EAST, Half.TOP, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.WEST, Half.TOP, true, Variant.variant().with(VariantProperties.MODEL, openModelLocation).with(VariantProperties.Y_ROT, Rotation.R270)) - ); - } - - static MultiVariantGenerator createSimpleBlock(Block block, ResourceLocation modelLocation) { - return MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, modelLocation)); - } - - private static PropertyDispatch createRotatedPillar() { - return PropertyDispatch.property(BlockStateProperties.AXIS) - .select(Direction.Axis.Y, Variant.variant()) - .select(Direction.Axis.Z, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90)) - .select(Direction.Axis.X, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R90)); - } - - static BlockStateGenerator createPillarBlockUVLocked( - Block block, TextureMapping textureMapping, BiConsumer> modelOutput - ) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN_UV_LOCKED_X.create(block, textureMapping, modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUBE_COLUMN_UV_LOCKED_Y.create(block, textureMapping, modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.CUBE_COLUMN_UV_LOCKED_Z.create(block, textureMapping, modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.CUBE_COLUMN.create(block, textureMapping, modelOutput); - return MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) - .with( - PropertyDispatch.property(BlockStateProperties.AXIS) - .select(Direction.Axis.X, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(Direction.Axis.Y, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(Direction.Axis.Z, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - ); - } - - static BlockStateGenerator createAxisAlignedPillarBlock(Block axisAlignedPillarBlock, ResourceLocation modelLocation) { - return MultiVariantGenerator.multiVariant(axisAlignedPillarBlock, Variant.variant().with(VariantProperties.MODEL, modelLocation)).with(createRotatedPillar()); - } - - private void createAxisAlignedPillarBlockCustomModel(Block axisAlignedPillarBlock, ResourceLocation modelLocation) { - this.blockStateOutput.accept(createAxisAlignedPillarBlock(axisAlignedPillarBlock, modelLocation)); - } - - public void createAxisAlignedPillarBlock(Block axisAlignedPillarBlock, TexturedModel.Provider provider) { - ResourceLocation resourceLocation = provider.create(axisAlignedPillarBlock, this.modelOutput); - this.blockStateOutput.accept(createAxisAlignedPillarBlock(axisAlignedPillarBlock, resourceLocation)); - } - - private void createHorizontallyRotatedBlock(Block horizontallyRotatedBlock, TexturedModel.Provider provider) { - ResourceLocation resourceLocation = provider.create(horizontallyRotatedBlock, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(horizontallyRotatedBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .with(createHorizontalFacingDispatch()) - ); - } - - static BlockStateGenerator createRotatedPillarWithHorizontalVariant( - Block rotatedPillarBlock, ResourceLocation modelLocation, ResourceLocation horizontalModelLocation - ) { - return MultiVariantGenerator.multiVariant(rotatedPillarBlock) - .with( - PropertyDispatch.property(BlockStateProperties.AXIS) - .select(Direction.Axis.Y, Variant.variant().with(VariantProperties.MODEL, modelLocation)) - .select(Direction.Axis.Z, Variant.variant().with(VariantProperties.MODEL, horizontalModelLocation).with(VariantProperties.X_ROT, Rotation.R90)) - .select( - Direction.Axis.X, - Variant.variant() - .with(VariantProperties.MODEL, horizontalModelLocation) - .with(VariantProperties.X_ROT, Rotation.R90) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - ); - } - - private void createRotatedPillarWithHorizontalVariant( - Block rotatedPillarBlock, TexturedModel.Provider modelProvider, TexturedModel.Provider horizontalModelProvider - ) { - ResourceLocation resourceLocation = modelProvider.create(rotatedPillarBlock, this.modelOutput); - ResourceLocation resourceLocation2 = horizontalModelProvider.create(rotatedPillarBlock, this.modelOutput); - this.blockStateOutput.accept(createRotatedPillarWithHorizontalVariant(rotatedPillarBlock, resourceLocation, resourceLocation2)); - } - - private void createCreakingHeart(Block block) { - Function function = provider -> provider.updateTexture( - textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(block, "_active")) - ) - .updateTexture(textureMapping -> textureMapping.put(TextureSlot.END, TextureMapping.getBlockTexture(block, "_top_active"))) - .createWithSuffix(block, "_active", this.modelOutput); - ResourceLocation resourceLocation = TexturedModel.COLUMN_ALT.create(block, this.modelOutput); - ResourceLocation resourceLocation2 = TexturedModel.COLUMN_HORIZONTAL_ALT.create(block, this.modelOutput); - ResourceLocation resourceLocation3 = (ResourceLocation)function.apply(TexturedModel.COLUMN_ALT); - ResourceLocation resourceLocation4 = (ResourceLocation)function.apply(TexturedModel.COLUMN_HORIZONTAL_ALT); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block) - .with( - PropertyDispatch.properties(BlockStateProperties.AXIS, CreakingHeartBlock.CREAKING) - .select(Direction.Axis.Y, CreakingHeartBlock.CreakingHeartState.DISABLED, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select( - Direction.Axis.Z, - CreakingHeartBlock.CreakingHeartState.DISABLED, - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.X_ROT, Rotation.R90) - ) - .select( - Direction.Axis.X, - CreakingHeartBlock.CreakingHeartState.DISABLED, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation2) - .with(VariantProperties.X_ROT, Rotation.R90) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select(Direction.Axis.Y, CreakingHeartBlock.CreakingHeartState.DORMANT, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - .select( - Direction.Axis.Z, - CreakingHeartBlock.CreakingHeartState.DORMANT, - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.X_ROT, Rotation.R90) - ) - .select( - Direction.Axis.X, - CreakingHeartBlock.CreakingHeartState.DORMANT, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation4) - .with(VariantProperties.X_ROT, Rotation.R90) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select(Direction.Axis.Y, CreakingHeartBlock.CreakingHeartState.ACTIVE, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - .select( - Direction.Axis.Z, - CreakingHeartBlock.CreakingHeartState.ACTIVE, - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.X_ROT, Rotation.R90) - ) - .select( - Direction.Axis.X, - CreakingHeartBlock.CreakingHeartState.ACTIVE, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation4) - .with(VariantProperties.X_ROT, Rotation.R90) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - ) - ); - } - - private ResourceLocation createSuffixedVariant( - Block block, String suffix, ModelTemplate modelTemplate, Function textureMappingGetter - ) { - return modelTemplate.createWithSuffix( - block, suffix, (TextureMapping)textureMappingGetter.apply(TextureMapping.getBlockTexture(block, suffix)), this.modelOutput - ); - } - - static BlockStateGenerator createPressurePlate(Block pressurePlateBlock, ResourceLocation unpoweredModelLocation, ResourceLocation poweredModelLocation) { - return MultiVariantGenerator.multiVariant(pressurePlateBlock) - .with(createBooleanModelDispatch(BlockStateProperties.POWERED, poweredModelLocation, unpoweredModelLocation)); - } - - static BlockStateGenerator createSlab( - Block slabBlock, ResourceLocation bottomHalfModelLocation, ResourceLocation topHalfModelLocation, ResourceLocation doubleModelLocation - ) { - return MultiVariantGenerator.multiVariant(slabBlock) - .with( - PropertyDispatch.property(BlockStateProperties.SLAB_TYPE) - .select(SlabType.BOTTOM, Variant.variant().with(VariantProperties.MODEL, bottomHalfModelLocation)) - .select(SlabType.TOP, Variant.variant().with(VariantProperties.MODEL, topHalfModelLocation)) - .select(SlabType.DOUBLE, Variant.variant().with(VariantProperties.MODEL, doubleModelLocation)) - ); - } - - public void createTrivialCube(Block block) { - this.createTrivialBlock(block, TexturedModel.CUBE); - } - - public void createTrivialBlock(Block block, TexturedModel.Provider provider) { - this.blockStateOutput.accept(createSimpleBlock(block, provider.create(block, this.modelOutput))); - } - - private void createTrivialBlock(Block block, TextureMapping textureMapping, ModelTemplate modelTemplate) { - ResourceLocation resourceLocation = modelTemplate.create(block, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(block, resourceLocation)); - } - - private BlockModelGenerators.BlockFamilyProvider family(Block block) { - TexturedModel texturedModel = (TexturedModel)this.texturedModels.getOrDefault(block, TexturedModel.CUBE.get(block)); - return new BlockModelGenerators.BlockFamilyProvider(texturedModel.getMapping()).fullBlock(block, texturedModel.getTemplate()); - } - - public void createHangingSign(Block particleBlock, Block hangingSignBlock, Block wallHangingSignBlock) { - TextureMapping textureMapping = TextureMapping.particle(particleBlock); - ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(hangingSignBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(hangingSignBlock, resourceLocation)); - this.blockStateOutput.accept(createSimpleBlock(wallHangingSignBlock, resourceLocation)); - this.createSimpleFlatItemModel(hangingSignBlock.asItem()); - this.skipAutoItemBlock(wallHangingSignBlock); - } - - void createDoor(Block doorBlock) { - TextureMapping textureMapping = TextureMapping.door(doorBlock); - ResourceLocation resourceLocation = ModelTemplates.DOOR_BOTTOM_LEFT.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.DOOR_BOTTOM_LEFT_OPEN.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.DOOR_BOTTOM_RIGHT.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.DOOR_BOTTOM_RIGHT_OPEN.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation5 = ModelTemplates.DOOR_TOP_LEFT.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation6 = ModelTemplates.DOOR_TOP_LEFT_OPEN.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation7 = ModelTemplates.DOOR_TOP_RIGHT.create(doorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation8 = ModelTemplates.DOOR_TOP_RIGHT_OPEN.create(doorBlock, textureMapping, this.modelOutput); - this.createSimpleFlatItemModel(doorBlock.asItem()); - this.blockStateOutput - .accept( - createDoor( - doorBlock, - resourceLocation, - resourceLocation2, - resourceLocation3, - resourceLocation4, - resourceLocation5, - resourceLocation6, - resourceLocation7, - resourceLocation8 - ) - ); - } - - private void copyDoorModel(Block doorBlock, Block sourceBlock) { - ResourceLocation resourceLocation = ModelTemplates.DOOR_BOTTOM_LEFT.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation2 = ModelTemplates.DOOR_BOTTOM_LEFT_OPEN.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation3 = ModelTemplates.DOOR_BOTTOM_RIGHT.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation4 = ModelTemplates.DOOR_BOTTOM_RIGHT_OPEN.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation5 = ModelTemplates.DOOR_TOP_LEFT.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation6 = ModelTemplates.DOOR_TOP_LEFT_OPEN.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation7 = ModelTemplates.DOOR_TOP_RIGHT.getDefaultModelLocation(doorBlock); - ResourceLocation resourceLocation8 = ModelTemplates.DOOR_TOP_RIGHT_OPEN.getDefaultModelLocation(doorBlock); - this.delegateItemModel(sourceBlock, ModelLocationUtils.getModelLocation(doorBlock.asItem())); - this.blockStateOutput - .accept( - createDoor( - sourceBlock, - resourceLocation, - resourceLocation2, - resourceLocation3, - resourceLocation4, - resourceLocation5, - resourceLocation6, - resourceLocation7, - resourceLocation8 - ) - ); - } - - void createOrientableTrapdoor(Block orientableTrapdoorBlock) { - TextureMapping textureMapping = TextureMapping.defaultTexture(orientableTrapdoorBlock); - ResourceLocation resourceLocation = ModelTemplates.ORIENTABLE_TRAPDOOR_TOP.create(orientableTrapdoorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.ORIENTABLE_TRAPDOOR_BOTTOM.create(orientableTrapdoorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.ORIENTABLE_TRAPDOOR_OPEN.create(orientableTrapdoorBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createOrientableTrapdoor(orientableTrapdoorBlock, resourceLocation, resourceLocation2, resourceLocation3)); - this.delegateItemModel(orientableTrapdoorBlock, resourceLocation2); - } - - void createTrapdoor(Block trapdoorBlock) { - TextureMapping textureMapping = TextureMapping.defaultTexture(trapdoorBlock); - ResourceLocation resourceLocation = ModelTemplates.TRAPDOOR_TOP.create(trapdoorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.TRAPDOOR_BOTTOM.create(trapdoorBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.TRAPDOOR_OPEN.create(trapdoorBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createTrapdoor(trapdoorBlock, resourceLocation, resourceLocation2, resourceLocation3)); - this.delegateItemModel(trapdoorBlock, resourceLocation2); - } - - private void copyTrapdoorModel(Block trapdoorBlock, Block sourceBlock) { - ResourceLocation resourceLocation = ModelTemplates.TRAPDOOR_TOP.getDefaultModelLocation(trapdoorBlock); - ResourceLocation resourceLocation2 = ModelTemplates.TRAPDOOR_BOTTOM.getDefaultModelLocation(trapdoorBlock); - ResourceLocation resourceLocation3 = ModelTemplates.TRAPDOOR_OPEN.getDefaultModelLocation(trapdoorBlock); - this.delegateItemModel(sourceBlock, ModelLocationUtils.getModelLocation(trapdoorBlock.asItem())); - this.blockStateOutput.accept(createTrapdoor(sourceBlock, resourceLocation, resourceLocation2, resourceLocation3)); - } - - private void createBigDripLeafBlock() { - this.skipAutoItemBlock(Blocks.BIG_DRIPLEAF); - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.BIG_DRIPLEAF); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.BIG_DRIPLEAF, "_partial_tilt"); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.BIG_DRIPLEAF, "_full_tilt"); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.BIG_DRIPLEAF) - .with(createHorizontalFacingDispatch()) - .with( - PropertyDispatch.property(BlockStateProperties.TILT) - .select(Tilt.NONE, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(Tilt.UNSTABLE, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(Tilt.PARTIAL, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(Tilt.FULL, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - ) - ); - } - - private BlockModelGenerators.WoodProvider woodProvider(Block logBlock) { - return new BlockModelGenerators.WoodProvider(TextureMapping.logColumn(logBlock)); - } - - private void createNonTemplateModelBlock(Block block) { - this.createNonTemplateModelBlock(block, block); - } - - private void createNonTemplateModelBlock(Block block, Block modelBlock) { - this.blockStateOutput.accept(createSimpleBlock(block, ModelLocationUtils.getModelLocation(modelBlock))); - } - - private void createCrossBlockWithDefaultItem(Block crossBlock, BlockModelGenerators.TintState tintState) { - this.createSimpleFlatItemModel(crossBlock); - this.createCrossBlock(crossBlock, tintState); - } - - private void createCrossBlockWithDefaultItem(Block crossBlock, BlockModelGenerators.TintState tintState, TextureMapping textureMapping) { - this.createSimpleFlatItemModel(crossBlock); - this.createCrossBlock(crossBlock, tintState, textureMapping); - } - - private void createCrossBlock(Block crossBlock, BlockModelGenerators.TintState tintState) { - TextureMapping textureMapping = TextureMapping.cross(crossBlock); - this.createCrossBlock(crossBlock, tintState, textureMapping); - } - - private void createCrossBlock(Block crossBlock, BlockModelGenerators.TintState tintState, TextureMapping textureMapping) { - ResourceLocation resourceLocation = tintState.getCross().create(crossBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(crossBlock, resourceLocation)); - } - - private void createCrossBlock(Block crossBlock, BlockModelGenerators.TintState tintState, Property property, int... propertyValues) { - if (property.getPossibleValues().size() != propertyValues.length) { - throw new IllegalArgumentException("missing values for property: " + property); - } else { - PropertyDispatch propertyDispatch = PropertyDispatch.property(property).generate(integer -> { - String string = "_stage" + propertyValues[integer]; - TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(crossBlock, string)); - ResourceLocation resourceLocation = tintState.getCross().createWithSuffix(crossBlock, string, textureMapping, this.modelOutput); - return Variant.variant().with(VariantProperties.MODEL, resourceLocation); - }); - this.createSimpleFlatItemModel(crossBlock.asItem()); - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(crossBlock).with(propertyDispatch)); - } - } - - private void createPlant(Block plantBlock, Block pottedPlantBlock, BlockModelGenerators.TintState tintState) { - this.createCrossBlockWithDefaultItem(plantBlock, tintState); - TextureMapping textureMapping = TextureMapping.plant(plantBlock); - ResourceLocation resourceLocation = tintState.getCrossPot().create(pottedPlantBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(pottedPlantBlock, resourceLocation)); - } - - private void createCoralFans(Block coralFanBlock, Block coralWallFanBlock) { - TexturedModel texturedModel = TexturedModel.CORAL_FAN.get(coralFanBlock); - ResourceLocation resourceLocation = texturedModel.create(coralFanBlock, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(coralFanBlock, resourceLocation)); - ResourceLocation resourceLocation2 = ModelTemplates.CORAL_WALL_FAN.create(coralWallFanBlock, texturedModel.getMapping(), this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(coralWallFanBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .with(createHorizontalFacingDispatch()) - ); - this.createSimpleFlatItemModel(coralFanBlock); - } - - private void createStems(Block unattachedStemBlock, Block attachedStemBlock) { - this.createSimpleFlatItemModel(unattachedStemBlock.asItem()); - TextureMapping textureMapping = TextureMapping.stem(unattachedStemBlock); - TextureMapping textureMapping2 = TextureMapping.attachedStem(unattachedStemBlock, attachedStemBlock); - ResourceLocation resourceLocation = ModelTemplates.ATTACHED_STEM.create(attachedStemBlock, textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(attachedStemBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .with( - PropertyDispatch.property(BlockStateProperties.HORIZONTAL_FACING) - .select(Direction.WEST, Variant.variant()) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)) - .select(Direction.NORTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - ) - ); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(unattachedStemBlock) - .with( - PropertyDispatch.property(BlockStateProperties.AGE_7) - .generate( - integer -> Variant.variant().with(VariantProperties.MODEL, ModelTemplates.STEMS[integer].create(unattachedStemBlock, textureMapping, this.modelOutput)) - ) - ) - ); - } - - private void createPitcherPlant() { - Block block = Blocks.PITCHER_PLANT; - this.createSimpleFlatItemModel(block.asItem()); - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block, "_top"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(block, "_bottom"); - this.createDoubleBlock(block, resourceLocation, resourceLocation2); - } - - private void createPitcherCrop() { - Block block = Blocks.PITCHER_CROP; - this.createSimpleFlatItemModel(block.asItem()); - PropertyDispatch propertyDispatch = PropertyDispatch.properties(PitcherCropBlock.AGE, BlockStateProperties.DOUBLE_BLOCK_HALF) - .generate((integer, doubleBlockHalf) -> { - return switch (doubleBlockHalf) { - case UPPER -> Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(block, "_top_stage_" + integer)); - case LOWER -> Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(block, "_bottom_stage_" + integer)); - }; - }); - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block).with(propertyDispatch)); - } - - private void createCoral( - Block coralBlock, - Block deadCoralBlock, - Block coralFullBlock, - Block deadCoralFullBlock, - Block coralFanBlock, - Block deadCoralFanBlock, - Block coralWallFanBlock, - Block deadCoralWallFanBlock - ) { - this.createCrossBlockWithDefaultItem(coralBlock, BlockModelGenerators.TintState.NOT_TINTED); - this.createCrossBlockWithDefaultItem(deadCoralBlock, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialCube(coralFullBlock); - this.createTrivialCube(deadCoralFullBlock); - this.createCoralFans(coralFanBlock, coralWallFanBlock); - this.createCoralFans(deadCoralFanBlock, deadCoralWallFanBlock); - } - - private void createDoublePlant(Block doublePlantBlock, BlockModelGenerators.TintState tintState) { - this.createSimpleFlatItemModel(doublePlantBlock, "_top"); - ResourceLocation resourceLocation = this.createSuffixedVariant(doublePlantBlock, "_top", tintState.getCross(), TextureMapping::cross); - ResourceLocation resourceLocation2 = this.createSuffixedVariant(doublePlantBlock, "_bottom", tintState.getCross(), TextureMapping::cross); - this.createDoubleBlock(doublePlantBlock, resourceLocation, resourceLocation2); - } - - private void createSunflower() { - this.createSimpleFlatItemModel(Blocks.SUNFLOWER, "_front"); - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SUNFLOWER, "_top"); - ResourceLocation resourceLocation2 = this.createSuffixedVariant( - Blocks.SUNFLOWER, "_bottom", BlockModelGenerators.TintState.NOT_TINTED.getCross(), TextureMapping::cross - ); - this.createDoubleBlock(Blocks.SUNFLOWER, resourceLocation, resourceLocation2); - } - - private void createTallSeagrass() { - ResourceLocation resourceLocation = this.createSuffixedVariant(Blocks.TALL_SEAGRASS, "_top", ModelTemplates.SEAGRASS, TextureMapping::defaultTexture); - ResourceLocation resourceLocation2 = this.createSuffixedVariant(Blocks.TALL_SEAGRASS, "_bottom", ModelTemplates.SEAGRASS, TextureMapping::defaultTexture); - this.createDoubleBlock(Blocks.TALL_SEAGRASS, resourceLocation, resourceLocation2); - } - - private void createSmallDripleaf() { - this.skipAutoItemBlock(Blocks.SMALL_DRIPLEAF); - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SMALL_DRIPLEAF, "_top"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.SMALL_DRIPLEAF, "_bottom"); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SMALL_DRIPLEAF) - .with(createHorizontalFacingDispatch()) - .with( - PropertyDispatch.property(BlockStateProperties.DOUBLE_BLOCK_HALF) - .select(DoubleBlockHalf.LOWER, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(DoubleBlockHalf.UPPER, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - ) - ); - } - - private void createDoubleBlock(Block doubleBlock, ResourceLocation topHalfModelLocation, ResourceLocation bottomHalfModelLocation) { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(doubleBlock) - .with( - PropertyDispatch.property(BlockStateProperties.DOUBLE_BLOCK_HALF) - .select(DoubleBlockHalf.LOWER, Variant.variant().with(VariantProperties.MODEL, bottomHalfModelLocation)) - .select(DoubleBlockHalf.UPPER, Variant.variant().with(VariantProperties.MODEL, topHalfModelLocation)) - ) - ); - } - - private void createPassiveRail(Block railBlock) { - TextureMapping textureMapping = TextureMapping.rail(railBlock); - TextureMapping textureMapping2 = TextureMapping.rail(TextureMapping.getBlockTexture(railBlock, "_corner")); - ResourceLocation resourceLocation = ModelTemplates.RAIL_FLAT.create(railBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.RAIL_CURVED.create(railBlock, textureMapping2, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.RAIL_RAISED_NE.create(railBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.RAIL_RAISED_SW.create(railBlock, textureMapping, this.modelOutput); - this.createSimpleFlatItemModel(railBlock); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(railBlock) - .with( - PropertyDispatch.property(BlockStateProperties.RAIL_SHAPE) - .select(RailShape.NORTH_SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(RailShape.EAST_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(RailShape.ASCENDING_EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(RailShape.ASCENDING_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(RailShape.ASCENDING_NORTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - .select(RailShape.ASCENDING_SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) - .select(RailShape.SOUTH_EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(RailShape.SOUTH_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(RailShape.NORTH_WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(RailShape.NORTH_EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R270)) - ) - ); - } - - private void createActiveRail(Block railBlock) { - ResourceLocation resourceLocation = this.createSuffixedVariant(railBlock, "", ModelTemplates.RAIL_FLAT, TextureMapping::rail); - ResourceLocation resourceLocation2 = this.createSuffixedVariant(railBlock, "", ModelTemplates.RAIL_RAISED_NE, TextureMapping::rail); - ResourceLocation resourceLocation3 = this.createSuffixedVariant(railBlock, "", ModelTemplates.RAIL_RAISED_SW, TextureMapping::rail); - ResourceLocation resourceLocation4 = this.createSuffixedVariant(railBlock, "_on", ModelTemplates.RAIL_FLAT, TextureMapping::rail); - ResourceLocation resourceLocation5 = this.createSuffixedVariant(railBlock, "_on", ModelTemplates.RAIL_RAISED_NE, TextureMapping::rail); - ResourceLocation resourceLocation6 = this.createSuffixedVariant(railBlock, "_on", ModelTemplates.RAIL_RAISED_SW, TextureMapping::rail); - PropertyDispatch propertyDispatch = PropertyDispatch.properties(BlockStateProperties.POWERED, BlockStateProperties.RAIL_SHAPE_STRAIGHT) - .generate((boolean_, railShape) -> { - switch (railShape) { - case NORTH_SOUTH: - return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation4 : resourceLocation); - case EAST_WEST: - return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation4 : resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90); - case ASCENDING_EAST: - return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90); - case ASCENDING_WEST: - return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90); - case ASCENDING_NORTH: - return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation2); - case ASCENDING_SOUTH: - return Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation3); - default: - throw new UnsupportedOperationException("Fix you generator!"); - } - }); - this.createSimpleFlatItemModel(railBlock); - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(railBlock).with(propertyDispatch)); - } - - private BlockModelGenerators.BlockEntityModelGenerator blockEntityModels(ResourceLocation entityBlockModelLocation, Block particleBlock) { - return new BlockModelGenerators.BlockEntityModelGenerator(entityBlockModelLocation, particleBlock); - } - - private BlockModelGenerators.BlockEntityModelGenerator blockEntityModels(Block entityBlockBaseModel, Block particleBlock) { - return new BlockModelGenerators.BlockEntityModelGenerator(ModelLocationUtils.getModelLocation(entityBlockBaseModel), particleBlock); - } - - private void createAirLikeBlock(Block airLikeBlock, Item particleItem) { - ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(airLikeBlock, TextureMapping.particleFromItem(particleItem), this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(airLikeBlock, resourceLocation)); - } - - private void createAirLikeBlock(Block airLikeBlock, ResourceLocation particleTexture) { - ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(airLikeBlock, TextureMapping.particle(particleTexture), this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(airLikeBlock, resourceLocation)); - } - - private void createFullAndCarpetBlocks(Block fullBlock, Block carpetBlock) { - this.createTrivialCube(fullBlock); - ResourceLocation resourceLocation = TexturedModel.CARPET.get(fullBlock).create(carpetBlock, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(carpetBlock, resourceLocation)); - } - - private void createFlowerBed(Block flowerBedBlock) { - this.createSimpleFlatItemModel(flowerBedBlock.asItem()); - ResourceLocation resourceLocation = TexturedModel.FLOWERBED_1.create(flowerBedBlock, this.modelOutput); - ResourceLocation resourceLocation2 = TexturedModel.FLOWERBED_2.create(flowerBedBlock, this.modelOutput); - ResourceLocation resourceLocation3 = TexturedModel.FLOWERBED_3.create(flowerBedBlock, this.modelOutput); - ResourceLocation resourceLocation4 = TexturedModel.FLOWERBED_4.create(flowerBedBlock, this.modelOutput); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(flowerBedBlock) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 1, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 2, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 3, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.NORTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.SOUTH), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .with( - Condition.condition().term(BlockStateProperties.FLOWER_AMOUNT, 4).term(BlockStateProperties.HORIZONTAL_FACING, Direction.WEST), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R270) - ) - ); - } - - private void createColoredBlockWithRandomRotations(TexturedModel.Provider modelProvider, Block... coloredBlocks) { - for (Block block : coloredBlocks) { - ResourceLocation resourceLocation = modelProvider.create(block, this.modelOutput); - this.blockStateOutput.accept(createRotatedVariant(block, resourceLocation)); - } - } - - private void createColoredBlockWithStateRotations(TexturedModel.Provider modelProvider, Block... coloredBlocks) { - for (Block block : coloredBlocks) { - ResourceLocation resourceLocation = modelProvider.create(block, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, resourceLocation)).with(createHorizontalFacingDispatchAlt()) - ); - } - } - - private void createGlassBlocks(Block glassBlock, Block paneBlock) { - this.createTrivialCube(glassBlock); - TextureMapping textureMapping = TextureMapping.pane(glassBlock, paneBlock); - ResourceLocation resourceLocation = ModelTemplates.STAINED_GLASS_PANE_POST.create(paneBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.STAINED_GLASS_PANE_SIDE.create(paneBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.STAINED_GLASS_PANE_SIDE_ALT.create(paneBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.STAINED_GLASS_PANE_NOSIDE.create(paneBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation5 = ModelTemplates.STAINED_GLASS_PANE_NOSIDE_ALT.create(paneBlock, textureMapping, this.modelOutput); - Item item = paneBlock.asItem(); - ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(glassBlock), this.modelOutput); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(paneBlock) - .with(Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .with( - Condition.condition().term(BlockStateProperties.EAST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with(Condition.condition().term(BlockStateProperties.SOUTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - .with( - Condition.condition().term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with(Condition.condition().term(BlockStateProperties.NORTH, false), Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) - .with(Condition.condition().term(BlockStateProperties.EAST, false), Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R270) - ) - ); - } - - private void createCommandBlock(Block commandBlock) { - TextureMapping textureMapping = TextureMapping.commandBlock(commandBlock); - ResourceLocation resourceLocation = ModelTemplates.COMMAND_BLOCK.create(commandBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = this.createSuffixedVariant( - commandBlock, "_conditional", ModelTemplates.COMMAND_BLOCK, resourceLocationx -> textureMapping.copyAndUpdate(TextureSlot.SIDE, resourceLocationx) - ); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(commandBlock) - .with(createBooleanModelDispatch(BlockStateProperties.CONDITIONAL, resourceLocation2, resourceLocation)) - .with(createFacingDispatch()) - ); - } - - private void createAnvil(Block anvilBlock) { - ResourceLocation resourceLocation = TexturedModel.ANVIL.create(anvilBlock, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(anvilBlock, resourceLocation).with(createHorizontalFacingDispatchAlt())); - } - - private List createBambooModels(int age) { - String string = "_age" + age; - return (List)IntStream.range(1, 5) - .mapToObj(i -> Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.BAMBOO, i + string))) - .collect(Collectors.toList()); - } - - private void createBamboo() { - this.skipAutoItemBlock(Blocks.BAMBOO); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.BAMBOO) - .with(Condition.condition().term(BlockStateProperties.AGE_1, 0), this.createBambooModels(0)) - .with(Condition.condition().term(BlockStateProperties.AGE_1, 1), this.createBambooModels(1)) - .with( - Condition.condition().term(BlockStateProperties.BAMBOO_LEAVES, BambooLeaves.SMALL), - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.BAMBOO, "_small_leaves")) - ) - .with( - Condition.condition().term(BlockStateProperties.BAMBOO_LEAVES, BambooLeaves.LARGE), - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.BAMBOO, "_large_leaves")) - ) - ); - } - - private PropertyDispatch createColumnWithFacing() { - return PropertyDispatch.property(BlockStateProperties.FACING) - .select(Direction.DOWN, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180)) - .select(Direction.UP, Variant.variant()) - .select(Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90)) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.WEST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R270)) - .select(Direction.EAST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R90)); - } - - private void createBarrel() { - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.BARREL, "_top_open"); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.BARREL) - .with(this.createColumnWithFacing()) - .with( - PropertyDispatch.property(BlockStateProperties.OPEN) - .select(false, Variant.variant().with(VariantProperties.MODEL, TexturedModel.CUBE_TOP_BOTTOM.create(Blocks.BARREL, this.modelOutput))) - .select( - true, - Variant.variant() - .with( - VariantProperties.MODEL, - TexturedModel.CUBE_TOP_BOTTOM - .get(Blocks.BARREL) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.TOP, resourceLocation)) - .createWithSuffix(Blocks.BARREL, "_open", this.modelOutput) - ) - ) - ) - ); - } - - private static > PropertyDispatch createEmptyOrFullDispatch( - Property property, T minimumValueForFullVariant, ResourceLocation fullVariantModelLocation, ResourceLocation emptyVariantModelLocation - ) { - Variant variant = Variant.variant().with(VariantProperties.MODEL, fullVariantModelLocation); - Variant variant2 = Variant.variant().with(VariantProperties.MODEL, emptyVariantModelLocation); - return PropertyDispatch.property(property).generate(comparable2 -> { - boolean bl = comparable2.compareTo(minimumValueForFullVariant) >= 0; - return bl ? variant : variant2; - }); - } - - private void createBeeNest(Block beeNestBlock, Function textureMappingGetter) { - TextureMapping textureMapping = ((TextureMapping)textureMappingGetter.apply(beeNestBlock)).copyForced(TextureSlot.SIDE, TextureSlot.PARTICLE); - TextureMapping textureMapping2 = textureMapping.copyAndUpdate(TextureSlot.FRONT, TextureMapping.getBlockTexture(beeNestBlock, "_front_honey")); - ResourceLocation resourceLocation = ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM.createWithSuffix(beeNestBlock, "_empty", textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM.createWithSuffix(beeNestBlock, "_honey", textureMapping2, this.modelOutput); - this.skipAutoItemBlock(beeNestBlock); - ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM.create(ModelLocationUtils.getModelLocation(beeNestBlock.asItem(), "_empty"), textureMapping, this.modelOutput); - ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM.create(ModelLocationUtils.getModelLocation(beeNestBlock.asItem(), "_honey"), textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(beeNestBlock) - .with(createHorizontalFacingDispatch()) - .with(createEmptyOrFullDispatch(BlockStateProperties.LEVEL_HONEY, 5, resourceLocation2, resourceLocation)) - ); - } - - private void createCropBlock(Block cropBlock, Property ageProperty, int... ageToVisualStageMapping) { - if (ageProperty.getPossibleValues().size() != ageToVisualStageMapping.length) { - throw new IllegalArgumentException(); - } else { - Int2ObjectMap int2ObjectMap = new Int2ObjectOpenHashMap<>(); - PropertyDispatch propertyDispatch = PropertyDispatch.property(ageProperty) - .generate( - integer -> { - int i = ageToVisualStageMapping[integer]; - ResourceLocation resourceLocation = int2ObjectMap.computeIfAbsent( - i, (Int2ObjectFunction)(j -> this.createSuffixedVariant(cropBlock, "_stage" + i, ModelTemplates.CROP, TextureMapping::crop)) - ); - return Variant.variant().with(VariantProperties.MODEL, resourceLocation); - } - ); - this.createSimpleFlatItemModel(cropBlock.asItem()); - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(cropBlock).with(propertyDispatch)); - } - } - - private void createBell() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.BELL, "_floor"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.BELL, "_ceiling"); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.BELL, "_wall"); - ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.BELL, "_between_walls"); - this.createSimpleFlatItemModel(Items.BELL); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.BELL) - .with( - PropertyDispatch.properties(BlockStateProperties.HORIZONTAL_FACING, BlockStateProperties.BELL_ATTACHMENT) - .select(Direction.NORTH, BellAttachType.FLOOR, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select( - Direction.SOUTH, BellAttachType.FLOOR, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.EAST, BellAttachType.FLOOR, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.WEST, BellAttachType.FLOOR, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(Direction.NORTH, BellAttachType.CEILING, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select( - Direction.SOUTH, - BellAttachType.CEILING, - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.EAST, BellAttachType.CEILING, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.WEST, BellAttachType.CEILING, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - Direction.NORTH, - BellAttachType.SINGLE_WALL, - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - Direction.SOUTH, - BellAttachType.SINGLE_WALL, - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select(Direction.EAST, BellAttachType.SINGLE_WALL, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - .select( - Direction.WEST, - BellAttachType.SINGLE_WALL, - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - Direction.SOUTH, - BellAttachType.DOUBLE_WALL, - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - Direction.NORTH, - BellAttachType.DOUBLE_WALL, - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(Direction.EAST, BellAttachType.DOUBLE_WALL, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) - .select( - Direction.WEST, - BellAttachType.DOUBLE_WALL, - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R180) - ) - ) - ); - } - - private void createGrindstone() { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant( - Blocks.GRINDSTONE, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.GRINDSTONE)) - ) - .with( - PropertyDispatch.properties(BlockStateProperties.ATTACH_FACE, BlockStateProperties.HORIZONTAL_FACING) - .select(AttachFace.FLOOR, Direction.NORTH, Variant.variant()) - .select(AttachFace.FLOOR, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.FLOOR, Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.FLOOR, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)) - .select(AttachFace.WALL, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90)) - .select(AttachFace.WALL, Direction.EAST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.WALL, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.WALL, Direction.WEST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R270)) - .select(AttachFace.CEILING, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.WEST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.CEILING, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.EAST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.Y_ROT, Rotation.R270)) - ) - ); - } - - private void createFurnace(Block furnaceBlock, TexturedModel.Provider modelProvider) { - ResourceLocation resourceLocation = modelProvider.create(furnaceBlock, this.modelOutput); - ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(furnaceBlock, "_front_on"); - ResourceLocation resourceLocation3 = modelProvider.get(furnaceBlock) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.FRONT, resourceLocation2)) - .createWithSuffix(furnaceBlock, "_on", this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(furnaceBlock) - .with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation3, resourceLocation)) - .with(createHorizontalFacingDispatch()) - ); - } - - private void createCampfires(Block... campfireBlocks) { - ResourceLocation resourceLocation = ModelLocationUtils.decorateBlockModelLocation("campfire_off"); - - for (Block block : campfireBlocks) { - ResourceLocation resourceLocation2 = ModelTemplates.CAMPFIRE.create(block, TextureMapping.campfire(block), this.modelOutput); - this.createSimpleFlatItemModel(block.asItem()); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block) - .with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation2, resourceLocation)) - .with(createHorizontalFacingDispatchAlt()) - ); - } - } - - private void createAzalea(Block azaleaBlock) { - ResourceLocation resourceLocation = ModelTemplates.AZALEA.create(azaleaBlock, TextureMapping.cubeTop(azaleaBlock), this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(azaleaBlock, resourceLocation)); - } - - private void createPottedAzalea(Block pottedAzaleaBlock) { - ResourceLocation resourceLocation; - if (pottedAzaleaBlock == Blocks.POTTED_FLOWERING_AZALEA) { - resourceLocation = ModelTemplates.POTTED_FLOWERING_AZALEA.create(pottedAzaleaBlock, TextureMapping.pottedAzalea(pottedAzaleaBlock), this.modelOutput); - } else { - resourceLocation = ModelTemplates.POTTED_AZALEA.create(pottedAzaleaBlock, TextureMapping.pottedAzalea(pottedAzaleaBlock), this.modelOutput); - } - - this.blockStateOutput.accept(createSimpleBlock(pottedAzaleaBlock, resourceLocation)); - } - - private void createBookshelf() { - TextureMapping textureMapping = TextureMapping.column(TextureMapping.getBlockTexture(Blocks.BOOKSHELF), TextureMapping.getBlockTexture(Blocks.OAK_PLANKS)); - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(Blocks.BOOKSHELF, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(Blocks.BOOKSHELF, resourceLocation)); - } - - private void createRedstoneWire() { - this.createSimpleFlatItemModel(Items.REDSTONE); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.REDSTONE_WIRE) - .with( - Condition.or( - Condition.condition() - .term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.NONE) - .term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.NONE) - .term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.NONE) - .term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.NONE), - Condition.condition() - .term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) - .term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Condition.condition() - .term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) - .term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Condition.condition() - .term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) - .term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Condition.condition() - .term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) - .term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP) - ), - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_dot")) - ) - .with( - Condition.condition().term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side0")) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side_alt0")) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side_alt1")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.SIDE, RedstoneSide.UP), - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_side1")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .with( - Condition.condition().term(BlockStateProperties.NORTH_REDSTONE, RedstoneSide.UP), - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST_REDSTONE, RedstoneSide.UP), - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH_REDSTONE, RedstoneSide.UP), - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST_REDSTONE, RedstoneSide.UP), - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.decorateBlockModelLocation("redstone_dust_up")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - ); - } - - private void createComparator() { - this.createSimpleFlatItemModel(Items.COMPARATOR); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.COMPARATOR) - .with(createHorizontalFacingDispatchAlt()) - .with( - PropertyDispatch.properties(BlockStateProperties.MODE_COMPARATOR, BlockStateProperties.POWERED) - .select(ComparatorMode.COMPARE, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR))) - .select(ComparatorMode.COMPARE, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR, "_on"))) - .select( - ComparatorMode.SUBTRACT, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR, "_subtract")) - ) - .select( - ComparatorMode.SUBTRACT, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COMPARATOR, "_on_subtract")) - ) - ) - ); - } - - private void createSmoothStoneSlab() { - TextureMapping textureMapping = TextureMapping.cube(Blocks.SMOOTH_STONE); - TextureMapping textureMapping2 = TextureMapping.column(TextureMapping.getBlockTexture(Blocks.SMOOTH_STONE_SLAB, "_side"), textureMapping.get(TextureSlot.TOP)); - ResourceLocation resourceLocation = ModelTemplates.SLAB_BOTTOM.create(Blocks.SMOOTH_STONE_SLAB, textureMapping2, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.SLAB_TOP.create(Blocks.SMOOTH_STONE_SLAB, textureMapping2, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.CUBE_COLUMN.createWithOverride(Blocks.SMOOTH_STONE_SLAB, "_double", textureMapping2, this.modelOutput); - this.blockStateOutput.accept(createSlab(Blocks.SMOOTH_STONE_SLAB, resourceLocation, resourceLocation2, resourceLocation3)); - this.blockStateOutput.accept(createSimpleBlock(Blocks.SMOOTH_STONE, ModelTemplates.CUBE_ALL.create(Blocks.SMOOTH_STONE, textureMapping, this.modelOutput))); - } - - private void createBrewingStand() { - this.createSimpleFlatItemModel(Items.BREWING_STAND); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.BREWING_STAND) - .with(Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND))) - .with( - Condition.condition().term(BlockStateProperties.HAS_BOTTLE_0, true), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_bottle0")) - ) - .with( - Condition.condition().term(BlockStateProperties.HAS_BOTTLE_1, true), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_bottle1")) - ) - .with( - Condition.condition().term(BlockStateProperties.HAS_BOTTLE_2, true), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_bottle2")) - ) - .with( - Condition.condition().term(BlockStateProperties.HAS_BOTTLE_0, false), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_empty0")) - ) - .with( - Condition.condition().term(BlockStateProperties.HAS_BOTTLE_1, false), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_empty1")) - ) - .with( - Condition.condition().term(BlockStateProperties.HAS_BOTTLE_2, false), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.BREWING_STAND, "_empty2")) - ) - ); - } - - private void createMushroomBlock(Block mushroomBlock) { - ResourceLocation resourceLocation = ModelTemplates.SINGLE_FACE.create(mushroomBlock, TextureMapping.defaultTexture(mushroomBlock), this.modelOutput); - ResourceLocation resourceLocation2 = ModelLocationUtils.decorateBlockModelLocation("mushroom_block_inside"); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(mushroomBlock) - .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .with( - Condition.condition().term(BlockStateProperties.EAST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.UP, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.DOWN, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with(Condition.condition().term(BlockStateProperties.NORTH, false), Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .with( - Condition.condition().term(BlockStateProperties.EAST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.UP, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, false) - ) - .with( - Condition.condition().term(BlockStateProperties.DOWN, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, false) - ) - ); - this.delegateItemModel(mushroomBlock, TexturedModel.CUBE.createWithSuffix(mushroomBlock, "_inventory", this.modelOutput)); - } - - private void createCakeBlock() { - this.createSimpleFlatItemModel(Items.CAKE); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.CAKE) - .with( - PropertyDispatch.property(BlockStateProperties.BITES) - .select(0, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE))) - .select(1, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice1"))) - .select(2, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice2"))) - .select(3, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice3"))) - .select(4, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice4"))) - .select(5, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice5"))) - .select(6, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.CAKE, "_slice6"))) - ) - ); - } - - private void createCartographyTable() { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.PARTICLE, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side3")) - .put(TextureSlot.DOWN, TextureMapping.getBlockTexture(Blocks.DARK_OAK_PLANKS)) - .put(TextureSlot.UP, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_top")) - .put(TextureSlot.NORTH, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side3")) - .put(TextureSlot.EAST, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side3")) - .put(TextureSlot.SOUTH, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side1")) - .put(TextureSlot.WEST, TextureMapping.getBlockTexture(Blocks.CARTOGRAPHY_TABLE, "_side2")); - this.blockStateOutput - .accept(createSimpleBlock(Blocks.CARTOGRAPHY_TABLE, ModelTemplates.CUBE.create(Blocks.CARTOGRAPHY_TABLE, textureMapping, this.modelOutput))); - } - - private void createSmithingTable() { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.PARTICLE, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_front")) - .put(TextureSlot.DOWN, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_bottom")) - .put(TextureSlot.UP, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_top")) - .put(TextureSlot.NORTH, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_front")) - .put(TextureSlot.SOUTH, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_front")) - .put(TextureSlot.EAST, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_side")) - .put(TextureSlot.WEST, TextureMapping.getBlockTexture(Blocks.SMITHING_TABLE, "_side")); - this.blockStateOutput.accept(createSimpleBlock(Blocks.SMITHING_TABLE, ModelTemplates.CUBE.create(Blocks.SMITHING_TABLE, textureMapping, this.modelOutput))); - } - - private void createCraftingTableLike(Block craftingTableBlock, Block craftingTableMaterialBlock, BiFunction textureMappingGetter) { - TextureMapping textureMapping = (TextureMapping)textureMappingGetter.apply(craftingTableBlock, craftingTableMaterialBlock); - this.blockStateOutput.accept(createSimpleBlock(craftingTableBlock, ModelTemplates.CUBE.create(craftingTableBlock, textureMapping, this.modelOutput))); - } - - public void createGenericCube(Block block) { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.PARTICLE, TextureMapping.getBlockTexture(block, "_particle")) - .put(TextureSlot.DOWN, TextureMapping.getBlockTexture(block, "_down")) - .put(TextureSlot.UP, TextureMapping.getBlockTexture(block, "_up")) - .put(TextureSlot.NORTH, TextureMapping.getBlockTexture(block, "_north")) - .put(TextureSlot.SOUTH, TextureMapping.getBlockTexture(block, "_south")) - .put(TextureSlot.EAST, TextureMapping.getBlockTexture(block, "_east")) - .put(TextureSlot.WEST, TextureMapping.getBlockTexture(block, "_west")); - this.blockStateOutput.accept(createSimpleBlock(block, ModelTemplates.CUBE.create(block, textureMapping, this.modelOutput))); - } - - private void createPumpkins() { - TextureMapping textureMapping = TextureMapping.column(Blocks.PUMPKIN); - this.blockStateOutput.accept(createSimpleBlock(Blocks.PUMPKIN, ModelLocationUtils.getModelLocation(Blocks.PUMPKIN))); - this.createPumpkinVariant(Blocks.CARVED_PUMPKIN, textureMapping); - this.createPumpkinVariant(Blocks.JACK_O_LANTERN, textureMapping); - } - - private void createPumpkinVariant(Block pumpkinBlock, TextureMapping columnTextureMapping) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_ORIENTABLE - .create(pumpkinBlock, columnTextureMapping.copyAndUpdate(TextureSlot.FRONT, TextureMapping.getBlockTexture(pumpkinBlock)), this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(pumpkinBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation)).with(createHorizontalFacingDispatch()) - ); - } - - private void createCauldrons() { - this.createSimpleFlatItemModel(Items.CAULDRON); - this.createNonTemplateModelBlock(Blocks.CAULDRON); - this.blockStateOutput - .accept( - createSimpleBlock( - Blocks.LAVA_CAULDRON, - ModelTemplates.CAULDRON_FULL - .create(Blocks.LAVA_CAULDRON, TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.LAVA, "_still")), this.modelOutput) - ) - ); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.WATER_CAULDRON) - .with( - PropertyDispatch.property(LayeredCauldronBlock.LEVEL) - .select( - 1, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CAULDRON_LEVEL1 - .createWithSuffix( - Blocks.WATER_CAULDRON, "_level1", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.WATER, "_still")), this.modelOutput - ) - ) - ) - .select( - 2, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CAULDRON_LEVEL2 - .createWithSuffix( - Blocks.WATER_CAULDRON, "_level2", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.WATER, "_still")), this.modelOutput - ) - ) - ) - .select( - 3, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CAULDRON_FULL - .createWithSuffix(Blocks.WATER_CAULDRON, "_full", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.WATER, "_still")), this.modelOutput) - ) - ) - ) - ); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.POWDER_SNOW_CAULDRON) - .with( - PropertyDispatch.property(LayeredCauldronBlock.LEVEL) - .select( - 1, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CAULDRON_LEVEL1 - .createWithSuffix( - Blocks.POWDER_SNOW_CAULDRON, "_level1", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.POWDER_SNOW)), this.modelOutput - ) - ) - ) - .select( - 2, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CAULDRON_LEVEL2 - .createWithSuffix( - Blocks.POWDER_SNOW_CAULDRON, "_level2", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.POWDER_SNOW)), this.modelOutput - ) - ) - ) - .select( - 3, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.CAULDRON_FULL - .createWithSuffix( - Blocks.POWDER_SNOW_CAULDRON, "_full", TextureMapping.cauldron(TextureMapping.getBlockTexture(Blocks.POWDER_SNOW)), this.modelOutput - ) - ) - ) - ) - ); - } - - private void createChorusFlower() { - TextureMapping textureMapping = TextureMapping.defaultTexture(Blocks.CHORUS_FLOWER); - ResourceLocation resourceLocation = ModelTemplates.CHORUS_FLOWER.create(Blocks.CHORUS_FLOWER, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = this.createSuffixedVariant( - Blocks.CHORUS_FLOWER, "_dead", ModelTemplates.CHORUS_FLOWER, resourceLocationx -> textureMapping.copyAndUpdate(TextureSlot.TEXTURE, resourceLocationx) - ); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.CHORUS_FLOWER) - .with(createEmptyOrFullDispatch(BlockStateProperties.AGE_5, 5, resourceLocation2, resourceLocation)) - ); - } - - private void createCrafterBlock() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.CRAFTER); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.CRAFTER, "_triggered"); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.CRAFTER, "_crafting"); - ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.CRAFTER, "_crafting_triggered"); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.CRAFTER) - .with(PropertyDispatch.property(BlockStateProperties.ORIENTATION).generate(frontAndTop -> this.applyRotation(frontAndTop, Variant.variant()))) - .with( - PropertyDispatch.properties(BlockStateProperties.TRIGGERED, CrafterBlock.CRAFTING) - .select(false, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(true, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) - .select(true, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(false, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - ) - ); - } - - private void createDispenserBlock(Block dispenserBlock) { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.FURNACE, "_top")) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.FURNACE, "_side")) - .put(TextureSlot.FRONT, TextureMapping.getBlockTexture(dispenserBlock, "_front")); - TextureMapping textureMapping2 = new TextureMapping() - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.FURNACE, "_top")) - .put(TextureSlot.FRONT, TextureMapping.getBlockTexture(dispenserBlock, "_front_vertical")); - ResourceLocation resourceLocation = ModelTemplates.CUBE_ORIENTABLE.create(dispenserBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUBE_ORIENTABLE_VERTICAL.create(dispenserBlock, textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(dispenserBlock) - .with( - PropertyDispatch.property(BlockStateProperties.FACING) - .select(Direction.DOWN, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.X_ROT, Rotation.R180)) - .select(Direction.UP, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(Direction.NORTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(Direction.EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270)) - ) - ); - } - - private void createEndPortalFrame() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.END_PORTAL_FRAME); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.END_PORTAL_FRAME, "_filled"); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.END_PORTAL_FRAME) - .with( - PropertyDispatch.property(BlockStateProperties.EYE) - .select(false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(true, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - ) - .with(createHorizontalFacingDispatchAlt()) - ); - } - - private void createChorusPlant() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_side"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside"); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside1"); - ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside2"); - ResourceLocation resourceLocation5 = ModelLocationUtils.getModelLocation(Blocks.CHORUS_PLANT, "_noside3"); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.CHORUS_PLANT) - .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .with( - Condition.condition().term(BlockStateProperties.EAST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.UP, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.DOWN, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.NORTH, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.WEIGHT, 2), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5) - ) - .with( - Condition.condition().term(BlockStateProperties.EAST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation2) - .with(VariantProperties.WEIGHT, 2) - .with(VariantProperties.Y_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.SOUTH, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation2) - .with(VariantProperties.WEIGHT, 2) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation2) - .with(VariantProperties.WEIGHT, 2) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.UP, false), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation2) - .with(VariantProperties.WEIGHT, 2) - .with(VariantProperties.X_ROT, Rotation.R270) - .with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.UV_LOCK, true) - ) - .with( - Condition.condition().term(BlockStateProperties.DOWN, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.UV_LOCK, true), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation2) - .with(VariantProperties.WEIGHT, 2) - .with(VariantProperties.X_ROT, Rotation.R90) - .with(VariantProperties.UV_LOCK, true) - ) - ); - } - - private void createComposter() { - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.COMPOSTER) - .with(Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER))) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 1), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents1")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 2), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents2")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 3), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents3")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 4), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents4")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 5), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents5")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 6), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents6")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 7), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents7")) - ) - .with( - Condition.condition().term(BlockStateProperties.LEVEL_COMPOSTER, 8), - Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.COMPOSTER, "_contents_ready")) - ) - ); - } - - private void createCopperBulb(Block bulbBlock) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_ALL.create(bulbBlock, TextureMapping.cube(bulbBlock), this.modelOutput); - ResourceLocation resourceLocation2 = this.createSuffixedVariant(bulbBlock, "_powered", ModelTemplates.CUBE_ALL, TextureMapping::cube); - ResourceLocation resourceLocation3 = this.createSuffixedVariant(bulbBlock, "_lit", ModelTemplates.CUBE_ALL, TextureMapping::cube); - ResourceLocation resourceLocation4 = this.createSuffixedVariant(bulbBlock, "_lit_powered", ModelTemplates.CUBE_ALL, TextureMapping::cube); - this.blockStateOutput.accept(this.createCopperBulb(bulbBlock, resourceLocation, resourceLocation3, resourceLocation2, resourceLocation4)); - } - - private BlockStateGenerator createCopperBulb( - Block bulbBlock, ResourceLocation unlit, ResourceLocation unlitPowered, ResourceLocation lit, ResourceLocation litPowered - ) { - return MultiVariantGenerator.multiVariant(bulbBlock) - .with( - PropertyDispatch.properties(BlockStateProperties.LIT, BlockStateProperties.POWERED) - .generate( - (boolean_, boolean2) -> boolean_ - ? Variant.variant().with(VariantProperties.MODEL, boolean2 ? litPowered : unlitPowered) - : Variant.variant().with(VariantProperties.MODEL, boolean2 ? lit : unlit) - ) - ); - } - - private void copyCopperBulbModel(Block bulbBlock, Block sourceBlock) { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(bulbBlock); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(bulbBlock, "_powered"); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(bulbBlock, "_lit"); - ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(bulbBlock, "_lit_powered"); - this.delegateItemModel(sourceBlock, ModelLocationUtils.getModelLocation(bulbBlock.asItem())); - this.blockStateOutput.accept(this.createCopperBulb(sourceBlock, resourceLocation, resourceLocation3, resourceLocation2, resourceLocation4)); - } - - private void createAmethystCluster(Block amethystBlock) { - this.skipAutoItemBlock(amethystBlock); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant( - amethystBlock, - Variant.variant().with(VariantProperties.MODEL, ModelTemplates.CROSS.create(amethystBlock, TextureMapping.cross(amethystBlock), this.modelOutput)) - ) - .with(this.createColumnWithFacing()) - ); - } - - private void createAmethystClusters() { - this.createAmethystCluster(Blocks.SMALL_AMETHYST_BUD); - this.createAmethystCluster(Blocks.MEDIUM_AMETHYST_BUD); - this.createAmethystCluster(Blocks.LARGE_AMETHYST_BUD); - this.createAmethystCluster(Blocks.AMETHYST_CLUSTER); - } - - private void createPointedDripstone() { - this.skipAutoItemBlock(Blocks.POINTED_DRIPSTONE); - PropertyDispatch.C2 c2 = PropertyDispatch.properties( - BlockStateProperties.VERTICAL_DIRECTION, BlockStateProperties.DRIPSTONE_THICKNESS - ); - - for (DripstoneThickness dripstoneThickness : DripstoneThickness.values()) { - c2.select(Direction.UP, dripstoneThickness, this.createPointedDripstoneVariant(Direction.UP, dripstoneThickness)); - } - - for (DripstoneThickness dripstoneThickness : DripstoneThickness.values()) { - c2.select(Direction.DOWN, dripstoneThickness, this.createPointedDripstoneVariant(Direction.DOWN, dripstoneThickness)); - } - - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(Blocks.POINTED_DRIPSTONE).with(c2)); - } - - private Variant createPointedDripstoneVariant(Direction direction, DripstoneThickness dripstoneThickness) { - String string = "_" + direction.getSerializedName() + "_" + dripstoneThickness.getSerializedName(); - TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(Blocks.POINTED_DRIPSTONE, string)); - return Variant.variant() - .with(VariantProperties.MODEL, ModelTemplates.POINTED_DRIPSTONE.createWithSuffix(Blocks.POINTED_DRIPSTONE, string, textureMapping, this.modelOutput)); - } - - private void createNyliumBlock(Block nyliumBlock) { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.BOTTOM, TextureMapping.getBlockTexture(Blocks.NETHERRACK)) - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(nyliumBlock)) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(nyliumBlock, "_side")); - this.blockStateOutput.accept(createSimpleBlock(nyliumBlock, ModelTemplates.CUBE_BOTTOM_TOP.create(nyliumBlock, textureMapping, this.modelOutput))); - } - - private void createDaylightDetector() { - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.DAYLIGHT_DETECTOR, "_side"); - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.DAYLIGHT_DETECTOR, "_top")) - .put(TextureSlot.SIDE, resourceLocation); - TextureMapping textureMapping2 = new TextureMapping() - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.DAYLIGHT_DETECTOR, "_inverted_top")) - .put(TextureSlot.SIDE, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.DAYLIGHT_DETECTOR) - .with( - PropertyDispatch.property(BlockStateProperties.INVERTED) - .select( - false, - Variant.variant().with(VariantProperties.MODEL, ModelTemplates.DAYLIGHT_DETECTOR.create(Blocks.DAYLIGHT_DETECTOR, textureMapping, this.modelOutput)) - ) - .select( - true, - Variant.variant() - .with( - VariantProperties.MODEL, - ModelTemplates.DAYLIGHT_DETECTOR - .create(ModelLocationUtils.getModelLocation(Blocks.DAYLIGHT_DETECTOR, "_inverted"), textureMapping2, this.modelOutput) - ) - ) - ) - ); - } - - private void createRotatableColumn(Block rotatableColumnBlock) { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant( - rotatableColumnBlock, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(rotatableColumnBlock)) - ) - .with(this.createColumnWithFacing()) - ); - } - - private void createLightningRod() { - Block block = Blocks.LIGHTNING_ROD; - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block, "_on"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(block); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(block))) - .with(this.createColumnWithFacing()) - .with(createBooleanModelDispatch(BlockStateProperties.POWERED, resourceLocation, resourceLocation2)) - ); - } - - private void createFarmland() { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.DIRT, TextureMapping.getBlockTexture(Blocks.DIRT)) - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.FARMLAND)); - TextureMapping textureMapping2 = new TextureMapping() - .put(TextureSlot.DIRT, TextureMapping.getBlockTexture(Blocks.DIRT)) - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.FARMLAND, "_moist")); - ResourceLocation resourceLocation = ModelTemplates.FARMLAND.create(Blocks.FARMLAND, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.FARMLAND - .create(TextureMapping.getBlockTexture(Blocks.FARMLAND, "_moist"), textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.FARMLAND).with(createEmptyOrFullDispatch(BlockStateProperties.MOISTURE, 7, resourceLocation2, resourceLocation)) - ); - } - - private List createFloorFireModels(Block fireBlock) { - ResourceLocation resourceLocation = ModelTemplates.FIRE_FLOOR - .create(ModelLocationUtils.getModelLocation(fireBlock, "_floor0"), TextureMapping.fire0(fireBlock), this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.FIRE_FLOOR - .create(ModelLocationUtils.getModelLocation(fireBlock, "_floor1"), TextureMapping.fire1(fireBlock), this.modelOutput); - return ImmutableList.of(resourceLocation, resourceLocation2); - } - - private List createSideFireModels(Block fireBlock) { - ResourceLocation resourceLocation = ModelTemplates.FIRE_SIDE - .create(ModelLocationUtils.getModelLocation(fireBlock, "_side0"), TextureMapping.fire0(fireBlock), this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.FIRE_SIDE - .create(ModelLocationUtils.getModelLocation(fireBlock, "_side1"), TextureMapping.fire1(fireBlock), this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.FIRE_SIDE_ALT - .create(ModelLocationUtils.getModelLocation(fireBlock, "_side_alt0"), TextureMapping.fire0(fireBlock), this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.FIRE_SIDE_ALT - .create(ModelLocationUtils.getModelLocation(fireBlock, "_side_alt1"), TextureMapping.fire1(fireBlock), this.modelOutput); - return ImmutableList.of(resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4); - } - - private List createTopFireModels(Block fireBlock) { - ResourceLocation resourceLocation = ModelTemplates.FIRE_UP - .create(ModelLocationUtils.getModelLocation(fireBlock, "_up0"), TextureMapping.fire0(fireBlock), this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.FIRE_UP - .create(ModelLocationUtils.getModelLocation(fireBlock, "_up1"), TextureMapping.fire1(fireBlock), this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.FIRE_UP_ALT - .create(ModelLocationUtils.getModelLocation(fireBlock, "_up_alt0"), TextureMapping.fire0(fireBlock), this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.FIRE_UP_ALT - .create(ModelLocationUtils.getModelLocation(fireBlock, "_up_alt1"), TextureMapping.fire1(fireBlock), this.modelOutput); - return ImmutableList.of(resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4); - } - - private static List wrapModels(List modelLocations, UnaryOperator variantMapper) { - return (List)modelLocations.stream() - .map(resourceLocation -> Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .map(variantMapper) - .collect(Collectors.toList()); - } - - private void createFire() { - Condition condition = Condition.condition() - .term(BlockStateProperties.NORTH, false) - .term(BlockStateProperties.EAST, false) - .term(BlockStateProperties.SOUTH, false) - .term(BlockStateProperties.WEST, false) - .term(BlockStateProperties.UP, false); - List list = this.createFloorFireModels(Blocks.FIRE); - List list2 = this.createSideFireModels(Blocks.FIRE); - List list3 = this.createTopFireModels(Blocks.FIRE); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.FIRE) - .with(condition, wrapModels(list, variant -> variant)) - .with(Condition.or(Condition.condition().term(BlockStateProperties.NORTH, true), condition), wrapModels(list2, variant -> variant)) - .with( - Condition.or(Condition.condition().term(BlockStateProperties.EAST, true), condition), - wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, Rotation.R90)) - ) - .with( - Condition.or(Condition.condition().term(BlockStateProperties.SOUTH, true), condition), - wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, Rotation.R180)) - ) - .with( - Condition.or(Condition.condition().term(BlockStateProperties.WEST, true), condition), - wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, Rotation.R270)) - ) - .with(Condition.condition().term(BlockStateProperties.UP, true), wrapModels(list3, variant -> variant)) - ); - } - - private void createSoulFire() { - List list = this.createFloorFireModels(Blocks.SOUL_FIRE); - List list2 = this.createSideFireModels(Blocks.SOUL_FIRE); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.SOUL_FIRE) - .with(wrapModels(list, variant -> variant)) - .with(wrapModels(list2, variant -> variant)) - .with(wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, Rotation.R90))) - .with(wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, Rotation.R180))) - .with(wrapModels(list2, variant -> variant.with(VariantProperties.Y_ROT, Rotation.R270))) - ); - } - - private void createLantern(Block lanternBlock) { - ResourceLocation resourceLocation = TexturedModel.LANTERN.create(lanternBlock, this.modelOutput); - ResourceLocation resourceLocation2 = TexturedModel.HANGING_LANTERN.create(lanternBlock, this.modelOutput); - this.createSimpleFlatItemModel(lanternBlock.asItem()); - this.blockStateOutput - .accept(MultiVariantGenerator.multiVariant(lanternBlock).with(createBooleanModelDispatch(BlockStateProperties.HANGING, resourceLocation2, resourceLocation))); - } - - private void createMuddyMangroveRoots() { - TextureMapping textureMapping = TextureMapping.column( - TextureMapping.getBlockTexture(Blocks.MUDDY_MANGROVE_ROOTS, "_side"), TextureMapping.getBlockTexture(Blocks.MUDDY_MANGROVE_ROOTS, "_top") - ); - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(Blocks.MUDDY_MANGROVE_ROOTS, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createAxisAlignedPillarBlock(Blocks.MUDDY_MANGROVE_ROOTS, resourceLocation)); - } - - private void createMangrovePropagule() { - this.createSimpleFlatItemModel(Items.MANGROVE_PROPAGULE); - Block block = Blocks.MANGROVE_PROPAGULE; - PropertyDispatch.C2 c2 = PropertyDispatch.properties(MangrovePropaguleBlock.HANGING, MangrovePropaguleBlock.AGE); - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); - - for (int i = 0; i <= 4; i++) { - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(block, "_hanging_" + i); - c2.select(true, i, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)); - c2.select(false, i, Variant.variant().with(VariantProperties.MODEL, resourceLocation)); - } - - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(Blocks.MANGROVE_PROPAGULE).with(c2)); - } - - private void createFrostedIce() { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.FROSTED_ICE) - .with( - PropertyDispatch.property(BlockStateProperties.AGE_3) - .select( - 0, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_0", ModelTemplates.CUBE_ALL, TextureMapping::cube)) - ) - .select( - 1, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_1", ModelTemplates.CUBE_ALL, TextureMapping::cube)) - ) - .select( - 2, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_2", ModelTemplates.CUBE_ALL, TextureMapping::cube)) - ) - .select( - 3, Variant.variant().with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.FROSTED_ICE, "_3", ModelTemplates.CUBE_ALL, TextureMapping::cube)) - ) - ) - ); - } - - private void createGrassBlocks() { - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.DIRT); - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.BOTTOM, resourceLocation) - .copyForced(TextureSlot.BOTTOM, TextureSlot.PARTICLE) - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.GRASS_BLOCK, "_top")) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.GRASS_BLOCK, "_snow")); - Variant variant = Variant.variant() - .with(VariantProperties.MODEL, ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.GRASS_BLOCK, "_snow", textureMapping, this.modelOutput)); - this.createGrassLikeBlock(Blocks.GRASS_BLOCK, ModelLocationUtils.getModelLocation(Blocks.GRASS_BLOCK), variant); - ResourceLocation resourceLocation2 = TexturedModel.CUBE_TOP_BOTTOM - .get(Blocks.MYCELIUM) - .updateTextures(textureMappingx -> textureMappingx.put(TextureSlot.BOTTOM, resourceLocation)) - .create(Blocks.MYCELIUM, this.modelOutput); - this.createGrassLikeBlock(Blocks.MYCELIUM, resourceLocation2, variant); - ResourceLocation resourceLocation3 = TexturedModel.CUBE_TOP_BOTTOM - .get(Blocks.PODZOL) - .updateTextures(textureMappingx -> textureMappingx.put(TextureSlot.BOTTOM, resourceLocation)) - .create(Blocks.PODZOL, this.modelOutput); - this.createGrassLikeBlock(Blocks.PODZOL, resourceLocation3, variant); - } - - private void createGrassLikeBlock(Block grassLikeBlock, ResourceLocation modelLocation, Variant variant) { - List list = Arrays.asList(createRotatedVariants(modelLocation)); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(grassLikeBlock).with(PropertyDispatch.property(BlockStateProperties.SNOWY).select(true, variant).select(false, list)) - ); - } - - private void createCocoa() { - this.createSimpleFlatItemModel(Items.COCOA_BEANS); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.COCOA) - .with( - PropertyDispatch.property(BlockStateProperties.AGE_2) - .select(0, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COCOA, "_stage0"))) - .select(1, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COCOA, "_stage1"))) - .select(2, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.COCOA, "_stage2"))) - ) - .with(createHorizontalFacingDispatchAlt()) - ); - } - - private void createDirtPath() { - this.blockStateOutput.accept(createRotatedVariant(Blocks.DIRT_PATH, ModelLocationUtils.getModelLocation(Blocks.DIRT_PATH))); - } - - private void createWeightedPressurePlate(Block pressurePlateBlock, Block plateMaterialBlock) { - TextureMapping textureMapping = TextureMapping.defaultTexture(plateMaterialBlock); - ResourceLocation resourceLocation = ModelTemplates.PRESSURE_PLATE_UP.create(pressurePlateBlock, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.PRESSURE_PLATE_DOWN.create(pressurePlateBlock, textureMapping, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(pressurePlateBlock).with(createEmptyOrFullDispatch(BlockStateProperties.POWER, 1, resourceLocation2, resourceLocation)) - ); - } - - private void createHopper() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.HOPPER); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.HOPPER, "_side"); - this.createSimpleFlatItemModel(Items.HOPPER); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.HOPPER) - .with( - PropertyDispatch.property(BlockStateProperties.FACING_HOPPER) - .select(Direction.DOWN, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(Direction.NORTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(Direction.EAST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(Direction.SOUTH, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(Direction.WEST, Variant.variant().with(VariantProperties.MODEL, resourceLocation2).with(VariantProperties.Y_ROT, Rotation.R270)) - ) - ); - } - - private void copyModel(Block sourceBlock, Block targetBlock) { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(sourceBlock); - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(targetBlock, Variant.variant().with(VariantProperties.MODEL, resourceLocation))); - this.delegateItemModel(targetBlock, resourceLocation); - } - - private void createIronBars() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_post_ends"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_post"); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_cap"); - ResourceLocation resourceLocation4 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_cap_alt"); - ResourceLocation resourceLocation5 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_side"); - ResourceLocation resourceLocation6 = ModelLocationUtils.getModelLocation(Blocks.IRON_BARS, "_side_alt"); - this.blockStateOutput - .accept( - MultiPartGenerator.multiPart(Blocks.IRON_BARS) - .with(Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .with( - Condition.condition() - .term(BlockStateProperties.NORTH, false) - .term(BlockStateProperties.EAST, false) - .term(BlockStateProperties.SOUTH, false) - .term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation2) - ) - .with( - Condition.condition() - .term(BlockStateProperties.NORTH, true) - .term(BlockStateProperties.EAST, false) - .term(BlockStateProperties.SOUTH, false) - .term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3) - ) - .with( - Condition.condition() - .term(BlockStateProperties.NORTH, false) - .term(BlockStateProperties.EAST, true) - .term(BlockStateProperties.SOUTH, false) - .term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation3).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with( - Condition.condition() - .term(BlockStateProperties.NORTH, false) - .term(BlockStateProperties.EAST, false) - .term(BlockStateProperties.SOUTH, true) - .term(BlockStateProperties.WEST, false), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4) - ) - .with( - Condition.condition() - .term(BlockStateProperties.NORTH, false) - .term(BlockStateProperties.EAST, false) - .term(BlockStateProperties.SOUTH, false) - .term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation4).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with(Condition.condition().term(BlockStateProperties.NORTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) - .with( - Condition.condition().term(BlockStateProperties.EAST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation5).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .with(Condition.condition().term(BlockStateProperties.SOUTH, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation6)) - .with( - Condition.condition().term(BlockStateProperties.WEST, true), - Variant.variant().with(VariantProperties.MODEL, resourceLocation6).with(VariantProperties.Y_ROT, Rotation.R90) - ) - ); - this.createSimpleFlatItemModel(Blocks.IRON_BARS); - } - - private void createNonTemplateHorizontalBlock(Block horizontalBlock) { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(horizontalBlock, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(horizontalBlock))) - .with(createHorizontalFacingDispatch()) - ); - } - - private void createLever() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.LEVER); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.LEVER, "_on"); - this.createSimpleFlatItemModel(Blocks.LEVER); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.LEVER) - .with(createBooleanModelDispatch(BlockStateProperties.POWERED, resourceLocation, resourceLocation2)) - .with( - PropertyDispatch.properties(BlockStateProperties.ATTACH_FACE, BlockStateProperties.HORIZONTAL_FACING) - .select(AttachFace.CEILING, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.EAST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.Y_ROT, Rotation.R270)) - .select(AttachFace.CEILING, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180)) - .select(AttachFace.CEILING, Direction.WEST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R180).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.FLOOR, Direction.NORTH, Variant.variant()) - .select(AttachFace.FLOOR, Direction.EAST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.FLOOR, Direction.SOUTH, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.FLOOR, Direction.WEST, Variant.variant().with(VariantProperties.Y_ROT, Rotation.R270)) - .select(AttachFace.WALL, Direction.NORTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90)) - .select(AttachFace.WALL, Direction.EAST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R90)) - .select(AttachFace.WALL, Direction.SOUTH, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R180)) - .select(AttachFace.WALL, Direction.WEST, Variant.variant().with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R270)) - ) - ); - } - - private void createLilyPad() { - this.createSimpleFlatItemModel(Blocks.LILY_PAD); - this.blockStateOutput.accept(createRotatedVariant(Blocks.LILY_PAD, ModelLocationUtils.getModelLocation(Blocks.LILY_PAD))); - } - - private void createFrogspawnBlock() { - this.createSimpleFlatItemModel(Blocks.FROGSPAWN); - this.blockStateOutput.accept(createSimpleBlock(Blocks.FROGSPAWN, ModelLocationUtils.getModelLocation(Blocks.FROGSPAWN))); - } - - private void createNetherPortalBlock() { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.NETHER_PORTAL) - .with( - PropertyDispatch.property(BlockStateProperties.HORIZONTAL_AXIS) - .select(Direction.Axis.X, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.NETHER_PORTAL, "_ns"))) - .select(Direction.Axis.Z, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.NETHER_PORTAL, "_ew"))) - ) - ); - } - - private void createNetherrack() { - ResourceLocation resourceLocation = TexturedModel.CUBE.create(Blocks.NETHERRACK, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant( - Blocks.NETHERRACK, - Variant.variant().with(VariantProperties.MODEL, resourceLocation), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R90), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R180), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.X_ROT, Rotation.R270), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.X_ROT, Rotation.R90), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.X_ROT, Rotation.R180), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R90).with(VariantProperties.X_ROT, Rotation.R270), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R180).with(VariantProperties.X_ROT, Rotation.R90), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.X_ROT, Rotation.R180), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R180) - .with(VariantProperties.X_ROT, Rotation.R270), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, Rotation.R270).with(VariantProperties.X_ROT, Rotation.R90), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.X_ROT, Rotation.R180), - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation) - .with(VariantProperties.Y_ROT, Rotation.R270) - .with(VariantProperties.X_ROT, Rotation.R270) - ) - ); - } - - private void createObserver() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.OBSERVER); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.OBSERVER, "_on"); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.OBSERVER) - .with(createBooleanModelDispatch(BlockStateProperties.POWERED, resourceLocation2, resourceLocation)) - .with(createFacingDispatch()) - ); - } - - private void createPistons() { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.BOTTOM, TextureMapping.getBlockTexture(Blocks.PISTON, "_bottom")) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.PISTON, "_side")); - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.PISTON, "_top_sticky"); - ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(Blocks.PISTON, "_top"); - TextureMapping textureMapping2 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, resourceLocation); - TextureMapping textureMapping3 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, resourceLocation2); - ResourceLocation resourceLocation3 = ModelLocationUtils.getModelLocation(Blocks.PISTON, "_base"); - this.createPistonVariant(Blocks.PISTON, resourceLocation3, textureMapping3); - this.createPistonVariant(Blocks.STICKY_PISTON, resourceLocation3, textureMapping2); - ResourceLocation resourceLocation4 = ModelTemplates.CUBE_BOTTOM_TOP - .createWithSuffix(Blocks.PISTON, "_inventory", textureMapping.copyAndUpdate(TextureSlot.TOP, resourceLocation2), this.modelOutput); - ResourceLocation resourceLocation5 = ModelTemplates.CUBE_BOTTOM_TOP - .createWithSuffix(Blocks.STICKY_PISTON, "_inventory", textureMapping.copyAndUpdate(TextureSlot.TOP, resourceLocation), this.modelOutput); - this.delegateItemModel(Blocks.PISTON, resourceLocation4); - this.delegateItemModel(Blocks.STICKY_PISTON, resourceLocation5); - } - - private void createPistonVariant(Block pistonBlock, ResourceLocation baseModelLocation, TextureMapping topTextureMapping) { - ResourceLocation resourceLocation = ModelTemplates.PISTON.create(pistonBlock, topTextureMapping, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(pistonBlock) - .with(createBooleanModelDispatch(BlockStateProperties.EXTENDED, baseModelLocation, resourceLocation)) - .with(createFacingDispatch()) - ); - } - - private void createPistonHeads() { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.UNSTICKY, TextureMapping.getBlockTexture(Blocks.PISTON, "_top")) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.PISTON, "_side")); - TextureMapping textureMapping2 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, TextureMapping.getBlockTexture(Blocks.PISTON, "_top_sticky")); - TextureMapping textureMapping3 = textureMapping.copyAndUpdate(TextureSlot.PLATFORM, TextureMapping.getBlockTexture(Blocks.PISTON, "_top")); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.PISTON_HEAD) - .with( - PropertyDispatch.properties(BlockStateProperties.SHORT, BlockStateProperties.PISTON_TYPE) - .select( - false, - PistonType.DEFAULT, - Variant.variant().with(VariantProperties.MODEL, ModelTemplates.PISTON_HEAD.createWithSuffix(Blocks.PISTON, "_head", textureMapping3, this.modelOutput)) - ) - .select( - false, - PistonType.STICKY, - Variant.variant() - .with(VariantProperties.MODEL, ModelTemplates.PISTON_HEAD.createWithSuffix(Blocks.PISTON, "_head_sticky", textureMapping2, this.modelOutput)) - ) - .select( - true, - PistonType.DEFAULT, - Variant.variant() - .with(VariantProperties.MODEL, ModelTemplates.PISTON_HEAD_SHORT.createWithSuffix(Blocks.PISTON, "_head_short", textureMapping3, this.modelOutput)) - ) - .select( - true, - PistonType.STICKY, - Variant.variant() - .with( - VariantProperties.MODEL, ModelTemplates.PISTON_HEAD_SHORT.createWithSuffix(Blocks.PISTON, "_head_short_sticky", textureMapping2, this.modelOutput) - ) - ) - ) - .with(createFacingDispatch()) - ); - } - - private void createTrialSpawner() { - Block block = Blocks.TRIAL_SPAWNER; - TextureMapping textureMapping = TextureMapping.trialSpawner(block, "_side_inactive", "_top_inactive"); - TextureMapping textureMapping2 = TextureMapping.trialSpawner(block, "_side_active", "_top_active"); - TextureMapping textureMapping3 = TextureMapping.trialSpawner(block, "_side_active", "_top_ejecting_reward"); - TextureMapping textureMapping4 = TextureMapping.trialSpawner(block, "_side_inactive_ominous", "_top_inactive_ominous"); - TextureMapping textureMapping5 = TextureMapping.trialSpawner(block, "_side_active_ominous", "_top_active_ominous"); - TextureMapping textureMapping6 = TextureMapping.trialSpawner(block, "_side_active_ominous", "_top_ejecting_reward_ominous"); - ResourceLocation resourceLocation = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES.create(block, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES.createWithSuffix(block, "_active", textureMapping2, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES - .createWithSuffix(block, "_ejecting_reward", textureMapping3, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES - .createWithSuffix(block, "_inactive_ominous", textureMapping4, this.modelOutput); - ResourceLocation resourceLocation5 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES.createWithSuffix(block, "_active_ominous", textureMapping5, this.modelOutput); - ResourceLocation resourceLocation6 = ModelTemplates.CUBE_BOTTOM_TOP_INNER_FACES - .createWithSuffix(block, "_ejecting_reward_ominous", textureMapping6, this.modelOutput); - this.delegateItemModel(block, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block) - .with( - PropertyDispatch.properties(BlockStateProperties.TRIAL_SPAWNER_STATE, BlockStateProperties.OMINOUS) - .generate( - (trialSpawnerState, boolean_) -> { - return switch (trialSpawnerState) { - case INACTIVE, COOLDOWN -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation4 : resourceLocation); - case WAITING_FOR_PLAYERS, ACTIVE, WAITING_FOR_REWARD_EJECTION -> Variant.variant() - .with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation2); - case EJECTING_REWARD -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation3); - }; - } - ) - ) - ); - } - - private void createVault() { - Block block = Blocks.VAULT; - TextureMapping textureMapping = TextureMapping.vault(block, "_front_off", "_side_off", "_top", "_bottom"); - TextureMapping textureMapping2 = TextureMapping.vault(block, "_front_on", "_side_on", "_top", "_bottom"); - TextureMapping textureMapping3 = TextureMapping.vault(block, "_front_ejecting", "_side_on", "_top", "_bottom"); - TextureMapping textureMapping4 = TextureMapping.vault(block, "_front_ejecting", "_side_on", "_top_ejecting", "_bottom"); - ResourceLocation resourceLocation = ModelTemplates.VAULT.create(block, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.VAULT.createWithSuffix(block, "_active", textureMapping2, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.VAULT.createWithSuffix(block, "_unlocking", textureMapping3, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.VAULT.createWithSuffix(block, "_ejecting_reward", textureMapping4, this.modelOutput); - TextureMapping textureMapping5 = TextureMapping.vault(block, "_front_off_ominous", "_side_off_ominous", "_top_ominous", "_bottom_ominous"); - TextureMapping textureMapping6 = TextureMapping.vault(block, "_front_on_ominous", "_side_on_ominous", "_top_ominous", "_bottom_ominous"); - TextureMapping textureMapping7 = TextureMapping.vault(block, "_front_ejecting_ominous", "_side_on_ominous", "_top_ominous", "_bottom_ominous"); - TextureMapping textureMapping8 = TextureMapping.vault(block, "_front_ejecting_ominous", "_side_on_ominous", "_top_ejecting_ominous", "_bottom_ominous"); - ResourceLocation resourceLocation5 = ModelTemplates.VAULT.createWithSuffix(block, "_ominous", textureMapping5, this.modelOutput); - ResourceLocation resourceLocation6 = ModelTemplates.VAULT.createWithSuffix(block, "_active_ominous", textureMapping6, this.modelOutput); - ResourceLocation resourceLocation7 = ModelTemplates.VAULT.createWithSuffix(block, "_unlocking_ominous", textureMapping7, this.modelOutput); - ResourceLocation resourceLocation8 = ModelTemplates.VAULT.createWithSuffix(block, "_ejecting_reward_ominous", textureMapping8, this.modelOutput); - this.delegateItemModel(block, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(block) - .with(createHorizontalFacingDispatch()) - .with(PropertyDispatch.properties(VaultBlock.STATE, VaultBlock.OMINOUS).generate((vaultState, boolean_) -> { - return switch (vaultState) { - case INACTIVE -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation5 : resourceLocation); - case ACTIVE -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation6 : resourceLocation2); - case UNLOCKING -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation7 : resourceLocation3); - case EJECTING -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation8 : resourceLocation4); - }; - })) - ); - } - - private void createSculkSensor() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SCULK_SENSOR, "_inactive"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.SCULK_SENSOR, "_active"); - this.delegateItemModel(Blocks.SCULK_SENSOR, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SCULK_SENSOR) - .with( - PropertyDispatch.property(BlockStateProperties.SCULK_SENSOR_PHASE) - .generate( - sculkSensorPhase -> Variant.variant() - .with( - VariantProperties.MODEL, - sculkSensorPhase != SculkSensorPhase.ACTIVE && sculkSensorPhase != SculkSensorPhase.COOLDOWN ? resourceLocation : resourceLocation2 - ) - ) - ) - ); - } - - private void createCalibratedSculkSensor() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.CALIBRATED_SCULK_SENSOR, "_inactive"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.CALIBRATED_SCULK_SENSOR, "_active"); - this.delegateItemModel(Blocks.CALIBRATED_SCULK_SENSOR, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.CALIBRATED_SCULK_SENSOR) - .with( - PropertyDispatch.property(BlockStateProperties.SCULK_SENSOR_PHASE) - .generate( - sculkSensorPhase -> Variant.variant() - .with( - VariantProperties.MODEL, - sculkSensorPhase != SculkSensorPhase.ACTIVE && sculkSensorPhase != SculkSensorPhase.COOLDOWN ? resourceLocation : resourceLocation2 - ) - ) - ) - .with(createHorizontalFacingDispatch()) - ); - } - - private void createSculkShrieker() { - ResourceLocation resourceLocation = ModelTemplates.SCULK_SHRIEKER.create(Blocks.SCULK_SHRIEKER, TextureMapping.sculkShrieker(false), this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.SCULK_SHRIEKER - .createWithSuffix(Blocks.SCULK_SHRIEKER, "_can_summon", TextureMapping.sculkShrieker(true), this.modelOutput); - this.delegateItemModel(Blocks.SCULK_SHRIEKER, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SCULK_SHRIEKER) - .with(createBooleanModelDispatch(BlockStateProperties.CAN_SUMMON, resourceLocation2, resourceLocation)) - ); - } - - private void createScaffolding() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.SCAFFOLDING, "_stable"); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.SCAFFOLDING, "_unstable"); - this.delegateItemModel(Blocks.SCAFFOLDING, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SCAFFOLDING).with(createBooleanModelDispatch(BlockStateProperties.BOTTOM, resourceLocation2, resourceLocation)) - ); - } - - private void createCaveVines() { - ResourceLocation resourceLocation = this.createSuffixedVariant(Blocks.CAVE_VINES, "", ModelTemplates.CROSS, TextureMapping::cross); - ResourceLocation resourceLocation2 = this.createSuffixedVariant(Blocks.CAVE_VINES, "_lit", ModelTemplates.CROSS, TextureMapping::cross); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.CAVE_VINES).with(createBooleanModelDispatch(BlockStateProperties.BERRIES, resourceLocation2, resourceLocation)) - ); - ResourceLocation resourceLocation3 = this.createSuffixedVariant(Blocks.CAVE_VINES_PLANT, "", ModelTemplates.CROSS, TextureMapping::cross); - ResourceLocation resourceLocation4 = this.createSuffixedVariant(Blocks.CAVE_VINES_PLANT, "_lit", ModelTemplates.CROSS, TextureMapping::cross); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.CAVE_VINES_PLANT) - .with(createBooleanModelDispatch(BlockStateProperties.BERRIES, resourceLocation4, resourceLocation3)) - ); - } - - private void createRedstoneLamp() { - ResourceLocation resourceLocation = TexturedModel.CUBE.create(Blocks.REDSTONE_LAMP, this.modelOutput); - ResourceLocation resourceLocation2 = this.createSuffixedVariant(Blocks.REDSTONE_LAMP, "_on", ModelTemplates.CUBE_ALL, TextureMapping::cube); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.REDSTONE_LAMP).with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation2, resourceLocation)) - ); - } - - private void createNormalTorch(Block torchBlock, Block wallTorchBlock) { - TextureMapping textureMapping = TextureMapping.torch(torchBlock); - this.blockStateOutput.accept(createSimpleBlock(torchBlock, ModelTemplates.TORCH.create(torchBlock, textureMapping, this.modelOutput))); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant( - wallTorchBlock, Variant.variant().with(VariantProperties.MODEL, ModelTemplates.WALL_TORCH.create(wallTorchBlock, textureMapping, this.modelOutput)) - ) - .with(createTorchHorizontalDispatch()) - ); - this.createSimpleFlatItemModel(torchBlock); - this.skipAutoItemBlock(wallTorchBlock); - } - - private void createRedstoneTorch() { - TextureMapping textureMapping = TextureMapping.torch(Blocks.REDSTONE_TORCH); - TextureMapping textureMapping2 = TextureMapping.torch(TextureMapping.getBlockTexture(Blocks.REDSTONE_TORCH, "_off")); - ResourceLocation resourceLocation = ModelTemplates.REDSTONE_TORCH.create(Blocks.REDSTONE_TORCH, textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.TORCH_UNLIT.createWithSuffix(Blocks.REDSTONE_TORCH, "_off", textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.REDSTONE_TORCH).with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation, resourceLocation2)) - ); - ResourceLocation resourceLocation3 = ModelTemplates.REDSTONE_WALL_TORCH.create(Blocks.REDSTONE_WALL_TORCH, textureMapping, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.WALL_TORCH_UNLIT.createWithSuffix(Blocks.REDSTONE_WALL_TORCH, "_off", textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.REDSTONE_WALL_TORCH) - .with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation3, resourceLocation4)) - .with(createTorchHorizontalDispatch()) - ); - this.createSimpleFlatItemModel(Blocks.REDSTONE_TORCH); - this.skipAutoItemBlock(Blocks.REDSTONE_WALL_TORCH); - } - - private void createRepeater() { - this.createSimpleFlatItemModel(Items.REPEATER); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.REPEATER) - .with( - PropertyDispatch.properties(BlockStateProperties.DELAY, BlockStateProperties.LOCKED, BlockStateProperties.POWERED) - .generate((integer, boolean_, boolean2) -> { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append('_').append(integer).append("tick"); - if (boolean2) { - stringBuilder.append("_on"); - } - - if (boolean_) { - stringBuilder.append("_locked"); - } - - return Variant.variant().with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.REPEATER, stringBuilder.toString())); - }) - ) - .with(createHorizontalFacingDispatchAlt()) - ); - } - - private void createSeaPickle() { - this.createSimpleFlatItemModel(Items.SEA_PICKLE); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SEA_PICKLE) - .with( - PropertyDispatch.properties(BlockStateProperties.PICKLES, BlockStateProperties.WATERLOGGED) - .select(1, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("dead_sea_pickle")))) - .select(2, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("two_dead_sea_pickles")))) - .select(3, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("three_dead_sea_pickles")))) - .select(4, false, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("four_dead_sea_pickles")))) - .select(1, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("sea_pickle")))) - .select(2, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("two_sea_pickles")))) - .select(3, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("three_sea_pickles")))) - .select(4, true, Arrays.asList(createRotatedVariants(ModelLocationUtils.decorateBlockModelLocation("four_sea_pickles")))) - ) - ); - } - - private void createSnowBlocks() { - TextureMapping textureMapping = TextureMapping.cube(Blocks.SNOW); - ResourceLocation resourceLocation = ModelTemplates.CUBE_ALL.create(Blocks.SNOW_BLOCK, textureMapping, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SNOW) - .with( - PropertyDispatch.property(BlockStateProperties.LAYERS) - .generate( - integer -> Variant.variant() - .with(VariantProperties.MODEL, integer < 8 ? ModelLocationUtils.getModelLocation(Blocks.SNOW, "_height" + integer * 2) : resourceLocation) - ) - ) - ); - this.delegateItemModel(Blocks.SNOW, ModelLocationUtils.getModelLocation(Blocks.SNOW, "_height2")); - this.blockStateOutput.accept(createSimpleBlock(Blocks.SNOW_BLOCK, resourceLocation)); - } - - private void createStonecutter() { - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant( - Blocks.STONECUTTER, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.STONECUTTER)) - ) - .with(createHorizontalFacingDispatch()) - ); - } - - private void createStructureBlock() { - ResourceLocation resourceLocation = TexturedModel.CUBE.create(Blocks.STRUCTURE_BLOCK, this.modelOutput); - this.delegateItemModel(Blocks.STRUCTURE_BLOCK, resourceLocation); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.STRUCTURE_BLOCK) - .with( - PropertyDispatch.property(BlockStateProperties.STRUCTUREBLOCK_MODE) - .generate( - structureMode -> Variant.variant() - .with( - VariantProperties.MODEL, - this.createSuffixedVariant(Blocks.STRUCTURE_BLOCK, "_" + structureMode.getSerializedName(), ModelTemplates.CUBE_ALL, TextureMapping::cube) - ) - ) - ) - ); - } - - private void createSweetBerryBush() { - this.createSimpleFlatItemModel(Items.SWEET_BERRIES); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SWEET_BERRY_BUSH) - .with( - PropertyDispatch.property(BlockStateProperties.AGE_3) - .generate( - integer -> Variant.variant() - .with(VariantProperties.MODEL, this.createSuffixedVariant(Blocks.SWEET_BERRY_BUSH, "_stage" + integer, ModelTemplates.CROSS, TextureMapping::cross)) - ) - ) - ); - } - - private void createTripwire() { - this.createSimpleFlatItemModel(Items.STRING); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.TRIPWIRE) - .with( - PropertyDispatch.properties( - BlockStateProperties.ATTACHED, BlockStateProperties.EAST, BlockStateProperties.NORTH, BlockStateProperties.SOUTH, BlockStateProperties.WEST - ) - .select(false, false, false, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ns"))) - .select( - false, - true, - false, - false, - false, - Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n")).with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select(false, false, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n"))) - .select( - false, - false, - false, - true, - false, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - false, - false, - false, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_n")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(false, true, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne"))) - .select( - false, - true, - false, - true, - false, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - false, - false, - false, - true, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - false, - false, - true, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ne")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(false, false, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ns"))) - .select( - false, - true, - false, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_ns")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select(false, true, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse"))) - .select( - false, - true, - false, - true, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - false, - false, - true, - true, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - false, - true, - true, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nse")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select(false, true, true, true, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_nsew"))) - .select( - true, false, false, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ns")) - ) - .select( - true, false, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) - ) - .select( - true, - false, - false, - true, - false, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - true, - true, - false, - false, - false, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - true, - false, - false, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_n")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - true, true, true, false, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) - ) - .select( - true, - true, - false, - true, - false, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - true, - false, - false, - true, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - true, - false, - true, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ne")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - true, false, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ns")) - ) - .select( - true, - true, - false, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_ns")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - true, true, true, true, false, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) - ) - .select( - true, - true, - false, - true, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) - .with(VariantProperties.Y_ROT, Rotation.R90) - ) - .select( - true, - false, - true, - true, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) - .with(VariantProperties.Y_ROT, Rotation.R180) - ) - .select( - true, - true, - true, - false, - true, - Variant.variant() - .with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nse")) - .with(VariantProperties.Y_ROT, Rotation.R270) - ) - .select( - true, true, true, true, true, Variant.variant().with(VariantProperties.MODEL, ModelLocationUtils.getModelLocation(Blocks.TRIPWIRE, "_attached_nsew")) - ) - ) - ); - } - - private void createTripwireHook() { - this.createSimpleFlatItemModel(Blocks.TRIPWIRE_HOOK); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.TRIPWIRE_HOOK) - .with( - PropertyDispatch.properties(BlockStateProperties.ATTACHED, BlockStateProperties.POWERED) - .generate( - (boolean_, boolean2) -> Variant.variant() - .with(VariantProperties.MODEL, TextureMapping.getBlockTexture(Blocks.TRIPWIRE_HOOK, (boolean_ ? "_attached" : "") + (boolean2 ? "_on" : ""))) - ) - ) - .with(createHorizontalFacingDispatch()) - ); - } - - private ResourceLocation createTurtleEggModel(int hatchAmount, String variantName, TextureMapping textureMapping) { - switch (hatchAmount) { - case 1: - return ModelTemplates.TURTLE_EGG.create(ModelLocationUtils.decorateBlockModelLocation(variantName + "turtle_egg"), textureMapping, this.modelOutput); - case 2: - return ModelTemplates.TWO_TURTLE_EGGS - .create(ModelLocationUtils.decorateBlockModelLocation("two_" + variantName + "turtle_eggs"), textureMapping, this.modelOutput); - case 3: - return ModelTemplates.THREE_TURTLE_EGGS - .create(ModelLocationUtils.decorateBlockModelLocation("three_" + variantName + "turtle_eggs"), textureMapping, this.modelOutput); - case 4: - return ModelTemplates.FOUR_TURTLE_EGGS - .create(ModelLocationUtils.decorateBlockModelLocation("four_" + variantName + "turtle_eggs"), textureMapping, this.modelOutput); - default: - throw new UnsupportedOperationException(); - } - } - - private ResourceLocation createTurtleEggModel(Integer eggAmount, Integer variantId) { - switch (variantId) { - case 0: - return this.createTurtleEggModel(eggAmount, "", TextureMapping.cube(TextureMapping.getBlockTexture(Blocks.TURTLE_EGG))); - case 1: - return this.createTurtleEggModel( - eggAmount, "slightly_cracked_", TextureMapping.cube(TextureMapping.getBlockTexture(Blocks.TURTLE_EGG, "_slightly_cracked")) - ); - case 2: - return this.createTurtleEggModel(eggAmount, "very_cracked_", TextureMapping.cube(TextureMapping.getBlockTexture(Blocks.TURTLE_EGG, "_very_cracked"))); - default: - throw new UnsupportedOperationException(); - } - } - - private void createTurtleEgg() { - this.createSimpleFlatItemModel(Items.TURTLE_EGG); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.TURTLE_EGG) - .with( - PropertyDispatch.properties(BlockStateProperties.EGGS, BlockStateProperties.HATCH) - .generateList((integer, integer2) -> Arrays.asList(createRotatedVariants(this.createTurtleEggModel(integer, integer2)))) - ) - ); - } - - private void createSnifferEgg() { - this.createSimpleFlatItemModel(Items.SNIFFER_EGG); - Function function = integer -> { - String string = switch (integer) { - case 1 -> "_slightly_cracked"; - case 2 -> "_very_cracked"; - default -> "_not_cracked"; - }; - TextureMapping textureMapping = TextureMapping.snifferEgg(string); - return ModelTemplates.SNIFFER_EGG.createWithSuffix(Blocks.SNIFFER_EGG, string, textureMapping, this.modelOutput); - }; - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SNIFFER_EGG) - .with( - PropertyDispatch.property(SnifferEggBlock.HATCH) - .generate(integer -> Variant.variant().with(VariantProperties.MODEL, (ResourceLocation)function.apply(integer))) - ) - ); - } - - private void createMultiface(Block multifaceBlock) { - this.createSimpleFlatItemModel(multifaceBlock); - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(multifaceBlock); - MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(multifaceBlock); - TerminalCondition terminalCondition = Util.make( - Condition.condition(), - terminalConditionx -> MULTIFACE_GENERATOR.stream().map(Pair::getFirst).map(MultifaceBlock::getFaceProperty).forEach(booleanPropertyx -> { - if (multifaceBlock.defaultBlockState().hasProperty(booleanPropertyx)) { - terminalConditionx.term(booleanPropertyx, false); - } - }) - ); - - for (Pair> pair : MULTIFACE_GENERATOR) { - BooleanProperty booleanProperty = MultifaceBlock.getFaceProperty(pair.getFirst()); - Function function = pair.getSecond(); - if (multifaceBlock.defaultBlockState().hasProperty(booleanProperty)) { - multiPartGenerator.with(Condition.condition().term(booleanProperty, true), (Variant)function.apply(resourceLocation)); - multiPartGenerator.with(terminalCondition, (Variant)function.apply(resourceLocation)); - } - } - - this.blockStateOutput.accept(multiPartGenerator); - } - - private void createMossyCarpet(Block block) { - ResourceLocation resourceLocation = TexturedModel.CARPET.create(block, this.modelOutput); - ResourceLocation resourceLocation2 = TexturedModel.MOSSY_CARPET_SIDE - .get(block) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(block, "_side_tall"))) - .createWithSuffix(block, "_side_tall", this.modelOutput); - ResourceLocation resourceLocation3 = TexturedModel.MOSSY_CARPET_SIDE - .get(block) - .updateTextures(textureMapping -> textureMapping.put(TextureSlot.SIDE, TextureMapping.getBlockTexture(block, "_side_small"))) - .createWithSuffix(block, "_side_small", this.modelOutput); - MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(block); - TerminalCondition terminalCondition = Condition.condition().term(MossyCarpetBlock.BASE, false); - multiPartGenerator.with(Condition.condition().term(MossyCarpetBlock.BASE, true), Variant.variant().with(VariantProperties.MODEL, resourceLocation)); - multiPartGenerator.with(terminalCondition, Variant.variant().with(VariantProperties.MODEL, resourceLocation)); - MULTIFACE_GENERATOR.stream().map(Pair::getFirst).forEach(directionx -> { - EnumProperty enumPropertyx = MossyCarpetBlock.getPropertyForFace(directionx); - if (enumPropertyx != null && block.defaultBlockState().hasProperty(enumPropertyx)) { - terminalCondition.term(enumPropertyx, WallSide.NONE); - } - }); - - for (Pair> pair : MULTIFACE_GENERATOR) { - Direction direction = pair.getFirst(); - EnumProperty enumProperty = MossyCarpetBlock.getPropertyForFace(direction); - if (enumProperty != null) { - Function function = pair.getSecond(); - multiPartGenerator.with(Condition.condition().term(enumProperty, WallSide.TALL), (Variant)function.apply(resourceLocation2)); - multiPartGenerator.with(Condition.condition().term(enumProperty, WallSide.LOW), (Variant)function.apply(resourceLocation3)); - multiPartGenerator.with(terminalCondition, (Variant)function.apply(resourceLocation2)); - } - } - - this.blockStateOutput.accept(multiPartGenerator); - } - - private void createHangingMoss(Block block) { - PropertyDispatch propertyDispatch = PropertyDispatch.property(HangingMossBlock.TIP).generate(boolean_ -> { - String string = boolean_ ? "_tip" : ""; - TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(block, string)); - ResourceLocation resourceLocation = BlockModelGenerators.TintState.NOT_TINTED.getCross().createWithSuffix(block, string, textureMapping, this.modelOutput); - return Variant.variant().with(VariantProperties.MODEL, resourceLocation); - }); - this.createSimpleFlatItemModel(block); - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block).with(propertyDispatch)); - } - - private void createSculkCatalyst() { - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_bottom"); - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.BOTTOM, resourceLocation) - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_top")) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_side")); - TextureMapping textureMapping2 = new TextureMapping() - .put(TextureSlot.BOTTOM, resourceLocation) - .put(TextureSlot.TOP, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_top_bloom")) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.SCULK_CATALYST, "_side_bloom")); - ResourceLocation resourceLocation2 = ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.SCULK_CATALYST, "", textureMapping, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.SCULK_CATALYST, "_bloom", textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.SCULK_CATALYST) - .with( - PropertyDispatch.property(BlockStateProperties.BLOOM) - .generate(boolean_ -> Variant.variant().with(VariantProperties.MODEL, boolean_ ? resourceLocation3 : resourceLocation2)) - ) - ); - this.delegateItemModel(Items.SCULK_CATALYST, resourceLocation2); - } - - private void createChiseledBookshelf() { - Block block = Blocks.CHISELED_BOOKSHELF; - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); - MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(block); - List.of( - Pair.of(Direction.NORTH, Rotation.R0), - Pair.of(Direction.EAST, Rotation.R90), - Pair.of(Direction.SOUTH, Rotation.R180), - Pair.of(Direction.WEST, Rotation.R270) - ) - .forEach( - pair -> { - Direction direction = (Direction)pair.getFirst(); - Rotation rotation = (Rotation)pair.getSecond(); - TerminalCondition terminalCondition = Condition.condition().term(BlockStateProperties.HORIZONTAL_FACING, direction); - multiPartGenerator.with( - terminalCondition, - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, rotation).with(VariantProperties.UV_LOCK, true) - ); - this.addSlotStateAndRotationVariants(multiPartGenerator, terminalCondition, rotation); - } - ); - this.blockStateOutput.accept(multiPartGenerator); - this.delegateItemModel(block, ModelLocationUtils.getModelLocation(block, "_inventory")); - CHISELED_BOOKSHELF_SLOT_MODEL_CACHE.clear(); - } - - private void addSlotStateAndRotationVariants(MultiPartGenerator generator, TerminalCondition condition, Rotation rotation) { - List.of( - Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_0_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_TOP_LEFT), - Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_1_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_TOP_MID), - Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_2_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_TOP_RIGHT), - Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_3_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_BOTTOM_LEFT), - Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_4_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_BOTTOM_MID), - Pair.of(BlockStateProperties.CHISELED_BOOKSHELF_SLOT_5_OCCUPIED, ModelTemplates.CHISELED_BOOKSHELF_SLOT_BOTTOM_RIGHT) - ) - .forEach(pair -> { - BooleanProperty booleanProperty = (BooleanProperty)pair.getFirst(); - ModelTemplate modelTemplate = (ModelTemplate)pair.getSecond(); - this.addBookSlotModel(generator, condition, rotation, booleanProperty, modelTemplate, true); - this.addBookSlotModel(generator, condition, rotation, booleanProperty, modelTemplate, false); - }); - } - - private void addBookSlotModel( - MultiPartGenerator generator, TerminalCondition condition, Rotation rotation, BooleanProperty hasBookProperty, ModelTemplate template, boolean hasBook - ) { - String string = hasBook ? "_occupied" : "_empty"; - TextureMapping textureMapping = new TextureMapping().put(TextureSlot.TEXTURE, TextureMapping.getBlockTexture(Blocks.CHISELED_BOOKSHELF, string)); - BlockModelGenerators.BookSlotModelCacheKey bookSlotModelCacheKey = new BlockModelGenerators.BookSlotModelCacheKey(template, string); - ResourceLocation resourceLocation = (ResourceLocation)CHISELED_BOOKSHELF_SLOT_MODEL_CACHE.computeIfAbsent( - bookSlotModelCacheKey, bookSlotModelCacheKeyx -> template.createWithSuffix(Blocks.CHISELED_BOOKSHELF, string, textureMapping, this.modelOutput) - ); - generator.with( - Condition.and(condition, Condition.condition().term(hasBookProperty, hasBook)), - Variant.variant().with(VariantProperties.MODEL, resourceLocation).with(VariantProperties.Y_ROT, rotation) - ); - } - - private void createMagmaBlock() { - this.blockStateOutput - .accept( - createSimpleBlock( - Blocks.MAGMA_BLOCK, - ModelTemplates.CUBE_ALL.create(Blocks.MAGMA_BLOCK, TextureMapping.cube(ModelLocationUtils.decorateBlockModelLocation("magma")), this.modelOutput) - ) - ); - } - - private void createShulkerBox(Block shulkerBoxBlock) { - this.createTrivialBlock(shulkerBoxBlock, TexturedModel.PARTICLE_ONLY); - ModelTemplates.SHULKER_BOX_INVENTORY - .create(ModelLocationUtils.getModelLocation(shulkerBoxBlock.asItem()), TextureMapping.particle(shulkerBoxBlock), this.modelOutput); - } - - private void createGrowingPlant(Block growingPlantBlock, Block plantBlock, BlockModelGenerators.TintState tintState) { - this.createCrossBlock(growingPlantBlock, tintState); - this.createCrossBlock(plantBlock, tintState); - } - - private void createBedItem(Block bedBlock, Block woolBlock) { - ModelTemplates.BED_INVENTORY.create(ModelLocationUtils.getModelLocation(bedBlock.asItem()), TextureMapping.particle(woolBlock), this.modelOutput); - } - - private void createInfestedStone() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.STONE); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.STONE, "_mirrored"); - this.blockStateOutput.accept(createRotatedVariant(Blocks.INFESTED_STONE, resourceLocation, resourceLocation2)); - this.delegateItemModel(Blocks.INFESTED_STONE, resourceLocation); - } - - private void createInfestedDeepslate() { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(Blocks.DEEPSLATE); - ResourceLocation resourceLocation2 = ModelLocationUtils.getModelLocation(Blocks.DEEPSLATE, "_mirrored"); - this.blockStateOutput.accept(createRotatedVariant(Blocks.INFESTED_DEEPSLATE, resourceLocation, resourceLocation2).with(createRotatedPillar())); - this.delegateItemModel(Blocks.INFESTED_DEEPSLATE, resourceLocation); - } - - private void createNetherRoots(Block plantBlock, Block pottedPlantBlock) { - this.createCrossBlockWithDefaultItem(plantBlock, BlockModelGenerators.TintState.NOT_TINTED); - TextureMapping textureMapping = TextureMapping.plant(TextureMapping.getBlockTexture(plantBlock, "_pot")); - ResourceLocation resourceLocation = BlockModelGenerators.TintState.NOT_TINTED.getCrossPot().create(pottedPlantBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(pottedPlantBlock, resourceLocation)); - } - - private void createRespawnAnchor() { - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_bottom"); - ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_top_off"); - ResourceLocation resourceLocation3 = TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_top"); - ResourceLocation[] resourceLocations = new ResourceLocation[5]; - - for (int i = 0; i < 5; i++) { - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.BOTTOM, resourceLocation) - .put(TextureSlot.TOP, i == 0 ? resourceLocation2 : resourceLocation3) - .put(TextureSlot.SIDE, TextureMapping.getBlockTexture(Blocks.RESPAWN_ANCHOR, "_side" + i)); - resourceLocations[i] = ModelTemplates.CUBE_BOTTOM_TOP.createWithSuffix(Blocks.RESPAWN_ANCHOR, "_" + i, textureMapping, this.modelOutput); - } - - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.RESPAWN_ANCHOR) - .with( - PropertyDispatch.property(BlockStateProperties.RESPAWN_ANCHOR_CHARGES) - .generate(integer -> Variant.variant().with(VariantProperties.MODEL, resourceLocations[integer])) - ) - ); - this.delegateItemModel(Items.RESPAWN_ANCHOR, resourceLocations[0]); - } - - private Variant applyRotation(FrontAndTop frontAndTop, Variant variant) { - switch (frontAndTop) { - case DOWN_NORTH: - return variant.with(VariantProperties.X_ROT, Rotation.R90); - case DOWN_SOUTH: - return variant.with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R180); - case DOWN_WEST: - return variant.with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R270); - case DOWN_EAST: - return variant.with(VariantProperties.X_ROT, Rotation.R90).with(VariantProperties.Y_ROT, Rotation.R90); - case UP_NORTH: - return variant.with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.Y_ROT, Rotation.R180); - case UP_SOUTH: - return variant.with(VariantProperties.X_ROT, Rotation.R270); - case UP_WEST: - return variant.with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.Y_ROT, Rotation.R90); - case UP_EAST: - return variant.with(VariantProperties.X_ROT, Rotation.R270).with(VariantProperties.Y_ROT, Rotation.R270); - case NORTH_UP: - return variant; - case SOUTH_UP: - return variant.with(VariantProperties.Y_ROT, Rotation.R180); - case WEST_UP: - return variant.with(VariantProperties.Y_ROT, Rotation.R270); - case EAST_UP: - return variant.with(VariantProperties.Y_ROT, Rotation.R90); - default: - throw new UnsupportedOperationException("Rotation " + frontAndTop + " can't be expressed with existing x and y values"); - } - } - - private void createJigsaw() { - ResourceLocation resourceLocation = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_top"); - ResourceLocation resourceLocation2 = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_bottom"); - ResourceLocation resourceLocation3 = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_side"); - ResourceLocation resourceLocation4 = TextureMapping.getBlockTexture(Blocks.JIGSAW, "_lock"); - TextureMapping textureMapping = new TextureMapping() - .put(TextureSlot.DOWN, resourceLocation3) - .put(TextureSlot.WEST, resourceLocation3) - .put(TextureSlot.EAST, resourceLocation3) - .put(TextureSlot.PARTICLE, resourceLocation) - .put(TextureSlot.NORTH, resourceLocation) - .put(TextureSlot.SOUTH, resourceLocation2) - .put(TextureSlot.UP, resourceLocation4); - ResourceLocation resourceLocation5 = ModelTemplates.CUBE_DIRECTIONAL.create(Blocks.JIGSAW, textureMapping, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(Blocks.JIGSAW, Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) - .with(PropertyDispatch.property(BlockStateProperties.ORIENTATION).generate(frontAndTop -> this.applyRotation(frontAndTop, Variant.variant()))) - ); - } - - private void createPetrifiedOakSlab() { - Block block = Blocks.OAK_PLANKS; - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(block); - TexturedModel texturedModel = TexturedModel.CUBE.get(block); - Block block2 = Blocks.PETRIFIED_OAK_SLAB; - ResourceLocation resourceLocation2 = ModelTemplates.SLAB_BOTTOM.create(block2, texturedModel.getMapping(), this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.SLAB_TOP.create(block2, texturedModel.getMapping(), this.modelOutput); - this.blockStateOutput.accept(createSlab(block2, resourceLocation2, resourceLocation3, resourceLocation)); - } - - public void run() { - BlockFamilies.getAllFamilies() - .filter(BlockFamily::shouldGenerateModel) - .forEach(blockFamily -> this.family(blockFamily.getBaseBlock()).generateFor(blockFamily)); - this.family(Blocks.CUT_COPPER) - .generateFor(BlockFamilies.CUT_COPPER) - .donateModelTo(Blocks.CUT_COPPER, Blocks.WAXED_CUT_COPPER) - .donateModelTo(Blocks.CHISELED_COPPER, Blocks.WAXED_CHISELED_COPPER) - .generateFor(BlockFamilies.WAXED_CUT_COPPER); - this.family(Blocks.EXPOSED_CUT_COPPER) - .generateFor(BlockFamilies.EXPOSED_CUT_COPPER) - .donateModelTo(Blocks.EXPOSED_CUT_COPPER, Blocks.WAXED_EXPOSED_CUT_COPPER) - .donateModelTo(Blocks.EXPOSED_CHISELED_COPPER, Blocks.WAXED_EXPOSED_CHISELED_COPPER) - .generateFor(BlockFamilies.WAXED_EXPOSED_CUT_COPPER); - this.family(Blocks.WEATHERED_CUT_COPPER) - .generateFor(BlockFamilies.WEATHERED_CUT_COPPER) - .donateModelTo(Blocks.WEATHERED_CUT_COPPER, Blocks.WAXED_WEATHERED_CUT_COPPER) - .donateModelTo(Blocks.WEATHERED_CHISELED_COPPER, Blocks.WAXED_WEATHERED_CHISELED_COPPER) - .generateFor(BlockFamilies.WAXED_WEATHERED_CUT_COPPER); - this.family(Blocks.OXIDIZED_CUT_COPPER) - .generateFor(BlockFamilies.OXIDIZED_CUT_COPPER) - .donateModelTo(Blocks.OXIDIZED_CUT_COPPER, Blocks.WAXED_OXIDIZED_CUT_COPPER) - .donateModelTo(Blocks.OXIDIZED_CHISELED_COPPER, Blocks.WAXED_OXIDIZED_CHISELED_COPPER) - .generateFor(BlockFamilies.WAXED_OXIDIZED_CUT_COPPER); - this.createCopperBulb(Blocks.COPPER_BULB); - this.createCopperBulb(Blocks.EXPOSED_COPPER_BULB); - this.createCopperBulb(Blocks.WEATHERED_COPPER_BULB); - this.createCopperBulb(Blocks.OXIDIZED_COPPER_BULB); - this.copyCopperBulbModel(Blocks.COPPER_BULB, Blocks.WAXED_COPPER_BULB); - this.copyCopperBulbModel(Blocks.EXPOSED_COPPER_BULB, Blocks.WAXED_EXPOSED_COPPER_BULB); - this.copyCopperBulbModel(Blocks.WEATHERED_COPPER_BULB, Blocks.WAXED_WEATHERED_COPPER_BULB); - this.copyCopperBulbModel(Blocks.OXIDIZED_COPPER_BULB, Blocks.WAXED_OXIDIZED_COPPER_BULB); - this.createNonTemplateModelBlock(Blocks.AIR); - this.createNonTemplateModelBlock(Blocks.CAVE_AIR, Blocks.AIR); - this.createNonTemplateModelBlock(Blocks.VOID_AIR, Blocks.AIR); - this.createNonTemplateModelBlock(Blocks.BEACON); - this.createNonTemplateModelBlock(Blocks.CACTUS); - this.createNonTemplateModelBlock(Blocks.BUBBLE_COLUMN, Blocks.WATER); - this.createNonTemplateModelBlock(Blocks.DRAGON_EGG); - this.createNonTemplateModelBlock(Blocks.DRIED_KELP_BLOCK); - this.createNonTemplateModelBlock(Blocks.ENCHANTING_TABLE); - this.createNonTemplateModelBlock(Blocks.FLOWER_POT); - this.createSimpleFlatItemModel(Items.FLOWER_POT); - this.createNonTemplateModelBlock(Blocks.HONEY_BLOCK); - this.createNonTemplateModelBlock(Blocks.WATER); - this.createNonTemplateModelBlock(Blocks.LAVA); - this.createNonTemplateModelBlock(Blocks.SLIME_BLOCK); - this.createSimpleFlatItemModel(Items.CHAIN); - this.createCandleAndCandleCake(Blocks.WHITE_CANDLE, Blocks.WHITE_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.ORANGE_CANDLE, Blocks.ORANGE_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.MAGENTA_CANDLE, Blocks.MAGENTA_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.LIGHT_BLUE_CANDLE, Blocks.LIGHT_BLUE_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.YELLOW_CANDLE, Blocks.YELLOW_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.LIME_CANDLE, Blocks.LIME_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.PINK_CANDLE, Blocks.PINK_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.GRAY_CANDLE, Blocks.GRAY_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.LIGHT_GRAY_CANDLE, Blocks.LIGHT_GRAY_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.CYAN_CANDLE, Blocks.CYAN_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.PURPLE_CANDLE, Blocks.PURPLE_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.BLUE_CANDLE, Blocks.BLUE_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.BROWN_CANDLE, Blocks.BROWN_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.GREEN_CANDLE, Blocks.GREEN_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.RED_CANDLE, Blocks.RED_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.BLACK_CANDLE, Blocks.BLACK_CANDLE_CAKE); - this.createCandleAndCandleCake(Blocks.CANDLE, Blocks.CANDLE_CAKE); - this.createNonTemplateModelBlock(Blocks.POTTED_BAMBOO); - this.createNonTemplateModelBlock(Blocks.POTTED_CACTUS); - this.createNonTemplateModelBlock(Blocks.POWDER_SNOW); - this.createNonTemplateModelBlock(Blocks.SPORE_BLOSSOM); - this.createAzalea(Blocks.AZALEA); - this.createAzalea(Blocks.FLOWERING_AZALEA); - this.createPottedAzalea(Blocks.POTTED_AZALEA); - this.createPottedAzalea(Blocks.POTTED_FLOWERING_AZALEA); - this.createCaveVines(); - this.createFullAndCarpetBlocks(Blocks.MOSS_BLOCK, Blocks.MOSS_CARPET); - this.createMossyCarpet(Blocks.PALE_MOSS_CARPET); - this.createHangingMoss(Blocks.PALE_HANGING_MOSS); - this.createTrivialCube(Blocks.PALE_MOSS_BLOCK); - this.createFlowerBed(Blocks.PINK_PETALS); - this.createAirLikeBlock(Blocks.BARRIER, Items.BARRIER); - this.createSimpleFlatItemModel(Items.BARRIER); - this.createLightBlock(); - this.createAirLikeBlock(Blocks.STRUCTURE_VOID, Items.STRUCTURE_VOID); - this.createSimpleFlatItemModel(Items.STRUCTURE_VOID); - this.createAirLikeBlock(Blocks.MOVING_PISTON, TextureMapping.getBlockTexture(Blocks.PISTON, "_side")); - this.createTrivialCube(Blocks.COAL_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_COAL_ORE); - this.createTrivialCube(Blocks.COAL_BLOCK); - this.createTrivialCube(Blocks.DIAMOND_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_DIAMOND_ORE); - this.createTrivialCube(Blocks.DIAMOND_BLOCK); - this.createTrivialCube(Blocks.EMERALD_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_EMERALD_ORE); - this.createTrivialCube(Blocks.EMERALD_BLOCK); - this.createTrivialCube(Blocks.GOLD_ORE); - this.createTrivialCube(Blocks.NETHER_GOLD_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_GOLD_ORE); - this.createTrivialCube(Blocks.GOLD_BLOCK); - this.createTrivialCube(Blocks.IRON_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_IRON_ORE); - this.createTrivialCube(Blocks.IRON_BLOCK); - this.createTrivialBlock(Blocks.ANCIENT_DEBRIS, TexturedModel.COLUMN); - this.createTrivialCube(Blocks.NETHERITE_BLOCK); - this.createTrivialCube(Blocks.LAPIS_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_LAPIS_ORE); - this.createTrivialCube(Blocks.LAPIS_BLOCK); - this.createTrivialCube(Blocks.NETHER_QUARTZ_ORE); - this.createTrivialCube(Blocks.REDSTONE_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_REDSTONE_ORE); - this.createTrivialCube(Blocks.REDSTONE_BLOCK); - this.createTrivialCube(Blocks.GILDED_BLACKSTONE); - this.createTrivialCube(Blocks.BLUE_ICE); - this.createTrivialCube(Blocks.CLAY); - this.createTrivialCube(Blocks.COARSE_DIRT); - this.createTrivialCube(Blocks.CRYING_OBSIDIAN); - this.createTrivialCube(Blocks.END_STONE); - this.createTrivialCube(Blocks.GLOWSTONE); - this.createTrivialCube(Blocks.GRAVEL); - this.createTrivialCube(Blocks.HONEYCOMB_BLOCK); - this.createTrivialCube(Blocks.ICE); - this.createTrivialBlock(Blocks.JUKEBOX, TexturedModel.CUBE_TOP); - this.createTrivialBlock(Blocks.LODESTONE, TexturedModel.COLUMN); - this.createTrivialBlock(Blocks.MELON, TexturedModel.COLUMN); - this.createNonTemplateModelBlock(Blocks.MANGROVE_ROOTS); - this.createNonTemplateModelBlock(Blocks.POTTED_MANGROVE_PROPAGULE); - this.createTrivialCube(Blocks.NETHER_WART_BLOCK); - this.createTrivialCube(Blocks.NOTE_BLOCK); - this.createTrivialCube(Blocks.PACKED_ICE); - this.createTrivialCube(Blocks.OBSIDIAN); - this.createTrivialCube(Blocks.QUARTZ_BRICKS); - this.createTrivialCube(Blocks.SEA_LANTERN); - this.createTrivialCube(Blocks.SHROOMLIGHT); - this.createTrivialCube(Blocks.SOUL_SAND); - this.createTrivialCube(Blocks.SOUL_SOIL); - this.createTrivialBlock(Blocks.SPAWNER, TexturedModel.CUBE_INNER_FACES); - this.createCreakingHeart(Blocks.CREAKING_HEART); - this.createTrivialCube(Blocks.SPONGE); - this.createTrivialBlock(Blocks.SEAGRASS, TexturedModel.SEAGRASS); - this.createSimpleFlatItemModel(Items.SEAGRASS); - this.createTrivialBlock(Blocks.TNT, TexturedModel.CUBE_TOP_BOTTOM); - this.createTrivialBlock(Blocks.TARGET, TexturedModel.COLUMN); - this.createTrivialCube(Blocks.WARPED_WART_BLOCK); - this.createTrivialCube(Blocks.WET_SPONGE); - this.createTrivialCube(Blocks.AMETHYST_BLOCK); - this.createTrivialCube(Blocks.BUDDING_AMETHYST); - this.createTrivialCube(Blocks.CALCITE); - this.createTrivialCube(Blocks.DRIPSTONE_BLOCK); - this.createTrivialCube(Blocks.RAW_IRON_BLOCK); - this.createTrivialCube(Blocks.RAW_COPPER_BLOCK); - this.createTrivialCube(Blocks.RAW_GOLD_BLOCK); - this.createRotatedMirroredVariantBlock(Blocks.SCULK); - this.createNonTemplateModelBlock(Blocks.HEAVY_CORE); - this.createPetrifiedOakSlab(); - this.createTrivialCube(Blocks.COPPER_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_COPPER_ORE); - this.createTrivialCube(Blocks.COPPER_BLOCK); - this.createTrivialCube(Blocks.EXPOSED_COPPER); - this.createTrivialCube(Blocks.WEATHERED_COPPER); - this.createTrivialCube(Blocks.OXIDIZED_COPPER); - this.copyModel(Blocks.COPPER_BLOCK, Blocks.WAXED_COPPER_BLOCK); - this.copyModel(Blocks.EXPOSED_COPPER, Blocks.WAXED_EXPOSED_COPPER); - this.copyModel(Blocks.WEATHERED_COPPER, Blocks.WAXED_WEATHERED_COPPER); - this.copyModel(Blocks.OXIDIZED_COPPER, Blocks.WAXED_OXIDIZED_COPPER); - this.createDoor(Blocks.COPPER_DOOR); - this.createDoor(Blocks.EXPOSED_COPPER_DOOR); - this.createDoor(Blocks.WEATHERED_COPPER_DOOR); - this.createDoor(Blocks.OXIDIZED_COPPER_DOOR); - this.copyDoorModel(Blocks.COPPER_DOOR, Blocks.WAXED_COPPER_DOOR); - this.copyDoorModel(Blocks.EXPOSED_COPPER_DOOR, Blocks.WAXED_EXPOSED_COPPER_DOOR); - this.copyDoorModel(Blocks.WEATHERED_COPPER_DOOR, Blocks.WAXED_WEATHERED_COPPER_DOOR); - this.copyDoorModel(Blocks.OXIDIZED_COPPER_DOOR, Blocks.WAXED_OXIDIZED_COPPER_DOOR); - this.createTrapdoor(Blocks.COPPER_TRAPDOOR); - this.createTrapdoor(Blocks.EXPOSED_COPPER_TRAPDOOR); - this.createTrapdoor(Blocks.WEATHERED_COPPER_TRAPDOOR); - this.createTrapdoor(Blocks.OXIDIZED_COPPER_TRAPDOOR); - this.copyTrapdoorModel(Blocks.COPPER_TRAPDOOR, Blocks.WAXED_COPPER_TRAPDOOR); - this.copyTrapdoorModel(Blocks.EXPOSED_COPPER_TRAPDOOR, Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR); - this.copyTrapdoorModel(Blocks.WEATHERED_COPPER_TRAPDOOR, Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR); - this.copyTrapdoorModel(Blocks.OXIDIZED_COPPER_TRAPDOOR, Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR); - this.createTrivialCube(Blocks.COPPER_GRATE); - this.createTrivialCube(Blocks.EXPOSED_COPPER_GRATE); - this.createTrivialCube(Blocks.WEATHERED_COPPER_GRATE); - this.createTrivialCube(Blocks.OXIDIZED_COPPER_GRATE); - this.copyModel(Blocks.COPPER_GRATE, Blocks.WAXED_COPPER_GRATE); - this.copyModel(Blocks.EXPOSED_COPPER_GRATE, Blocks.WAXED_EXPOSED_COPPER_GRATE); - this.copyModel(Blocks.WEATHERED_COPPER_GRATE, Blocks.WAXED_WEATHERED_COPPER_GRATE); - this.copyModel(Blocks.OXIDIZED_COPPER_GRATE, Blocks.WAXED_OXIDIZED_COPPER_GRATE); - this.createWeightedPressurePlate(Blocks.LIGHT_WEIGHTED_PRESSURE_PLATE, Blocks.GOLD_BLOCK); - this.createWeightedPressurePlate(Blocks.HEAVY_WEIGHTED_PRESSURE_PLATE, Blocks.IRON_BLOCK); - this.createAmethystClusters(); - this.createBookshelf(); - this.createChiseledBookshelf(); - this.createBrewingStand(); - this.createCakeBlock(); - this.createCampfires(Blocks.CAMPFIRE, Blocks.SOUL_CAMPFIRE); - this.createCartographyTable(); - this.createCauldrons(); - this.createChorusFlower(); - this.createChorusPlant(); - this.createComposter(); - this.createDaylightDetector(); - this.createEndPortalFrame(); - this.createRotatableColumn(Blocks.END_ROD); - this.createLightningRod(); - this.createFarmland(); - this.createFire(); - this.createSoulFire(); - this.createFrostedIce(); - this.createGrassBlocks(); - this.createCocoa(); - this.createDirtPath(); - this.createGrindstone(); - this.createHopper(); - this.createIronBars(); - this.createLever(); - this.createLilyPad(); - this.createNetherPortalBlock(); - this.createNetherrack(); - this.createObserver(); - this.createPistons(); - this.createPistonHeads(); - this.createScaffolding(); - this.createRedstoneTorch(); - this.createRedstoneLamp(); - this.createRepeater(); - this.createSeaPickle(); - this.createSmithingTable(); - this.createSnowBlocks(); - this.createStonecutter(); - this.createStructureBlock(); - this.createSweetBerryBush(); - this.createTripwire(); - this.createTripwireHook(); - this.createTurtleEgg(); - this.createSnifferEgg(); - this.createMultiface(Blocks.VINE); - this.createMultiface(Blocks.GLOW_LICHEN); - this.createMultiface(Blocks.SCULK_VEIN); - this.createMagmaBlock(); - this.createJigsaw(); - this.createSculkSensor(); - this.createCalibratedSculkSensor(); - this.createSculkShrieker(); - this.createFrogspawnBlock(); - this.createMangrovePropagule(); - this.createMuddyMangroveRoots(); - this.createTrialSpawner(); - this.createVault(); - this.createNonTemplateHorizontalBlock(Blocks.LADDER); - this.createSimpleFlatItemModel(Blocks.LADDER); - this.createNonTemplateHorizontalBlock(Blocks.LECTERN); - this.createBigDripLeafBlock(); - this.createNonTemplateHorizontalBlock(Blocks.BIG_DRIPLEAF_STEM); - this.createNormalTorch(Blocks.TORCH, Blocks.WALL_TORCH); - this.createNormalTorch(Blocks.SOUL_TORCH, Blocks.SOUL_WALL_TORCH); - this.createCraftingTableLike(Blocks.CRAFTING_TABLE, Blocks.OAK_PLANKS, TextureMapping::craftingTable); - this.createCraftingTableLike(Blocks.FLETCHING_TABLE, Blocks.BIRCH_PLANKS, TextureMapping::fletchingTable); - this.createNyliumBlock(Blocks.CRIMSON_NYLIUM); - this.createNyliumBlock(Blocks.WARPED_NYLIUM); - this.createDispenserBlock(Blocks.DISPENSER); - this.createDispenserBlock(Blocks.DROPPER); - this.createCrafterBlock(); - this.createLantern(Blocks.LANTERN); - this.createLantern(Blocks.SOUL_LANTERN); - this.createAxisAlignedPillarBlockCustomModel(Blocks.CHAIN, ModelLocationUtils.getModelLocation(Blocks.CHAIN)); - this.createAxisAlignedPillarBlock(Blocks.BASALT, TexturedModel.COLUMN); - this.createAxisAlignedPillarBlock(Blocks.POLISHED_BASALT, TexturedModel.COLUMN); - this.createTrivialCube(Blocks.SMOOTH_BASALT); - this.createAxisAlignedPillarBlock(Blocks.BONE_BLOCK, TexturedModel.COLUMN); - this.createRotatedVariantBlock(Blocks.DIRT); - this.createRotatedVariantBlock(Blocks.ROOTED_DIRT); - this.createRotatedVariantBlock(Blocks.SAND); - this.createBrushableBlock(Blocks.SUSPICIOUS_SAND); - this.createBrushableBlock(Blocks.SUSPICIOUS_GRAVEL); - this.createRotatedVariantBlock(Blocks.RED_SAND); - this.createRotatedMirroredVariantBlock(Blocks.BEDROCK); - this.createTrivialBlock(Blocks.REINFORCED_DEEPSLATE, TexturedModel.CUBE_TOP_BOTTOM); - this.createRotatedPillarWithHorizontalVariant(Blocks.HAY_BLOCK, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); - this.createRotatedPillarWithHorizontalVariant(Blocks.PURPUR_PILLAR, TexturedModel.COLUMN_ALT, TexturedModel.COLUMN_HORIZONTAL_ALT); - this.createRotatedPillarWithHorizontalVariant(Blocks.QUARTZ_PILLAR, TexturedModel.COLUMN_ALT, TexturedModel.COLUMN_HORIZONTAL_ALT); - this.createRotatedPillarWithHorizontalVariant(Blocks.OCHRE_FROGLIGHT, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); - this.createRotatedPillarWithHorizontalVariant(Blocks.VERDANT_FROGLIGHT, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); - this.createRotatedPillarWithHorizontalVariant(Blocks.PEARLESCENT_FROGLIGHT, TexturedModel.COLUMN, TexturedModel.COLUMN_HORIZONTAL); - this.createHorizontallyRotatedBlock(Blocks.LOOM, TexturedModel.ORIENTABLE); - this.createPumpkins(); - this.createBeeNest(Blocks.BEE_NEST, TextureMapping::orientableCube); - this.createBeeNest(Blocks.BEEHIVE, TextureMapping::orientableCubeSameEnds); - this.createCropBlock(Blocks.BEETROOTS, BlockStateProperties.AGE_3, 0, 1, 2, 3); - this.createCropBlock(Blocks.CARROTS, BlockStateProperties.AGE_7, 0, 0, 1, 1, 2, 2, 2, 3); - this.createCropBlock(Blocks.NETHER_WART, BlockStateProperties.AGE_3, 0, 1, 1, 2); - this.createCropBlock(Blocks.POTATOES, BlockStateProperties.AGE_7, 0, 0, 1, 1, 2, 2, 2, 3); - this.createCropBlock(Blocks.WHEAT, BlockStateProperties.AGE_7, 0, 1, 2, 3, 4, 5, 6, 7); - this.createCrossBlock(Blocks.TORCHFLOWER_CROP, BlockModelGenerators.TintState.NOT_TINTED, BlockStateProperties.AGE_1, 0, 1); - this.createPitcherCrop(); - this.createPitcherPlant(); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("decorated_pot"), Blocks.TERRACOTTA).createWithoutBlockItem(Blocks.DECORATED_POT); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("banner"), Blocks.OAK_PLANKS) - .createWithCustomBlockItemModel( - ModelTemplates.BANNER_INVENTORY, - Blocks.WHITE_BANNER, - Blocks.ORANGE_BANNER, - Blocks.MAGENTA_BANNER, - Blocks.LIGHT_BLUE_BANNER, - Blocks.YELLOW_BANNER, - Blocks.LIME_BANNER, - Blocks.PINK_BANNER, - Blocks.GRAY_BANNER, - Blocks.LIGHT_GRAY_BANNER, - Blocks.CYAN_BANNER, - Blocks.PURPLE_BANNER, - Blocks.BLUE_BANNER, - Blocks.BROWN_BANNER, - Blocks.GREEN_BANNER, - Blocks.RED_BANNER, - Blocks.BLACK_BANNER - ) - .createWithoutBlockItem( - Blocks.WHITE_WALL_BANNER, - Blocks.ORANGE_WALL_BANNER, - Blocks.MAGENTA_WALL_BANNER, - Blocks.LIGHT_BLUE_WALL_BANNER, - Blocks.YELLOW_WALL_BANNER, - Blocks.LIME_WALL_BANNER, - Blocks.PINK_WALL_BANNER, - Blocks.GRAY_WALL_BANNER, - Blocks.LIGHT_GRAY_WALL_BANNER, - Blocks.CYAN_WALL_BANNER, - Blocks.PURPLE_WALL_BANNER, - Blocks.BLUE_WALL_BANNER, - Blocks.BROWN_WALL_BANNER, - Blocks.GREEN_WALL_BANNER, - Blocks.RED_WALL_BANNER, - Blocks.BLACK_WALL_BANNER - ); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("bed"), Blocks.OAK_PLANKS) - .createWithoutBlockItem( - Blocks.WHITE_BED, - Blocks.ORANGE_BED, - Blocks.MAGENTA_BED, - Blocks.LIGHT_BLUE_BED, - Blocks.YELLOW_BED, - Blocks.LIME_BED, - Blocks.PINK_BED, - Blocks.GRAY_BED, - Blocks.LIGHT_GRAY_BED, - Blocks.CYAN_BED, - Blocks.PURPLE_BED, - Blocks.BLUE_BED, - Blocks.BROWN_BED, - Blocks.GREEN_BED, - Blocks.RED_BED, - Blocks.BLACK_BED - ); - this.createBedItem(Blocks.WHITE_BED, Blocks.WHITE_WOOL); - this.createBedItem(Blocks.ORANGE_BED, Blocks.ORANGE_WOOL); - this.createBedItem(Blocks.MAGENTA_BED, Blocks.MAGENTA_WOOL); - this.createBedItem(Blocks.LIGHT_BLUE_BED, Blocks.LIGHT_BLUE_WOOL); - this.createBedItem(Blocks.YELLOW_BED, Blocks.YELLOW_WOOL); - this.createBedItem(Blocks.LIME_BED, Blocks.LIME_WOOL); - this.createBedItem(Blocks.PINK_BED, Blocks.PINK_WOOL); - this.createBedItem(Blocks.GRAY_BED, Blocks.GRAY_WOOL); - this.createBedItem(Blocks.LIGHT_GRAY_BED, Blocks.LIGHT_GRAY_WOOL); - this.createBedItem(Blocks.CYAN_BED, Blocks.CYAN_WOOL); - this.createBedItem(Blocks.PURPLE_BED, Blocks.PURPLE_WOOL); - this.createBedItem(Blocks.BLUE_BED, Blocks.BLUE_WOOL); - this.createBedItem(Blocks.BROWN_BED, Blocks.BROWN_WOOL); - this.createBedItem(Blocks.GREEN_BED, Blocks.GREEN_WOOL); - this.createBedItem(Blocks.RED_BED, Blocks.RED_WOOL); - this.createBedItem(Blocks.BLACK_BED, Blocks.BLACK_WOOL); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("skull"), Blocks.SOUL_SAND) - .createWithCustomBlockItemModel( - ModelTemplates.SKULL_INVENTORY, - Blocks.CREEPER_HEAD, - Blocks.PLAYER_HEAD, - Blocks.ZOMBIE_HEAD, - Blocks.SKELETON_SKULL, - Blocks.WITHER_SKELETON_SKULL, - Blocks.PIGLIN_HEAD - ) - .create(Blocks.DRAGON_HEAD) - .createWithoutBlockItem( - Blocks.CREEPER_WALL_HEAD, - Blocks.DRAGON_WALL_HEAD, - Blocks.PLAYER_WALL_HEAD, - Blocks.ZOMBIE_WALL_HEAD, - Blocks.SKELETON_WALL_SKULL, - Blocks.WITHER_SKELETON_WALL_SKULL, - Blocks.PIGLIN_WALL_HEAD - ); - this.createShulkerBox(Blocks.SHULKER_BOX); - this.createShulkerBox(Blocks.WHITE_SHULKER_BOX); - this.createShulkerBox(Blocks.ORANGE_SHULKER_BOX); - this.createShulkerBox(Blocks.MAGENTA_SHULKER_BOX); - this.createShulkerBox(Blocks.LIGHT_BLUE_SHULKER_BOX); - this.createShulkerBox(Blocks.YELLOW_SHULKER_BOX); - this.createShulkerBox(Blocks.LIME_SHULKER_BOX); - this.createShulkerBox(Blocks.PINK_SHULKER_BOX); - this.createShulkerBox(Blocks.GRAY_SHULKER_BOX); - this.createShulkerBox(Blocks.LIGHT_GRAY_SHULKER_BOX); - this.createShulkerBox(Blocks.CYAN_SHULKER_BOX); - this.createShulkerBox(Blocks.PURPLE_SHULKER_BOX); - this.createShulkerBox(Blocks.BLUE_SHULKER_BOX); - this.createShulkerBox(Blocks.BROWN_SHULKER_BOX); - this.createShulkerBox(Blocks.GREEN_SHULKER_BOX); - this.createShulkerBox(Blocks.RED_SHULKER_BOX); - this.createShulkerBox(Blocks.BLACK_SHULKER_BOX); - this.createTrivialBlock(Blocks.CONDUIT, TexturedModel.PARTICLE_ONLY); - this.skipAutoItemBlock(Blocks.CONDUIT); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("chest"), Blocks.OAK_PLANKS).createWithoutBlockItem(Blocks.CHEST, Blocks.TRAPPED_CHEST); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("ender_chest"), Blocks.OBSIDIAN).createWithoutBlockItem(Blocks.ENDER_CHEST); - this.blockEntityModels(Blocks.END_PORTAL, Blocks.OBSIDIAN).create(Blocks.END_PORTAL, Blocks.END_GATEWAY); - this.createTrivialCube(Blocks.AZALEA_LEAVES); - this.createTrivialCube(Blocks.FLOWERING_AZALEA_LEAVES); - this.createTrivialCube(Blocks.WHITE_CONCRETE); - this.createTrivialCube(Blocks.ORANGE_CONCRETE); - this.createTrivialCube(Blocks.MAGENTA_CONCRETE); - this.createTrivialCube(Blocks.LIGHT_BLUE_CONCRETE); - this.createTrivialCube(Blocks.YELLOW_CONCRETE); - this.createTrivialCube(Blocks.LIME_CONCRETE); - this.createTrivialCube(Blocks.PINK_CONCRETE); - this.createTrivialCube(Blocks.GRAY_CONCRETE); - this.createTrivialCube(Blocks.LIGHT_GRAY_CONCRETE); - this.createTrivialCube(Blocks.CYAN_CONCRETE); - this.createTrivialCube(Blocks.PURPLE_CONCRETE); - this.createTrivialCube(Blocks.BLUE_CONCRETE); - this.createTrivialCube(Blocks.BROWN_CONCRETE); - this.createTrivialCube(Blocks.GREEN_CONCRETE); - this.createTrivialCube(Blocks.RED_CONCRETE); - this.createTrivialCube(Blocks.BLACK_CONCRETE); - this.createColoredBlockWithRandomRotations( - TexturedModel.CUBE, - Blocks.WHITE_CONCRETE_POWDER, - Blocks.ORANGE_CONCRETE_POWDER, - Blocks.MAGENTA_CONCRETE_POWDER, - Blocks.LIGHT_BLUE_CONCRETE_POWDER, - Blocks.YELLOW_CONCRETE_POWDER, - Blocks.LIME_CONCRETE_POWDER, - Blocks.PINK_CONCRETE_POWDER, - Blocks.GRAY_CONCRETE_POWDER, - Blocks.LIGHT_GRAY_CONCRETE_POWDER, - Blocks.CYAN_CONCRETE_POWDER, - Blocks.PURPLE_CONCRETE_POWDER, - Blocks.BLUE_CONCRETE_POWDER, - Blocks.BROWN_CONCRETE_POWDER, - Blocks.GREEN_CONCRETE_POWDER, - Blocks.RED_CONCRETE_POWDER, - Blocks.BLACK_CONCRETE_POWDER - ); - this.createTrivialCube(Blocks.TERRACOTTA); - this.createTrivialCube(Blocks.WHITE_TERRACOTTA); - this.createTrivialCube(Blocks.ORANGE_TERRACOTTA); - this.createTrivialCube(Blocks.MAGENTA_TERRACOTTA); - this.createTrivialCube(Blocks.LIGHT_BLUE_TERRACOTTA); - this.createTrivialCube(Blocks.YELLOW_TERRACOTTA); - this.createTrivialCube(Blocks.LIME_TERRACOTTA); - this.createTrivialCube(Blocks.PINK_TERRACOTTA); - this.createTrivialCube(Blocks.GRAY_TERRACOTTA); - this.createTrivialCube(Blocks.LIGHT_GRAY_TERRACOTTA); - this.createTrivialCube(Blocks.CYAN_TERRACOTTA); - this.createTrivialCube(Blocks.PURPLE_TERRACOTTA); - this.createTrivialCube(Blocks.BLUE_TERRACOTTA); - this.createTrivialCube(Blocks.BROWN_TERRACOTTA); - this.createTrivialCube(Blocks.GREEN_TERRACOTTA); - this.createTrivialCube(Blocks.RED_TERRACOTTA); - this.createTrivialCube(Blocks.BLACK_TERRACOTTA); - this.createTrivialCube(Blocks.TINTED_GLASS); - this.createGlassBlocks(Blocks.GLASS, Blocks.GLASS_PANE); - this.createGlassBlocks(Blocks.WHITE_STAINED_GLASS, Blocks.WHITE_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.ORANGE_STAINED_GLASS, Blocks.ORANGE_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.MAGENTA_STAINED_GLASS, Blocks.MAGENTA_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.LIGHT_BLUE_STAINED_GLASS, Blocks.LIGHT_BLUE_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.YELLOW_STAINED_GLASS, Blocks.YELLOW_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.LIME_STAINED_GLASS, Blocks.LIME_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.PINK_STAINED_GLASS, Blocks.PINK_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.GRAY_STAINED_GLASS, Blocks.GRAY_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.LIGHT_GRAY_STAINED_GLASS, Blocks.LIGHT_GRAY_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.CYAN_STAINED_GLASS, Blocks.CYAN_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.PURPLE_STAINED_GLASS, Blocks.PURPLE_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.BLUE_STAINED_GLASS, Blocks.BLUE_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.BROWN_STAINED_GLASS, Blocks.BROWN_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.GREEN_STAINED_GLASS, Blocks.GREEN_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.RED_STAINED_GLASS, Blocks.RED_STAINED_GLASS_PANE); - this.createGlassBlocks(Blocks.BLACK_STAINED_GLASS, Blocks.BLACK_STAINED_GLASS_PANE); - this.createColoredBlockWithStateRotations( - TexturedModel.GLAZED_TERRACOTTA, - Blocks.WHITE_GLAZED_TERRACOTTA, - Blocks.ORANGE_GLAZED_TERRACOTTA, - Blocks.MAGENTA_GLAZED_TERRACOTTA, - Blocks.LIGHT_BLUE_GLAZED_TERRACOTTA, - Blocks.YELLOW_GLAZED_TERRACOTTA, - Blocks.LIME_GLAZED_TERRACOTTA, - Blocks.PINK_GLAZED_TERRACOTTA, - Blocks.GRAY_GLAZED_TERRACOTTA, - Blocks.LIGHT_GRAY_GLAZED_TERRACOTTA, - Blocks.CYAN_GLAZED_TERRACOTTA, - Blocks.PURPLE_GLAZED_TERRACOTTA, - Blocks.BLUE_GLAZED_TERRACOTTA, - Blocks.BROWN_GLAZED_TERRACOTTA, - Blocks.GREEN_GLAZED_TERRACOTTA, - Blocks.RED_GLAZED_TERRACOTTA, - Blocks.BLACK_GLAZED_TERRACOTTA - ); - this.createFullAndCarpetBlocks(Blocks.WHITE_WOOL, Blocks.WHITE_CARPET); - this.createFullAndCarpetBlocks(Blocks.ORANGE_WOOL, Blocks.ORANGE_CARPET); - this.createFullAndCarpetBlocks(Blocks.MAGENTA_WOOL, Blocks.MAGENTA_CARPET); - this.createFullAndCarpetBlocks(Blocks.LIGHT_BLUE_WOOL, Blocks.LIGHT_BLUE_CARPET); - this.createFullAndCarpetBlocks(Blocks.YELLOW_WOOL, Blocks.YELLOW_CARPET); - this.createFullAndCarpetBlocks(Blocks.LIME_WOOL, Blocks.LIME_CARPET); - this.createFullAndCarpetBlocks(Blocks.PINK_WOOL, Blocks.PINK_CARPET); - this.createFullAndCarpetBlocks(Blocks.GRAY_WOOL, Blocks.GRAY_CARPET); - this.createFullAndCarpetBlocks(Blocks.LIGHT_GRAY_WOOL, Blocks.LIGHT_GRAY_CARPET); - this.createFullAndCarpetBlocks(Blocks.CYAN_WOOL, Blocks.CYAN_CARPET); - this.createFullAndCarpetBlocks(Blocks.PURPLE_WOOL, Blocks.PURPLE_CARPET); - this.createFullAndCarpetBlocks(Blocks.BLUE_WOOL, Blocks.BLUE_CARPET); - this.createFullAndCarpetBlocks(Blocks.BROWN_WOOL, Blocks.BROWN_CARPET); - this.createFullAndCarpetBlocks(Blocks.GREEN_WOOL, Blocks.GREEN_CARPET); - this.createFullAndCarpetBlocks(Blocks.RED_WOOL, Blocks.RED_CARPET); - this.createFullAndCarpetBlocks(Blocks.BLACK_WOOL, Blocks.BLACK_CARPET); - this.createTrivialCube(Blocks.MUD); - this.createTrivialCube(Blocks.PACKED_MUD); - this.createPlant(Blocks.FERN, Blocks.POTTED_FERN, BlockModelGenerators.TintState.TINTED); - this.createPlant(Blocks.DANDELION, Blocks.POTTED_DANDELION, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.POPPY, Blocks.POTTED_POPPY, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.BLUE_ORCHID, Blocks.POTTED_BLUE_ORCHID, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.ALLIUM, Blocks.POTTED_ALLIUM, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.AZURE_BLUET, Blocks.POTTED_AZURE_BLUET, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.RED_TULIP, Blocks.POTTED_RED_TULIP, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.ORANGE_TULIP, Blocks.POTTED_ORANGE_TULIP, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.WHITE_TULIP, Blocks.POTTED_WHITE_TULIP, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.PINK_TULIP, Blocks.POTTED_PINK_TULIP, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.OXEYE_DAISY, Blocks.POTTED_OXEYE_DAISY, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.CORNFLOWER, Blocks.POTTED_CORNFLOWER, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.LILY_OF_THE_VALLEY, Blocks.POTTED_LILY_OF_THE_VALLEY, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.WITHER_ROSE, Blocks.POTTED_WITHER_ROSE, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.RED_MUSHROOM, Blocks.POTTED_RED_MUSHROOM, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.BROWN_MUSHROOM, Blocks.POTTED_BROWN_MUSHROOM, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.DEAD_BUSH, Blocks.POTTED_DEAD_BUSH, BlockModelGenerators.TintState.NOT_TINTED); - this.createPlant(Blocks.TORCHFLOWER, Blocks.POTTED_TORCHFLOWER, BlockModelGenerators.TintState.NOT_TINTED); - this.createPointedDripstone(); - this.createMushroomBlock(Blocks.BROWN_MUSHROOM_BLOCK); - this.createMushroomBlock(Blocks.RED_MUSHROOM_BLOCK); - this.createMushroomBlock(Blocks.MUSHROOM_STEM); - this.createCrossBlockWithDefaultItem(Blocks.SHORT_GRASS, BlockModelGenerators.TintState.TINTED); - this.createCrossBlock(Blocks.SUGAR_CANE, BlockModelGenerators.TintState.TINTED); - this.createSimpleFlatItemModel(Items.SUGAR_CANE); - this.createGrowingPlant(Blocks.KELP, Blocks.KELP_PLANT, BlockModelGenerators.TintState.NOT_TINTED); - this.createSimpleFlatItemModel(Items.KELP); - this.skipAutoItemBlock(Blocks.KELP_PLANT); - this.createCrossBlock(Blocks.HANGING_ROOTS, BlockModelGenerators.TintState.NOT_TINTED); - this.skipAutoItemBlock(Blocks.HANGING_ROOTS); - this.skipAutoItemBlock(Blocks.CAVE_VINES_PLANT); - this.createGrowingPlant(Blocks.WEEPING_VINES, Blocks.WEEPING_VINES_PLANT, BlockModelGenerators.TintState.NOT_TINTED); - this.createGrowingPlant(Blocks.TWISTING_VINES, Blocks.TWISTING_VINES_PLANT, BlockModelGenerators.TintState.NOT_TINTED); - this.createSimpleFlatItemModel(Blocks.WEEPING_VINES, "_plant"); - this.skipAutoItemBlock(Blocks.WEEPING_VINES_PLANT); - this.createSimpleFlatItemModel(Blocks.TWISTING_VINES, "_plant"); - this.skipAutoItemBlock(Blocks.TWISTING_VINES_PLANT); - this.createCrossBlockWithDefaultItem( - Blocks.BAMBOO_SAPLING, BlockModelGenerators.TintState.TINTED, TextureMapping.cross(TextureMapping.getBlockTexture(Blocks.BAMBOO, "_stage0")) - ); - this.createBamboo(); - this.createCrossBlockWithDefaultItem(Blocks.COBWEB, BlockModelGenerators.TintState.NOT_TINTED); - this.createDoublePlant(Blocks.LILAC, BlockModelGenerators.TintState.NOT_TINTED); - this.createDoublePlant(Blocks.ROSE_BUSH, BlockModelGenerators.TintState.NOT_TINTED); - this.createDoublePlant(Blocks.PEONY, BlockModelGenerators.TintState.NOT_TINTED); - this.createDoublePlant(Blocks.TALL_GRASS, BlockModelGenerators.TintState.TINTED); - this.createDoublePlant(Blocks.LARGE_FERN, BlockModelGenerators.TintState.TINTED); - this.createSunflower(); - this.createTallSeagrass(); - this.createSmallDripleaf(); - this.createCoral( - Blocks.TUBE_CORAL, - Blocks.DEAD_TUBE_CORAL, - Blocks.TUBE_CORAL_BLOCK, - Blocks.DEAD_TUBE_CORAL_BLOCK, - Blocks.TUBE_CORAL_FAN, - Blocks.DEAD_TUBE_CORAL_FAN, - Blocks.TUBE_CORAL_WALL_FAN, - Blocks.DEAD_TUBE_CORAL_WALL_FAN - ); - this.createCoral( - Blocks.BRAIN_CORAL, - Blocks.DEAD_BRAIN_CORAL, - Blocks.BRAIN_CORAL_BLOCK, - Blocks.DEAD_BRAIN_CORAL_BLOCK, - Blocks.BRAIN_CORAL_FAN, - Blocks.DEAD_BRAIN_CORAL_FAN, - Blocks.BRAIN_CORAL_WALL_FAN, - Blocks.DEAD_BRAIN_CORAL_WALL_FAN - ); - this.createCoral( - Blocks.BUBBLE_CORAL, - Blocks.DEAD_BUBBLE_CORAL, - Blocks.BUBBLE_CORAL_BLOCK, - Blocks.DEAD_BUBBLE_CORAL_BLOCK, - Blocks.BUBBLE_CORAL_FAN, - Blocks.DEAD_BUBBLE_CORAL_FAN, - Blocks.BUBBLE_CORAL_WALL_FAN, - Blocks.DEAD_BUBBLE_CORAL_WALL_FAN - ); - this.createCoral( - Blocks.FIRE_CORAL, - Blocks.DEAD_FIRE_CORAL, - Blocks.FIRE_CORAL_BLOCK, - Blocks.DEAD_FIRE_CORAL_BLOCK, - Blocks.FIRE_CORAL_FAN, - Blocks.DEAD_FIRE_CORAL_FAN, - Blocks.FIRE_CORAL_WALL_FAN, - Blocks.DEAD_FIRE_CORAL_WALL_FAN - ); - this.createCoral( - Blocks.HORN_CORAL, - Blocks.DEAD_HORN_CORAL, - Blocks.HORN_CORAL_BLOCK, - Blocks.DEAD_HORN_CORAL_BLOCK, - Blocks.HORN_CORAL_FAN, - Blocks.DEAD_HORN_CORAL_FAN, - Blocks.HORN_CORAL_WALL_FAN, - Blocks.DEAD_HORN_CORAL_WALL_FAN - ); - this.createStems(Blocks.MELON_STEM, Blocks.ATTACHED_MELON_STEM); - this.createStems(Blocks.PUMPKIN_STEM, Blocks.ATTACHED_PUMPKIN_STEM); - this.woodProvider(Blocks.MANGROVE_LOG).logWithHorizontal(Blocks.MANGROVE_LOG).wood(Blocks.MANGROVE_WOOD); - this.woodProvider(Blocks.STRIPPED_MANGROVE_LOG).logWithHorizontal(Blocks.STRIPPED_MANGROVE_LOG).wood(Blocks.STRIPPED_MANGROVE_WOOD); - this.createHangingSign(Blocks.STRIPPED_MANGROVE_LOG, Blocks.MANGROVE_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN); - this.createTrivialBlock(Blocks.MANGROVE_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.ACACIA_LOG).logWithHorizontal(Blocks.ACACIA_LOG).wood(Blocks.ACACIA_WOOD); - this.woodProvider(Blocks.STRIPPED_ACACIA_LOG).logWithHorizontal(Blocks.STRIPPED_ACACIA_LOG).wood(Blocks.STRIPPED_ACACIA_WOOD); - this.createHangingSign(Blocks.STRIPPED_ACACIA_LOG, Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN); - this.createPlant(Blocks.ACACIA_SAPLING, Blocks.POTTED_ACACIA_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.ACACIA_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.CHERRY_LOG).logUVLocked(Blocks.CHERRY_LOG).wood(Blocks.CHERRY_WOOD); - this.woodProvider(Blocks.STRIPPED_CHERRY_LOG).logUVLocked(Blocks.STRIPPED_CHERRY_LOG).wood(Blocks.STRIPPED_CHERRY_WOOD); - this.createHangingSign(Blocks.STRIPPED_CHERRY_LOG, Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN); - this.createPlant(Blocks.CHERRY_SAPLING, Blocks.POTTED_CHERRY_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.CHERRY_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.BIRCH_LOG).logWithHorizontal(Blocks.BIRCH_LOG).wood(Blocks.BIRCH_WOOD); - this.woodProvider(Blocks.STRIPPED_BIRCH_LOG).logWithHorizontal(Blocks.STRIPPED_BIRCH_LOG).wood(Blocks.STRIPPED_BIRCH_WOOD); - this.createHangingSign(Blocks.STRIPPED_BIRCH_LOG, Blocks.BIRCH_HANGING_SIGN, Blocks.BIRCH_WALL_HANGING_SIGN); - this.createPlant(Blocks.BIRCH_SAPLING, Blocks.POTTED_BIRCH_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.BIRCH_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.OAK_LOG).logWithHorizontal(Blocks.OAK_LOG).wood(Blocks.OAK_WOOD); - this.woodProvider(Blocks.STRIPPED_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_OAK_LOG).wood(Blocks.STRIPPED_OAK_WOOD); - this.createHangingSign(Blocks.STRIPPED_OAK_LOG, Blocks.OAK_HANGING_SIGN, Blocks.OAK_WALL_HANGING_SIGN); - this.createPlant(Blocks.OAK_SAPLING, Blocks.POTTED_OAK_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.OAK_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.SPRUCE_LOG).logWithHorizontal(Blocks.SPRUCE_LOG).wood(Blocks.SPRUCE_WOOD); - this.woodProvider(Blocks.STRIPPED_SPRUCE_LOG).logWithHorizontal(Blocks.STRIPPED_SPRUCE_LOG).wood(Blocks.STRIPPED_SPRUCE_WOOD); - this.createHangingSign(Blocks.STRIPPED_SPRUCE_LOG, Blocks.SPRUCE_HANGING_SIGN, Blocks.SPRUCE_WALL_HANGING_SIGN); - this.createPlant(Blocks.SPRUCE_SAPLING, Blocks.POTTED_SPRUCE_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.SPRUCE_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.DARK_OAK_LOG).logWithHorizontal(Blocks.DARK_OAK_LOG).wood(Blocks.DARK_OAK_WOOD); - this.woodProvider(Blocks.STRIPPED_DARK_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_DARK_OAK_LOG).wood(Blocks.STRIPPED_DARK_OAK_WOOD); - this.createHangingSign(Blocks.STRIPPED_DARK_OAK_LOG, Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN); - this.createPlant(Blocks.DARK_OAK_SAPLING, Blocks.POTTED_DARK_OAK_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.DARK_OAK_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.PALE_OAK_LOG).logWithHorizontal(Blocks.PALE_OAK_LOG).wood(Blocks.PALE_OAK_WOOD); - this.woodProvider(Blocks.STRIPPED_PALE_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_PALE_OAK_LOG).wood(Blocks.STRIPPED_PALE_OAK_WOOD); - this.createHangingSign(Blocks.STRIPPED_PALE_OAK_LOG, Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN); - this.createPlant(Blocks.PALE_OAK_SAPLING, Blocks.POTTED_PALE_OAK_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.PALE_OAK_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.JUNGLE_LOG).logWithHorizontal(Blocks.JUNGLE_LOG).wood(Blocks.JUNGLE_WOOD); - this.woodProvider(Blocks.STRIPPED_JUNGLE_LOG).logWithHorizontal(Blocks.STRIPPED_JUNGLE_LOG).wood(Blocks.STRIPPED_JUNGLE_WOOD); - this.createHangingSign(Blocks.STRIPPED_JUNGLE_LOG, Blocks.JUNGLE_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN); - this.createPlant(Blocks.JUNGLE_SAPLING, Blocks.POTTED_JUNGLE_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); - this.createTrivialBlock(Blocks.JUNGLE_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.CRIMSON_STEM).log(Blocks.CRIMSON_STEM).wood(Blocks.CRIMSON_HYPHAE); - this.woodProvider(Blocks.STRIPPED_CRIMSON_STEM).log(Blocks.STRIPPED_CRIMSON_STEM).wood(Blocks.STRIPPED_CRIMSON_HYPHAE); - this.createHangingSign(Blocks.STRIPPED_CRIMSON_STEM, Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN); - this.createPlant(Blocks.CRIMSON_FUNGUS, Blocks.POTTED_CRIMSON_FUNGUS, BlockModelGenerators.TintState.NOT_TINTED); - this.createNetherRoots(Blocks.CRIMSON_ROOTS, Blocks.POTTED_CRIMSON_ROOTS); - this.woodProvider(Blocks.WARPED_STEM).log(Blocks.WARPED_STEM).wood(Blocks.WARPED_HYPHAE); - this.woodProvider(Blocks.STRIPPED_WARPED_STEM).log(Blocks.STRIPPED_WARPED_STEM).wood(Blocks.STRIPPED_WARPED_HYPHAE); - this.createHangingSign(Blocks.STRIPPED_WARPED_STEM, Blocks.WARPED_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN); - this.createPlant(Blocks.WARPED_FUNGUS, Blocks.POTTED_WARPED_FUNGUS, BlockModelGenerators.TintState.NOT_TINTED); - this.createNetherRoots(Blocks.WARPED_ROOTS, Blocks.POTTED_WARPED_ROOTS); - this.woodProvider(Blocks.BAMBOO_BLOCK).logUVLocked(Blocks.BAMBOO_BLOCK); - this.woodProvider(Blocks.STRIPPED_BAMBOO_BLOCK).logUVLocked(Blocks.STRIPPED_BAMBOO_BLOCK); - this.createHangingSign(Blocks.BAMBOO_PLANKS, Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN); - this.createCrossBlock(Blocks.NETHER_SPROUTS, BlockModelGenerators.TintState.NOT_TINTED); - this.createSimpleFlatItemModel(Items.NETHER_SPROUTS); - this.createDoor(Blocks.IRON_DOOR); - this.createTrapdoor(Blocks.IRON_TRAPDOOR); - this.createSmoothStoneSlab(); - this.createPassiveRail(Blocks.RAIL); - this.createActiveRail(Blocks.POWERED_RAIL); - this.createActiveRail(Blocks.DETECTOR_RAIL); - this.createActiveRail(Blocks.ACTIVATOR_RAIL); - this.createComparator(); - this.createCommandBlock(Blocks.COMMAND_BLOCK); - this.createCommandBlock(Blocks.REPEATING_COMMAND_BLOCK); - this.createCommandBlock(Blocks.CHAIN_COMMAND_BLOCK); - this.createAnvil(Blocks.ANVIL); - this.createAnvil(Blocks.CHIPPED_ANVIL); - this.createAnvil(Blocks.DAMAGED_ANVIL); - this.createBarrel(); - this.createBell(); - this.createFurnace(Blocks.FURNACE, TexturedModel.ORIENTABLE_ONLY_TOP); - this.createFurnace(Blocks.BLAST_FURNACE, TexturedModel.ORIENTABLE_ONLY_TOP); - this.createFurnace(Blocks.SMOKER, TexturedModel.ORIENTABLE); - this.createRedstoneWire(); - this.createRespawnAnchor(); - this.createSculkCatalyst(); - this.copyModel(Blocks.CHISELED_STONE_BRICKS, Blocks.INFESTED_CHISELED_STONE_BRICKS); - this.copyModel(Blocks.COBBLESTONE, Blocks.INFESTED_COBBLESTONE); - this.copyModel(Blocks.CRACKED_STONE_BRICKS, Blocks.INFESTED_CRACKED_STONE_BRICKS); - this.copyModel(Blocks.MOSSY_STONE_BRICKS, Blocks.INFESTED_MOSSY_STONE_BRICKS); - this.createInfestedStone(); - this.copyModel(Blocks.STONE_BRICKS, Blocks.INFESTED_STONE_BRICKS); - this.createInfestedDeepslate(); - SpawnEggItem.eggs().forEach(spawnEggItem -> this.delegateItemModel(spawnEggItem, ModelLocationUtils.decorateItemModelLocation("template_spawn_egg"))); - } - - private void createLightBlock() { - this.skipAutoItemBlock(Blocks.LIGHT); - PropertyDispatch.C1 c1 = PropertyDispatch.property(BlockStateProperties.LEVEL); - - for (int i = 0; i < 16; i++) { - String string = String.format(Locale.ROOT, "_%02d", i); - ResourceLocation resourceLocation = TextureMapping.getItemTexture(Items.LIGHT, string); - c1.select( - i, - Variant.variant() - .with( - VariantProperties.MODEL, ModelTemplates.PARTICLE_ONLY.createWithSuffix(Blocks.LIGHT, string, TextureMapping.particle(resourceLocation), this.modelOutput) - ) - ); - ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(Items.LIGHT, string), TextureMapping.layer0(resourceLocation), this.modelOutput); - } - - this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(Blocks.LIGHT).with(c1)); - } - - private void createCandleAndCandleCake(Block candleBlock, Block candleCakeBlock) { - this.createSimpleFlatItemModel(candleBlock.asItem()); - TextureMapping textureMapping = TextureMapping.cube(TextureMapping.getBlockTexture(candleBlock)); - TextureMapping textureMapping2 = TextureMapping.cube(TextureMapping.getBlockTexture(candleBlock, "_lit")); - ResourceLocation resourceLocation = ModelTemplates.CANDLE.createWithSuffix(candleBlock, "_one_candle", textureMapping, this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.TWO_CANDLES.createWithSuffix(candleBlock, "_two_candles", textureMapping, this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.THREE_CANDLES.createWithSuffix(candleBlock, "_three_candles", textureMapping, this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.FOUR_CANDLES.createWithSuffix(candleBlock, "_four_candles", textureMapping, this.modelOutput); - ResourceLocation resourceLocation5 = ModelTemplates.CANDLE.createWithSuffix(candleBlock, "_one_candle_lit", textureMapping2, this.modelOutput); - ResourceLocation resourceLocation6 = ModelTemplates.TWO_CANDLES.createWithSuffix(candleBlock, "_two_candles_lit", textureMapping2, this.modelOutput); - ResourceLocation resourceLocation7 = ModelTemplates.THREE_CANDLES.createWithSuffix(candleBlock, "_three_candles_lit", textureMapping2, this.modelOutput); - ResourceLocation resourceLocation8 = ModelTemplates.FOUR_CANDLES.createWithSuffix(candleBlock, "_four_candles_lit", textureMapping2, this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(candleBlock) - .with( - PropertyDispatch.properties(BlockStateProperties.CANDLES, BlockStateProperties.LIT) - .select(1, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select(2, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select(3, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation3)) - .select(4, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation4)) - .select(1, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation5)) - .select(2, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation6)) - .select(3, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation7)) - .select(4, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation8)) - ) - ); - ResourceLocation resourceLocation9 = ModelTemplates.CANDLE_CAKE.create(candleCakeBlock, TextureMapping.candleCake(candleBlock, false), this.modelOutput); - ResourceLocation resourceLocation10 = ModelTemplates.CANDLE_CAKE - .createWithSuffix(candleCakeBlock, "_lit", TextureMapping.candleCake(candleBlock, true), this.modelOutput); - this.blockStateOutput - .accept( - MultiVariantGenerator.multiVariant(candleCakeBlock).with(createBooleanModelDispatch(BlockStateProperties.LIT, resourceLocation10, resourceLocation9)) - ); - } - - class BlockEntityModelGenerator { - private final ResourceLocation baseModel; - - public BlockEntityModelGenerator(final ResourceLocation baseModel, final Block particleBlock) { - this.baseModel = ModelTemplates.PARTICLE_ONLY.create(baseModel, TextureMapping.particle(particleBlock), BlockModelGenerators.this.modelOutput); - } - - public BlockModelGenerators.BlockEntityModelGenerator create(Block... blocks) { - for (Block block : blocks) { - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, this.baseModel)); - } - - return this; - } - - public BlockModelGenerators.BlockEntityModelGenerator createWithoutBlockItem(Block... blocks) { - for (Block block : blocks) { - BlockModelGenerators.this.skipAutoItemBlock(block); - } - - return this.create(blocks); - } - - public BlockModelGenerators.BlockEntityModelGenerator createWithCustomBlockItemModel(ModelTemplate modelTemplate, Block... blocks) { - for (Block block : blocks) { - modelTemplate.create(ModelLocationUtils.getModelLocation(block.asItem()), TextureMapping.particle(block), BlockModelGenerators.this.modelOutput); - } - - return this.create(blocks); - } - } - - class BlockFamilyProvider { - private final TextureMapping mapping; - private final Map models = Maps.newHashMap(); - @Nullable - private BlockFamily family; - @Nullable - private ResourceLocation fullBlock; - private final Set skipGeneratingModelsFor = new HashSet(); - - public BlockFamilyProvider(final TextureMapping mapping) { - this.mapping = mapping; - } - - public BlockModelGenerators.BlockFamilyProvider fullBlock(Block block, ModelTemplate modelTemplate) { - this.fullBlock = modelTemplate.create(block, this.mapping, BlockModelGenerators.this.modelOutput); - if (BlockModelGenerators.this.fullBlockModelCustomGenerators.containsKey(block)) { - BlockModelGenerators.this.blockStateOutput - .accept( - ((BlockModelGenerators.BlockStateGeneratorSupplier)BlockModelGenerators.this.fullBlockModelCustomGenerators.get(block)) - .create(block, this.fullBlock, this.mapping, BlockModelGenerators.this.modelOutput) - ); - } else { - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, this.fullBlock)); - } - - return this; - } - - public BlockModelGenerators.BlockFamilyProvider donateModelTo(Block sourceBlock, Block block) { - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(sourceBlock); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, resourceLocation)); - BlockModelGenerators.this.delegateItemModel(block, resourceLocation); - this.skipGeneratingModelsFor.add(block); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider button(Block buttonBlock) { - ResourceLocation resourceLocation = ModelTemplates.BUTTON.create(buttonBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.BUTTON_PRESSED.create(buttonBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createButton(buttonBlock, resourceLocation, resourceLocation2)); - ResourceLocation resourceLocation3 = ModelTemplates.BUTTON_INVENTORY.create(buttonBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.delegateItemModel(buttonBlock, resourceLocation3); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider wall(Block wallBlock) { - ResourceLocation resourceLocation = ModelTemplates.WALL_POST.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.WALL_LOW_SIDE.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.WALL_TALL_SIDE.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createWall(wallBlock, resourceLocation, resourceLocation2, resourceLocation3)); - ResourceLocation resourceLocation4 = ModelTemplates.WALL_INVENTORY.create(wallBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.delegateItemModel(wallBlock, resourceLocation4); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider customFence(Block fenceBlock) { - TextureMapping textureMapping = TextureMapping.customParticle(fenceBlock); - ResourceLocation resourceLocation = ModelTemplates.CUSTOM_FENCE_POST.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUSTOM_FENCE_SIDE_NORTH.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.CUSTOM_FENCE_SIDE_EAST.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.CUSTOM_FENCE_SIDE_SOUTH.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation5 = ModelTemplates.CUSTOM_FENCE_SIDE_WEST.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput - .accept(BlockModelGenerators.createCustomFence(fenceBlock, resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4, resourceLocation5)); - ResourceLocation resourceLocation6 = ModelTemplates.CUSTOM_FENCE_INVENTORY.create(fenceBlock, textureMapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.delegateItemModel(fenceBlock, resourceLocation6); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider fence(Block fenceBlock) { - ResourceLocation resourceLocation = ModelTemplates.FENCE_POST.create(fenceBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.FENCE_SIDE.create(fenceBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createFence(fenceBlock, resourceLocation, resourceLocation2)); - ResourceLocation resourceLocation3 = ModelTemplates.FENCE_INVENTORY.create(fenceBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.delegateItemModel(fenceBlock, resourceLocation3); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider customFenceGate(Block customFenceGateBlock) { - TextureMapping textureMapping = TextureMapping.customParticle(customFenceGateBlock); - ResourceLocation resourceLocation = ModelTemplates.CUSTOM_FENCE_GATE_OPEN - .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUSTOM_FENCE_GATE_CLOSED - .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.CUSTOM_FENCE_GATE_WALL_OPEN - .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.CUSTOM_FENCE_GATE_WALL_CLOSED - .create(customFenceGateBlock, textureMapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput - .accept(BlockModelGenerators.createFenceGate(customFenceGateBlock, resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4, false)); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider fenceGate(Block fenceGateBlock) { - ResourceLocation resourceLocation = ModelTemplates.FENCE_GATE_OPEN.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.FENCE_GATE_CLOSED.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation3 = ModelTemplates.FENCE_GATE_WALL_OPEN.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation4 = ModelTemplates.FENCE_GATE_WALL_CLOSED.create(fenceGateBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput - .accept(BlockModelGenerators.createFenceGate(fenceGateBlock, resourceLocation, resourceLocation2, resourceLocation3, resourceLocation4, true)); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider pressurePlate(Block pressurePlateBlock) { - ResourceLocation resourceLocation = ModelTemplates.PRESSURE_PLATE_UP.create(pressurePlateBlock, this.mapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.PRESSURE_PLATE_DOWN.create(pressurePlateBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createPressurePlate(pressurePlateBlock, resourceLocation, resourceLocation2)); - return this; - } - - public BlockModelGenerators.BlockFamilyProvider sign(Block signBlock) { - if (this.family == null) { - throw new IllegalStateException("Family not defined"); - } else { - Block block = (Block)this.family.getVariants().get(net.minecraft.data.BlockFamily.Variant.WALL_SIGN); - ResourceLocation resourceLocation = ModelTemplates.PARTICLE_ONLY.create(signBlock, this.mapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(signBlock, resourceLocation)); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, resourceLocation)); - BlockModelGenerators.this.createSimpleFlatItemModel(signBlock.asItem()); - BlockModelGenerators.this.skipAutoItemBlock(block); - return this; - } - } - - public BlockModelGenerators.BlockFamilyProvider slab(Block slabBlock) { - if (this.fullBlock == null) { - throw new IllegalStateException("Full block not generated yet"); - } else { - ResourceLocation resourceLocation = this.getOrCreateModel(ModelTemplates.SLAB_BOTTOM, slabBlock); - ResourceLocation resourceLocation2 = this.getOrCreateModel(ModelTemplates.SLAB_TOP, slabBlock); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSlab(slabBlock, resourceLocation, resourceLocation2, this.fullBlock)); - BlockModelGenerators.this.delegateItemModel(slabBlock, resourceLocation); - return this; - } - } - - public BlockModelGenerators.BlockFamilyProvider stairs(Block stairsBlock) { - ResourceLocation resourceLocation = this.getOrCreateModel(ModelTemplates.STAIRS_INNER, stairsBlock); - ResourceLocation resourceLocation2 = this.getOrCreateModel(ModelTemplates.STAIRS_STRAIGHT, stairsBlock); - ResourceLocation resourceLocation3 = this.getOrCreateModel(ModelTemplates.STAIRS_OUTER, stairsBlock); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createStairs(stairsBlock, resourceLocation, resourceLocation2, resourceLocation3)); - BlockModelGenerators.this.delegateItemModel(stairsBlock, resourceLocation2); - return this; - } - - private BlockModelGenerators.BlockFamilyProvider fullBlockVariant(Block block) { - TexturedModel texturedModel = (TexturedModel)BlockModelGenerators.this.texturedModels.getOrDefault(block, TexturedModel.CUBE.get(block)); - ResourceLocation resourceLocation = texturedModel.create(block, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, resourceLocation)); - return this; - } - - private BlockModelGenerators.BlockFamilyProvider door(Block doorBlock) { - BlockModelGenerators.this.createDoor(doorBlock); - return this; - } - - private void trapdoor(Block trapdoorBlock) { - if (BlockModelGenerators.this.nonOrientableTrapdoor.contains(trapdoorBlock)) { - BlockModelGenerators.this.createTrapdoor(trapdoorBlock); - } else { - BlockModelGenerators.this.createOrientableTrapdoor(trapdoorBlock); - } - } - - private ResourceLocation getOrCreateModel(ModelTemplate modelTemplate, Block block) { - return (ResourceLocation)this.models - .computeIfAbsent(modelTemplate, modelTemplatex -> modelTemplatex.create(block, this.mapping, BlockModelGenerators.this.modelOutput)); - } - - public BlockModelGenerators.BlockFamilyProvider generateFor(BlockFamily family) { - this.family = family; - family.getVariants() - .forEach( - (variant, block) -> { - if (!this.skipGeneratingModelsFor.contains(block)) { - BiConsumer biConsumer = (BiConsumer)BlockModelGenerators.SHAPE_CONSUMERS - .get(variant); - if (biConsumer != null) { - biConsumer.accept(this, block); - } - } - } - ); - return this; - } - } - - @FunctionalInterface - interface BlockStateGeneratorSupplier { - BlockStateGenerator create( - Block block, ResourceLocation resourceLocation, TextureMapping textureMapping, BiConsumer> biConsumer - ); - } - - record BookSlotModelCacheKey(ModelTemplate template, String modelSuffix) { - } - - static enum TintState { - TINTED, - NOT_TINTED; - - public ModelTemplate getCross() { - return this == TINTED ? ModelTemplates.TINTED_CROSS : ModelTemplates.CROSS; - } - - public ModelTemplate getCrossPot() { - return this == TINTED ? ModelTemplates.TINTED_FLOWER_POT_CROSS : ModelTemplates.FLOWER_POT_CROSS; - } - } - - class WoodProvider { - private final TextureMapping logMapping; - - public WoodProvider(final TextureMapping logMapping) { - this.logMapping = logMapping; - } - - public BlockModelGenerators.WoodProvider wood(Block woodBlock) { - TextureMapping textureMapping = this.logMapping.copyAndUpdate(TextureSlot.END, this.logMapping.get(TextureSlot.SIDE)); - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(woodBlock, textureMapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createAxisAlignedPillarBlock(woodBlock, resourceLocation)); - return this; - } - - public BlockModelGenerators.WoodProvider log(Block logBlock) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput.accept(BlockModelGenerators.createAxisAlignedPillarBlock(logBlock, resourceLocation)); - return this; - } - - public BlockModelGenerators.WoodProvider logWithHorizontal(Block logBlock) { - ResourceLocation resourceLocation = ModelTemplates.CUBE_COLUMN.create(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput); - ResourceLocation resourceLocation2 = ModelTemplates.CUBE_COLUMN_HORIZONTAL.create(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput); - BlockModelGenerators.this.blockStateOutput - .accept(BlockModelGenerators.createRotatedPillarWithHorizontalVariant(logBlock, resourceLocation, resourceLocation2)); - return this; - } - - public BlockModelGenerators.WoodProvider logUVLocked(Block logBlock) { - BlockModelGenerators.this.blockStateOutput - .accept(BlockModelGenerators.createPillarBlockUVLocked(logBlock, this.logMapping, BlockModelGenerators.this.modelOutput)); - return this; - } - } -} diff --git a/net/minecraft/data/models/EquipmentModelProvider.java b/net/minecraft/data/models/EquipmentModelProvider.java deleted file mode 100644 index 8ddb404c..00000000 --- a/net/minecraft/data/models/EquipmentModelProvider.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.minecraft.data.models; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataProvider; -import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.PathProvider; -import net.minecraft.data.PackOutput.Target; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.equipment.EquipmentModel; -import net.minecraft.world.item.equipment.EquipmentModels; - -public class EquipmentModelProvider implements DataProvider { - private final PathProvider pathProvider; - - public EquipmentModelProvider(PackOutput packOutput) { - this.pathProvider = packOutput.createPathProvider(Target.RESOURCE_PACK, "models/equipment"); - } - - @Override - public CompletableFuture run(CachedOutput output) { - Map map = new HashMap(); - EquipmentModels.bootstrap((resourceLocation, equipmentModel) -> { - if (map.putIfAbsent(resourceLocation, equipmentModel) != null) { - throw new IllegalStateException("Tried to register equipment model twice for id: " + resourceLocation); - } - }); - return DataProvider.saveAll(output, EquipmentModel.CODEC, this.pathProvider, map); - } - - @Override - public String getName() { - return "Equipment Model Definitions"; - } -} diff --git a/net/minecraft/data/models/ItemModelGenerators.java b/net/minecraft/data/models/ItemModelGenerators.java deleted file mode 100644 index 2c2ee436..00000000 --- a/net/minecraft/data/models/ItemModelGenerators.java +++ /dev/null @@ -1,486 +0,0 @@ -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 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> output; - - public ItemModelGenerators(BiConsumer> 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 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 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 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 overrideArmorMaterials) { - public String name(ResourceLocation name) { - return (String)this.overrideArmorMaterials.getOrDefault(name, this.name); - } - } -} diff --git a/net/minecraft/data/models/ModelProvider.java b/net/minecraft/data/models/ModelProvider.java deleted file mode 100644 index 3e97b992..00000000 --- a/net/minecraft/data/models/ModelProvider.java +++ /dev/null @@ -1,97 +0,0 @@ -package net.minecraft.data.models; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.gson.JsonElement; -import java.nio.file.Path; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; -import java.util.concurrent.CompletableFuture; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataProvider; -import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.PathProvider; -import net.minecraft.data.PackOutput.Target; -import net.minecraft.data.models.blockstates.BlockStateGenerator; -import net.minecraft.data.models.model.DelegatedModel; -import net.minecraft.data.models.model.ModelLocationUtils; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; - -public class ModelProvider implements DataProvider { - private final PathProvider blockStatePathProvider; - private final PathProvider modelPathProvider; - - public ModelProvider(PackOutput output) { - this.blockStatePathProvider = output.createPathProvider(Target.RESOURCE_PACK, "blockstates"); - this.modelPathProvider = output.createPathProvider(Target.RESOURCE_PACK, "models"); - } - - @Override - public CompletableFuture run(CachedOutput output) { - Map map = Maps.newHashMap(); - Consumer consumer = blockStateGenerator -> { - Block block = blockStateGenerator.getBlock(); - BlockStateGenerator blockStateGenerator2 = (BlockStateGenerator)map.put(block, blockStateGenerator); - if (blockStateGenerator2 != null) { - throw new IllegalStateException("Duplicate blockstate definition for " + block); - } - }; - Map> map2 = Maps.>newHashMap(); - Set set = Sets.newHashSet(); - BiConsumer> biConsumer = (resourceLocation, supplier) -> { - Supplier supplier2 = (Supplier)map2.put(resourceLocation, supplier); - if (supplier2 != null) { - throw new IllegalStateException("Duplicate model definition for " + resourceLocation); - } - }; - Consumer consumer2 = set::add; - new BlockModelGenerators(consumer, biConsumer, consumer2).run(); - new ItemModelGenerators(biConsumer).run(); - List list = BuiltInRegistries.BLOCK.entrySet().stream().filter(entry -> true).map(Entry::getValue).filter(block -> !map.containsKey(block)).toList(); - if (!list.isEmpty()) { - throw new IllegalStateException("Missing blockstate definitions for: " + list); - } else { - BuiltInRegistries.BLOCK.forEach(block -> { - Item item = (Item)Item.BY_BLOCK.get(block); - if (item != null) { - if (set.contains(item)) { - return; - } - - ResourceLocation resourceLocation = ModelLocationUtils.getModelLocation(item); - if (!map2.containsKey(resourceLocation)) { - map2.put(resourceLocation, new DelegatedModel(ModelLocationUtils.getModelLocation(block))); - } - } - }); - return CompletableFuture.allOf( - this.saveCollection(output, map, block -> this.blockStatePathProvider.json(block.builtInRegistryHolder().key().location())), - this.saveCollection(output, map2, this.modelPathProvider::json) - ); - } - } - - private CompletableFuture saveCollection( - CachedOutput output, Map> objectToJsonMap, Function resolveObjectPath - ) { - return CompletableFuture.allOf((CompletableFuture[])objectToJsonMap.entrySet().stream().map(entry -> { - Path path = (Path)resolveObjectPath.apply(entry.getKey()); - JsonElement jsonElement = (JsonElement)((Supplier)entry.getValue()).get(); - return DataProvider.saveStable(output, jsonElement, path); - }).toArray(CompletableFuture[]::new)); - } - - @Override - public final String getName() { - return "Model Definitions"; - } -} diff --git a/net/minecraft/data/models/blockstates/BlockStateGenerator.java b/net/minecraft/data/models/blockstates/BlockStateGenerator.java deleted file mode 100644 index 9955b29b..00000000 --- a/net/minecraft/data/models/blockstates/BlockStateGenerator.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.data.models.blockstates; - -import com.google.gson.JsonElement; -import java.util.function.Supplier; -import net.minecraft.world.level.block.Block; - -public interface BlockStateGenerator extends Supplier { - Block getBlock(); -} diff --git a/net/minecraft/data/models/blockstates/PropertyDispatch.java b/net/minecraft/data/models/blockstates/PropertyDispatch.java deleted file mode 100644 index d2af8a4b..00000000 --- a/net/minecraft/data/models/blockstates/PropertyDispatch.java +++ /dev/null @@ -1,422 +0,0 @@ -package net.minecraft.data.models.blockstates; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import net.minecraft.world.level.block.state.properties.Property; - -public abstract class PropertyDispatch { - private final Map> values = Maps.>newHashMap(); - - protected void putValue(Selector selector, List values) { - List list = (List)this.values.put(selector, values); - if (list != null) { - throw new IllegalStateException("Value " + selector + " is already defined"); - } - } - - Map> getEntries() { - this.verifyComplete(); - return ImmutableMap.copyOf(this.values); - } - - private void verifyComplete() { - List> list = this.getDefinedProperties(); - Stream stream = Stream.of(Selector.empty()); - - for (Property property : list) { - stream = stream.flatMap(selector -> property.getAllValues().map(selector::extend)); - } - - List list2 = (List)stream.filter(selector -> !this.values.containsKey(selector)).collect(Collectors.toList()); - if (!list2.isEmpty()) { - throw new IllegalStateException("Missing definition for properties: " + list2); - } - } - - abstract List> getDefinedProperties(); - - public static > PropertyDispatch.C1 property(Property property1) { - return new PropertyDispatch.C1<>(property1); - } - - public static , T2 extends Comparable> PropertyDispatch.C2 properties(Property property1, Property property2) { - return new PropertyDispatch.C2<>(property1, property2); - } - - public static , T2 extends Comparable, T3 extends Comparable> PropertyDispatch.C3 properties( - Property property1, Property property2, Property property3 - ) { - return new PropertyDispatch.C3<>(property1, property2, property3); - } - - public static , T2 extends Comparable, T3 extends Comparable, T4 extends Comparable> PropertyDispatch.C4 properties( - Property property1, Property property2, Property property3, Property property4 - ) { - return new PropertyDispatch.C4<>(property1, property2, property3, property4); - } - - public static , T2 extends Comparable, T3 extends Comparable, T4 extends Comparable, T5 extends Comparable> PropertyDispatch.C5 properties( - Property property1, Property property2, Property property3, Property property4, Property property5 - ) { - return new PropertyDispatch.C5<>(property1, property2, property3, property4, property5); - } - - public static class C1> extends PropertyDispatch { - private final Property property1; - - C1(Property property1) { - this.property1 = property1; - } - - @Override - public List> getDefinedProperties() { - return ImmutableList.of(this.property1); - } - - public PropertyDispatch.C1 select(T1 propertyValue, List variants) { - Selector selector = Selector.of(this.property1.value(propertyValue)); - this.putValue(selector, variants); - return this; - } - - public PropertyDispatch.C1 select(T1 propertyValue, Variant variant) { - return this.select(propertyValue, Collections.singletonList(variant)); - } - - public PropertyDispatch generate(Function propertyValueToVariantMapper) { - this.property1.getPossibleValues().forEach(comparable -> this.select((T1)comparable, (Variant)propertyValueToVariantMapper.apply(comparable))); - return this; - } - - public PropertyDispatch generateList(Function> propertyValueToVariantsMapper) { - this.property1.getPossibleValues().forEach(comparable -> this.select((T1)comparable, (List)propertyValueToVariantsMapper.apply(comparable))); - return this; - } - } - - public static class C2, T2 extends Comparable> extends PropertyDispatch { - private final Property property1; - private final Property property2; - - C2(Property property1, Property property2) { - this.property1 = property1; - this.property2 = property2; - } - - @Override - public List> getDefinedProperties() { - return ImmutableList.of(this.property1, this.property2); - } - - public PropertyDispatch.C2 select(T1 property1Value, T2 property2Value, List variants) { - Selector selector = Selector.of(this.property1.value(property1Value), this.property2.value(property2Value)); - this.putValue(selector, variants); - return this; - } - - public PropertyDispatch.C2 select(T1 property1Value, T2 property2Value, Variant variant) { - return this.select(property1Value, property2Value, Collections.singletonList(variant)); - } - - public PropertyDispatch generate(BiFunction propertyValuesToVariantMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach(comparable2 -> this.select((T1)comparable, (T2)comparable2, (Variant)propertyValuesToVariantMapper.apply(comparable, comparable2))) - ); - return this; - } - - public PropertyDispatch generateList(BiFunction> propertyValuesToVariantsMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach(comparable2 -> this.select((T1)comparable, (T2)comparable2, (List)propertyValuesToVariantsMapper.apply(comparable, comparable2))) - ); - return this; - } - } - - public static class C3, T2 extends Comparable, T3 extends Comparable> extends PropertyDispatch { - private final Property property1; - private final Property property2; - private final Property property3; - - C3(Property property1, Property property2, Property property3) { - this.property1 = property1; - this.property2 = property2; - this.property3 = property3; - } - - @Override - public List> getDefinedProperties() { - return ImmutableList.of(this.property1, this.property2, this.property3); - } - - public PropertyDispatch.C3 select(T1 property1Value, T2 property2Value, T3 property3Value, List variants) { - Selector selector = Selector.of(this.property1.value(property1Value), this.property2.value(property2Value), this.property3.value(property3Value)); - this.putValue(selector, variants); - return this; - } - - public PropertyDispatch.C3 select(T1 property1Value, T2 property2Value, T3 property3Value, Variant variant) { - return this.select(property1Value, property2Value, property3Value, Collections.singletonList(variant)); - } - - public PropertyDispatch generate(PropertyDispatch.TriFunction propertyValuesToVariantMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach( - comparable2 -> this.property3 - .getPossibleValues() - .forEach( - comparable3 -> this.select( - (T1)comparable, (T2)comparable2, (T3)comparable3, propertyValuesToVariantMapper.apply((T1)comparable, (T2)comparable2, (T3)comparable3) - ) - ) - ) - ); - return this; - } - - public PropertyDispatch generateList(PropertyDispatch.TriFunction> propertyValuesToVariantsMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach( - comparable2 -> this.property3 - .getPossibleValues() - .forEach( - comparable3 -> this.select( - (T1)comparable, (T2)comparable2, (T3)comparable3, propertyValuesToVariantsMapper.apply((T1)comparable, (T2)comparable2, (T3)comparable3) - ) - ) - ) - ); - return this; - } - } - - public static class C4, T2 extends Comparable, T3 extends Comparable, T4 extends Comparable> extends PropertyDispatch { - private final Property property1; - private final Property property2; - private final Property property3; - private final Property property4; - - C4(Property property1, Property property2, Property property3, Property property4) { - this.property1 = property1; - this.property2 = property2; - this.property3 = property3; - this.property4 = property4; - } - - @Override - public List> getDefinedProperties() { - return ImmutableList.of(this.property1, this.property2, this.property3, this.property4); - } - - public PropertyDispatch.C4 select(T1 property1Value, T2 property2Value, T3 property3Value, T4 property4Value, List variants) { - Selector selector = Selector.of( - this.property1.value(property1Value), this.property2.value(property2Value), this.property3.value(property3Value), this.property4.value(property4Value) - ); - this.putValue(selector, variants); - return this; - } - - public PropertyDispatch.C4 select(T1 property1Value, T2 property2Value, T3 property3Value, T4 property4Value, Variant variant) { - return this.select(property1Value, property2Value, property3Value, property4Value, Collections.singletonList(variant)); - } - - public PropertyDispatch generate(PropertyDispatch.QuadFunction propertyValuesToVariantMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach( - comparable2 -> this.property3 - .getPossibleValues() - .forEach( - comparable3 -> this.property4 - .getPossibleValues() - .forEach( - comparable4 -> this.select( - (T1)comparable, - (T2)comparable2, - (T3)comparable3, - (T4)comparable4, - propertyValuesToVariantMapper.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4) - ) - ) - ) - ) - ); - return this; - } - - public PropertyDispatch generateList(PropertyDispatch.QuadFunction> propertyValuesToVariantsMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach( - comparable2 -> this.property3 - .getPossibleValues() - .forEach( - comparable3 -> this.property4 - .getPossibleValues() - .forEach( - comparable4 -> this.select( - (T1)comparable, - (T2)comparable2, - (T3)comparable3, - (T4)comparable4, - propertyValuesToVariantsMapper.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4) - ) - ) - ) - ) - ); - return this; - } - } - - public static class C5, T2 extends Comparable, T3 extends Comparable, T4 extends Comparable, T5 extends Comparable> - extends PropertyDispatch { - private final Property property1; - private final Property property2; - private final Property property3; - private final Property property4; - private final Property property5; - - C5(Property property1, Property property2, Property property3, Property property4, Property property5) { - this.property1 = property1; - this.property2 = property2; - this.property3 = property3; - this.property4 = property4; - this.property5 = property5; - } - - @Override - public List> getDefinedProperties() { - return ImmutableList.of(this.property1, this.property2, this.property3, this.property4, this.property5); - } - - public PropertyDispatch.C5 select( - T1 property1Value, T2 property2Value, T3 property3Value, T4 property4Value, T5 property5Value, List variants - ) { - Selector selector = Selector.of( - this.property1.value(property1Value), - this.property2.value(property2Value), - this.property3.value(property3Value), - this.property4.value(property4Value), - this.property5.value(property5Value) - ); - this.putValue(selector, variants); - return this; - } - - public PropertyDispatch.C5 select( - T1 property1Value, T2 property2Value, T3 property3Value, T4 property4Value, T5 property5Value, Variant variant - ) { - return this.select(property1Value, property2Value, property3Value, property4Value, property5Value, Collections.singletonList(variant)); - } - - public PropertyDispatch generate(PropertyDispatch.PentaFunction propertyValuesToVariantMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach( - comparable2 -> this.property3 - .getPossibleValues() - .forEach( - comparable3 -> this.property4 - .getPossibleValues() - .forEach( - comparable4 -> this.property5 - .getPossibleValues() - .forEach( - comparable5 -> this.select( - (T1)comparable, - (T2)comparable2, - (T3)comparable3, - (T4)comparable4, - (T5)comparable5, - propertyValuesToVariantMapper.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4, (T5)comparable5) - ) - ) - ) - ) - ) - ); - return this; - } - - public PropertyDispatch generateList(PropertyDispatch.PentaFunction> propertyValuesToVariantsMapper) { - this.property1 - .getPossibleValues() - .forEach( - comparable -> this.property2 - .getPossibleValues() - .forEach( - comparable2 -> this.property3 - .getPossibleValues() - .forEach( - comparable3 -> this.property4 - .getPossibleValues() - .forEach( - comparable4 -> this.property5 - .getPossibleValues() - .forEach( - comparable5 -> this.select( - (T1)comparable, - (T2)comparable2, - (T3)comparable3, - (T4)comparable4, - (T5)comparable5, - propertyValuesToVariantsMapper.apply((T1)comparable, (T2)comparable2, (T3)comparable3, (T4)comparable4, (T5)comparable5) - ) - ) - ) - ) - ) - ); - return this; - } - } - - @FunctionalInterface - public interface PentaFunction { - R apply(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5); - } - - @FunctionalInterface - public interface QuadFunction { - R apply(P1 p1, P2 p2, P3 p3, P4 p4); - } - - @FunctionalInterface - public interface TriFunction { - R apply(P1 object, P2 object2, P3 object3); - } -} diff --git a/net/minecraft/data/models/blockstates/Selector.java b/net/minecraft/data/models/blockstates/Selector.java deleted file mode 100644 index 50e70a96..00000000 --- a/net/minecraft/data/models/blockstates/Selector.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.minecraft.data.models.blockstates; - -import com.google.common.collect.ImmutableList; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; -import net.minecraft.world.level.block.state.properties.Property; - -public final class Selector { - private static final Selector EMPTY = new Selector(ImmutableList.of()); - private static final Comparator> COMPARE_BY_NAME = Comparator.comparing(value -> value.property().getName()); - private final List> values; - - public Selector extend(Property.Value value) { - return new Selector(ImmutableList.>builder().addAll(this.values).add(value).build()); - } - - public Selector extend(Selector selector) { - return new Selector(ImmutableList.>builder().addAll(this.values).addAll(selector.values).build()); - } - - private Selector(List> values) { - this.values = values; - } - - public static Selector empty() { - return EMPTY; - } - - public static Selector of(Property.Value... values) { - return new Selector(ImmutableList.copyOf(values)); - } - - public boolean equals(Object object) { - return this == object || object instanceof Selector && this.values.equals(((Selector)object).values); - } - - public int hashCode() { - return this.values.hashCode(); - } - - public String getKey() { - return (String)this.values.stream().sorted(COMPARE_BY_NAME).map(Property.Value::toString).collect(Collectors.joining(",")); - } - - public String toString() { - return this.getKey(); - } -} diff --git a/net/minecraft/data/models/blockstates/Variant.java b/net/minecraft/data/models/blockstates/Variant.java deleted file mode 100644 index f9e0657a..00000000 --- a/net/minecraft/data/models/blockstates/Variant.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.minecraft.data.models.blockstates; - -import com.google.common.collect.Maps; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -public class Variant implements Supplier { - private final Map, VariantProperty.Value> values = Maps., VariantProperty.Value>newLinkedHashMap(); - - public Variant with(VariantProperty property, T value) { - VariantProperty.Value value2 = (VariantProperty.Value)this.values.put(property, property.withValue(value)); - if (value2 != null) { - throw new IllegalStateException("Replacing value of " + value2 + " with " + value); - } else { - return this; - } - } - - public static Variant variant() { - return new Variant(); - } - - public static Variant merge(Variant definition1, Variant definition2) { - Variant variant = new Variant(); - variant.values.putAll(definition1.values); - variant.values.putAll(definition2.values); - return variant; - } - - public JsonElement get() { - JsonObject jsonObject = new JsonObject(); - this.values.values().forEach(value -> value.addToVariant(jsonObject)); - return jsonObject; - } - - public static JsonElement convertList(List definitions) { - if (definitions.size() == 1) { - return ((Variant)definitions.get(0)).get(); - } else { - JsonArray jsonArray = new JsonArray(); - definitions.forEach(variant -> jsonArray.add(variant.get())); - return jsonArray; - } - } -} diff --git a/net/minecraft/data/models/blockstates/VariantProperty.java b/net/minecraft/data/models/blockstates/VariantProperty.java deleted file mode 100644 index 4b185553..00000000 --- a/net/minecraft/data/models/blockstates/VariantProperty.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.minecraft.data.models.blockstates; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import java.util.function.Function; - -public class VariantProperty { - final String key; - final Function serializer; - - public VariantProperty(String key, Function serializer) { - this.key = key; - this.serializer = serializer; - } - - public VariantProperty.Value withValue(T value) { - return new VariantProperty.Value(value); - } - - public String toString() { - return this.key; - } - - public class Value { - private final T value; - - public Value(final T value) { - this.value = value; - } - - public VariantProperty getKey() { - return VariantProperty.this; - } - - public void addToVariant(JsonObject jsonObject) { - jsonObject.add(VariantProperty.this.key, (JsonElement)VariantProperty.this.serializer.apply(this.value)); - } - - public String toString() { - return VariantProperty.this.key + "=" + this.value; - } - } -} diff --git a/net/minecraft/data/models/blockstates/package-info.java b/net/minecraft/data/models/blockstates/package-info.java deleted file mode 100644 index c069efe4..00000000 --- a/net/minecraft/data/models/blockstates/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -@FieldsAreNonnullByDefault -package net.minecraft.data.models.blockstates; - -import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/data/models/model/DelegatedModel.java b/net/minecraft/data/models/model/DelegatedModel.java deleted file mode 100644 index d39ac800..00000000 --- a/net/minecraft/data/models/model/DelegatedModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.data.models.model; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import java.util.function.Supplier; -import net.minecraft.resources.ResourceLocation; - -public class DelegatedModel implements Supplier { - private final ResourceLocation parent; - - public DelegatedModel(ResourceLocation parent) { - this.parent = parent; - } - - public JsonElement get() { - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("parent", this.parent.toString()); - return jsonObject; - } -} diff --git a/net/minecraft/data/models/model/ModelTemplate.java b/net/minecraft/data/models/model/ModelTemplate.java deleted file mode 100644 index 7d1107f4..00000000 --- a/net/minecraft/data/models/model/ModelTemplate.java +++ /dev/null @@ -1,83 +0,0 @@ -package net.minecraft.data.models.model; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Streams; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Supplier; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Block; - -public class ModelTemplate { - private final Optional model; - private final Set requiredSlots; - private final Optional suffix; - - public ModelTemplate(Optional model, Optional suffix, TextureSlot... requiredSlots) { - this.model = model; - this.suffix = suffix; - this.requiredSlots = ImmutableSet.copyOf(requiredSlots); - } - - public ResourceLocation getDefaultModelLocation(Block block) { - return ModelLocationUtils.getModelLocation(block, (String)this.suffix.orElse("")); - } - - public ResourceLocation create(Block modelBlock, TextureMapping textureMapping, BiConsumer> modelOutput) { - return this.create(ModelLocationUtils.getModelLocation(modelBlock, (String)this.suffix.orElse("")), textureMapping, modelOutput); - } - - public ResourceLocation createWithSuffix( - Block modelBlock, String modelLocationSuffix, TextureMapping textureMapping, BiConsumer> modelOutput - ) { - return this.create(ModelLocationUtils.getModelLocation(modelBlock, modelLocationSuffix + (String)this.suffix.orElse("")), textureMapping, modelOutput); - } - - public ResourceLocation createWithOverride( - Block modelBlock, String modelLocationSuffix, TextureMapping textureMapping, BiConsumer> modelOutput - ) { - return this.create(ModelLocationUtils.getModelLocation(modelBlock, modelLocationSuffix), textureMapping, modelOutput); - } - - public ResourceLocation create(ResourceLocation modelLocation, TextureMapping textureMapping, BiConsumer> modelOutput) { - return this.create(modelLocation, textureMapping, modelOutput, this::createBaseTemplate); - } - - public ResourceLocation create( - ResourceLocation modelLocation, - TextureMapping textureMapping, - BiConsumer> modelOutput, - ModelTemplate.JsonFactory factory - ) { - Map map = this.createMap(textureMapping); - modelOutput.accept(modelLocation, (Supplier)() -> factory.create(modelLocation, map)); - return modelLocation; - } - - public JsonObject createBaseTemplate(ResourceLocation modelLocation, Map modelGetter) { - JsonObject jsonObject = new JsonObject(); - this.model.ifPresent(resourceLocation -> jsonObject.addProperty("parent", resourceLocation.toString())); - if (!modelGetter.isEmpty()) { - JsonObject jsonObject2 = new JsonObject(); - modelGetter.forEach((textureSlot, resourceLocation) -> jsonObject2.addProperty(textureSlot.getId(), resourceLocation.toString())); - jsonObject.add("textures", jsonObject2); - } - - return jsonObject; - } - - private Map createMap(TextureMapping textureMapping) { - return (Map)Streams.concat(this.requiredSlots.stream(), textureMapping.getForced()) - .collect(ImmutableMap.toImmutableMap(Function.identity(), textureMapping::get)); - } - - public interface JsonFactory { - JsonObject create(ResourceLocation resourceLocation, Map map); - } -} diff --git a/net/minecraft/data/models/model/TextureMapping.java b/net/minecraft/data/models/model/TextureMapping.java deleted file mode 100644 index f75ec7c8..00000000 --- a/net/minecraft/data/models/model/TextureMapping.java +++ /dev/null @@ -1,407 +0,0 @@ -package net.minecraft.data.models.model; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import java.util.Map; -import java.util.Set; -import java.util.function.UnaryOperator; -import java.util.stream.Stream; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; - -public class TextureMapping { - private final Map slots = Maps.newHashMap(); - private final Set forcedSlots = Sets.newHashSet(); - - public TextureMapping put(TextureSlot textureSlot, ResourceLocation textureLocation) { - this.slots.put(textureSlot, textureLocation); - return this; - } - - public TextureMapping putForced(TextureSlot textureSlot, ResourceLocation textureLocation) { - this.slots.put(textureSlot, textureLocation); - this.forcedSlots.add(textureSlot); - return this; - } - - public Stream getForced() { - return this.forcedSlots.stream(); - } - - public TextureMapping copySlot(TextureSlot sourceSlot, TextureSlot targetSlot) { - this.slots.put(targetSlot, (ResourceLocation)this.slots.get(sourceSlot)); - return this; - } - - public TextureMapping copyForced(TextureSlot sourceSlot, TextureSlot targetSlot) { - this.slots.put(targetSlot, (ResourceLocation)this.slots.get(sourceSlot)); - this.forcedSlots.add(targetSlot); - return this; - } - - public ResourceLocation get(TextureSlot textureSlot) { - for (TextureSlot textureSlot2 = textureSlot; textureSlot2 != null; textureSlot2 = textureSlot2.getParent()) { - ResourceLocation resourceLocation = (ResourceLocation)this.slots.get(textureSlot2); - if (resourceLocation != null) { - return resourceLocation; - } - } - - throw new IllegalStateException("Can't find texture for slot " + textureSlot); - } - - public TextureMapping copyAndUpdate(TextureSlot textureSlot, ResourceLocation textureLocation) { - TextureMapping textureMapping = new TextureMapping(); - textureMapping.slots.putAll(this.slots); - textureMapping.forcedSlots.addAll(this.forcedSlots); - textureMapping.put(textureSlot, textureLocation); - return textureMapping; - } - - public static TextureMapping cube(Block block) { - ResourceLocation resourceLocation = getBlockTexture(block); - return cube(resourceLocation); - } - - public static TextureMapping defaultTexture(Block block) { - ResourceLocation resourceLocation = getBlockTexture(block); - return defaultTexture(resourceLocation); - } - - public static TextureMapping defaultTexture(ResourceLocation textureLocation) { - return new TextureMapping().put(TextureSlot.TEXTURE, textureLocation); - } - - public static TextureMapping cube(ResourceLocation allTextureLocation) { - return new TextureMapping().put(TextureSlot.ALL, allTextureLocation); - } - - public static TextureMapping cross(Block block) { - return singleSlot(TextureSlot.CROSS, getBlockTexture(block)); - } - - public static TextureMapping side(Block block) { - return singleSlot(TextureSlot.SIDE, getBlockTexture(block)); - } - - public static TextureMapping cross(ResourceLocation crossTextureLocation) { - return singleSlot(TextureSlot.CROSS, crossTextureLocation); - } - - public static TextureMapping plant(Block plantBlock) { - return singleSlot(TextureSlot.PLANT, getBlockTexture(plantBlock)); - } - - public static TextureMapping plant(ResourceLocation plantTextureLocation) { - return singleSlot(TextureSlot.PLANT, plantTextureLocation); - } - - public static TextureMapping rail(Block railBlock) { - return singleSlot(TextureSlot.RAIL, getBlockTexture(railBlock)); - } - - public static TextureMapping rail(ResourceLocation railTextureLocation) { - return singleSlot(TextureSlot.RAIL, railTextureLocation); - } - - public static TextureMapping wool(Block woolBlock) { - return singleSlot(TextureSlot.WOOL, getBlockTexture(woolBlock)); - } - - public static TextureMapping flowerbed(Block flowerbedBlock) { - return new TextureMapping().put(TextureSlot.FLOWERBED, getBlockTexture(flowerbedBlock)).put(TextureSlot.STEM, getBlockTexture(flowerbedBlock, "_stem")); - } - - public static TextureMapping wool(ResourceLocation woolTextureLocation) { - return singleSlot(TextureSlot.WOOL, woolTextureLocation); - } - - public static TextureMapping stem(Block stemBlock) { - return singleSlot(TextureSlot.STEM, getBlockTexture(stemBlock)); - } - - public static TextureMapping attachedStem(Block unattachedStemBlock, Block attachedStemBlock) { - return new TextureMapping().put(TextureSlot.STEM, getBlockTexture(unattachedStemBlock)).put(TextureSlot.UPPER_STEM, getBlockTexture(attachedStemBlock)); - } - - public static TextureMapping pattern(Block patternBlock) { - return singleSlot(TextureSlot.PATTERN, getBlockTexture(patternBlock)); - } - - public static TextureMapping fan(Block fanBlock) { - return singleSlot(TextureSlot.FAN, getBlockTexture(fanBlock)); - } - - public static TextureMapping crop(ResourceLocation cropTextureLocation) { - return singleSlot(TextureSlot.CROP, cropTextureLocation); - } - - public static TextureMapping pane(Block glassBlock, Block paneBlock) { - return new TextureMapping().put(TextureSlot.PANE, getBlockTexture(glassBlock)).put(TextureSlot.EDGE, getBlockTexture(paneBlock, "_top")); - } - - public static TextureMapping singleSlot(TextureSlot textureSlot, ResourceLocation textureLocation) { - return new TextureMapping().put(textureSlot, textureLocation); - } - - public static TextureMapping column(Block columnBlock) { - return new TextureMapping().put(TextureSlot.SIDE, getBlockTexture(columnBlock, "_side")).put(TextureSlot.END, getBlockTexture(columnBlock, "_top")); - } - - public static TextureMapping cubeTop(Block block) { - return new TextureMapping().put(TextureSlot.SIDE, getBlockTexture(block, "_side")).put(TextureSlot.TOP, getBlockTexture(block, "_top")); - } - - public static TextureMapping pottedAzalea(Block azaleaBlock) { - return new TextureMapping() - .put(TextureSlot.PLANT, getBlockTexture(azaleaBlock, "_plant")) - .put(TextureSlot.SIDE, getBlockTexture(azaleaBlock, "_side")) - .put(TextureSlot.TOP, getBlockTexture(azaleaBlock, "_top")); - } - - public static TextureMapping logColumn(Block logBlock) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(logBlock)) - .put(TextureSlot.END, getBlockTexture(logBlock, "_top")) - .put(TextureSlot.PARTICLE, getBlockTexture(logBlock)); - } - - public static TextureMapping column(ResourceLocation sideTextureLocation, ResourceLocation endTextureLocation) { - return new TextureMapping().put(TextureSlot.SIDE, sideTextureLocation).put(TextureSlot.END, endTextureLocation); - } - - public static TextureMapping fence(Block fenceBlock) { - return new TextureMapping() - .put(TextureSlot.TEXTURE, getBlockTexture(fenceBlock)) - .put(TextureSlot.SIDE, getBlockTexture(fenceBlock, "_side")) - .put(TextureSlot.TOP, getBlockTexture(fenceBlock, "_top")); - } - - public static TextureMapping customParticle(Block block) { - return new TextureMapping().put(TextureSlot.TEXTURE, getBlockTexture(block)).put(TextureSlot.PARTICLE, getBlockTexture(block, "_particle")); - } - - public static TextureMapping cubeBottomTop(Block block) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) - .put(TextureSlot.TOP, getBlockTexture(block, "_top")) - .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); - } - - public static TextureMapping cubeBottomTopWithWall(Block block) { - ResourceLocation resourceLocation = getBlockTexture(block); - return new TextureMapping() - .put(TextureSlot.WALL, resourceLocation) - .put(TextureSlot.SIDE, resourceLocation) - .put(TextureSlot.TOP, getBlockTexture(block, "_top")) - .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); - } - - public static TextureMapping columnWithWall(Block columnBlock) { - ResourceLocation resourceLocation = getBlockTexture(columnBlock); - return new TextureMapping() - .put(TextureSlot.TEXTURE, resourceLocation) - .put(TextureSlot.WALL, resourceLocation) - .put(TextureSlot.SIDE, resourceLocation) - .put(TextureSlot.END, getBlockTexture(columnBlock, "_top")); - } - - public static TextureMapping door(ResourceLocation topTextureLocation, ResourceLocation bottomTextureLocation) { - return new TextureMapping().put(TextureSlot.TOP, topTextureLocation).put(TextureSlot.BOTTOM, bottomTextureLocation); - } - - public static TextureMapping door(Block doorBlock) { - return new TextureMapping().put(TextureSlot.TOP, getBlockTexture(doorBlock, "_top")).put(TextureSlot.BOTTOM, getBlockTexture(doorBlock, "_bottom")); - } - - public static TextureMapping particle(Block particleBlock) { - return new TextureMapping().put(TextureSlot.PARTICLE, getBlockTexture(particleBlock)); - } - - public static TextureMapping particle(ResourceLocation textureLocation) { - return new TextureMapping().put(TextureSlot.PARTICLE, textureLocation); - } - - public static TextureMapping fire0(Block fireBlock) { - return new TextureMapping().put(TextureSlot.FIRE, getBlockTexture(fireBlock, "_0")); - } - - public static TextureMapping fire1(Block fireBlock) { - return new TextureMapping().put(TextureSlot.FIRE, getBlockTexture(fireBlock, "_1")); - } - - public static TextureMapping lantern(Block lanternBlock) { - return new TextureMapping().put(TextureSlot.LANTERN, getBlockTexture(lanternBlock)); - } - - public static TextureMapping torch(Block torchBlock) { - return new TextureMapping().put(TextureSlot.TORCH, getBlockTexture(torchBlock)); - } - - public static TextureMapping torch(ResourceLocation torchTextureLocation) { - return new TextureMapping().put(TextureSlot.TORCH, torchTextureLocation); - } - - public static TextureMapping trialSpawner(Block trialSpawnerBlock, String sideSuffix, String topSuffix) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(trialSpawnerBlock, sideSuffix)) - .put(TextureSlot.TOP, getBlockTexture(trialSpawnerBlock, topSuffix)) - .put(TextureSlot.BOTTOM, getBlockTexture(trialSpawnerBlock, "_bottom")); - } - - public static TextureMapping vault(Block vaultBlock, String frontSuffix, String sideSuffix, String topSuffix, String bottomSuffix) { - return new TextureMapping() - .put(TextureSlot.FRONT, getBlockTexture(vaultBlock, frontSuffix)) - .put(TextureSlot.SIDE, getBlockTexture(vaultBlock, sideSuffix)) - .put(TextureSlot.TOP, getBlockTexture(vaultBlock, topSuffix)) - .put(TextureSlot.BOTTOM, getBlockTexture(vaultBlock, bottomSuffix)); - } - - public static TextureMapping particleFromItem(Item particleItem) { - return new TextureMapping().put(TextureSlot.PARTICLE, getItemTexture(particleItem)); - } - - public static TextureMapping commandBlock(Block commandBlock) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(commandBlock, "_side")) - .put(TextureSlot.FRONT, getBlockTexture(commandBlock, "_front")) - .put(TextureSlot.BACK, getBlockTexture(commandBlock, "_back")); - } - - public static TextureMapping orientableCube(Block block) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) - .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) - .put(TextureSlot.TOP, getBlockTexture(block, "_top")) - .put(TextureSlot.BOTTOM, getBlockTexture(block, "_bottom")); - } - - public static TextureMapping orientableCubeOnlyTop(Block block) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) - .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) - .put(TextureSlot.TOP, getBlockTexture(block, "_top")); - } - - public static TextureMapping orientableCubeSameEnds(Block block) { - return new TextureMapping() - .put(TextureSlot.SIDE, getBlockTexture(block, "_side")) - .put(TextureSlot.FRONT, getBlockTexture(block, "_front")) - .put(TextureSlot.END, getBlockTexture(block, "_end")); - } - - public static TextureMapping top(Block block) { - return new TextureMapping().put(TextureSlot.TOP, getBlockTexture(block, "_top")); - } - - public static TextureMapping craftingTable(Block craftingTableBlock, Block craftingTableMaterialBlock) { - return new TextureMapping() - .put(TextureSlot.PARTICLE, getBlockTexture(craftingTableBlock, "_front")) - .put(TextureSlot.DOWN, getBlockTexture(craftingTableMaterialBlock)) - .put(TextureSlot.UP, getBlockTexture(craftingTableBlock, "_top")) - .put(TextureSlot.NORTH, getBlockTexture(craftingTableBlock, "_front")) - .put(TextureSlot.EAST, getBlockTexture(craftingTableBlock, "_side")) - .put(TextureSlot.SOUTH, getBlockTexture(craftingTableBlock, "_side")) - .put(TextureSlot.WEST, getBlockTexture(craftingTableBlock, "_front")); - } - - public static TextureMapping fletchingTable(Block fletchingTableBlock, Block fletchingTableMaterialBlock) { - return new TextureMapping() - .put(TextureSlot.PARTICLE, getBlockTexture(fletchingTableBlock, "_front")) - .put(TextureSlot.DOWN, getBlockTexture(fletchingTableMaterialBlock)) - .put(TextureSlot.UP, getBlockTexture(fletchingTableBlock, "_top")) - .put(TextureSlot.NORTH, getBlockTexture(fletchingTableBlock, "_front")) - .put(TextureSlot.SOUTH, getBlockTexture(fletchingTableBlock, "_front")) - .put(TextureSlot.EAST, getBlockTexture(fletchingTableBlock, "_side")) - .put(TextureSlot.WEST, getBlockTexture(fletchingTableBlock, "_side")); - } - - public static TextureMapping snifferEgg(String crackLevel) { - return new TextureMapping() - .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_north")) - .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_bottom")) - .put(TextureSlot.TOP, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_top")) - .put(TextureSlot.NORTH, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_north")) - .put(TextureSlot.SOUTH, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_south")) - .put(TextureSlot.EAST, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_east")) - .put(TextureSlot.WEST, getBlockTexture(Blocks.SNIFFER_EGG, crackLevel + "_west")); - } - - public static TextureMapping campfire(Block campfireBlock) { - return new TextureMapping() - .put(TextureSlot.LIT_LOG, getBlockTexture(campfireBlock, "_log_lit")) - .put(TextureSlot.FIRE, getBlockTexture(campfireBlock, "_fire")); - } - - public static TextureMapping candleCake(Block candleCakeBlock, boolean lit) { - return new TextureMapping() - .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.CAKE, "_side")) - .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.CAKE, "_bottom")) - .put(TextureSlot.TOP, getBlockTexture(Blocks.CAKE, "_top")) - .put(TextureSlot.SIDE, getBlockTexture(Blocks.CAKE, "_side")) - .put(TextureSlot.CANDLE, getBlockTexture(candleCakeBlock, lit ? "_lit" : "")); - } - - public static TextureMapping cauldron(ResourceLocation cauldronContentTextureLocation) { - return new TextureMapping() - .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.CAULDRON, "_side")) - .put(TextureSlot.SIDE, getBlockTexture(Blocks.CAULDRON, "_side")) - .put(TextureSlot.TOP, getBlockTexture(Blocks.CAULDRON, "_top")) - .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.CAULDRON, "_bottom")) - .put(TextureSlot.INSIDE, getBlockTexture(Blocks.CAULDRON, "_inner")) - .put(TextureSlot.CONTENT, cauldronContentTextureLocation); - } - - public static TextureMapping sculkShrieker(boolean canSummon) { - String string = canSummon ? "_can_summon" : ""; - return new TextureMapping() - .put(TextureSlot.PARTICLE, getBlockTexture(Blocks.SCULK_SHRIEKER, "_bottom")) - .put(TextureSlot.SIDE, getBlockTexture(Blocks.SCULK_SHRIEKER, "_side")) - .put(TextureSlot.TOP, getBlockTexture(Blocks.SCULK_SHRIEKER, "_top")) - .put(TextureSlot.INNER_TOP, getBlockTexture(Blocks.SCULK_SHRIEKER, string + "_inner_top")) - .put(TextureSlot.BOTTOM, getBlockTexture(Blocks.SCULK_SHRIEKER, "_bottom")); - } - - public static TextureMapping layer0(Item layerZeroItem) { - return new TextureMapping().put(TextureSlot.LAYER0, getItemTexture(layerZeroItem)); - } - - public static TextureMapping layer0(Block layerZeroBlock) { - return new TextureMapping().put(TextureSlot.LAYER0, getBlockTexture(layerZeroBlock)); - } - - public static TextureMapping layer0(ResourceLocation layerZeroTextureLocation) { - return new TextureMapping().put(TextureSlot.LAYER0, layerZeroTextureLocation); - } - - public static TextureMapping layered(ResourceLocation layer0, ResourceLocation layer1) { - return new TextureMapping().put(TextureSlot.LAYER0, layer0).put(TextureSlot.LAYER1, layer1); - } - - public static TextureMapping layered(ResourceLocation layer0, ResourceLocation layer1, ResourceLocation layer2) { - return new TextureMapping().put(TextureSlot.LAYER0, layer0).put(TextureSlot.LAYER1, layer1).put(TextureSlot.LAYER2, layer2); - } - - public static ResourceLocation getBlockTexture(Block block) { - ResourceLocation resourceLocation = BuiltInRegistries.BLOCK.getKey(block); - return resourceLocation.withPrefix("block/"); - } - - public static ResourceLocation getBlockTexture(Block block, String textureSuffix) { - ResourceLocation resourceLocation = BuiltInRegistries.BLOCK.getKey(block); - return resourceLocation.withPath((UnaryOperator)(string2 -> "block/" + string2 + textureSuffix)); - } - - public static ResourceLocation getItemTexture(Item item) { - ResourceLocation resourceLocation = BuiltInRegistries.ITEM.getKey(item); - return resourceLocation.withPrefix("item/"); - } - - public static ResourceLocation getItemTexture(Item item, String textureSuffix) { - ResourceLocation resourceLocation = BuiltInRegistries.ITEM.getKey(item); - return resourceLocation.withPath((UnaryOperator)(string2 -> "item/" + string2 + textureSuffix)); - } -} diff --git a/net/minecraft/data/models/model/TexturedModel.java b/net/minecraft/data/models/model/TexturedModel.java deleted file mode 100644 index 5f7d3ba9..00000000 --- a/net/minecraft/data/models/model/TexturedModel.java +++ /dev/null @@ -1,92 +0,0 @@ -package net.minecraft.data.models.model; - -import com.google.gson.JsonElement; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Block; - -public class TexturedModel { - public static final TexturedModel.Provider CUBE = createDefault(TextureMapping::cube, ModelTemplates.CUBE_ALL); - public static final TexturedModel.Provider CUBE_INNER_FACES = createDefault(TextureMapping::cube, ModelTemplates.CUBE_ALL_INNER_FACES); - public static final TexturedModel.Provider CUBE_MIRRORED = createDefault(TextureMapping::cube, ModelTemplates.CUBE_MIRRORED_ALL); - public static final TexturedModel.Provider COLUMN = createDefault(TextureMapping::column, ModelTemplates.CUBE_COLUMN); - public static final TexturedModel.Provider COLUMN_HORIZONTAL = createDefault(TextureMapping::column, ModelTemplates.CUBE_COLUMN_HORIZONTAL); - public static final TexturedModel.Provider CUBE_TOP_BOTTOM = createDefault(TextureMapping::cubeBottomTop, ModelTemplates.CUBE_BOTTOM_TOP); - public static final TexturedModel.Provider CUBE_TOP = createDefault(TextureMapping::cubeTop, ModelTemplates.CUBE_TOP); - public static final TexturedModel.Provider ORIENTABLE_ONLY_TOP = createDefault(TextureMapping::orientableCubeOnlyTop, ModelTemplates.CUBE_ORIENTABLE); - public static final TexturedModel.Provider ORIENTABLE = createDefault(TextureMapping::orientableCube, ModelTemplates.CUBE_ORIENTABLE_TOP_BOTTOM); - public static final TexturedModel.Provider CARPET = createDefault(TextureMapping::wool, ModelTemplates.CARPET); - public static final TexturedModel.Provider MOSSY_CARPET_SIDE = createDefault(TextureMapping::side, ModelTemplates.MOSSY_CARPET_SIDE); - public static final TexturedModel.Provider FLOWERBED_1 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_1); - public static final TexturedModel.Provider FLOWERBED_2 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_2); - public static final TexturedModel.Provider FLOWERBED_3 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_3); - public static final TexturedModel.Provider FLOWERBED_4 = createDefault(TextureMapping::flowerbed, ModelTemplates.FLOWERBED_4); - public static final TexturedModel.Provider GLAZED_TERRACOTTA = createDefault(TextureMapping::pattern, ModelTemplates.GLAZED_TERRACOTTA); - public static final TexturedModel.Provider CORAL_FAN = createDefault(TextureMapping::fan, ModelTemplates.CORAL_FAN); - public static final TexturedModel.Provider PARTICLE_ONLY = createDefault(TextureMapping::particle, ModelTemplates.PARTICLE_ONLY); - public static final TexturedModel.Provider ANVIL = createDefault(TextureMapping::top, ModelTemplates.ANVIL); - public static final TexturedModel.Provider LEAVES = createDefault(TextureMapping::cube, ModelTemplates.LEAVES); - public static final TexturedModel.Provider LANTERN = createDefault(TextureMapping::lantern, ModelTemplates.LANTERN); - public static final TexturedModel.Provider HANGING_LANTERN = createDefault(TextureMapping::lantern, ModelTemplates.HANGING_LANTERN); - public static final TexturedModel.Provider SEAGRASS = createDefault(TextureMapping::defaultTexture, ModelTemplates.SEAGRASS); - public static final TexturedModel.Provider COLUMN_ALT = createDefault(TextureMapping::logColumn, ModelTemplates.CUBE_COLUMN); - public static final TexturedModel.Provider COLUMN_HORIZONTAL_ALT = createDefault(TextureMapping::logColumn, ModelTemplates.CUBE_COLUMN_HORIZONTAL); - public static final TexturedModel.Provider TOP_BOTTOM_WITH_WALL = createDefault(TextureMapping::cubeBottomTopWithWall, ModelTemplates.CUBE_BOTTOM_TOP); - public static final TexturedModel.Provider COLUMN_WITH_WALL = createDefault(TextureMapping::columnWithWall, ModelTemplates.CUBE_COLUMN); - private final TextureMapping mapping; - private final ModelTemplate template; - - private TexturedModel(TextureMapping mapping, ModelTemplate template) { - this.mapping = mapping; - this.template = template; - } - - public ModelTemplate getTemplate() { - return this.template; - } - - public TextureMapping getMapping() { - return this.mapping; - } - - public TexturedModel updateTextures(Consumer textureMappingConsumer) { - textureMappingConsumer.accept(this.mapping); - return this; - } - - public ResourceLocation create(Block modelBlock, BiConsumer> modelOutput) { - return this.template.create(modelBlock, this.mapping, modelOutput); - } - - public ResourceLocation createWithSuffix(Block modelBlock, String modelLocationSuffix, BiConsumer> modelOutput) { - return this.template.createWithSuffix(modelBlock, modelLocationSuffix, this.mapping, modelOutput); - } - - private static TexturedModel.Provider createDefault(Function blockToTextureMapping, ModelTemplate modelTemplate) { - return block -> new TexturedModel((TextureMapping)blockToTextureMapping.apply(block), modelTemplate); - } - - public static TexturedModel createAllSame(ResourceLocation allTextureLocation) { - return new TexturedModel(TextureMapping.cube(allTextureLocation), ModelTemplates.CUBE_ALL); - } - - @FunctionalInterface - public interface Provider { - TexturedModel get(Block block); - - default ResourceLocation create(Block modelBlock, BiConsumer> modelOutput) { - return this.get(modelBlock).create(modelBlock, modelOutput); - } - - default ResourceLocation createWithSuffix(Block modelBlock, String modelLocationSuffix, BiConsumer> modelOutput) { - return this.get(modelBlock).createWithSuffix(modelBlock, modelLocationSuffix, modelOutput); - } - - default TexturedModel.Provider updateTexture(Consumer textureMappingConsumer) { - return block -> this.get(block).updateTextures(textureMappingConsumer); - } - } -} diff --git a/net/minecraft/data/models/model/package-info.java b/net/minecraft/data/models/model/package-info.java deleted file mode 100644 index 42040b21..00000000 --- a/net/minecraft/data/models/model/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -@FieldsAreNonnullByDefault -package net.minecraft.data.models.model; - -import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/data/models/package-info.java b/net/minecraft/data/models/package-info.java deleted file mode 100644 index 86eaf01f..00000000 --- a/net/minecraft/data/models/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -@FieldsAreNonnullByDefault -package net.minecraft.data.models; - -import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/net/minecraft/data/recipes/RecipeProvider.java b/net/minecraft/data/recipes/RecipeProvider.java index 33a34d24..e37e840f 100644 --- a/net/minecraft/data/recipes/RecipeProvider.java +++ b/net/minecraft/data/recipes/RecipeProvider.java @@ -16,9 +16,10 @@ import net.minecraft.advancements.Criterion; import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.EnterBlockTrigger.TriggerInstance; import net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.Slots; +import net.minecraft.advancements.critereon.ItemPredicate.Builder; import net.minecraft.advancements.critereon.MinMaxBounds.Ints; import net.minecraft.core.HolderGetter; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; @@ -29,7 +30,6 @@ import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; import net.minecraft.data.BlockFamily.Variant; -import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.data.recipes.RecipeProvider.Runner.1; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -53,7 +53,7 @@ import net.minecraft.world.level.block.SuspiciousEffectHolder; import org.jetbrains.annotations.Nullable; public abstract class RecipeProvider { - protected final HolderLookup.Provider registries; + protected final Provider registries; private final HolderGetter items; protected final RecipeOutput output; private static final Map SHAPE_BUILDERS = ImmutableMap.builder() @@ -83,7 +83,7 @@ public abstract class RecipeProvider { .put(Variant.WALL, (recipeProvider, itemLike, itemLike2) -> recipeProvider.wallBuilder(RecipeCategory.DECORATIONS, itemLike, Ingredient.of(itemLike2))) .build(); - protected RecipeProvider(HolderLookup.Provider registries, RecipeOutput output) { + protected RecipeProvider(Provider registries, RecipeOutput output) { this.registries = registries; this.items = registries.lookupOrThrow(Registries.ITEM); this.output = output; @@ -621,19 +621,19 @@ public abstract class RecipeProvider { } private Criterion has(Ints count, ItemLike item) { - return inventoryTrigger(ItemPredicate.Builder.item().of(this.items, item).withCount(count)); + return inventoryTrigger(Builder.item().of(this.items, item).withCount(count)); } protected Criterion has(ItemLike itemLike) { - return inventoryTrigger(ItemPredicate.Builder.item().of(this.items, itemLike)); + return inventoryTrigger(Builder.item().of(this.items, itemLike)); } protected Criterion has(TagKey tag) { - return inventoryTrigger(ItemPredicate.Builder.item().of(this.items, tag)); + return inventoryTrigger(Builder.item().of(this.items, tag)); } - private static Criterion inventoryTrigger(ItemPredicate.Builder... items) { - return inventoryTrigger((ItemPredicate[])Arrays.stream(items).map(ItemPredicate.Builder::build).toArray(ItemPredicate[]::new)); + private static Criterion inventoryTrigger(Builder... items) { + return inventoryTrigger((ItemPredicate[])Arrays.stream(items).map(Builder::build).toArray(ItemPredicate[]::new)); } private static Criterion inventoryTrigger(ItemPredicate... predicates) { @@ -696,9 +696,9 @@ public abstract class RecipeProvider { protected abstract static class Runner implements DataProvider { private final PackOutput packOutput; - private final CompletableFuture registries; + private final CompletableFuture registries; - protected Runner(PackOutput packOutput, CompletableFuture registries) { + protected Runner(PackOutput packOutput, CompletableFuture registries) { this.packOutput = packOutput; this.registries = registries; } @@ -706,8 +706,8 @@ public abstract class RecipeProvider { @Override public final CompletableFuture run(CachedOutput output) { return this.registries.thenCompose(provider -> { - PathProvider pathProvider = this.packOutput.createRegistryElementsPathProvider(Registries.RECIPE); - PathProvider pathProvider2 = this.packOutput.createRegistryElementsPathProvider(Registries.ADVANCEMENT); + PackOutput.PathProvider pathProvider = this.packOutput.createRegistryElementsPathProvider(Registries.RECIPE); + PackOutput.PathProvider pathProvider2 = this.packOutput.createRegistryElementsPathProvider(Registries.ADVANCEMENT); Set>> set = Sets.>>newHashSet(); List> list = new ArrayList(); RecipeOutput recipeOutput = new 1(this, set, list, output, provider, pathProvider, pathProvider2); @@ -716,6 +716,6 @@ public abstract class RecipeProvider { }); } - protected abstract RecipeProvider createRecipeProvider(HolderLookup.Provider registries, RecipeOutput output); + protected abstract RecipeProvider createRecipeProvider(Provider registries, RecipeOutput output); } } diff --git a/net/minecraft/data/recipes/ShapedRecipeBuilder.java b/net/minecraft/data/recipes/ShapedRecipeBuilder.java index dcb17750..c0124165 100644 --- a/net/minecraft/data/recipes/ShapedRecipeBuilder.java +++ b/net/minecraft/data/recipes/ShapedRecipeBuilder.java @@ -6,7 +6,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.Advancement.Builder; import net.minecraft.advancements.AdvancementRequirements.Strategy; @@ -90,13 +89,13 @@ public class ShapedRecipeBuilder implements RecipeBuilder { } } - public ShapedRecipeBuilder unlockedBy(String name, Criterion criterion) { - this.criteria.put(name, criterion); + public ShapedRecipeBuilder unlockedBy(String string, Criterion criterion) { + this.criteria.put(string, criterion); return this; } - public ShapedRecipeBuilder group(@Nullable String groupName) { - this.group = groupName; + public ShapedRecipeBuilder group(@Nullable String string) { + this.group = string; return this; } @@ -115,7 +114,7 @@ public class ShapedRecipeBuilder implements RecipeBuilder { ShapedRecipePattern shapedRecipePattern = this.ensureValid(resourceKey); Builder builder = output.advancement() .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceKey)) - .rewards(AdvancementRewards.Builder.recipe(resourceKey)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(resourceKey)) .requirements(Strategy.OR); this.criteria.forEach(builder::addCriterion); ShapedRecipe shapedRecipe = new ShapedRecipe( diff --git a/net/minecraft/data/recipes/ShapelessRecipeBuilder.java b/net/minecraft/data/recipes/ShapelessRecipeBuilder.java index c3e39d30..3f99616c 100644 --- a/net/minecraft/data/recipes/ShapelessRecipeBuilder.java +++ b/net/minecraft/data/recipes/ShapelessRecipeBuilder.java @@ -5,7 +5,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.Advancement.Builder; import net.minecraft.advancements.AdvancementRequirements.Strategy; @@ -91,13 +90,13 @@ public class ShapelessRecipeBuilder implements RecipeBuilder { return this; } - public ShapelessRecipeBuilder unlockedBy(String name, Criterion criterion) { - this.criteria.put(name, criterion); + public ShapelessRecipeBuilder unlockedBy(String string, Criterion criterion) { + this.criteria.put(string, criterion); return this; } - public ShapelessRecipeBuilder group(@Nullable String groupName) { - this.group = groupName; + public ShapelessRecipeBuilder group(@Nullable String string) { + this.group = string; return this; } @@ -111,7 +110,7 @@ public class ShapelessRecipeBuilder implements RecipeBuilder { this.ensureValid(resourceKey); Builder builder = output.advancement() .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceKey)) - .rewards(AdvancementRewards.Builder.recipe(resourceKey)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(resourceKey)) .requirements(Strategy.OR); this.criteria.forEach(builder::addCriterion); ShapelessRecipe shapelessRecipe = new ShapelessRecipe( diff --git a/net/minecraft/data/recipes/SimpleCookingRecipeBuilder.java b/net/minecraft/data/recipes/SimpleCookingRecipeBuilder.java index 97125be6..167139b6 100644 --- a/net/minecraft/data/recipes/SimpleCookingRecipeBuilder.java +++ b/net/minecraft/data/recipes/SimpleCookingRecipeBuilder.java @@ -3,7 +3,6 @@ package net.minecraft.data.recipes; import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.Advancement.Builder; import net.minecraft.advancements.AdvancementRequirements.Strategy; @@ -83,13 +82,13 @@ public class SimpleCookingRecipeBuilder implements RecipeBuilder { return new SimpleCookingRecipeBuilder(category, CookingBookCategory.FOOD, result, ingredient, experience, cookingTime, SmokingRecipe::new); } - public SimpleCookingRecipeBuilder unlockedBy(String name, Criterion criterion) { - this.criteria.put(name, criterion); + public SimpleCookingRecipeBuilder unlockedBy(String string, Criterion criterion) { + this.criteria.put(string, criterion); return this; } - public SimpleCookingRecipeBuilder group(@Nullable String groupName) { - this.group = groupName; + public SimpleCookingRecipeBuilder group(@Nullable String string) { + this.group = string; return this; } @@ -103,7 +102,7 @@ public class SimpleCookingRecipeBuilder implements RecipeBuilder { this.ensureValid(resourceKey); Builder builder = output.advancement() .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceKey)) - .rewards(AdvancementRewards.Builder.recipe(resourceKey)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(resourceKey)) .requirements(Strategy.OR); this.criteria.forEach(builder::addCriterion); AbstractCookingRecipe abstractCookingRecipe = this.factory diff --git a/net/minecraft/data/recipes/SingleItemRecipeBuilder.java b/net/minecraft/data/recipes/SingleItemRecipeBuilder.java index 564e464e..882403a4 100644 --- a/net/minecraft/data/recipes/SingleItemRecipeBuilder.java +++ b/net/minecraft/data/recipes/SingleItemRecipeBuilder.java @@ -3,7 +3,6 @@ package net.minecraft.data.recipes; import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.Advancement.Builder; import net.minecraft.advancements.AdvancementRequirements.Strategy; @@ -44,13 +43,13 @@ public class SingleItemRecipeBuilder implements RecipeBuilder { return new SingleItemRecipeBuilder(category, StonecutterRecipe::new, ingredient, result, count); } - public SingleItemRecipeBuilder unlockedBy(String name, Criterion criterion) { - this.criteria.put(name, criterion); + public SingleItemRecipeBuilder unlockedBy(String string, Criterion criterion) { + this.criteria.put(string, criterion); return this; } - public SingleItemRecipeBuilder group(@Nullable String groupName) { - this.group = groupName; + public SingleItemRecipeBuilder group(@Nullable String string) { + this.group = string; return this; } @@ -64,7 +63,7 @@ public class SingleItemRecipeBuilder implements RecipeBuilder { this.ensureValid(resourceKey); Builder builder = output.advancement() .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceKey)) - .rewards(AdvancementRewards.Builder.recipe(resourceKey)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(resourceKey)) .requirements(Strategy.OR); this.criteria.forEach(builder::addCriterion); SingleItemRecipe singleItemRecipe = this.factory diff --git a/net/minecraft/data/recipes/TransmuteRecipeBuilder.java b/net/minecraft/data/recipes/TransmuteRecipeBuilder.java index 095d4182..41aef413 100644 --- a/net/minecraft/data/recipes/TransmuteRecipeBuilder.java +++ b/net/minecraft/data/recipes/TransmuteRecipeBuilder.java @@ -3,7 +3,6 @@ package net.minecraft.data.recipes; import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.Advancement.Builder; import net.minecraft.advancements.AdvancementRequirements.Strategy; @@ -36,13 +35,13 @@ public class TransmuteRecipeBuilder implements RecipeBuilder { return new TransmuteRecipeBuilder(category, result.builtInRegistryHolder(), input, material); } - public TransmuteRecipeBuilder unlockedBy(String name, Criterion criterion) { - this.criteria.put(name, criterion); + public TransmuteRecipeBuilder unlockedBy(String string, Criterion criterion) { + this.criteria.put(string, criterion); return this; } - public TransmuteRecipeBuilder group(@Nullable String groupName) { - this.group = groupName; + public TransmuteRecipeBuilder group(@Nullable String string) { + this.group = string; return this; } @@ -56,7 +55,7 @@ public class TransmuteRecipeBuilder implements RecipeBuilder { this.ensureValid(resourceKey); Builder builder = output.advancement() .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceKey)) - .rewards(AdvancementRewards.Builder.recipe(resourceKey)) + .rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(resourceKey)) .requirements(Strategy.OR); this.criteria.forEach(builder::addCriterion); TransmuteRecipe transmuteRecipe = new TransmuteRecipe( diff --git a/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java b/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java index 29db73cc..6ad5bc85 100644 --- a/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java +++ b/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java @@ -6,11 +6,10 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.advancements.critereon.PlayerTrigger; import net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance; import net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.Slots; import net.minecraft.advancements.critereon.MinMaxBounds.Ints; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; @@ -65,7 +64,7 @@ public class VanillaRecipeProvider extends RecipeProvider { private static final ImmutableList REDSTONE_SMELTABLES = ImmutableList.of(Items.REDSTONE_ORE, Items.DEEPSLATE_REDSTONE_ORE); private static final ImmutableList EMERALD_SMELTABLES = ImmutableList.of(Items.EMERALD_ORE, Items.DEEPSLATE_EMERALD_ORE); - VanillaRecipeProvider(HolderLookup.Provider provider, RecipeOutput recipeOutput) { + VanillaRecipeProvider(Provider provider, RecipeOutput recipeOutput) { super(provider, recipeOutput); } @@ -77,6 +76,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.planksFromLogs(Blocks.BIRCH_PLANKS, ItemTags.BIRCH_LOGS, 4); this.planksFromLogs(Blocks.CRIMSON_PLANKS, ItemTags.CRIMSON_STEMS, 4); this.planksFromLog(Blocks.DARK_OAK_PLANKS, ItemTags.DARK_OAK_LOGS, 4); + this.planksFromLog(Blocks.PALE_OAK_PLANKS, ItemTags.PALE_OAK_LOGS, 4); this.planksFromLogs(Blocks.JUNGLE_PLANKS, ItemTags.JUNGLE_LOGS, 4); this.planksFromLogs(Blocks.OAK_PLANKS, ItemTags.OAK_LOGS, 4); this.planksFromLogs(Blocks.SPRUCE_PLANKS, ItemTags.SPRUCE_LOGS, 4); @@ -85,6 +85,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.woodFromLogs(Blocks.ACACIA_WOOD, Blocks.ACACIA_LOG); this.woodFromLogs(Blocks.BIRCH_WOOD, Blocks.BIRCH_LOG); this.woodFromLogs(Blocks.DARK_OAK_WOOD, Blocks.DARK_OAK_LOG); + this.woodFromLogs(Blocks.PALE_OAK_WOOD, Blocks.PALE_OAK_LOG); this.woodFromLogs(Blocks.JUNGLE_WOOD, Blocks.JUNGLE_LOG); this.woodFromLogs(Blocks.OAK_WOOD, Blocks.OAK_LOG); this.woodFromLogs(Blocks.SPRUCE_WOOD, Blocks.SPRUCE_LOG); @@ -94,6 +95,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.woodFromLogs(Blocks.STRIPPED_ACACIA_WOOD, Blocks.STRIPPED_ACACIA_LOG); this.woodFromLogs(Blocks.STRIPPED_BIRCH_WOOD, Blocks.STRIPPED_BIRCH_LOG); this.woodFromLogs(Blocks.STRIPPED_DARK_OAK_WOOD, Blocks.STRIPPED_DARK_OAK_LOG); + this.woodFromLogs(Blocks.STRIPPED_PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_LOG); this.woodFromLogs(Blocks.STRIPPED_JUNGLE_WOOD, Blocks.STRIPPED_JUNGLE_LOG); this.woodFromLogs(Blocks.STRIPPED_OAK_WOOD, Blocks.STRIPPED_OAK_LOG); this.woodFromLogs(Blocks.STRIPPED_SPRUCE_WOOD, Blocks.STRIPPED_SPRUCE_LOG); @@ -103,6 +105,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.woodenBoat(Items.ACACIA_BOAT, Blocks.ACACIA_PLANKS); this.woodenBoat(Items.BIRCH_BOAT, Blocks.BIRCH_PLANKS); this.woodenBoat(Items.DARK_OAK_BOAT, Blocks.DARK_OAK_PLANKS); + this.woodenBoat(Items.PALE_OAK_BOAT, Blocks.PALE_OAK_PLANKS); this.woodenBoat(Items.JUNGLE_BOAT, Blocks.JUNGLE_PLANKS); this.woodenBoat(Items.OAK_BOAT, Blocks.OAK_PLANKS); this.woodenBoat(Items.SPRUCE_BOAT, Blocks.SPRUCE_PLANKS); @@ -231,6 +234,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.bedFromPlanksAndWool(Items.YELLOW_BED, Blocks.YELLOW_WOOL); this.banner(Items.YELLOW_BANNER, Blocks.YELLOW_WOOL); this.carpet(Blocks.MOSS_CARPET, Blocks.MOSS_BLOCK); + this.carpet(Blocks.PALE_MOSS_CARPET, Blocks.PALE_MOSS_BLOCK); this.stainedGlassFromGlassAndDye(Blocks.BLACK_STAINED_GLASS, Items.BLACK_DYE); this.stainedGlassPaneFromStainedGlass(Blocks.BLACK_STAINED_GLASS_PANE, Blocks.BLACK_STAINED_GLASS); this.stainedGlassPaneFromGlassPaneAndDye(Blocks.BLACK_STAINED_GLASS_PANE, Items.BLACK_DYE); @@ -563,6 +567,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.chestBoat(Items.ACACIA_CHEST_BOAT, Items.ACACIA_BOAT); this.chestBoat(Items.BIRCH_CHEST_BOAT, Items.BIRCH_BOAT); this.chestBoat(Items.DARK_OAK_CHEST_BOAT, Items.DARK_OAK_BOAT); + this.chestBoat(Items.PALE_OAK_CHEST_BOAT, Items.PALE_OAK_BOAT); this.chestBoat(Items.JUNGLE_CHEST_BOAT, Items.JUNGLE_BOAT); this.chestBoat(Items.OAK_CHEST_BOAT, Items.OAK_BOAT); this.chestBoat(Items.SPRUCE_CHEST_BOAT, Items.SPRUCE_BOAT); @@ -619,7 +624,7 @@ public class VanillaRecipeProvider extends RecipeProvider { .define('#', ItemTags.PLANKS) .pattern("##") .pattern("##") - .unlockedBy("unlock_right_away", PlayerTrigger.TriggerInstance.tick()) + .unlockedBy("unlock_right_away", net.minecraft.advancements.critereon.PlayerTrigger.TriggerInstance.tick()) .showNotification(false) .save(this.output); this.shaped(RecipeCategory.COMBAT, Items.CROSSBOW) @@ -1337,6 +1342,16 @@ public class VanillaRecipeProvider extends RecipeProvider { } }); this.twoByTwoPacker(RecipeCategory.BUILDING_BLOCKS, Blocks.NETHER_BRICKS, Items.NETHER_BRICK); + this.twoByTwoPacker(RecipeCategory.BUILDING_BLOCKS, Blocks.RESIN_BRICKS, Items.RESIN_BRICK); + this.nineBlockStorageRecipes(RecipeCategory.MISC, Items.RESIN_CLUMP, RecipeCategory.BUILDING_BLOCKS, Items.RESIN_BLOCK); + this.shaped(RecipeCategory.MISC, Blocks.CREAKING_HEART) + .define('R', Items.RESIN_BLOCK) + .define('L', Blocks.PALE_OAK_LOG) + .pattern(" L ") + .pattern(" R ") + .pattern(" L ") + .unlockedBy("has_resin_block", this.has(Items.RESIN_BLOCK)) + .save(this.output); this.threeByThreePacker(RecipeCategory.BUILDING_BLOCKS, Blocks.NETHER_WART_BLOCK, Items.NETHER_WART); this.shaped(RecipeCategory.REDSTONE, Blocks.NOTE_BLOCK) .define('#', ItemTags.PLANKS) @@ -1510,6 +1525,8 @@ public class VanillaRecipeProvider extends RecipeProvider { this.oneToOneConversionRecipe(Items.RED_DYE, Items.BEETROOT, "red_dye"); this.oneToOneConversionRecipe(Items.RED_DYE, Blocks.POPPY, "red_dye"); this.oneToOneConversionRecipe(Items.RED_DYE, Blocks.ROSE_BUSH, "red_dye", 2); + this.oneToOneConversionRecipe(Items.ORANGE_DYE, Blocks.OPEN_EYEBLOSSOM, "orange_dye"); + this.oneToOneConversionRecipe(Items.GRAY_DYE, Blocks.CLOSED_EYEBLOSSOM, "gray_dye"); this.shapeless(RecipeCategory.MISC, Items.RED_DYE) .requires(Blocks.RED_TULIP) .group("red_dye") @@ -2147,6 +2164,9 @@ public class VanillaRecipeProvider extends RecipeProvider { SimpleCookingRecipeBuilder.smelting(Ingredient.of(Blocks.NETHERRACK), RecipeCategory.MISC, Items.NETHER_BRICK, 0.1F, 200) .unlockedBy("has_netherrack", this.has(Blocks.NETHERRACK)) .save(this.output); + SimpleCookingRecipeBuilder.smelting(Ingredient.of(Items.RESIN_CLUMP), RecipeCategory.MISC, Items.RESIN_BRICK, 0.1F, 200) + .unlockedBy("has_resin_clump", this.has(Blocks.RESIN_CLUMP)) + .save(this.output); SimpleCookingRecipeBuilder.smelting(Ingredient.of(Blocks.NETHER_QUARTZ_ORE), RecipeCategory.MISC, Items.QUARTZ, 0.2F, 200) .unlockedBy("has_nether_quartz_ore", this.has(Blocks.NETHER_QUARTZ_ORE)) .save(this.output); @@ -2367,6 +2387,10 @@ public class VanillaRecipeProvider extends RecipeProvider { this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.NETHER_BRICK_STAIRS, Blocks.NETHER_BRICKS); this.stonecutterResultFromBase(RecipeCategory.DECORATIONS, Blocks.NETHER_BRICK_WALL, Blocks.NETHER_BRICKS); this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.CHISELED_NETHER_BRICKS, Blocks.NETHER_BRICKS); + this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RESIN_BRICK_SLAB, Blocks.RESIN_BRICKS, 2); + this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RESIN_BRICK_STAIRS, Blocks.RESIN_BRICKS); + this.stonecutterResultFromBase(RecipeCategory.DECORATIONS, Blocks.RESIN_BRICK_WALL, Blocks.RESIN_BRICKS); + this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.CHISELED_RESIN_BRICKS, Blocks.RESIN_BRICKS); this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RED_NETHER_BRICK_SLAB, Blocks.RED_NETHER_BRICKS, 2); this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RED_NETHER_BRICK_STAIRS, Blocks.RED_NETHER_BRICKS); this.stonecutterResultFromBase(RecipeCategory.DECORATIONS, Blocks.RED_NETHER_BRICK_WALL, Blocks.RED_NETHER_BRICKS); @@ -2582,6 +2606,7 @@ public class VanillaRecipeProvider extends RecipeProvider { this.hangingSign(Items.ACACIA_HANGING_SIGN, Blocks.STRIPPED_ACACIA_LOG); this.hangingSign(Items.CHERRY_HANGING_SIGN, Blocks.STRIPPED_CHERRY_LOG); this.hangingSign(Items.DARK_OAK_HANGING_SIGN, Blocks.STRIPPED_DARK_OAK_LOG); + this.hangingSign(Items.PALE_OAK_HANGING_SIGN, Blocks.STRIPPED_PALE_OAK_LOG); this.hangingSign(Items.MANGROVE_HANGING_SIGN, Blocks.STRIPPED_MANGROVE_LOG); this.hangingSign(Items.BAMBOO_HANGING_SIGN, Items.STRIPPED_BAMBOO_BLOCK); this.hangingSign(Items.CRIMSON_HANGING_SIGN, Blocks.STRIPPED_CRIMSON_STEM); @@ -2776,12 +2801,12 @@ public class VanillaRecipeProvider extends RecipeProvider { } public static class Runner extends RecipeProvider.Runner { - public Runner(PackOutput packOutput, CompletableFuture completableFuture) { + public Runner(PackOutput packOutput, CompletableFuture completableFuture) { super(packOutput, completableFuture); } @Override - protected RecipeProvider createRecipeProvider(HolderLookup.Provider registries, RecipeOutput output) { + protected RecipeProvider createRecipeProvider(Provider registries, RecipeOutput output) { return new VanillaRecipeProvider(registries, output); } diff --git a/net/minecraft/data/recipes/packs/WinterDropRecipeProvider.java b/net/minecraft/data/recipes/packs/WinterDropRecipeProvider.java deleted file mode 100644 index c8501b53..00000000 --- a/net/minecraft/data/recipes/packs/WinterDropRecipeProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.minecraft.data.recipes.packs; - -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.data.recipes.RecipeOutput; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.flag.FeatureFlagSet; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.Blocks; - -public class WinterDropRecipeProvider extends RecipeProvider { - public WinterDropRecipeProvider(HolderLookup.Provider provider, RecipeOutput recipeOutput) { - super(provider, recipeOutput); - } - - @Override - protected void buildRecipes() { - this.generateForEnabledBlockFamilies(FeatureFlagSet.of(FeatureFlags.WINTER_DROP)); - this.hangingSign(Items.PALE_OAK_HANGING_SIGN, Blocks.STRIPPED_PALE_OAK_LOG); - this.planksFromLog(Blocks.PALE_OAK_PLANKS, ItemTags.PALE_OAK_LOGS, 4); - this.woodFromLogs(Blocks.PALE_OAK_WOOD, Blocks.PALE_OAK_LOG); - this.woodFromLogs(Blocks.STRIPPED_PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_LOG); - this.woodenBoat(Items.PALE_OAK_BOAT, Blocks.PALE_OAK_PLANKS); - this.chestBoat(Items.PALE_OAK_CHEST_BOAT, Items.PALE_OAK_BOAT); - this.carpet(Blocks.PALE_MOSS_CARPET, Blocks.PALE_MOSS_BLOCK); - } - - public static class Runner extends RecipeProvider.Runner { - public Runner(PackOutput packOutput, CompletableFuture completableFuture) { - super(packOutput, completableFuture); - } - - @Override - protected RecipeProvider createRecipeProvider(HolderLookup.Provider registries, RecipeOutput output) { - return new WinterDropRecipeProvider(registries, output); - } - - @Override - public String getName() { - return "Winter Drop Recipes"; - } - } -} diff --git a/net/minecraft/data/registries/RegistriesDatapackGenerator.java b/net/minecraft/data/registries/RegistriesDatapackGenerator.java index 55065a56..97f1eeeb 100644 --- a/net/minecraft/data/registries/RegistriesDatapackGenerator.java +++ b/net/minecraft/data/registries/RegistriesDatapackGenerator.java @@ -7,20 +7,19 @@ import com.mojang.serialization.JsonOps; import java.nio.file.Path; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.resources.RegistryDataLoader; import net.minecraft.resources.ResourceKey; public class RegistriesDatapackGenerator implements DataProvider { private final PackOutput output; - private final CompletableFuture registries; + private final CompletableFuture registries; - public RegistriesDatapackGenerator(PackOutput output, CompletableFuture registries) { + public RegistriesDatapackGenerator(PackOutput output, CompletableFuture registries) { this.registries = registries; this.output = output; } @@ -42,13 +41,13 @@ public class RegistriesDatapackGenerator implements DataProvider { } private Optional> dumpRegistryCap( - CachedOutput output, HolderLookup.Provider registries, DynamicOps ops, RegistryDataLoader.RegistryData registryData + CachedOutput output, Provider registries, DynamicOps ops, RegistryDataLoader.RegistryData registryData ) { ResourceKey> resourceKey = registryData.key(); return registries.lookup(resourceKey) .map( registryLookup -> { - PathProvider pathProvider = this.output.createRegistryElementsPathProvider(resourceKey); + PackOutput.PathProvider pathProvider = this.output.createRegistryElementsPathProvider(resourceKey); return CompletableFuture.allOf( (CompletableFuture[])registryLookup.listElements() .map(reference -> dumpValue(pathProvider.json(reference.key().location()), output, ops, registryData.elementCodec(), (T)reference.value())) diff --git a/net/minecraft/data/registries/WinterDropRegistries.java b/net/minecraft/data/registries/WinterDropRegistries.java deleted file mode 100644 index b5cf48ad..00000000 --- a/net/minecraft/data/registries/WinterDropRegistries.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.data.registries; - -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.RegistrySetBuilder; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.WinterDropBiomes; -import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterLists; - -public class WinterDropRegistries { - private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() - .add(Registries.BIOME, WinterDropBiomes::bootstrap) - .add(Registries.MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST, MultiNoiseBiomeSourceParameterLists::winterDrop); - - public static CompletableFuture createLookup(CompletableFuture registries) { - return RegistryPatchGenerator.createLookup(registries, BUILDER) - .thenApply( - patchedRegistries -> { - VanillaRegistries.validateThatAllBiomeFeaturesHaveBiomeFilter( - patchedRegistries.full().lookupOrThrow(Registries.PLACED_FEATURE), patchedRegistries.full().lookupOrThrow(Registries.BIOME) - ); - return patchedRegistries; - } - ); - } -} diff --git a/net/minecraft/data/structures/StructureUpdater.java b/net/minecraft/data/structures/StructureUpdater.java index fa53239c..4bf007f3 100644 --- a/net/minecraft/data/structures/StructureUpdater.java +++ b/net/minecraft/data/structures/StructureUpdater.java @@ -22,9 +22,9 @@ public class StructureUpdater implements SnbtToNbt.Filter { public static CompoundTag update(String structureLocationPath, CompoundTag tag) { StructureTemplate structureTemplate = new StructureTemplate(); int i = NbtUtils.getDataVersion(tag, 500); - int j = 4053; - if (i < 4053) { - LOGGER.warn("SNBT Too old, do not forget to update: {} < {}: {}", i, 4053, structureLocationPath); + int j = 4173; + if (i < 4173) { + LOGGER.warn("SNBT Too old, do not forget to update: {} < {}: {}", i, 4173, structureLocationPath); } CompoundTag compoundTag = DataFixTypes.STRUCTURE.updateToCurrentVersion(DataFixers.getDataFixer(), tag, i); diff --git a/net/minecraft/data/tags/BiomeTagsProvider.java b/net/minecraft/data/tags/BiomeTagsProvider.java index 998298e3..2b1975b0 100644 --- a/net/minecraft/data/tags/BiomeTagsProvider.java +++ b/net/minecraft/data/tags/BiomeTagsProvider.java @@ -2,21 +2,21 @@ package net.minecraft.data.tags; import java.util.concurrent.CompletableFuture; import java.util.function.Predicate; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.tags.BiomeTags; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biomes; -import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList.Preset; public class BiomeTagsProvider extends TagsProvider { - public BiomeTagsProvider(PackOutput output, CompletableFuture provider) { + public BiomeTagsProvider(PackOutput output, CompletableFuture provider) { super(output, Registries.BIOME, provider); } @Override - protected void addTags(HolderLookup.Provider provider) { + protected void addTags(Provider provider) { this.tag(BiomeTags.IS_DEEP_OCEAN).add(Biomes.DEEP_FROZEN_OCEAN).add(Biomes.DEEP_COLD_OCEAN).add(Biomes.DEEP_OCEAN).add(Biomes.DEEP_LUKEWARM_OCEAN); this.tag(BiomeTags.IS_OCEAN) .addTag(BiomeTags.IS_DEEP_OCEAN) @@ -44,12 +44,13 @@ public class BiomeTagsProvider extends TagsProvider { .add(Biomes.BIRCH_FOREST) .add(Biomes.OLD_GROWTH_BIRCH_FOREST) .add(Biomes.DARK_FOREST) + .add(Biomes.PALE_GARDEN) .add(Biomes.GROVE); this.tag(BiomeTags.IS_SAVANNA).add(Biomes.SAVANNA).add(Biomes.SAVANNA_PLATEAU).add(Biomes.WINDSWEPT_SAVANNA); TagsProvider.TagAppender tagAppender = this.tag(BiomeTags.IS_NETHER); - MultiNoiseBiomeSourceParameterList.Preset.NETHER.usedBiomes().forEach(tagAppender::add); + Preset.NETHER.usedBiomes().forEach(tagAppender::add); TagsProvider.TagAppender tagAppender2 = this.tag(BiomeTags.IS_OVERWORLD); - MultiNoiseBiomeSourceParameterList.Preset.OVERWORLD.usedBiomes().forEach(tagAppender2::add); + Preset.OVERWORLD.usedBiomes().forEach(tagAppender2::add); this.tag(BiomeTags.IS_END).add(Biomes.THE_END).add(Biomes.END_HIGHLANDS).add(Biomes.END_MIDLANDS).add(Biomes.SMALL_END_ISLANDS).add(Biomes.END_BARRENS); this.tag(BiomeTags.HAS_BURIED_TREASURE).addTag(BiomeTags.IS_BEACH); this.tag(BiomeTags.HAS_DESERT_PYRAMID).add(Biomes.DESERT); @@ -148,6 +149,7 @@ public class BiomeTagsProvider extends TagsProvider { .add(Biomes.FLOWER_FOREST) .add(Biomes.BIRCH_FOREST) .add(Biomes.DARK_FOREST) + .add(Biomes.PALE_GARDEN) .add(Biomes.OLD_GROWTH_BIRCH_FOREST) .add(Biomes.OLD_GROWTH_PINE_TAIGA) .add(Biomes.OLD_GROWTH_SPRUCE_TAIGA) @@ -176,7 +178,7 @@ public class BiomeTagsProvider extends TagsProvider { .add(Biomes.LUSH_CAVES); this.tag(BiomeTags.HAS_STRONGHOLD).addTag(BiomeTags.IS_OVERWORLD); TagsProvider.TagAppender tagAppender3 = this.tag(BiomeTags.HAS_TRIAL_CHAMBERS); - MultiNoiseBiomeSourceParameterList.Preset.OVERWORLD.usedBiomes().filter(Predicate.not(Biomes.DEEP_DARK::equals)).forEach(tagAppender3::add); + Preset.OVERWORLD.usedBiomes().filter(Predicate.not(Biomes.DEEP_DARK::equals)).forEach(tagAppender3::add); this.tag(BiomeTags.HAS_NETHER_FORTRESS).addTag(BiomeTags.IS_NETHER); this.tag(BiomeTags.HAS_NETHER_FOSSIL).add(Biomes.SOUL_SAND_VALLEY); this.tag(BiomeTags.HAS_BASTION_REMNANT).add(Biomes.CRIMSON_FOREST).add(Biomes.NETHER_WASTES).add(Biomes.SOUL_SAND_VALLEY).add(Biomes.WARPED_FOREST); diff --git a/net/minecraft/data/tags/EntityTypeTagsProvider.java b/net/minecraft/data/tags/EntityTypeTagsProvider.java index 82a4f726..f9fba44b 100644 --- a/net/minecraft/data/tags/EntityTypeTagsProvider.java +++ b/net/minecraft/data/tags/EntityTypeTagsProvider.java @@ -1,19 +1,19 @@ package net.minecraft.data.tags; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.tags.EntityTypeTags; import net.minecraft.world.entity.EntityType; public class EntityTypeTagsProvider extends IntrinsicHolderTagsProvider> { - public EntityTypeTagsProvider(PackOutput output, CompletableFuture provider) { + public EntityTypeTagsProvider(PackOutput output, CompletableFuture provider) { super(output, Registries.ENTITY_TYPE, provider, entityType -> entityType.builtInRegistryHolder().key()); } @Override - protected void addTags(HolderLookup.Provider provider) { + protected void addTags(Provider provider) { this.tag(EntityTypeTags.SKELETONS).add(EntityType.SKELETON, EntityType.STRAY, EntityType.WITHER_SKELETON, EntityType.SKELETON_HORSE, EntityType.BOGGED); this.tag(EntityTypeTags.ZOMBIES) .add( @@ -162,6 +162,7 @@ public class EntityTypeTagsProvider extends IntrinsicHolderTagsProvider { - public FluidTagsProvider(PackOutput output, CompletableFuture provider) { + public FluidTagsProvider(PackOutput output, CompletableFuture provider) { super(output, Registries.FLUID, provider, fluid -> fluid.builtInRegistryHolder().key()); } @Override - protected void addTags(HolderLookup.Provider provider) { + protected void addTags(Provider provider) { this.tag(FluidTags.WATER).add(Fluids.WATER, Fluids.FLOWING_WATER); this.tag(FluidTags.LAVA).add(Fluids.LAVA, Fluids.FLOWING_LAVA); } diff --git a/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java b/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java index 92e4ad05..a08f4127 100644 --- a/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java +++ b/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java @@ -3,8 +3,8 @@ package net.minecraft.data.tags; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Stream; -import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagBuilder; @@ -14,10 +14,7 @@ public abstract class IntrinsicHolderTagsProvider extends TagsProvider { private final Function> keyExtractor; public IntrinsicHolderTagsProvider( - PackOutput output, - ResourceKey> registryKey, - CompletableFuture lookupProvider, - Function> keyExtractor + PackOutput output, ResourceKey> registryKey, CompletableFuture lookupProvider, Function> keyExtractor ) { super(output, registryKey, lookupProvider); this.keyExtractor = keyExtractor; @@ -26,7 +23,7 @@ public abstract class IntrinsicHolderTagsProvider extends TagsProvider { public IntrinsicHolderTagsProvider( PackOutput output, ResourceKey> registryKey, - CompletableFuture lookupProvider, + CompletableFuture lookupProvider, CompletableFuture> parentProvider, Function> keyExtractor ) { @@ -34,8 +31,8 @@ public abstract class IntrinsicHolderTagsProvider extends TagsProvider { this.keyExtractor = keyExtractor; } - protected IntrinsicHolderTagsProvider.IntrinsicTagAppender tag(TagKey tag) { - TagBuilder tagBuilder = this.getOrCreateRawBuilder(tag); + protected IntrinsicHolderTagsProvider.IntrinsicTagAppender tag(TagKey tagKey) { + TagBuilder tagBuilder = this.getOrCreateRawBuilder(tagKey); return new IntrinsicHolderTagsProvider.IntrinsicTagAppender<>(tagBuilder, this.keyExtractor); } @@ -47,8 +44,8 @@ public abstract class IntrinsicHolderTagsProvider extends TagsProvider { this.keyExtractor = keyExtractor; } - public IntrinsicHolderTagsProvider.IntrinsicTagAppender addTag(TagKey tag) { - super.addTag(tag); + public IntrinsicHolderTagsProvider.IntrinsicTagAppender addTag(TagKey tagKey) { + super.addTag(tagKey); return this; } diff --git a/net/minecraft/data/tags/ItemTagsProvider.java b/net/minecraft/data/tags/ItemTagsProvider.java index 337126fd..3eb68025 100644 --- a/net/minecraft/data/tags/ItemTagsProvider.java +++ b/net/minecraft/data/tags/ItemTagsProvider.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.tags.TagBuilder; @@ -19,14 +19,14 @@ public abstract class ItemTagsProvider extends IntrinsicHolderTagsProvider private final CompletableFuture> blockTags; private final Map, TagKey> tagsToCopy = new HashMap(); - public ItemTagsProvider(PackOutput output, CompletableFuture lookupProvider, CompletableFuture> blockTags) { + public ItemTagsProvider(PackOutput output, CompletableFuture lookupProvider, CompletableFuture> blockTags) { super(output, Registries.ITEM, lookupProvider, item -> item.builtInRegistryHolder().key()); this.blockTags = blockTags; } public ItemTagsProvider( PackOutput output, - CompletableFuture lookupProvider, + CompletableFuture lookupProvider, CompletableFuture> parentProvider, CompletableFuture> blockTags ) { @@ -42,7 +42,7 @@ public abstract class ItemTagsProvider extends IntrinsicHolderTagsProvider } @Override - protected CompletableFuture createContentsProvider() { + protected CompletableFuture createContentsProvider() { return super.createContentsProvider().thenCombine(this.blockTags, (provider, tagLookup) -> { this.tagsToCopy.forEach((tagKey, tagKey2) -> { TagBuilder tagBuilder = this.getOrCreateRawBuilder(tagKey2); diff --git a/net/minecraft/data/tags/TagsProvider.java b/net/minecraft/data/tags/TagsProvider.java index e2fea8b5..e5254ec1 100644 --- a/net/minecraft/data/tags/TagsProvider.java +++ b/net/minecraft/data/tags/TagsProvider.java @@ -12,12 +12,12 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import net.minecraft.Util; -import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagBuilder; @@ -26,21 +26,21 @@ import net.minecraft.tags.TagFile; import net.minecraft.tags.TagKey; public abstract class TagsProvider implements DataProvider { - protected final PathProvider pathProvider; - private final CompletableFuture lookupProvider; + protected final PackOutput.PathProvider pathProvider; + private final CompletableFuture lookupProvider; private final CompletableFuture contentsDone = new CompletableFuture(); private final CompletableFuture> parentProvider; protected final ResourceKey> registryKey; private final Map builders = Maps.newLinkedHashMap(); - protected TagsProvider(PackOutput output, ResourceKey> registryKey, CompletableFuture lookupProvider) { + protected TagsProvider(PackOutput output, ResourceKey> registryKey, CompletableFuture lookupProvider) { this(output, registryKey, lookupProvider, CompletableFuture.completedFuture(TagsProvider.TagLookup.empty())); } protected TagsProvider( PackOutput output, ResourceKey> registryKey, - CompletableFuture lookupProvider, + CompletableFuture lookupProvider, CompletableFuture> parentProvider ) { this.pathProvider = output.createRegistryTagsPathProvider(registryKey); @@ -54,11 +54,11 @@ public abstract class TagsProvider implements DataProvider { return "Tags for " + this.registryKey.location(); } - protected abstract void addTags(HolderLookup.Provider provider); + protected abstract void addTags(Provider provider); @Override public CompletableFuture run(CachedOutput output) { - record CombinedData(HolderLookup.Provider contents, TagsProvider.TagLookup parent) { + record CombinedData(Provider contents, TagsProvider.TagLookup parent) { } return this.createContentsProvider() @@ -69,7 +69,7 @@ public abstract class TagsProvider implements DataProvider { .thenCombineAsync(this.parentProvider, (provider, tagLookup) -> new CombinedData(provider, tagLookup), Util.backgroundExecutor()) .thenCompose( arg -> { - HolderLookup.RegistryLookup registryLookup = arg.contents.lookupOrThrow(this.registryKey); + RegistryLookup registryLookup = arg.contents.lookupOrThrow(this.registryKey); Predicate predicate = resourceLocation -> registryLookup.get(ResourceKey.create(this.registryKey, resourceLocation)).isPresent(); Predicate predicate2 = resourceLocation -> this.builders.containsKey(resourceLocation) || arg.parent.contains(TagKey.create(this.registryKey, resourceLocation)); @@ -117,7 +117,7 @@ public abstract class TagsProvider implements DataProvider { return this.contentsDone.thenApply(void_ -> tagKey -> Optional.ofNullable((TagBuilder)this.builders.get(tagKey.location()))); } - protected CompletableFuture createContentsProvider() { + protected CompletableFuture createContentsProvider() { return this.lookupProvider.thenApply(provider -> { this.builders.clear(); this.addTags(provider); diff --git a/net/minecraft/data/tags/VanillaBlockTagsProvider.java b/net/minecraft/data/tags/VanillaBlockTagsProvider.java index 850d7184..f6b01be8 100644 --- a/net/minecraft/data/tags/VanillaBlockTagsProvider.java +++ b/net/minecraft/data/tags/VanillaBlockTagsProvider.java @@ -1,7 +1,7 @@ package net.minecraft.data.tags; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; @@ -9,12 +9,43 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider { - public VanillaBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider) { + public VanillaBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider) { super(output, Registries.BLOCK, lookupProvider, block -> block.builtInRegistryHolder().key()); } @Override - protected void addTags(HolderLookup.Provider provider) { + protected void addTags(Provider provider) { + Block[] blocks = new Block[]{ + Blocks.DANDELION, + Blocks.OPEN_EYEBLOSSOM, + Blocks.POPPY, + Blocks.BLUE_ORCHID, + Blocks.ALLIUM, + Blocks.AZURE_BLUET, + Blocks.RED_TULIP, + Blocks.ORANGE_TULIP, + Blocks.WHITE_TULIP, + Blocks.PINK_TULIP, + Blocks.OXEYE_DAISY, + Blocks.CORNFLOWER, + Blocks.LILY_OF_THE_VALLEY, + Blocks.WITHER_ROSE, + Blocks.TORCHFLOWER + }; + Block[] blocks2 = new Block[]{ + Blocks.SUNFLOWER, + Blocks.LILAC, + Blocks.PEONY, + Blocks.ROSE_BUSH, + Blocks.PITCHER_PLANT, + Blocks.FLOWERING_AZALEA_LEAVES, + Blocks.FLOWERING_AZALEA, + Blocks.MANGROVE_PROPAGULE, + Blocks.CHERRY_LEAVES, + Blocks.PINK_PETALS, + Blocks.CHORUS_FLOWER, + Blocks.SPORE_BLOSSOM + }; this.tag(BlockTags.WOOL) .add( Blocks.WHITE_WOOL, @@ -42,6 +73,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_PLANKS, Blocks.ACACIA_PLANKS, Blocks.DARK_OAK_PLANKS, + Blocks.PALE_OAK_PLANKS, Blocks.CRIMSON_PLANKS, Blocks.WARPED_PLANKS, Blocks.MANGROVE_PLANKS, @@ -57,6 +89,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_BUTTON, Blocks.ACACIA_BUTTON, Blocks.DARK_OAK_BUTTON, + Blocks.PALE_OAK_BUTTON, Blocks.CRIMSON_BUTTON, Blocks.WARPED_BUTTON, Blocks.MANGROVE_BUTTON, @@ -92,6 +125,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_DOOR, Blocks.ACACIA_DOOR, Blocks.DARK_OAK_DOOR, + Blocks.PALE_OAK_DOOR, Blocks.CRIMSON_DOOR, Blocks.WARPED_DOOR, Blocks.MANGROVE_DOOR, @@ -118,6 +152,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_STAIRS, Blocks.ACACIA_STAIRS, Blocks.DARK_OAK_STAIRS, + Blocks.PALE_OAK_STAIRS, Blocks.CRIMSON_STAIRS, Blocks.WARPED_STAIRS, Blocks.MANGROVE_STAIRS, @@ -132,6 +167,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_SLAB, Blocks.ACACIA_SLAB, Blocks.DARK_OAK_SLAB, + Blocks.PALE_OAK_SLAB, Blocks.CRIMSON_SLAB, Blocks.WARPED_SLAB, Blocks.MANGROVE_SLAB, @@ -143,6 +179,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.OAK_FENCE, Blocks.ACACIA_FENCE, Blocks.DARK_OAK_FENCE, + Blocks.PALE_OAK_FENCE, Blocks.SPRUCE_FENCE, Blocks.BIRCH_FENCE, Blocks.JUNGLE_FENCE, @@ -173,6 +210,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_SAPLING, Blocks.ACACIA_SAPLING, Blocks.DARK_OAK_SAPLING, + Blocks.PALE_OAK_SAPLING, Blocks.AZALEA, Blocks.FLOWERING_AZALEA, Blocks.MANGROVE_PROPAGULE, @@ -180,6 +218,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider ); this.tag(BlockTags.BAMBOO_BLOCKS).add(Blocks.BAMBOO_BLOCK, Blocks.STRIPPED_BAMBOO_BLOCK); this.tag(BlockTags.DARK_OAK_LOGS).add(Blocks.DARK_OAK_LOG, Blocks.DARK_OAK_WOOD, Blocks.STRIPPED_DARK_OAK_LOG, Blocks.STRIPPED_DARK_OAK_WOOD); + this.tag(BlockTags.PALE_OAK_LOGS).add(Blocks.PALE_OAK_LOG, Blocks.PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_LOG, Blocks.STRIPPED_PALE_OAK_WOOD); this.tag(BlockTags.OAK_LOGS).add(Blocks.OAK_LOG, Blocks.OAK_WOOD, Blocks.STRIPPED_OAK_LOG, Blocks.STRIPPED_OAK_WOOD); this.tag(BlockTags.ACACIA_LOGS).add(Blocks.ACACIA_LOG, Blocks.ACACIA_WOOD, Blocks.STRIPPED_ACACIA_LOG, Blocks.STRIPPED_ACACIA_WOOD); this.tag(BlockTags.BIRCH_LOGS).add(Blocks.BIRCH_LOG, Blocks.BIRCH_WOOD, Blocks.STRIPPED_BIRCH_LOG, Blocks.STRIPPED_BIRCH_WOOD); @@ -191,6 +230,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider this.tag(BlockTags.CHERRY_LOGS).add(Blocks.CHERRY_LOG, Blocks.CHERRY_WOOD, Blocks.STRIPPED_CHERRY_LOG, Blocks.STRIPPED_CHERRY_WOOD); this.tag(BlockTags.LOGS_THAT_BURN) .addTag(BlockTags.DARK_OAK_LOGS) + .addTag(BlockTags.PALE_OAK_LOGS) .addTag(BlockTags.OAK_LOGS) .addTag(BlockTags.ACACIA_LOGS) .addTag(BlockTags.BIRCH_LOGS) @@ -205,27 +245,12 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider .add(Blocks.JUNGLE_LOG) .add(Blocks.SPRUCE_LOG) .add(Blocks.DARK_OAK_LOG) + .add(Blocks.PALE_OAK_LOG) .add(Blocks.MANGROVE_LOG) .add(Blocks.CHERRY_LOG); this.tag(BlockTags.LOGS).addTag(BlockTags.LOGS_THAT_BURN).addTag(BlockTags.CRIMSON_STEMS).addTag(BlockTags.WARPED_STEMS); this.tag(BlockTags.ANVIL).add(Blocks.ANVIL, Blocks.CHIPPED_ANVIL, Blocks.DAMAGED_ANVIL); - this.tag(BlockTags.SMALL_FLOWERS) - .add( - Blocks.DANDELION, - Blocks.POPPY, - Blocks.BLUE_ORCHID, - Blocks.ALLIUM, - Blocks.AZURE_BLUET, - Blocks.RED_TULIP, - Blocks.ORANGE_TULIP, - Blocks.WHITE_TULIP, - Blocks.PINK_TULIP, - Blocks.OXEYE_DAISY, - Blocks.CORNFLOWER, - Blocks.LILY_OF_THE_VALLEY, - Blocks.WITHER_ROSE, - Blocks.TORCHFLOWER - ); + this.tag(BlockTags.SMALL_FLOWERS).add(blocks).add(Blocks.CLOSED_EYEBLOSSOM); this.tag(BlockTags.DIRT) .add( Blocks.DIRT, @@ -235,6 +260,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.MYCELIUM, Blocks.ROOTED_DIRT, Blocks.MOSS_BLOCK, + Blocks.PALE_MOSS_BLOCK, Blocks.MUD, Blocks.MUDDY_MANGROVE_ROOTS ); @@ -263,6 +289,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider this.tag(BlockTags.FLOWER_POTS) .add( Blocks.FLOWER_POT, + Blocks.POTTED_OPEN_EYEBLOSSOM, + Blocks.POTTED_CLOSED_EYEBLOSSOM, Blocks.POTTED_POPPY, Blocks.POTTED_BLUE_ORCHID, Blocks.POTTED_ALLIUM, @@ -279,6 +307,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.POTTED_JUNGLE_SAPLING, Blocks.POTTED_ACACIA_SAPLING, Blocks.POTTED_DARK_OAK_SAPLING, + Blocks.POTTED_PALE_OAK_SAPLING, Blocks.POTTED_RED_MUSHROOM, Blocks.POTTED_BROWN_MUSHROOM, Blocks.POTTED_DEAD_BUSH, @@ -341,6 +370,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_PRESSURE_PLATE, Blocks.ACACIA_PRESSURE_PLATE, Blocks.DARK_OAK_PRESSURE_PLATE, + Blocks.PALE_OAK_PRESSURE_PLATE, Blocks.CRIMSON_PRESSURE_PLATE, Blocks.WARPED_PRESSURE_PLATE, Blocks.MANGROVE_PRESSURE_PLATE, @@ -399,7 +429,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.MUD_BRICK_STAIRS, Blocks.TUFF_STAIRS, Blocks.POLISHED_TUFF_STAIRS, - Blocks.TUFF_BRICK_STAIRS + Blocks.TUFF_BRICK_STAIRS, + Blocks.RESIN_BRICK_STAIRS ); this.tag(BlockTags.SLABS) .addTag(BlockTags.WOODEN_SLABS) @@ -452,7 +483,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.MUD_BRICK_SLAB, Blocks.TUFF_SLAB, Blocks.POLISHED_TUFF_SLAB, - Blocks.TUFF_BRICK_SLAB + Blocks.TUFF_BRICK_SLAB, + Blocks.RESIN_BRICK_SLAB ); this.tag(BlockTags.WALLS) .add( @@ -480,7 +512,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.MUD_BRICK_WALL, Blocks.TUFF_WALL, Blocks.POLISHED_TUFF_WALL, - Blocks.TUFF_BRICK_WALL + Blocks.TUFF_BRICK_WALL, + Blocks.RESIN_BRICK_WALL ); this.tag(BlockTags.CORAL_PLANTS).add(Blocks.TUBE_CORAL, Blocks.BRAIN_CORAL, Blocks.BUBBLE_CORAL, Blocks.FIRE_CORAL, Blocks.HORN_CORAL); this.tag(BlockTags.CORALS) @@ -500,6 +533,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_LEAVES, Blocks.OAK_LEAVES, Blocks.SPRUCE_LEAVES, + Blocks.PALE_OAK_LEAVES, Blocks.DARK_OAK_LEAVES, Blocks.ACACIA_LEAVES, Blocks.BIRCH_LEAVES, @@ -534,6 +568,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.ACACIA_TRAPDOOR, Blocks.BIRCH_TRAPDOOR, Blocks.DARK_OAK_TRAPDOOR, + Blocks.PALE_OAK_TRAPDOOR, Blocks.JUNGLE_TRAPDOOR, Blocks.OAK_TRAPDOOR, Blocks.SPRUCE_TRAPDOOR, @@ -569,6 +604,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.ACACIA_SIGN, Blocks.JUNGLE_SIGN, Blocks.DARK_OAK_SIGN, + Blocks.PALE_OAK_SIGN, Blocks.CRIMSON_SIGN, Blocks.WARPED_SIGN, Blocks.MANGROVE_SIGN, @@ -583,6 +619,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.ACACIA_WALL_SIGN, Blocks.JUNGLE_WALL_SIGN, Blocks.DARK_OAK_WALL_SIGN, + Blocks.PALE_OAK_WALL_SIGN, Blocks.CRIMSON_WALL_SIGN, Blocks.WARPED_WALL_SIGN, Blocks.MANGROVE_WALL_SIGN, @@ -599,6 +636,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.CHERRY_HANGING_SIGN, Blocks.JUNGLE_HANGING_SIGN, Blocks.DARK_OAK_HANGING_SIGN, + Blocks.PALE_OAK_HANGING_SIGN, Blocks.CRIMSON_HANGING_SIGN, Blocks.WARPED_HANGING_SIGN, Blocks.MANGROVE_HANGING_SIGN, @@ -613,6 +651,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.CHERRY_WALL_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN, + Blocks.PALE_OAK_WALL_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN, @@ -678,19 +717,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.REINFORCED_DEEPSLATE ); this.tag(BlockTags.WITHER_SUMMON_BASE_BLOCKS).add(Blocks.SOUL_SAND, Blocks.SOUL_SOIL); - this.tag(BlockTags.TALL_FLOWERS).add(Blocks.SUNFLOWER, Blocks.LILAC, Blocks.PEONY, Blocks.ROSE_BUSH, Blocks.PITCHER_PLANT); - this.tag(BlockTags.FLOWERS) - .addTag(BlockTags.SMALL_FLOWERS) - .addTag(BlockTags.TALL_FLOWERS) - .add( - Blocks.FLOWERING_AZALEA_LEAVES, - Blocks.FLOWERING_AZALEA, - Blocks.MANGROVE_PROPAGULE, - Blocks.CHERRY_LEAVES, - Blocks.PINK_PETALS, - Blocks.CHORUS_FLOWER, - Blocks.SPORE_BLOSSOM - ); + this.tag(BlockTags.FLOWERS).addTag(BlockTags.SMALL_FLOWERS).add(blocks2); + this.tag(BlockTags.BEE_ATTRACTIVE).add(blocks).add(blocks2); this.tag(BlockTags.BEEHIVES).add(Blocks.BEE_NEST, Blocks.BEEHIVE); this.tag(BlockTags.CROPS) .add(Blocks.BEETROOTS, Blocks.CARROTS, Blocks.POTATOES, Blocks.WHEAT, Blocks.MELON_STEM, Blocks.PUMPKIN_STEM, Blocks.TORCHFLOWER_CROP, Blocks.PITCHER_CROP); @@ -767,6 +795,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.ACACIA_FENCE_GATE, Blocks.BIRCH_FENCE_GATE, Blocks.DARK_OAK_FENCE_GATE, + Blocks.PALE_OAK_FENCE_GATE, Blocks.JUNGLE_FENCE_GATE, Blocks.OAK_FENCE_GATE, Blocks.SPRUCE_FENCE_GATE, @@ -798,6 +827,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider .addTag(BlockTags.TERRACOTTA) .addTag(BlockTags.IRON_ORES) .addTag(BlockTags.COPPER_ORES) + .addTag(BlockTags.SNOW) .add( Blocks.WATER, Blocks.GRAVEL, @@ -805,7 +835,6 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.SANDSTONE, Blocks.RED_SANDSTONE, Blocks.CALCITE, - Blocks.SNOW, Blocks.PACKED_ICE, Blocks.RAW_IRON_BLOCK, Blocks.RAW_COPPER_BLOCK @@ -863,7 +892,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider .add(Blocks.POWDER_SNOW, Blocks.SCULK_VEIN, Blocks.GLOW_LICHEN, Blocks.LILY_PAD, Blocks.SMALL_AMETHYST_BUD, Blocks.PINK_PETALS); this.tag(BlockTags.COMBINATION_STEP_SOUND_BLOCKS) .addTag(BlockTags.WOOL_CARPETS) - .add(Blocks.MOSS_CARPET, Blocks.SNOW, Blocks.NETHER_SPROUTS, Blocks.WARPED_ROOTS, Blocks.CRIMSON_ROOTS); + .add(Blocks.MOSS_CARPET, Blocks.PALE_MOSS_CARPET, Blocks.SNOW, Blocks.NETHER_SPROUTS, Blocks.WARPED_ROOTS, Blocks.CRIMSON_ROOTS, Blocks.RESIN_CLUMP); this.tag(BlockTags.DRIPSTONE_REPLACEABLE).addTag(BlockTags.BASE_STONE_OVERWORLD); this.tag(BlockTags.CAVE_VINES).add(Blocks.CAVE_VINES_PLANT).add(Blocks.CAVE_VINES); this.tag(BlockTags.MOSS_REPLACEABLE).addTag(BlockTags.BASE_STONE_OVERWORLD).addTag(BlockTags.CAVE_VINES).addTag(BlockTags.DIRT); @@ -969,7 +998,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider .addTag(BlockTags.ALL_HANGING_SIGNS) .add(Blocks.BAMBOO_MOSAIC, Blocks.BAMBOO_MOSAIC_SLAB, Blocks.BAMBOO_MOSAIC_STAIRS) .addTag(BlockTags.BAMBOO_BLOCKS) - .add(Blocks.CHISELED_BOOKSHELF); + .add(Blocks.CHISELED_BOOKSHELF) + .add(Blocks.CREAKING_HEART); this.tag(BlockTags.MINEABLE_WITH_HOE) .add( Blocks.NETHER_WART_BLOCK, @@ -983,6 +1013,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.JUNGLE_LEAVES, Blocks.OAK_LEAVES, Blocks.SPRUCE_LEAVES, + Blocks.PALE_OAK_LEAVES, Blocks.DARK_OAK_LEAVES, Blocks.ACACIA_LEAVES, Blocks.BIRCH_LEAVES, @@ -993,6 +1024,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.CALIBRATED_SCULK_SENSOR, Blocks.MOSS_BLOCK, Blocks.MOSS_CARPET, + Blocks.PALE_MOSS_BLOCK, + Blocks.PALE_MOSS_CARPET, Blocks.SCULK, Blocks.SCULK_CATALYST, Blocks.SCULK_VEIN, @@ -1387,7 +1420,12 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR, Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR, Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR, - Blocks.HEAVY_CORE + Blocks.HEAVY_CORE, + Blocks.RESIN_BRICKS, + Blocks.RESIN_BRICK_SLAB, + Blocks.RESIN_BRICK_WALL, + Blocks.RESIN_BRICK_STAIRS, + Blocks.CHISELED_RESIN_BRICKS ); this.tag(BlockTags.MINEABLE_WITH_SHOVEL) .add( @@ -1416,7 +1454,6 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider this.tag(BlockTags.SWORD_EFFICIENT) .addTag(BlockTags.LEAVES) .addTag(BlockTags.SAPLINGS) - .addTag(BlockTags.SMALL_FLOWERS) .addTag(BlockTags.CROPS) .add( Blocks.SHORT_GRASS, @@ -1450,7 +1487,6 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.CAVE_VINES, Blocks.CAVE_VINES_PLANT, Blocks.SPORE_BLOSSOM, - Blocks.MOSS_CARPET, Blocks.PINK_PETALS, Blocks.BIG_DRIPLEAF, Blocks.BIG_DRIPLEAF_STEM, @@ -1562,15 +1598,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider Blocks.WAXED_COPPER_TRAPDOOR, Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR, Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR, - Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR, - Blocks.COPPER_DOOR, - Blocks.EXPOSED_COPPER_DOOR, - Blocks.WEATHERED_COPPER_DOOR, - Blocks.OXIDIZED_COPPER_DOOR, - Blocks.WAXED_COPPER_DOOR, - Blocks.WAXED_EXPOSED_COPPER_DOOR, - Blocks.WAXED_WEATHERED_COPPER_DOOR, - Blocks.WAXED_OXIDIZED_COPPER_DOOR + Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR ); this.tag(BlockTags.INCORRECT_FOR_NETHERITE_TOOL); this.tag(BlockTags.INCORRECT_FOR_DIAMOND_TOOL); @@ -1703,6 +1731,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider this.tag(BlockTags.SNOW_LAYER_CAN_SURVIVE_ON).add(Blocks.HONEY_BLOCK).add(Blocks.SOUL_SAND).add(Blocks.MUD); this.tag(BlockTags.REPLACEABLE_BY_TREES) .addTag(BlockTags.LEAVES) + .addTag(BlockTags.SMALL_FLOWERS) + .add(Blocks.PALE_MOSS_CARPET) .add( Blocks.SHORT_GRASS, Blocks.FERN, @@ -1733,7 +1763,17 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider this.tag(BlockTags.SAND).add(Blocks.SUSPICIOUS_SAND); this.tag(BlockTags.TRAIL_RUINS_REPLACEABLE).add(Blocks.GRAVEL); this.tag(BlockTags.SNIFFER_DIGGABLE_BLOCK) - .add(Blocks.DIRT, Blocks.GRASS_BLOCK, Blocks.PODZOL, Blocks.COARSE_DIRT, Blocks.ROOTED_DIRT, Blocks.MOSS_BLOCK, Blocks.MUD, Blocks.MUDDY_MANGROVE_ROOTS); + .add( + Blocks.DIRT, + Blocks.GRASS_BLOCK, + Blocks.PODZOL, + Blocks.COARSE_DIRT, + Blocks.ROOTED_DIRT, + Blocks.MOSS_BLOCK, + Blocks.PALE_MOSS_BLOCK, + Blocks.MUD, + Blocks.MUDDY_MANGROVE_ROOTS + ); this.tag(BlockTags.SNIFFER_EGG_HATCH_BOOST).add(Blocks.MOSS_BLOCK); IntrinsicHolderTagsProvider.IntrinsicTagAppender intrinsicTagAppender = this.tag(BlockTags.REPLACEABLE); provider.lookupOrThrow(Registries.BLOCK) diff --git a/net/minecraft/data/tags/VanillaItemTagsProvider.java b/net/minecraft/data/tags/VanillaItemTagsProvider.java index 60568dc4..03b7e078 100644 --- a/net/minecraft/data/tags/VanillaItemTagsProvider.java +++ b/net/minecraft/data/tags/VanillaItemTagsProvider.java @@ -1,22 +1,25 @@ package net.minecraft.data.tags; +import java.util.Comparator; import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; +import net.minecraft.world.item.equipment.trim.TrimMaterial; import net.minecraft.world.level.block.Block; public class VanillaItemTagsProvider extends ItemTagsProvider { public VanillaItemTagsProvider( - PackOutput packOutput, CompletableFuture completableFuture, CompletableFuture> completableFuture2 + PackOutput packOutput, CompletableFuture completableFuture, CompletableFuture> completableFuture2 ) { super(packOutput, completableFuture, completableFuture2); } @Override - protected void addTags(HolderLookup.Provider provider) { + protected void addTags(Provider provider) { this.copy(BlockTags.WOOL, ItemTags.WOOL); this.copy(BlockTags.PLANKS, ItemTags.PLANKS); this.copy(BlockTags.STONE_BRICKS, ItemTags.STONE_BRICKS); @@ -35,6 +38,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { this.copy(BlockTags.BAMBOO_BLOCKS, ItemTags.BAMBOO_BLOCKS); this.copy(BlockTags.OAK_LOGS, ItemTags.OAK_LOGS); this.copy(BlockTags.DARK_OAK_LOGS, ItemTags.DARK_OAK_LOGS); + this.copy(BlockTags.PALE_OAK_LOGS, ItemTags.PALE_OAK_LOGS); this.copy(BlockTags.BIRCH_LOGS, ItemTags.BIRCH_LOGS); this.copy(BlockTags.ACACIA_LOGS, ItemTags.ACACIA_LOGS); this.copy(BlockTags.SPRUCE_LOGS, ItemTags.SPRUCE_LOGS); @@ -59,8 +63,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { this.copy(BlockTags.SMALL_FLOWERS, ItemTags.SMALL_FLOWERS); this.copy(BlockTags.BEDS, ItemTags.BEDS); this.copy(BlockTags.FENCES, ItemTags.FENCES); - this.copy(BlockTags.TALL_FLOWERS, ItemTags.TALL_FLOWERS); - this.copy(BlockTags.FLOWERS, ItemTags.FLOWERS); + this.copy(BlockTags.BEE_ATTRACTIVE, ItemTags.BEE_FOOD); this.copy(BlockTags.SOUL_FIRE_BASE_BLOCKS, ItemTags.SOUL_FIRE_BASE_BLOCKS); this.copy(BlockTags.CANDLES, ItemTags.CANDLES); this.copy(BlockTags.DAMPENS_VIBRATIONS, ItemTags.DAMPENS_VIBRATIONS); @@ -103,6 +106,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { Items.JUNGLE_BOAT, Items.ACACIA_BOAT, Items.DARK_OAK_BOAT, + Items.PALE_OAK_BOAT, Items.MANGROVE_BOAT, Items.BAMBOO_RAFT, Items.CHERRY_BOAT @@ -136,6 +140,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { Items.JUNGLE_CHEST_BOAT, Items.ACACIA_CHEST_BOAT, Items.DARK_OAK_CHEST_BOAT, + Items.PALE_OAK_CHEST_BOAT, Items.MANGROVE_CHEST_BOAT, Items.BAMBOO_CHEST_RAFT, Items.CHERRY_CHEST_BOAT @@ -281,6 +286,11 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { .addTag(ItemTags.HOES) .add(Items.TRIDENT) .add(Items.MACE); + this.tag(ItemTags.SKELETON_PREFERRED_WEAPONS).add(Items.BOW); + this.tag(ItemTags.DROWNED_PREFERRED_WEAPONS).add(Items.TRIDENT); + this.tag(ItemTags.PIGLIN_PREFERRED_WEAPONS).add(Items.CROSSBOW); + this.tag(ItemTags.PILLAGER_PREFERRED_WEAPONS).add(Items.CROSSBOW); + this.tag(ItemTags.WITHER_SKELETON_DISLIKED_WEAPONS).add(Items.BOW).add(Items.CROSSBOW); this.tag(ItemTags.DECORATED_POT_SHERDS) .add( Items.ANGLER_POTTERY_SHERD, @@ -321,36 +331,10 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { this.tag(ItemTags.SKULLS) .add(Items.PLAYER_HEAD, Items.CREEPER_HEAD, Items.ZOMBIE_HEAD, Items.SKELETON_SKULL, Items.WITHER_SKELETON_SKULL, Items.DRAGON_HEAD, Items.PIGLIN_HEAD); this.tag(ItemTags.TRIMMABLE_ARMOR).addTag(ItemTags.FOOT_ARMOR).addTag(ItemTags.LEG_ARMOR).addTag(ItemTags.CHEST_ARMOR).addTag(ItemTags.HEAD_ARMOR); - this.tag(ItemTags.TRIM_MATERIALS) - .add(Items.IRON_INGOT) - .add(Items.COPPER_INGOT) - .add(Items.GOLD_INGOT) - .add(Items.LAPIS_LAZULI) - .add(Items.EMERALD) - .add(Items.DIAMOND) - .add(Items.NETHERITE_INGOT) - .add(Items.REDSTONE) - .add(Items.QUARTZ) - .add(Items.AMETHYST_SHARD); - this.tag(ItemTags.TRIM_TEMPLATES) - .add(Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.COAST_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.RIB_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE); + provider.lookupOrThrow(Registries.TRIM_MATERIAL) + .listElements() + .sorted(Comparator.comparing(reference -> reference.key().location())) + .forEach(reference -> this.tag(ItemTags.TRIM_MATERIALS).add(((TrimMaterial)reference.value()).ingredient().value())); this.tag(ItemTags.BOOKSHELF_BOOKS).add(Items.BOOK, Items.WRITTEN_BOOK, Items.ENCHANTED_BOOK, Items.WRITABLE_BOOK, Items.KNOWLEDGE_BOOK); this.tag(ItemTags.NOTE_BLOCK_TOP_INSTRUMENTS) .add(Items.ZOMBIE_HEAD, Items.SKELETON_SKULL, Items.CREEPER_HEAD, Items.DRAGON_HEAD, Items.WITHER_SKELETON_SKULL, Items.PIGLIN_HEAD, Items.PLAYER_HEAD); @@ -435,7 +419,6 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { this.tag(ItemTags.HORSE_TEMPT_ITEMS).add(Items.GOLDEN_CARROT, Items.GOLDEN_APPLE, Items.ENCHANTED_GOLDEN_APPLE); this.tag(ItemTags.CAMEL_FOOD).add(Items.CACTUS); this.tag(ItemTags.ARMADILLO_FOOD).add(Items.SPIDER_EYE); - this.tag(ItemTags.BEE_FOOD).addTag(ItemTags.FLOWERS); this.tag(ItemTags.CHICKEN_FOOD) .add(Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS, Items.TORCHFLOWER_SEEDS, Items.PITCHER_POD); this.tag(ItemTags.FROG_FOOD).add(Items.SLIME_BALL); diff --git a/net/minecraft/data/tags/WinterDropBiomeTagsProvider.java b/net/minecraft/data/tags/WinterDropBiomeTagsProvider.java deleted file mode 100644 index 674bc515..00000000 --- a/net/minecraft/data/tags/WinterDropBiomeTagsProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.minecraft.data.tags; - -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.PackOutput; -import net.minecraft.data.worldgen.WinterDropBiomes; -import net.minecraft.tags.BiomeTags; -import net.minecraft.world.level.biome.Biome; - -public class WinterDropBiomeTagsProvider extends TagsProvider { - public WinterDropBiomeTagsProvider( - PackOutput output, CompletableFuture lookupProvider, CompletableFuture> parentProvider - ) { - super(output, Registries.BIOME, lookupProvider, parentProvider); - } - - @Override - protected void addTags(HolderLookup.Provider provider) { - this.tag(BiomeTags.IS_FOREST).add(WinterDropBiomes.PALE_GARDEN); - this.tag(BiomeTags.STRONGHOLD_BIASED_TO).add(WinterDropBiomes.PALE_GARDEN); - this.tag(BiomeTags.IS_OVERWORLD).add(WinterDropBiomes.PALE_GARDEN); - this.tag(BiomeTags.HAS_TRIAL_CHAMBERS).add(WinterDropBiomes.PALE_GARDEN); - } -} diff --git a/net/minecraft/data/tags/WinterDropBlockTagsProvider.java b/net/minecraft/data/tags/WinterDropBlockTagsProvider.java deleted file mode 100644 index bb147445..00000000 --- a/net/minecraft/data/tags/WinterDropBlockTagsProvider.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.minecraft.data.tags; - -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.PackOutput; -import net.minecraft.tags.BlockTags; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; - -public class WinterDropBlockTagsProvider extends IntrinsicHolderTagsProvider { - public WinterDropBlockTagsProvider( - PackOutput output, CompletableFuture lookupProvider, CompletableFuture> parentProvider - ) { - super(output, Registries.BLOCK, lookupProvider, parentProvider, block -> block.builtInRegistryHolder().key()); - } - - @Override - protected void addTags(HolderLookup.Provider provider) { - this.tag(BlockTags.PLANKS).add(Blocks.PALE_OAK_PLANKS); - this.tag(BlockTags.WOODEN_BUTTONS).add(Blocks.PALE_OAK_BUTTON); - this.tag(BlockTags.WOODEN_DOORS).add(Blocks.PALE_OAK_DOOR); - this.tag(BlockTags.WOODEN_STAIRS).add(Blocks.PALE_OAK_STAIRS); - this.tag(BlockTags.WOODEN_SLABS).add(Blocks.PALE_OAK_SLAB); - this.tag(BlockTags.WOODEN_FENCES).add(Blocks.PALE_OAK_FENCE); - this.tag(BlockTags.SAPLINGS).add(Blocks.PALE_OAK_SAPLING); - this.tag(BlockTags.PALE_OAK_LOGS).add(Blocks.PALE_OAK_LOG, Blocks.PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_LOG, Blocks.STRIPPED_PALE_OAK_WOOD); - this.tag(BlockTags.LOGS_THAT_BURN).addTag(BlockTags.PALE_OAK_LOGS); - this.tag(BlockTags.OVERWORLD_NATURAL_LOGS).add(Blocks.PALE_OAK_LOG); - this.tag(BlockTags.DIRT).add(Blocks.PALE_MOSS_BLOCK); - this.tag(BlockTags.FLOWER_POTS).add(Blocks.POTTED_PALE_OAK_SAPLING); - this.tag(BlockTags.WOODEN_PRESSURE_PLATES).add(Blocks.PALE_OAK_PRESSURE_PLATE); - this.tag(BlockTags.LEAVES).add(Blocks.PALE_OAK_LEAVES); - this.tag(BlockTags.WOODEN_TRAPDOORS).add(Blocks.PALE_OAK_TRAPDOOR); - this.tag(BlockTags.STANDING_SIGNS).add(Blocks.PALE_OAK_SIGN); - this.tag(BlockTags.WALL_SIGNS).add(Blocks.PALE_OAK_WALL_SIGN); - this.tag(BlockTags.CEILING_HANGING_SIGNS).add(Blocks.PALE_OAK_HANGING_SIGN); - this.tag(BlockTags.WALL_HANGING_SIGNS).add(Blocks.PALE_OAK_WALL_HANGING_SIGN); - this.tag(BlockTags.FENCE_GATES).add(Blocks.PALE_OAK_FENCE_GATE); - this.tag(BlockTags.MINEABLE_WITH_HOE).add(Blocks.PALE_OAK_LEAVES, Blocks.PALE_MOSS_BLOCK, Blocks.PALE_MOSS_CARPET); - this.tag(BlockTags.MINEABLE_WITH_AXE).add(Blocks.CREAKING_HEART); - this.tag(BlockTags.SWORD_EFFICIENT).add(Blocks.PALE_MOSS_CARPET); - this.tag(BlockTags.COMBINATION_STEP_SOUND_BLOCKS).add(Blocks.PALE_MOSS_CARPET); - } -} diff --git a/net/minecraft/data/tags/WinterDropEntityTypeTagsProvider.java b/net/minecraft/data/tags/WinterDropEntityTypeTagsProvider.java deleted file mode 100644 index 5ea12f84..00000000 --- a/net/minecraft/data/tags/WinterDropEntityTypeTagsProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.data.tags; - -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.PackOutput; -import net.minecraft.tags.EntityTypeTags; -import net.minecraft.world.entity.EntityType; - -public class WinterDropEntityTypeTagsProvider extends IntrinsicHolderTagsProvider> { - public WinterDropEntityTypeTagsProvider(PackOutput output, CompletableFuture registries) { - super(output, Registries.ENTITY_TYPE, registries, entityType -> entityType.builtInRegistryHolder().key()); - } - - @Override - protected void addTags(HolderLookup.Provider provider) { - this.tag(EntityTypeTags.BOAT).add(EntityType.PALE_OAK_BOAT); - } -} diff --git a/net/minecraft/data/tags/WinterDropItemTagsProvider.java b/net/minecraft/data/tags/WinterDropItemTagsProvider.java deleted file mode 100644 index 47320598..00000000 --- a/net/minecraft/data/tags/WinterDropItemTagsProvider.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.minecraft.data.tags; - -import java.util.concurrent.CompletableFuture; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.Block; - -public class WinterDropItemTagsProvider extends ItemTagsProvider { - public WinterDropItemTagsProvider( - PackOutput packOutput, - CompletableFuture completableFuture, - CompletableFuture> completableFuture2, - CompletableFuture> completableFuture3 - ) { - super(packOutput, completableFuture, completableFuture2, completableFuture3); - } - - @Override - protected void addTags(HolderLookup.Provider provider) { - this.copy(BlockTags.PLANKS, ItemTags.PLANKS); - this.copy(BlockTags.WOODEN_BUTTONS, ItemTags.WOODEN_BUTTONS); - this.copy(BlockTags.WOODEN_DOORS, ItemTags.WOODEN_DOORS); - this.copy(BlockTags.WOODEN_STAIRS, ItemTags.WOODEN_STAIRS); - this.copy(BlockTags.WOODEN_SLABS, ItemTags.WOODEN_SLABS); - this.copy(BlockTags.WOODEN_FENCES, ItemTags.WOODEN_FENCES); - this.copy(BlockTags.FENCE_GATES, ItemTags.FENCE_GATES); - this.copy(BlockTags.WOODEN_PRESSURE_PLATES, ItemTags.WOODEN_PRESSURE_PLATES); - this.copy(BlockTags.SAPLINGS, ItemTags.SAPLINGS); - this.copy(BlockTags.PALE_OAK_LOGS, ItemTags.PALE_OAK_LOGS); - this.copy(BlockTags.LOGS_THAT_BURN, ItemTags.LOGS_THAT_BURN); - this.copy(BlockTags.LEAVES, ItemTags.LEAVES); - this.copy(BlockTags.WOODEN_TRAPDOORS, ItemTags.WOODEN_TRAPDOORS); - this.copy(BlockTags.DIRT, ItemTags.DIRT); - this.tag(ItemTags.BOATS).add(Items.PALE_OAK_BOAT); - this.tag(ItemTags.CHEST_BOATS).add(Items.PALE_OAK_CHEST_BOAT); - this.copy(BlockTags.STANDING_SIGNS, ItemTags.SIGNS); - this.copy(BlockTags.CEILING_HANGING_SIGNS, ItemTags.HANGING_SIGNS); - } -} diff --git a/net/minecraft/data/worldgen/WinterDropBiomes.java b/net/minecraft/data/worldgen/WinterDropBiomes.java deleted file mode 100644 index 3a8270b3..00000000 --- a/net/minecraft/data/worldgen/WinterDropBiomes.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.data.worldgen; - -import net.minecraft.core.HolderGetter; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.biome.OverworldBiomes; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; - -public class WinterDropBiomes { - public static final ResourceKey PALE_GARDEN = createKey("pale_garden"); - - public static ResourceKey createKey(String name) { - return ResourceKey.create(Registries.BIOME, ResourceLocation.withDefaultNamespace(name)); - } - - public static void register(BootstrapContext context, String name, Biome biome) { - context.register(createKey(name), biome); - } - - public static void bootstrap(BootstrapContext context) { - HolderGetter holderGetter = context.lookup(Registries.PLACED_FEATURE); - HolderGetter> holderGetter2 = context.lookup(Registries.CONFIGURED_CARVER); - context.register(PALE_GARDEN, OverworldBiomes.darkForest(holderGetter, holderGetter2, true)); - } -} diff --git a/net/minecraft/data/worldgen/biome/BiomeData.java b/net/minecraft/data/worldgen/biome/BiomeData.java index 968797c8..8b372078 100644 --- a/net/minecraft/data/worldgen/biome/BiomeData.java +++ b/net/minecraft/data/worldgen/biome/BiomeData.java @@ -24,6 +24,7 @@ public abstract class BiomeData { context.register(Biomes.FLOWER_FOREST, OverworldBiomes.forest(holderGetter, holderGetter2, false, false, true)); context.register(Biomes.BIRCH_FOREST, OverworldBiomes.forest(holderGetter, holderGetter2, true, false, false)); context.register(Biomes.DARK_FOREST, OverworldBiomes.darkForest(holderGetter, holderGetter2, false)); + context.register(Biomes.PALE_GARDEN, OverworldBiomes.darkForest(holderGetter, holderGetter2, true)); context.register(Biomes.OLD_GROWTH_BIRCH_FOREST, OverworldBiomes.forest(holderGetter, holderGetter2, true, true, false)); context.register(Biomes.OLD_GROWTH_PINE_TAIGA, OverworldBiomes.oldGrowthTaiga(holderGetter, holderGetter2, false)); context.register(Biomes.OLD_GROWTH_SPRUCE_TAIGA, OverworldBiomes.oldGrowthTaiga(holderGetter, holderGetter2, true)); diff --git a/net/minecraft/data/worldgen/biome/OverworldBiomes.java b/net/minecraft/data/worldgen/biome/OverworldBiomes.java index 2af36115..ef283e46 100644 --- a/net/minecraft/data/worldgen/biome/OverworldBiomes.java +++ b/net/minecraft/data/worldgen/biome/OverworldBiomes.java @@ -14,11 +14,10 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.AmbientMoodSettings; import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.biome.BiomeGenerationSettings; import net.minecraft.world.level.biome.BiomeSpecialEffects; import net.minecraft.world.level.biome.MobSpawnSettings.Builder; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; -import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.GenerationStep.Decoration; import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import org.jetbrains.annotations.Nullable; @@ -42,7 +41,7 @@ public class OverworldBiomes { float temperature, float downfall, Builder mobSpawnSettings, - BiomeGenerationSettings.Builder generationSettings, + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder generationSettings, @Nullable Music backgroundMusic ) { return biome(hasPercipitation, temperature, downfall, 4159204, 329011, null, null, mobSpawnSettings, generationSettings, backgroundMusic); @@ -57,7 +56,7 @@ public class OverworldBiomes { @Nullable Integer grassColorOverride, @Nullable Integer foliageColorOverride, Builder mobSpawnSettings, - BiomeGenerationSettings.Builder generationSettings, + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder generationSettings, @Nullable Music backgroundMusic ) { BiomeSpecialEffects.Builder builder = new BiomeSpecialEffects.Builder() @@ -85,7 +84,7 @@ public class OverworldBiomes { .build(); } - private static void globalOverworldGeneration(BiomeGenerationSettings.Builder generationSettings) { + private static void globalOverworldGeneration(net.minecraft.world.level.biome.BiomeGenerationSettings.Builder generationSettings) { BiomeDefaultFeatures.addDefaultCarversAndLakes(generationSettings); BiomeDefaultFeatures.addDefaultCrystalFormations(generationSettings); BiomeDefaultFeatures.addDefaultMonsterRoom(generationSettings); @@ -107,15 +106,16 @@ public class OverworldBiomes { BiomeDefaultFeatures.monsters(builder, 100, 25, 100, false); } - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addMossyStoneBlock(builder2); BiomeDefaultFeatures.addFerns(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addDefaultSoftDisks(builder2); builder2.addFeature( - GenerationStep.Decoration.VEGETAL_DECORATION, - isSpruce ? VegetationPlacements.TREES_OLD_GROWTH_SPRUCE_TAIGA : VegetationPlacements.TREES_OLD_GROWTH_PINE_TAIGA + Decoration.VEGETAL_DECORATION, isSpruce ? VegetationPlacements.TREES_OLD_GROWTH_SPRUCE_TAIGA : VegetationPlacements.TREES_OLD_GROWTH_PINE_TAIGA ); BiomeDefaultFeatures.addDefaultFlowers(builder2); BiomeDefaultFeatures.addGiantTaigaVegetation(builder2); @@ -161,7 +161,9 @@ public class OverworldBiomes { Builder mobSpawnSettings, Music backgroudMusic ) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder); BiomeDefaultFeatures.addDefaultOres(builder); BiomeDefaultFeatures.addDefaultSoftDisks(builder); @@ -198,7 +200,9 @@ public class OverworldBiomes { BiomeDefaultFeatures.farmAnimals(builder); builder.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.LLAMA, 5, 4, 6)); BiomeDefaultFeatures.commonSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addDefaultSoftDisks(builder2); @@ -220,7 +224,9 @@ public class OverworldBiomes { public static Biome desert(HolderGetter placedFeatures, HolderGetter> worldCarvers) { Builder builder = new Builder(); BiomeDefaultFeatures.desertSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); BiomeDefaultFeatures.addFossilDecoration(builder2); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); @@ -242,20 +248,22 @@ public class OverworldBiomes { boolean isIceSpikes ) { Builder builder = new Builder(); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); if (isCold) { builder.creatureGenerationProbability(0.07F); BiomeDefaultFeatures.snowySpawns(builder); if (isIceSpikes) { - builder2.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, MiscOverworldPlacements.ICE_SPIKE); - builder2.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, MiscOverworldPlacements.ICE_PATCH); + builder2.addFeature(Decoration.SURFACE_STRUCTURES, MiscOverworldPlacements.ICE_SPIKE); + builder2.addFeature(Decoration.SURFACE_STRUCTURES, MiscOverworldPlacements.ICE_PATCH); } } else { BiomeDefaultFeatures.plainsSpawns(builder); BiomeDefaultFeatures.addPlainGrass(builder2); if (isSunflowerPlains) { - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_SUNFLOWER); + builder2.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_SUNFLOWER); } } @@ -271,8 +279,8 @@ public class OverworldBiomes { BiomeDefaultFeatures.addDefaultMushrooms(builder2); if (isSunflowerPlains) { - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_SUGAR_CANE); - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_PUMPKIN); + builder2.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_SUGAR_CANE); + builder2.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_PUMPKIN); } else { BiomeDefaultFeatures.addDefaultExtraVegetation(builder2); } @@ -284,7 +292,9 @@ public class OverworldBiomes { public static Biome mushroomFields(HolderGetter placedFeatures, HolderGetter> worldCarvers) { Builder builder = new Builder(); BiomeDefaultFeatures.mooshroomSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addDefaultSoftDisks(builder2); @@ -296,7 +306,9 @@ public class OverworldBiomes { public static Biome savanna( HolderGetter placedFeatures, HolderGetter> worldCarvers, boolean isShatteredSavanna, boolean isPlateau ) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder); if (!isShatteredSavanna) { BiomeDefaultFeatures.addSavannaGrass(builder); @@ -340,7 +352,9 @@ public class OverworldBiomes { builder.creatureGenerationProbability(0.04F); } - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addExtraGold(builder2); @@ -373,14 +387,18 @@ public class OverworldBiomes { .build(); } - private static Biome baseOcean(Builder mobSpawnSettings, int waterColor, int waterFogColor, BiomeGenerationSettings.Builder generationSettings) { + private static Biome baseOcean( + Builder mobSpawnSettings, int waterColor, int waterFogColor, net.minecraft.world.level.biome.BiomeGenerationSettings.Builder generationSettings + ) { return biome(true, 0.5F, 0.5F, waterColor, waterFogColor, null, null, mobSpawnSettings, generationSettings, NORMAL_MUSIC); } - private static BiomeGenerationSettings.Builder baseOceanGeneration( + private static net.minecraft.world.level.biome.BiomeGenerationSettings.Builder baseOceanGeneration( HolderGetter placedFeatures, HolderGetter> worldCarvers ) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder); BiomeDefaultFeatures.addDefaultOres(builder); BiomeDefaultFeatures.addDefaultSoftDisks(builder); @@ -396,8 +414,8 @@ public class OverworldBiomes { Builder builder = new Builder(); BiomeDefaultFeatures.oceanSpawns(builder, 3, 4, 15); builder.addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.SALMON, 15, 1, 5)); - BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers); - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, isDeep ? AquaticPlacements.SEAGRASS_DEEP_COLD : AquaticPlacements.SEAGRASS_COLD); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers); + builder2.addFeature(Decoration.VEGETAL_DECORATION, isDeep ? AquaticPlacements.SEAGRASS_DEEP_COLD : AquaticPlacements.SEAGRASS_COLD); BiomeDefaultFeatures.addColdOceanExtraVegetation(builder2); return baseOcean(builder, 4020182, 329011, builder2); } @@ -406,8 +424,8 @@ public class OverworldBiomes { Builder builder = new Builder(); BiomeDefaultFeatures.oceanSpawns(builder, 1, 4, 10); builder.addSpawn(MobCategory.WATER_CREATURE, new SpawnerData(EntityType.DOLPHIN, 1, 1, 2)); - BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers); - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, isDeep ? AquaticPlacements.SEAGRASS_DEEP : AquaticPlacements.SEAGRASS_NORMAL); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers); + builder2.addFeature(Decoration.VEGETAL_DECORATION, isDeep ? AquaticPlacements.SEAGRASS_DEEP : AquaticPlacements.SEAGRASS_NORMAL); BiomeDefaultFeatures.addColdOceanExtraVegetation(builder2); return baseOcean(builder, 4159204, 329011, builder2); } @@ -423,8 +441,8 @@ public class OverworldBiomes { builder.addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.PUFFERFISH, 5, 1, 3)) .addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.TROPICAL_FISH, 25, 8, 8)) .addSpawn(MobCategory.WATER_CREATURE, new SpawnerData(EntityType.DOLPHIN, 2, 1, 2)); - BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers); - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, isDeep ? AquaticPlacements.SEAGRASS_DEEP_WARM : AquaticPlacements.SEAGRASS_WARM); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers); + builder2.addFeature(Decoration.VEGETAL_DECORATION, isDeep ? AquaticPlacements.SEAGRASS_DEEP_WARM : AquaticPlacements.SEAGRASS_WARM); BiomeDefaultFeatures.addLukeWarmKelp(builder2); return baseOcean(builder, 4566514, 267827, builder2); } @@ -432,10 +450,10 @@ public class OverworldBiomes { public static Biome warmOcean(HolderGetter placedFeatures, HolderGetter> worldCarvers) { Builder builder = new Builder().addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.PUFFERFISH, 15, 1, 3)); BiomeDefaultFeatures.warmOceanSpawns(builder, 10, 4); - BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers) - .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.WARM_OCEAN_VEGETATION) - .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_WARM) - .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.SEA_PICKLE); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = baseOceanGeneration(placedFeatures, worldCarvers) + .addFeature(Decoration.VEGETAL_DECORATION, AquaticPlacements.WARM_OCEAN_VEGETATION) + .addFeature(Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_WARM) + .addFeature(Decoration.VEGETAL_DECORATION, AquaticPlacements.SEA_PICKLE); return baseOcean(builder, 4445678, 270131, builder2); } @@ -447,7 +465,9 @@ public class OverworldBiomes { BiomeDefaultFeatures.commonSpawns(builder); builder.addSpawn(MobCategory.MONSTER, new SpawnerData(EntityType.DROWNED, 5, 1, 1)); float f = isDeep ? 0.5F : 0.0F; - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); BiomeDefaultFeatures.addIcebergs(builder2); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addBlueIce(builder2); @@ -484,12 +504,14 @@ public class OverworldBiomes { boolean tallBirchTrees, boolean isFlowerForest ) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder); Music music; if (isFlowerForest) { music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_FLOWER_FOREST); - builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.FLOWER_FOREST_FLOWERS); + builder.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.FLOWER_FOREST_FLOWERS); } else { music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_FOREST); BiomeDefaultFeatures.addForestFlowers(builder); @@ -498,8 +520,8 @@ public class OverworldBiomes { BiomeDefaultFeatures.addDefaultOres(builder); BiomeDefaultFeatures.addDefaultSoftDisks(builder); if (isFlowerForest) { - builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.TREES_FLOWER_FOREST); - builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.FLOWER_FLOWER_FOREST); + builder.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.TREES_FLOWER_FOREST); + builder.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.FLOWER_FLOWER_FOREST); BiomeDefaultFeatures.addDefaultGrass(builder); } else { if (isBirchForest) { @@ -539,7 +561,9 @@ public class OverworldBiomes { .addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.FOX, 8, 2, 4)); BiomeDefaultFeatures.commonSpawns(builder); float f = isCold ? -0.5F : 0.25F; - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addFerns(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); @@ -564,19 +588,24 @@ public class OverworldBiomes { } BiomeDefaultFeatures.commonSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); - globalOverworldGeneration(builder2); - builder2.addFeature( - GenerationStep.Decoration.VEGETAL_DECORATION, isPaleGarden ? VegetationPlacements.PALE_GARDEN_VEGETATION : VegetationPlacements.DARK_FOREST_VEGETATION + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers ); + globalOverworldGeneration(builder2); + builder2.addFeature(Decoration.VEGETAL_DECORATION, isPaleGarden ? VegetationPlacements.PALE_GARDEN_VEGETATION : VegetationPlacements.DARK_FOREST_VEGETATION); if (!isPaleGarden) { BiomeDefaultFeatures.addForestFlowers(builder2); + } else { + builder2.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.PALE_MOSS_PATCH); + builder2.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.PALE_GARDEN_FLOWERS); } BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addDefaultSoftDisks(builder2); if (!isPaleGarden) { BiomeDefaultFeatures.addDefaultFlowers(builder2); + } else { + builder2.addFeature(Decoration.VEGETAL_DECORATION, VegetationPlacements.FLOWER_PALE_GARDEN); } BiomeDefaultFeatures.addForestGrass(builder2); @@ -585,7 +614,6 @@ public class OverworldBiomes { } BiomeDefaultFeatures.addDefaultExtraVegetation(builder2); - Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_FOREST); return new Biome.BiomeBuilder() .hasPrecipitation(true) .temperature(0.7F) @@ -600,7 +628,7 @@ public class OverworldBiomes { .grassColorOverride(7832178) .foliageColorOverride(8883574) .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS) - .backgroundMusic(music) + .silenceAllBackgroundMusic() .build() : new BiomeSpecialEffects.Builder() .waterColor(4159204) @@ -609,7 +637,7 @@ public class OverworldBiomes { .skyColor(calculateSkyColor(0.7F)) .grassColorModifier(BiomeSpecialEffects.GrassColorModifier.DARK_FOREST) .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS) - .backgroundMusic(music) + .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_FOREST)) .build() ) .mobSpawnSettings(builder.build()) @@ -624,7 +652,9 @@ public class OverworldBiomes { builder.addSpawn(MobCategory.MONSTER, new SpawnerData(EntityType.SLIME, 1, 1, 1)); builder.addSpawn(MobCategory.MONSTER, new SpawnerData(EntityType.BOGGED, 30, 4, 4)); builder.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.FROG, 10, 2, 5)); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); BiomeDefaultFeatures.addFossilDecoration(builder2); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); @@ -632,7 +662,7 @@ public class OverworldBiomes { BiomeDefaultFeatures.addSwampVegetation(builder2); BiomeDefaultFeatures.addDefaultMushrooms(builder2); BiomeDefaultFeatures.addSwampExtraVegetation(builder2); - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_SWAMP); + builder2.addFeature(Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_SWAMP); Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_SWAMP); return new Biome.BiomeBuilder() .hasPrecipitation(true) @@ -662,13 +692,15 @@ public class OverworldBiomes { builder.addSpawn(MobCategory.MONSTER, new SpawnerData(EntityType.BOGGED, 30, 4, 4)); builder.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.FROG, 10, 2, 5)); builder.addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.TROPICAL_FISH, 25, 8, 8)); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); BiomeDefaultFeatures.addFossilDecoration(builder2); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addMangroveSwampDisks(builder2); BiomeDefaultFeatures.addMangroveSwampVegetation(builder2); - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_SWAMP); + builder2.addFeature(Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_SWAMP); Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_SWAMP); return new Biome.BiomeBuilder() .hasPrecipitation(true) @@ -697,7 +729,9 @@ public class OverworldBiomes { .addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.SALMON, 5, 1, 5)); BiomeDefaultFeatures.commonSpawns(builder); builder.addSpawn(MobCategory.MONSTER, new SpawnerData(EntityType.DROWNED, isCold ? 1 : 100, 1, 1)); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addDefaultSoftDisks(builder2); @@ -707,7 +741,7 @@ public class OverworldBiomes { BiomeDefaultFeatures.addDefaultMushrooms(builder2); BiomeDefaultFeatures.addDefaultExtraVegetation(builder2); if (!isCold) { - builder2.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_RIVER); + builder2.addFeature(Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_RIVER); } float f = isCold ? 0.0F : 0.5F; @@ -722,7 +756,9 @@ public class OverworldBiomes { } BiomeDefaultFeatures.commonSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); BiomeDefaultFeatures.addDefaultSoftDisks(builder2); @@ -743,13 +779,17 @@ public class OverworldBiomes { } public static Biome theVoid(HolderGetter placedFeatures, HolderGetter> worldCarvers) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); - builder.addFeature(GenerationStep.Decoration.TOP_LAYER_MODIFICATION, MiscOverworldPlacements.VOID_START_PLATFORM); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); + builder.addFeature(Decoration.TOP_LAYER_MODIFICATION, MiscOverworldPlacements.VOID_START_PLATFORM); return biome(false, 0.5F, 0.5F, new Builder(), builder, NORMAL_MUSIC); } public static Biome meadowOrCherryGrove(HolderGetter placedFeatures, HolderGetter> worldCarvers, boolean isCherryGrove) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); Builder builder2 = new Builder(); builder2.addSpawn(MobCategory.CREATURE, new SpawnerData(isCherryGrove ? EntityType.PIG : EntityType.DONKEY, 1, 1, 2)) .addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.RABBIT, 2, 2, 6)) @@ -774,7 +814,9 @@ public class OverworldBiomes { } public static Biome frozenPeaks(HolderGetter placedFeatures, HolderGetter> worldCarvers) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); Builder builder2 = new Builder(); builder2.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.GOAT, 5, 1, 3)); BiomeDefaultFeatures.commonSpawns(builder2); @@ -789,7 +831,9 @@ public class OverworldBiomes { } public static Biome jaggedPeaks(HolderGetter placedFeatures, HolderGetter> worldCarvers) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); Builder builder2 = new Builder(); builder2.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.GOAT, 5, 1, 3)); BiomeDefaultFeatures.commonSpawns(builder2); @@ -804,7 +848,9 @@ public class OverworldBiomes { } public static Biome stonyPeaks(HolderGetter placedFeatures, HolderGetter> worldCarvers) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); Builder builder2 = new Builder(); BiomeDefaultFeatures.commonSpawns(builder2); globalOverworldGeneration(builder); @@ -817,7 +863,9 @@ public class OverworldBiomes { } public static Biome snowySlopes(HolderGetter placedFeatures, HolderGetter> worldCarvers) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); Builder builder2 = new Builder(); builder2.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.RABBIT, 4, 2, 3)) .addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.GOAT, 5, 1, 3)); @@ -834,7 +882,9 @@ public class OverworldBiomes { } public static Biome grove(HolderGetter placedFeatures, HolderGetter> worldCarvers) { - BiomeGenerationSettings.Builder builder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); Builder builder2 = new Builder(); builder2.addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.WOLF, 1, 1, 1)) .addSpawn(MobCategory.CREATURE, new SpawnerData(EntityType.RABBIT, 8, 2, 3)) @@ -857,7 +907,9 @@ public class OverworldBiomes { builder.addSpawn(MobCategory.AXOLOTLS, new SpawnerData(EntityType.AXOLOTL, 10, 4, 6)); builder.addSpawn(MobCategory.WATER_AMBIENT, new SpawnerData(EntityType.TROPICAL_FISH, 25, 8, 8)); BiomeDefaultFeatures.commonSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addPlainGrass(builder2); BiomeDefaultFeatures.addDefaultOres(builder2); @@ -871,7 +923,9 @@ public class OverworldBiomes { public static Biome dripstoneCaves(HolderGetter placedFeatures, HolderGetter> worldCarvers) { Builder builder = new Builder(); BiomeDefaultFeatures.dripstoneCavesSpawns(builder); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); globalOverworldGeneration(builder2); BiomeDefaultFeatures.addPlainGrass(builder2); BiomeDefaultFeatures.addDefaultOres(builder2, true); @@ -886,7 +940,9 @@ public class OverworldBiomes { public static Biome deepDark(HolderGetter placedFeatures, HolderGetter> worldCarvers) { Builder builder = new Builder(); - BiomeGenerationSettings.Builder builder2 = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + net.minecraft.world.level.biome.BiomeGenerationSettings.Builder builder2 = new net.minecraft.world.level.biome.BiomeGenerationSettings.Builder( + placedFeatures, worldCarvers + ); builder2.addCarver(Carvers.CAVE); builder2.addCarver(Carvers.CAVE_EXTRA_UNDERGROUND); builder2.addCarver(Carvers.CANYON); diff --git a/net/minecraft/data/worldgen/features/CaveFeatures.java b/net/minecraft/data/worldgen/features/CaveFeatures.java index f1e89f9c..eb2ad05c 100644 --- a/net/minecraft/data/worldgen/features/CaveFeatures.java +++ b/net/minecraft/data/worldgen/features/CaveFeatures.java @@ -23,7 +23,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.CaveVines; import net.minecraft.world.level.block.CaveVinesBlock; -import net.minecraft.world.level.block.MultifaceBlock; +import net.minecraft.world.level.block.MultifaceSpreadeableBlock; import net.minecraft.world.level.block.SmallDripleafBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -204,13 +204,13 @@ public class CaveFeatures { ) ); FeatureUtils.register(context, UNDERWATER_MAGMA, Feature.UNDERWATER_MAGMA, new UnderwaterMagmaConfiguration(5, 1, 0.5F)); - MultifaceBlock multifaceBlock = (MultifaceBlock)Blocks.GLOW_LICHEN; + MultifaceSpreadeableBlock multifaceSpreadeableBlock = (MultifaceSpreadeableBlock)Blocks.GLOW_LICHEN; FeatureUtils.register( context, GLOW_LICHEN, Feature.MULTIFACE_GROWTH, new MultifaceGrowthConfiguration( - multifaceBlock, + multifaceSpreadeableBlock, 20, false, true, @@ -459,13 +459,13 @@ public class CaveFeatures { ); FeatureUtils.register(context, SCULK_PATCH_DEEP_DARK, Feature.SCULK_PATCH, new SculkPatchConfiguration(10, 32, 64, 0, 1, ConstantInt.of(0), 0.5F)); FeatureUtils.register(context, SCULK_PATCH_ANCIENT_CITY, Feature.SCULK_PATCH, new SculkPatchConfiguration(10, 32, 64, 0, 1, UniformInt.of(1, 3), 0.5F)); - MultifaceBlock multifaceBlock2 = (MultifaceBlock)Blocks.SCULK_VEIN; + MultifaceSpreadeableBlock multifaceSpreadeableBlock2 = (MultifaceSpreadeableBlock)Blocks.SCULK_VEIN; FeatureUtils.register( context, SCULK_VEIN, Feature.MULTIFACE_GROWTH, new MultifaceGrowthConfiguration( - multifaceBlock2, + multifaceSpreadeableBlock2, 20, true, true, diff --git a/net/minecraft/data/worldgen/features/TreeFeatures.java b/net/minecraft/data/worldgen/features/TreeFeatures.java index 1defb3e3..d5a37f22 100644 --- a/net/minecraft/data/worldgen/features/TreeFeatures.java +++ b/net/minecraft/data/worldgen/features/TreeFeatures.java @@ -74,6 +74,7 @@ public class TreeFeatures { public static final ResourceKey> OAK = FeatureUtils.createKey("oak"); public static final ResourceKey> DARK_OAK = FeatureUtils.createKey("dark_oak"); public static final ResourceKey> PALE_OAK = FeatureUtils.createKey("pale_oak"); + public static final ResourceKey> PALE_OAK_BONEMEAL = FeatureUtils.createKey("pale_oak_bonemeal"); public static final ResourceKey> PALE_OAK_CREAKING = FeatureUtils.createKey("pale_oak_creaking"); public static final ResourceKey> BIRCH = FeatureUtils.createKey("birch"); public static final ResourceKey> ACACIA = FeatureUtils.createKey("acacia"); @@ -330,6 +331,20 @@ public class TreeFeatures { .ignoreVines() .build() ); + FeatureUtils.register( + context, + PALE_OAK_BONEMEAL, + Feature.TREE, + new TreeConfigurationBuilder( + BlockStateProvider.simple(Blocks.PALE_OAK_LOG), + new DarkOakTrunkPlacer(6, 2, 1), + BlockStateProvider.simple(Blocks.PALE_OAK_LEAVES), + new DarkOakFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0)), + new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty()) + ) + .ignoreVines() + .build() + ); FeatureUtils.register( context, PALE_OAK_CREAKING, diff --git a/net/minecraft/data/worldgen/features/VegetationFeatures.java b/net/minecraft/data/worldgen/features/VegetationFeatures.java index 67257880..d368453a 100644 --- a/net/minecraft/data/worldgen/features/VegetationFeatures.java +++ b/net/minecraft/data/worldgen/features/VegetationFeatures.java @@ -6,6 +6,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderSet; +import net.minecraft.core.Direction.Plane; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.placement.PlacementUtils; @@ -14,7 +15,6 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.tags.BlockTags; import net.minecraft.util.InclusiveRange; import net.minecraft.util.random.SimpleWeightedRandomList; -import net.minecraft.util.random.SimpleWeightedRandomList.Builder; import net.minecraft.util.valueproviders.BiasedToBottomInt; import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.util.valueproviders.UniformInt; @@ -71,10 +71,13 @@ public class VegetationFeatures { public static final ResourceKey> FLOWER_PLAIN = FeatureUtils.createKey("flower_plain"); public static final ResourceKey> FLOWER_MEADOW = FeatureUtils.createKey("flower_meadow"); public static final ResourceKey> FLOWER_CHERRY = FeatureUtils.createKey("flower_cherry"); + public static final ResourceKey> FLOWER_PALE_GARDEN = FeatureUtils.createKey("flower_pale_garden"); public static final ResourceKey> FOREST_FLOWERS = FeatureUtils.createKey("forest_flowers"); + public static final ResourceKey> PALE_FOREST_FLOWERS = FeatureUtils.createKey("pale_forest_flowers"); public static final ResourceKey> DARK_FOREST_VEGETATION = FeatureUtils.createKey("dark_forest_vegetation"); public static final ResourceKey> PALE_GARDEN_VEGETATION = FeatureUtils.createKey("pale_garden_vegetation"); public static final ResourceKey> PALE_MOSS_VEGETATION = FeatureUtils.createKey("pale_moss_vegetation"); + public static final ResourceKey> PALE_MOSS_PATCH = FeatureUtils.createKey("pale_moss_patch"); public static final ResourceKey> PALE_MOSS_PATCH_BONEMEAL = FeatureUtils.createKey("pale_moss_patch_bonemeal"); public static final ResourceKey> TREES_FLOWER_FOREST = FeatureUtils.createKey("trees_flower_forest"); public static final ResourceKey> MEADOW_TREES = FeatureUtils.createKey("meadow_trees"); @@ -402,10 +405,10 @@ public class VegetationFeatures { ) ) ); - Builder builder = SimpleWeightedRandomList.builder(); + SimpleWeightedRandomList.Builder builder = SimpleWeightedRandomList.builder(); for (int i = 1; i <= 4; i++) { - for (Direction direction : Direction.Plane.HORIZONTAL) { + for (Direction direction : Plane.HORIZONTAL) { builder.add(Blocks.PINK_PETALS.defaultBlockState().setValue(PinkPetalsBlock.AMOUNT, i).setValue(PinkPetalsBlock.FACING, direction), 1); } } @@ -416,6 +419,14 @@ public class VegetationFeatures { Feature.FLOWER, new RandomPatchConfiguration(96, 6, 2, PlacementUtils.onlyWhenEmpty(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(new WeightedStateProvider(builder)))) ); + FeatureUtils.register( + context, + FLOWER_PALE_GARDEN, + Feature.FLOWER, + new RandomPatchConfiguration( + 1, 0, 0, PlacementUtils.onlyWhenEmpty(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(BlockStateProvider.simple(Blocks.CLOSED_EYEBLOSSOM), true)) + ) + ); FeatureUtils.register( context, FOREST_FLOWERS, @@ -439,6 +450,12 @@ public class VegetationFeatures { ) ) ); + FeatureUtils.register( + context, + PALE_FOREST_FLOWERS, + Feature.RANDOM_PATCH, + FeatureUtils.simplePatchConfiguration(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(BlockStateProvider.simple(Blocks.CLOSED_EYEBLOSSOM), true)) + ); FeatureUtils.register( context, DARK_FOREST_VEGETATION, @@ -458,7 +475,7 @@ public class VegetationFeatures { context, PALE_GARDEN_VEGETATION, Feature.RANDOM_SELECTOR, - new RandomFeatureConfiguration(List.of(new WeightedPlacedFeature(holder8, 0.2F), new WeightedPlacedFeature(holder7, 0.8F)), holder7) + new RandomFeatureConfiguration(List.of(new WeightedPlacedFeature(holder8, 0.1F), new WeightedPlacedFeature(holder7, 0.9F)), holder7) ); FeatureUtils.register( context, @@ -468,11 +485,28 @@ public class VegetationFeatures { new WeightedStateProvider( SimpleWeightedRandomList.builder() .add(Blocks.PALE_MOSS_CARPET.defaultBlockState(), 25) - .add(Blocks.SHORT_GRASS.defaultBlockState(), 50) + .add(Blocks.SHORT_GRASS.defaultBlockState(), 25) .add(Blocks.TALL_GRASS.defaultBlockState(), 10) ) ) ); + FeatureUtils.register( + context, + PALE_MOSS_PATCH, + Feature.VEGETATION_PATCH, + new VegetationPatchConfiguration( + BlockTags.MOSS_REPLACEABLE, + BlockStateProvider.simple(Blocks.PALE_MOSS_BLOCK), + PlacementUtils.inlinePlaced(holderGetter.getOrThrow(PALE_MOSS_VEGETATION)), + CaveSurface.FLOOR, + ConstantInt.of(1), + 0.0F, + 5, + 0.3F, + UniformInt.of(2, 4), + 0.75F + ) + ); FeatureUtils.register( context, PALE_MOSS_PATCH_BONEMEAL, diff --git a/net/minecraft/data/worldgen/placement/PlacementUtils.java b/net/minecraft/data/worldgen/placement/PlacementUtils.java index 853976c3..263d221c 100644 --- a/net/minecraft/data/worldgen/placement/PlacementUtils.java +++ b/net/minecraft/data/worldgen/placement/PlacementUtils.java @@ -12,8 +12,8 @@ import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.WeightedListInt; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; @@ -27,10 +27,11 @@ import net.minecraft.world.level.levelgen.placement.PlacementFilter; import net.minecraft.world.level.levelgen.placement.PlacementModifier; public class PlacementUtils { - public static final PlacementModifier HEIGHTMAP = HeightmapPlacement.onHeightmap(Heightmap.Types.MOTION_BLOCKING); - public static final PlacementModifier HEIGHTMAP_TOP_SOLID = HeightmapPlacement.onHeightmap(Heightmap.Types.OCEAN_FLOOR_WG); - public static final PlacementModifier HEIGHTMAP_WORLD_SURFACE = HeightmapPlacement.onHeightmap(Heightmap.Types.WORLD_SURFACE_WG); - public static final PlacementModifier HEIGHTMAP_OCEAN_FLOOR = HeightmapPlacement.onHeightmap(Heightmap.Types.OCEAN_FLOOR); + public static final PlacementModifier HEIGHTMAP = HeightmapPlacement.onHeightmap(Types.MOTION_BLOCKING); + public static final PlacementModifier HEIGHTMAP_NO_LEAVES = HeightmapPlacement.onHeightmap(Types.MOTION_BLOCKING_NO_LEAVES); + public static final PlacementModifier HEIGHTMAP_TOP_SOLID = HeightmapPlacement.onHeightmap(Types.OCEAN_FLOOR_WG); + public static final PlacementModifier HEIGHTMAP_WORLD_SURFACE = HeightmapPlacement.onHeightmap(Types.WORLD_SURFACE_WG); + public static final PlacementModifier HEIGHTMAP_OCEAN_FLOOR = HeightmapPlacement.onHeightmap(Types.OCEAN_FLOOR); public static final PlacementModifier FULL_RANGE = HeightRangePlacement.uniform(VerticalAnchor.bottom(), VerticalAnchor.top()); public static final PlacementModifier RANGE_10_10 = HeightRangePlacement.uniform(VerticalAnchor.aboveBottom(10), VerticalAnchor.belowTop(10)); public static final PlacementModifier RANGE_8_8 = HeightRangePlacement.uniform(VerticalAnchor.aboveBottom(8), VerticalAnchor.belowTop(8)); diff --git a/net/minecraft/data/worldgen/placement/VegetationPlacements.java b/net/minecraft/data/worldgen/placement/VegetationPlacements.java index d0f21f36..655f953e 100644 --- a/net/minecraft/data/worldgen/placement/VegetationPlacements.java +++ b/net/minecraft/data/worldgen/placement/VegetationPlacements.java @@ -80,11 +80,14 @@ public class VegetationPlacements { public static final ResourceKey FLOWER_PLAINS = PlacementUtils.createKey("flower_plains"); public static final ResourceKey FLOWER_MEADOW = PlacementUtils.createKey("flower_meadow"); public static final ResourceKey FLOWER_CHERRY = PlacementUtils.createKey("flower_cherry"); + public static final ResourceKey FLOWER_PALE_GARDEN = PlacementUtils.createKey("flower_pale_garden"); public static final ResourceKey TREES_PLAINS = PlacementUtils.createKey("trees_plains"); public static final ResourceKey DARK_FOREST_VEGETATION = PlacementUtils.createKey("dark_forest_vegetation"); public static final ResourceKey PALE_GARDEN_VEGETATION = PlacementUtils.createKey("pale_garden_vegetation"); public static final ResourceKey FLOWER_FOREST_FLOWERS = PlacementUtils.createKey("flower_forest_flowers"); public static final ResourceKey FOREST_FLOWERS = PlacementUtils.createKey("forest_flowers"); + public static final ResourceKey PALE_GARDEN_FLOWERS = PlacementUtils.createKey("pale_garden_flowers"); + public static final ResourceKey PALE_MOSS_PATCH = PlacementUtils.createKey("pale_moss_patch"); public static final ResourceKey TREES_FLOWER_FOREST = PlacementUtils.createKey("trees_flower_forest"); public static final ResourceKey TREES_MEADOW = PlacementUtils.createKey("trees_meadow"); public static final ResourceKey TREES_CHERRY = PlacementUtils.createKey("trees_cherry"); @@ -176,31 +179,34 @@ public class VegetationPlacements { Holder> holder23 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_PLAIN); Holder> holder24 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_MEADOW); Holder> holder25 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_CHERRY); - Holder> holder26 = holderGetter.getOrThrow(VegetationFeatures.TREES_PLAINS); - Holder> holder27 = holderGetter.getOrThrow(VegetationFeatures.DARK_FOREST_VEGETATION); - Holder> holder28 = holderGetter.getOrThrow(VegetationFeatures.PALE_GARDEN_VEGETATION); - Holder> holder29 = holderGetter.getOrThrow(VegetationFeatures.FOREST_FLOWERS); - Holder> holder30 = holderGetter.getOrThrow(VegetationFeatures.TREES_FLOWER_FOREST); - Holder> holder31 = holderGetter.getOrThrow(VegetationFeatures.MEADOW_TREES); - Holder> holder32 = holderGetter.getOrThrow(VegetationFeatures.TREES_TAIGA); - Holder> holder33 = holderGetter.getOrThrow(VegetationFeatures.TREES_GROVE); - Holder> holder34 = holderGetter.getOrThrow(TreeFeatures.OAK); - Holder> holder35 = holderGetter.getOrThrow(TreeFeatures.SPRUCE); - Holder> holder36 = holderGetter.getOrThrow(TreeFeatures.CHERRY_BEES_005); - Holder> holder37 = holderGetter.getOrThrow(TreeFeatures.SWAMP_OAK); - Holder> holder38 = holderGetter.getOrThrow(VegetationFeatures.TREES_SAVANNA); - Holder> holder39 = holderGetter.getOrThrow(VegetationFeatures.BIRCH_TALL); - Holder> holder40 = holderGetter.getOrThrow(TreeFeatures.BIRCH_BEES_0002); - Holder> holder41 = holderGetter.getOrThrow(VegetationFeatures.TREES_WINDSWEPT_HILLS); - Holder> holder42 = holderGetter.getOrThrow(VegetationFeatures.TREES_WATER); - Holder> holder43 = holderGetter.getOrThrow(VegetationFeatures.TREES_BIRCH_AND_OAK); - Holder> holder44 = holderGetter.getOrThrow(VegetationFeatures.TREES_SPARSE_JUNGLE); - Holder> holder45 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_SPRUCE_TAIGA); - Holder> holder46 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_PINE_TAIGA); - Holder> holder47 = holderGetter.getOrThrow(VegetationFeatures.TREES_JUNGLE); - Holder> holder48 = holderGetter.getOrThrow(VegetationFeatures.BAMBOO_VEGETATION); - Holder> holder49 = holderGetter.getOrThrow(VegetationFeatures.MUSHROOM_ISLAND_VEGETATION); - Holder> holder50 = holderGetter.getOrThrow(VegetationFeatures.MANGROVE_VEGETATION); + Holder> holder26 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_PALE_GARDEN); + Holder> holder27 = holderGetter.getOrThrow(VegetationFeatures.TREES_PLAINS); + Holder> holder28 = holderGetter.getOrThrow(VegetationFeatures.DARK_FOREST_VEGETATION); + Holder> holder29 = holderGetter.getOrThrow(VegetationFeatures.PALE_GARDEN_VEGETATION); + Holder> holder30 = holderGetter.getOrThrow(VegetationFeatures.FOREST_FLOWERS); + Holder> holder31 = holderGetter.getOrThrow(VegetationFeatures.PALE_FOREST_FLOWERS); + Holder> holder32 = holderGetter.getOrThrow(VegetationFeatures.PALE_MOSS_PATCH); + Holder> holder33 = holderGetter.getOrThrow(VegetationFeatures.TREES_FLOWER_FOREST); + Holder> holder34 = holderGetter.getOrThrow(VegetationFeatures.MEADOW_TREES); + Holder> holder35 = holderGetter.getOrThrow(VegetationFeatures.TREES_TAIGA); + Holder> holder36 = holderGetter.getOrThrow(VegetationFeatures.TREES_GROVE); + Holder> holder37 = holderGetter.getOrThrow(TreeFeatures.OAK); + Holder> holder38 = holderGetter.getOrThrow(TreeFeatures.SPRUCE); + Holder> holder39 = holderGetter.getOrThrow(TreeFeatures.CHERRY_BEES_005); + Holder> holder40 = holderGetter.getOrThrow(TreeFeatures.SWAMP_OAK); + Holder> holder41 = holderGetter.getOrThrow(VegetationFeatures.TREES_SAVANNA); + Holder> holder42 = holderGetter.getOrThrow(VegetationFeatures.BIRCH_TALL); + Holder> holder43 = holderGetter.getOrThrow(TreeFeatures.BIRCH_BEES_0002); + Holder> holder44 = holderGetter.getOrThrow(VegetationFeatures.TREES_WINDSWEPT_HILLS); + Holder> holder45 = holderGetter.getOrThrow(VegetationFeatures.TREES_WATER); + Holder> holder46 = holderGetter.getOrThrow(VegetationFeatures.TREES_BIRCH_AND_OAK); + Holder> holder47 = holderGetter.getOrThrow(VegetationFeatures.TREES_SPARSE_JUNGLE); + Holder> holder48 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_SPRUCE_TAIGA); + Holder> holder49 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_PINE_TAIGA); + Holder> holder50 = holderGetter.getOrThrow(VegetationFeatures.TREES_JUNGLE); + Holder> holder51 = holderGetter.getOrThrow(VegetationFeatures.BAMBOO_VEGETATION); + Holder> holder52 = holderGetter.getOrThrow(VegetationFeatures.MUSHROOM_ISLAND_VEGETATION); + Holder> holder53 = holderGetter.getOrThrow(VegetationFeatures.MANGROVE_VEGETATION); PlacementUtils.register( context, BAMBOO_LIGHT, holder, RarityFilter.onAverageOnceEvery(4), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome() ); @@ -352,11 +358,14 @@ public class VegetationPlacements { context, FLOWER_CHERRY, holder25, NoiseThresholdCountPlacement.of(-0.8, 5, 10), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome() ); PlacementUtils.register(context, FLOWER_MEADOW, holder24, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()); + PlacementUtils.register( + context, FLOWER_PALE_GARDEN, holder26, RarityFilter.onAverageOnceEvery(32), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome() + ); PlacementModifier placementModifier = SurfaceWaterDepthFilter.forMaxDepth(0); PlacementUtils.register( context, TREES_PLAINS, - holder26, + holder27, PlacementUtils.countExtra(0, 0.05F, 1), InSquarePlacement.spread(), placementModifier, @@ -367,16 +376,6 @@ public class VegetationPlacements { PlacementUtils.register( context, DARK_FOREST_VEGETATION, - holder27, - CountPlacement.of(16), - InSquarePlacement.spread(), - placementModifier, - PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, - BiomeFilter.biome() - ); - PlacementUtils.register( - context, - PALE_GARDEN_VEGETATION, holder28, CountPlacement.of(16), InSquarePlacement.spread(), @@ -386,8 +385,18 @@ public class VegetationPlacements { ); PlacementUtils.register( context, - FLOWER_FOREST_FLOWERS, + PALE_GARDEN_VEGETATION, holder29, + CountPlacement.of(16), + InSquarePlacement.spread(), + placementModifier, + PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, + BiomeFilter.biome() + ); + PlacementUtils.register( + context, + FLOWER_FOREST_FLOWERS, + holder30, RarityFilter.onAverageOnceEvery(7), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, @@ -397,24 +406,36 @@ public class VegetationPlacements { PlacementUtils.register( context, FOREST_FLOWERS, - holder29, + holder30, RarityFilter.onAverageOnceEvery(7), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, CountPlacement.of(ClampedInt.of(UniformInt.of(-3, 1), 0, 1)), BiomeFilter.biome() ); - PlacementUtils.register(context, TREES_FLOWER_FOREST, holder30, treePlacement(PlacementUtils.countExtra(6, 0.1F, 1))); - PlacementUtils.register(context, TREES_MEADOW, holder31, treePlacement(RarityFilter.onAverageOnceEvery(100))); - PlacementUtils.register(context, TREES_CHERRY, holder36, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.CHERRY_SAPLING)); - PlacementUtils.register(context, TREES_TAIGA, holder32, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); - PlacementUtils.register(context, TREES_GROVE, holder33, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); - PlacementUtils.register(context, TREES_BADLANDS, holder34, treePlacement(PlacementUtils.countExtra(5, 0.1F, 1), Blocks.OAK_SAPLING)); - PlacementUtils.register(context, TREES_SNOWY, holder35, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1), Blocks.SPRUCE_SAPLING)); + PlacementUtils.register( + context, + PALE_GARDEN_FLOWERS, + holder31, + RarityFilter.onAverageOnceEvery(8), + InSquarePlacement.spread(), + PlacementUtils.HEIGHTMAP_NO_LEAVES, + BiomeFilter.biome() + ); + PlacementUtils.register( + context, PALE_MOSS_PATCH, holder32, CountPlacement.of(1), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP_NO_LEAVES, BiomeFilter.biome() + ); + PlacementUtils.register(context, TREES_FLOWER_FOREST, holder33, treePlacement(PlacementUtils.countExtra(6, 0.1F, 1))); + PlacementUtils.register(context, TREES_MEADOW, holder34, treePlacement(RarityFilter.onAverageOnceEvery(100))); + PlacementUtils.register(context, TREES_CHERRY, holder39, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.CHERRY_SAPLING)); + PlacementUtils.register(context, TREES_TAIGA, holder35, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); + PlacementUtils.register(context, TREES_GROVE, holder36, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); + PlacementUtils.register(context, TREES_BADLANDS, holder37, treePlacement(PlacementUtils.countExtra(5, 0.1F, 1), Blocks.OAK_SAPLING)); + PlacementUtils.register(context, TREES_SNOWY, holder38, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1), Blocks.SPRUCE_SAPLING)); PlacementUtils.register( context, TREES_SWAMP, - holder37, + holder40, PlacementUtils.countExtra(2, 0.1F, 1), InSquarePlacement.spread(), SurfaceWaterDepthFilter.forMaxDepth(2), @@ -422,24 +443,24 @@ public class VegetationPlacements { BiomeFilter.biome(), BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(Blocks.OAK_SAPLING.defaultBlockState(), BlockPos.ZERO)) ); - PlacementUtils.register(context, TREES_WINDSWEPT_SAVANNA, holder38, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); - PlacementUtils.register(context, TREES_SAVANNA, holder38, treePlacement(PlacementUtils.countExtra(1, 0.1F, 1))); - PlacementUtils.register(context, BIRCH_TALL, holder39, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); - PlacementUtils.register(context, TREES_BIRCH, holder40, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.BIRCH_SAPLING)); - PlacementUtils.register(context, TREES_WINDSWEPT_FOREST, holder41, treePlacement(PlacementUtils.countExtra(3, 0.1F, 1))); - PlacementUtils.register(context, TREES_WINDSWEPT_HILLS, holder41, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); - PlacementUtils.register(context, TREES_WATER, holder42, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); - PlacementUtils.register(context, TREES_BIRCH_AND_OAK, holder43, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); - PlacementUtils.register(context, TREES_SPARSE_JUNGLE, holder44, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); - PlacementUtils.register(context, TREES_OLD_GROWTH_SPRUCE_TAIGA, holder45, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); - PlacementUtils.register(context, TREES_OLD_GROWTH_PINE_TAIGA, holder46, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); - PlacementUtils.register(context, TREES_JUNGLE, holder47, treePlacement(PlacementUtils.countExtra(50, 0.1F, 1))); - PlacementUtils.register(context, BAMBOO_VEGETATION, holder48, treePlacement(PlacementUtils.countExtra(30, 0.1F, 1))); - PlacementUtils.register(context, MUSHROOM_ISLAND_VEGETATION, holder49, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()); + PlacementUtils.register(context, TREES_WINDSWEPT_SAVANNA, holder41, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); + PlacementUtils.register(context, TREES_SAVANNA, holder41, treePlacement(PlacementUtils.countExtra(1, 0.1F, 1))); + PlacementUtils.register(context, BIRCH_TALL, holder42, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); + PlacementUtils.register(context, TREES_BIRCH, holder43, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.BIRCH_SAPLING)); + PlacementUtils.register(context, TREES_WINDSWEPT_FOREST, holder44, treePlacement(PlacementUtils.countExtra(3, 0.1F, 1))); + PlacementUtils.register(context, TREES_WINDSWEPT_HILLS, holder44, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); + PlacementUtils.register(context, TREES_WATER, holder45, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); + PlacementUtils.register(context, TREES_BIRCH_AND_OAK, holder46, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); + PlacementUtils.register(context, TREES_SPARSE_JUNGLE, holder47, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); + PlacementUtils.register(context, TREES_OLD_GROWTH_SPRUCE_TAIGA, holder48, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); + PlacementUtils.register(context, TREES_OLD_GROWTH_PINE_TAIGA, holder49, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); + PlacementUtils.register(context, TREES_JUNGLE, holder50, treePlacement(PlacementUtils.countExtra(50, 0.1F, 1))); + PlacementUtils.register(context, BAMBOO_VEGETATION, holder51, treePlacement(PlacementUtils.countExtra(30, 0.1F, 1))); + PlacementUtils.register(context, MUSHROOM_ISLAND_VEGETATION, holder52, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()); PlacementUtils.register( context, TREES_MANGROVE, - holder50, + holder53, CountPlacement.of(25), InSquarePlacement.spread(), SurfaceWaterDepthFilter.forMaxDepth(5), diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java index 3dcf233f..fac74483 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java @@ -30,6 +30,7 @@ import net.minecraft.server.network.CommonListenerCookie; import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResult.TryEmptyHandInteraction; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; @@ -56,7 +57,7 @@ import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; -import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.pathfinder.Path; @@ -246,8 +247,7 @@ public class GameTestHelper { InteractionHand interactionHand = InteractionHand.MAIN_HAND; InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(interactionHand), this.getLevel(), player, interactionHand, result); if (!interactionResult.consumesAction()) { - if (!(interactionResult instanceof InteractionResult.TryEmptyHandInteraction) - || !blockState.useWithoutItem(this.getLevel(), player, result).consumesAction()) { + if (!(interactionResult instanceof TryEmptyHandInteraction) || !blockState.useWithoutItem(this.getLevel(), player, result).consumesAction()) { UseOnContext useOnContext = new UseOnContext(player, interactionHand, result); player.getItemInHand(interactionHand).useOn(useOnContext); } @@ -832,7 +832,7 @@ public class GameTestHelper { } } - public int getHeight(Heightmap.Types heightmapType, int x, int z) { + public int getHeight(Types heightmapType, int x, int z) { BlockPos blockPos = this.absolutePos(new BlockPos(x, 0, z)); return this.relativePos(this.getLevel().getHeightmapPos(heightmapType, blockPos)).getY(); } diff --git a/net/minecraft/gametest/framework/GameTestServer.java b/net/minecraft/gametest/framework/GameTestServer.java index e97c2788..1e3bed89 100644 --- a/net/minecraft/gametest/framework/GameTestServer.java +++ b/net/minecraft/gametest/framework/GameTestServer.java @@ -16,7 +16,7 @@ import net.minecraft.CrashReport; import net.minecraft.ReportType; import net.minecraft.SystemReport; import net.minecraft.Util; -import net.minecraft.commands.Commands; +import net.minecraft.commands.Commands.CommandSelection; import net.minecraft.core.BlockPos; import net.minecraft.core.LayeredRegistryAccess; import net.minecraft.core.MappedRegistry; @@ -28,6 +28,9 @@ import net.minecraft.server.RegistryLayer; import net.minecraft.server.Services; import net.minecraft.server.WorldLoader; import net.minecraft.server.WorldStem; +import net.minecraft.server.WorldLoader.DataLoadOutput; +import net.minecraft.server.WorldLoader.InitConfig; +import net.minecraft.server.WorldLoader.PackConfig; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.progress.LoggerChunkProgressListener; import net.minecraft.server.packs.repository.PackRepository; @@ -44,11 +47,11 @@ import net.minecraft.world.level.GameType; import net.minecraft.world.level.LevelSettings; import net.minecraft.world.level.WorldDataConfiguration; import net.minecraft.world.level.dimension.LevelStem; -import net.minecraft.world.level.levelgen.WorldDimensions; import net.minecraft.world.level.levelgen.WorldOptions; +import net.minecraft.world.level.levelgen.WorldDimensions.Complete; import net.minecraft.world.level.levelgen.presets.WorldPresets; -import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.PrimaryLevelData; +import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -76,11 +79,7 @@ public class GameTestServer extends MinecraftServer { private MultipleTestTracker testTracker; public static GameTestServer create( - Thread serverThread, - LevelStorageSource.LevelStorageAccess storageSource, - PackRepository packRepository, - Collection testBatches, - BlockPos spawnPos + Thread serverThread, LevelStorageAccess storageSource, PackRepository packRepository, Collection testBatches, BlockPos spawnPos ) { if (testBatches.isEmpty()) { throw new IllegalArgumentException("No test functions were given!"); @@ -90,8 +89,8 @@ public class GameTestServer extends MinecraftServer { new DataPackConfig(new ArrayList(packRepository.getAvailableIds()), List.of()), ENABLED_FEATURES ); LevelSettings levelSettings = new LevelSettings("Test Level", GameType.CREATIVE, false, Difficulty.NORMAL, true, TEST_GAME_RULES, worldDataConfiguration); - WorldLoader.PackConfig packConfig = new WorldLoader.PackConfig(packRepository, worldDataConfiguration, false, true); - WorldLoader.InitConfig initConfig = new WorldLoader.InitConfig(packConfig, Commands.CommandSelection.DEDICATED, 4); + PackConfig packConfig = new PackConfig(packRepository, worldDataConfiguration, false, true); + InitConfig initConfig = new InitConfig(packConfig, CommandSelection.DEDICATED, 4); try { LOGGER.debug("Starting resource loading"); @@ -101,13 +100,13 @@ public class GameTestServer extends MinecraftServer { initConfig, dataLoadContext -> { Registry registry = new MappedRegistry<>(Registries.LEVEL_STEM, Lifecycle.stable()).freeze(); - WorldDimensions.Complete complete = dataLoadContext.datapackWorldgen() + Complete complete = dataLoadContext.datapackWorldgen() .lookupOrThrow(Registries.WORLD_PRESET) .getOrThrow(WorldPresets.FLAT) .value() .createWorldDimensions() .bake(registry); - return new WorldLoader.DataLoadOutput<>( + return new DataLoadOutput<>( new PrimaryLevelData(levelSettings, WORLD_OPTIONS, complete.specialWorldProperty(), complete.lifecycle()), complete.dimensionsRegistryAccess() ); }, @@ -130,7 +129,7 @@ public class GameTestServer extends MinecraftServer { private GameTestServer( Thread serverThread, - LevelStorageSource.LevelStorageAccess storageSource, + LevelStorageAccess storageSource, PackRepository packRepository, WorldStem worldStem, Collection testBatches, diff --git a/net/minecraft/nbt/ByteArrayTag.java b/net/minecraft/nbt/ByteArrayTag.java index 3c7530c7..3a8314ea 100644 --- a/net/minecraft/nbt/ByteArrayTag.java +++ b/net/minecraft/nbt/ByteArrayTag.java @@ -5,17 +5,19 @@ import java.io.DataOutput; import java.io.IOException; import java.util.Arrays; import java.util.List; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.VariableSize; import org.apache.commons.lang3.ArrayUtils; public class ByteArrayTag extends CollectionTag { private static final int SELF_SIZE_IN_BYTES = 24; - public static final TagType TYPE = new TagType.VariableSize() { - public ByteArrayTag load(DataInput input, NbtAccounter accounter) throws IOException { - return new ByteArrayTag(readAccounted(input, accounter)); + public static final TagType TYPE = new VariableSize() { + public ByteArrayTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return new ByteArrayTag(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -122,14 +124,14 @@ public class ByteArrayTag extends CollectionTag { return ByteTag.valueOf(this.data[index]); } - public ByteTag set(int index, ByteTag tag) { - byte b = this.data[index]; - this.data[index] = tag.getAsByte(); + public ByteTag set(int i, ByteTag byteTag) { + byte b = this.data[i]; + this.data[i] = byteTag.getAsByte(); return ByteTag.valueOf(b); } - public void add(int index, ByteTag tag) { - this.data = ArrayUtils.add(this.data, index, tag.getAsByte()); + public void add(int i, ByteTag byteTag) { + this.data = ArrayUtils.add(this.data, i, byteTag.getAsByte()); } @Override @@ -152,9 +154,9 @@ public class ByteArrayTag extends CollectionTag { } } - public ByteTag remove(int index) { - byte b = this.data[index]; - this.data = ArrayUtils.remove(this.data, index); + public ByteTag remove(int i) { + byte b = this.data[i]; + this.data = ArrayUtils.remove(this.data, i); return ByteTag.valueOf(b); } @@ -168,7 +170,7 @@ public class ByteArrayTag extends CollectionTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } } diff --git a/net/minecraft/nbt/ByteTag.java b/net/minecraft/nbt/ByteTag.java index 8dafe292..8adec2e7 100644 --- a/net/minecraft/nbt/ByteTag.java +++ b/net/minecraft/nbt/ByteTag.java @@ -3,16 +3,18 @@ package net.minecraft.nbt; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.StaticSize; public class ByteTag extends NumericTag { private static final int SELF_SIZE_IN_BYTES = 9; - public static final TagType TYPE = new TagType.StaticSize() { - public ByteTag load(DataInput input, NbtAccounter accounter) throws IOException { - return ByteTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new StaticSize() { + public ByteTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return ByteTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -77,9 +79,6 @@ public class ByteTag extends NumericTag { return TYPE; } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public ByteTag copy() { return this; } @@ -133,7 +132,7 @@ public class ByteTag extends NumericTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } diff --git a/net/minecraft/nbt/CompoundTag.java b/net/minecraft/nbt/CompoundTag.java index dee1fb80..a0ca219f 100644 --- a/net/minecraft/nbt/CompoundTag.java +++ b/net/minecraft/nbt/CompoundTag.java @@ -18,6 +18,9 @@ import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; import net.minecraft.CrashReportDetail; import net.minecraft.ReportedException; +import net.minecraft.nbt.StreamTagVisitor.EntryResult; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.VariableSize; import org.jetbrains.annotations.Nullable; public class CompoundTag implements Tag { @@ -33,15 +36,15 @@ public class CompoundTag implements Tag { ); private static final int SELF_SIZE_IN_BYTES = 48; private static final int MAP_ENTRY_SIZE_IN_BYTES = 32; - public static final TagType TYPE = new TagType.VariableSize() { - public CompoundTag load(DataInput input, NbtAccounter accounter) throws IOException { - accounter.pushDepth(); + public static final TagType TYPE = new VariableSize() { + public CompoundTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + nbtAccounter.pushDepth(); CompoundTag var3; try { - var3 = loadCompound(input, accounter); + var3 = loadCompound(dataInput, nbtAccounter); } finally { - accounter.popDepth(); + nbtAccounter.popDepth(); } return var3; @@ -64,10 +67,10 @@ public class CompoundTag implements Tag { } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { accounter.pushDepth(); - StreamTagVisitor.ValueResult var4; + ValueResult var4; try { var4 = parseCompound(input, visitor, accounter); } finally { @@ -77,7 +80,7 @@ public class CompoundTag implements Tag { return var4; } - private static StreamTagVisitor.ValueResult parseCompound(DataInput input, StreamTagVisitor visitor, NbtAccounter nbtAccounter) throws IOException { + private static ValueResult parseCompound(DataInput input, StreamTagVisitor visitor, NbtAccounter nbtAccounter) throws IOException { nbtAccounter.accountBytes(48L); byte b; @@ -86,7 +89,7 @@ public class CompoundTag implements Tag { TagType tagType = TagTypes.getType(b); switch (visitor.visitEntry(tagType)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: StringTag.skipString(input); tagType.skip(input, nbtAccounter); @@ -99,7 +102,7 @@ public class CompoundTag implements Tag { String string = readString(input, nbtAccounter); switch (visitor.visitEntry(tagType, string)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: tagType.skip(input, nbtAccounter); break label35; @@ -110,7 +113,7 @@ public class CompoundTag implements Tag { nbtAccounter.accountBytes(36L); switch (tagType.parse(input, visitor, nbtAccounter)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: } } @@ -485,9 +488,6 @@ public class CompoundTag implements Tag { return new CompoundTag(new HashMap(this.tags)); } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public CompoundTag copy() { Map map = Maps.newHashMap(Maps.transformValues(this.tags, Tag::copy)); return new CompoundTag(map); @@ -553,14 +553,14 @@ public class CompoundTag implements Tag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { for (Entry entry : this.tags.entrySet()) { Tag tag = (Tag)entry.getValue(); TagType tagType = tag.getType(); - StreamTagVisitor.EntryResult entryResult = visitor.visitEntry(tagType); + EntryResult entryResult = visitor.visitEntry(tagType); switch (entryResult) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: return visitor.visitContainerEnd(); case SKIP: @@ -569,16 +569,16 @@ public class CompoundTag implements Tag { entryResult = visitor.visitEntry(tagType, (String)entry.getKey()); switch (entryResult) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: return visitor.visitContainerEnd(); case SKIP: break; default: - StreamTagVisitor.ValueResult valueResult = tag.accept(visitor); + ValueResult valueResult = tag.accept(visitor); switch (valueResult) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: return visitor.visitContainerEnd(); } diff --git a/net/minecraft/nbt/DoubleTag.java b/net/minecraft/nbt/DoubleTag.java index e6f762d8..e6f480e4 100644 --- a/net/minecraft/nbt/DoubleTag.java +++ b/net/minecraft/nbt/DoubleTag.java @@ -3,18 +3,20 @@ package net.minecraft.nbt; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.StaticSize; import net.minecraft.util.Mth; public class DoubleTag extends NumericTag { private static final int SELF_SIZE_IN_BYTES = 16; public static final DoubleTag ZERO = new DoubleTag(0.0); - public static final TagType TYPE = new TagType.StaticSize() { - public DoubleTag load(DataInput input, NbtAccounter accounter) throws IOException { - return DoubleTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new StaticSize() { + public DoubleTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return DoubleTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -73,9 +75,6 @@ public class DoubleTag extends NumericTag { return TYPE; } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public DoubleTag copy() { return this; } @@ -130,7 +129,7 @@ public class DoubleTag extends NumericTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } } diff --git a/net/minecraft/nbt/FloatTag.java b/net/minecraft/nbt/FloatTag.java index 2fcf4f03..de47c708 100644 --- a/net/minecraft/nbt/FloatTag.java +++ b/net/minecraft/nbt/FloatTag.java @@ -3,18 +3,20 @@ package net.minecraft.nbt; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.StaticSize; import net.minecraft.util.Mth; public class FloatTag extends NumericTag { private static final int SELF_SIZE_IN_BYTES = 12; public static final FloatTag ZERO = new FloatTag(0.0F); - public static final TagType TYPE = new TagType.StaticSize() { - public FloatTag load(DataInput input, NbtAccounter accounter) throws IOException { - return FloatTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new StaticSize() { + public FloatTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return FloatTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -73,9 +75,6 @@ public class FloatTag extends NumericTag { return TYPE; } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public FloatTag copy() { return this; } @@ -129,7 +128,7 @@ public class FloatTag extends NumericTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } } diff --git a/net/minecraft/nbt/IntArrayTag.java b/net/minecraft/nbt/IntArrayTag.java index 1d814a74..a51858a6 100644 --- a/net/minecraft/nbt/IntArrayTag.java +++ b/net/minecraft/nbt/IntArrayTag.java @@ -5,17 +5,19 @@ import java.io.DataOutput; import java.io.IOException; import java.util.Arrays; import java.util.List; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.VariableSize; import org.apache.commons.lang3.ArrayUtils; public class IntArrayTag extends CollectionTag { private static final int SELF_SIZE_IN_BYTES = 24; - public static final TagType TYPE = new TagType.VariableSize() { - public IntArrayTag load(DataInput input, NbtAccounter accounter) throws IOException { - return new IntArrayTag(readAccounted(input, accounter)); + public static final TagType TYPE = new VariableSize() { + public IntArrayTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return new IntArrayTag(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -97,9 +99,6 @@ public class IntArrayTag extends CollectionTag { return this.getAsString(); } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public IntArrayTag copy() { int[] is = new int[this.data.length]; System.arraycopy(this.data, 0, is, 0, this.data.length); @@ -131,14 +130,14 @@ public class IntArrayTag extends CollectionTag { return IntTag.valueOf(this.data[index]); } - public IntTag set(int index, IntTag tag) { - int i = this.data[index]; - this.data[index] = tag.getAsInt(); - return IntTag.valueOf(i); + public IntTag set(int i, IntTag intTag) { + int j = this.data[i]; + this.data[i] = intTag.getAsInt(); + return IntTag.valueOf(j); } - public void add(int index, IntTag tag) { - this.data = ArrayUtils.add(this.data, index, tag.getAsInt()); + public void add(int i, IntTag intTag) { + this.data = ArrayUtils.add(this.data, i, intTag.getAsInt()); } @Override @@ -161,10 +160,10 @@ public class IntArrayTag extends CollectionTag { } } - public IntTag remove(int index) { - int i = this.data[index]; - this.data = ArrayUtils.remove(this.data, index); - return IntTag.valueOf(i); + public IntTag remove(int i) { + int j = this.data[i]; + this.data = ArrayUtils.remove(this.data, i); + return IntTag.valueOf(j); } @Override @@ -177,7 +176,7 @@ public class IntArrayTag extends CollectionTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } } diff --git a/net/minecraft/nbt/IntTag.java b/net/minecraft/nbt/IntTag.java index 68a65b35..26aae904 100644 --- a/net/minecraft/nbt/IntTag.java +++ b/net/minecraft/nbt/IntTag.java @@ -3,16 +3,18 @@ package net.minecraft.nbt; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.StaticSize; public class IntTag extends NumericTag { private static final int SELF_SIZE_IN_BYTES = 12; - public static final TagType TYPE = new TagType.StaticSize() { - public IntTag load(DataInput input, NbtAccounter accounter) throws IOException { - return IntTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new StaticSize() { + public IntTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return IntTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -71,9 +73,6 @@ public class IntTag extends NumericTag { return TYPE; } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public IntTag copy() { return this; } @@ -127,7 +126,7 @@ public class IntTag extends NumericTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } diff --git a/net/minecraft/nbt/ListTag.java b/net/minecraft/nbt/ListTag.java index d6c0a5f0..000873fc 100644 --- a/net/minecraft/nbt/ListTag.java +++ b/net/minecraft/nbt/ListTag.java @@ -8,18 +8,20 @@ import java.io.IOException; import java.util.List; import java.util.Locale; import java.util.Objects; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.VariableSize; public class ListTag extends CollectionTag { private static final int SELF_SIZE_IN_BYTES = 37; - public static final TagType TYPE = new TagType.VariableSize() { - public ListTag load(DataInput input, NbtAccounter accounter) throws IOException { - accounter.pushDepth(); + public static final TagType TYPE = new VariableSize() { + public ListTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + nbtAccounter.pushDepth(); ListTag var3; try { - var3 = loadList(input, accounter); + var3 = loadList(dataInput, nbtAccounter); } finally { - accounter.popDepth(); + nbtAccounter.popDepth(); } return var3; @@ -45,10 +47,10 @@ public class ListTag extends CollectionTag { } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { accounter.pushDepth(); - StreamTagVisitor.ValueResult var4; + ValueResult var4; try { var4 = parseList(input, visitor, accounter); } finally { @@ -58,13 +60,13 @@ public class ListTag extends CollectionTag { return var4; } - private static StreamTagVisitor.ValueResult parseList(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + private static ValueResult parseList(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { accounter.accountBytes(37L); TagType tagType = TagTypes.getType(input.readByte()); int i = input.readInt(); switch (visitor.visitList(tagType, i)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: tagType.skip(input, i, accounter); return visitor.visitContainerEnd(); @@ -77,7 +79,7 @@ public class ListTag extends CollectionTag { if (j < i) { switch (visitor.visitElement(tagType, j)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: tagType.skip(input, accounter); break; @@ -87,7 +89,7 @@ public class ListTag extends CollectionTag { default: switch (tagType.parse(input, visitor, accounter)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: break; default: @@ -357,9 +359,6 @@ public class ListTag extends CollectionTag { } } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public ListTag copy() { Iterable iterable = (Iterable)(TagTypes.getType(this.type).isValue() ? this.list : Iterables.transform(this.list, Tag::copy)); List list = Lists.newArrayList(iterable); @@ -390,10 +389,10 @@ public class ListTag extends CollectionTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { switch (visitor.visitList(TagTypes.getType(this.type), this.list.size())) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: return visitor.visitContainerEnd(); default: @@ -403,13 +402,13 @@ public class ListTag extends CollectionTag { Tag tag = (Tag)this.list.get(i); switch (visitor.visitElement(tag.getType(), i)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: return visitor.visitContainerEnd(); default: switch (tag.accept(visitor)) { case HALT: - return StreamTagVisitor.ValueResult.HALT; + return ValueResult.HALT; case BREAK: return visitor.visitContainerEnd(); } diff --git a/net/minecraft/nbt/LongArrayTag.java b/net/minecraft/nbt/LongArrayTag.java index 928b5f3a..e4a452f1 100644 --- a/net/minecraft/nbt/LongArrayTag.java +++ b/net/minecraft/nbt/LongArrayTag.java @@ -6,17 +6,19 @@ import java.io.DataOutput; import java.io.IOException; import java.util.Arrays; import java.util.List; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.VariableSize; import org.apache.commons.lang3.ArrayUtils; public class LongArrayTag extends CollectionTag { private static final int SELF_SIZE_IN_BYTES = 24; - public static final TagType TYPE = new TagType.VariableSize() { - public LongArrayTag load(DataInput input, NbtAccounter accounter) throws IOException { - return new LongArrayTag(readAccounted(input, accounter)); + public static final TagType TYPE = new VariableSize() { + public LongArrayTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return new LongArrayTag(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -102,9 +104,6 @@ public class LongArrayTag extends CollectionTag { return this.getAsString(); } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public LongArrayTag copy() { long[] ls = new long[this.data.length]; System.arraycopy(this.data, 0, ls, 0, this.data.length); @@ -136,14 +135,14 @@ public class LongArrayTag extends CollectionTag { return LongTag.valueOf(this.data[index]); } - public LongTag set(int index, LongTag tag) { - long l = this.data[index]; - this.data[index] = tag.getAsLong(); + public LongTag set(int i, LongTag longTag) { + long l = this.data[i]; + this.data[i] = longTag.getAsLong(); return LongTag.valueOf(l); } - public void add(int index, LongTag tag) { - this.data = ArrayUtils.add(this.data, index, tag.getAsLong()); + public void add(int i, LongTag longTag) { + this.data = ArrayUtils.add(this.data, i, longTag.getAsLong()); } @Override @@ -166,9 +165,9 @@ public class LongArrayTag extends CollectionTag { } } - public LongTag remove(int index) { - long l = this.data[index]; - this.data = ArrayUtils.remove(this.data, index); + public LongTag remove(int i) { + long l = this.data[i]; + this.data = ArrayUtils.remove(this.data, i); return LongTag.valueOf(l); } @@ -182,7 +181,7 @@ public class LongArrayTag extends CollectionTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } } diff --git a/net/minecraft/nbt/LongTag.java b/net/minecraft/nbt/LongTag.java index f92c86c8..e27d6040 100644 --- a/net/minecraft/nbt/LongTag.java +++ b/net/minecraft/nbt/LongTag.java @@ -3,16 +3,18 @@ package net.minecraft.nbt; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.StaticSize; public class LongTag extends NumericTag { private static final int SELF_SIZE_IN_BYTES = 16; - public static final TagType TYPE = new TagType.StaticSize() { - public LongTag load(DataInput input, NbtAccounter accounter) throws IOException { - return LongTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new StaticSize() { + public LongTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return LongTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -71,9 +73,6 @@ public class LongTag extends NumericTag { return TYPE; } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public LongTag copy() { return this; } @@ -127,7 +126,7 @@ public class LongTag extends NumericTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } diff --git a/net/minecraft/nbt/ShortTag.java b/net/minecraft/nbt/ShortTag.java index 5663d5fb..2bc7039c 100644 --- a/net/minecraft/nbt/ShortTag.java +++ b/net/minecraft/nbt/ShortTag.java @@ -3,16 +3,18 @@ package net.minecraft.nbt; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.StaticSize; public class ShortTag extends NumericTag { private static final int SELF_SIZE_IN_BYTES = 10; - public static final TagType TYPE = new TagType.StaticSize() { - public ShortTag load(DataInput input, NbtAccounter accounter) throws IOException { - return ShortTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new StaticSize() { + public ShortTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return ShortTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -71,9 +73,6 @@ public class ShortTag extends NumericTag { return TYPE; } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public ShortTag copy() { return this; } @@ -127,7 +126,7 @@ public class ShortTag extends NumericTag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } diff --git a/net/minecraft/nbt/StringTag.java b/net/minecraft/nbt/StringTag.java index 4e6c140e..748cdaf6 100644 --- a/net/minecraft/nbt/StringTag.java +++ b/net/minecraft/nbt/StringTag.java @@ -4,16 +4,18 @@ import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.Objects; +import net.minecraft.nbt.StreamTagVisitor.ValueResult; +import net.minecraft.nbt.TagType.VariableSize; public class StringTag implements Tag { private static final int SELF_SIZE_IN_BYTES = 36; - public static final TagType TYPE = new TagType.VariableSize() { - public StringTag load(DataInput input, NbtAccounter accounter) throws IOException { - return StringTag.valueOf(readAccounted(input, accounter)); + public static final TagType TYPE = new VariableSize() { + public StringTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException { + return StringTag.valueOf(readAccounted(dataInput, nbtAccounter)); } @Override - public StreamTagVisitor.ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { + public ValueResult parse(DataInput input, StreamTagVisitor visitor, NbtAccounter accounter) throws IOException { return visitor.visit(readAccounted(input, accounter)); } @@ -89,9 +91,6 @@ public class StringTag implements Tag { return Tag.super.getAsString(); } - /** - * Creates a deep copy of the value held by this tag. Primitive and string tage will return the same tag instance while all other objects will return a new tag instance with the copied data. - */ public StringTag copy() { return this; } @@ -145,7 +144,7 @@ public class StringTag implements Tag { } @Override - public StreamTagVisitor.ValueResult accept(StreamTagVisitor visitor) { + public ValueResult accept(StreamTagVisitor visitor) { return visitor.visit(this.data); } } diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java index c4d80ccf..06de75fb 100644 --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java @@ -43,6 +43,10 @@ import java.util.function.Supplier; import javax.crypto.Cipher; import net.minecraft.SharedConstants; import net.minecraft.Util; +import net.minecraft.network.UnconfiguredPipelineHandler.Inbound; +import net.minecraft.network.UnconfiguredPipelineHandler.InboundConfigurationTask; +import net.minecraft.network.UnconfiguredPipelineHandler.Outbound; +import net.minecraft.network.UnconfiguredPipelineHandler.OutboundConfigurationTask; import net.minecraft.network.chat.Component; import net.minecraft.network.protocol.BundlerInfo; import net.minecraft.network.protocol.Packet; @@ -234,7 +238,7 @@ public class Connection extends SimpleChannelInboundHandler> { } else { this.packetListener = packetInfo; this.disconnectListener = null; - UnconfiguredPipelineHandler.InboundConfigurationTask inboundConfigurationTask = UnconfiguredPipelineHandler.setupInboundProtocol(protocolInfo); + InboundConfigurationTask inboundConfigurationTask = UnconfiguredPipelineHandler.setupInboundProtocol(protocolInfo); BundlerInfo bundlerInfo = protocolInfo.bundlerInfo(); if (bundlerInfo != null) { PacketBundlePacker packetBundlePacker = new PacketBundlePacker(bundlerInfo); @@ -251,7 +255,7 @@ public class Connection extends SimpleChannelInboundHandler> { if (protocolInfo.flow() != this.getSending()) { throw new IllegalStateException("Invalid outbound protocol: " + protocolInfo.id()); } else { - UnconfiguredPipelineHandler.OutboundConfigurationTask outboundConfigurationTask = UnconfiguredPipelineHandler.setupOutboundProtocol(protocolInfo); + OutboundConfigurationTask outboundConfigurationTask = UnconfiguredPipelineHandler.setupOutboundProtocol(protocolInfo); BundlerInfo bundlerInfo = protocolInfo.bundlerInfo(); if (bundlerInfo != null) { PacketBundleUnpacker packetBundleUnpacker = new PacketBundleUnpacker(bundlerInfo); @@ -541,20 +545,20 @@ public class Connection extends SimpleChannelInboundHandler> { boolean bl2 = packetFlow == PacketFlow.SERVERBOUND; pipeline.addLast("splitter", createFrameDecoder(bandwithDebugMonitor, memoryOnly)) .addLast(new FlowControlHandler()) - .addLast(inboundHandlerName(bl), (ChannelHandler)(bl ? new PacketDecoder<>(INITIAL_PROTOCOL) : new UnconfiguredPipelineHandler.Inbound())) + .addLast(inboundHandlerName(bl), (ChannelHandler)(bl ? new PacketDecoder<>(INITIAL_PROTOCOL) : new Inbound())) .addLast("prepender", createFrameEncoder(memoryOnly)) - .addLast(outboundHandlerName(bl2), (ChannelHandler)(bl2 ? new PacketEncoder<>(INITIAL_PROTOCOL) : new UnconfiguredPipelineHandler.Outbound())); + .addLast(outboundHandlerName(bl2), (ChannelHandler)(bl2 ? new PacketEncoder<>(INITIAL_PROTOCOL) : new Outbound())); } private static ChannelOutboundHandler createFrameEncoder(boolean memoryOnly) { - return (ChannelOutboundHandler)(memoryOnly ? new NoOpFrameEncoder() : new Varint21LengthFieldPrepender()); + return (ChannelOutboundHandler)(memoryOnly ? new LocalFrameEncoder() : new Varint21LengthFieldPrepender()); } private static ChannelInboundHandler createFrameDecoder(@Nullable BandwidthDebugMonitor bandwithDebugMonitor, boolean memoryOnly) { if (!memoryOnly) { return new Varint21FrameDecoder(bandwithDebugMonitor); } else { - return (ChannelInboundHandler)(bandwithDebugMonitor != null ? new MonitorFrameDecoder(bandwithDebugMonitor) : new NoOpFrameDecoder()); + return (ChannelInboundHandler)(bandwithDebugMonitor != null ? new MonitoredLocalFrameDecoder(bandwithDebugMonitor) : new LocalFrameDecoder()); } } diff --git a/net/minecraft/network/HiddenByteBuf.java b/net/minecraft/network/HiddenByteBuf.java new file mode 100644 index 00000000..de0b49a3 --- /dev/null +++ b/net/minecraft/network/HiddenByteBuf.java @@ -0,0 +1,54 @@ +package net.minecraft.network; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; +import io.netty.util.ReferenceCounted; + +public record HiddenByteBuf(ByteBuf contents) implements ReferenceCounted { + public HiddenByteBuf(final ByteBuf contents) { + this.contents = ByteBufUtil.ensureAccessible(contents); + } + + public static Object pack(Object object) { + return object instanceof ByteBuf byteBuf ? new HiddenByteBuf(byteBuf) : object; + } + + public static Object unpack(Object object) { + return object instanceof HiddenByteBuf hiddenByteBuf ? ByteBufUtil.ensureAccessible(hiddenByteBuf.contents) : object; + } + + @Override + public int refCnt() { + return this.contents.refCnt(); + } + + public HiddenByteBuf retain() { + this.contents.retain(); + return this; + } + + public HiddenByteBuf retain(int i) { + this.contents.retain(i); + return this; + } + + public HiddenByteBuf touch() { + this.contents.touch(); + return this; + } + + public HiddenByteBuf touch(Object object) { + this.contents.touch(object); + return this; + } + + @Override + public boolean release() { + return this.contents.release(); + } + + @Override + public boolean release(int i) { + return this.contents.release(i); + } +} diff --git a/net/minecraft/network/LocalFrameDecoder.java b/net/minecraft/network/LocalFrameDecoder.java new file mode 100644 index 00000000..90ad9c40 --- /dev/null +++ b/net/minecraft/network/LocalFrameDecoder.java @@ -0,0 +1,11 @@ +package net.minecraft.network; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; + +public class LocalFrameDecoder extends ChannelInboundHandlerAdapter { + @Override + public void channelRead(ChannelHandlerContext channelHandlerContext, Object object) { + channelHandlerContext.fireChannelRead(HiddenByteBuf.unpack(object)); + } +} diff --git a/net/minecraft/network/LocalFrameEncoder.java b/net/minecraft/network/LocalFrameEncoder.java new file mode 100644 index 00000000..dfff5713 --- /dev/null +++ b/net/minecraft/network/LocalFrameEncoder.java @@ -0,0 +1,12 @@ +package net.minecraft.network; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelOutboundHandlerAdapter; +import io.netty.channel.ChannelPromise; + +public class LocalFrameEncoder extends ChannelOutboundHandlerAdapter { + @Override + public void write(ChannelHandlerContext channelHandlerContext, Object object, ChannelPromise channelPromise) { + channelHandlerContext.write(HiddenByteBuf.pack(object), channelPromise); + } +} diff --git a/net/minecraft/network/MonitorFrameDecoder.java b/net/minecraft/network/MonitorFrameDecoder.java deleted file mode 100644 index 86728ce6..00000000 --- a/net/minecraft/network/MonitorFrameDecoder.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minecraft.network; - -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; - -public class MonitorFrameDecoder extends ChannelInboundHandlerAdapter { - private final BandwidthDebugMonitor monitor; - - public MonitorFrameDecoder(BandwidthDebugMonitor monitor) { - this.monitor = monitor; - } - - @Override - public void channelRead(ChannelHandlerContext channelHandlerContext, Object object) { - if (object instanceof ByteBuf byteBuf) { - this.monitor.onReceive(byteBuf.readableBytes()); - } - - channelHandlerContext.fireChannelRead(object); - } -} diff --git a/net/minecraft/network/MonitoredLocalFrameDecoder.java b/net/minecraft/network/MonitoredLocalFrameDecoder.java new file mode 100644 index 00000000..21231683 --- /dev/null +++ b/net/minecraft/network/MonitoredLocalFrameDecoder.java @@ -0,0 +1,23 @@ +package net.minecraft.network; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; + +public class MonitoredLocalFrameDecoder extends ChannelInboundHandlerAdapter { + private final BandwidthDebugMonitor monitor; + + public MonitoredLocalFrameDecoder(BandwidthDebugMonitor monitor) { + this.monitor = monitor; + } + + @Override + public void channelRead(ChannelHandlerContext channelHandlerContext, Object object) { + object = HiddenByteBuf.unpack(object); + if (object instanceof ByteBuf byteBuf) { + this.monitor.onReceive(byteBuf.readableBytes()); + } + + channelHandlerContext.fireChannelRead(object); + } +} diff --git a/net/minecraft/network/NoOpFrameDecoder.java b/net/minecraft/network/NoOpFrameDecoder.java deleted file mode 100644 index 49d3f564..00000000 --- a/net/minecraft/network/NoOpFrameDecoder.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.minecraft.network; - -import io.netty.channel.ChannelInboundHandlerAdapter; - -public class NoOpFrameDecoder extends ChannelInboundHandlerAdapter { -} diff --git a/net/minecraft/network/NoOpFrameEncoder.java b/net/minecraft/network/NoOpFrameEncoder.java deleted file mode 100644 index fc31978b..00000000 --- a/net/minecraft/network/NoOpFrameEncoder.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.minecraft.network; - -import io.netty.channel.ChannelOutboundHandlerAdapter; - -public class NoOpFrameEncoder extends ChannelOutboundHandlerAdapter { -} diff --git a/net/minecraft/network/chat/Style.java b/net/minecraft/network/chat/Style.java index 84f4cf4a..927ae064 100644 --- a/net/minecraft/network/chat/Style.java +++ b/net/minecraft/network/chat/Style.java @@ -10,6 +10,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ExtraCodecs; import org.jetbrains.annotations.Nullable; /** @@ -17,11 +18,13 @@ import org.jetbrains.annotations.Nullable; * Stores color, text formatting (bold, etc.) as well as possible HoverEvent/ClickEvent. */ public class Style { - public static final Style EMPTY = new Style(null, null, null, null, null, null, null, null, null, null); + public static final Style EMPTY = new Style(null, null, null, null, null, null, null, null, null, null, null); public static final ResourceLocation DEFAULT_FONT = ResourceLocation.withDefaultNamespace("default"); @Nullable final TextColor color; @Nullable + final Integer shadowColor; + @Nullable final Boolean bold; @Nullable final Boolean italic; @@ -42,6 +45,7 @@ public class Style { private static Style create( Optional color, + Optional shadowColor, Optional bold, Optional italic, Optional underlined, @@ -54,6 +58,7 @@ public class Style { ) { Style style = new Style( (TextColor)color.orElse(null), + (Integer)shadowColor.orElse(null), (Boolean)bold.orElse(null), (Boolean)italic.orElse(null), (Boolean)underlined.orElse(null), @@ -69,6 +74,7 @@ public class Style { private Style( @Nullable TextColor color, + @Nullable Integer shadowColor, @Nullable Boolean bold, @Nullable Boolean italic, @Nullable Boolean underlined, @@ -80,6 +86,7 @@ public class Style { @Nullable ResourceLocation font ) { this.color = color; + this.shadowColor = shadowColor; this.bold = bold; this.italic = italic; this.underlined = underlined; @@ -96,6 +103,11 @@ public class Style { return this.color; } + @Nullable + public Integer getShadowColor() { + return this.shadowColor; + } + /** * Whether text of this ChatStyle should be in bold. */ @@ -177,7 +189,19 @@ public class Style { return Objects.equals(this.color, color) ? this : checkEmptyAfterChange( - new Style(color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.color, color ); @@ -187,15 +211,47 @@ public class Style { return this.withColor(formatting != null ? TextColor.fromLegacyFormat(formatting) : null); } - public Style withColor(int rgb) { - return this.withColor(TextColor.fromRgb(rgb)); + public Style withColor(int color) { + return this.withColor(TextColor.fromRgb(color)); + } + + public Style withShadowColor(int color) { + return checkEmptyAfterChange( + new Style( + this.color, + color, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), + this.shadowColor, + color + ); } public Style withBold(@Nullable Boolean bold) { return Objects.equals(this.bold, bold) ? this : checkEmptyAfterChange( - new Style(this.color, bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.bold, bold ); @@ -205,7 +261,19 @@ public class Style { return Objects.equals(this.italic, italic) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.italic, italic ); @@ -215,7 +283,19 @@ public class Style { return Objects.equals(this.underlined, underlined) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, this.italic, underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + this.italic, + underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.underlined, underlined ); @@ -225,7 +305,19 @@ public class Style { return Objects.equals(this.strikethrough, strikethrough) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, this.italic, this.underlined, strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.strikethrough, strikethrough ); @@ -235,7 +327,19 @@ public class Style { return Objects.equals(this.obfuscated, obfuscated) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, this.italic, this.underlined, this.strikethrough, obfuscated, this.clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.obfuscated, obfuscated ); @@ -245,7 +349,19 @@ public class Style { return Objects.equals(this.clickEvent, clickEvent) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, clickEvent, this.hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + clickEvent, + this.hoverEvent, + this.insertion, + this.font + ), this.clickEvent, clickEvent ); @@ -255,7 +371,19 @@ public class Style { return Objects.equals(this.hoverEvent, hoverEvent) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, hoverEvent, this.insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + hoverEvent, + this.insertion, + this.font + ), this.hoverEvent, hoverEvent ); @@ -265,7 +393,19 @@ public class Style { return Objects.equals(this.insertion, insertion) ? this : checkEmptyAfterChange( - new Style(this.color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, insertion, this.font), + new Style( + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + insertion, + this.font + ), this.insertion, insertion ); @@ -276,7 +416,17 @@ public class Style { ? this : checkEmptyAfterChange( new Style( - this.color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion, fontId + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion, + fontId ), this.font, fontId @@ -312,7 +462,7 @@ public class Style { textColor = TextColor.fromLegacyFormat(formatting); } - return new Style(textColor, boolean_, boolean2, boolean4, boolean3, boolean5, this.clickEvent, this.hoverEvent, this.insertion, this.font); + return new Style(textColor, this.shadowColor, boolean_, boolean2, boolean4, boolean3, boolean5, this.clickEvent, this.hoverEvent, this.insertion, this.font); } public Style applyLegacyFormat(ChatFormatting formatting) { @@ -349,7 +499,7 @@ public class Style { textColor = TextColor.fromLegacyFormat(formatting); } - return new Style(textColor, boolean_, boolean2, boolean4, boolean3, boolean5, this.clickEvent, this.hoverEvent, this.insertion, this.font); + return new Style(textColor, this.shadowColor, boolean_, boolean2, boolean4, boolean3, boolean5, this.clickEvent, this.hoverEvent, this.insertion, this.font); } public Style applyFormats(ChatFormatting... formats) { @@ -384,7 +534,7 @@ public class Style { } } - return new Style(textColor, boolean_, boolean2, boolean4, boolean3, boolean5, this.clickEvent, this.hoverEvent, this.insertion, this.font); + return new Style(textColor, this.shadowColor, boolean_, boolean2, boolean4, boolean3, boolean5, this.clickEvent, this.hoverEvent, this.insertion, this.font); } /** @@ -398,6 +548,7 @@ public class Style { ? this : new Style( this.color != null ? this.color : style.color, + this.shadowColor != null ? this.shadowColor : style.shadowColor, this.bold != null ? this.bold : style.bold, this.italic != null ? this.italic : style.italic, this.underlined != null ? this.underlined : style.underlined, @@ -448,6 +599,7 @@ public class Style { Collector lv = new Collector(); lv.addValueString("color", this.color); + lv.addValueString("shadowColor", this.shadowColor); lv.addFlagString("bold", this.bold); lv.addFlagString("italic", this.italic); lv.addFlagString("underlined", this.underlined); @@ -469,6 +621,7 @@ public class Style { ? false : this.bold == style.bold && Objects.equals(this.getColor(), style.getColor()) + && Objects.equals(this.getShadowColor(), style.getShadowColor()) && this.italic == style.italic && this.obfuscated == style.obfuscated && this.strikethrough == style.strikethrough @@ -482,7 +635,18 @@ public class Style { public int hashCode() { return Objects.hash( - new Object[]{this.color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion} + new Object[]{ + this.color, + this.shadowColor, + this.bold, + this.italic, + this.underlined, + this.strikethrough, + this.obfuscated, + this.clickEvent, + this.hoverEvent, + this.insertion + } ); } @@ -490,6 +654,7 @@ public class Style { public static final MapCodec